39 lines
1.4 KiB
Markdown
39 lines
1.4 KiB
Markdown
# 设计:从任务执行派发临时生产工单
|
|
|
|
## 流程
|
|
|
|
1. 用户在任务执行弹窗进入「产出(细胞产品)」。
|
|
2. 点击「派发临时工单」→ 校验原材料完整且已保存(`input` scope 无脏数据)。
|
|
3. 弹出「新增临时工单」弹窗(仅备注,与生产工单临时 Tab 一致)。
|
|
4. 确认 → 调用 `spawn-temporary-work-order` API 创建 LSSC 工单。
|
|
5. 打开 `DispatchTaskDialog`,用户填写任务名称/工艺路线并生成任务。
|
|
6. 任务创建成功 → 前端调用 `set_task_inputs` 写入 API 返回的 `inputItems`(仅原材料,不含产出)。
|
|
|
|
## 约束
|
|
|
|
- 来源任务须至少一条已持久化原材料,且每条具备 `inputType` 与编码/名称/id(**含临时生产工单来源任务**)。
|
|
- **SHALL NOT** 复制当前任务产出(细胞产品)。
|
|
- 按钮在只读下不展示(**已完成 `ywc` 任务除外:只读查看时仍展示派发**)。
|
|
|
|
## API
|
|
|
|
`POST /web/admin/production-tasks/{task_id}/spawn-temporary-work-order`
|
|
|
|
Body: `{ remark?: string }`
|
|
|
|
Response:
|
|
|
|
```json
|
|
{
|
|
"workOrder": { "id", "workOrderNo", "workOrderStatus", ... },
|
|
"sourceTaskId": "...",
|
|
"sourceTaskNo": "...",
|
|
"inputItems": [{ "inputType", "inputId", "inputCode", "inputName", "remark" }]
|
|
}
|
|
```
|
|
|
|
## UI
|
|
|
|
- 按钮:`btn-ghost` + `Position` 图标,文案「派发临时工单」,位于产出底栏「保存」左侧。
|
|
- 不可用时 `disabled` + tooltip 说明需先保存原材料。
|