HIAWms/hiawms_web/src/components/BaseQueryDrawer/BaseQueryDrawer.tsx | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
HIAWms/hiawms_web/src/components/DyFormForHighQuery/DyFormForHighQuery.module.scss | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
HIAWms/hiawms_web/src/utils/myHighQueryUtils.ts | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
HIAWms/hiawms_web/src/utils/myformUtils.ts | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
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, 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; } } :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; } 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ålabel屿§ * @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; } 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), }; }