diff --git a/frontend/src/pages/Workflow/Definition/Design/index.tsx b/frontend/src/pages/Workflow/Definition/Design/index.tsx index add25307..636b6558 100644 --- a/frontend/src/pages/Workflow/Definition/Design/index.tsx +++ b/frontend/src/pages/Workflow/Definition/Design/index.tsx @@ -928,16 +928,16 @@ const WorkflowDesign: React.FC = () => { const nodeMap = new Map(); // 创建节点 - response.graph?.nodes?.forEach((workflowDefinitionNode: any) => { - const node = addNodeToGraph(false, graphInstance, workflowDefinitionNode, nodeDefinitions); + response.graph?.nodes?.forEach((existingNode: any) => { + const node = addNodeToGraph(false, graphInstance, existingNode, nodeDefinitions); // 只设置 graph 属性 node.setProp('graph', { - uiVariables: workflowDefinitionNode.uiVariables, - panelVariables: workflowDefinitionNode.panelVariables, - localVariables: workflowDefinitionNode.localVariables, - formVariablesSchema: workflowDefinitionNode.formVariablesSchema + uiVariables: existingNode.uiVariables, + panelVariables: existingNode.panelVariables, + localVariables: existingNode.localVariables, + formVariablesSchema: existingNode.formVariablesSchema }); - nodeMap.set(workflowDefinitionNode.id, node); + nodeMap.set(existingNode.id, node); }); // 创建边 @@ -990,7 +990,7 @@ const WorkflowDesign: React.FC = () => { }); // 传入节点数据,只在没有位置信息时应用自动布局 - applyAutoLayout(graphInstance, response.graph?.nodes || []); + // applyAutoLayout(graphInstance, response.graph?.nodes || []); } catch (error) { console.error('加载工作流定义失败:', error); message.error('加载工作流定义失败'); @@ -1078,6 +1078,7 @@ const WorkflowDesign: React.FC = () => { const nodes = graph.getNodes().map(node => { const nodeType = node.getProp('nodeType'); const graphData = node.getProp('graph') || {}; + const position = node.getPosition(); const { uiVariables, panelVariables, @@ -1090,7 +1091,10 @@ const WorkflowDesign: React.FC = () => { nodeCode: nodeType, nodeType: nodeType, nodeName: node.attr('label/text'), - uiVariables, + uiVariables: { + ...uiVariables, + position: position + }, panelVariables, localVariables, formVariablesSchema diff --git a/frontend/src/pages/Workflow/Definition/Design/utils/nodeUtils.ts b/frontend/src/pages/Workflow/Definition/Design/utils/nodeUtils.ts index be7e081a..d3bc36e8 100644 --- a/frontend/src/pages/Workflow/Definition/Design/utils/nodeUtils.ts +++ b/frontend/src/pages/Workflow/Definition/Design/utils/nodeUtils.ts @@ -46,23 +46,12 @@ export const addNodeToGraph = ( shape, nodeType: isNew ? nodeDefinition.nodeType : currentNodeDefinition.nodeType, nodeCode: nodeDefinition.nodeCode, - ports: convertPortConfig(uiVariables.ports), - nodeDefinition: nodeDefinition + ports: convertPortConfig(uiVariables.ports) }; - // 设置节点位置 - if (isNew && position) { - // 新节点:使用传入的position - Object.assign(nodeConfig, { x: position.x, y: position.y }); - } else if (!isNew && currentNodeDefinition.graph?.position) { - // 已有节点:使用后端返回的position - Object.assign(nodeConfig, { position: currentNodeDefinition.graph.position }); + const nodePosition = isNew ? position : currentNodeDefinition.uiVariables?.position; + if (nodePosition) { + Object.assign(nodeConfig, nodePosition); } - - // 设置节点ID(如果有) - if (uiVariables.id) { - Object.assign(nodeConfig, { id: uiVariables.id }); - } - return graph.addNode(nodeConfig); }; \ No newline at end of file