# 产量报表页面 > 最后更新:2026-04-26 > 状态:已设计 --- ### 1. 基本信息 | 项 | 值 | |----|-----| | 路由 | /production | | 权限 | admin | | 入口 | 侧边栏产量报表 | | 面包屑 | 首页 / 产量报表 | ### 2. 界面布局 ``` ┌──────────────────────────────────────────────────────────┐ │ [面包屑] 首页 / 产量报表 │ ├──────────────────────────────────────────────────────────┤ │ [查询条件区] │ │ 日期范围[2026-04-19 ~ 2026-04-25] 车间[▼全部] │ │ 机床[▼全部] 工人[▼全部] 程序名[_______] │ │ [查询] [重置] [导出] │ ├──────────────────────────────────────────────────────────┤ │ [汇总统计区] │ │ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │ │ │总产量 │ │运行机床│ │切削总时│ │平均产量│ │ │ │8,520 │ │ 142 │ │580h │ │ 60 │ │ │ └──────┘ └──────┘ └──────┘ └──────┘ │ ├──────────────────────────────────────────────────────────┤ │ [列表区] │ │ 日期 | 机床 | 程序名 | 产量 | 运行时间 | 切削时间 | 日状态 | 修正 | 操作 │ │ 2026-04-25| 西-1.8 | 1566.NC | 580 | 4h20m | 3h50m | 正常 | - | [修正产量] │ │ 2026-04-25| 东-2.5 | A456.NC | - | - | - | 缺失 | - | [修正产量] │ │ 2026-04-25| 北-4.1 | B789.NC | 310 | 2h10m | 1h50m | 正常 | ✓ | [修正记录] │ ├──────────────────────────────────────────────────────────┤ │ [分页] 共1200条 每页[20▼] < 1 2 3 ... 60 > │ └──────────────────────────────────────────────────────────┘ ``` ### 3. 查询条件 | 字段 | 控件 | 必填 | 默认值 | 校验 | 联动 | |------|------|------|--------|------|------| | 日期范围 | el-date-picker type=daterange | 是 | 近7天(含今日) | 必填+结束日期≥开始日期 | 无 | | 车间 | el-select | 否 | 全部 | - | 联动机床下拉(按车间筛选) | | 机床 | el-select filterable | 否 | 全部 | - | 受车间联动 | | 工人 | el-select filterable | 否 | 全部 | - | 无 | | 程序名 | el-input | 否 | 空 | - | 无 | ### 4. 列表字段 | 字段名 | 列宽 | 排序 | 筛选 | 固定 | 超长处理 | 对齐 | |--------|------|------|------|------|---------|------| | 日期 | - | y | - | left | - | center | | 机床名称 | - | y | - | - | tooltip | left | | 程序名 | - | y | - | - | tooltip | left | | 产量 | - | y | - | - | - | center | | 运行时间 | - | - | - | - | - | center | | 切削时间 | - | - | - | - | - | center | | 日状态 | - | - | 下拉 | - | - | center | | 修正标记 | - | - | - | - | - | center | | 操作 | 120 | - | - | right | - | center | > 列宽规则见 `02-前端全局规范.md` el-table列宽均分规则:数据列不设width自动均分,操作列固定120。 ### 5. 操作按钮 | 名称 | 权限编码 | 位置 | 显示条件 | 点击行为 | |------|---------|------|---------|---------| | 查询 | - | 查询区 | 始终 | 重置page=1->请求列表 | | 重置 | - | 查询区 | 始终 | 清空条件->请求列表 | | 导出 | production:export | 查询区 | 始终 | 按当前查询条件导出Excel | | 修正产量 | production:adjust | 行操作 | 始终 | 打开修正弹窗 | | 修正记录 | - | 行操作 | is_adjusted=1 | 打开修正历史弹窗(只读) | ### 6. 弹窗规格 **产量修正弹窗:** - 宽度500px,遮罩有,ESC关闭是(脏数据检测),标题=修正产量 | 字段 | 控件 | 必填 | 默认值 | 校验 | 联动 | |------|------|------|--------|------|------| | 当前产量 | el-input disabled | - | 原始产量 | - | - | | 修正后产量 | el-input-number min=0 | 是 | 原始产量 | 必填+非负整数 | - | | 修正原因 | el-input type=textarea maxlength=500 | 是 | - | 必填 | - | **修正历史弹窗(只读):** - 宽度600px,标题=修正记录 | 展示字段 | 说明 | |---------|------| | 修正时间 | created_at | | 修正前 | old_value | | 修正后 | new_value | | 修正原因 | reason | ### 7. 状态机 日状态(data_status): - normal(正常): 文本"正常" 灰色 -> 产量正常显示 - offline(离线): 文本"离线" el-tag danger -> 产量显示0 - data_missing(数据缺失): 文本"缺失" el-tag warning -> 产量显示"-"(非0) 修正标记: - is_adjusted=0: 显示"-" - is_adjusted=1: 显示"✓" el-tag primary ### 8. 交互流程 - 加载:默认近7天->请求列表API+汇总统计API->渲染 - 查询:选条件->查询->重置page=1->请求列表+汇总 - 重置:清空条件(恢复默认近7天)->请求 - 导出:调API下载Excel(按当前查询条件导出) - 修正产量:弹窗->输入修正后产量+原因->确认"确定修正产量?修正后将记录审计日志。 "->调API->关闭->刷新列表 - 修正记录:弹窗(只读)->展示修正历史->关闭 ### 9. 空状态 列表无数据:el-empty 未找到匹配的产量数据,请调整查询条件 汇总统计:无数据时各卡片显示"-" ### 10. 接口引用与数据结构 > Mock/正式API的URL、HTTP方法均定义在 `03-API接口设计.md` §3.7 端点清单,本节仅引用编号并定义返回数据结构。 #### 接口引用 | 接口名称 | 端点编号 | 界面用途 | |---------|---------|---------| | 日汇总统计 | §3.7 #1 | 顶部统计卡片 | | 日产量列表 | §3.7 #2 | 表格数据,分页渲染 | | 修正产量 | §3.7 #3 | 修正弹窗保存 | | 修正历史 | §3.7 #4 | 修正历史弹窗 | | 导出报表 | §3.7 #5 | 导出Excel按钮 | | 车间下拉 | §3.13 #1 | 查询条件下拉 | | 机床下拉 | §3.13 #3 | 查询条件下拉 | | 工人下拉 | §3.13 #4 | 查询条件下拉 | #### 数据结构 **日汇总统计(§3.7 #1):** Response: ```json { "code": 0, "data": { "totalQuantity": 8520, "activeMachineCount": 142, "totalCuttingTime": "580h", "avgQuantityPerMachine": 60 }} ``` **日产量列表(§3.7 #2):** Response: ```json { "code": 0, "data": { "items": [ { "id": 1, "date": "2026-04-25", "machineName": "西-1.8", "programName": "1566.NC", "quantity": 580, "runTime": "4h20m", "cuttingTime": "3h50m", "dataStatus": "normal", "isAdjusted": 0, "adjustedQuantity": null }, { "id": 2, "date": "2026-04-25", "machineName": "东-2.5", "programName": "A456.NC", "quantity": null, "runTime": null, "cuttingTime": null, "dataStatus": "data_missing", "isAdjusted": 0, "adjustedQuantity": null }, { "id": 3, "date": "2026-04-25", "machineName": "北-4.1", "programName": "B789.NC", "quantity": 310, "runTime": "2h10m", "cuttingTime": "1h50m", "dataStatus": "normal", "isAdjusted": 1, "adjustedQuantity": 320 } ], "total": 1200, "page": 1, "pageSize": 20 }} ``` **修正产量(§3.7 #3):** Request body: ```json { "targetTable": "daily_production", "targetId": 3, "fieldName": "total_quantity", "newValue": 320, "reason": "传感器计数偏差,手工校准" } ``` Response: ```json { "code": 0, "message": "success", "data": null } ``` **修正历史(§3.7 #4):** Response: ```json { "code": 0, "data": { "items": [ { "createdAt": "2026-04-25 15:30:00", "oldValue": 310, "newValue": 320, "reason": "传感器计数偏差,手工校准" } ]}} ``` **导出报表(§3.7 #5):** 二进制Excel文件,Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet ### 11. 数据需求 > 以下为本页面需要的数据,数据库设计定稿时需覆盖。参考 `01-数据库设计.md` 草案。 | 数据需求 | 草案对应 | 说明 | |---------|---------|------| | 日产量列表(含分页) | cnc_daily_production + cnc_machine | 主表,需JOIN机床名+车间名 | | 日状态 | cnc_machine_daily_status | 按machine_id+date关联 | | 汇总统计 | cnc_daily_production | 按日期范围聚合SUM/COUNT/AVG | | 车间下拉 | cnc_workshop | 查询条件 | | 机床下拉 | cnc_machine | 查询条件,受车间联动 | | 工人下拉 | cnc_worker | 查询条件 | | 产量修正写入 | cnc_daily_production.adjusted_quantity | 更新修正后产量+is_adjusted=1 | | 修正审计记录 | cnc_production_adjustment | 写入修正前/后值+原因 | | 修正历史查询 | cnc_production_adjustment | 按target_table+target_id查询 |