diff --git a/core/core-frontend/src/custom-component/v-query/QueryConditionConfiguration.vue b/core/core-frontend/src/custom-component/v-query/QueryConditionConfiguration.vue index 3985751c8e..ca9e7543d0 100644 --- a/core/core-frontend/src/custom-component/v-query/QueryConditionConfiguration.vue +++ b/core/core-frontend/src/custom-component/v-query/QueryConditionConfiguration.vue @@ -301,6 +301,110 @@ const handleCheckedFieldsChangeTree = (value: string[]) => { setType() } +const isParametersDisable = (arr, item, componentId) => { + const timeId = + curComponent.value.checkedFieldsMapStart[componentId] || + curComponent.value.checkedFieldsMapEnd[componentId] + let isDisabled = false + if (timeId) { + const obj = arr.find(ele => ele.id === timeId) + for (let index = 0; index < obj?.type.length; index++) { + if (obj?.type[index] !== item.type?.[index]) { + isDisabled = true + } + } + } + return isDisabled +} + +const setParametersArr = (val, componentId) => { + const timeStartId = curComponent.value.checkedFieldsMapStart[componentId] + const timeEndId = curComponent.value.checkedFieldsMapEnd[componentId] + if (timeStartId) { + curComponent.value.checkedFieldsMapEnd[componentId] = val.find(ele => ele.id !== timeStartId) + } + + if (timeEndId) { + curComponent.value.checkedFieldsMapStart[componentId] = val.find(ele => ele.id !== timeEndId) + } + + if (!val.length) { + curComponent.value.checkedFieldsMap[componentId] = '' + curComponent.value.checkedFieldsMapEnd[componentId] = '' + curComponent.value.checkedFieldsMapStart[componentId] = '' + } +} + +let currentComponentId = '' +let currentParameterId = '' +const timeDialogShow = ref(false) +const timeParameterType = ref(0) +const timeName = ref('') + +const timeTypeChange = () => { + if (!curComponent.value.checkedFieldsMapArr[currentComponentId]) { + curComponent.value.checkedFieldsMapArr[currentComponentId] = [] + } + + if (timeParameterType.value === 0) { + curComponent.value.checkedFieldsMap[currentComponentId] = currentParameterId + curComponent.value.checkedFieldsMapArr[currentComponentId] = [] + curComponent.value.checkedFieldsMapStart[currentComponentId] = '' + curComponent.value.checkedFieldsMapEnd[currentComponentId] = '' + } + + if (timeParameterType.value === 1) { + curComponent.value.checkedFieldsMapStart[currentComponentId] = currentParameterId + curComponent.value.checkedFieldsMapArr[currentComponentId] = [ + ...new Set([ + ...curComponent.value.checkedFieldsMapArr[currentComponentId], + currentParameterId + ]) + ] + + if (curComponent.value.checkedFieldsMapArr[currentComponentId].length === 1) { + curComponent.value.checkedFieldsMapEnd[currentComponentId] = '' + } else { + curComponent.value.checkedFieldsMapEnd[currentComponentId] = + curComponent.value.checkedFieldsMapArr[currentComponentId].length === 2 + ? curComponent.value.checkedFieldsMapArr[currentComponentId].find( + ele => ele !== currentParameterId + ) + : currentParameterId + } + } + + if (timeParameterType.value === 2) { + curComponent.value.checkedFieldsMapArr[currentComponentId] = [ + ...new Set([ + ...curComponent.value.checkedFieldsMapArr[currentComponentId], + currentParameterId + ]) + ] + + curComponent.value.checkedFieldsMapEnd[currentComponentId] = currentParameterId + + if (curComponent.value.checkedFieldsMapArr[currentComponentId].length === 1) { + curComponent.value.checkedFieldsMapStart[currentComponentId] = '' + } else { + curComponent.value.checkedFieldsMapStart[currentComponentId] = + curComponent.value.checkedFieldsMapArr[currentComponentId].length === 2 + ? curComponent.value.checkedFieldsMapArr[currentComponentId].find( + ele => ele !== currentParameterId + ) + : currentParameterId + } + } + timeDialogShow.value = false +} + +const timeClick = (componentId, timeVal) => { + currentComponentId = componentId + currentParameterId = timeVal.id + timeName.value = timeVal.variableName + timeDialogShow.value = true +} + const setParameters = () => { const fieldArr = Object.values(curComponent.value.checkedFieldsMap).filter(ele => !!ele) curComponent.value.parameters = fields.value @@ -309,7 +413,11 @@ const setParameters = () => { .filter(ele => fieldArr.includes(ele.id) && !!ele.variableName) nextTick(() => { if (isTimeParameter.value) { - curComponent.value.timeGranularity = typeTimeMap[curComponent.value.parameters[0].type[1]] + curComponent.value.timeGranularity = + typeTimeMap[ + curComponent.value.parameters[0].type[1] || curComponent.value.parameters[0].type[0] + ] + curComponent.value.displayType = '1' } if (!!curComponent.value.parameters.length) { @@ -320,6 +428,7 @@ const setParameters = () => { } }) setType() + if (curComponent.value.displayType === '9') { setTreeDefault() } @@ -1079,7 +1188,13 @@ const handleCondition = item => { handleDialogClick() if (activeConditionForRename.id) return activeCondition.value = item.id - curComponent.value = conditions.value.find(ele => ele.id === item.id) + const obj = conditions.value.find(ele => ele.id === item.id) + if (!obj.checkedFieldsMapArr) { + obj.checkedFieldsMapArr = {} + obj.checkedFieldsMapStart = {} + obj.checkedFieldsMapEnd = {} + } + curComponent.value = obj curComponent.value.dataset.fields = [] nextTick(() => { defaultConfigurationRef.value.changeMultiple(curComponent.value.multiple) @@ -1092,6 +1207,9 @@ const handleCondition = item => { datasetFieldList.value.forEach(ele => { if (!curComponent.value.checkedFieldsMap[ele.id]) { curComponent.value.checkedFieldsMap[ele.id] = '' + curComponent.value.checkedFieldsMapStart[ele.id] = '' + curComponent.value.checkedFieldsMapEnd[ele.id] = '' + curComponent.value.checkedFieldsMapArr[ele.id] = [] } }) @@ -1582,11 +1700,108 @@ defineExpose({ > {{ field.name }} + + + +
+ + + + + {{ ele.name || ele.variableName }} + + + {{ + curComponent.checkedFieldsMapStart[field.componentId] === ele.id + ? '开始时间' + : curComponent.checkedFieldsMapEnd[field.componentId] === ele.id + ? '结束时间' + : '' + }} + + + + + + +
+
+
+ @@ -1657,6 +1872,20 @@ defineExpose({ {{ ele.name || ele.variableName }} + + 时间 + + + + + + @@ -1718,12 +1947,21 @@ defineExpose({ value="5" /> @@ -2166,10 +2404,44 @@ defineExpose({ + + + + + 时间 + 开始时间 + 结束时间 + + + + +