6067d24e3b
Co-authored-by: Cursor <cursoragent@cursor.com>
60 lines
1.7 KiB
JavaScript
60 lines
1.7 KiB
JavaScript
/**
|
|
* 合并列表搜索条件:新条件覆盖旧条件,本次显式清空的字段从查询中移除。
|
|
*/
|
|
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;
|
|
};
|