# 编辑生产任务 · 步骤详情内派发字段 — 设计 > 日期: 2026-06-25 > 状态: **已评审,可实施** > 依赖: `2026-06-25-production-step-dispatch-design.md` --- ## 1. 背景 【编辑生产任务】(`DispatchTaskDialog` 阶段二)使用三栏编辑器 + `StepDetailPanel`。步骤负责人与计划开始时间仅能通过独立弹窗 `DispatchStepDialog` 配置,步骤详情无展示与编辑入口,导致: - 已派发数据在 API 中存在,右侧详情不可见; - 工艺库新增步骤无法设置负责人与时间; - 改派需切换弹窗,体验割裂。 ## 2. 决策 | 项 | 决策 | |----|------| | 方案 | **A**:在 `StepDetailPanel` 增加负责人 + 计划开始时间 | | 关闭校验 | **宽松**:关闭编辑弹窗时不强制每步均有负责人 | | 保存策略 | **A1**:并入步骤「保存」按钮(`handleManualSave`) | | 批量改派 | 保留 `DispatchStepDialog` 作批量入口 | ## 3. UI ### 3.1 展示条件 - `canEditStepDispatch()` 且 `!readonly`:可编辑控件(编辑工艺 / 任务执行,manage 与 mine 均可) - 只读「任务详情」:展示文本 Tag / 时间,不可改 ### 3.2 任务执行弹窗 - manage 与 **mine** 均在步骤详情可配置负责人与时间(保存时调 `steps/dispatch`,带 `operateScope`) - mine 对未派发的新步骤:任务内任一步负责人可配置并保存 ### 3.3 控件(对齐 `DispatchStepDialog`) | 字段 | 控件 | |------|------| | 负责人 | `el-select` multiple + remote 用户搜索,`nickName(userNo)` | | 计划开始时间 | `el-date-picker` datetime,`value-format="YYYY-MM-DDTHH:mm:00"`,可清空 | 置于步骤详情 `form-grid-4` 内(与工序名称等同区),label `label-position="top"`。 ### 3.4 提示 - 无负责人时:字段下 muted 提示「未派发;保存工艺后可在本处或「步骤派发」中指定负责人」 ## 4. 数据与保存 ### 4.1 加载 - 任务详情 steps 已含 `assigneeUserIds`、`assignees`、`plannedStartTime` - `normalizeStepSubTables` 补全 `assigneeUserIds`(来自 `assignees`),并记录快照 `_snapshotAssigneeUserIds`、`_snapshotPlannedStartTime` 用于脏检测 ### 4.2 保存 - `handleManualSave` 在 `saveStepBasic` 等之后调用 `saveStepDispatch()` - 仅当 `stepDispatchChanged(step)` 时调用 `PUT steps/dispatch`(单步 payload) - 允许 `assigneeUserIds` 为空(清空负责人);`plannedStartTime` 传 `null` 表示清空 - 成功后更新快照,避免重复提交 ### 4.3 关闭弹窗 - **不校验**全步骤是否已派发;未派步骤仍仅 manage 可见(沿用步骤派发设计 §1.2) ## 5. 文件 | 文件 | 变更 | |------|------| | `StepDetailPanel.vue` | 负责人、计划开始时间表单项 | | `useTaskStepEditor.ts` | 用户搜索、`saveStepDispatch`、快照脏检测、并入 `handleManualSave` | | `DispatchTaskDialog.vue` | 打开编辑时预加载用户列表(可选) | ## 6. 测试要点 1. 编辑工艺:已派发步骤在详情可见负责人与时间。 2. 修改负责人/时间后点「保存」,mine 列表与步骤派发弹窗数据一致。 3. 工艺库新增步骤:选中后可在详情设置并保存。 4. 清空负责人或计划时间后保存,DB 与再次打开一致。 5. 仅改工序名称未改派发字段时,保存不触发 dispatch API。 6. 关闭编辑弹窗:部分步骤未派发仍可关闭。 7. 工单页 · 任务执行(manage):工艺库新增步骤可在详情设负责人/时间并保存。 8. 我的生产任务 · 执行(mine):可编辑负责人/时间并保存(需为任务步骤负责人;未派发新步可由任务内负责人配置)。