运输计划再次归档时提示运输量须大于0,但送货段实际数量已有值 #34

Open
opened 2026-11-15 06:58:23 +00:00 by cykj · 3 comments
Owner

现象

运输计划归档界面(/#/pl/archive-module/plan-archive)对计划 PO20261115092 再次归档时,提示:

运输量须大于0,请填写各送货段实际数量

装货/送货段归档表中的实际数量与单价已有值(上次因证书未齐未能归档成功后已保存),运费区「运输量」为空、运费金额为 0。

复现

  1. 打开运输计划归档,填写各段实际数量/单价后提交
  2. 因证书未齐等业务校验失败,未能归档成功(数量价格已保存)
  3. 再次打开同一计划归档并确认归档
  4. 出现上述运输量校验提示,尽管各送货段实际数量可见

验收

  • 再次打开已有实际数量的待归档计划时,运费「按重量」模式下运输量应自动汇总各送货段实际数量(用户未手动改过运输量时)
  • 确认归档不再误报「运输量须大于0」
  • 用户手动修改过运输量后仍保留手改值
  • 已归档调整模式仍优先使用运输单已存运输量

范围

待确认:优先 Web 管理端归档弹窗及相关运费计算逻辑。

## 现象 运输计划归档界面(`/#/pl/archive-module/plan-archive`)对计划 `PO20261115092` 再次归档时,提示: > 运输量须大于0,请填写各送货段实际数量 装货/送货段归档表中的实际数量与单价已有值(上次因证书未齐未能归档成功后已保存),运费区「运输量」为空、运费金额为 0。 ## 复现 1. 打开运输计划归档,填写各段实际数量/单价后提交 2. 因证书未齐等业务校验失败,未能归档成功(数量价格已保存) 3. 再次打开同一计划归档并确认归档 4. 出现上述运输量校验提示,尽管各送货段实际数量可见 ## 验收 - 再次打开已有实际数量的待归档计划时,运费「按重量」模式下运输量应自动汇总各送货段实际数量(用户未手动改过运输量时) - 确认归档不再误报「运输量须大于0」 - 用户手动修改过运输量后仍保留手改值 - 已归档调整模式仍优先使用运输单已存运输量 ## 范围 待确认:优先 Web 管理端归档弹窗及相关运费计算逻辑。
cykj added the ai-in-progress label 2026-11-15 06:58:32 +00:00
Author
Owner

排查结论(只读定位,尚未改代码)

报错来源

web-admin/src/components/business/pl-plan-archive-dialog/index.vue 确认归档时:

  • hasFreight === 1 且 freightType === 'by_weight'
  • freightCalc.transportQty 为空或 ≤0
  • 提示:运输量须大于0,请填写各送货段实际数量

根因假设(有代码时序证据)

  1. reloadArchiveContent 先加载各送货段 outboundQty(界面可见的实际数量)
  2. usePlFreightCalc 的 watch 会按产品实际数量汇总出 transportQty
  3. 随后 applyFreightPrefill 调用 resetFreightCalc(),把 transportQty 清成 null
  4. products 未再变化,watch 不会重跑,运输量保持为空
  5. 首次边填边改数量时 watch 会更新,所以第一次常能过;再次打开已有数量时就会误报

截图中运费区「运输量」为空、运费金额为 0,与上述一致。

拟修复方向(待确认修改端后实施)

在 usePlFreightCalc.resetFreightCalc(或 applyFreightPrefill 末尾)重置后立即按当前产品实际数量重算未手改的运输量。

修改端待确认:推荐仅 Web 管理端。

## 排查结论(只读定位,尚未改代码) ### 报错来源 `web-admin/src/components/business/pl-plan-archive-dialog/index.vue` 确认归档时: - `hasFreight === 1` 且 `freightType === 'by_weight'` - `freightCalc.transportQty` 为空或 ≤0 - 提示:`运输量须大于0,请填写各送货段实际数量` ### 根因假设(有代码时序证据) 1. `reloadArchiveContent` 先加载各送货段 `outboundQty`(界面可见的实际数量) 2. `usePlFreightCalc` 的 watch 会按产品实际数量汇总出 `transportQty` 3. 随后 `applyFreightPrefill` 调用 `resetFreightCalc()`,把 `transportQty` 清成 `null` 4. products 未再变化,watch **不会重跑**,运输量保持为空 5. 首次边填边改数量时 watch 会更新,所以第一次常能过;再次打开已有数量时就会误报 截图中运费区「运输量」为空、运费金额为 0,与上述一致。 ### 拟修复方向(待确认修改端后实施) 在 `usePlFreightCalc.resetFreightCalc`(或 `applyFreightPrefill` 末尾)重置后立即按当前产品实际数量重算未手改的运输量。 修改端待确认:推荐仅 Web 管理端。
Author
Owner

实现进展(Web 管理端)

修改端:仅 Web(用户确认选项 1)

根因:applyFreightPrefill 在送货段实际数量已回填后调用 resetFreightCalc(),将 transportQty 置空;产品未再变化导致 watch 不重跑。

修复:web-admin/src/composables/usePlFreightCalc.ts 的 resetFreightCalc 在清除手改标记后,立即按当前产品实际数量回填运输量。

回归:web-admin/scripts/pl-freight-calc-reset.test.ts 2 项通过(tsx --test)。

分支 / worktree:

  • codex/issue-34-archive-freight-qty-5b2d7b253964
  • .local/agent/worktrees/issue-34-archive-freight-qty-5b2d7b253964

待用户在本机归档页复验,或授权提交后再推送。

## 实现进展(Web 管理端) **修改端**:仅 Web(用户确认选项 1) **根因**:`applyFreightPrefill` 在送货段实际数量已回填后调用 `resetFreightCalc()`,将 `transportQty` 置空;产品未再变化导致 watch 不重跑。 **修复**:`web-admin/src/composables/usePlFreightCalc.ts` 的 `resetFreightCalc` 在清除手改标记后,立即按当前产品实际数量回填运输量。 **回归**:`web-admin/scripts/pl-freight-calc-reset.test.ts` 2 项通过(`tsx --test`)。 **分支 / worktree**: - `codex/issue-34-archive-freight-qty-5b2d7b253964` - `.local/agent/worktrees/issue-34-archive-freight-qty-5b2d7b253964` 待用户在本机归档页复验,或授权提交后再推送。
Author
Owner

待用户测试(已本地合入 V3.0)

按用户要求已将修复本地合并到主目录 V3.0(Vite 正在该目录监听 localhost:3006),未推送远端 V3.0。

  • 任务提交:f41e47601
  • 本地合并提交:579285a7b
  • 任务分支已推送备份:codex/issue-34-archive-freight-qty-5b2d7b253964
  • 回归:tsx --test scripts/pl-freight-calc-reset.test.ts 2 pass(合并后主目录复跑)

请测

  1. 强刷 http://localhost:3006/#/pl/archive-module/plan-archive
  2. 打开 PO20261115092 归档
  3. 确认运费「运输量」已按送货实际数量自动带出,确认归档不再误报「运输量须大于0」
## 待用户测试(已本地合入 V3.0) 按用户要求已将修复**本地合并**到主目录 `V3.0`(Vite 正在该目录监听 `localhost:3006`),**未推送远端 `V3.0`**。 - 任务提交:`f41e47601` - 本地合并提交:`579285a7b` - 任务分支已推送备份:`codex/issue-34-archive-freight-qty-5b2d7b253964` - 回归:`tsx --test scripts/pl-freight-calc-reset.test.ts` 2 pass(合并后主目录复跑) ### 请测 1. 强刷 `http://localhost:3006/#/pl/archive-module/plan-archive` 2. 打开 `PO20261115092` 归档 3. 确认运费「运输量」已按送货实际数量自动带出,确认归档不再误报「运输量须大于0」
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: cykj/shanxia2.0#34