diff --git a/changelogs-v2/2026-09/28_frontend_出团管理去掉导出并对团期管理员隐藏新增子订单-前端优化-管理后台.md b/changelogs-v2/2026-09/28_frontend_出团管理去掉导出并对团期管理员隐藏新增子订单-前端优化-管理后台.md new file mode 100644 index 00000000..b8c68a75 --- /dev/null +++ b/changelogs-v2/2026-09/28_frontend_出团管理去掉导出并对团期管理员隐藏新增子订单-前端优化-管理后台.md @@ -0,0 +1,122 @@ +--- +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