From 3240590f4024f6ed57d0636455ab0ca7a6331f29 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: Thu, 20 Aug 2026 23:03:43 +0800 Subject: [PATCH] =?UTF-8?q?refactor(projects):=20assign=20+=20assign-batch?= =?UTF-8?q?=20=E5=90=88=E5=B9=B6=E4=B8=BA=E5=8D=95=E8=B7=AF=E7=94=B1,=20?= =?UTF-8?q?=E5=AD=90=E9=A1=B5=E9=9D=A2=20v-if=20=E5=8C=BA=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - router 删 /assign-batch 路由, 仅保留 /assign (单条/批量都走) - Projects.vue openAssign() 2 个 push 路径统一为 /manager/projects/assign - 子页面面包屑加 v-if 批量模式 tag (橙色 badge 标识) - 单/批模式区分完全靠 query.projectId vs query.projectIds + 子页面内 v-if/v-else 区块 (info-bar / 实时校验栏) Co-Authored-By: Claude --- ry-vue3/src/router/index.js | 1 - ry-vue3/src/views/manager/ManagerProjectsAssign.vue | 3 +++ ry-vue3/src/views/manager/Projects.vue | 6 ++++-- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/ry-vue3/src/router/index.js b/ry-vue3/src/router/index.js index 73b7311..c9b9a57 100644 --- a/ry-vue3/src/router/index.js +++ b/ry-vue3/src/router/index.js @@ -62,7 +62,6 @@ 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: 'projects/assign-batch', name: 'manager-projects-assign-batch', component: () => import('@/views/manager/ManagerProjectsAssign.vue'), meta: { title: '批量项目分配' } }, { path: 'meetings', name: 'manager-meetings', component: () => import('@/views/manager/Meetings.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/manager/ManagerProjectsAssign.vue b/ry-vue3/src/views/manager/ManagerProjectsAssign.vue index acd20cf..a0cf579 100644 --- a/ry-vue3/src/views/manager/ManagerProjectsAssign.vue +++ b/ry-vue3/src/views/manager/ManagerProjectsAssign.vue @@ -2,6 +2,7 @@
@@ -399,6 +400,8 @@ async function submitAssign() { .page-card { background: #fff; padding: 16px 20px; border-radius: 6px; border: 1px solid #f0f0f0; } .breadcrumb { font-size: 13px; color: #8c8c8c; margin-bottom: 12px; } .breadcrumb .current { color: #262626; font-weight: 500; } +.breadcrumb .mode-tag { margin-left: 8px; padding: 1px 8px; border-radius: 10px; font-size: 11px; } +.breadcrumb .mode-tag.batch { background: #fdf3e3; color: #b88230; } .info-bar { margin-bottom: 12px; padding: 8px 14px; diff --git a/ry-vue3/src/views/manager/Projects.vue b/ry-vue3/src/views/manager/Projects.vue index dbeaa16..2777a5a 100644 --- a/ry-vue3/src/views/manager/Projects.vue +++ b/ry-vue3/src/views/manager/Projects.vue @@ -467,12 +467,14 @@ function openAssign() { ElMessage.warning('请先勾选项目') return } - // 跳转独立子页面: 单条 vs 批量 + // 跳转独立子页面 /manager/projects/assign, 单条 vs 批量通过 query 区分: + // 单条: ?projectId=X → 子页面 v-if 单条分支 + // 批量: ?projectIds=1,2,3 → 子页面 v-else 批量分支 if (selection.value.length === 1) { router.push({ path: '/manager/projects/assign', query: { projectId: selection.value[0].projectId } }) } else { const ids = selection.value.map(r => r.projectId).join(',') - router.push({ path: '/manager/projects/assign-batch', query: { projectIds: ids } }) + router.push({ path: '/manager/projects/assign', query: { projectIds: ids } }) } } function openBatch(kind) {