diff --git a/frontend/src/pages/Workflow/Definition/Design/components/NodeConfigModal.tsx b/frontend/src/pages/Workflow/Definition/Design/components/NodeConfigModal.tsx index dac1f2ce..9f09ae17 100644 --- a/frontend/src/pages/Workflow/Definition/Design/components/NodeConfigModal.tsx +++ b/frontend/src/pages/Workflow/Definition/Design/components/NodeConfigModal.tsx @@ -39,10 +39,48 @@ const NodeConfigDrawer: React.FC = ({ } }, [visible, node, nodeDefinition, form]); + // 在组件挂载或 nodeDefinition 更新时设置表单初始值 + useEffect(() => { + if (!nodeDefinition) return; + + const initialValues = { + ...nodeDefinition.panelVariables, + ...nodeDefinition.localVariables + }; + + console.log('设置表单初始值:', initialValues); + form.setFieldsValue(initialValues); + }, [nodeDefinition, form]); + const handleOk = async () => { try { const values = await form.validateFields(); - onOk(values); + // 将表单数据分离为 panelVariables 和 localVariables + const panelVariables = {}; + const localVariables = {}; + + // 处理 panelVariablesSchema 中定义的字段 + if (nodeDefinition?.panelVariablesSchema?.properties) { + Object.keys(nodeDefinition.panelVariablesSchema.properties).forEach(key => { + if (values[key] !== undefined) { + panelVariables[key] = values[key]; + } + }); + } + + // 处理 localVariablesSchema 中定义的字段 + if (nodeDefinition?.localVariablesSchema?.properties) { + Object.keys(nodeDefinition.localVariablesSchema.properties).forEach(key => { + if (values[key] !== undefined) { + localVariables[key] = values[key]; + } + }); + } + + onOk({ + panelVariables, + localVariables + }); form.resetFields(); } catch (error) { console.error('Validation failed:', error); @@ -55,7 +93,6 @@ const NodeConfigDrawer: React.FC = ({ }; const renderFormItem = (key: string, property: SchemaProperty, required: boolean, isReadOnly: boolean) => { - console.log('NodeConfigModal - renderFormItem:', { key, property, required, isReadOnly, default: property.default }); const baseProps = { name: key, label: ( @@ -154,7 +191,6 @@ const NodeConfigDrawer: React.FC = ({ key: 'local', label: '环境变量', children: Object.entries(nodeDefinition.localVariablesSchema.properties).map(([key, property]) => { - console.log('NodeConfigModal - Local Schema Property:', key, property); const required = nodeDefinition.localVariablesSchema?.properties.required?.includes(key) || false; return renderFormItem(key, property as SchemaProperty, required, true); }) diff --git a/frontend/src/pages/Workflow/Definition/Design/index.tsx b/frontend/src/pages/Workflow/Definition/Design/index.tsx index 3956df50..3aa1f590 100644 --- a/frontend/src/pages/Workflow/Definition/Design/index.tsx +++ b/frontend/src/pages/Workflow/Definition/Design/index.tsx @@ -1038,12 +1038,17 @@ const WorkflowDesign: React.FC = () => { // 处理节点配置更新 const handleNodeConfigUpdate = (values: any) => { if (!selectedNode) return; + // 更新节点配置 - console.log("// 更新节点配置", values); - selectedNode.setProp('config', values); - // 更新节点显示名称 - if (values.name) { - selectedNode.attr('label/text', values.name); + console.log("更新节点配置", values); + + // 更新 panelVariables 和 localVariables + selectedNode.setProp('panelVariables', values.panelVariables); + selectedNode.setProp('localVariables', values.localVariables); + + // 更新节点显示名称(如果存在) + if (values.panelVariables?.name) { + selectedNode.attr('label/text', values.panelVariables.name); } setConfigModalVisible(false); @@ -1085,9 +1090,9 @@ const WorkflowDesign: React.FC = () => { // x: position.x, // y: position.y // } - uiVariables: nodeDefinition.uiVariables + // uiVariables: nodeDefinition.uiVariables }, - config: node.getProp('config') || {} + // config: node.getProp('config') || {} }; });