运输计划列表 · 多合同时产品信息如何区分

现状:装/送货已支持多份合同,「合同」列可列出多编号;但「产品名称 / 包装 / 计划数量」等列只按段次(装/送)堆叠产品行, 看不出某行产品属于哪份合同(同品同包装多行时尤其难辨)。以下用同一份示意数据对比三种区分方案。

场景:送货段挂 2 份合同 同品「甲醇」出现在两份合同 列表需跨列对齐产品行 已选方案 B 单合同保持现状

问题示意:送货段有合同 HT-A、HT-B。「产品名称」列出两行甲醇,但没有合同标记;「合同」列只是段级汇总, 无法与产品行一一对应。

现状 · 仅段次区分(装 / 送)

产品列按段堆叠;合同列单独列出编号,与产品行无绑定视觉。

问题
计划编号 产品名称 包装规格 计划数量 合同
PL20261006001
甲醇
甲醇
乙醇
散水
散水
吨袋
装
20.000
10.000
5.000
送
20.000
10.000
5.000
读不懂点:两行「甲醇 · 散水」分别属于哪份合同?数量 20 / 10 对应谁?

方案 A · 产品名称旁挂合同角标

产品行顺序不变;名称后跟合同编号 chip。其它列仍按同一行序对齐。

轻量
产品名称 包装规格 计划数量(送) 合同(段汇总,可保留)
甲醇 HT-A-2026-001
甲醇 HT-B-2026-018
乙醇 HT-A-2026-001
散水
散水
吨袋
20.000
10.000
5.000
HT-A-2026-001
HT-B-2026-018
优点:改动小,与表单产品标题一致 缺点:列多时靠名称列扫读,包装/数量列本身仍无合同色

落地规则:仅当当前段产品行涉及 ≥2 份不同合同时,按合同分组块展示; 若整段只有 1 份合同(或未绑合同),产品列保持现状扁平列表,不加分组头。

方案 B · 多合同时按合同分组块(已选)

每个合同一块:块头合同号 + 块内产品。单合同不分组。

已选
产品信息(按合同分组) 计划数量(送) 合同列
HT-A-2026-0012 个产品
甲醇· 散水
乙醇· 吨袋
HT-B-2026-0181 个产品
甲醇· 散水
HT-A
20.000
5.000
HT-B
10.000
优点:合同边界清晰 缺点:拆列多时各组高度要对齐,实现与筛选成本高;列表更「厚」

方案 C · 合同色带行底 + 名称角标(推荐)

同一合同产品行共用柔和底色 + 左侧色条;名称旁再挂合同号 chip。 产品名称 / 包装 / 数量各列同行同色,扫一眼即可对齐。

推荐
产品名称 型号/规格 包装规格 计划数量(送) 合同
甲醇 HT-A-2026-001
甲醇 HT-B-2026-018
乙醇 HT-A-2026-001
工业级
工业级
优等品
散水
散水
吨袋
20.000
10.000
5.000
HT-A-2026-0012 行
HT-B-2026-0181 行
合同 A 合同 B 对齐规则:各产品列第 N 行 = 同一段产品行(含 contractId) 色带:按段内合同出现顺序循环(与「选合同产品行」弹窗色系一致)

装 / 送货段次仍保留

数量、合同列继续用「装 / 送」成对展示;色带只解决同一段内多合同的产品归属。

产品名称 计划数量 合同
甲醇 HT-A…001
甲醇 HT-B…018
乙醇 HT-A…001
装
20.000
10.000
5.000
送
20.000
10.000
5.000
装
HT-A…001
HT-B…018
送
HT-A…001
HT-B…018

已选:方案 B + 单合同不分组

实现落在 PlPlanListProductCell:按当前列的段产品行统计 distinct contractId。

规则
  1. 触发条件:当前展示的段产品行中,不同 contractId ≥ 2 → 分组块。
  2. 单合同:不同 contractId ≤ 1 → 完全保持原扁平列表(无块头、无色带)。
  3. 产品名称列:块头显示完整合同编号 +「N 个产品」。
  4. 包装 / 数量等列:块头显示缩短合同号,保证与名称列分组高度对齐。
  5. 装 / 送:各自独立判断;装货多合同、送货单合同时,仅装货侧分组。

单合同对照(保持现状)

同品多行也只是扁平列表,不出现合同分组头。

单合同
产品名称 包装规格 计划数量 合同
甲醇
乙醇
散水
吨袋
20.000
5.000