From 47c51c9466c54b2b4b4bdd1f29c6cef6a3ed1d41 Mon Sep 17 00:00:00 2001 From: shaohuzhang1 <80892890+shaohuzhang1@users.noreply.github.com> Date: Tue, 5 Aug 2025 16:29:55 +0800 Subject: [PATCH] fix: Node copied in orchestration, default name incorrect, should be in numerical calculation form of+1, not string form of+1 (#3818) --- ui/src/workflow/common/NodeContainer.vue | 6 ++-- ui/src/workflow/common/app-node.ts | 35 ++++++++++++++---------- 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/ui/src/workflow/common/NodeContainer.vue b/ui/src/workflow/common/NodeContainer.vue index 15b4ae02a..096656301 100644 --- a/ui/src/workflow/common/NodeContainer.vue +++ b/ui/src/workflow/common/NodeContainer.vue @@ -244,9 +244,9 @@ const editName = async (formEl: FormInstance | undefined) => { await formEl.validate((valid) => { if (valid) { if ( - !props.nodeModel.graphModel.nodes?.some( - (node: any) => node.properties.stepName === form.value.title, - ) + !props.nodeModel.graphModel.nodes + .filter((node: any) => node.id !== props.nodeModel.id) + ?.some((node: any) => node.properties.stepName === form.value.title) ) { set(props.nodeModel.properties, 'stepName', form.value.title) nodeNameDialogVisible.value = false diff --git a/ui/src/workflow/common/app-node.ts b/ui/src/workflow/common/app-node.ts index 4b159cea1..fb52dfb4b 100644 --- a/ui/src/workflow/common/app-node.ts +++ b/ui/src/workflow/common/app-node.ts @@ -12,6 +12,20 @@ import { nodeDict } from '@/workflow/common/data' import { isActive, connect, disconnect } from './teleport' import { t } from '@/locales' import { type Dict } from '@/api/type/common' +const getNodeName = (nodes: Array, baseName: string) => { + let index = 0 + let name = baseName + while (true) { + if (index > 0) { + name = baseName + index + console.log(name) + } + if (!nodes.some((node: any) => node.properties.stepName === name.trim())) { + return name + } + index++ + } +} class AppNode extends HtmlResize.view { isMounted r?: any @@ -32,23 +46,14 @@ class AppNode extends HtmlResize.view { if (props.model.properties.noRender) { delete props.model.properties.noRender } else { - const filterNodes = props.graphModel.nodes.filter((v: any) => v.type === props.model.type) - const filterNameSameNodes = filterNodes.filter( - (v: any) => v.properties.stepName === props.model.properties.stepName, + console.log('ss', props.model.properties.stepName) + console.log(props.graphModel.nodes, this) + props.model.properties.stepName = getNodeName( + props.graphModel.nodes.filter((node: any) => node.id !== props.model.id), + props.model.properties.stepName, ) - if (filterNameSameNodes.length - 1 > 0) { - getNodesName(filterNameSameNodes.length - 1) - } - } - function getNodesName(num: number) { - const number = num - const name = props.model.properties.stepName + number - if (!props.graphModel.nodes?.some((node: any) => node.properties.stepName === name.trim())) { - props.model.properties.stepName = name - } else { - getNodesName(number + 1) - } } + props.model.properties.config = nodeDict[props.model.type].properties.config if (props.model.properties.height) { props.model.height = props.model.properties.height