From e92383f760f42050f55aa032c649814deb3b7752 Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周二, 20 5月 2025 18:17:26 +0800
Subject: [PATCH] 组件修改

---
 HIAWms/hiawms_web/src/components/DyFormForHighQuery/DyFormForHighQuery.module.scss |   38 ++++---
 HIAWms/hiawms_web/src/utils/myformUtils.ts                                         |  102 ++++++++++++++++++++
 HIAWms/hiawms_web/src/components/BaseQueryDrawer/BaseQueryDrawer.tsx               |    4 
 HIAWms/hiawms_web/src/utils/myHighQueryUtils.ts                                    |  113 ++++++++++++++++++++++
 4 files changed, 238 insertions(+), 19 deletions(-)

diff --git a/HIAWms/hiawms_web/src/components/BaseQueryDrawer/BaseQueryDrawer.tsx b/HIAWms/hiawms_web/src/components/BaseQueryDrawer/BaseQueryDrawer.tsx
index 9d144bb..9c82177 100644
--- a/HIAWms/hiawms_web/src/components/BaseQueryDrawer/BaseQueryDrawer.tsx
+++ b/HIAWms/hiawms_web/src/components/BaseQueryDrawer/BaseQueryDrawer.tsx
@@ -6,7 +6,7 @@
   [key: string]: any
 }>({
   // @ts-ignore
-  name: 'BaseDrawer',
+  name: 'BaseQueryDrawer',
   props: {
     // 閬僵鏄惁鍙偣鍑�
     clickable: {
@@ -49,6 +49,8 @@
         >
           <el-drawer
             // modal-class={props.clickable ? styles.modal : ''}
+            //灏嗘娊灞夊己鍒舵寕杞藉埌 body 鍏冪礌涓婏紝纭繚鏍峰紡闅旂鍜屾粴鍔ㄨ涓烘甯革紝涓嶅彈宓屽椤甸潰鐨勫奖鍝�
+            append-to-body="true" 
             class={{
               [styles.informationDrawer]: true,
               // [styles.informationDrawerPosition]: props.clickable,
diff --git a/HIAWms/hiawms_web/src/components/DyFormForHighQuery/DyFormForHighQuery.module.scss b/HIAWms/hiawms_web/src/components/DyFormForHighQuery/DyFormForHighQuery.module.scss
index 0fff059..0281c01 100644
--- a/HIAWms/hiawms_web/src/components/DyFormForHighQuery/DyFormForHighQuery.module.scss
+++ b/HIAWms/hiawms_web/src/components/DyFormForHighQuery/DyFormForHighQuery.module.scss
@@ -1,15 +1,4 @@
 .formStyle {
-  .formItem {
-    // 绉婚櫎鍥哄畾瀹藉害闄愬埗
-    width: auto !important;
-    margin-right: 0 !important;
-  }
-  
-  .formControl {
-    flex: 1; // 璁╂帶浠跺崰鎹墿浣欑┖闂�
-    min-width: 0; // 鍏佽鎺т欢鏀剁缉
-  }
-
   .formItemLabel {
     display: inline-flex;
     justify-content: flex-end;
@@ -25,17 +14,30 @@
       margin-left: 10px;
     }
   }
-  
   :global(.cs-select) {
     width: 100%;
   }
-  
-  // 绉婚櫎鍥哄畾瀹藉害璁剧疆
   :global(.cs-form--inline .cs-form-item) {
-    width: auto !important;
+    width: 46%;
   }
-  
   :global(.cs-form--inline .cs-form-item:nth-last-of-type(2n)) {
-    margin-right: 0 !important;
+    margin-right: 0;
   }
-}
\ No newline at end of file
+  :global(.cs-date-editor) {
+    width: 100%;
+  }
+}
+.optionLabel {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+.formitemPropsLabel {
+  display: flex;
+  justify-content: flex-start;
+  align-items: center;
+}
+
+.itemDistance {
+  margin-bottom: 20px !important;
+}
diff --git a/HIAWms/hiawms_web/src/utils/myHighQueryUtils.ts b/HIAWms/hiawms_web/src/utils/myHighQueryUtils.ts
new file mode 100644
index 0000000..52e90cc
--- /dev/null
+++ b/HIAWms/hiawms_web/src/utils/myHighQueryUtils.ts
@@ -0,0 +1,113 @@
+
+//楂樼骇鏌ヨ宸ュ叿鏂囦欢
+
+ /**
+ * 淇濆瓨褰撳墠楂樼骇鏌ヨ鏁版嵁锛屽悎骞惰繃婊ゅ悗鐨勬暟鎹苟鏇存柊鍝嶅簲寮忔煡璇㈠璞�
+ * @param {Object} filteredData - 杩囨护鍚庣殑鏌ヨ鏁版嵁瀵硅薄锛屽寘鍚敤鎴疯緭鍏ョ殑鏌ヨ鏉′欢
+ * @param {Ref<Object>} _curHighQueryData - Vue鍝嶅簲寮忓璞★紝瀛樺偍褰撳墠瀹屾暣鐨勬煡璇㈡潯浠�
+ * @param {Ref<Object>} queryForm - Vue鍝嶅簲寮忓璞★紝瀛樺偍琛ㄥ崟杈撳叆鐨勬煡璇㈡潯浠�
+ * @param {Ref<string>} _searchFormInputAttrs - Vue鍝嶅簲寮忓瓧绗︿覆锛屽瓨鍌ㄦ煡璇㈣〃鍗曠殑杈撳叆灞炴�ч厤缃�
+ * @returns {void}
+ * @example
+ * commonSaveCurHighQueryData(
+ *   { name: 'John', age: 30 },
+ *   ref({}),
+ *   ref({ searchVal: '', searchVal_FilterMode: 'contains' }),
+ *   ref('name,age,email')
+ * );
+ */
+export const commonSaveCurHighQueryData = (filteredData, _curHighQueryData, queryForm, _searchFormInputAttrs) => {
+  _curHighQueryData.value = { ..._curHighQueryData.value, ...filteredData };
+  setValueForCurHighQueryData(_curHighQueryData, queryForm, _searchFormInputAttrs);
+}
+
+/**
+ * 涓哄搷搴斿紡鏌ヨ鏁版嵁瀵硅薄璁剧疆鍩虹鏌ヨ鍊�
+ * @param {Ref<Object>} _curHighQueryData - Vue鍝嶅簲寮忓璞★紝瀛樺偍褰撳墠瀹屾暣鐨勬煡璇㈡潯浠�
+ * @param {Ref<Object>} queryForm - Vue鍝嶅簲寮忓璞★紝瀛樺偍琛ㄥ崟杈撳叆鐨勬煡璇㈡潯浠�
+ * @param {Ref<string>} _searchFormInputAttrs - Vue鍝嶅簲寮忓瓧绗︿覆锛屽瓨鍌ㄦ煡璇㈣〃鍗曠殑杈撳叆灞炴�ч厤缃�
+ * @returns {void}
+ * @example
+ * setValueForCurHighQueryData(
+ *   ref({}),
+ *   ref({ searchVal: 'test', searchVal_FilterMode: 'equals' }),
+ *   ref('name,age')
+ * );
+ * // _curHighQueryData.value 灏嗗寘鍚� searchVal, searchVal_FilterMode 鍜� str_searchFormInputAttrs
+ */
+export const setValueForCurHighQueryData = (_curHighQueryData, queryForm, _searchFormInputAttrs) => {
+  _curHighQueryData.value.searchVal = queryForm.value.searchVal;
+  _curHighQueryData.value.searchVal_FilterMode = queryForm.value.searchVal_FilterMode;
+  _curHighQueryData.value.str_searchFormInputAttrs = _searchFormInputAttrs.value;
+}
+
+/**
+ * 鍒濆鍖栨煡璇㈣〃鍗曪紝璁剧疆榛樿鍊�
+ * @param {Ref<Object>} queryForm - Vue鍝嶅簲寮忓璞★紝瀛樺偍琛ㄥ崟杈撳叆鐨勬煡璇㈡潯浠�
+ * @param {Ref<string>} _searchFormInputAttrs - Vue鍝嶅簲寮忓瓧绗︿覆锛屽瓨鍌ㄦ煡璇㈣〃鍗曠殑杈撳叆灞炴�ч厤缃�
+ * @param {Array<Object>} arr - 杩囨护妯″紡閫夐」鏁扮粍锛屾瘡涓�夐」鍖呭惈value鍜宭abel灞炴��
+ * @returns {void}
+ * @example
+ * initQueryForm(
+ *   ref({}),
+ *   ref('name,age'),
+ *   [{ value: 'contains', label: '鍖呭惈' }, { value: 'equals', label: '绛変簬' }]
+ * );
+ * // queryForm.value 灏嗚鍒濆鍖栦负 { searchVal: '', searchVal_FilterMode: 'contains', str_searchFormInputAttrs: 'name,age' }
+ */
+export const initQueryForm = (queryForm, _searchFormInputAttrs, arr) => {
+  queryForm.value.searchVal = '';
+  queryForm.value.searchVal_FilterMode = arr[0]?.value || '';
+  queryForm.value.str_searchFormInputAttrs = _searchFormInputAttrs.value;
+}
+
+/**
+ * 鑾峰彇楂樼骇鏌ヨ寮瑰嚭妗嗙殑鏌ヨ鍊硷紝杩囨护鏃犳晥鏁版嵁骞剁粍鍚堝畬鏁存煡璇㈡潯浠�
+ * @param {Object} extraParams - 棰濆鐨勬煡璇㈠弬鏁板璞★紝鍙兘鍖呭惈鐗规畩鏌ヨ鏉′欢
+ * @param {Ref<Object>} queryForm - Vue鍝嶅簲寮忓璞★紝瀛樺偍琛ㄥ崟杈撳叆鐨勬煡璇㈡潯浠�
+ * @param {Ref<string>} _searchFormInputAttrs - Vue鍝嶅簲寮忓瓧绗︿覆锛屽瓨鍌ㄦ煡璇㈣〃鍗曠殑杈撳叆灞炴�ч厤缃�
+ * @returns {Object} 缁勫悎鍚庣殑鏈夋晥鏌ヨ鏁版嵁瀵硅薄
+ * @example
+ * const queryData = commonGetHighQueryForm(
+ *   { status: 'active', category: 'books' },
+ *   ref({ searchVal: 'javascript', searchVal_FilterMode: 'contains' }),
+ *   ref('title,author')
+ * );
+ * // 杩斿洖 { status: 'active', category: 'books', searchVal: 'javascript', searchVal_FilterMode: 'contains', str_searchFormInputAttrs: 'title,author' }
+ */
+export const commonGetHighQueryForm = (extraParams, queryForm, _searchFormInputAttrs) => {
+  // 杩囨护鎺� undefined 鐨勫��
+  let filteredData = Object.assign(
+    {},
+    ...Object.entries(extraParams).map(([key, value]) =>
+      value !== undefined ? { [key]: value } : {}
+    )
+  );
+  // 缁勫悎妯$硦鏌ヨ
+  filteredData.searchVal = queryForm.value.searchVal;
+  filteredData.searchVal_FilterMode = queryForm.value.searchVal_FilterMode;
+  filteredData.str_searchFormInputAttrs = _searchFormInputAttrs.value;
+  return filteredData;
+}
+
+/**
+ * 鏂扮増鐨勬煡璇㈠脊鍑烘鍏抽棴鏂规硶锛岃幏鍙栬繃婊ゆ暟鎹苟淇濆瓨鍒板搷搴斿紡瀵硅薄
+ * @param {Object} extraParams - 棰濆鐨勬煡璇㈠弬鏁板璞★紝鍙兘鍖呭惈鐗规畩鏌ヨ鏉′欢
+ * @param {Ref<Object>} queryForm - Vue鍝嶅簲寮忓璞★紝瀛樺偍琛ㄥ崟杈撳叆鐨勬煡璇㈡潯浠�
+ * @param {Ref<string>} _searchFormInputAttrs - Vue鍝嶅簲寮忓瓧绗︿覆锛屽瓨鍌ㄦ煡璇㈣〃鍗曠殑杈撳叆灞炴�ч厤缃�
+ * @param {Ref<Object>} _curHighQueryData - Vue鍝嶅簲寮忓璞★紝瀛樺偍褰撳墠瀹屾暣鐨勬煡璇㈡潯浠�
+ * @returns {Object} 缁勫悎鍚庣殑鏈夋晥鏌ヨ鏁版嵁瀵硅薄
+ * @example
+ * const queryData = GetFilteredData(
+ *   { type: 'article' },
+ *   ref({ searchVal: 'news', searchVal_FilterMode: 'startsWith' }),
+ *   ref('title,content'),
+ *   ref({})
+ * );
+ * // 杩斿洖鏈夋晥鏌ヨ鏁版嵁骞舵洿鏂� _curHighQueryData
+ */
+export const GetFilteredData = (extraParams, queryForm, _searchFormInputAttrs, _curHighQueryData) => {
+  let filteredData = commonGetHighQueryForm(extraParams, queryForm, _searchFormInputAttrs);
+  commonSaveCurHighQueryData(filteredData, _curHighQueryData, queryForm, _searchFormInputAttrs);
+  return filteredData;
+}    
\ No newline at end of file
diff --git a/HIAWms/hiawms_web/src/utils/myformUtils.ts b/HIAWms/hiawms_web/src/utils/myformUtils.ts
new file mode 100644
index 0000000..4dbd92d
--- /dev/null
+++ b/HIAWms/hiawms_web/src/utils/myformUtils.ts
@@ -0,0 +1,102 @@
+
+//琛ㄥ崟宸ュ叿鏂囦欢
+/**
+ * 閫氱敤楂樼骇鏌ヨ琛ㄥ崟鏁版嵁鏀堕泦鍑芥暟
+ * @param {Array} formItems - 琛ㄥ崟閰嶇疆椤规暟缁�
+ * @param {Object} formData - 琛ㄥ崟鏁版嵁瀵硅薄
+ * @returns {Object} - 鏀堕泦鐨勮〃鍗曟暟鎹�
+ */
+export const collectFormDataForHighQuery = (formItems, formData) => {
+     const data = {}; 
+   
+  // 閬嶅巻琛ㄥ崟閰嶇疆鏀堕泦鏁版嵁 
+  formItems.forEach(item => { 
+    // 鏀堕泦鍩虹瀛楁 
+    data[item.prop] = formData.value[item.prop] || ''; 
+     
+    // 鏀堕泦杩囨护妯″紡瀛楁 
+    if (item.highSelectAttrs && item.highSelectAttrs.prop) { 
+      const filterModeProp = item.highSelectAttrs.prop; 
+      data[filterModeProp] = formData.value[filterModeProp] || ''; 
+    } 
+  }); 
+   
+  return data; 
+  }
+
+ /**
+ * 閲嶇疆楂樼骇鏌ヨ鐨勮繃婊ゆā寮�
+ * @param formItems - 琛ㄥ崟閰嶇疆椤规暟缁�
+ * @param formData - 琛ㄥ崟鏁版嵁瀵硅薄
+ */
+ export const onResetForHighSelect = (formItems, formData) => {   
+    // 閬嶅巻鎵�鏈夎〃鍗曞瓧娈�   
+    formItems.forEach(item => {   
+      // 妫�鏌ュ瓧娈垫槸鍚︽湁楂樼骇鏌ヨ鐨勮繃婊ゆā寮忛厤缃�   
+      if (item.highSelectAttrs && item.highSelectAttrs.prop) {   
+        const filterModeProp = item.highSelectAttrs.prop;   
+        const options = item.highSelectAttrs.options || [];   
+     
+        // 濡傛灉瀛樺湪閫夐」锛屽垯璁剧疆涓虹涓�涓�夐」鐨勫��   
+        if (options.length > 0) {   
+          // 鍋囪閫夐」鏍煎紡涓� { value, label } 鎴栫被浼肩粨鏋�   
+          const firstValue = options[0].value !== undefined ? options[0].value : options[0];   
+          formData.value[filterModeProp] = firstValue;   
+        }   
+      }   
+    });   
+}   
+
+/**
+ * 閲嶇疆楂樼骇鏌ヨ
+ * @param formItems - 琛ㄥ崟閰嶇疆椤规暟缁�
+ * @param formData - 琛ㄥ崟鏁版嵁瀵硅薄
+ */
+export const onResetForHighQuery = (formItems, formData) => {   
+    // 1. 娓呯┖鎵�鏈夊熀纭�瀛楁锛堜笉鍖呭惈杩囨护妯″紡瀛楁锛� 
+    const baseFields = formItems.reduce((acc, item) => { 
+        acc[item.prop] = ''; 
+        return acc; 
+        }, {}); 
+   
+        // 2. 搴旂敤鍩虹瀛楁鍒濆鍊� 
+        formData.value = { ...baseFields }; 
+}   
+
+
+/**
+ * 浠庤〃鍗曟暟鎹腑鎻愬彇鏈夋晥灞炴�э紙鎺掗櫎鏃犳晥瀛楁锛�,鎻愪氦淇濆瓨琛ㄥ崟鏁版嵁鏃剁敤
+ * @param formData 琛ㄥ崟鏁版嵁瀵硅薄
+ * @param excludeFields 闇�瑕佹帓闄ょ殑瀛楁鍒楄〃锛堥粯璁や负 ['id']锛�
+ * @returns 澶勭悊鍚庣殑鏈夋晥鏁版嵁瀵硅薄
+ */
+export const extractFormDataForOnConfirm = (formData) => {
+   //鍔ㄦ�佽幏鍙� formData 鐨勬墍鏈夊睘鎬у�硷紙鎺掗櫎鏃犳晥灞炴�э紝濡� id锛�
+  const data = Object.entries(formData.value).reduce((acc, [key, value]) => {
+    // 杩囨护鎺変笉闇�瑕佹彁浜ょ殑灞炴�э紙濡� id锛屽彲鏍规嵁瀹為檯闇�姹傝皟鏁达級
+    if (key !== 'id') {
+      acc[key] = value
+    }
+    return acc
+  }, {} as Record<string, any>)
+  return data;
+  };
+
+  /**
+ * 浠庡搷搴旀暟鎹腑鎻愬彇鏈夋晥瀛楁骞惰祴鍊肩粰琛ㄥ崟鏁版嵁,鎵撳紑琛ㄥ崟鏁版嵁鏃剁敤
+ * @param res 鍝嶅簲鏁版嵁
+ * @param formData 琛ㄥ崟鏁版嵁寮曠敤
+ * @param options 閰嶇疆閫夐」
+ * @returns 澶勭悊鍚庣殑琛ㄥ崟鏁版嵁
+ */
+export function extractAndAssignFormData(res,formData) {
+     // 鎻愬彇鏈夋晥瀛楁锛堟帓闄や笉闇�瑕佺殑灞炴�э紝濡備复鏃跺瓧娈点�侀潪琛ㄥ崟瀛楁锛�
+     const { id, ...validFormData } = res; // 淇濈暀 id 鍙牴鎹渶姹傝皟鏁�
+    
+     // 鐩存帴璧嬪�硷紙鑷姩杩囨护鏃犳晥灞炴�э級
+     formData.value = {
+       ...validFormData, // 鑷姩缁ф壙鎵�鏈夋湁鏁堝瓧娈�
+       // 濡傞渶棰濆澶勭悊鐗瑰畾瀛楁锛堝鏃ユ湡鏍煎紡鍖栵級锛屽彲鍦ㄦ琛ュ厖
+       // plannedStartTime: formatDate(res.plannedStartTime), 
+     };
+  }
\ No newline at end of file

--
Gitblit v1.9.3