3.3 KiB
3.3 KiB
1. 数据库变更
- 1.1 检查并补充
biz_outbound_release_review表字段(如缺少review_attachments、review_by_name、create_by_name等),生成增量 SQL 到docs/sql/ - 1.2 更新
backend/app/models/models.py中BizOutboundReleaseReview模型,与表结构对齐
2. 后端 Schema 与 CRUD
- 2.1 新建
backend/app/schemas/outbound_release_review.py,定义请求/响应 Pydantic 模型(列表项、详情聚合、审核提交、批量审核),遵循项目 Schema 命名规范 - 2.2 重构
backend/app/crud/outbound_release_review.py:实现分页列表查询(基于 infusion_schedule LEFT JOIN 审核记录 + 生产工单 + 质检工单状态) - 2.3 实现聚合详情查询
get_review_detail(schedule_id):复用build_outbound_pilot_context_by_schedule()+ 查生产工单任务 + 查质检工单任务结果,返回 6 域聚合数据 - 2.4 实现审核操作
review_schedule(schedule_id, conclusion, remark, attachments, user):创建或更新审核记录,自动填充 production_work_order_id 和 qc_work_order_id - 2.5 实现批量审核
batch_review(schedule_ids, conclusion, remark, attachments, user)
3. 后端 API
- 3.1 重构
backend/app/api/outbound_release_review.py:新增GET /pilot-release-reviews分页列表端点 - 3.2 新增
GET /pilot-release-reviews/{schedule_id}/detail详情聚合端点 - 3.3 新增
PUT /pilot-release-reviews/{schedule_id}/review单条审核端点 - 3.4 新增
PUT /pilot-release-reviews/batch-review批量审核端点 - 3.5 确认路由已在
app/api/__init__.py和app/main.py正确注册
4. 前端 API 层
- 4.1 在
web-admin/src/api/admin.ts中补充/重构出库放行审核相关 API 函数(列表、详情、单条审核、批量审核),定义 TypeScript 类型
5. 前端列表页
- 5.1 新建
web-admin/src/views/pilot-service/outbound-release-review/index.vue列表页,参照storage-release-review/index.vue模式:搜索栏(关键词、审核结论、生产状态、质检状态)+ 表格(申请单号、患者、细胞类型、规格、输注时间、生产/质检/审核状态列)+ 操作栏(查看、审核) - 5.2 实现批量选择和批量审核按钮交互
6. 前端查看弹窗
- 6.1 新建
OutboundReleaseViewDialog.vue,使用SystemViewDialog组件,展示 6 个 section(申请单信息、患者信息、输注计划、生产工单+任务、质检工单+任务、审核记录) - 6.2 生产/质检信息域复用
SampleQcInfoCards/SampleProductionInfoCards组件(如有)或参照入库放行审核的StorageReleaseViewDialog.vue模式自定义展示
7. 前端审核弹窗
- 7.1 新建
OutboundReleaseReviewDialog.vue,参照StorageReleaseReviewDialog.vue:审核结论(el-radio-group)、备注(el-input textarea)、附件上传(卡片化布局),支持单条和批量模式
8. 路由与状态标签
- 8.1 在
web-admin/src/router/modules/sqxp.ts中新增出库放行审核路由(路径outbound-release-review,放在中试服务管理下) - 8.2 在
web-admin/src/utils/status-tag-registry.ts中注册出库审核结论标签映射(tg=通过/success、btg=不通过/danger、null=待审核/info)