日期:2026-06-25
状态:已确认
范围:web-admin【质检工单】【我的质检任务】;后端列表 API 跨类型关键词增强
关联:2026-06-16-qc-work-order-tab-split-design.md、2026-06-12-qc-task-assignee-my-tasks-design.md
客户在现有 5 个分类 Tab(细胞存储 / 科研捐赠 / 中试服务 / 基础实验 / 临时)之前新增 「所有」 Tab,用于跨类型总览质检工单。
| Tab Key | 展示标签 | 位置 | 列表布局 |
|---|---|---|---|
all |
所有 | 首位(默认 Tab) | standalone(平铺,不分组) |
所有 | 细胞存储质检 | 科研捐赠质检 | 中试服务质检 | 基础实验质检 | 临时质检
all(替换原 inbound_cell_storage)。?tab=all;旧链接 ?tab=inbound 等兼容映射保持不变。复用 resolveTabKeyFromWorkOrder(row),映射为短标签:
resolveTabKeyFromWorkOrder 结果 |
Tag 文案 | Tag 语义色 |
|---|---|---|
inbound_cell_storage |
细胞存储 | primary |
inbound_research_donation |
科研捐赠 | primary |
outbound_pilot_service |
中试服务 | info |
outbound_basic_experiment |
基础实验 | info |
temporary |
临时 | warning |
outbound_clinical_application 不在「所有」Tab 展示(hidden Tab 策略延续)。
| 字段 | 控件 | 说明 |
|---|---|---|
| 质检类型 | el-select |
全部 / 细胞存储 / 科研捐赠 / 中试服务 / 基础实验 / 临时;映射为 workOrderType + receptionSource / bizType 组合传给 API |
| 关键词 | el-input |
placeholder:工单号 / 样本编码 / 申请单号 / 产品名称等 |
| 工单状态 | el-select |
待配置 / 已配置 / 已完成 / 已作废 |
| 创建时间 | el-date-picker daterange |
统一按 createTimeStart / createTimeEnd |
hint 文案: 出库工单按输注/交付时间筛选请进入对应分类 Tab。
| 字段 | 控件 | 选项 |
|---|---|---|
| 工单来源 | el-select |
样本接收 / 计划质检 / 生产过程 / 生产派发 / 手动创建 |
工单来源筛选逻辑:
样本接收 → triggerSource=reception计划质检 → triggerSource=schedule生产过程 → triggerSource=production(非临时)生产派发 → 临时工单且 triggerSource=production手动创建 → 临时工单且 triggerSource≠production与 manage 一致,额外增加:
| 字段 | 控件 | 说明 |
|---|---|---|
| 任务状态 | el-select |
待执行 / 进行中 / 已完成 |
| 任务类型 | el-select |
实验室自检 / 第三方检测 |
主区域栅格:关键词、工单状态、任务状态、创建时间(第一行);任务类型可放展开区或与工单状态同行(实现时按 4 列栅格自适应,窄屏折行)。
hint 文案: 仅展示指派给当前登录人的质检任务。出库工单按输注/交付时间筛选请进入对应分类 Tab。
与 manage 一致:工单来源。
| 选项 | API 参数 |
|---|---|
| 全部 | 不传 workOrderType / receptionSource / bizType |
| 细胞存储 | workOrderType=inbound + receptionSource=cell_storage |
| 科研捐赠 | workOrderType=inbound + receptionSource=research_donation |
| 中试服务 | workOrderType=outbound + bizType=pilot_service |
| 基础实验 | workOrderType=outbound + bizType=basic_experiment |
| 临时 | workOrderType=temporary |
当用户在「所有」Tab 内选了具体质检类型,行为等价于在该子类型下筛选,但列表仍为平铺 + 类型 Tag 布局。
all Tab:listLayout = standalone,不使用 groupInboundQcWorkOrders / groupOutboundQcWorkOrders。在现有「工单状态 Tag」「触发来源 Tag」之前或之后,增加质检类型 Tag(见 §2.3)。
workOrderNo(不再按入库/出库规则切换为入库编码或产品编码)。showTriggerTag:保持 true(与分类 Tab 一致,展示样本接收/计划质检/生产过程等)。根据 resolveTabKeyFromWorkOrder(row) 选取对应分类 Tab 的 metaFields 子集,不整表复用(避免出库 Tab 专有费用条等在「所有」Tab 误显)。
| 类型 | meta 字段(按顺序) |
|---|---|
| 细胞存储 / 科研捐赠 | 质检对象、实验室入库编码、检测方式、创建时间 |
| 中试服务 | 申请单号、申请单名称、患者姓名、输注时间、检测方式 |
| 基础实验 | 申请单号、课题名称、客户名称、交付时间、检测方式 |
| 临时 | 产品名称、产品编码、检测方式、创建时间 |
备注:有值时展示(沿用 visible 规则);协议费用条、出库费用条在「所有」Tab 不展示(showProtocolFeeSummary=false,showOutboundFeeSummary=false)。
triggerSource=schedule 或 production,按原 Tab 规则展示 showCellProducts 区块。cardMetaConfig(allowEditTemporary、allowDelete 等)动态判断。QC_WORK_ORDER_VIEW_DIALOG_COMPONENTS[resolveTabKeyFromWorkOrder(row)]。list_work_orders 当 work_order_type 为空(「所有」+ 质检类型=全部)时,关键词应覆盖:
| 范围 | 匹配字段 |
|---|---|
| 通用 | work_order_no、sample_code |
| 入库 | lab_storage_code(经 reception 关联,现有逻辑) |
| 出库 | 申请单号、申请单名称、患者、课题、客户(现有 _outbound_qc_work_order_ids_by_keyword) |
| 临时 | work_order_no、关联生产工单号、细胞产品名称/编码(若已 enrich) |
实现:当 wt 为空时,关键词 OR 条件合并入库 + 出库 + 临时字段(与分别传 outbound 时行为一致)。
无需新 API 字段;前端将 §3.5 映射为现有 workOrderType / receptionSource / bizType 查询参数。
「所有」Tab 仅传 createTimeStart / createTimeEnd;不传 infusionTimeStart / infusionTimeEnd。
tabKey=all 时:
fetchAllMineTasks 不按 workOrderType 限制(或传全类型 union)。filterMineEntriesByWorkOrderSearch:tabKey=all 时跳过 resolveTabKeyFromWorkOrder(row) !== tabKey 校验;关键词/时间/工单状态/工单来源按行类型分别匹配(复用 keywordMatchesWorkOrder 时传入 resolveTabKeyFromWorkOrder(row))。resolveTabKeyFromWorkOrder(row) 与所选子类型一致。QcWorkOrderTabKey 增加 'all'。QC_WORK_ORDER_TABS 首部插入 all 配置;QC_WORK_ORDER_VISIBLE_TABS 自动包含。DEFAULT_QC_WORK_ORDER_TAB → 'all'。qcWorkOrderCategoryLabel(row) / qcWorkOrderCategoryTagType(row) 工具函数。getAllTabCardMetaForRow(row) 或 CARD_META_BY_TAB.all + 行级 meta 解析。AllTab.vue(或复用 QcWorkOrderTabPanel + tabKey=all)。QcWorkOrderSingleCard:支持 cardMetaConfig.tabKey === 'all' 时按行解析 meta;标题行渲染类型 Tag。QcWorkOrderCardList:all 时 useGroupedList=false;可选传入 resolveCardMetaPerRow。index.vue(两页):Tab 列表改用含 all 的 visible tabs;默认 tab 解析更新。tab-registry.ts、view-dialog-registry.ts:all Tab 无独立 view dialog 组件;查看时按行 resolveTabKeyFromWorkOrder 动态选择(QcWorkOrderTabPanel 已有模式可扩展)。create_time 生效。| 问题 | 决策 |
|---|---|
| 两页是否都加「所有」? | 是 — 筛选结构一致;mine 页多任务状态/任务类型 |
| 列表是否分组? | 否 — 平铺 standalone |
| 「所有」Tab 时间字段? | 创建时间;出库输注/交付时间留在分类 Tab |
| 类型 Tag 文案? | 细胞存储 / 科研捐赠 / 中试服务 / 基础实验 / 临时 |
| 默认 Tab? | 所有 |