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