diff --git a/core/core-frontend/src/custom-component/v-query/Component.vue b/core/core-frontend/src/custom-component/v-query/Component.vue index 904f2ec1cf..b3e55b3445 100644 --- a/core/core-frontend/src/custom-component/v-query/Component.vue +++ b/core/core-frontend/src/custom-component/v-query/Component.vue @@ -488,6 +488,9 @@ const clearData = () => { }) }) ;(list.value || []).reduce((pre, next) => { + if (!next.visible) { + return pre + } next.selectValue = next.multiple || +next.displayType === 7 ? [] : undefined if (next.optionValueSource === 1 && next.defaultMapValue?.length) { next.mapValue = next.multiple ? [] : undefined diff --git a/core/core-frontend/src/hooks/web/useFilter.ts b/core/core-frontend/src/hooks/web/useFilter.ts index a28ea36026..aeaf781ffd 100644 --- a/core/core-frontend/src/hooks/web/useFilter.ts +++ b/core/core-frontend/src/hooks/web/useFilter.ts @@ -246,242 +246,237 @@ const duplicateRemoval = arr => { export const searchQuery = (queryComponentList, filter, curComponentId, firstLoad) => { queryComponentList.forEach(ele => { if (!!ele.propValue?.length) { - ele.propValue - .filter(itx => itx.visible) - .forEach(item => { + ele.propValue.forEach(item => { + if (item.checkedFields.includes(curComponentId) && item.checkedFieldsMap[curComponentId]) { + let selectValue + const { + selectValue: value, + timeGranularityMultiple, + defaultNumValueEnd, + numValueEnd, + numValueStart, + defaultNumValueStart, + conditionType = 0, + treeFieldList = [], + defaultConditionValueOperatorF = 'eq', + defaultConditionValueF = '', + defaultConditionValueOperatorS = 'like', + defaultConditionValueS = '', + conditionValueOperatorF = 'eq', + conditionValueF = '', + conditionValueOperatorS = 'like', + conditionValueS = '', + defaultValueCheck, + timeType = 'fixed', + defaultValue, + optionValueSource, + defaultMapValue, + mapValue, + parameters = [], + timeGranularity = 'date', + displayType, + displayId, + multiple + } = item + + const isTree = +displayType === 9 + if ( - item.checkedFields.includes(curComponentId) && - item.checkedFieldsMap[curComponentId] + timeType === 'dynamic' && + [1, 7].includes(+displayType) && + firstLoad && + defaultValueCheck ) { - let selectValue - const { - selectValue: value, - timeGranularityMultiple, + if (+displayType === 1) { + selectValue = getDynamicRange(item) + item.defaultValue = new Date(selectValue[0]) + item.selectValue = new Date(selectValue[0]) + } else { + const { + timeNum, + relativeToCurrentType, + around, + relativeToCurrentRange, + arbitraryTime, + timeGranularity, + timeNumRange, + relativeToCurrentTypeRange, + aroundRange, + timeGranularityMultiple, + arbitraryTimeRange + } = item + + let startTime = getCustomTime( + timeNum, + relativeToCurrentType, + timeGranularity, + around, + arbitraryTime, + timeGranularityMultiple, + 'start-panel' + ) + let endTime = getCustomTime( + timeNumRange, + relativeToCurrentTypeRange, + timeGranularity, + aroundRange, + arbitraryTimeRange, + timeGranularityMultiple, + 'end-panel' + ) + + if (!!relativeToCurrentRange && relativeToCurrentRange !== 'custom') { + ;[startTime, endTime] = getCustomRange(relativeToCurrentRange) + } + item.defaultValue = [startTime, endTime] + item.selectValue = [startTime, endTime] + selectValue = [startTime, endTime] + } + } else if (displayType === '8') { + selectValue = getResult( + conditionType, + defaultConditionValueF, + defaultConditionValueS, + conditionValueF, + conditionValueS, + firstLoad + ) + } else if (displayType === '22') { + selectValue = getResultNum( defaultNumValueEnd, numValueEnd, numValueStart, defaultNumValueStart, - conditionType = 0, - treeFieldList = [], - defaultConditionValueOperatorF = 'eq', - defaultConditionValueF = '', - defaultConditionValueOperatorS = 'like', - defaultConditionValueS = '', - conditionValueOperatorF = 'eq', - conditionValueF = '', - conditionValueOperatorS = 'like', - conditionValueS = '', + firstLoad + ) + } else { + selectValue = getValueByDefaultValueCheckOrFirstLoad( defaultValueCheck, - timeType = 'fixed', defaultValue, - optionValueSource, + value, + firstLoad, + multiple, defaultMapValue, + optionValueSource, mapValue, - parameters = [], - timeGranularity = 'date', displayType, - displayId, - multiple - } = item + displayId + ) + } + if ( + !!selectValue?.length || + ['[object Number]', '[object Date]'].includes( + Object.prototype.toString.call(selectValue) + ) || + displayType === '8' + ) { + let result = forMatterValue( + +displayType, + selectValue, + timeGranularity, + timeGranularityMultiple + ) + const operator = getOperator( + displayType, + multiple, + conditionType, + defaultConditionValueOperatorF, + defaultConditionValueF, + defaultConditionValueOperatorS, + defaultConditionValueS, + conditionValueOperatorF, + conditionValueF, + conditionValueOperatorS, + conditionValueS, + firstLoad + ) + if (result?.length) { + const fieldId = isTree + ? getFieldId(treeFieldList, result) + : item.checkedFieldsMap[curComponentId] + let parametersFilter = duplicateRemoval( + parameters.reduce((pre, next) => { + if (next.id === fieldId && !pre.length) { + pre.push(next) + } + return pre + }, []) + ) - const isTree = +displayType === 9 - - if ( - timeType === 'dynamic' && - [1, 7].includes(+displayType) && - firstLoad && - defaultValueCheck - ) { - if (+displayType === 1) { - selectValue = getDynamicRange(item) - item.defaultValue = new Date(selectValue[0]) - item.selectValue = new Date(selectValue[0]) - } else { - const { - timeNum, - relativeToCurrentType, - around, - relativeToCurrentRange, - arbitraryTime, - timeGranularity, - timeNumRange, - relativeToCurrentTypeRange, - aroundRange, - timeGranularityMultiple, - arbitraryTimeRange - } = item - - let startTime = getCustomTime( - timeNum, - relativeToCurrentType, - timeGranularity, - around, - arbitraryTime, - timeGranularityMultiple, - 'start-panel' + if (item.checkedFieldsMapArr?.[curComponentId]?.length) { + const endTimeFieldId = item.checkedFieldsMapArr?.[curComponentId].find( + element => element !== fieldId ) - let endTime = getCustomTime( - timeNumRange, - relativeToCurrentTypeRange, - timeGranularity, - aroundRange, - arbitraryTimeRange, - timeGranularityMultiple, - 'end-panel' + const resultEnd = Array(2).fill( + endTimeFieldId === item.checkedFieldsMapEnd[curComponentId] + ? result[1] + : result[0] + ) + result = Array(2).fill( + endTimeFieldId === item.checkedFieldsMapEnd[curComponentId] + ? result[0] + : result[1] + ) + parametersFilter = duplicateRemoval( + item.parametersArr[curComponentId].filter(e => e.id === fieldId) ) - if (!!relativeToCurrentRange && relativeToCurrentRange !== 'custom') { - ;[startTime, endTime] = getCustomRange(relativeToCurrentRange) - } - item.defaultValue = [startTime, endTime] - item.selectValue = [startTime, endTime] - selectValue = [startTime, endTime] - } - } else if (displayType === '8') { - selectValue = getResult( - conditionType, - defaultConditionValueF, - defaultConditionValueS, - conditionValueF, - conditionValueS, - firstLoad - ) - } else if (displayType === '22') { - selectValue = getResultNum( - defaultNumValueEnd, - numValueEnd, - numValueStart, - defaultNumValueStart, - firstLoad - ) - } else { - selectValue = getValueByDefaultValueCheckOrFirstLoad( - defaultValueCheck, - defaultValue, - value, - firstLoad, - multiple, - defaultMapValue, - optionValueSource, - mapValue, - displayType, - displayId - ) - } - if ( - !!selectValue?.length || - ['[object Number]', '[object Date]'].includes( - Object.prototype.toString.call(selectValue) - ) || - displayType === '8' - ) { - let result = forMatterValue( - +displayType, - selectValue, - timeGranularity, - timeGranularityMultiple - ) - const operator = getOperator( - displayType, - multiple, - conditionType, - defaultConditionValueOperatorF, - defaultConditionValueF, - defaultConditionValueOperatorS, - defaultConditionValueS, - conditionValueOperatorF, - conditionValueF, - conditionValueOperatorS, - conditionValueS, - firstLoad - ) - if (result?.length) { - const fieldId = isTree - ? getFieldId(treeFieldList, result) - : item.checkedFieldsMap[curComponentId] - let parametersFilter = duplicateRemoval( - parameters.reduce((pre, next) => { - if (next.id === fieldId && !pre.length) { - pre.push(next) - } - return pre - }, []) + const parametersFilterEnd = duplicateRemoval( + item.parametersArr[curComponentId].filter(e => e.id === endTimeFieldId) ) - - if (item.checkedFieldsMapArr?.[curComponentId]?.length) { - const endTimeFieldId = item.checkedFieldsMapArr?.[curComponentId].find( - element => element !== fieldId - ) - const resultEnd = Array(2).fill( - endTimeFieldId === item.checkedFieldsMapEnd[curComponentId] - ? result[1] - : result[0] - ) - result = Array(2).fill( - endTimeFieldId === item.checkedFieldsMapEnd[curComponentId] - ? result[0] - : result[1] - ) - 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: parametersFilterEnd, - isTree - }) - } - - if (item.checkedFieldsMapArrNum?.[curComponentId]?.length) { - const endTimeFieldId = item.checkedFieldsMapArrNum?.[curComponentId].find( - element => element !== fieldId - ) - const resultEnd = Array(2).fill( - endTimeFieldId === item.checkedFieldsMapEndNum[curComponentId] - ? result[1] - : result[0] - ) - result = Array(2).fill( - endTimeFieldId === item.checkedFieldsMapEndNum[curComponentId] - ? result[0] - : result[1] - ) - 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: parametersFilterEnd, - isTree - }) - } - filter.push({ componentId: ele.id, - fieldId, + fieldId: endTimeFieldId, operator, - value: result, - parameters: parametersFilter, + value: resultEnd, + parameters: parametersFilterEnd, isTree }) } + + if (item.checkedFieldsMapArrNum?.[curComponentId]?.length) { + const endTimeFieldId = item.checkedFieldsMapArrNum?.[curComponentId].find( + element => element !== fieldId + ) + const resultEnd = Array(2).fill( + endTimeFieldId === item.checkedFieldsMapEndNum[curComponentId] + ? result[1] + : result[0] + ) + result = Array(2).fill( + endTimeFieldId === item.checkedFieldsMapEndNum[curComponentId] + ? result[0] + : result[1] + ) + 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: parametersFilterEnd, + isTree + }) + } + + filter.push({ + componentId: ele.id, + fieldId, + operator, + value: result, + parameters: parametersFilter, + isTree + }) } } - }) + } + }) } }) }