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