日期:2026-09-02
状态:已实现
完成日期:2026-09-02
范围:web-admin质检工单、我的质检任务(批次内任务列表)
前置:docs/superpowers/specs/2026-08-28-qc-third-party-company-card-design.md(按公司分卡,已实现)
关联:docs/superpowers/specs/2026-09-02-qc-company-hide-params-design.md(公司弹窗隐藏检测参数,已实现)
交互 Demo:docs/mockups/qc-all-third-party-one-card-demo.html
方案:A(前端聚合维度从「同公司」改为「批次内全部第三方」;复用现有保存接口)
现状:同批次第三方任务按 companyId 聚合成多张公司卡;每张卡打开弹窗只含该公司项目。
问题:公司多时卡片碎、需多次打开弹窗才能填完本批次第三方结果。
目标:
taskType = dsfjc)合成 一张 卡,主标题固定为 「第三方质检项目」。results(沿用前置设计)。| 决策点 | 结论 |
|---|---|
| 列表主标题 | 固定文案「第三方质检项目」 |
| 聚合维度 | 同工单、同批次、全部第三方任务(不再按 companyId 分卡) |
无 companyId 的第三方 |
并入总卡;展示名后公司文案为「未归属公司」 |
| 弹窗项目排序 | 先按公司首次出现顺序分组,组内保持原任务顺序;「未归属公司」组放最后 |
| 备注 / 检测材料 | 整弹窗一份,保存同步到本弹窗全部可写任务 |
| 质检工单 / 我的质检任务 | 共用组件;我的任务仍只聚合/保存当前用户负责的第三方任务 |
| 后端 | 不改表、不新增批量 API;继续循环 complete-with-result |
| 本期不做 | 配置检测 UI 改造;工单系统查看详情里第三方区块重排(可后续对齐) |
任务区内:
sysz):现有紧凑卡,一项目一卡。kind: 'all-third',替代原多张 kind: 'company'):0 个第三方任务时不渲染。orphan-third 单卡(无公司任务并入总卡)。排序:全部自检卡(原序)→ 至多一张第三方总卡。
| 元素 | 规则 |
|---|---|
| 主标题 | 第三方质检项目 |
| 副文案 | 第三方 · N 个检测项目 · M 家公司:N = 可见第三方任务数;M = 有非空 companyId 的去重公司数(不含「未归属」)。若 M = 0(仅未归属项),副文案省略「· M 家公司」,仅 第三方 · N 个检测项目 |
| 进度 Tag | 已完成数/总数;全完成 success,部分 warning,全未完成 info |
| 类型 Tag | 第三方检测 |
| 负责人 | 可见任务 assignee 去重拼接 |
| 主按钮 | 有可填权限 →「填写结果」;否则「查看」 |
| 点击 / 双击 | 与主按钮一致,打开总卡弹窗 |
填写检测结果 · 第三方质检项目 / 查看检测结果 · 第三方质检项目{序号}. {项目名} · {公司名};无公司 → · 未归属公司;右侧任务状态 Tagresults,保存原样回传有值项)只读模式:控件禁用,底栏仅关闭。
results(内存持有,UI 不展示)。updateTime 且对应字段非空的值(复用 pickSharedRemarkAndAttachments)。对可写集合中每个任务依次调用:
POST /qc-tasks/{id}/complete-with-result
results(已加载有值项)、taskStatus、conclusionremark、thirdPartyAttachments保存成功后刷新任务列表 / tasks-changed。
| 区域 | 改动 |
|---|---|
web-admin/src/utils/qc-company-task-group.ts |
buildTaskListDisplayItems 改为输出自检卡 + 可选一张 all-third;新增公司分组排序辅助(供弹窗用);更新单测 |
QcWorkOrderTaskSubList.vue |
渲染 all-third 卡文案与副标题;打开弹窗传入全部第三方 tasks;标题固定 |
QcCompanyTaskResultDialog.vue |
项目名后展示公司名;tasks 按公司分组排序后展示;companyName prop 可改为固定标题或忽略公司名、仅用「第三方质检项目」 |
| Demo / 文档 | 已有 docs/mockups/qc-all-third-party-one-card-demo.html 作对照 |
API:不新增。
kind: 'company' / orphan-third 类型可删除或保留为内部兼容,实现时以 all-third 为准,避免双路径。| 风险 | 缓解 |
|---|---|
| 跨公司共用一份材料,业务上材料本属某公司报告 | 产品已确认;若后续要拆回按公司,可再改聚合维度 |
| 项目多导致弹窗过长 | dialog-form-layout 仅 body 滚动;首版不做折叠 |
| 部分保存失败 | 提示失败项,可再次打开补救 |
| 历史多公司备注不一致 | 打开取「最近非空」;保存后统一为本次值 |