[audit] P6.3 F5-4 重跑确认框改 Modal+复选「按当前已发布流程定义重跑(救僵尸办件)」

This commit is contained in:
chenxing
2026-10-18 08:18:28 +08:00
parent 33500e23d6
commit c7e7a7aa85
2 changed files with 30 additions and 15 deletions
+7 -3
View File
@@ -277,9 +277,13 @@ class FlowApi {
routerStatus(id: number | string, enabled: boolean) {
return post(`${ROOT}/admin/router/status/${id}?enabled=${enabled}`);
}
/** 重跑路由(判断失败挂起的恢复入口:重新调判断,成功即按出口续走) */
instanceReroute(instanceId: number | string) {
return post(`${ROOT}/admin/instance/${instanceId}/reroute`);
/**
* 重跑路由(判断失败挂起的恢复入口:重新调判断,成功即按出口续走)。
* useLatestDef=true(F5-4 僵尸逃生门):按该流程当前已发布最高版本重跑并刷新办件定义快照。
*/
instanceReroute(instanceId: number | string, useLatestDef?: boolean) {
const suffix = useLatestDef ? "?useLatestDef=true" : "";
return post(`${ROOT}/admin/instance/${instanceId}/reroute${suffix}`);
}
/** 表达式调试求值(2026-10-10:与运行时同一求值核心;不落库不走流程) */
routerEval(body: { expression: string; variablesJson?: string }) {
+22 -11
View File
@@ -2,7 +2,6 @@
// 办件记录(管理端):全校办件查询;CONDITION 判断失败挂起的办件在此"重跑路由"恢复
import { ref } from "vue";
import { Message, Tag } from "view-ui-plus";
import MyConfirm from "@/components/MyConfirm";
import { OperatorEnum } from "@/types";
import TablePageAlovaNew from "@/components/TablePageAlovaNew.vue";
import InstanceDrawer from "@/views/flow/components/InstanceDrawer.vue";
@@ -41,18 +40,25 @@ function openDetail(instanceId: string | number) {
drawerVisible.value = true;
}
/** 重跑路由(2026-09-24 §4.4):重新调判断服务,成功即按出口续走;仍失败回业务错(办件继续挂起) */
/** 重跑路由(2026-09-24 §4.4 + F5-4 逃生门):确认框带「按当前已发布定义重跑」复选——
* 僵尸办件(挂起时的表达式已修好并发布为新版)勾选后按新版续走,否则按落库快照重跑 */
const rerouteVisible = ref(false);
const rerouteUseLatest = ref(false);
const rerouteRow = ref<any>(null);
function onReroute(row: any) {
MyConfirm({
title: "重跑路由",
msg: `确定对办件「${row.bizTitle || row.id}」重跑条件路由判断吗?`,
info: "仅对挂在条件分支节点的挂起办件生效(未挂起的会提示无需重跑)",
async onOk() {
await flowApi.instanceReroute(row.id).send();
Message.success("路由已重跑,流程按新判断结果继续");
rerouteRow.value = row;
rerouteUseLatest.value = false;
rerouteVisible.value = true;
}
async function confirmReroute() {
const row = rerouteRow.value;
if (!row) return;
await flowApi.instanceReroute(row.id, rerouteUseLatest.value).send();
rerouteVisible.value = false;
Message.success("路由已重跑,流程按判断结果继续");
tableRef.value?.reloadData(OperatorEnum.edit);
},
});
}
// dataApi 返回 Method(alova usePagination 负责发送与解包),不能调 .send()
@@ -90,5 +96,10 @@ function onSearch() {
<TablePageAlovaNew ref="tableRef" :dataApi="tableApi" :columns="columns" />
</div>
<InstanceDrawer v-model="drawerVisible" :instance-id="drawerInstanceId" />
<Modal v-model="rerouteVisible" title="重跑路由" :mask-closable="false" @on-ok="confirmReroute">
<p style="margin: 0 0 8px">确定对办件「{{ rerouteRow?.bizTitle || rerouteRow?.id }}」重跑条件路由判断吗?</p>
<p style="margin: 0 0 12px; color: #808695">仅对挂在条件分支节点的挂起办件生效(未挂起的会提示无需重跑)</p>
<Checkbox v-model="rerouteUseLatest">按当前已发布流程定义重跑(救僵尸办件)</Checkbox>
</Modal>
</div>
</template>