import { Aim, Avatar, Bell, ChatDotRound, Collection, Connection, Cpu, DataAnalysis, DocumentChecked, Files, FirstAidKit, Flag, Histogram, House, Key, List, Management, Memo, Monitor, OfficeBuilding, Operation, PriceTag, Reading, Refresh, School, Search, Setting, Share, Star, TrendCharts, User, UserFilled, UserFilled as DoctorIcon } from '@element-plus/icons-vue' import type { MenuSection, RoleKey } from '@/types' export const roleMenus: Record = { 'super-admin': [ { title: '概览', items: [{ page: 'dashboard', icon: House, title: '平台总览' }] }, { title: '用户管理', items: [ { page: 'user-list', icon: User, title: '用户列表' }, { page: 'hospital-list', icon: OfficeBuilding, title: '医院管理' }, { page: 'department-list', icon: Management, title: '科室管理' }, ] }, { title: '内容管理', items: [ { page: 'case-list', icon: Collection, title: '病例库' }, { page: 'tag-category', icon: PriceTag, title: '标签分类', disabled: true }, { page: 'ai-case', icon: Cpu, title: 'AI病例生成' } ] }, { title: '训练管理', items: [ { page: 'training-list', icon: Memo, title: '训练记录' }, ] }, { title: '能力评估', items: [ { page: 'ability-profile', icon: Aim, title: '能力画像' }, { page: 'ability-radar', icon: Share, title: '雷达图分析' }, ] }, { title: '数据分析', items: [ { page: 'data-user', icon: UserFilled, title: '用户分析', disabled: true }, { page: 'data-case', icon: Files, title: '病例分析', disabled: true }, { page: 'data-hospital', icon: OfficeBuilding, title: '医院分析', disabled: true }, { page: 'data-retention', icon: Refresh, title: '留存分析', disabled: true } ] }, ], 'hospital-admin': [ { title: '概览', items: [ { page: 'hospital-dashboard', icon: OfficeBuilding, title: '医院驾驶舱' }, { page: 'hospital-settings', icon: Setting, title: '本院配置' } ] }, { title: '人员管理', items: [ { page: 'doctor-list', icon: DoctorIcon, title: '带教医生管理' }, { page: 'student-list', icon: School, title: '医学生管理' }, { page: 'teacher-list', icon: Reading, title: '师生关系管理' } ] }, { title: '运营数据', items: [ { page: 'case-review', icon: DocumentChecked, title: '病例审核' }, { page: 'hospital-data', icon: DataAnalysis, title: '运营数据' }, { page: 'case-usage', icon: Collection, title: '病例使用' }, { page: 'training-stats', icon: Memo, title: '训练统计' }, { page: 'dept-analysis', icon: Management, title: '科室分析' } ] }, { title: '能力提升', items: [ { page: 'ability-trend', icon: TrendCharts, title: '能力趋势' }, { page: 'student-ranking', icon: Histogram, title: '学生排行' } ] } ], 'content-admin': [ { title: '概览', items: [{ page: 'content-dashboard', icon: Files, title: '内容概览' }] }, { title: '病例管理', items: [ { page: 'case-library', icon: Collection, title: '病例库管理' }, { page: 'knowledge-base', icon: Files, title: '知识库管理' } ] }, { title: 'AI内容', items: [ { page: 'ai-generate', icon: Cpu, title: 'AI生成病例' }, ] }, { title: '统计', items: [{ page: 'content-stats', icon: DataAnalysis, title: '内容统计' }] } ], teacher: [ { title: '概览', items: [{ page: 'teacher-dashboard', icon: Reading, title: '教学概览' }] }, { title: '学生管理', items: [ { page: 'my-students', icon: User, title: '我的学生' }, { page: 'student-ability', icon: Aim, title: '能力画像' } ] }, { title: '教学工具', items: [ { page: 'training-record', icon: Collection, title: '训练记录' }, { page: 'leaderboard', icon: Histogram, title: '排行榜' }, { page: 'assign-task', icon: Flag, title: '分配任务' }, { page: 'growth-path', icon: TrendCharts, title: '成长轨迹' }, ] }, ] } export const pageTitles = Object.values(roleMenus).reduce>((acc, sections) => { sections.forEach(section => { section.items.forEach(item => { acc[item.page] = item.title }) }) return acc }, {}) const directPagePaths: Record = { 'ai-case': '/cases/ai-generate', 'ai-generate': '/cases/ai-generate', 'case-library': '/cases', 'case-list': '/cases', 'case-review': '/cases/review', 'content-admin-list': '/users/content-admins', 'department-list': '/departments', 'doctor-list': '/users/doctors', 'hospital-list': '/institutions', 'my-students': '/my-students', 'student-list': '/users/students', 'teacher-list': '/teacher-student-relations', 'user-list': '/users' } export function getPagePath(page: string) { if (directPagePaths[page]) { return directPagePaths[page] } return page === 'dashboard' ? '/dashboard' : `/module/${page}` } export function getFirstPage(role: RoleKey) { return roleMenus[role][0].items[0].page }