refactor(meetings): admin/manager 会议管理合并为 1 文件双路由 (Option C)
把 admin/AdminMeetings.vue (212 行) + manager/Meetings.vue (262 行) 合并到
新位置 views/meetings/Meetings.vue (~265 行), 双路由指向同一组件.
角色感知实现 (route.path.split('/')[1] 算 roleSegment):
- 面包屑: admin 显示 '首页 / 项目管理 / 会议管理', manager 显示 '首页 / 会议管理'
- 详情跳转: admin 跳 /admin/meetings/detail/X, manager 跳 /manager/meetings/detail/X
- 修改/复制: 双角色都跳 manager-meetings-new (跨角色 URL, MeetingNew.vue 公共页)
admin 自动获得 manager 全部权限 (5 操作按钮 + 批量提交 + 备注筛选 +
详细删除确认文案), 跟 'admin 应该拥有全部权限' 的产品语义对齐.
净收益:
- 代码 -474/+265 = -209 行 (-44%)
- 真相源从 2 文件变 1 文件, 后续新增功能只改 1 处
- 物理消除 admin/manager 功能集漂移风险
This commit is contained in:
@@ -26,7 +26,7 @@ const routes = [
|
||||
{ path: 'users', name: 'admin-users', component: () => import('@/views/admin/Users.vue'), meta: { title: '用户管理' } },
|
||||
{ path: 'roles', name: 'admin-roles', component: () => import('@/views/admin/Roles.vue'), meta: { title: '角色管理' } },
|
||||
{ path: 'projects', name: 'admin-projects', component: () => import('@/views/manager/Projects.vue'), meta: { title: '项目管理' } },
|
||||
{ path: 'meetings', name: 'admin-meetings', component: () => import('@/views/admin/AdminMeetings.vue'), meta: { title: '会议管理' } },
|
||||
{ path: 'meetings', name: 'admin-meetings', component: () => import('@/views/meetings/Meetings.vue'), meta: { title: '会议管理' } },
|
||||
{ path: 'meetings/detail/:meetingId', name: 'admin-meetings-detail', component: () => import('@/views/manager/MeetingDetail.vue'), meta: { title: '会议详情' } },
|
||||
{ path: 'department', name: 'admin-department', component: () => import('@/views/admin/Department.vue'), meta: { title: '科室管理' } },
|
||||
{ path: 'title', name: 'admin-title', component: () => import('@/views/admin/Title.vue'), meta: { title: '职称管理' } },
|
||||
@@ -64,7 +64,7 @@ const routes = [
|
||||
{ path: 'projects/edit/:projectId', name: 'manager-projects-edit', component: () => import('@/views/manager/ProjectsNew.vue'), meta: { title: '编辑项目' } },
|
||||
{ path: 'projects/detail/:projectId', name: 'manager-projects-detail', component: () => import('@/views/manager/ManagerProjectDetail.vue'), meta: { title: '项目详情' } },
|
||||
{ path: 'projects/assign', name: 'manager-projects-assign', component: () => import('@/views/manager/ManagerProjectsAssign.vue'), meta: { title: '项目分配' } },
|
||||
{ path: 'meetings', name: 'manager-meetings', component: () => import('@/views/manager/Meetings.vue'), meta: { title: '会议管理' } },
|
||||
{ path: 'meetings', name: 'manager-meetings', component: () => import('@/views/meetings/Meetings.vue'), meta: { title: '会议管理' } },
|
||||
{ path: 'meetings/detail/:meetingId', name: 'manager-meetings-detail', component: () => import('@/views/manager/MeetingDetail.vue'), meta: { title: '会议详情' } },
|
||||
{ path: 'meetings/new', name: 'manager-meetings-new', component: () => import('@/views/manager/MeetingNew.vue'), meta: { title: '新建会议' } },
|
||||
{ path: 'experts', name: 'manager-experts', component: () => import('@/views/expert/Experts.vue'), meta: { title: '专家审核' } },
|
||||
|
||||
Reference in New Issue
Block a user