You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
haoliang-net/docs/02-功能清单/管理后台/07-产量报表/07-01-产量报表页面.md

201 lines
9.1 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 产量报表页面
> 最后更新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. 列表字段
| 字段名 | 列宽 | 排序 | 筛选 | 固定 | 超长处理 | 对齐 |
|--------|------|------|------|------|---------|------|
| 日期 | 110px | y | - | left | - | center |
| 机床名称 | 120px | y | - | - | tooltip | left |
| 程序名 | 140px | y | - | - | tooltip | left |
| 产量 | 80px | y | - | - | - | center |
| 运行时间 | 100px | - | - | - | - | center |
| 切削时间 | 100px | - | - | - | - | center |
| 日状态 | 80px | - | 下拉 | - | - | center |
| 修正标记 | 80px | - | - | - | - | center |
| 操作 | 120px | - | - | right | - | center |
### 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查询 |