diff --git a/frontend/src/pages/Workflow/Design/components/EdgeConfigModal.tsx b/frontend/src/pages/Workflow/Design/components/EdgeConfigModal.tsx index 8c9c87d2..a64fce0a 100644 --- a/frontend/src/pages/Workflow/Design/components/EdgeConfigModal.tsx +++ b/frontend/src/pages/Workflow/Design/components/EdgeConfigModal.tsx @@ -256,19 +256,16 @@ const EdgeConfigModal: React.FC = ({ {/* 错误提示:多个默认分支(网关节点) */} {isFromGateway && gatewayType && gatewayType !== 'parallelGateway' && hasOtherDefaultBranch && isDefaultBranch && ( -
-
-
- +
+
+
+
-

- 已存在默认分支 -

-

- 当前网关已有一个默认分支,请将此分支设置为"表达式"类型并配置条件表达式。 +

+ 当前网关已有一个默认分支,请将此分支配置为条件表达式。

@@ -284,34 +281,36 @@ const EdgeConfigModal: React.FC = ({ ) : (
- {/* ✅ 智能提示:默认路径说明 */} - {isDefaultBranch && ( -
+ {/* 智能提示:默认路径说明(仅在没有冲突时显示) */} + {isDefaultBranch && !hasOtherDefaultBranch && ( +
- ℹ️ -
-

- 默认路径 -

-

- 当前未配置条件表达式,此分支将作为默认路径,在所有其他条件分支都不满足时执行。优先级自动设为999(最低)。 +

+ + + +
+
+

+ 默认路径:未配置条件时作为默认分支执行,优先级自动设为999。

)} - {/* ✅ 错误提示:多个默认分支(仅非网关节点) */} + {/* 错误提示:多个默认分支(仅非网关节点) */} {!isFromGateway && isDefaultBranch && hasOtherDefaultBranch && ( -
+
- -
-

- 冲突:多个默认分支 -

-

- 节点"{sourceNode?.data.label}"已有默认分支。一个节点只能有一个默认分支,请为此分支配置条件表达式。 +

+ + + +
+
+

+ 节点"{sourceNode?.data.label}"已有默认分支,请将此分支配置为条件表达式。

@@ -334,13 +333,19 @@ const EdgeConfigModal: React.FC = ({ currentNodeId={edge?.target || ''} formFields={formFields} variant="textarea" - placeholder="例如: ${Jenkins构建.status} == 'SUCCESS',留空表示默认路径" + placeholder={hasOtherDefaultBranch + ? "例如: ${Jenkins构建.status} == 'SUCCESS'" + : "例如: ${Jenkins构建.status} == 'SUCCESS',留空表示默认路径" + } rows={4} /> - 💡 留空此字段,该分支将作为默认路径(当所有其他条件都不满足时执行)。 - 填写时使用 JUEL 表达式语法,支持比较运算符(==、!=、>、<)和逻辑运算符(&&、||) + {hasOtherDefaultBranch ? ( + <>当前已有默认分支,请填写条件表达式。使用 JUEL 语法,支持比较运算符(==、!=、>、<)和逻辑运算符(&&、||) + ) : ( + <>留空作为默认路径(所有条件不满足时执行)。填写时使用 JUEL 语法,支持比较运算符(==、!=、>、<)和逻辑运算符(&&、||) + )} diff --git a/frontend/src/pages/Workflow/Design/index.tsx b/frontend/src/pages/Workflow/Design/index.tsx index 0dd8b0a9..dac6435f 100644 --- a/frontend/src/pages/Workflow/Design/index.tsx +++ b/frontend/src/pages/Workflow/Design/index.tsx @@ -469,8 +469,33 @@ const WorkflowDesignInner: React.FC = () => { : node ) ); + + // 如果是网关节点且改为并行网关,清理所有出边的条件配置 + const updatedNode = getNodes().find(n => n.id === nodeId); + const isGateway = updatedNode?.data?.nodeType === 'GATEWAY_NODE'; + const gatewayType = (updatedData.inputMapping as any)?.gatewayType; + + if (isGateway && gatewayType === 'parallelGateway') { + setEdges((edges) => + edges.map((edge) => + edge.source === nodeId + ? { + ...edge, + label: undefined, // 清理边的显示文字 + data: { + ...edge.data, + label: undefined, // 清理 data 中的 label + condition: undefined // 清理条件配置 + } + } + : edge + ) + ); + message.success('已切换为并行网关,所有分支的条件配置已清除'); + } + markUnsaved(); // 标记有未保存更改 - }, [setNodes, markUnsaved]); + }, [setNodes, setEdges, getNodes, markUnsaved]); // 关闭节点配置模态框 const handleCloseConfigModal = useCallback(() => {