日期:2026-07-22
状态:已批准(2026-07-22)
范围:web-admin【质检工单】【我的质检任务】共用「填写检测结果」弹窗;后端complete-with-result/apply_task_result
非范围:列表/查看「待结论」展示逻辑(已有);数据库结构;新增结论码djl
「填写检测结果」弹窗中「结论」仅「通过 / 不通过」,且前后端均强制必填。打开时默认「通过」。无法先保存参数/附件/进行中状态而结论仍为「待结论」。
ywc)时结论仍必填(仅 tg / btg);待执行 / 进行中(dzx / jxz)时结论可空。djl);待结论 = conclusion 空字符串 / null。qcConclusionDisplayLabel / Tag 展示语义。tg/btg 才纳入有效综合结论)。| 决策点 | 结论 |
|---|---|
| 空结论与任务状态 | B:仅 dzx / jxz 允许空结论;ywc 结论必填 |
| UI 形态 | A:第三项 radio「待结论」,值为空;选 ywc 时禁用该项 |
| 空值表示 | 方案 1:空字符串,与现有展示 helper 一致 |
| 打开默认 | 无既有 tg/btg 时默认「待结论」,不再默认「通过」 |
| 切到已完成且仍为待结论 | 不自动改成通过;提交时提示必选结论 |
| 任务状态(保存目标) | 结论可选值 | 校验 |
|---|---|---|
dzx 待执行 |
待结论 / 通过 / 不通过 | 允许 conclusion 为空 |
jxz 进行中 |
同上 | 允许 conclusion 为空 |
ywc 已完成 |
仅通过 / 不通过(「待结论」radio 禁用) | 必须为 tg 或 btg |
落库:
conclusion = 'tg'conclusion = 'btg'conclusion 置空('' / null,与现有空结论语义一致)列表/查看:无 tg/btg 时继续用 qcConclusionDisplayLabel → 「待结论」。
文件:web-admin/src/views/quality-inspection/qc-work-order/QcWorkOrderTaskSubList.vue(两入口共用)
value="" 或等价空绑定)。resultSaveStatus === 'ywc' 时禁用「待结论」选项。openResult:resultConclusion 回填 detail.conclusion;若无有效 tg/btg,设为 ''(待结论),不要再默认 'tg'。submitResult:仅当 resultSaveStatus === 'ywc' 且结论非 tg/btg 时提示「请选择检测结论」;dzx/jxz 允许空结论提交。conclusion 可为空字符串;类型仍可为 string。API 封装 fetchCompleteTaskWithResult 若有严格非空类型,允许 conclusion: string(含 '')即可。
文件:
backend/app/api/qc.py — TaskCompleteWithResultBody、complete-with-result 处理backend/app/crud/qc_task.py — apply_task_result规则:
conclusion 改为可选(或允许空串);规范化后仅接受 '' / tg / btg。task_status(默认仍可为 ywc)为 ywc 时:空结论 → 400「请选择检测结论(通过/不通过)」。dzx / jxz 时:允许空结论,并将 t.conclusion 置空。tg/btg → 无效结论错误(与现有一致)。complete_task 等其它路径若已有「有结论才写入」逻辑,保持最小改动;本需求以 apply_task_result / complete-with-result 为主路径。
try_complete_work_order)仍依赖任务进入 ywc;空结论任务不能以「待结论」完成,与决策 B 一致。tg/btg,待结论任务不计入「全部通过」。