From 71f3fde31c40377e9ea2519e0ef23abb934cd386 Mon Sep 17 00:00:00 2001 From: wuzilong <704541015@qq.com> Date: Thu, 24 Sep 2026 21:07:04 +0800 Subject: [PATCH] docs: add design for miniprogram inventory pound QR popup. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace list「生成地磅单」with a centered pound-slip QR dialog aligned to the transport-plan popup. Co-authored-by: Cursor --- ...-mp-inventory-pound-qrcode-popup-design.md | 104 ++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 docs/superpowers/specs/2026-09-24-mp-inventory-pound-qrcode-popup-design.md diff --git a/docs/superpowers/specs/2026-09-24-mp-inventory-pound-qrcode-popup-design.md b/docs/superpowers/specs/2026-09-24-mp-inventory-pound-qrcode-popup-design.md new file mode 100644 index 000000000..e3002f28e --- /dev/null +++ b/docs/superpowers/specs/2026-09-24-mp-inventory-pound-qrcode-popup-design.md @@ -0,0 +1,104 @@ +# 小程序出入库列表 · 磅单二维码弹窗 + +> 日期:2026-09-24 +> 适用范围:`miniprogram/pages/db/inventory/list.vue` 及新建 db-ui 弹窗组件 +> 视觉权威:运输计划 webview(`web-admin` `DbPoundSlipQrcodeDialog` + `PoundSlipQrcodeView`) +> 关联:`docs/superpowers/specs/2026-09-13-pound-qrcode-public-link-design.md`(公开页/链接语义;本变更不改后端) + +--- + +## 1. 目标与已确认决策 + +### 1.1 目标 + +1. 出入库管理列表卡片去掉「生成地磅单」。 +2. 新增「磅单二维码」主色实心按钮;点击弹出与运输计划一致的磅单二维码卡片,供现场截图保存。 +3. 保留「关联」描边按钮。 + +### 1.2 决策摘要 + +| 项 | 约定 | +|----|------| +| 卡片底部按钮 | 「关联」(plain)+「磅单二维码」(primary) | +| 交互 | 弹窗预览;`@click.stop`,不进入详情 | +| 视觉 | 对齐 `PoundSlipQrcodeView`(黄底车牌、往来单位、物料+数量、备注、日期+单 ID、二维码、「出入库单标识(扫码核验)」) | +| 弹层形态 | **居中**深色遮罩卡片;不使用底部抽屉 `db-popup` | +| 二维码内容 | 出入库单 `id`(与管理端 / 运输计划一致) | +| 二维码生成 | 小程序本地生成(如 `uqrcodejs` 或 canvas);**禁止**依赖外网 `api.qrserver.com` | +| 数据 | 优先列表行字段;缺字段时 `inventoryApi.get(id)` 补全 | +| 后端 | 不改接口、不改 public pound-qr API | + +### 1.3 非目标 + +- 复制二维码图片到剪贴板(微信能力受限;以截图为主) +- 多条出入库择一弹窗(列表一卡一行,直接对应当前 `id`) +- 恢复或迁移「生成地磅单」入口到其它位置 +- 改管理端 / 运输计划 webview 现有实现 + +--- + +## 2. 架构与组件 + +``` +inventory/list.vue + ├─ db-btn「关联」→ 现有关联弹窗(不变) + └─ db-btn「磅单二维码」→ db-pound-qrcode-popup + ├─ 遮罩 + 居中面板 + 标题(入/出库磅单二维码) + ├─ 加载态 / 错误 toast 后关闭 + └─ 磅单卡片 UI + 本地 QR 图(内容 = inventoryId) +``` + +### 2.1 新建 + +| 路径 | 职责 | +|------|------| +| `miniprogram/components/db-ui/db-pound-qrcode-popup.vue` | `show` + `inventoryId`(可选传入行快照);拉取/展示/生成二维码;关闭释放临时图 | + +样式从 `web-admin/src/styles/db-module.scss` 中 `.pound-slip-capture-inline` 及相关规则迁入组件 scoped SCSS(三墙 Token 仅用于页面壳;**磅单卡片保持原黄牌/白卡视觉**,与运输计划一致,不换成薄荷绿)。 + +### 2.2 修改 + +| 路径 | 变更 | +|------|------| +| `miniprogram/pages/db/inventory/list.vue` | 替换按钮;挂载弹窗;删除 `genWeighing` | +| `miniprogram/package.json` | 若采用 npm 库则增加二维码依赖 | + +### 2.3 弹窗字段映射 + +| UI | 来源 | +|----|------| +| 车牌黄牌 | `vehicleNo`(空则「未填车牌」或 `--`,与列表一致即可) | +| 往来单位 | `partnerCompany` | +| 物料名称 | `product` + 规格(若有)+ `({quantity} 吨)` | +| 备注 | `remarks` / `remark`(有则显示) | +| 日期 + 单 ID 行 | `date` + `出库单ID:` / `入库单ID:` + `id` | +| 二维码 | 编码字符串 = `id` | + +标题:`businessType === '出库'` →「出库磅单二维码」,否则「入库磅单二维码」。 + +--- + +## 3. 错误处理 + +| 场景 | 行为 | +|------|------| +| `get` 失败 | `uni.showToast` 失败文案;关闭弹窗 | +| 二维码生成失败 | 同上 | +| 关闭弹窗 | 清空行数据;释放临时图片路径 / Object URL(若有) | + +--- + +## 4. 验收标准 + +1. 列表卡片仅见「关联」「磅单二维码」两个操作按钮;无「生成地磅单」。 +2. 点「磅单二维码」出现居中弹窗,视觉与运输计划磅单弹窗一致(黄牌、字段、二维码区文案)。 +3. 扫码结果为该出入库单 `id`。 +4. 点「关联」、点卡片进详情行为与改前一致。 +5. 弱网 / 无外网二维码服务时仍可生成二维码(本地生成)。 + +--- + +## 5. 实现备注 + +- 不扩大到地磅单列表或其它 db 页,除非后续单独需求。 +- 组件可复用:若其它原生页需要同一弹窗,直接引用 `db-pound-qrcode-popup`。