feat: 流程编辑器 bpmn-js 画布模式 + 引擎多出口/退回/移交/或签前端接线
build / build (push) Successful in 4m6s

- def-editor 新增画布模式(默认):bpmn-js 内存画布(精简 palette/汉化/撤销重做/缩放/出口命名/导出 BPMN),
  toBpmn/fromBpmn 双向序列化,contentJson 仍为持久格式(+layout 坐标);卡片模式保留回退
- 新增 utils/flowLayout.ts 分层布局(设计器与查看器共用)
- TaskHandle:多出口节点出口选择下拉;退回/移交按钮与弹窗;轨迹显示已退回/已移交及所选出口
- FlowDiagram:优先使用保存坐标;边画出口名标签;办件状态着色/当前节点高亮
- api/flow:approve 带 edgeName,新增 returnBack/transfer
This commit is contained in:
chenxing
2026-09-16 22:22:26 +08:00
parent 842a4cfb14
commit e52c4324f6
11 changed files with 1177 additions and 80 deletions
+13 -3
View File
@@ -30,6 +30,8 @@ export const TASK_STATUS: Record<number, string> = {
1: "同意",
2: "拒绝",
3: "失效",
4: "退回",
5: "移交",
};
class FlowApi {
@@ -54,9 +56,17 @@ class FlowApi {
taskDetail(taskId: number | string) {
return get(`${ROOT}/task/${taskId}/detail`);
}
/** 同意 */
approve(taskId: number | string, opinion?: string) {
return post(`${ROOT}/task/${taskId}/approve`, { opinion: opinion || null });
/** 同意(多出口节点必须传 edgeName=所选出口名,单出口可省) */
approve(taskId: number | string, opinion?: string, edgeName?: string) {
return post(`${ROOT}/task/${taskId}/approve`, { opinion: opinion || null, edgeName: edgeName || null });
}
/** 退回(targetNodeId 可选=缺省最近已办主线节点;opinion 可选) */
returnBack(taskId: number | string, targetNodeId?: string, opinion?: string) {
return post(`${ROOT}/task/${taskId}/returnBack`, { targetNodeId: targetNodeId || null, opinion: opinion || null });
}
/** 移交(toUserId 必填;reason 可选) */
transfer(taskId: number | string, toUserId: number, reason?: string) {
return post(`${ROOT}/task/${taskId}/transfer`, { toUserId, reason: reason || null });
}
/** 拒绝(opinion 必填) */
reject(taskId: number | string, opinion: string) {