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-功能清单/管理后台/09-系统设置/09-01-系统设置页面.md

14 KiB

系统设置页面

最后更新2026-04-26 状态:已设计


1. 基本信息

路由 /settings
权限 admin
入口 侧边栏系统设置
面包屑 首页 / 系统设置

2. 界面布局

┌──────────────────────────────────────────────────────────┐
│ [面包屑] 首页 / 系统设置                                   │
├──────────────────────────────────────────────────────────┤
│ [Tab切换]  [系统配置]  [车间管理]  [修改密码]               │
├──────────────────────────────────────────────────────────┤
│                                                          │
│ ====== Tab1: 系统配置 ======                             │
│                                                          │
│ [查询条件区]                                              │
│ 关键字[___________]                          [查询] [重置]  │
│                                                          │
│ [列表区]                                                  │
│ 配置项           | 值              | 类型  | 说明    | 操作 │
│ ping_interval    | 60              | number| Ping间隔| [编辑] │
│ collect_retry    | 3               | number| 重试次数| [编辑] │
│ daily_summary    | 01:00           | string| 汇总时间| [编辑] │
│ log_retention    | 90              | number| 日志保留| [编辑] │
│ api_token        | ********        | string| API Token| [编辑][重置] │
│                                                          │
│ ====== Tab2: 车间管理 ======                             │
│                                                          │
│ [+ 新增车间]                                              │
│ [列表区]                                                  │
│ 车间名称  | 排序 | 状态 | 操作                             │
│ A栋      | 1    | 启用 | [编辑][删除]                      │
│ B栋      | 2    | 启用 | [编辑][删除]                      │
│ C栋      | 3    | 停用 | [编辑][启用]                      │
│                                                          │
│ ====== Tab3: 修改密码 ======                             │
│                                                          │
│ ┌──────────────────────────┐                              │
│ │ 当前密码  [__________]   │                              │
│ │ 新密码    [__________]   │                              │
│ │ 确认密码  [__________]   │                              │
│ │           [确认修改]      │                              │
│ └──────────────────────────┘                              │
└──────────────────────────────────────────────────────────┘

3. Tab1-系统配置

查询条件

字段 控件 必填 默认值 校验 联动
关键字 el-input placeholder=配置项/说明 -

列表字段

字段名 列宽 排序 超长处理 对齐
配置项(config_key) 200px - tooltip left
配置值(config_value) auto - tooltip left
值类型(value_type) 80px - - center
说明(description) 200px - tooltip left
操作 160px - - center

操作按钮

名称 权限编码 位置 显示条件 点击行为
编辑 settings:update 行操作 始终 打开编辑弹窗
重置Token settings:reset-token 行操作 config_key=api_token或collector_api_key 确认"确定重置{配置项}?重置后需同步更新相关服务配置。 "->调API

弹窗规格

编辑配置项弹窗:

  • 宽度500px标题=编辑配置项
字段 控件 必填 默认值 校验 联动
配置项 el-input disabled - config_key - -
配置值 el-input(根据value_type切换number/string) 当前值 必填 value_type=number时控件为el-input-number
说明 el-input disabled - description - -

说明:敏感字段(api_token/collector_api_key)显示为"********",编辑弹窗中也默认遮蔽,点击眼睛图标切换可见。

4. Tab2-车间管理

列表字段

字段名 列宽 排序 超长处理 对齐
车间名称 200px - tooltip left
排序 80px y - center
状态 80px - - center
操作 160px - - center

操作按钮

名称 权限编码 位置 显示条件 点击行为
新增车间 workshop:create 页头 始终 打开新增弹窗
编辑 workshop:update 行操作 始终 打开编辑弹窗
删除 workshop:delete 行操作 启用状态且无关联机床 确认->删除
启用/停用 workshop:toggle 行操作 始终 确认->切换状态

弹窗规格

新增/编辑车间弹窗:

  • 宽度400px标题=新增车间/编辑车间
字段 控件 必填 默认值 校验 联动
车间名称 el-input maxlength=100 - 必填+唯一性 -
排序号 el-input-number min=0 max=99 末尾 必填+正整数 -

5. Tab3-修改密码

表单字段

字段 控件 必填 默认值 校验 联动
当前密码 el-input type=password show-password - 必填 -
新密码 el-input type=password show-password - 必填+长度8-32位 -
确认密码 el-input type=password show-password - 必填+与新密码一致 新密码变化时重新校验

操作按钮

名称 权限编码 位置 显示条件 点击行为
确认修改 - 表单底部 始终 校验通过->调API->成功提示+清空表单

6. 状态机

车间is_enabled

  • 1(启用): el-tag success -> 可编辑/停用/删除(无机床关联时)
  • 0(停用): el-tag danger -> 可编辑/启用

删除前提:该车间下无机床(有关联机床的不可删除)

7. 交互流程

Tab1-系统配置:

  • 加载:请求配置项列表->渲染
  • 查询:关键字搜索->重置page=1->请求列表
  • 编辑:弹窗->修改值->保存->关闭->刷新列表
  • 重置Token确认->调API重置->显示新值->提示"请同步更新相关服务配置"

Tab2-车间管理:

  • 加载:请求车间列表->渲染(数据量极小,无需分页)
  • 新增:弹窗->填写->保存->关闭->刷新
  • 编辑:弹窗(回填)->修改->保存->关闭->刷新
  • 删除:确认"确定删除车间【{名称}】?此操作不可恢复。 "->调API->刷新
  • 启停:确认->调API->刷新

Tab3-修改密码:

  • 填写表单->确认修改->校验->调API->成功提示"密码修改成功,请重新登录"->清除Token->跳转/login

8. 空状态

系统配置列表无数据el-empty 暂无配置项 车间列表无数据el-empty 暂无车间数据,点击新增车间添加

9. 接口引用与数据结构

端点编号对应 03-API接口设计.md §3.9 系统设置模块端点清单。

接口引用表

操作 端点编号 Method Mock调用 正式API调用 说明
配置项列表 §3.9 #1 GET GET /mock-api/admin/sys-config GET /api/admin/sys-config 读取配置列表
编辑配置项 §3.9 #2 PUT POST /mock-api/admin/sys-config/update PUT /api/admin/sys-config/{id} Mock放body正式API用路径参数
重置Token §3.9 #3 POST POST /mock-api/admin/sys-config/reset-token POST /api/admin/sys-config/reset-token 两种风格URL一致
车间列表 §3.9 #4 GET GET /mock-api/admin/workshop GET /api/admin/workshop 读取车间列表
新增车间 §3.9 #5 POST POST /mock-api/admin/workshop POST /api/admin/workshop 两种风格URL一致
编辑车间 §3.9 #6 PUT POST /mock-api/admin/workshop/update PUT /api/admin/workshop/{id} Mock放body正式API用路径参数
删除车间 §3.9 #7 DELETE POST /mock-api/admin/workshop/delete DELETE /api/admin/workshop/{id} Mock放body正式API用路径参数
启停车间 §3.9 #8 PUT POST /mock-api/admin/workshop/toggle PUT /api/admin/workshop/{id}/toggle Mock放body正式API用路径参数
修改密码 §3.9 #9 POST POST /mock-api/admin/change-password POST /api/admin/change-password 两种风格URL一致

数据结构

配置项列表(端点 §3.9 #1

GET /mock-api/admin/sys-config     → Mock调用
GET /api/admin/sys-config          → 正式API调用

Response

{ "code": 0, "data": { "items": [
  { "id": 1, "configKey": "ping_interval", "configValue": "60", "valueType": "number", "description": "Ping检测间隔(秒)" },
  { "id": 2, "configKey": "collect_retry_count", "configValue": "3", "valueType": "number", "description": "采集失败重试次数" },
  { "id": 3, "configKey": "collect_retry_interval", "configValue": "30", "valueType": "number", "description": "采集重试间隔(秒)" },
  { "id": 4, "configKey": "collect_fail_alert_threshold", "configValue": "5", "valueType": "number", "description": "连续失败N次触发告警" },
  { "id": 5, "configKey": "daily_summary_time", "configValue": "01:00", "valueType": "string", "description": "日终汇总执行时间" },
  { "id": 6, "configKey": "log_retention_days", "configValue": "90", "valueType": "number", "description": "原始采集日志保留天数" },
  { "id": 7, "configKey": "bigscreen_refresh_interval", "configValue": "10", "valueType": "number", "description": "大屏刷新间隔(秒)" },
  { "id": 8, "configKey": "api_token", "configValue": "********", "valueType": "string", "description": "前端API Token" },
  { "id": 9, "configKey": "collector_api_port", "configValue": "5800", "valueType": "number", "description": "采集服务管理API端口" },
  { "id": 10, "configKey": "collector_api_key", "configValue": "********", "valueType": "string", "description": "采集服务间通信API Key" }
]}}

编辑配置项(端点 §3.9 #2

Mock调用   POST /mock-api/admin/sys-config/update  body: { "id": 1, "configValue": "120" }
正式API调用 PUT /api/admin/sys-config/1             body: { "configValue": "120" }

Response

{ "code": 0, "message": "success", "data": null }

重置Token端点 §3.9 #3

Mock调用   POST /mock-api/admin/sys-config/reset-token  body: { "id": 8 }
正式API调用 POST /api/admin/sys-config/reset-token      body: { "id": 8 }

Response

{ "code": 0, "data": { "configKey": "api_token", "newValue": "eyJhbGciOiJIUzI1NiJ9.new.token" }}

车间列表(端点 §3.9 #4

Mock调用   GET /mock-api/admin/workshop
正式API调用 GET /api/admin/workshop

Response

{ "code": 0, "data": { "items": [
  { "id": 1, "name": "A栋", "sortOrder": 1, "isEnabled": 1, "machineCount": 32 },
  { "id": 2, "name": "B栋", "sortOrder": 2, "isEnabled": 1, "machineCount": 28 },
  { "id": 3, "name": "C栋", "sortOrder": 3, "isEnabled": 0, "machineCount": 0 }
]}}

新增车间(端点 §3.9 #5

Mock调用   POST /mock-api/admin/workshop  body: { "name": "D栋", "sortOrder": 4 }
正式API调用 POST /api/admin/workshop      body: { "name": "D栋", "sortOrder": 4 }

Response

{ "code": 0, "message": "success", "data": { "id": 4, "name": "D栋" }}

编辑车间(端点 §3.9 #6

Mock调用   POST /mock-api/admin/workshop/update  body: { "id": 1, "name": "A栋-新", "sortOrder": 1 }
正式API调用 PUT /api/admin/workshop/1            body: { "name": "A栋-新", "sortOrder": 1 }

Response

{ "code": 0, "message": "success", "data": null }

删除车间(端点 §3.9 #7

Mock调用   POST /mock-api/admin/workshop/delete  body: { "id": 3 }
正式API调用 DELETE /api/admin/workshop/3

Response

{ "code": 0, "message": "success", "data": null }

启停车间(端点 §3.9 #8

Mock调用   POST /mock-api/admin/workshop/toggle  body: { "id": 3 }
正式API调用 PUT /api/admin/workshop/3/toggle

Response

{ "code": 0, "message": "success", "data": null }

修改密码(端点 §3.9 #9

Mock调用   POST /mock-api/admin/change-password  body: { "currentPassword": "admin123", "newPassword": "newpass123" }
正式API调用 POST /api/admin/change-password      body: { "currentPassword": "admin123", "newPassword": "newpass123" }

成功 Response

{ "code": 0, "message": "success", "data": null }

失败 Response旧密码错误

{ "code": 40001, "message": "当前密码不正确", "data": null }

10. 数据需求

以下为本页面需要的数据,数据库设计定稿时需覆盖。参考 01-数据库设计.md 草案。

数据需求 草案对应 说明
系统配置列表 cnc_sys_config 主表
编辑配置项 cnc_sys_config.config_value 按config_key更新
重置Token cnc_sys_config 生成新随机Token写入
车间列表 cnc_workshop 主表+关联机床数
车间名称唯一性 cnc_workshop.name UNIQUE 新增/编辑时校验
车间删除约束 cnc_machine.workshop_id 有关联机床时禁止删除
修改密码 admin密码校验 验证旧密码+写入新密码哈希