From c7b135e1f87c1a287797ec05b80d7383609d76c6 Mon Sep 17 00:00:00 2001 From: Lemon <1599456917@qq.com> Date: Sat, 22 Feb 2025 10:05:43 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81=20?= =?UTF-8?q?=E5=88=87=E6=8D=A2=E7=82=B9=E5=87=BB=E6=9D=A1=E4=BB=B6=E5=88=86?= =?UTF-8?q?=E6=94=AF=E5=90=8E=E5=B8=A6=E6=9D=A5=E7=9A=84=20=E6=9D=A1?= =?UTF-8?q?=E4=BB=B6=E5=88=87=E6=8D=A2=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/nodes-config/ConditionNodeConfig.vue | 54 +++++++++++++++---- 1 file changed, 43 insertions(+), 11 deletions(-) diff --git a/src/components/SimpleProcessDesignerV2/src/nodes-config/ConditionNodeConfig.vue b/src/components/SimpleProcessDesignerV2/src/nodes-config/ConditionNodeConfig.vue index 6efed260..9871aa95 100644 --- a/src/components/SimpleProcessDesignerV2/src/nodes-config/ConditionNodeConfig.vue +++ b/src/components/SimpleProcessDesignerV2/src/nodes-config/ConditionNodeConfig.vue @@ -63,9 +63,43 @@ const props = defineProps({ }) const settingVisible = ref(false) const currentNode = ref(props.conditionNode) -const condition = ref() +const condition = ref({ + conditionType: ConditionType.RULE, // 设置默认值 + conditionExpression: '', + conditionGroups: { + and: true, + conditions: [{ + and: true, + rules: [{ + opCode: '==', + leftSide: '', + rightSide: '' + }] + }] + } +}) const open = () => { - condition.value = currentNode.value.conditionSetting + // 如果有已存在的配置则使用,否则使用默认值 + if (currentNode.value.conditionSetting) { + condition.value = JSON.parse(JSON.stringify(currentNode.value.conditionSetting)) + } else { + // 重置为默认值 + condition.value = { + conditionType: ConditionType.RULE, + conditionExpression: '', + conditionGroups: { + and: true, + conditions: [{ + and: true, + rules: [{ + opCode: '==', + leftSide: '', + rightSide: '' + }] + }] + } + } + } settingVisible.value = true } @@ -123,15 +157,13 @@ const saveConfig = async () => { return false } currentNode.value.showText = showText - currentNode.value.conditionSetting!.conditionType = condition.value?.conditionType - if (currentNode.value.conditionSetting?.conditionType === ConditionType.EXPRESSION) { - currentNode.value.conditionSetting.conditionGroups = undefined - currentNode.value.conditionSetting.conditionExpression = condition.value?.conditionExpression - } - if (currentNode.value.conditionSetting!.conditionType === ConditionType.RULE) { - currentNode.value.conditionSetting!.conditionExpression = undefined - currentNode.value.conditionSetting!.conditionGroups = condition.value?.conditionGroups - } + // 深拷贝保存的条件设置,避免引用问题 + currentNode.value.conditionSetting = JSON.parse(JSON.stringify({ + ...currentNode.value.conditionSetting, + conditionType: condition.value?.conditionType, + conditionExpression: condition.value?.conditionType === ConditionType.EXPRESSION ? condition.value?.conditionExpression : undefined, + conditionGroups: condition.value?.conditionType === ConditionType.RULE ? condition.value?.conditionGroups : undefined + })) } settingVisible.value = false return true -- Gitee From ce0020ab1c5d6192745fd98754feb3cd37368e45 Mon Sep 17 00:00:00 2001 From: Lemon <1599456917@qq.com> Date: Tue, 25 Feb 2025 12:00:12 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BD=BF=E7=94=A8=20Lodash=20=E7=9A=84=20c?= =?UTF-8?q?loneDeep=20=E6=96=B9=E6=B3=95=E6=9D=A5=E8=BF=9B=E8=A1=8C?= =?UTF-8?q?=E6=B7=B1=E6=8B=B7=E8=B4=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/nodes-config/ConditionNodeConfig.vue | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/components/SimpleProcessDesignerV2/src/nodes-config/ConditionNodeConfig.vue b/src/components/SimpleProcessDesignerV2/src/nodes-config/ConditionNodeConfig.vue index 9871aa95..63d80d60 100644 --- a/src/components/SimpleProcessDesignerV2/src/nodes-config/ConditionNodeConfig.vue +++ b/src/components/SimpleProcessDesignerV2/src/nodes-config/ConditionNodeConfig.vue @@ -47,6 +47,7 @@ import { SimpleFlowNode, ConditionType } from '../consts' import { getDefaultConditionNodeName } from '../utils' import { useFormFieldsAndStartUser, getConditionShowText } from '../node' import Condition from './components/Condition.vue' +import { cloneDeep } from 'lodash-es' const message = useMessage() // 消息弹窗 defineOptions({ name: 'ConditionNodeConfig' @@ -81,7 +82,7 @@ const condition = ref({ const open = () => { // 如果有已存在的配置则使用,否则使用默认值 if (currentNode.value.conditionSetting) { - condition.value = JSON.parse(JSON.stringify(currentNode.value.conditionSetting)) + condition.value = cloneDeep(currentNode.value.conditionSetting) } else { // 重置为默认值 condition.value = { @@ -157,13 +158,13 @@ const saveConfig = async () => { return false } currentNode.value.showText = showText - // 深拷贝保存的条件设置,避免引用问题 - currentNode.value.conditionSetting = JSON.parse(JSON.stringify({ + // 使用 cloneDeep 进行深拷贝 + currentNode.value.conditionSetting = cloneDeep({ ...currentNode.value.conditionSetting, conditionType: condition.value?.conditionType, conditionExpression: condition.value?.conditionType === ConditionType.EXPRESSION ? condition.value?.conditionExpression : undefined, conditionGroups: condition.value?.conditionType === ConditionType.RULE ? condition.value?.conditionGroups : undefined - })) + }) } settingVisible.value = false return true -- Gitee