feat(device): 新增设备管理模块全栈实现并拆分菜单 - 客户设备台账(customer_equipment)与智电设备型号目录(smart_device)CRUD,JWT+RBAC鉴权、参数绑定防SQL注入;设备监控改目录挂台账(/device/equipment),新建基础数据目录挂型号(/base/smart-device);前端防XSS样式对齐客户模块;远程库菜单迁移20261007_device_menu_split_fix.sql(id 58-60)

This commit is contained in:
wk committed 2026-10-07 08:58:34 +08:00
1 parent 91aa3c06f0
commit 09f7345e8a
18 files changed
+2482 -7

No files matched your search

@@ -0,0 +1,21 @@
# Checklist
## 后端
- [x] customer_equipment 实体含 building 关联且无 updated_at 冲突(timestamps 处理正确 —— @Table timestamps:false,仅 created_at 字段)
- [x] 客户设备台账接口支持列表(按客户/建筑/类型/关键字过滤)、详情、创建、更新、删除
- [x] 设备编码唯一性校验生效(EQ+日期+序号自动生成,UniqueConstraint/冲突重试,重复返回明确错误)
- [x] smart_device 型号目录支持分页 CRUD,类型映射字典(网关/探测器/采集器)
- [x] 所有设备端点均经 auth + rbac 鉴权;无 token 返回 401,无权限返回 403(浏览器实测 401 通过;rbac 中间件新增 PERMISSION_MAP 映射)
- [x] 所有查询使用 Sequelize 参数绑定([Op.like]/[Op.in]/where 对象),无 SQL 字符串拼接
- [x] 接口返回统一标准 JSON(code/message/data,兼容 APP;实测 code 200)
## 前端
- [x] 设备台账页面实现列表、搜索、新增/编辑/删除、照片上传,样式与客户管理模块一致
- [x] 设备型号目录页面实现 CRUD(Tab 容器页切换)
- [x] `/device` 占位路由已替换为真实设备管理页面(views/device/index.vue)
- [x] 前端输出统一转义,防 XSS(全模块未用 v-html,Vue 插值自动转义)
## 构建与验证
- [x] 后端可通过 `yarn dev` 成功启动,无 Schema/编译错误(实体自动注册,tsc --noEmit exit 0,实测启动成功)
- [x] 前端可通过 `yarn dev` 成功启动,路由可访问(vue-tsc check 通过,Vite 3000 启动成功)
- [x] 设备模块接口经浏览器验证可正常调用并通过鉴权(无token→401,admin token→200 并返回列表数据)