From 5fbb15611ce5b762bbbd5b6db56da709e2f35ea5 Mon Sep 17 00:00:00 2001 From: zlwu <704541015@qq.com> Date: Sun, 30 Aug 2026 17:49:27 +0800 Subject: [PATCH] docs: add design for plan product fields required on arrange Co-authored-by: Cursor --- ...-product-fields-arrange-required-design.md | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 docs/superpowers/specs/2026-08-30-pl-plan-product-fields-arrange-required-design.md diff --git a/docs/superpowers/specs/2026-08-30-pl-plan-product-fields-arrange-required-design.md b/docs/superpowers/specs/2026-08-30-pl-plan-product-fields-arrange-required-design.md new file mode 100644 index 000000000..8aa6e2543 --- /dev/null +++ b/docs/superpowers/specs/2026-08-30-pl-plan-product-fields-arrange-required-design.md @@ -0,0 +1,64 @@ +# 运输计划产品字段:安排前必填 + +**日期:** 2026-08-30 +**状态:** 已确认 +**范围:** `web-admin` 运输计划新增/编辑弹窗(装货/送货产品区)+ 运输安排提交校验 + +## 1. 背景 + +运输计划弹窗中,装货信息、送货信息下的产品行字段「单位、计划数量、包装规格、送货方式」当前可空。安排运输时若缺这些信息,下游单据/展示不完整。需要在安排链路硬拦,并在表单上给出必填提示。 + +## 2. 决策 + +| 项 | 决策 | +|----|------| +| 硬校验时机 | 仅「保存并安排」/「调整运输」(`saveAndArrange` / `rearrange`) | +| 普通保存 | 不拦截,允许暂空 | +| 后端 | 不改;仅前端拦(安排均走弹窗) | +| 计划数量 `0` | 视为未填,拦截(须有限数字且 **> 0**) | +| 列表预检 | 不扩展产品字段预检(仍打开弹窗后校验) | +| UI 提示 | 四字段标签始终显示必填星号(提示用,不改保存行为) | + +## 3. 校验范围与规则 + +### 3.1 覆盖行 + +- 装货产品:`loadForm.products` 每一行 +- 送货产品:各 `deliveryForms[i].products` 每一行 + +### 3.2 字段判定 + +| 字段 | 通过条件 | +|------|----------| +| 单位 `unit` | `String(value).trim()` 非空 | +| 计划数量 `planQty` | `Number` 有限且 **> 0** | +| 包装规格 `packageSpec` | `String(value).trim()` 非空 | +| 送货方式 `deliveryMethod` | `String(value).trim()` 非空 | + +### 3.3 提示文案 + +- 装货:`安排运输前请完善装货产品第N行:单位、计划数量`(只列缺失项) +- 送货:`安排运输前请完善送货段#M产品第N行:包装规格、送货方式` +- 遇第一处缺失即 `ElMessage.warning` 并中断(与现有安排前校验风格一致) + +## 4. 实现落点 + +| 位置 | 改动 | +|------|------| +| `pl-plan-form-dialog/index.vue` | 新增 `validateStopProductsForArrange()`;在 `handleSubmit` 的安排分支中,于 `validateContractsForArrange` 之后调用 | +| `pl-plan-stop-product-table/index.vue` | compact 与表格态:单位 / 计划数量 / 包装规格 / 送货方式标签加必填星号 | + +对齐现有模式:`getArrangePrerequisiteGaps`、`validateContractsForArrange`、车辆必选。 + +## 5. 非目标 + +- 不改后端安排接口、schema、DB +- 不在列表 `ensurePlanReadyForArrange` 增加产品字段检查 +- 不强制别名、品牌、备注、规格型号 +- 不改变「超可安排数量」仅提示、安排接口另拦的既有行为 + +## 6. 验收 + +1. 新建/编辑:四字段标签有必填星号;四项全空仍可「保存」成功。 +2. 点击「保存并安排」或「调整运输」:任一行缺单位/包装/送货方式,或计划数量为空/`0`,提示并拦截,不发起安排。 +3. 装货与各送货段产品均覆盖;填齐后安排可继续原有后续校验与提交。