2026-08-30-pl-plan-product-fields-arrange-required-design.md 2.8 KB

运输计划产品字段:安排前必填

日期: 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. 装货与各送货段产品均覆盖;填齐后安排可继续原有后续校验与提交。