| | |
| | | }, |
| | | }; |
| | | |
| | | /** 审批角色与模拟审批人 */ |
| | | export const MOCK_APPROVERS_BY_ROLE = { |
| | | direct_supervisor: { approverId: "mock_supervisor", approverName: "直属上级" }, |
| | | dept_manager: { approverId: "mock_manager", approverName: "部门经理" }, |
| | | cfo: { approverId: "mock_cfo", approverName: "财务总监" }, |
| | | compliance: { approverId: "mock_compliance", approverName: "合规审核" }, |
| | | /** 审批角色展示名(节点审批人须在前端选择) */ |
| | | export const APPROVAL_ROLE_LABELS = { |
| | | direct_supervisor: "直属上级", |
| | | dept_manager: "部门经理", |
| | | cfo: "财务总监", |
| | | compliance: "合规审核", |
| | | }; |
| | | |
| | | /** 按金额预设审批链 */ |
| | |
| | | |
| | | export function buildAutoApprovalFlow(amount, expenseCategory) { |
| | | const roles = resolveApprovalRoles(amount, expenseCategory); |
| | | return roles.map((role, i) => { |
| | | const mock = MOCK_APPROVERS_BY_ROLE[role] || { approverId: `mock_${role}`, approverName: role }; |
| | | return { |
| | | approverId: mock.approverId, |
| | | approverName: mock.approverName, |
| | | roleKey: role, |
| | | sortOrder: i + 1, |
| | | nodeOrder: i + 1, |
| | | nodeStatus: i === 0 ? "process" : "wait", |
| | | approveOpinion: "", |
| | | approveTime: "", |
| | | }; |
| | | }); |
| | | return roles.map((role, i) => ({ |
| | | approverId: null, |
| | | approverName: APPROVAL_ROLE_LABELS[role] || role, |
| | | roleKey: role, |
| | | sortOrder: i + 1, |
| | | nodeOrder: i + 1, |
| | | nodeStatus: i === 0 ? "process" : "wait", |
| | | approveOpinion: "", |
| | | approveTime: "", |
| | | })); |
| | | } |
| | | |
| | | export function getApprovalRuleHint(amount, expenseCategory) { |
| | |
| | | const rule = APPROVAL_AMOUNT_RULES.find((r) => amt <= r.maxAmount) || APPROVAL_AMOUNT_RULES[APPROVAL_AMOUNT_RULES.length - 1]; |
| | | const extra = CATEGORY_EXTRA_APPROVAL[expenseCategory] || []; |
| | | const extraText = extra.length |
| | | ? `;${expenseCategoryLabel(expenseCategory)}类另需:${extra.map((r) => MOCK_APPROVERS_BY_ROLE[r]?.approverName || r).join("、")}` |
| | | ? `;${expenseCategoryLabel(expenseCategory)}类另需:${extra.map((r) => APPROVAL_ROLE_LABELS[r] || r).join("、")}` |
| | | : ""; |
| | | return `${rule.description}${extraText}`; |
| | | } |