export const ROLE_IDS = { systemAdmin: 'TAM0000001', headOfficeManager: 'TAM0000006', branchManager: 'TAM0000007', forecaster: 'TAM0000008', } as const export const ROLE_PRIORITY = [ ROLE_IDS.systemAdmin, ROLE_IDS.headOfficeManager, ROLE_IDS.branchManager, ROLE_IDS.forecaster, ] as const export const ROLE_NAMES: Record = { [ROLE_IDS.systemAdmin]: '管理员', [ROLE_IDS.headOfficeManager]: '总行资金管理员', [ROLE_IDS.branchManager]: '分行/管理部资金管理员', [ROLE_IDS.forecaster]: '资金预报员', } export const PERMISSIONS = { dashboardView: 'dashboard:view', approvalCenterView: 'approval-center:view', foreignPositionApprovalView: 'foreign-position-approval:view', fundsCockpitView: 'funds-cockpit:view', announcementView: 'announcement:view', announcementManage: 'announcement:manage', } as const export type PermissionCode = (typeof PERMISSIONS)[keyof typeof PERMISSIONS] /** 登录接口角色与移动端功能权限的对应关系。 */ const ROLE_PERMISSION_MAP: Record = { [ROLE_IDS.systemAdmin]: [ PERMISSIONS.dashboardView, PERMISSIONS.approvalCenterView, PERMISSIONS.foreignPositionApprovalView, PERMISSIONS.fundsCockpitView, PERMISSIONS.announcementView, PERMISSIONS.announcementManage, ], [ROLE_IDS.headOfficeManager]: [ PERMISSIONS.dashboardView, PERMISSIONS.approvalCenterView, PERMISSIONS.foreignPositionApprovalView, PERMISSIONS.fundsCockpitView, PERMISSIONS.announcementView, PERMISSIONS.announcementManage, ], [ROLE_IDS.branchManager]: [ PERMISSIONS.dashboardView, PERMISSIONS.foreignPositionApprovalView, PERMISSIONS.announcementView, ], [ROLE_IDS.forecaster]: [ PERMISSIONS.dashboardView, PERMISSIONS.announcementView, ], } /** 多角色用户按 001 > 006 > 007 > 008 选择默认角色。 */ export function resolvePrimaryRoleId(roleIds: readonly string[]) { return ROLE_PRIORITY.find((roleId) => roleIds.includes(roleId)) || roleIds[0] || '' } export function resolvePermissions(roleIds: readonly string[]) { const primaryRoleId = resolvePrimaryRoleId(roleIds) return [...(ROLE_PERMISSION_MAP[primaryRoleId] || [])] }