日期: 2026-07-19
状态: 已实现
范围: web-admin 运输计划新增/编辑弹窗快捷入口;运输计划归档页隐藏编辑
运输计划新增/编辑弹窗(PlPlanFormDialog)当前底栏仅有「取消」与「创建/保存」。创建计划与安排运输是两步:保存后需回列表再点「安排运输」。
当计划产品不含易制毒/易制爆(或证书已齐备)时,用户希望保存后立刻进入安排运输,减少往返。
后端 create-full 明确「不自动安排运输」;安排运输仍由独立弹窗与 API 完成。本需求不改变该边界,仅做前端串联。
| 编号 | 决策 | 说明 |
|---|---|---|
| D1 | 底栏方案 A | 取消 · 创建/保存(描边)· 创建/保存并安排运输(主色) |
| D2 | 实现路径 1 | 前端串联:保存 → 可选打开现有安排弹窗;无新 API |
| D3 | 证书未齐备 | 仍保存计划,提示无法安排的原因,不打开安排弹窗 |
| D4 | 显隐 | 新增始终显示「并安排」;编辑仅 transportStatus === 'pending' 时显示 |
| D5 | 取消安排 | 计划已保存,状态仍为「待安排」,可稍后在列表再安排 |
| D6 | 归档页 | 隐藏所有「编辑」入口,不打开计划表单弹窗 |
| 场景 | 底栏按钮 |
|---|---|
| 新增 | 取消 · 创建(描边)· 创建并安排运输(主色) |
| 编辑且未安排 | 取消 · 保存(描边)· 保存并安排运输(主色) |
| 编辑且已安排 | 取消 · 保存(主色);不显示「并安排」 |
规则:
type="primary";「创建/保存」为中性描边。POST /transport/plan/create-full 或 PUT /transport/plan/{id},取得 planId。shouldBlockTransportForHazardCert / buildMissingHazardCertReadyMessage(与安排弹窗一致)。planId)。行为与现网一致:仅保存,关闭弹窗,不打开安排运输。
PlPlanFormDialog 挂载(以实现时最小改动为准;至少保证无 UI 入口)。PlPlanFormDialog
handleSubmit(mode: 'save' | 'saveAndArrange')
→ createFull / update
→ emit('success', { planId, openArrange: boolean })
plan/index.vue
handlePlanMutationSuccess(payload)
→ 刷新列表
→ if openArrange: 打开 PlPlanArrangeDialog(planId)
事件约定:
{ planId, openArrange: false }(或等价兼容:无 payload 时视为仅刷新)。{ planId, openArrange: true }。{ planId, openArrange: false }(计划已保存)。planId 来源:新建取接口返回的 id;编辑用当前 planId。
| 情况 | 行为 |
|---|---|
| 表单校验失败 | 不提交,与现网一致 |
| 保存 API 失败 | 不关闭弹窗、不打开安排,展示错误 |
| 证书未齐备 | 保存成功后提示原因,不打开安排 |
| 安排弹窗内提交失败 | 由安排弹窗自行处理;计划仍为待安排或按安排 API 结果更新 |
web-admin/src/components/business/pl-plan-form-dialog/index.vueweb-admin/src/views/pl/plan/index.vueweb-admin/src/components/business/pl-plan-arrange-dialog/index.vueweb-admin/src/composables/usePlToxicProductCertCheck.tsweb-admin/src/views/pl/plan-archive/index.vueisIoPlanFrozen(列表既有逻辑,本需求不扩展调整运输)