From 38578c3e50a707de073b6ff72ddfc62042717158 Mon Sep 17 00:00:00 2001 From: Lesan <1960681385@qq.com> Date: Thu, 16 Jan 2025 14:55:32 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=8E=B7=E5=8F=96=E5=88=86=E6=94=AF?= =?UTF-8?q?=E4=B8=AD=E7=9A=84=E8=8A=82=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/nodes-config/RouterNodeConfig.vue | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/components/SimpleProcessDesignerV2/src/nodes-config/RouterNodeConfig.vue b/src/components/SimpleProcessDesignerV2/src/nodes-config/RouterNodeConfig.vue index 6748a736..a7c4ac9b 100644 --- a/src/components/SimpleProcessDesignerV2/src/nodes-config/RouterNodeConfig.vue +++ b/src/components/SimpleProcessDesignerV2/src/nodes-config/RouterNodeConfig.vue @@ -86,7 +86,7 @@ const currentNode = useWatchNode(props) // 节点名称 const { nodeName, showInput, clickIcon, blurEvent } = useNodeName(NodeType.ROUTER_BRANCH_NODE) const routerGroups = ref([]) -const nodeOptions = ref() +const nodeOptions = ref([]) const conditionRef = ref([]) /** 保存配置 */ @@ -94,7 +94,7 @@ const saveConfig = async () => { // 校验表单 let valid = true for (const item of conditionRef.value) { - if (!(await item.validate())) { + if (item && !(await item.validate())) { valid = false } } @@ -109,7 +109,7 @@ const saveConfig = async () => { } // 显示路由分支节点配置, 由父组件传过来 const showRouteNodeConfig = (node: SimpleFlowNode) => { - getRouterNode() + getRouterNode(processNodeTree?.value) routerGroups.value = [] nodeName.value = node.name if (node.routerGroups) { @@ -172,15 +172,14 @@ const deleteRouterGroup = (index: number) => { routerGroups.value.splice(index, 1) } -const getRouterNode = () => { - // TODO @lesan 还需要满足以下要求 +// 递归获取所有节点 +const getRouterNode = (node) => { + // TODO 最好还需要满足以下要求 // 并行分支、包容分支内部节点不能跳转到外部节点 // 条件分支节点可以向上跳转到外部节点 - let node = processNodeTree?.value - nodeOptions.value = [] while (true) { if (!node) break - if (node.type !== NodeType.ROUTER_BRANCH_NODE) { + if (node.type !== NodeType.ROUTER_BRANCH_NODE && node.type !== NodeType.CONDITION_NODE) { nodeOptions.value.push({ label: node.name, value: node.id @@ -189,6 +188,11 @@ const getRouterNode = () => { if (!node.childNode || node.type === NodeType.END_EVENT_NODE) { break } + if (node.conditionNodes && node.conditionNodes.length) { + node.conditionNodes.forEach((item) => { + getRouterNode(item) + }) + } node = node.childNode } }