From 657b7b93382f0420994b0e828e34cd1e6c3f2abf Mon Sep 17 00:00:00 2001 From: lixiaolong <702156524@qq.com> Date: Fri, 21 Aug 2026 14:19:48 +0800 Subject: [PATCH] =?UTF-8?q?feat(flow):=20=E4=BC=98=E5=8C=96=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E8=AF=95=E8=BF=90=E8=A1=8C=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加试运行准备状态指示器 - 在试运行按钮上增加加载状态和禁用逻辑 - 实现试运行前自动保存草稿功能 - 为保存草稿功能添加可选的成功消息参数 - 防止试运行和保存操作同时执行的冲突处理 --- src/views/flow/index.vue | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/views/flow/index.vue b/src/views/flow/index.vue index 5825ca8..441b33d 100644 --- a/src/views/flow/index.vue +++ b/src/views/flow/index.vue @@ -39,7 +39,12 @@ {{ groupSelectionPending ? "取消分组" : "分组" }} - + 试运行 @@ -831,6 +836,7 @@ const versionLoading = ref(false); const versionList = ref([]); const versionPreviewMode = ref(false); const previewingVersionNo = ref(null); +const trialPreparing = ref(false); let draftBeforeVersionPreview = null; let oldFlowDataBeforeVersionPreview = null; let disableFormBeforeVersionPreview = false; @@ -846,6 +852,8 @@ const flowInfoData = ref({ * 试运行 */ const testRun = async () => { + if (trialPreparing.value || draftSaving.value) return; + // 1、验证画布内所有的表单通过验证 const { nodes, edges } = lf.getGraphData(); @@ -882,7 +890,14 @@ const testRun = async () => { return; } - isOpen.value = true; + trialPreparing.value = true; + try { + const saved = await saveDraft({ successMessage: "已自动保存当前草稿" }); + if (!saved) return; + isOpen.value = true; + } finally { + trialPreparing.value = false; + } }; // 流程暂停 @@ -1459,7 +1474,7 @@ const getSavableFlowData = () => { return sanitizeFlowResourceDefinition(validation.graph); }; -const saveDraft = async () => { +const saveDraft = async ({ successMessage = "草稿已保存" } = {}) => { if (!flowInfoData.value.itemId) return false; draftSaving.value = true; try { @@ -1474,7 +1489,7 @@ const saveDraft = async () => { draftDirty.value = false; oldFlowData = JSON.parse(JSON.stringify(lf.getGraphData())); if (flowState.value === "updateData") flowState.value = "draftSaved"; - ElMessage.success("草稿已保存"); + ElMessage.success(successMessage); return true; } catch (error) { ElMessage.error(error?.message || "保存草稿失败");