2.5 KiB
2.5 KiB
宿舍楼管理API树形结构开发记录
时间: 2025-07-20 15:30:00 开发人员: zlwu 变更模块: 宿舍管理 - 宿舍楼树形结构API
变更内容
1. 新增类文件
- 新增
BuildingTreeSelectVo.java类用于宿舍楼树形结构展示- 支持校区-宿舍区-宿舍楼三级结构
- 标识节点类型和可选状态
2. API接口开发
-
在
XgDormBuildingController中新增/buildingTree接口:- 获取完整的宿舍楼树形结构
- 校区和宿舍区节点设置为不可选(disabled=true)
- 宿舍楼节点设置为可选(disabled=false)
-
在
IXgDormBuildingService接口中添加getBuildingTreeData()方法 -
在
XgDormBuildingServiceImpl中实现树形数据构建逻辑:- 查询所有校区、宿舍区和宿舍楼数据
- 构建三级层次结构
- 确保树中校区和宿舍区节点被标记为不可选
- 只有宿舍楼节点可以被选择
3. 数据表关联关系
xg_dorm_building通过campus_id关联xg_dorm_campusxg_dorm_building通过area_id关联xg_dorm_areaxg_dorm_area通过campus_id关联xg_dorm_campus
4. 前端实现
-
在
web/src/api/sslxx/dormBuilding/types.ts中添加BuildingTreeSelectVo接口定义:- 定义了树形节点的属性类型
- 包含id、label、nodeType、disabled等核心字段
- 支持children属性用于嵌套结构
-
在
web/src/api/sslxx/dormBuilding/index.ts中添加getBuildingTree方法:- 调用后端API获取树形结构数据
- 方法返回类型为
AxiosPromise<BuildingTreeSelectVo[]>
-
修改
ScopeDialog.vue组件:- 为宿舍楼类型(type="building")添加独立的树形选择器
- 移除原有的模拟数据,改用API获取真实数据
- 添加宿舍楼数据回显和解析逻辑
- 保留对校区和宿舍区的原有支持
技术实现
树形结构数据构建采用三步查询 + 组装的方式:
- 首先查询所有校区数据
- 查询所有宿舍区数据
- 查询所有宿舍楼数据
- 通过Stream API过滤和关联数据,构建多层嵌套结构
使用说明
- 校区管理员授权时,使用普通多选下拉框
- 宿舍区管理员授权时,使用以校区为父节点的两级树形结构
- 宿舍楼管理员授权时,使用新开发的三级树形结构(校区-宿舍区-宿舍楼)
- 校区和宿舍区节点自动禁用,不可选择
- 只有宿舍楼节点可以选择
- 支持多选和折叠标签