87 lines
3.6 KiB
Markdown
87 lines
3.6 KiB
Markdown
# 编辑生产任务 · 步骤详情内派发字段 — 设计
|
||
|
||
> 日期: 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):可编辑负责人/时间并保存(需为任务步骤负责人;未派发新步可由任务内负责人配置)。
|