feat(flow): 优化流程试运行功能
- 添加试运行准备状态指示器 - 在试运行按钮上增加加载状态和禁用逻辑 - 实现试运行前自动保存草稿功能 - 为保存草稿功能添加可选的成功消息参数 - 防止试运行和保存操作同时执行的冲突处理
This commit is contained in:
parent
b3dae8db39
commit
657b7b9338
@ -39,7 +39,12 @@
|
|||||||
<el-button :type="groupSelectionPending ? 'primary' : 'default'" @click="group">
|
<el-button :type="groupSelectionPending ? 'primary' : 'default'" @click="group">
|
||||||
<el-icon><CollectionTag /></el-icon>{{ groupSelectionPending ? "取消分组" : "分组" }}
|
<el-icon><CollectionTag /></el-icon>{{ groupSelectionPending ? "取消分组" : "分组" }}
|
||||||
</el-button>
|
</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-icon><VideoPlay /></el-icon>试运行
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button v-if="flowState === 'testRunning'" @click="flowPauseFn">
|
<el-button v-if="flowState === 'testRunning'" @click="flowPauseFn">
|
||||||
@ -831,6 +836,7 @@ const versionLoading = ref(false);
|
|||||||
const versionList = ref([]);
|
const versionList = ref([]);
|
||||||
const versionPreviewMode = ref(false);
|
const versionPreviewMode = ref(false);
|
||||||
const previewingVersionNo = ref(null);
|
const previewingVersionNo = ref(null);
|
||||||
|
const trialPreparing = ref(false);
|
||||||
let draftBeforeVersionPreview = null;
|
let draftBeforeVersionPreview = null;
|
||||||
let oldFlowDataBeforeVersionPreview = null;
|
let oldFlowDataBeforeVersionPreview = null;
|
||||||
let disableFormBeforeVersionPreview = false;
|
let disableFormBeforeVersionPreview = false;
|
||||||
@ -846,6 +852,8 @@ const flowInfoData = ref({
|
|||||||
* 试运行
|
* 试运行
|
||||||
*/
|
*/
|
||||||
const testRun = async () => {
|
const testRun = async () => {
|
||||||
|
if (trialPreparing.value || draftSaving.value) return;
|
||||||
|
|
||||||
// 1、验证画布内所有的表单通过验证
|
// 1、验证画布内所有的表单通过验证
|
||||||
const { nodes, edges } = lf.getGraphData();
|
const { nodes, edges } = lf.getGraphData();
|
||||||
|
|
||||||
@ -882,7 +890,14 @@ const testRun = async () => {
|
|||||||
return;
|
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);
|
return sanitizeFlowResourceDefinition(validation.graph);
|
||||||
};
|
};
|
||||||
|
|
||||||
const saveDraft = async () => {
|
const saveDraft = async ({ successMessage = "草稿已保存" } = {}) => {
|
||||||
if (!flowInfoData.value.itemId) return false;
|
if (!flowInfoData.value.itemId) return false;
|
||||||
draftSaving.value = true;
|
draftSaving.value = true;
|
||||||
try {
|
try {
|
||||||
@ -1474,7 +1489,7 @@ const saveDraft = async () => {
|
|||||||
draftDirty.value = false;
|
draftDirty.value = false;
|
||||||
oldFlowData = JSON.parse(JSON.stringify(lf.getGraphData()));
|
oldFlowData = JSON.parse(JSON.stringify(lf.getGraphData()));
|
||||||
if (flowState.value === "updateData") flowState.value = "draftSaved";
|
if (flowState.value === "updateData") flowState.value = "draftSaved";
|
||||||
ElMessage.success("草稿已保存");
|
ElMessage.success(successMessage);
|
||||||
return true;
|
return true;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
ElMessage.error(error?.message || "保存草稿失败");
|
ElMessage.error(error?.message || "保存草稿失败");
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user