Files
shanxia2.0/openspec/changes/production-material-inventory/specs/material-stock-log-ui/spec.md
T
2026-05-23 12:51:22 +08:00

4.0 KiB
Raw Blame History

ADDED Requirements

Requirement: Per-row stock log dialog

耗材/试剂管理列表每行操作列 SHALL 有一个「变动记录」按钮,点击弹出 Dialog,标题显示物料名称,列表仅展示该物料的变动记录,支持分页。

Scenario: Open stock log for single material

  • WHEN 用户点击耗材A行的「变动记录」按钮
  • THEN 弹出 Dialog,标题为"耗材A — 变动记录",列表按时间倒序展示该耗材的所有变动记录

Scenario: Stock log dialog pagination

  • WHEN 变动记录超过 20 条
  • THEN Dialog 内列表支持分页

Requirement: Tab view for all stock logs

耗材管理页面和试剂管理页面 SHALL 各自有一个顶部 Tab「全部变动记录」,切换后展示所有耗材(或试剂)的汇总变动记录列表,支持按物料名称/编码、变动类型、时间范围筛选,支持分页。

Scenario: Switch to all stock logs tab

  • WHEN 用户点击耗材管理页面顶部「全部变动记录」Tab
  • THEN 切换到全部变动记录视图,展示所有耗材的变动记录汇总列表

Scenario: Filter by material name

  • WHEN 用户在全部变动记录 Tab 中搜索物料名称"培养皿"
  • THEN 列表仅展示物料名称包含"培养皿"的变动记录

Scenario: Filter by change type

  • WHEN 用户筛选变动类型为"出库"
  • THEN 列表仅展示 change_type=use 的变动记录(含 manual_out 和 step_save)

Scenario: Filter by time range

  • WHEN 用户选择时间范围 2026-01-01 至 2026-03-31
  • THEN 列表仅展示该时间范围内的变动记录

Requirement: Stock log display fields

变动记录列表(弹窗和 Tab 视图)SHALL 展示以下字段:

  • 物料编码(material_code)
  • 物料名称(material_name)
  • 变动类型(change_type):入库/出库/步骤扣减,以 <el-tag> 展示
  • 变动数量(change_qty):正数绿色,负数红色
  • 变动前库存(stock_before)
  • 变动后库存(stock_after)
  • 来源(source_type):手动入库/手动出库/步骤保存,以 <el-tag> 展示
  • 关联任务(task_no):步骤扣减时展示任务编号
  • 领用人(receiver):手动出库时展示
  • 用途(purpose):手动出库时展示
  • 操作人(create_by_name)
  • 操作时间(create_time)

Scenario: Manual out log display

  • WHEN 变动记录为手动出库类型
  • THEN 展示领用人、用途、操作人、时间,来源显示"手动出库"

Scenario: Step save log display

  • WHEN 变动记录为步骤保存类型
  • THEN 展示关联任务编号、操作人、时间,来源显示"步骤扣减",不展示领用人/用途

Requirement: Stock log API endpoints

后端 SHALL 提供以下变动记录 API:

  • GET /web/admin/consumables/{id}/stock-logs — 单个耗材变动记录(分页)
  • GET /web/admin/consumables/stock-logs — 全部耗材变动记录(分页,支持筛选)
  • GET /web/admin/reagents/{id}/stock-logs — 单个试剂变动记录(分页)
  • GET /web/admin/reagents/stock-logs — 全部试剂变动记录(分页,支持筛选)

Scenario: Single material stock log API

  • WHEN 前端请求 GET /web/admin/consumables/{id}/stock-logs?page=1&pageSize=20
  • THEN 返回该耗材的变动记录列表和总数

Scenario: All stock logs API with filters

  • WHEN 前端请求 GET /web/admin/consumables/stock-logs?keyword=培养皿&changeType=out&startTime=2026-01-01&endTime=2026-03-31
  • THEN 返回筛选后的变动记录列表和总数

Requirement: Status field display in list

耗材/试剂管理列表的状态列 SHALL 使用 <el-tag> 展示:启用显示 success 类型,停用显示 info 类型。

Scenario: Enabled status display

  • WHEN 耗材状态为启用(status='1')
  • THEN 列表显示绿色 <el-tag type="success" size="small"> 文本"启用"

Scenario: Disabled status display

  • WHEN 耗材状态为停用(status='0')
  • THEN 列表显示灰色 <el-tag type="info" size="small"> 文本"停用"