Files
zkxw/docs/superpowers/specs/2026-06-25-edit-task-step-dispatch-in-panel-design.md
T
2026-06-25 12:41:07 +08:00

87 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 编辑生产任务 · 步骤详情内派发字段 — 设计
> 日期: 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):可编辑负责人/时间并保存(需为任务步骤负责人;未派发新步可由任务内负责人配置)。