|
//高级查询工具文件
|
|
/**
|
* 保存当前高级查询数据,合并过滤后的数据并更新响应式查询对象
|
* @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;
|
}
|