export const bpmAuditNodeFormat = (l?: any[]) => { if (!Array.isArray(l)) return []; const getUsers = (item: any) => { const { state, users } = item || {}; if (!Array.isArray(users)) return []; if (state === 2) { return users.map((u: any) => ({ ...u.user, proxyUser: u.proxyUsers, isAdminAudit: u.isAdminAudit, })); } return users .filter((u: any) => ['Approved', 'Rejected', 'UnApproved'].includes(u.state)) .map((u: any) => ({ ...u.user, // 如果是自动通过,就展示自动通过标记。 isAutoPass: u.comment?.includes('自动通过'), autoMessage: u.comment, proxyUser: u.proxyUsers, isAdminAudit: u.isAdminAudit, })); }; return l.map((item) => { const indexUser = item.users?.filter((u: any) => ['Approved', 'Rejected'].includes(u.state), )?.[0]; return { // 如果是待审批,那么就把所有人都展示出来,如果是已经审批结束,那么就展示最终操作人。 users: getUsers(item), id: item.nodeUuid, // 通过type 区分是 开始节点,还是审批节点 state: item.type === 'Start' ? -1 : item.state, time: indexUser?.auditTime, }; }); }; export const uacAuditNodeFormat = (l: any[]) => { if (!Array.isArray(l)) return []; const getUsers = (item: any) => { const { auditStatus, originAuditUsers, isAdminAudit, proxyUsers, auditUser, auditRemark, isCcNode, } = item || {}; if (auditStatus === 2 || isCcNode) { return ( originAuditUsers?.map((u: any) => ({ ...u, isAdminAudit, // 如果是代理审批,那么就展示代理审批人。 proxyUser: proxyUsers?.[u.id], })) ?? [] ); } return [ { ...auditUser, isAdminAudit, // 如果是代理审批,那么就展示代理审批人。 proxyUser: proxyUsers?.[auditUser?.id], // 如果是自动通过,就展示自动通过标记。 isAutoPass: auditRemark?.includes('自动通过'), autoMessage: auditRemark, }, ]; }; return l.map((item) => { const { stepIndex, auditStatus, auditTime, isCountersignNode, changeLog, isCcNode } = item; const countersign = changeLog ?.filter((v: any) => v.changeType === 'countersign') .sort((a: any, b: any) => a.changeTime - b.changeTime); const passOnUser = changeLog ?.filter((v: any) => v.changeType === 'reassign') .sort((a: any, b: any) => a.changeTime - b.changeTime); return { // 如果当前状态是待处理,就展示所有人,如果是已经处理完毕,就展示最终操作人。 users: getUsers(item), id: stepIndex, state: auditStatus, time: auditTime, isCountersignNode, countersign, passOnUser, isCcNode, }; }); }; export const getProgressIndex = (l: any[]) => { if (!Array.isArray(l)) return 0; const index = l.findIndex((v) => v.state === 2); if (index >= 0) { return index - 1; } return l.length - 1; };