22
schangxiang@126.com
2025-05-20 d41eac403ece679e9ea740a6ff8247235ed18aba
22
已添加1个文件
已修改2个文件
250 ■■■■ 文件已修改
CommonDLL/公共前端组件/src/utils/myHighQueryUtils.ts 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/pipelinelems_web/src/utils/myHighQueryUtils.ts 89 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Templete/Web/Views/Pages/EntityNameClass/EntityNameClass模板.txt 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CommonDLL/¹«¹²Ç°¶Ë×é¼þ/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;
}
PipeLineLems/pipelinelems_web/src/utils/myHighQueryUtils.ts
@@ -1,24 +1,80 @@
//高级查询工具文件
 //保存查询值
 /**
 * ä¿å­˜å½“前高级查询数据,合并过滤后的数据并更新响应式查询对象
 * @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;  
    }
        //初始化 queryForm
/**
 * åˆå§‹åŒ–查询表单,设置默认值
 * @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 = '';
        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( 
@@ -26,15 +82,30 @@
        ...Object.entries(extraParams).map(([key, value]) => 
          value !== undefined ? { [key]: value } : {} 
        ) 
      )
  );
      //组合模糊查询 
      filteredData.searchVal = queryForm.value.searchVal
      filteredData.searchVal_FilterMode = queryForm.value.searchVal_FilterMode
  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); 
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Templete/Web/Views/Pages/EntityNameClass/EntityNameClassÄ£°å.txt
@@ -27,6 +27,8 @@
import {  
  FILTER_MODE_OPTIONS_STRING
} from '@/components/DyFormForHighQuery/DyFormForHighQueryOptions'; 
// å¼•入公共高级查询工具文件
import { commonSaveCurHighQueryData,setValueForCurHighQueryData,commonGetHighQueryForm,initQueryForm,GetFilteredData } from '@/utils/myHighQueryUtils';
interface RenderTableType {
  url?: string
@@ -99,36 +101,23 @@
    }) 
    /*******************************************************[高级查询]开始********************************************************************************* */
    // æ–°å¢žçš„æŸ¥è¯¢æ¡ä»¶
    const queryForm = ref({
      searchVal: '',
      str_searchFormInputAttrs:[],
      searchVal_FilterMode:''
    })
    const queryForm = ref({ searchVal: '',str_searchFormInputAttrs:[],searchVal_FilterMode:'' });
    // å®šä¹‰å“åº”式查询数据 
    const _curHighQueryData = ref({ searchVal: '',str_searchFormInputAttrs:[],searchVal_FilterMode:'' });  
    // æ–°ç‰ˆçš„æŸ¥è¯¢æ–¹æ³•(主页面中的按钮【查询】)
    const handleQueryForMain = async () => {
      setValueForCurHighQueryData();
      setValueForCurHighQueryData(_curHighQueryData,queryForm,_searchFormInputAttrs);
      tableRef.value.getList(_curHighQueryData.value)
    }
    // æ–°ç‰ˆçš„æŸ¥è¯¢æ–¹æ³•(高级查询中的按钮【查询】)
    const handleQuery = async (extraParams = {}) => {
      let filteredData = commonGetHighQueryForm(extraParams);
      commonSaveCurHighQueryData(filteredData);
      let filteredData = GetFilteredData(extraParams,queryForm,_searchFormInputAttrs,_curHighQueryData);
      tableRef.value.getList(filteredData)
    }
    // æ–°ç‰ˆçš„æŸ¥è¯¢é‡ç½®
    const resetQuery = () => {
      queryForm.value.searchVal = ''
      queryForm.value.searchVal_FilterMode = FILTER_MODE_OPTIONS_STRING[0]?.value || '';
      queryForm.value.str_searchFormInputAttrs=_searchFormInputAttrs.value;
      setValueForCurHighQueryData();
    }
    //给响应式查询数据赋值
    const setValueForCurHighQueryData=()=>{
      _curHighQueryData.value.searchVal = queryForm.value.searchVal;
      _curHighQueryData.value.searchVal_FilterMode = queryForm.value.searchVal_FilterMode;
      _curHighQueryData.value.str_searchFormInputAttrs = _searchFormInputAttrs.value;
      initQueryForm(queryForm,_searchFormInputAttrs,FILTER_MODE_OPTIONS_STRING);
      setValueForCurHighQueryData(_curHighQueryData,queryForm,_searchFormInputAttrs);
    }
     //新版的导出方法
     const handleExport=()=>{
@@ -136,28 +125,7 @@
    }
    // æ–°ç‰ˆçš„æŸ¥è¯¢å¼¹å‡ºæ¡†å…³é—­æ–¹æ³•
    const closeQuery = (extraParams={}) => {
      let filteredData = commonGetHighQueryForm(extraParams);
      commonSaveCurHighQueryData(filteredData);
    }
    //保存查询值
    const commonSaveCurHighQueryData=(filteredData={})=>{
      _curHighQueryData.value = { ..._curHighQueryData.value, ...filteredData };
      setValueForCurHighQueryData();
    }
     //获取高级查询弹出框的查询值
     const commonGetHighQueryForm=(extraParams={})=>{
      // è¿‡æ»¤æŽ‰ 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;
      GetFilteredData(extraParams,queryForm,_searchFormInputAttrs,_curHighQueryData);
    }
    /*******************************************************[高级查询]结束********************************************************************************* */