3.1 KiB
3.1 KiB
113 Admin:采购价格区仅展示已选明细和映射规格
- 类型:缺陷
- 父级大工单:#96
- 所属 MVP / 版本:#97
- 状态:已完成,用户验收通过
- 日期:2026-08-10
- Gitea 工单:#113
背景与目标
首次实现已经让服务端只返回当前 mapping_option_key 对应的唯一 PDD 规格和价格,但浏览器仍显示未勾选货运单的商品、颜色、尺码和价格行。目标是让单选、批量选择和重复打开弹窗都只显示本次选中的确认行,未选数据不可见也不可提交。
最终方案
- 保留既有服务端实现:每条可采购明细只通过当前
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。
改了哪些
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。
验收结果
| 验收标准 | 结果 |
|---|---|
| 单选时只有当前明细及一个价格输入可见 | 通过(结构、状态和浏览器样式验证) |
| 未选货运单、其他颜色和其他 SKU 不可见 | 通过 |
| 当前已映射颜色尺码只作为一个只读结果展示 | 通过 |
| 未选行保持 hidden,全部 input 保持 disabled | 通过 |
| CSS 不再由 grid 覆盖 hidden | 通过 |
| JavaScript 每次打开按当前选择重算,不沿用旧状态 | 通过(代码回归约束) |
| 映射变化时服务端拒绝旧弹窗 | 通过 |
| Go 1.23.0 全量验证 | 通过 |
测试
- 执行的命令:
GOTOOLCHAIN=go1.23.0 go test . ./service ./handler/web -count=1GOTOOLCHAIN=go1.23.0 go vet ./...GOTOOLCHAIN=go1.23.0 go build ./...GOTOOLCHAIN=go1.23.0 go test ./... -count=1- Microsoft Edge headless:同一元素同时具有
.purchase-confirm-row { display:grid }和hidden时,计算样式为display:none。 git diff --check
- 结果:Admin 全部包测试、构建、vet 和格式检查通过;Edge 浏览器计算样式验证通过。
- 没验证到的部分:未使用生产顺运宝数据在浏览器中人工执行单选、批量和重复打开;未连接 Android 真机,未创建真实未付款订单。
相关提交
66565d5feat: 采购价格仅展示选定规格 (#113)1345803fix: 隐藏未选采购规格行 (#113)