121 行
5.4 KiB
Markdown
121 行
5.4 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: "verified"
|
||
frontend_owner: "mmg"
|
||
frontend_ref: "3684d137617f4432f855cecb9df6bd05d192b239"
|
||
target_release: ""
|
||
verified_at: "2026-09-17"
|
||
status_note: "纯前端条目,后端零改动。SuppliesPanel.vue:76 注释「调整数量 / 删除行 / 手工录入待后端补契约后接入」已过时——三个能力后端均已上线(改数量 PUT、删除 DELETE、手工录入复用 POST 的 suppliesName 分支,#6986)。原型「物资清单」Tab 的添加 / 删除操作因此可直接接入。[mmg 2026-09-17 交付] 全部落地:①orderV2GroupBatch 加 getGroupBatchSupplies/updateGroupBatchSuppliesQuantity/deleteGroupBatchSupplies(写路径不带 groupBatchId,雪花字符串,写关去重);②SuppliesPanel 清单源切换为 GET supplies(candidates 只留 PickerModal 内部),数量列行内 NInputNumber + 行尾 NPopconfirm 删除 + 手工录入按钮,三能力与确认物资共用 MATERIAL_PREPARING 阶段门,589520/589507 拦截器透 message 不建字典;③新建 SuppliesManualModal(NForm rules 必填,body 不传 suppliesResourceId)。api spec 3 例 + 两组件 spec 12 例,scoped checkpoint 13 项全绿。"
|
||
updated_at: "2026-09-17"
|
||
base: "dev-v3"
|
||
---
|
||
|
||
# 团期物资清单补改数量删除与手工录入(前端优化)
|
||
|
||
> **服务**: hl-order-service-v3(后端零改动)
|
||
> **页面**: 管理后台 `/order-v2/batch` → 团期详情 → 物资 Tab
|
||
> **组件**: `src/views/order-v2/batch/detail/components/SuppliesPanel.vue`、`SuppliesPickerModal.vue`
|
||
> **原型**: `团期需求1/_verify/proto_local/batchDetail.jsx`「物资清单」Tab
|
||
> **前端基线**: `mmg/hl-ui` v2.1 @ `15e3d7d`
|
||
> **日期**: 2026-09-17
|
||
> **影响范围**: 仅前台;无端点、无出入参、无路由、无 DDL 变化
|
||
|
||
---
|
||
|
||
## ⚠️ 关键变化
|
||
|
||
🔵 **组件注释已过时。** `SuppliesPanel.vue:76` 写着「调整数量 / 删除行 / 手工录入**待后端补契约**后接入」,
|
||
这三项后端都已上线,可以直接接。
|
||
|
||
---
|
||
|
||
## 一、原型要求 vs 当前渲染
|
||
|
||
| 原型功能 | 当前前端 | 后端接口 |
|
||
|---|---|---|
|
||
| 物资清单表 | ✅ 已有(候选列表 `added` 标记) | `GET …/{groupBatchId}/supplies/candidates` |
|
||
| 从备品库加入 | ✅ 已有 | `POST …/{groupBatchId}/supplies`(传 `suppliesResourceId`) |
|
||
| **添加物资(名称 + 数量规格)手工录入** | ❌ 缺 | 同一个 `POST`,传 `suppliesName` 不传 `suppliesResourceId` |
|
||
| **行内改数量** | ❌ 缺 | `PUT …/supplies/{batchSuppliesId}/quantity` |
|
||
| **删除物资(行尾 ✕)** | ❌ 缺 | `DELETE …/supplies/{batchSuppliesId}` |
|
||
| 确认物资清单 | ✅ 已有 | `POST …/{groupBatchId}/confirm-material` |
|
||
|
||
接口前缀均为 `/v3/admin/order/group-batch`。
|
||
|
||
---
|
||
|
||
## 二、本次调整
|
||
|
||
### 2.1 已选清单改用团期物资列表
|
||
|
||
改数量、删除都要行 ID。建议已选清单直接读:
|
||
|
||
```http
|
||
GET /v3/admin/order/group-batch/{groupBatchId}/supplies
|
||
```
|
||
|
||
每行字段:`id`(即 `batchSuppliesId`)、`suppliesResourceId`(手工录入行为 null)、`suppliesName`、`category`、`hasCost`、`billingType`、`unitPrice`、`quantity`、`sortOrder`、`remark`。
|
||
|
||
候选接口的 `batchSuppliesId` 也能用,但手工录入的行不在候选库里,只有这个列表能看到。
|
||
|
||
### 2.2 手工录入
|
||
|
||
```http
|
||
POST /v3/admin/order/group-batch/{groupBatchId}/supplies
|
||
Content-Type: application/json
|
||
|
||
{ "suppliesName": "急救包", "category": "…", "quantity": 2, "remark": "规格:大号" }
|
||
```
|
||
|
||
- `suppliesName` 与 `suppliesResourceId` **二选一**:不传库 ID 时名称必填,否则报「备品名称不能为空(未指定备品库 ID 时必填)」
|
||
- `quantity` 必填
|
||
- 可选:`category`(字典 `supplies_category`)、`hasCost`、`billingType`、`unitPrice`、`sortOrder`、`remark`
|
||
- 原型「数量规格」一栏:数量进 `quantity`,规格文字进 `remark`
|
||
|
||
### 2.3 改数量
|
||
|
||
```http
|
||
PUT /v3/admin/order/group-batch/supplies/{batchSuppliesId}/quantity
|
||
Content-Type: application/json
|
||
|
||
{ "quantity": 3 }
|
||
```
|
||
|
||
⚠️ 路径里**没有** `groupBatchId`。
|
||
|
||
### 2.4 删除
|
||
|
||
```http
|
||
DELETE /v3/admin/order/group-batch/supplies/{batchSuppliesId}
|
||
```
|
||
|
||
软删,删除后重新拉 2.1 的列表。
|
||
|
||
### 2.5 共同约束
|
||
|
||
- **阶段门**:三个写操作只在团期 `batchStatus = MATERIAL_PREPARING` 时放行,其他阶段返回 `589520`「物资清单只能在『准备物资』阶段配置」。按钮按同一条件显隐或置灰,与现有「确认物资」一致
|
||
- **权限**:写操作 `group-batch:manage`,列表 `group-batch:view`(团期管理员均已授)
|
||
- 物资确认后是否仍允许改:后端只看阶段(jw 2026-09-02 / 09-03 两次确认「只要还在准备物资就放行」),**前端不要另加只读判断**
|
||
|
||
---
|
||
|
||
## 三、不在本条范围
|
||
|
||
- 物资确认、从备品库选择:已上线,不改
|
||
- 备品库本身的维护(资源 → 备品):另一模块
|
||
|
||
---
|
||
|
||
## 四、验证建议
|
||
|
||
1. 在 TEST 物料准备中的团里手工录入「急救包 ×2」,列表出现该行,`suppliesResourceId` 为空
|
||
2. 改数量为 3,刷新后仍为 3;删除后该行消失
|
||
3. 找一个资源准备中的团,三个写按钮不可用;强行调用返回 `589520`
|