From 7474254a45de5e06d60afc0055f4ddabddbb3809 Mon Sep 17 00:00:00 2001 From: xieyonghong <18010623010@163.com> Date: Tue, 28 Mar 2023 15:38:21 +0800 Subject: [PATCH] fix: bug#10935 --- src/views/init-home/data/baseMenu.ts | 3 +- .../Save/action/ListItem/FilterCondition.vue | 30 +++++++++++++--- .../Save/components/Terms/ParamsItem.vue | 34 +++++++++++++++---- 3 files changed, 54 insertions(+), 13 deletions(-) diff --git a/src/views/init-home/data/baseMenu.ts b/src/views/init-home/data/baseMenu.ts index eafb6658..a78c6fc8 100644 --- a/src/views/init-home/data/baseMenu.ts +++ b/src/views/init-home/data/baseMenu.ts @@ -185,7 +185,8 @@ export default [ }, ], accessSupport: { text: "支持", value: "support" }, - supportDataAccess: true + supportDataAccess: true, + assetType: 'notifyConfig' }, { code: 'notice/Template', diff --git a/src/views/rule-engine/Scene/Save/action/ListItem/FilterCondition.vue b/src/views/rule-engine/Scene/Save/action/ListItem/FilterCondition.vue index 80dc2198..9126c28d 100644 --- a/src/views/rule-engine/Scene/Save/action/ListItem/FilterCondition.vue +++ b/src/views/rule-engine/Scene/Save/action/ListItem/FilterCondition.vue @@ -242,10 +242,30 @@ const handleOptionsColumnsValue = (termsColumns: any[], _options: any) => { } const columnSelect = (e: any) => { - paramsValue.termType = 'eq' - paramsValue.value = { - source: tabsOptions.value[0].key, - value: undefined + const dataType = e.type + const hasTypeChange = dataType !== tabsOptions.value[0].component + let termTypeChange = false + + // 如果参数类型未发生变化,则不修改操作符以及值 + const termTypes = e.termTypes + if (!termTypes.some((item: {id: string}) => paramsValue.termType === item.id)) { // 修改操作符 + termTypeChange = true + paramsValue.termType = termTypes?.length ? termTypes[0].id : 'eq' + } + + if (hasTypeChange) { + paramsValue.termType = termTypes?.length ? termTypes[0].id : 'eq' + paramsValue.value = { + source: tabsOptions.value[0].key, + value: undefined + } + } else if (termTypeChange) { + const oldValue = isArray(paramsValue.value!.value) ? paramsValue.value!.value[0] : paramsValue.value!.value + const value = arrayParamsKey.includes(e.key) ? [ oldValue, undefined ] : oldValue + paramsValue.value = { + source: paramsValue.value?.source || tabsOptions.value[0].key, + value: value + } } const columns = e.metadata === true ? [e.column] : [] @@ -266,7 +286,7 @@ const termsTypeSelect = (e: { key: string, name: string }) => { const oldValue = isArray(paramsValue.value!.value) ? paramsValue.value!.value[0] : paramsValue.value!.value const value = arrayParamsKey.includes(e.key) ? [ oldValue, undefined ] : oldValue paramsValue.value = { - source: tabsOptions.value[0].key, + source: paramsValue.value?.source || tabsOptions.value[0].key, value: value } emit('update:value', { ...paramsValue }) diff --git a/src/views/rule-engine/Scene/Save/components/Terms/ParamsItem.vue b/src/views/rule-engine/Scene/Save/components/Terms/ParamsItem.vue index 40f92b8f..66737739 100644 --- a/src/views/rule-engine/Scene/Save/components/Terms/ParamsItem.vue +++ b/src/views/rule-engine/Scene/Save/components/Terms/ParamsItem.vue @@ -216,12 +216,14 @@ watch(() => [columnOptions.value, paramsValue.column], () => { const showDouble = computed(() => { const isRange = paramsValue.termType ? arrayParamsKey.includes(paramsValue.termType) : false + const isSourceMetric = paramsValue.value?.source === 'metric' if (metricsCacheOption.value.length) { metricOption.value = metricsCacheOption.value.filter(item => isRange ? item.range : !item.range) } else { metricOption.value = [] } - return isRange && !isMetric.value + + return isRange && !isMetric.value && !isSourceMetric }) const mouseover = () => { @@ -237,11 +239,29 @@ const mouseout = () => { } const columnSelect = (option: any) => { + const dataType = option.dataType + const hasTypeChange = dataType !== tabsOptions.value[0].component + let termTypeChange = false + // 如果参数类型未发生变化,则不修改操作符以及值 const termTypes = option.termTypes - paramsValue.termType = termTypes?.length ? termTypes[0].id : 'eq' - paramsValue.value = { - source: tabsOptions.value[0].key, - value: undefined + if (!termTypes.some((item: {id: string}) => paramsValue.termType === item.id)) { // 修改操作符 + termTypeChange = true + paramsValue.termType = termTypes?.length ? termTypes[0].id : 'eq' + } + + if (hasTypeChange) { // 类型发生变化 + paramsValue.termType = termTypes?.length ? termTypes[0].id : 'eq' + paramsValue.value = { + source: tabsOptions.value[0].key, + value: undefined + } + } else if (termTypeChange) { + const oldValue = isArray(paramsValue.value!.value) ? paramsValue.value!.value[0] : paramsValue.value!.value + const value = arrayParamsKey.includes(paramsValue.termType as string) ? [ oldValue, undefined ] : oldValue + paramsValue.value = { + source: paramsValue.value?.source || tabsOptions.value[0].key, + value: value + } } handOptionByColumn(option) emit('update:value', { ...paramsValue }) @@ -254,7 +274,7 @@ const termsTypeSelect = (e: { key: string, name: string }) => { const oldValue = isArray(paramsValue.value!.value) ? paramsValue.value!.value[0] : paramsValue.value!.value const value = arrayParamsKey.includes(e.key) ? [ oldValue, undefined ] : oldValue paramsValue.value = { - source: tabsOptions.value[0].key, + source: paramsValue.value?.source || tabsOptions.value[0].key, value: value } emit('update:value', { ...paramsValue }) @@ -263,7 +283,7 @@ const termsTypeSelect = (e: { key: string, name: string }) => { } -const valueSelect = (_: any, label: string, labelObj: Record) => { +const valueSelect = (v: any, label: string, labelObj: Record) => { emit('update:value', { ...paramsValue }) formItemContext.onFieldChange() formModel.value.options!.when[props.branchName].terms[props.whenName].terms[props.name][2] = labelObj