| | |
| | | .map(([, node]) => node); |
| | | } |
| | | |
| | | /** 模板 nodes → 审批任务(与 Web mapFlowNodesToTasks 一致) */ |
| | | export function mapFlowNodesToTasks(nodes, { instanceId, templateId } = {}) { |
| | | const list = Array.isArray(nodes) ? nodes : []; |
| | | const tasks = []; |
| | | list.forEach((n, i) => { |
| | | const levelNo = n?.levelNo ?? i + 1; |
| | | const approveType = |
| | | String(n?.approveType || "AND").toUpperCase() === "OR" ? "OR" : "AND"; |
| | | (n?.approvers || []).forEach((a, idx) => { |
| | | if (a?.approverId == null || a.approverId === "") return; |
| | | const task = { |
| | | levelNo, |
| | | approveType, |
| | | approverId: a.approverId, |
| | | approverName: a.approverName || "", |
| | | sortNo: a.sortNo ?? idx + 1, |
| | | }; |
| | | if (a.id != null) task.id = a.id; |
| | | if (a.nodeId != null) task.nodeId = a.nodeId; |
| | | if (a.templateId != null) task.templateId = a.templateId; |
| | | else if (templateId) task.templateId = templateId; |
| | | if (instanceId) task.instanceId = instanceId; |
| | | if (a.status != null) task.status = a.status; |
| | | tasks.push(task); |
| | | }); |
| | | }); |
| | | return tasks; |
| | | } |
| | | |
| | | /** 组装审批提交 DTO(与 Web buildApproveInstanceDto 一致) */ |
| | | export function buildApproveInstanceDto(id, uiResult, comment) { |
| | | const opinion = (comment || "").trim(); |
| | |
| | | }; |
| | | } |
| | | |
| | | /** 是否本人发起的审批 */ |
| | | export function isOwnApplication(item, userStore) { |
| | | const uid = userStore?.id; |
| | | if (item?.applicantId != null && uid != null && uid !== "") { |
| | | return String(item.applicantId) === String(uid); |
| | | } |
| | | const loginName = userStore?.nickName || userStore?.name; |
| | | if (loginName && item?.applicantName) { |
| | | return String(item.applicantName).trim() === String(loginName).trim(); |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | /** 仅进行中且本人发起时可编辑 */ |
| | | export function canModifyInstance(item, userStore) { |
| | | return item?.status === "PENDING" && isOwnApplication(item, userStore); |
| | | /** 仅进行中可编辑(与 Web openEditDialog 判定一致) */ |
| | | export function canModifyInstance(item) { |
| | | return item?.status === "PENDING"; |
| | | } |
| | | |
| | | /** 待当前用户审批 */ |