Files
tms-erp-web/src/utils/search-range.js
T

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;
};