2026-08-30-pl-plan-form-available-qty-design.md 2.1 KB

运输计划表单 · 可安排数量

日期: 2026-08-30
状态: 已确认(方案 2:专用查询接口)
Demo: docs/fresh-mint-pl-plan-form-available-qty-demo.html

目标

新增/编辑运输计划弹窗中,装货/送货产品区在「计划数量」前展示「可安排数量」,并支持问号弹窗查看合同用量与已安排计划列表。

已确认决策

项 决策
颜色 可安排绿色;计划数量红色
超量 仅标红提示,仍可保存;安排接口硬拦
展示条件 有产品行即显示;无合同 →「—」,问号禁用并提示先选合同
问号 点击弹窗(非悬停气泡)
计划编号 仅展示,不可点击
口径 可安排 = 合同数量 − 已安排(编辑时已安排不含本计划旧量);已归档按实际量、已安排未归档按计划量,见 2026-08-30-pl-contract-qty-archived-actual-design.md
框架无固定量 可安排「—」;弹窗说明不限额
实现 方案 2:专用 API

API

GET /transport/plan/contract-product-arrange-qty

Query:contractId、productId、可选 excludePlanId(当前编辑计划)

响应:

{
  contractId, contractNo, customerName, productId, productName,
  hasFixedQty: boolean,
  contractQty?: number,
  arrangedQty: number,   // 不含 excludePlanId
  availableQty?: number, // hasFixedQty 时
  plans: [{ planId, planNo, planDate, planQty, followStatus, transportStatus, archiveStatus }]
}

复用 pl_contract_plan_qty 汇总口径;plans 为计入已安排且本产品有量的计划(不含 exclude)。

UI

  • PlPlanStopProductTable:可安排列 + 问号;计划数量超可安排加红样式/提示文案
  • Props:contractId、excludePlanId
  • 装货/送货 section 传入本段首个合同 id;表单传入 planId 作为 exclude
  • 弹窗:三格统计 + 计划表;无合同点问号 → Message 提示先选合同

非目标

  • 输入硬拦超过可安排
  • 计划编号跳转查看
  • 独立预检 API(沿用安排硬拦)