| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- /** 全局配置结构(对应 public/config/config.js) */
- export interface RoleItem {
- key: string
- label: string
- org: string
- /** 是否可看全区数据 */
- allData?: boolean
- /** 数据范围:街镇(村/镇级角色) */
- town?: string
- /** 数据范围:村居(仅村级角色) */
- village?: string
- }
- export interface AppConfig {
- systemName: string
- systemLogoChar: string
- systemTitle: string
- systemSubtitle: string
- requestTimeout: number
- /** 业务 API 前缀,开发默认 /api(Vite 代理到 sjnmtybt-server) */
- apiBase: string
- /** 是否使用本地 mock 数据 */
- useMock: boolean
- /** 当前模拟角色 key */
- currentRole: string
- /** 当前发放周期 YYYY-MM */
- currentMonth: string
- /** 七种角色 */
- roles: RoleItem[]
- /** 角色 → 可访问路由 path */
- rolePermissions: Record<string, string[]>
- /** 告警只读角色 */
- alertReadonlyRoles: string[]
- }
- declare global {
- interface Window {
- AppConfig?: Partial<AppConfig>
- }
- }
- const fallbackConfig: AppConfig = {
- systemName: '松江区农民土地退养补助金发放管理平台',
- systemLogoChar: '松',
- systemTitle: '农民土地退养补助金',
- systemSubtitle: '发放管理平台',
- requestTimeout: 15000,
- apiBase: '/api',
- useMock: false,
- currentRole: 'admin',
- currentMonth: '2026-08',
- roles: [
- {
- key: 'village',
- label: '村合作社',
- org: '叶榭镇叶榭村合作社',
- allData: false,
- town: '叶榭镇',
- village: '叶榭村',
- },
- {
- key: 'town',
- label: '镇经发中心',
- org: '叶榭镇经济发展中心',
- allData: false,
- town: '叶榭镇',
- },
- {
- key: 'social',
- label: '镇社区事务受理中心',
- org: '叶榭镇社区事务受理中心',
- allData: false,
- town: '叶榭镇',
- },
- {
- key: 'leader',
- label: '分管领导',
- org: '叶榭镇社区事务受理中心',
- allData: false,
- town: '叶榭镇',
- },
- { key: 'agri', label: '区农委', org: '松江区农业农村委员会', allData: true },
- { key: 'hr', label: '区人社局', org: '松江区人力资源和社会保障局', allData: true },
- { key: 'admin', label: '系统管理员', org: '区数据局运维账号', allData: true },
- ],
- rolePermissions: {
- village: ['/dashboard', '/base', '/alerts'],
- town: ['/dashboard', '/approvals', '/reports'],
- social: [
- '/dashboard',
- '/insurance',
- '/status',
- '/special',
- '/monthly',
- '/disk',
- '/alerts',
- '/reports',
- ],
- leader: ['/dashboard', '/approvals', '/reports', '/alerts'],
- agri: ['/dashboard', '/reports'],
- hr: ['/dashboard', '/reports', '/alerts'],
- admin: [
- '/dashboard',
- '/base',
- '/insurance',
- '/approvals',
- '/status',
- '/special',
- '/monthly',
- '/disk',
- '/alerts',
- '/reports',
- ],
- },
- alertReadonlyRoles: ['hr', 'leader'],
- }
- /** 读取全局配置(合并 window.AppConfig) */
- export function getAppConfig(): AppConfig {
- return {
- ...fallbackConfig,
- ...window.AppConfig,
- roles: window.AppConfig?.roles ?? fallbackConfig.roles,
- rolePermissions: {
- ...fallbackConfig.rolePermissions,
- ...window.AppConfig?.rolePermissions,
- },
- alertReadonlyRoles:
- window.AppConfig?.alertReadonlyRoles ?? fallbackConfig.alertReadonlyRoles,
- }
- }
|