[F11] 设备查询页 subsystemId 筛选 + 未归属标签
- apps/web-antd/src/api/iot/device/device/index.ts
- Device 接口加 subsystemId/subsystemName
- 新增 BindSubsystemReqVO + bindDeviceSubsystem (PUT /iot/device/bindSubsystem)
- apps/web-antd/src/views/iot/device/device/index.vue
- 筛选器:子系统下拉 + 未归属哨兵 -1 (→ queryParams.unassigned=true)
- 单设备/批量绑定弹窗,批量 100 台/批
- 行操作 + TableAction 增加"绑定子系统"按钮 (auth: iot:device:update)
- apps/web-antd/src/views/iot/device/device/data.ts
- useGridColumns 追加"所属子系统"列 (slot: subsystem)
- apps/web-antd/src/views/iot/device/device/modules/card-view.vue
- 卡片视图加子系统信息行 + 未归属红标签
- Props 透传 subsystems / searchParams.subsystemId / unassigned
- apps/web-antd/src/views/iot/device/device/__tests__/device-subsystem-filter.spec.ts
- 14 用例: 筛选参数转换 / 未归属标签条件 / 批量分批逻辑
- locales/langs/{zh-CN,en-US}/page.json: iot.device.filter.subsystem.* 12 键同步
- Known Pitfalls 落地: 评审 A2 NULL 醒目红标签 / 哨兵 -1 → unassigned=true /
批量 100 台分批 / iot:device:update 权限 / simple-list 加载静默降级
后端 B11 API 补充契约:
- GET /iot/device/page?unassigned=true (subsystemId IS NULL 过滤)
- PUT /iot/device/bindSubsystem { deviceId, subsystemId: number | null }
- 分页响应 Device 含 subsystemId?: number | null + subsystemName?: string
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -41,6 +41,24 @@
|
||||
}
|
||||
},
|
||||
"iot": {
|
||||
"device": {
|
||||
"filter": {
|
||||
"subsystem": {
|
||||
"placeholder": "All Subsystems",
|
||||
"unassigned": "Unassigned",
|
||||
"bind": "Bind Subsystem",
|
||||
"bindTitle": "Bind Subsystem",
|
||||
"batchBind": "Batch Bind Subsystem",
|
||||
"batchBindTitle": "Batch Bind Subsystem",
|
||||
"batchBindSuccess": "{0} device(s) bound successfully",
|
||||
"bindSuccess": "Bound successfully",
|
||||
"selectRequired": "Please select a subsystem first",
|
||||
"selectDeviceTip": "Please select devices first",
|
||||
"binding": "Binding...",
|
||||
"batchBindHint": "{0} device(s) selected, max 100 per batch"
|
||||
}
|
||||
}
|
||||
},
|
||||
"subsystem": {
|
||||
"title": "Subsystem",
|
||||
"listTitle": "Subsystem List",
|
||||
|
||||
@@ -41,6 +41,24 @@
|
||||
}
|
||||
},
|
||||
"iot": {
|
||||
"device": {
|
||||
"filter": {
|
||||
"subsystem": {
|
||||
"placeholder": "全部子系统",
|
||||
"unassigned": "未归属",
|
||||
"bind": "绑定子系统",
|
||||
"bindTitle": "绑定子系统",
|
||||
"batchBind": "批量绑定子系统",
|
||||
"batchBindTitle": "批量绑定子系统",
|
||||
"batchBindSuccess": "已成功绑定 {0} 台设备",
|
||||
"bindSuccess": "绑定成功",
|
||||
"selectRequired": "请先选择子系统",
|
||||
"selectDeviceTip": "请先选择要绑定的设备",
|
||||
"binding": "正在绑定...",
|
||||
"batchBindHint": "已选 {0} 台设备,每批最多 100 台"
|
||||
}
|
||||
}
|
||||
},
|
||||
"subsystem": {
|
||||
"title": "子系统",
|
||||
"listTitle": "子系统列表",
|
||||
|
||||
Reference in New Issue
Block a user