feat(admin): 抄送(NOTIFY)与条件分支(CONDITION)全栈接入编辑器/轨迹/管理面
build / build (push) Successful in 1m55s

NOTIFY(2026-09-23):编辑器抄送卡片+抽屉+画布 bpmn:ServiceTask 映射、工作台「抄送我的」页签、轨迹 kind=CC 行、示意图青框卡片
CONDITION(2026-09-24):ConditionBox 互斥分支容器(分支列出口名就地编辑、无 JOIN 语义分支尾隐式汇合)、ConditionDrawer 判断服务下拉(flw_router)、convert 双向序列化(CONDITION+命名出边、uid+c 尾缀往返收敛)、validate 镜像后端口径、画布 bpmn:ExclusiveGateway 映射、轨迹「系统判断→出口」行(失败挂起提示)、示意图紫菱形(SVG 与服务端 PNG 同配色)、管理面 flw_router 维护页(/admin/routers)与办件记录「重跑路由」入口
convert 往返 54 项全过、npm run build 通过
This commit is contained in:
chenxing
2026-09-24 01:19:15 +08:00
parent cdf04f0930
commit e30e7ab665
20 changed files with 1614 additions and 84 deletions
+26 -3
View File
@@ -1,7 +1,10 @@
<script setup lang="ts">
// 办件记录(管理端):全校办件查询
// 办件记录(管理端):全校办件查询;CONDITION 判断失败挂起的办件在此"重跑路由"恢复
import { ref } from "vue";
import { useRouter } from "vue-router";
import { Message } from "view-ui-plus";
import MyConfirm from "@/components/MyConfirm";
import { OperatorEnum } from "@/types";
import TablePageAlovaNew from "@/components/TablePageAlovaNew.vue";
import { flowApi, INSTANCE_STATUS, INSTANCE_STATUS_COLOR } from "@/api/module/flow";
import Utils from "@/utils";
@@ -19,10 +22,30 @@ const columns = [
h("Tag", { color: INSTANCE_STATUS_COLOR[p.row.status] || "gray" }, () => INSTANCE_STATUS[p.row.status] || p.row.status) },
{ title: "提交人", key: "submitterName", width: 100 },
{ title: "提交时间", width: 160, render: (h: any, p: any) => h("span", (p.row.submitTime || "").replace("T", " ")) },
{ title: "操作", width: 100, align: "center", fixed: "right", render: (h: any, p: any) =>
Utils.operatingHandle(h, "详情", "icon-browse", () => router.push(`/instance/${p.row.id}?pid=102`)) },
{ title: "操作", width: 170, align: "center", fixed: "right", render: (h: any, p: any) => [
Utils.operatingHandle(h, "详情", "icon-browse", () => router.push(`/instance/${p.row.id}?pid=102`)),
h("span", { style: "display:inline-block;width:10px" }),
// 仅审批中的办件可能挂在条件分支节点(重跑入口对非挂起办件会得到业务错提示)
p.row.status === 10
? Utils.operatingHandle(h, "重跑路由", "icon-play", () => onReroute(p.row))
: h("span"),
] },
];
/** 重跑路由(2026-09-24 §4.4):重新调判断服务,成功即按出口续走;仍失败回业务错(办件继续挂起) */
function onReroute(row: any) {
MyConfirm({
title: "重跑路由",
msg: `确定对办件「${row.bizTitle || row.id}」重跑条件路由判断吗?`,
info: "仅对挂在条件分支节点的挂起办件生效(未挂起的会提示无需重跑)",
async onOk() {
await flowApi.instanceReroute(row.id).send();
Message.success("路由已重跑,流程按新判断结果继续");
tableRef.value?.reloadData(OperatorEnum.edit);
},
});
}
// dataApi 返回 Method(alova usePagination 负责发送与解包),不能调 .send()
const tableApi = (p: { pageIndex: number; pageSize: number }) => {
const params: any = { page: p.pageIndex, size: p.pageSize };