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-功能清单/管理后台/05-采集地址/05-01-采集地址页面.md

126 lines
5.2 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-25
> 状态:已设计
---
### 1. 基本信息
| 项 | 值 |
|----|-----|
| 路由 | /collect-address |
| 权限 | admin |
| 入口 | 侧边栏采集地址 |
| 面包屑 | 首页 / 采集地址管理 |
### 2. 界面布局
┌──────────────────────────────────────────────────────────┐
│ [面包屑] 首页 / 采集地址管理 │
├──────────────────────────────────────────────────────────┤
│ [操作栏] [+ 新增地址] │
├──────────────────────────────────────────────────────────┤
│ [列表区] │
│ 名称 | URL | 品牌 | 间隔 | 状态 | 上次采集 | 连续失败 | 操作 │
│ FANUC-A栋 | http://10.1.1.1/ | FANUC| 30s | 启用 | 3秒前 | 0 | [编辑][停用]│
│ FANUC-B栋 | http://10.1.2.1/ | FANUC| 60s | 启用 | 58秒前 | 0 | [编辑][停用]│
└──────────────────────────────────────────────────────────┘
### 3. 查询条件
无(地址数量少)。
### 4. 列表字段
| 字段名 | 列宽 | 排序 | 超长处理 | 对齐 |
|--------|------|------|---------|------|
| 名称 | 120px | y | tooltip | left |
| URL | 250px | - | tooltip | left |
| 品牌 | 100px | - | - | center |
| 采集间隔 | 80px | - | - | center |
| 状态 | 80px | - | - | center |
| 上次采集 | 120px | - | - | center |
| 连续失败 | 80px | - | - | center |
| 操作 | 120px | - | - | center |
### 5. 操作按钮
| 名称 | 权限编码 | 位置 | 显示条件 | 点击行为 |
|------|---------|------|---------|---------|
| 新增地址 | address:create | 页头 | 始终 | 打开新增弹窗 |
| 编辑 | address:update | 行操作 | 始终 | 打开编辑弹窗 |
| 启用/停用 | address:toggle | 行操作 | 始终 | 确认->切换 |
### 6. 弹窗规格
**新增/编辑采集地址弹窗:**
- 宽度600px遮罩有ESC关闭是(脏数据检测)
表单字段:
| 字段 | 控件 | 必填 | 默认值 | 校验 | 联动 |
|------|------|------|--------|------|------|
| 地址名称 | el-input maxlength=100 | 是 | - | 必填 | - |
| HTTP地址 | el-input maxlength=500 | 是 | - | 必填+URL格式 | - |
| 关联品牌 | el-select | 是 | - | 必填 | 选定后下方加载该品牌机床 |
| 采集间隔 | el-input-number min=5 max=300 | 是 | 30 | 必填+正整数 | - |
| 选择机床 | el-checkbox-group | 否 | 空 | - | 品牌变化时重新加载机床列表 |
机床选择区域说明:
- 允许不选机床(先创建地址,后续在机床管理中关联)
- 只显示属于该品牌且未分配到其他地址的机床(编辑时含当前已分配的)
- 每个checkbox显示device_code (机床名称) 车间 IP
### 7. 状态机
采集地址is_enabled
- 1(启用): el-tag success -> 可编辑/停用
- 0(停用): el-tag danger -> 可编辑/启用
### 8. 交互流程
- 加载:请求采集地址列表->渲染
- 新增:弹窗->选品牌(加载机床)->勾选机床->保存->关闭->刷新
- 编辑:弹窗(回填数据+已选机床)->修改->保存->关闭->刷新
- 启停:确认->调API->刷新
### 9. 空状态
列表无数据el-empty 暂无采集地址数据,点击新增地址添加
### 10. Mock数据
**GET /api/admin/collect-address 采集地址列表:**
```json
{ "code": 0, "data": { "items": [
{ "id": 1, "name": "FANUC-A栋", "url": "http://10.1.1.1/", "brandName": "FANUC", "collectInterval": 30, "isEnabled": 1, "lastCollectTime": "2026-04-25T17:36:38", "failCount": 0, "machineCount": 32 },
{ "id": 2, "name": "FANUC-B栋", "url": "http://10.1.2.1/", "brandName": "FANUC", "collectInterval": 60, "isEnabled": 1, "lastCollectTime": "2026-04-25T17:35:38", "failCount": 0, "machineCount": 28 }
]}}
```
**POST /api/admin/collect-address 新增采集地址成功:**
```json
{ "code": 0, "message": "success", "data": { "id": 3, "name": "SIEMENS-C栋" }}
```
**GET /api/admin/collect-address/1/machines 地址下可选机床(弹窗联动):**
```json
{ "code": 0, "data": { "items": [
{ "id": 1, "deviceCode": "fanake_1.8", "name": "西-1.8", "workshopName": "A栋", "ipAddress": "10.1.1.8", "isAssigned": false },
{ "id": 2, "deviceCode": "fanake_1.10", "name": "西-1.10", "workshopName": "A栋", "ipAddress": "10.1.1.10", "isAssigned": true }
]}}
### 10. 数据需求
> 以下为本页面需要的数据,数据库设计定稿时需覆盖。参考 `01-数据库设计.md` 草案。
| 数据需求 | 草案对应 | 说明 |
|---------|---------|------|
| 采集地址列表 | cnc_collect_address | 主表需JOIN品牌名 |
| 品牌下拉 | cnc_brand | 弹窗表单 |
| 可选机床列表 | cnc_machine | 按brand_id筛选+排除已分配其他地址的机床 |
| 机床-地址关联 | cnc_machine.collect_address_id | 机床归属地址关系 |