diff --git a/core/core-frontend/src/hooks/web/useFilter.ts b/core/core-frontend/src/hooks/web/useFilter.ts index 16358eb335..09f0ab5c1d 100644 --- a/core/core-frontend/src/hooks/web/useFilter.ts +++ b/core/core-frontend/src/hooks/web/useFilter.ts @@ -213,6 +213,19 @@ const getOperator = ( return [1, 7].includes(+displayType) ? 'between' : multiple ? 'in' : 'eq' } +const duplicateRemoval = arr => { + const objList = [] + let idList = arr.map(ele => ele.id) + for (let index = 0; index < arr.length; index++) { + const element = arr[index] + if (idList.includes(element.id)) { + objList.push(element) + idList = idList.filter(ele => ele !== element.id) + } + } + return objList +} + export const searchQuery = (queryComponentList, filter, curComponentId, firstLoad) => { queryComponentList.forEach(ele => { if (!!ele.propValue?.length) { @@ -357,12 +370,14 @@ export const searchQuery = (queryComponentList, filter, curComponentId, firstLoa const fieldId = isTree ? getFieldId(treeFieldList, result) : item.checkedFieldsMap[curComponentId] - let parametersFilter = parameters.reduce((pre, next) => { - if (next.id === fieldId && !pre.length) { - pre.push(next) - } - return pre - }, []) + let parametersFilter = duplicateRemoval( + parameters.reduce((pre, next) => { + if (next.id === fieldId && !pre.length) { + pre.push(next) + } + return pre + }, []) + ) if (item.checkedFieldsMapArr?.[curComponentId]?.length) { const endTimeFieldId = item.checkedFieldsMapArr?.[curComponentId].find( @@ -378,17 +393,19 @@ export const searchQuery = (queryComponentList, filter, curComponentId, firstLoa ? result[0] : result[1] ) - parametersFilter = item.parametersArr[curComponentId].filter( - e => e.id === fieldId + parametersFilter = duplicateRemoval( + item.parametersArr[curComponentId].filter(e => e.id === fieldId) + ) + + const parametersFilterEnd = duplicateRemoval( + item.parametersArr[curComponentId].filter(e => e.id === endTimeFieldId) ) filter.push({ componentId: ele.id, fieldId: endTimeFieldId, operator, value: resultEnd, - parameters: item.parametersArr[curComponentId].filter( - e => e.id === endTimeFieldId - ), + parameters: parametersFilterEnd, isTree }) }