This commit is contained in:
dengqichen 2024-12-20 16:45:42 +08:00
parent ddcd2ea11b
commit 070e6b1c94
2 changed files with 17 additions and 24 deletions

View File

@ -928,16 +928,16 @@ const WorkflowDesign: React.FC = () => {
const nodeMap = new Map(); const nodeMap = new Map();
// 创建节点 // 创建节点
response.graph?.nodes?.forEach((workflowDefinitionNode: any) => { response.graph?.nodes?.forEach((existingNode: any) => {
const node = addNodeToGraph(false, graphInstance, workflowDefinitionNode, nodeDefinitions); const node = addNodeToGraph(false, graphInstance, existingNode, nodeDefinitions);
// 只设置 graph 属性 // 只设置 graph 属性
node.setProp('graph', { node.setProp('graph', {
uiVariables: workflowDefinitionNode.uiVariables, uiVariables: existingNode.uiVariables,
panelVariables: workflowDefinitionNode.panelVariables, panelVariables: existingNode.panelVariables,
localVariables: workflowDefinitionNode.localVariables, localVariables: existingNode.localVariables,
formVariablesSchema: workflowDefinitionNode.formVariablesSchema 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) { } catch (error) {
console.error('加载工作流定义失败:', error); console.error('加载工作流定义失败:', error);
message.error('加载工作流定义失败'); message.error('加载工作流定义失败');
@ -1078,6 +1078,7 @@ const WorkflowDesign: React.FC = () => {
const nodes = graph.getNodes().map(node => { const nodes = graph.getNodes().map(node => {
const nodeType = node.getProp('nodeType'); const nodeType = node.getProp('nodeType');
const graphData = node.getProp('graph') || {}; const graphData = node.getProp('graph') || {};
const position = node.getPosition();
const { const {
uiVariables, uiVariables,
panelVariables, panelVariables,
@ -1090,7 +1091,10 @@ const WorkflowDesign: React.FC = () => {
nodeCode: nodeType, nodeCode: nodeType,
nodeType: nodeType, nodeType: nodeType,
nodeName: node.attr('label/text'), nodeName: node.attr('label/text'),
uiVariables, uiVariables: {
...uiVariables,
position: position
},
panelVariables, panelVariables,
localVariables, localVariables,
formVariablesSchema formVariablesSchema

View File

@ -46,23 +46,12 @@ export const addNodeToGraph = (
shape, shape,
nodeType: isNew ? nodeDefinition.nodeType : currentNodeDefinition.nodeType, nodeType: isNew ? nodeDefinition.nodeType : currentNodeDefinition.nodeType,
nodeCode: nodeDefinition.nodeCode, nodeCode: nodeDefinition.nodeCode,
ports: convertPortConfig(uiVariables.ports), ports: convertPortConfig(uiVariables.ports)
nodeDefinition: nodeDefinition
}; };
// 设置节点位置 const nodePosition = isNew ? position : currentNodeDefinition.uiVariables?.position;
if (isNew && position) { if (nodePosition) {
// 新节点使用传入的position Object.assign(nodeConfig, nodePosition);
Object.assign(nodeConfig, { x: position.x, y: position.y });
} else if (!isNew && currentNodeDefinition.graph?.position) {
// 已有节点使用后端返回的position
Object.assign(nodeConfig, { position: currentNodeDefinition.graph.position });
} }
// 设置节点ID如果有
if (uiVariables.id) {
Object.assign(nodeConfig, { id: uiVariables.id });
}
return graph.addNode(nodeConfig); return graph.addNode(nodeConfig);
}; };