fix(client): filter parameter merge

This commit is contained in:
chenos 2022-04-07 17:46:25 +08:00
parent 20680d3bc7
commit 4e6d1d6fac

View File

@ -72,6 +72,19 @@ const removeNullCondition = (filter) => {
return flat.unflatten(values); return flat.unflatten(values);
}; };
export const mergeFilter = (filter1, filter2) => {
if (filter1 && filter2) {
return { $and: [filter1, filter2] };
}
if (!filter1 && filter2) {
return filter2;
}
if (filter1 && !filter2) {
return filter1;
}
return {};
};
export const useFilterActionProps = () => { export const useFilterActionProps = () => {
const { name } = useCollection(); const { name } = useCollection();
const options = useFilterOptions(name); const options = useFilterOptions(name);
@ -82,7 +95,8 @@ export const useFilterActionProps = () => {
options, options,
onSubmit(values) { onSubmit(values) {
const filter = removeNullCondition(values?.filter); const filter = removeNullCondition(values?.filter);
service.run({ ...service.params?.[0], filter }); const f1 = service.params?.[0]?.filter;
service.run({ ...service.params?.[0], filter: mergeFilter(f1, filter) });
const items = filter?.$and || filter?.$or; const items = filter?.$and || filter?.$or;
if (items?.length) { if (items?.length) {
field.title = t('{{count}} filter items', { count: items?.length || 0 }); field.title = t('{{count}} filter items', { count: items?.length || 0 });
@ -92,7 +106,8 @@ export const useFilterActionProps = () => {
}, },
onReset(values) { onReset(values) {
const filter = removeNullCondition(values?.filter); const filter = removeNullCondition(values?.filter);
service.run({ ...service.params?.[0], filter }); const f1 = service.params?.[0]?.filter;
service.run({ ...service.params?.[0], filter: mergeFilter(f1, filter) });
field.title = t('Filter'); field.title = t('Filter');
}, },
}; };