feat(flow): 优化流程试运行功能
- 添加试运行准备状态指示器 - 在试运行按钮上增加加载状态和禁用逻辑 - 实现试运行前自动保存草稿功能 - 为保存草稿功能添加可选的成功消息参数 - 防止试运行和保存操作同时执行的冲突处理
This commit is contained in:
parent
b3dae8db39
commit
657b7b9338
@ -39,7 +39,12 @@
|
||||
<el-button :type="groupSelectionPending ? 'primary' : 'default'" @click="group">
|
||||
<el-icon><CollectionTag /></el-icon>{{ groupSelectionPending ? "取消分组" : "分组" }}
|
||||
</el-button>
|
||||
<el-button v-if="flowState !== 'testRunning'" @click="testRun">
|
||||
<el-button
|
||||
v-if="flowState !== 'testRunning'"
|
||||
:loading="trialPreparing"
|
||||
:disabled="draftSaving"
|
||||
@click="testRun"
|
||||
>
|
||||
<el-icon><VideoPlay /></el-icon>试运行
|
||||
</el-button>
|
||||
<el-button v-if="flowState === 'testRunning'" @click="flowPauseFn">
|
||||
@ -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;
|
||||
}
|
||||
|
||||
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 || "保存草稿失败");
|
||||
|
||||
Loading…
Reference in New Issue
Block a user