123 行
5.7 KiB
Markdown
123 行
5.7 KiB
Markdown
---
|
||
schema: "hl-changelog/v2"
|
||
ticket: "frontend"
|
||
title: "出团管理:产品栏删除「导出」按钮(所有角色),行级「新增子订单」对团期管理员隐藏"
|
||
consumer: "admin"
|
||
author: "wx(GIT)"
|
||
change_type: "前端优化"
|
||
backend_status: "not_required"
|
||
gateway_status: "not_required"
|
||
frontend_status: "implemented"
|
||
frontend_owner: "mmg"
|
||
frontend_ref: "df75f2510f9599d95ed999d31e5cff64fc1626bd"
|
||
target_release: "v2.1"
|
||
verified_at: "2026-09-28"
|
||
status_note: "前端已交付(出团管理删导出+团期管理员隐藏新增子订单),详见 hl-admin v2.1 提交 df75f251。"
|
||
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」起的 `<n-button @click="onExport">导出</n-button>`。
|
||
- **删除处理函数**(`: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
|
||
<n-button size="tiny" v-if="!isGroupBatchManager" @click="onAddSubOrder">新增子订单</n-button>
|
||
```
|
||
|
||
- **添加计算属性**:取值 `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
|