/** * 合并列表搜索条件:新条件覆盖旧条件,本次显式清空的字段从查询中移除。 */ export const applyIncomingSearch = (current = {}, incoming = {}) => { const merged = { ...current, ...incoming }; Object.keys(incoming || {}).forEach(key => { const value = incoming[key]; if ( value === '' || value === null || value === undefined || (Array.isArray(value) && value.length === 0) ) { delete merged[key]; } }); return merged; }; /** * 启停状态下拉「全部」在数字类型下会被转成 0/-1,不能当作查询条件。 * 状态 0 表示草稿等有效值的页面不要调用。 */ export const omitInvalidListStatus = (params = {}) => { const values = { ...params }; const status = values.status; if (status === 0 || status === '0' || status === -1 || status === '-1') { delete values.status; } return values; }; export const normalizeSearchRangeParams = (params = {}, rangeMap = {}) => { const values = { ...params }; Object.entries(rangeMap).forEach(([rangeProp, mapping]) => { const [startProp, endProp, startSuffix = '00:00:00', endSuffix = '23:59:59'] = Array.isArray( mapping ) ? mapping : [mapping.startProp, mapping.endProp, mapping.startSuffix, mapping.endSuffix]; const range = values[rangeProp]; if (Array.isArray(range) && range.length === 2) { values[startProp] = range[0] ? `${range[0]} ${startSuffix}` : undefined; values[endProp] = range[1] ? `${range[1]} ${endSuffix}` : undefined; } delete values[rangeProp]; }); Object.keys(values).forEach(key => { if (values[key] === undefined || values[key] === null || values[key] === '') { delete values[key]; } }); return values; };