--- schema: "hl-changelog/v2" ticket: "frontend" title: "出团管理:产品栏删除「导出」按钮(所有角色),行级「新增子订单」对团期管理员隐藏" consumer: "admin" author: "wx(GIT)" change_type: "前端优化" backend_status: "not_required" gateway_status: "not_required" frontend_status: "pending" frontend_owner: "mmg" frontend_ref: "" target_release: "" verified_at: "" status_note: "" updated_at: "2026-09-28" base: "dev-v3" --- # 前端优化:出团管理删除导出按钮、隐藏团期管理员的新增子订单按钮 ## ⚠️ 关键变化 **改动一:删除产品栏头部「导出」按钮(所有角色)** 出团管理页(页面文件 `src/views/order-v2/batch/index.vue`)产品栏头部的「导出」按钮已无业务用途,删除。 **改动二:行级「新增子订单」按钮对团期管理员隐藏** 同页出团列表的行级操作「新增子订单」按钮仅对团期管理员隐藏,管理员、超级管理员等其他角色照常显示。 团期管理员建单会被后端 #8154 已上线的守卫(错误码 `581008`)拒绝,隐藏按钮避免用户触发必然失败的流程。 **后端零改动**:本条两个改动均属前端表现层,后端端点、参数、响应、错误码无变化。 --- ## 一、背景 wx 2026-09-28 在出团管理页提出两条: 1. 「导出没用 删除」; 2. 「团期管理员不能新增订单(按钮去掉)」。 后端建单接口 #8154(提交 c1264d610,2026-09-22)已上线团期管理员写守卫, 该角色调用 `POST /v3/admin/order` 时被 `OrderViewGuard.assertNotGroupBatchManagerWrite()` 拒绝, 返回错误码 `581008`。前端隐藏该角色的新增子订单按钮,与后端守卫对齐。 --- ## 二、改动要点 ### 改动一:删除导出按钮 **文件**:`src/views/order-v2/batch/index.vue` - **删除按钮**(`:22-33`):产品栏头部注释「导出 GB-ADM-008」起的 `导出`。 - **删除处理函数**(`:534-567`):`exporting` 状态变量与 `onExport()` 函数整体删除。 - **删除 import**(`:284`):`import { exportGroupBatch } from '@/api/orderV2GroupBatch'`。 - **删除 API 函数**(全仓):`src/api/orderV2GroupBatch.js:302` 的 `exportGroupBatch` 函数整体删除 (删除按钮后全仓无其他调用方)。 **⚠️ 不涉及**:团期详情「核单」页签的导出(`src/api/order-v3/groupBatchAudit.js:240` 的 `exportGroupBatchAudit` 与 `src/views/order-v2/batch/detail/components/audit/AuditTab.vue`),那是另一个独立接口 `GET /v3/admin/order/group-batch/{groupBatchId}/audit/export`,保留。 ### 改动二:团期管理员隐藏「新增子订单」按钮 **文件**:`src/views/order-v2/batch/components/PeriodRow.vue` - **添加条件渲染**(`:163-169` 按钮): ```vue 新增子订单 ``` - **添加计算属性**:取值 `computed(() => userStore.isGroupBatchManager)` (写法参考同模块 `src/views/order-v2/batch/detail/index.vue:21` 的「退单户」按钮)。 - **判定来源**:`userStore` 读取自 `src/stores/user.js:207` 的 `isGroupBatchManager`, 判定函数 `src/utils/orderAccess.js:8` 的 `isGroupBatchManagerRole`。 - **补单测**:`src/views/order-v2/batch/components/__tests__/PeriodRow.spec.js:79`(「只保留新增子订单」用例) 与 `:101`(深链取 `productBatchId`)添加团期管理员角色下该按钮**不渲染**的用例; 非团期管理员的原有用例保持。 **后端依据**:建单接口 `POST /v3/admin/order` 自 #8154 起在 `OrderController.createOrder` 入口调 `OrderViewGuard.assertNotGroupBatchManagerWrite()`,团期管理员(角色 `GROUP_BATCH_MANAGER`)返错误码 `581008`。 即团期管理员现在点此按钮会在向导最后一步提交时被拒绝;隐藏按钮避免这一必然失败的流程。 **范围**:仅对团期管理员隐藏,管理员、超级管理员、定制师等其他角色照常显示,后端对他们仍放行建单。 #7143 中的深链与 `useOrderDeepLink.js` 继续有用,不动。 --- ## 三、验证检查清单 - [ ] 所有角色进入出团管理页,产品栏头部无「导出」按钮 - [ ] 团期管理员登录出团管理页,行级操作无「新增子订单」按钮(「进入团期」等其他操作照常) - [ ] 超级管理员、管理员登录,行级仍显示「新增子订单」按钮,点击进向导正常 - [ ] 超级管理员点「新增子订单」进向导后,产品 / 班期 / 出团日期仍按该行预填(#7143 深链不受影响) - [ ] 团期详情「核单」页签的导出按钮不受影响,照常可用 --- ## 四、不影响范围 - **后端零改动**:建单接口参数、响应、错误码一律不变,团期管理员的 581008 拒绝逻辑原样有效。 - 出团列表行的其他操作(进入团期、展开子订单)不变。 - 小程序端不涉及。 - 出团管理页的其他功能(产品切换、状态页签、筛选、统计条)不受影响。 --- ## 五、相关工单与文档 - 诉求:wx 2026-09-28 对出团管理页截图提出 - 背景工单:#8154(团期管理员只读 + 写端点守卫)、#7143(新增子订单深链预填) - 后端源码:`hl-order-service-v3/src/main/java/com/hulalv/order/core/controller/admin/OrderController.java` 的 `createOrder` 方法,守卫 `hl-order-service-v3/src/main/java/com/hulalv/order/core/guard/OrderViewGuard.java` 的 `assertNotGroupBatchManagerWrite()` ## 联系人 前端:mmg | 后端:wx