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 || "保存草稿失败");