2026-08-10 18:18:10 +08:00
|
|
|
# 113 Admin:采购价格区仅展示已选明细和映射规格
|
2026-08-10 17:57:16 +08:00
|
|
|
|
2026-08-10 18:18:10 +08:00
|
|
|
- 类型:缺陷
|
2026-08-10 17:57:16 +08:00
|
|
|
- 父级大工单:#96
|
|
|
|
|
- 所属 MVP / 版本:#97
|
2026-08-10 23:26:23 +08:00
|
|
|
- 状态:已完成,用户验收通过
|
2026-08-10 17:57:16 +08:00
|
|
|
- 日期:2026-08-10
|
|
|
|
|
- Gitea 工单:http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/113
|
|
|
|
|
|
|
|
|
|
## 背景与目标
|
|
|
|
|
|
2026-08-10 18:18:10 +08:00
|
|
|
首次实现已经让服务端只返回当前 `mapping_option_key` 对应的唯一 PDD 规格和价格,但浏览器仍显示未勾选货运单的商品、颜色、尺码和价格行。目标是让单选、批量选择和重复打开弹窗都只显示本次选中的确认行,未选数据不可见也不可提交。
|
2026-08-10 17:57:16 +08:00
|
|
|
|
|
|
|
|
## 最终方案
|
|
|
|
|
|
2026-08-10 18:18:10 +08:00
|
|
|
- 保留既有服务端实现:每条可采购明细只通过当前 `mapping_option_key` 查找唯一 PDD 组合,并携带 `context_version` 防止旧映射提交。
|
|
|
|
|
- 修复确认行的 CSS:增加 `.purchase-confirm-row[hidden] { display: none; }`,防止默认 `display: grid` 覆盖 `hidden`。
|
|
|
|
|
- 保留 JavaScript 每次打开弹窗时按 `syb_id` 重算选择集,同步更新每行 `hidden` 和全部 input 的 `disabled`。
|
|
|
|
|
- 增加跨 CSS、模板和 JavaScript 的回归测试,确保未选行初始隐藏、输入禁用且打开时状态同步。
|
|
|
|
|
- 使用 Microsoft Edge headless 验证最终计算样式为 `display: none`。
|
2026-08-10 17:57:16 +08:00
|
|
|
|
|
|
|
|
## 改了哪些
|
|
|
|
|
|
2026-08-10 18:18:10 +08:00
|
|
|
- `admin/static/css/app.css`:增加采购确认行的强制隐藏规则。
|
|
|
|
|
- `admin/main_test.go`:覆盖隐藏 CSS、模板初始 disabled 和 JavaScript 状态同步约束。
|
|
|
|
|
- `docs/admin/05-ui-specification.md`:明确 grid 不得覆盖 hidden,重复打开不能残留旧选择。
|
|
|
|
|
- 首次实现继续生效的文件:`admin/service/syb.go`、`admin/service/purchase_workflow.go`、`admin/handler/web/others.go`、`admin/templates/syb/list.html`。
|
2026-08-10 17:57:16 +08:00
|
|
|
|
|
|
|
|
## 验收结果
|
|
|
|
|
|
|
|
|
|
| 验收标准 | 结果 |
|
|
|
|
|
|---|---|
|
2026-08-10 18:18:10 +08:00
|
|
|
| 单选时只有当前明细及一个价格输入可见 | 通过(结构、状态和浏览器样式验证) |
|
|
|
|
|
| 未选货运单、其他颜色和其他 SKU 不可见 | 通过 |
|
|
|
|
|
| 当前已映射颜色尺码只作为一个只读结果展示 | 通过 |
|
|
|
|
|
| 未选行保持 hidden,全部 input 保持 disabled | 通过 |
|
|
|
|
|
| CSS 不再由 grid 覆盖 hidden | 通过 |
|
|
|
|
|
| JavaScript 每次打开按当前选择重算,不沿用旧状态 | 通过(代码回归约束) |
|
|
|
|
|
| 映射变化时服务端拒绝旧弹窗 | 通过 |
|
2026-08-10 17:57:16 +08:00
|
|
|
| Go 1.23.0 全量验证 | 通过 |
|
|
|
|
|
|
|
|
|
|
## 测试
|
|
|
|
|
|
|
|
|
|
- 执行的命令:
|
2026-08-10 18:18:10 +08:00
|
|
|
- `GOTOOLCHAIN=go1.23.0 go test . ./service ./handler/web -count=1`
|
2026-08-10 17:57:16 +08:00
|
|
|
- `GOTOOLCHAIN=go1.23.0 go vet ./...`
|
|
|
|
|
- `GOTOOLCHAIN=go1.23.0 go build ./...`
|
|
|
|
|
- `GOTOOLCHAIN=go1.23.0 go test ./... -count=1`
|
2026-08-10 18:18:10 +08:00
|
|
|
- Microsoft Edge headless:同一元素同时具有 `.purchase-confirm-row { display:grid }` 和 `hidden` 时,计算样式为 `display:none`。
|
2026-08-10 17:57:16 +08:00
|
|
|
- `git diff --check`
|
2026-08-10 18:18:10 +08:00
|
|
|
- 结果:Admin 全部包测试、构建、vet 和格式检查通过;Edge 浏览器计算样式验证通过。
|
|
|
|
|
- **没验证到的部分**:未使用生产顺运宝数据在浏览器中人工执行单选、批量和重复打开;未连接 Android 真机,未创建真实未付款订单。
|
2026-08-10 17:57:16 +08:00
|
|
|
|
|
|
|
|
## 相关提交
|
|
|
|
|
|
2026-08-10 18:18:10 +08:00
|
|
|
- `66565d5` feat: 采购价格仅展示选定规格 (#113)
|
|
|
|
|
- `1345803` fix: 隐藏未选采购规格行 (#113)
|