feat(ui): finalize shared shells and loading states

This commit is contained in:
caoxiaozhu
2026-05-29 13:17:39 +08:00
parent 64cc76c970
commit e080105f9f
52 changed files with 1559 additions and 861 deletions

View File

@@ -3,24 +3,22 @@ export const DEFAULT_APP_VIEW_ORDER = [
'documents',
'budget',
'audit',
'overview',
'policies',
'digitalEmployees',
'logs',
'employees',
'settings'
]
'overview',
'policies',
'digitalEmployees',
'employees',
'settings'
]
const ALWAYS_VISIBLE_VIEWS = new Set(['workbench', 'documents', 'policies'])
const VIEW_ROLE_RULES = {
overview: ['finance', 'executive'],
budget: ['budget_monitor', 'executive'],
audit: ['finance'],
digitalEmployees: ['finance'],
logs: ['manager'],
employees: ['manager'],
settings: ['manager']
}
budget: ['budget_monitor', 'executive'],
audit: ['finance'],
digitalEmployees: ['finance'],
employees: ['manager'],
settings: ['manager']
}
const CLAIM_MANAGER_ROLE_CODES = new Set(['executive'])
const CLAIM_RETURN_ROLE_CODES = new Set(['finance', 'executive', 'manager', 'approver', 'budget_monitor'])
const CLAIM_LEADER_APPROVAL_ROLE_CODES = new Set(['manager', 'approver'])

View File

@@ -0,0 +1,16 @@
export const REFRESH_INTERVAL_OPTIONS = [
{ label: '1s', value: 1000 },
{ label: '3s', value: 3000 },
{ label: '5s', value: 5000 },
{ label: '10s', value: 10000 },
{ label: '30s', value: 30000 },
{ label: '60s', value: 60000 },
{ label: '180s', value: 180000 }
]
export const DEFAULT_REFRESH_INTERVAL_MS = 60000
export function formatRefreshInterval(value) {
const option = REFRESH_INTERVAL_OPTIONS.find((item) => item.value === Number(value))
return option?.label || '60s'
}

View File

@@ -70,11 +70,19 @@ export const SECTION_DEFINITIONS = [
{
id: 'logs',
label: '日志策略',
title: '日志与审计策略',
desc: '日志级别、留存与脱敏',
longDesc: '定义系统日志级别、留存周期和审计策略,保证问题排查和合规审计可追溯。',
title: '日志策略',
desc: '日志级别、留存与路径',
longDesc: '定义系统日志级别、留存周期和写入路径,保证问题排查过程可追溯。',
actionLabel: '保存日志策略'
},
{
id: 'systemLogs',
label: '系统日志',
title: '系统日志',
desc: '运行事件、请求追踪与异常排查',
longDesc: '查看系统运行日志、结构化事件和请求追踪信息,作为系统设置下的排障与审计子项。',
actionLabel: ''
},
{
id: 'mail',
label: '邮箱设置',
@@ -465,6 +473,7 @@ export function computeSectionStatus(state) {
Number(state.logForm.retentionDays) > 0 &&
normalizeValue(state.logForm.logPath)
),
systemLogs: true,
mail: Boolean(
normalizeValue(state.mailForm.smtpHost) &&
Number(state.mailForm.port) > 0 &&