6.7 KiB
6.7 KiB
工单/任务编辑与生产结论 — 设计文档
日期: 2026-05-24
状态: 已实现(2026-05-24)
范围: 质检工单、生产工单、生产任务(web-admin + backend)
1. 背景
在工单融合(work_order_type: inbound / temporary)之后,列表侧缺少对备注与生产任务结论的维护入口。本变更补齐编辑能力,并复用既有 API/组件,控制改动面。
2. 已确认的产品决策
| 问题 | 决策 |
|---|---|
| 入库工单编辑备注:已完成状态是否可改? | 可以(任意工单状态均可改备注) |
| 临时生产工单「编辑信息」范围? | 仅备注 |
| 生产任务结论「失败」是否触发业务副作用? | 不触发;v1 仅结果存储 |
| 结论字段编码? | 拼音缩写存库;界面展示中文 |
| 生产任务列表:已完成任务是否可编辑基础信息? | 不需要(已完成任务不展示「编辑」) |
3. 功能清单
3.1 质检工单 — 入库 Tab
- 列表操作列增加 「编辑」(
EditPen)。 - 弹窗字段:仅备注(
textarea,max 512)。 - 任意
work_order_status(含ywc)可保存。 - 与临时 Tab 的「编辑」(细胞产品 + 备注)区分:入库仅走备注弹窗。
3.2 生产工单 — 入库 Tab
- 列表增加 「编辑」 → 仅备注弹窗(同上)。
- 任意工单状态可改备注。
3.3 生产工单 — 临时 Tab
- 列表增加 「编辑」 → 仅备注弹窗(与入库共用交互)。
- 不包含改任务名称/工艺路线(任务级能力保留在「派发任务」「编辑任务」)。
3.4 生产任务 — 列表
- 列表增加 「编辑」 → 复用
EditTaskInfoDialog(taskName/description/remark)。 - 显示条件:
task_status为dpz或jxz;ywc不展示编辑按钮。 - 后端可对
ywc拒绝更新(双保险,可选)。
3.5 生产任务 — 完成任务结论
- 入口:任务执行弹窗
TaskExecutionDialog→「完成任务」。 - 流程:现有 I/O 校验通过 → 弹出结论弹窗(非简单
confirm)→ 提交完成。 - 结论(必填):
- 存库:
cg= 成功,sb= 失败 - 展示:成功 / 失败;Tag:
success/danger
- 存库:
- 可选备注(
textarea)。 - v1:不改变细胞产品入库、工单状态同步、通知等既有逻辑;仅写入
conclusion(及可选remark)并置task_status=ywc。
4. 数据模型
4.1 已有字段(无需 DDL)
biz_qc_work_order.remarkbiz_production_work_order.remarkbiz_production_task.remark/task_name/description
4.2 新增字段
ALTER TABLE biz_production_task
ADD COLUMN conclusion VARCHAR(16) NULL
COMMENT '生产结论 cg=成功 sb=失败'
AFTER completed_time;
- 迁移脚本:
docs/sql/production_task_conclusion.sql - 全量基线:同步
docs/sql/zkxw.sql
4.3 结论枚举
| 编码 | 中文标签 | Tag type |
|---|---|---|
cg |
成功 | success |
sb |
失败 | danger |
5. API 设计
5.1 质检工单 PUT /web/admin/qc-work-orders/{id}
现状:仅 temporary 可更新(update_temp_qc_work_order)。
调整:
inbound:仅接受remark(忽略cellProductId)。temporary:保持cellProductId+remark。- 不校验工单是否已完成(备注始终可改)。
5.2 生产工单 PUT /web/admin/production-work-orders/{id}(新增)
- Body:
{ remark?: string } - 入库/临时均可更新备注;任意
work_order_status。 - CRUD:
update_production_work_order(db, wo_id, tenant_no, user_id, remark=...)
5.3 生产任务 PUT /web/admin/production-tasks/{id}/status
扩展 Body(完成时):
{
"taskStatus": "ywc",
"conclusion": "cg",
"remark": "可选"
}
taskStatus=ywc时conclusion必填,且必须为cg|sb。remark可选;若传入则更新任务remark(与完成备注合并策略:写入remark字段)。jxz/dpz状态变更逻辑不变。
5.4 列表/详情响应
biz_production_task序列化增加:conclusion、conclusionLabel(后端映射中文)。
6. 前端设计
6.1 共用组件(建议)
components/business/work-order-remark-dialog/index.vue(可选抽取)
- Props:
visible,title,initialRemark,loading - Emit:
submit(remark),update:visible - 规范:
dialog-form-layout、label-position="top"、底栏 Close/Check
若不抽取,各页内联单字段弹窗亦可(最小 diff)。
6.2 页面改动
| 页面 | 文件 | 改动 |
|---|---|---|
| 质检工单 | views/quality-inspection/qc-work-order/index.vue |
入库 Tab「编辑」+ 备注弹窗;handleEditRemark |
| 生产工单 | views/production/production-work-order/index.vue |
入库/临时 Tab「编辑」+ 备注弹窗 |
| 生产任务 | views/production/production-task/index.vue |
EditTaskInfoDialog;v-if 非 ywc |
| 任务执行 | useTaskStepEditor.ts + 新 CompleteProductionTaskDialog.vue |
完成前结论弹窗 |
| API | qc-work-order.ts, production-work-order.ts, production-task.ts |
新增/扩展类型 |
6.3 生产任务列表(可选增强)
- 增加列「生产结论」:
ywc行展示el-tag;未完成显示—。
6.4 UI 规范
- 操作列
fixed="right",宽度预留(质检约 +60px,生产工单约 +60px,生产任务约 +80px)。 - 结论 Tag 遵循 OpenSpec ui-conventions(状态/结论字段用
el-tag)。
7. 权限
- 质检:沿用
biz:qcWorkOrder:list(现有 PUT)。 - 生产工单/任务:沿用
require_admin_or_super_admin。
8. 不在本期范围
- 结论为
sb时禁止产出、回滚库存、消息通知。 - 已完成生产任务的基础信息编辑。
- 质检任务完成结论(已有
tg/btg流程,不改动)。
9. 实施顺序
- DDL + Model
BizProductionTask.conclusion - 后端:QC 工单 PUT 扩展、生产工单 PUT 新增、完成任务 conclusion 校验
- 前端 API 类型
- 质检/生产工单备注编辑 UI
- 生产任务列表编辑(非 ywc)
- 完成任务结论弹窗 + 列表结论列(可选)
scripts/check_field_consistency.py(若扩展 schema)./scripts/update-graph.sh backend+frontend
10. 验收要点
- 入库质检工单:任意状态可改备注并列表刷新
- 临时质检工单:原编辑(产品+备注)不受影响
- 入库/临时生产工单:任意状态可改备注
- 生产任务:
dpz/jxz可编辑基础信息;ywc无编辑按钮 - 完成任务:必须选成功/失败;完成后详情/列表可见中文结论
- 失败结论不改变细胞产品/工单等下游行为