Files
cmautobuy/docs/task/113-采购价格仅展示选定颜色.md
T

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=1
    • GOTOOLCHAIN=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 真机,未创建真实未付款订单。

相关提交

  • 66565d5 feat: 采购价格仅展示选定规格 (#113)
  • 1345803 fix: 隐藏未选采购规格行 (#113)