From 9a1e43e3715d81a16de763cfaaf3818ef788e028 Mon Sep 17 00:00:00 2001 From: zlwu <704541015@qq.com> Date: Sun, 19 Jul 2026 16:35:37 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E5=85=A5=E5=BA=93/=E5=87=BA=E5=BA=93?= =?UTF-8?q?=E5=8D=95=E7=8E=B0=E5=9C=BA=E9=93=BE=E6=8E=A5=E4=B8=8E=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E5=AE=8C=E5=96=84=E8=AE=BE=E8=AE=A1=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 记录公共页对齐 Demo、管理端列表/弹窗/计划回传补取送货与产品字段的方案 A,供实现引用。 Co-authored-by: Cursor --- ...2026-07-19-pl-outbound-site-link-demo.html | 813 ++++++++++++++++++ ...pl-io-order-site-link-enrichment-design.md | 153 ++++ 2 files changed, 966 insertions(+) create mode 100644 docs/superpowers/brainstorm/2026-07-19-pl-outbound-site-link-demo.html create mode 100644 docs/superpowers/specs/2026-07-19-pl-io-order-site-link-enrichment-design.md diff --git a/docs/superpowers/brainstorm/2026-07-19-pl-outbound-site-link-demo.html b/docs/superpowers/brainstorm/2026-07-19-pl-outbound-site-link-demo.html new file mode 100644 index 000000000..aea2b60cc --- /dev/null +++ b/docs/superpowers/brainstorm/2026-07-19-pl-outbound-site-link-demo.html @@ -0,0 +1,813 @@ + + + + + + 现场链接 · 出库单公共页 Demo + + + +
+

现场链接 · 出库单公共页 Demo

+

+ 对照「旧版运输现场」与「当前出库单现场链接」差异,提案页补回取送货信息,并美化「产品实际数量」 + (单位显示「吨」、展示包装规格)。可在浏览器直接打开本文件预览。 +

+
+ 路由 /#/public/pl/outbound/:token + 对齐旧版 site 信息密度 + 保留新版:填实际数量 + 回执 +
+
+ +
+ + + +
+ +
+ +
+
提案 · 完善后的现场链接
+
+ +
+
+
业务类型出库
+
日期2026-07-19
+
往来单位安徽某某化工有限公司
+
车牌皖H·A1234
+
计划号YS20260719001
+
单号CK20260719003
+
状态进行中
+
备注请按计划数量装车,现场核对包装规格。
+
+ +
+
取货信息
+
+ 取货地址 + + + 安庆市迎江区某某路 88 号仓库 + + + +
+
取货时间2026-07-19 09:30
+
注意事项需佩戴安全帽,进厂登记。
+
+ +
+
送货信息
+
+ 送货地址 + + + 合肥市包河区某某工业园 3 栋 + + + +
+
送达时间2026-07-19 15:00
+
注意事项卸货区靠北门,联系仓库张工。
+
+ +
+
产品实际数量
+ +
+
+
工业级尿素
+ 产品 1/2 +
+
+
+
规格型号
+
46.4%
+
+
+
包装规格
+
50kg/袋
+
+
+
计划数量
+
32.000 吨
+
+
+
+
+ 实际数量 + 请按现场实装填写 +
+
+ + 吨 +
+
单位已按字典转中文(dun → 吨),勿直接展示字典码
+
+
+ +
+
+
片碱
+ 产品 2/2 +
+
+
+
规格型号
+
99%
+
+
+
包装规格
+
25kg/袋
+
+
+
计划数量
+
8.500 吨
+
+
+
+
+ 实际数量 + 请按现场实装填写 +
+
+ + 吨 +
+
+
+
+ +
+
回执上传
+
+
磅单.jpg
+
+上传
+
+
+ +
+
现场备注
+
+ +
+
+ +
+
上次保存2026-07-19 10:21
+
+
+ +
+
+ + +
+
现状 · 数据偏少
+
+ +
+
+
单号CK20260719003
+
状态进行中
+
往来单位安徽某某化工有限公司
+
车牌皖H·A1234
+
计划号YS20260719001
+
+ +
+
产品实际数量
+
+
+ 工业级尿素 + 46.4% +
+
计划 32 dun
+
+ 实际数量 + +
+
+
+
+ 片碱 + 99% +
+
计划 8.5 dun
+
+ 实际数量 + +
+
+
+ +
+
回执上传
+
+
+上传
+
+
+ +
+
现场备注
+
+ +
+
+
+ +
+
+ + +
+
左 · 现状
+
+ +
+
+
单号CK20260719003
+
状态进行中
+
往来单位安徽某某化工…
+
车牌皖H·A1234
+
计划号YS20260719001
+
+
+
产品实际数量
+
+
工业级尿素 46.4%
+
计划 32 dun ← 字典码未转义
+
+ 实际数量 + +
+
+
+
+
回执 / 备注
+
+
+
+ +
+
+ + +
+
右 · 提案
+
+ +
+
+
业务类型出库
+
日期2026-07-19
+
往来单位安徽某某化工…
+
车牌皖H·A1234
+
计划号YS20260719001
+
+
+
取货 / 送货
+
取货迎江区某某路…
+
送货包河区工业园…
+
+
+
产品实际数量
+
+
+
工业级尿素
+ 1/2 +
+
+
+
规格
+
46.4%
+
+
+
包装规格
+
50kg/袋
+
+
+
计划数量
+
32.000 吨
+
+
+
+
实际数量
+
+ + 吨 +
+
+
+
+
+ +
+
+
+ +
+

本 Demo 相对现状的改动要点

+ +
+ + + + diff --git a/docs/superpowers/specs/2026-07-19-pl-io-order-site-link-enrichment-design.md b/docs/superpowers/specs/2026-07-19-pl-io-order-site-link-enrichment-design.md new file mode 100644 index 000000000..9c75526a1 --- /dev/null +++ b/docs/superpowers/specs/2026-07-19-pl-io-order-site-link-enrichment-design.md @@ -0,0 +1,153 @@ +# 入库/出库单信息完善与现场链接对齐设计 + +**日期:** 2026-07-19 +**状态:** 已确认 +**范围:** web-admin 公共现场页 + 管理端入库/出库单(列表 / 编辑弹窗 / 计划查看回传)+ backend PL IO 公共与管理 API +**视觉参考:** `docs/superpowers/brainstorm/2026-07-19-pl-outbound-site-link-demo.html`「提案(完善后)」 +**界面模式:** 列表 P01;编辑弹窗 Fresh Mint `dialog-form-layout`;公共页对齐既有 `public/pl/site` + +--- + +## 1. 背景与问题 + +出入库单上线后,现场链接与管理端展示均为「最小快照」,相对旧版「运输现场」公共页信息明显偏少: + +| 场景 | 现状缺口 | +|------|----------| +| 现场链接 `/#/public/pl/inbound\|outbound/:token` | 无取/送货、无包装规格;单位展示字典码 `dun`;产品区样式简陋 | +| 管理端入库/出库列表与编辑弹窗 | 无取/送货;产品仅名称/规格/计划/实际 | +| 计划查看「入库/出库回传」 | 同上,字段不齐 | + +用户确认范围 **C**:公共页按 Demo 完善 + 管理端列表 / 编辑弹窗 / 计划查看回传一并补齐。 + +--- + +## 2. 已确认决策 + +| # | 决策 | 选择 | +|---|------|------| +| D1 | 数据组装策略 | **读时 enrichment**(方案 A):从 `pl_plan` / `pl_plan_product` 组装;本期 **不做** 明细表 DDL 快照列 | +| D2 | 入库 / 出库 | **对称**;公共页共用 `PublicIoOrderPage`;管理端共用 `IoOrderListPage` | +| D3 | 管理端表面 | **C**:列表 + 编辑弹窗 + `PlPlanViewTabs` 回传区 | +| D4 | 单位展示 | 公共页与管理端展示 `crm_product_unit` **标签**(`dun` → `吨`);库内仍存字典码 | +| D5 | 列表产品列 | 列表保持 `productSummary` 摘要;**不**把 8 个产品字段全铺进列表 | +| D6 | 列表物流列 | 增加取货地址、送货地址(或送货点名称优先)摘要列 | +| D7 | 可编辑字段 | 仅 `actualQty`、现场备注、附件、状态(既有规则);取送货与产品扩展字段 **只读** | + +--- + +## 3. 后端 + +### 3.1 Enrichment 输出字段 + +在 `order_header_to_dict` / 公共 `_build_page` / 管理端 get·list 响应中统一附加(可抽共享 helper): + +**主单(来自 `pl_plan`,无计划则空)** + +| 字段(camelCase) | 来源 | +|-------------------|------| +| `businessType` | 计划业务类型展示名或既有枚举文案 | +| `remark` | `plan.remark`(计划备注;与现场备注区分) | +| `pickupAddress` / `pickupLng` / `pickupLat` / `pickupTime` / `pickupNotes` | 计划取货 | +| `destinationName` / `destinationAddress` / `destinationLng` / `destinationLat` / `deliveryTime` / `destinationNotes` | 计划送货 | +| `planDate` | 已有快照,保留 | + +列表可只保证:`pickupAddress`、`destinationAddress`(展示用:`destinationAddress \|\| destinationName`)。 + +**明细(来自 `pl_plan_product` via `plan_product_id`)** + +| 字段 | 说明 | +|------|------| +| `productNo` | 产品编号 | +| `productName` | 已有 | +| `specification` | 已有(型号/规格,来自 `model`) | +| `unit` | 库内码;管理端可用字典转标签,或额外 `unitLabel` | +| `unitLabel` | 字典标签,缺省回退码或「吨」 | +| `planQty` / `actualQty` | 已有 | +| `packageSpec` | 包装规格 | +| `remark` | 产品行备注 | + +公共页:响应中 `unit` 直接返回 **已转义标签**(对齐旧 `public_site._resolve_unit_label`),避免免登录页拉字典。 + +### 3.2 改动文件(示意) + +- `backend/app/services/pl_io_order_service.py` — enrichment + `order_header_to_dict` items 扩展 +- `backend/app/api/pl/public_io_order.py` — `_build_page` 补全取送货与单位转义(可复用 service helper) +- `backend/app/api/pl/io_order.py` — 详情/列表走同一序列化 +- 可选:schema `IoOrderItemRead` / 前端类型同步 + +### 3.3 非目标 + +- `pl_inbound_order_item` / `pl_outbound_order_item` 加 `package_spec` 等列 +- 改旧 `/public/pl/site` 历史链路(除非后续单独需求) +- 司机运输公共页 + +--- + +## 4. 前端 · 现场公共页 + +**文件:** `web-admin/src/views/public/pl/_shared/PublicIoOrderPage.vue`、`api/pl/public-io-order.ts` +**样式参考:** Demo + 既有 `public/pl/site`、`public-mobile-vant.scss` + +区块顺序: + +1. 概况:业务类型、日期、往来单位、车牌、计划号、单号、状态、计划备注(有则显示) +2. 取货信息:地址 + 导航、时间、注意事项 +3. 送货信息:地址 + 导航、时间、注意事项 +4. 产品实际数量:每产品卡片 — 名称、规格型号、包装规格、计划数量+单位标签、实际数量输入 +5. 回执上传、现场备注、上次保存 +6. 底部提交 + +入库/出库仅 `navTitle` / 业务类型文案不同。 + +--- + +## 5. 前端 · 管理端列表(`IoOrderListPage`) + +在现有列后增加: + +- `取货地址` ← `pickupAddress` +- `送货地址` ← `destinationAddress \|\| destinationName` + +均 `min-width` + `show-overflow-tooltip`。其余列不变。 + +--- + +## 6. 前端 · 编辑弹窗(`IoOrderListPage`) + +- 宽度约 **960–1080px**,`dialog-form-layout`,`label-position="top"`,`form-grid-2` +- 主信息只读区增加取货/送货字段(长地址 `form-col-span-2`) +- 产品表列(固定顺序): + +| 产品编号 | 产品名称 | 型号/规格 | 单位 | 计划数量 | 实际数量 | 包装规格 | 备注 | + +- 实际数量:`el-input-number`,作废不可编辑 +- 单位列展示 `unitLabel`(或字典 `getLabel`) + +--- + +## 7. 前端 · 计划查看回传(`PlPlanViewTabs`) + +- `ioOrderViewFields` 补取送货相关 KV +- 只读子表与快捷编辑弹窗产品表列与第 6 节对齐 + +--- + +## 8. 验收要点 + +| ID | 场景 | +|----|------| +| V1 | 出库现场链接:有取/送货、导航;产品卡片含包装规格;计划数量单位为「吨」非 `dun` | +| V2 | 入库现场链接与出库对称 | +| V3 | 入库/出库列表可见取货、送货地址列 | +| V4 | 编辑弹窗主信息含取送货;产品 8 列齐全;实际数量可保存 | +| V5 | 计划查看回传区字段与弹窗对齐 | +| V6 | 已作废单不可提交现场 / 管理端不可改数量(既有行为保持) | + +--- + +## 9. 决策记录 + +- 视觉 Demo:`docs/superpowers/brainstorm/2026-07-19-pl-outbound-site-link-demo.html` +- 管理端表面:用户选 **C** +- 组装策略:用户确认方案 **A**(读时 enrichment)