|
|
@@ -0,0 +1,83 @@
|
|
|
+# 小程序 · 司机运输计划单「复制发群」产品行拆分
|
|
|
+
|
|
|
+> **日期**: 2026-10-13
|
|
|
+> **状态**: 已确认(待用户审阅本文件后进入实现计划)
|
|
|
+> **范围**: 仅 `miniprogram/utils/plDriverPlanCopy.js` 的产品行输出格式
|
|
|
+> **前置**: `docs/superpowers/specs/2026-10-12-mini-pl-driver-plan-copy-text-enrich-design.md`
|
|
|
+> **关系**: 本设计**仅替换**前置文档中的「产品行格式(D5)」;头信息、区块顺序、客户分段、空值、附件、入口流程等决策仍有效。
|
|
|
+
|
|
|
+## 1. 目标
|
|
|
+
|
|
|
+群聊扫读时,将每个产品的「产品信息 / 计划数量 / 实际数量」拆成三行,避免单行过长。
|
|
|
+
|
|
|
+## 2. 已确认决策
|
|
|
+
|
|
|
+| # | 项 | 决策 |
|
|
|
+|---|-----|------|
|
|
|
+| D1 | 范围 | **只改小程序** `plDriverPlanCopy.js`;不改管理端、不改列表/详情入口 |
|
|
|
+| D2 | 多产品间距 | **方案 A**:连续三行一组,组与组之间**不空行** |
|
|
|
+| D3 | 实现路径 | 只改产品行生成(`formatProductLine` → 输出三行);`appendInfoSection` / 头信息 / 剪贴板流程不变 |
|
|
|
+| D4 | 空值 | 仍统一 `—`(数量空时该侧写 `—`,不拼单位) |
|
|
|
+| D5 | 无产品站 | 仍保留 `{客户名}:` + 下一行 `- —`(单行占位,不拆三行) |
|
|
|
+
|
|
|
+## 3. 非目标
|
|
|
+
|
|
|
+- 不修改 `driver-plan/list.vue` / `detail.vue`
|
|
|
+- 不修改后端 API / schema
|
|
|
+- 不改加油登记、ETC、管理端等其它「复制发群」
|
|
|
+- 不新增永久测试文件(可用一次性 Node 断言脚本验证后删除,与前置计划一致)
|
|
|
+
|
|
|
+## 4. 复制文案模板(定稿)
|
|
|
+
|
|
|
+```
|
|
|
+序号:128
|
|
|
+计划编号:YSJH20260409001
|
|
|
+车辆:沪A12345
|
|
|
+送货信息:
|
|
|
+甲客户:
|
|
|
+- 产品信息:工业酒精 95% 吨桶
|
|
|
+- 计划数量:12 吨
|
|
|
+- 实际数量:11.9 吨
|
|
|
+乙客户:
|
|
|
+- 产品信息:工业酒精 95% 吨桶
|
|
|
+- 计划数量:8 吨
|
|
|
+- 实际数量:7.9 吨
|
|
|
+- 产品信息:甲醇 99.9% 吨桶
|
|
|
+- 计划数量:2 吨
|
|
|
+- 实际数量:2 吨
|
|
|
+装货信息:
|
|
|
+某某化工厂:
|
|
|
+- 产品信息:工业酒精 95% 吨桶
|
|
|
+- 计划数量:20 吨
|
|
|
+- 实际数量:19.8 吨
|
|
|
+- 产品信息:甲醇 99.9% 吨桶
|
|
|
+- 计划数量:2 吨
|
|
|
+- 实际数量:2 吨
|
|
|
+```
|
|
|
+
|
|
|
+### 4.1 产品三行格式
|
|
|
+
|
|
|
+```
|
|
|
+- 产品信息:{产品名称} {规格型号} {包装规格}
|
|
|
+- 计划数量:{数量}[ {单位}]
|
|
|
+- 实际数量:{数量}[ {单位}]
|
|
|
+```
|
|
|
+
|
|
|
+- 名称 / 型号 / 包装之间仍为**两个空格**
|
|
|
+- 数量与单位之间一个空格(有单位时);无单位只写数字或 `—`
|
|
|
+- 字段映射与前置文档 §4.1 相同(`productName` / `model` / `packageSpec` / `planQty`|`quantity` / `actualQty` / `unit`)
|
|
|
+
|
|
|
+### 4.2 边界(继承前置,仅产品行形态变化)
|
|
|
+
|
|
|
+| 情况 | 行为 |
|
|
|
+|------|------|
|
|
|
+| 无 delivery / load stop | 区块标题 + 下一行 `—` |
|
|
|
+| 某站无产品 | `{客户名}:` + `- —` |
|
|
|
+| 客户名为空 | `—:` |
|
|
|
+| 产品字段为空 | 对应位置写 `—`(如 `产品信息:— — —`;数量行写 `—`) |
|
|
|
+
|
|
|
+## 5. 实现要点
|
|
|
+
|
|
|
+- `formatProductLine(product)` 改为返回 **字符串数组(长度 3)**,或等价地由调用方 `push` 三行;`appendInfoSection` 对每个 product 展开 push。
|
|
|
+- `buildDriverPlanCopyText` / `copyDriverPlanToClipboard` 对外签名不变。
|
|
|
+- 验证:一次性脚本用定稿实例与「无站点」样例断言输出完全一致后删除脚本。
|