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.
8.5 KiB
8.5 KiB
操作日志页面
最后更新:2026-04-26 状态:已设计
1. 基本信息
| 项 | 值 |
|---|---|
| 路由 | /log |
| 权限 | admin |
| 入口 | 侧边栏操作日志 |
| 面包屑 | 首页 / 操作日志 |
2. 界面布局
┌──────────────────────────────────────────────────────────┐
│ [面包屑] 首页 / 操作日志 │
├──────────────────────────────────────────────────────────┤
│ [Tab切换] [产量修正日志] [系统运行日志] │
├──────────────────────────────────────────────────────────┤
│ │
│ ====== Tab1: 产量修正日志 ====== │
│ │
│ [查询条件区] │
│ 时间范围[__________] 目标[▼全部] 关键字[________] │
│ [查询] [重置] [导出] │
│ │
│ [列表区] │
│ 修正时间 | 目标表 | 目标ID | 修正前 | 修正后 | 原因 | 操作IP │
│ 2026-04-25 15:30 | daily_production | 3 | 310 | 320 | 传感器计数偏差 | 192.168.1.5│
│ 2026-04-24 10:15 | worker_summary | 12 | 850 | 900 | 漏计补录 | 192.168.1.5│
│ │
│ [分页] 共80条 每页[20▼] < 1 2 3 4 > │
│ │
│ ====== Tab2: 系统运行日志 ====== │
│ │
│ [查询条件区] │
│ 日志级别[▼全部] 来源[▼全部] 时间范围[__________] │
│ 关键字[___________] [查询] [重置] │
│ │
│ [列表区] │
│ 时间 | 级别 | 来源 | 消息 │
│ 2026-04-25 17:36 | INFO | CncCollector | 采集完成:32台成功 │
│ 2026-04-25 17:35 | WARN | CncCollector | 采集失败:1台超时 │
│ 2026-04-25 17:00 | ERROR | CncCollector | 连接拒绝:10.1.2.5 │
│ │
│ [分页] 共5600条 每页[20▼] < 1 2 3 ... 280 > │
└──────────────────────────────────────────────────────────┘
3. Tab1-产量修正日志
查询条件
| 字段 | 控件 | 必填 | 默认值 | 校验 | 联动 |
|---|---|---|---|---|---|
| 时间范围 | el-date-picker type=daterange | 否 | 空 | - | 无 |
| 目标表 | el-select(daily_production/worker_daily_summary/全部) | 否 | 全部 | - | 无 |
| 关键字 | el-input placeholder=原因/操作IP | 否 | 空 | - | 无 |
列表字段
| 字段名 | 列宽 | 排序 | 超长处理 | 对齐 |
|---|---|---|---|---|
| 修正时间 | 170px | y(默认倒序) | - | center |
| 目标表 | 150px | - | tooltip | left |
| 目标ID | 80px | - | - | center |
| 修正前 | 80px | - | - | center |
| 修正后 | 80px | - | - | center |
| 修正原因 | auto | - | tooltip | left |
| 操作IP | 130px | - | - | center |
4. Tab2-系统运行日志
查询条件
| 字段 | 控件 | 必填 | 默认值 | 校验 | 联动 |
|---|---|---|---|---|---|
| 日志级别 | el-select(ERROR/WARN/INFO/DEBUG/全部) | 否 | 全部 | - | 无 |
| 来源 | el-select(CncCollector/WebApi/Scheduler/全部) | 否 | 全部 | - | 无 |
| 时间范围 | el-date-picker type=daterange | 否 | 空 | - | 无 |
| 关键字 | el-input placeholder=消息内容 | 否 | 空 | - | 无 |
列表字段
| 字段名 | 列宽 | 排序 | 超长处理 | 对齐 |
|---|---|---|---|---|
| 时间 | 170px | y(默认倒序) | - | center |
| 级别 | 80px | - | - | center |
| 来源 | 130px | - | tooltip | left |
| 消息 | auto | - | tooltip+点击展开详情 | left |
5. 操作按钮
| 名称 | 权限编码 | 位置 | 显示条件 | 点击行为 |
|---|---|---|---|---|
| 查询 | - | 查询区 | 始终 | 重置page=1->请求列表 |
| 重置 | - | 查询区 | 始终 | 清空条件->请求列表 |
| 导出 | log:export | 查询区 | Tab1产量修正日志 | 按当前查询条件导出Excel |
| 查看详情 | - | 行操作 | Tab2系统运行日志 | 弹窗展示完整消息+堆栈 |
6. 弹窗规格
系统日志详情弹窗(只读):
- 宽度700px,标题=日志详情
| 展示字段 | 说明 |
|---|---|
| 时间 | created_at |
| 级别 | log_level |
| 来源 | source |
| 消息 | message(完整文本,支持换行) |
| 堆栈信息 | stack_trace(代码格式化展示,无则为空) |
| 附加数据 | extra_data(JSON格式化展示) |
7. 状态机
日志级别(log_level):
- ERROR: el-tag danger
- WARN: el-tag warning
- INFO: el-tag success
- DEBUG: el-tag info
8. 交互流程
Tab1-产量修正日志:
- 加载:请求修正日志列表->渲染
- 查询:选条件->查询->重置page=1->请求列表
- 重置:清空条件->请求
- 导出:调API下载Excel
Tab2-系统运行日志:
- 加载:请求系统日志列表->渲染
- 查询:选条件->查询->重置page=1->请求列表
- 重置:清空条件->请求
- 查看详情:弹窗(只读)->展示完整消息+堆栈+附加数据->关闭
9. 空状态
修正日志无数据:el-empty 暂无产量修正记录 系统日志无数据:el-empty 暂无系统日志 查询无结果:el-empty 未找到匹配的日志,请调整查询条件
10. Mock数据
GET /api/admin/log/adjustment 产量修正日志:
{ "code": 0, "data": { "items": [
{ "id": 1, "createdAt": "2026-04-25T15:30:00", "targetTable": "daily_production", "targetId": 3, "oldValue": 310, "newValue": 320, "reason": "传感器计数偏差,手工校准", "operatorIp": "192.168.1.5" },
{ "id": 2, "createdAt": "2026-04-24T10:15:00", "targetTable": "worker_daily_summary", "targetId": 12, "oldValue": 850, "newValue": 900, "reason": "漏计补录,夜班产量未计入", "operatorIp": "192.168.1.5" }
], "total": 80, "page": 1, "pageSize": 20 }}
GET /api/admin/log/system 系统运行日志:
{ "code": 0, "data": { "items": [
{ "id": 1, "createdAt": "2026-04-25T17:36:38", "logLevel": "INFO", "source": "CncCollector", "message": "采集完成: 32台成功, 0台失败", "stackTrace": null, "extraData": null },
{ "id": 2, "createdAt": "2026-04-25T17:35:38", "logLevel": "WARN", "source": "CncCollector", "message": "采集失败: 1台超时(fanake_2.5)", "stackTrace": null, "extraData": "{\"machineId\":4,\"addressId\":2,\"error\":\"timeout\"}" },
{ "id": 3, "createdAt": "2026-04-25T17:00:00", "logLevel": "ERROR", "source": "CncCollector", "message": "连接拒绝: 10.1.2.5", "stackTrace": "System.Net.Http.HttpRequestException: Connection refused\n at CncCollector.HttpClientWrapper.SendAsync()", "extraData": null },
{ "id": 4, "createdAt": "2026-04-25T01:00:00", "logLevel": "INFO", "source": "Scheduler", "message": "日终汇总完成: 160台, 耗时12秒", "stackTrace": null, "extraData": null }
], "total": 5600, "page": 1, "pageSize": 20 }}
GET /api/admin/log/adjustment/export 导出修正日志(返回文件流): 二进制Excel文件,Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
11. 数据需求
以下为本页面需要的数据,数据库设计定稿时需覆盖。参考
01-数据库设计.md草案。
| 数据需求 | 草案对应 | 说明 |
|---|---|---|
| 产量修正日志 | cnc_production_adjustment | 主表(业务库) |
| 系统运行日志 | log_system | 主表(日志库),按月分区 |
| 导出修正日志 | cnc_production_adjustment | 导出Excel |