From 62a855e562af69d3f59d6758c638014ff527f37b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=AD=E5=BA=86=E6=B3=B0?= <12369755+htcloud1@user.noreply.gitee.com> Date: Sat, 22 Aug 2026 20:18:08 +0800 Subject: [PATCH] =?UTF-8?q?refactor(meetings):=20admin/manager=20=E4=BC=9A?= =?UTF-8?q?=E8=AE=AE=E7=AE=A1=E7=90=86=E5=90=88=E5=B9=B6=E4=B8=BA=201=20?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=8F=8C=E8=B7=AF=E7=94=B1=20(Option=20C)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 把 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 功能集漂移风险 --- ry-vue3/src/router/index.js | 4 +- ry-vue3/src/views/admin/AdminMeetings.vue | 212 ------------------ .../views/{manager => meetings}/Meetings.vue | 39 ++-- 3 files changed, 27 insertions(+), 228 deletions(-) delete mode 100644 ry-vue3/src/views/admin/AdminMeetings.vue rename ry-vue3/src/views/{manager => meetings}/Meetings.vue (88%) diff --git a/ry-vue3/src/router/index.js b/ry-vue3/src/router/index.js index 57fe73c..ce527a6 100644 --- a/ry-vue3/src/router/index.js +++ b/ry-vue3/src/router/index.js @@ -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: '专家审核' } }, diff --git a/ry-vue3/src/views/admin/AdminMeetings.vue b/ry-vue3/src/views/admin/AdminMeetings.vue deleted file mode 100644 index 8aae464..0000000 --- a/ry-vue3/src/views/admin/AdminMeetings.vue +++ /dev/null @@ -1,212 +0,0 @@ - - - - - diff --git a/ry-vue3/src/views/manager/Meetings.vue b/ry-vue3/src/views/meetings/Meetings.vue similarity index 88% rename from ry-vue3/src/views/manager/Meetings.vue rename to ry-vue3/src/views/meetings/Meetings.vue index 3e7c411..71a1a64 100644 --- a/ry-vue3/src/views/manager/Meetings.vue +++ b/ry-vue3/src/views/meetings/Meetings.vue @@ -1,6 +1,6 @@