fix: 代理系列授权店铺
Some checks failed
构建并部署前端到测试环境 / build-and-deploy (push) Failing after 2m0s

This commit is contained in:
sexygoat
2026-05-09 16:13:11 +08:00
parent 3c71ae0004
commit 73ce9af11a
26 changed files with 833 additions and 807 deletions

View File

@@ -0,0 +1,30 @@
# Change: 修正代理系列授权套餐编辑中的成本价回填与提交一致性
## Why
当前“代理系列授权套餐列表”页面在编辑已授权套餐时,成本价输入框没有稳定使用列表行中的当前成本价作为初始值;同时,用户修改输入框后,前端提交给 `manageGrantPackages` 接口的 `cost_price` 可能退化为默认值 `0`,会直接把代理授权套餐的成本价错误覆盖。
这类问题会导致代理系列授权价格被误改,属于高风险的业务数据错误,需要明确前端在编辑态下的回填来源和提交流程。
## What Changes
- 为代理系列授权中的“编辑授权套餐”交互补充统一规范:
- 编辑弹窗打开时,成本价必须使用当前被编辑套餐记录中的 `cost_price` 回填
- 该回填行为不能依赖“可选套餐列表”是否已预先加载
- 用户在输入框中修改后的值,保存时必须按“元转分”写入 `manageGrantPackages` 请求体中的 `cost_price`
- 保存时不得回退为表单默认值 `0`,除非用户实际输入的就是 `0` 且通过业务校验
- 约束同一能力下多个编辑入口保持一致行为,包括:
- 代理系列授权套餐列表页
- 代理系列授权页面中的套餐管理弹窗
- 不修改后端接口路径、字段命名或请求结构
## Impact
- Affected specs:
- `shop-series-grant-packages`
- Affected code:
- `src/views/package-management/series-grants/packages.vue`
- `src/views/package-management/series-grants/index.vue`
- Dependencies:
- `GET /api/admin/shop-series-grants/{id}` 继续返回授权套餐的 `cost_price`
- `PUT /api/admin/shop-series-grants/{id}/packages` 继续接收 `packages[].package_id``packages[].cost_price`

View File

@@ -0,0 +1,45 @@
## ADDED Requirements
### Requirement: 编辑授权套餐弹窗必须回填当前成本价
系统 SHALL 在编辑代理系列授权中的已授权套餐时,使用当前套餐记录中的成本价作为编辑弹窗的初始值。
#### Scenario: 从套餐列表页编辑时回填列表中的成本价
- **GIVEN** 用户进入代理系列授权套餐列表页
- **AND** 某条已授权套餐记录的 `package_id``10`
- **AND** 该记录当前 `cost_price``1234`
- **WHEN** 用户点击该记录的“编辑”操作
- **THEN** 系统打开编辑弹窗
- **AND** 成本价输入框显示 `12.34`
- **AND** 该回填值来自当前列表行数据而不是表单默认值
#### Scenario: 编辑弹窗回填不依赖可选套餐列表预加载
- **GIVEN** 用户进入代理系列授权中的套餐编辑入口
- **AND** 当前页面尚未预先加载 `availablePackages`
- **AND** 被编辑套餐记录当前 `cost_price``2560`
- **WHEN** 用户打开编辑弹窗
- **THEN** 系统仍然显示成本价输入框初始值为 `25.60`
- **AND** 系统不得因为 `availablePackages` 为空而将初始值退回为 `0`
### Requirement: 编辑授权套餐时必须提交用户修改后的成本价
系统 SHALL 在保存代理系列授权中的已授权套餐时,将用户当前输入的成本价按“元转分”写入请求体。
#### Scenario: 保存编辑后的成本价时按元转分提交
- **GIVEN** 用户正在编辑 `package_id``10` 的已授权套餐
- **AND** 编辑弹窗中的成本价初始值为 `12.34`
- **WHEN** 用户将成本价修改为 `15.80` 元并点击保存
- **THEN** 系统调用 `PUT /api/admin/shop-series-grants/{id}/packages`
- **AND** 请求体中的 `packages[0].package_id``10`
- **AND** 请求体中的 `packages[0].cost_price``1580`
#### Scenario: 未清空输入时保存不得提交默认零值
- **GIVEN** 用户正在编辑一条已有成本价的授权套餐
- **AND** 成本价输入框中存在通过表单校验的非零值
- **WHEN** 用户点击保存
- **THEN** 系统提交的 `packages[0].cost_price` 必须等于当前输入值换算后的分值
- **AND** 系统不得提交表单初始化默认值 `0`

View File

@@ -0,0 +1,6 @@
## 1. Implementation
- [x] 1.1 调整代理系列授权套餐编辑弹窗的初始化逻辑,确保编辑态优先使用当前授权套餐行中的成本价回填
- [x] 1.2 消除对 `availablePackages` 预加载状态的错误依赖,保证编辑弹窗在任意入口下都能拿到正确的初始成本价
- [x] 1.3 调整保存逻辑,确保提交给 `manageGrantPackages``cost_price` 来自用户当前输入值,并按元转分传递而不是默认 `0`
- [x] 1.4 验证套餐列表页和代理系列授权管理弹窗两个入口在编辑已授权套餐时都能正确回填并提交成本价