将配置试剂的操作简化为一次性配制流程:
位置:生产物料库 → 配制单 Tab
| 改造前 | 改造后 |
|---|---|
工具栏:新建配制单 |
工具栏:配置试剂 |
| 列表有状态(草稿/已完成/已作废) | 列表无状态(仅用于追溯) |
| 有编辑/确认配制等多步操作 | 一次性完成,无编辑功能 |
配置试剂目录 按钮 |
移除 |
点击「配置试剂」按钮,弹出配制弹窗:
表单字段: | 字段 | 类型 | 说明 | |------|------|------| | 配置试剂名称 | 文本输入 | 必填,自由命名(如「75% 乙醇溶液」) | | 产出数量 | 数字输入 | 必填,正整数,默认 1 | | 子物料明细 | 物料选择表格 | 必填,至少选择一种子物料 |
子物料选择交互:
子物料表格字段: | 字段 | 说明 | |------|------| | 物料名称 | 只读,从领用批次带入 | | 物料类型 | 只读,试剂/耗材 | | 批次号 | 只读,来自领用记录 | | 可用数量 | 只读,该批次剩余可用数量 | | 消耗数量 | 可编辑,≤ 可用数量 |
点击「提交」后,后端执行以下操作:
biz_production_material_stock 中创建 configured_reagent 类型记录biz_production_material_prep 中创建记录(status = 'completed')列表字段(精简后): | 字段 | 说明 | |------|------| | 序号 | 序号 | | 配制单号 | 自动生成 | | 配置试剂 | 配置试剂名称 | | 配制时间 | 配制完成时间 | | 产出数量 | 产出数量 | | 操作人 | 配制人姓名 |
操作列:
移除:
新增关联展示:
在「我的物料领用记录」中,为配置试剂配制场景增加消耗明细:
| 字段 | 说明 |
|---|---|
| 物料名称 | 子物料名称 |
| 类型 | 试剂/耗材 |
| 消耗数量 | 用于配制的消耗量 |
| 来源批次 | 领用批次号 |
| 消耗时间 | 配制时间 |
| 关联配制单 | 配制单号(点击可跳转查看) |
| 产出配置试剂 | 配制产出的配置试剂名称 |
biz_production_material_prep 表改造:
| 字段 | 类型 | 说明 |
|---|---|---|
| id | VARCHAR(64) | 主键 |
| prep_no | VARCHAR(64) | 配制单号 |
| configured_material_name | VARCHAR(128) | 配置试剂名称 |
| output_qty | DECIMAL(10,2) | 产出数量 |
| status | VARCHAR(32) | 固定为 'completed' |
| prep_time | DATETIME | 配制时间 |
| ... | ... | 公共字段 |
biz_production_material_prep_line 表:
| 字段 | 类型 | 说明 |
|---|---|---|
| id | VARCHAR(64) | 主键 |
| prep_id | VARCHAR(64) | 关联配制单 |
| material_id | VARCHAR(64) | 子物料ID |
| material_name | VARCHAR(128) | 子物料名称 |
| material_type | VARCHAR(32) | 试剂/耗材 |
| batch_no | VARCHAR(64) | 领用批次号 |
| consumption_qty | DECIMAL(10,2) | 消耗数量 |
| ... | ... | 公共字段 |
新增:biz_production_material_consumption 表(用于记录消耗明细,关联到领用记录):
| 字段 | 类型 | 说明 |
|---|---|---|
| id | VARCHAR(64) | 主键 |
| prep_id | VARCHAR(64) | 关联配制单 |
| source_receipt_id | VARCHAR(64) | 领用记录ID |
| material_id | VARCHAR(64) | 物料ID |
| consumption_qty | DECIMAL(10,2) | 消耗数量 |
| consumption_time | DATETIME | 消耗时间 |
| ... | ... | 公共字段 |
前端 API(web-admin/src/api/production-material.ts):
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/admin/production-material/prep | 分页查询配制记录 |
| POST | /api/admin/production-material/prep | 新建配制(一次性完成) |
| GET | /api/admin/production-material/prep/{id} | 查看配制详情 |
| GET | /api/admin/production-material/prep/available-materials | 获取可用子物料(已领用未用完) |
| GET | /api/admin/production-material/consumption | 查询消耗明细(我的领用记录用) |
后端路由(backend/app/api/production_material.py):
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/admin/production-material/prep | 列表 |
| POST | /api/admin/production-material/prep | 创建配制 |
| GET | /api/admin/production-material/prep/{prep_id} | 详情 |
| GET | /api/admin/production-material/prep/available-materials | 可用子物料 |
| GET | /api/admin/production-material/consumption | 消耗明细 |
文件:web-admin/src/views/production/production-material/ProductionMaterialPrepTab.vue
改动点:
新建配制单 → 配置试剂文件:新建 ProductionMaterialPrepDialog.vue
布局:弹窗 + 子物料选择表格
交互流程:
文件:新建 MaterialBatchSelectDialog.vue
功能:
文件:web-admin/src/views/production/my-production-task/index.vue
改动点:
# backend/app/schemas/production_material.py
class PrepCreateBody(BaseModel):
"""一次性配制请求"""
configured_material_name: str = Field(..., max_length=128, description="配置试剂名称")
output_qty: Decimal = Field(..., gt=0, description="产出数量")
lines: List[PrepLineCreate] # 子物料明细
class PrepLineCreate(BaseModel):
material_id: str = Field(..., description="物料ID")
material_type: str = Field(..., description="物料类型")
batch_no: str = Field(..., description="批次号")
consumption_qty: Decimal = Field(..., gt=0, description="消耗数量")
class ConsumptionResp(BaseModel):
"""消耗明细响应"""
id: str
material_name: str
material_type: str
consumption_qty: Decimal
batch_no: str
consumption_time: datetime
prep_no: str
configured_material_name: str
文件:backend/app/crud/production_material.py
新增:
create_prep_with_transaction():一次性创建配制(包含库存扣减、入库、出库)get_available_materials():查询可用子物料get_consumptions():查询消耗明细文件:backend/app/services/production_material_service.py
新增配制业务逻辑:
| 类别 | 文件 | 改动类型 |
|---|---|---|
| 后端模型 | backend/app/models/production_material.py |
新增消耗明细表 |
| 后端 Schema | backend/app/schemas/production_material.py |
新增配制请求/响应 schema |
| 后端 CRUD | backend/app/crud/production_material.py |
新增配制相关 CRUD |
| 后端 Service | backend/app/services/production_material_service.py |
新增配制业务逻辑 |
| 后端 API | backend/app/api/production_material.py |
新增/改造配制接口 |
| 前端 API | web-admin/src/api/production-material.ts |
新增 API 方法 |
| 前端组件 | ProductionMaterialPrepTab.vue |
改造列表和工具栏 |
| 前端组件 | ProductionMaterialPrepDialog.vue |
新建配制弹窗 |
| 前端组件 | MaterialBatchSelectDialog.vue |
新建物料批次选择弹窗 |
| 前端页面 | my-production-task/index.vue |
改造领用记录增加消耗明细 |
| 路由 | web-admin/src/router/modules/sqxp.ts |
可能需要调整菜单配置 |
biz_production_material_consumption 表预计总工期:2 天