feat: 优化差旅报销预审流程与个人工作台 UI 体系
- 完善 user_agent_application 申请差旅报销预审槽位与消息组装 - 增强预算助理报告与风险建议卡片交互 - 重构登录页视觉样式与移动端响应式适配 - 优化个人工作台、文档中心、政策中心、员工管理等页面布局 - 拆分 travelRequestDetailPreReviewModel 为 advice/submit 模型 - 补充报销草稿、风险复核、Item Sync 与模板执行器测试覆盖
This commit is contained in:
@@ -62,6 +62,35 @@ export const assistantCapabilities = [
|
||||
}
|
||||
]
|
||||
|
||||
const FINANCIAL_CAPABILITY_KEYS = new Set(['budget-planning', 'finance-analysis'])
|
||||
const FINANCIAL_CAPABILITY_ROLE_CODES = new Set(['budget_monitor', 'executive', 'admin'])
|
||||
const FINANCIAL_CAPABILITY_ROLE_LABELS = new Set(['预算监控员', '高级财务人员', '管理员'])
|
||||
|
||||
function normalizeRoleCodes(user = {}) {
|
||||
const rawCodes = Array.isArray(user.roleCodes)
|
||||
? user.roleCodes
|
||||
: Array.isArray(user.role_codes)
|
||||
? user.role_codes
|
||||
: []
|
||||
return rawCodes.map((code) => String(code || '').trim().toLowerCase()).filter(Boolean)
|
||||
}
|
||||
|
||||
export function canViewFinancialWorkbenchCapabilities(user = {}) {
|
||||
const roleLabel = String(user.role || '').trim()
|
||||
return Boolean(user.isAdmin)
|
||||
|| FINANCIAL_CAPABILITY_ROLE_LABELS.has(roleLabel)
|
||||
|| normalizeRoleCodes(user).some((code) => FINANCIAL_CAPABILITY_ROLE_CODES.has(code))
|
||||
}
|
||||
|
||||
export function filterAssistantCapabilitiesForUser(user = {}) {
|
||||
const canViewFinancial = canViewFinancialWorkbenchCapabilities(user)
|
||||
return assistantCapabilities.filter((item) => canViewFinancial || !FINANCIAL_CAPABILITY_KEYS.has(item.key))
|
||||
}
|
||||
|
||||
export function resolveWorkbenchCapabilityGridClass(user = {}) {
|
||||
return canViewFinancialWorkbenchCapabilities(user) ? 'capability-grid--privileged' : 'capability-grid--standard'
|
||||
}
|
||||
|
||||
export const todoItems = [
|
||||
{
|
||||
title: '待补材料',
|
||||
|
||||
Reference in New Issue
Block a user