Files
hzdyjs/docs/变更管理/code-adjust-record-2025-07-20-zlwu.md
T
2025-07-21 20:15:31 +08:00

2.5 KiB

宿舍楼管理API树形结构开发记录

时间: 2025-07-20 15:30:00 开发人员: zlwu 变更模块: 宿舍管理 - 宿舍楼树形结构API

变更内容

1. 新增类文件

  1. 新增 BuildingTreeSelectVo.java 类用于宿舍楼树形结构展示
    • 支持校区-宿舍区-宿舍楼三级结构
    • 标识节点类型和可选状态

2. API接口开发

  1. 在 XgDormBuildingController 中新增 /buildingTree 接口:

    • 获取完整的宿舍楼树形结构
    • 校区和宿舍区节点设置为不可选(disabled=true)
    • 宿舍楼节点设置为可选(disabled=false)
  2. 在 IXgDormBuildingService 接口中添加 getBuildingTreeData() 方法

  3. 在 XgDormBuildingServiceImpl 中实现树形数据构建逻辑:

    • 查询所有校区、宿舍区和宿舍楼数据
    • 构建三级层次结构
    • 确保树中校区和宿舍区节点被标记为不可选
    • 只有宿舍楼节点可以被选择

3. 数据表关联关系

  • xg_dorm_building 通过 campus_id 关联 xg_dorm_campus
  • xg_dorm_building 通过 area_id 关联 xg_dorm_area
  • xg_dorm_area 通过 campus_id 关联 xg_dorm_campus

4. 前端实现

  1. 在web/src/api/sslxx/dormBuilding/types.ts中添加BuildingTreeSelectVo接口定义:

    • 定义了树形节点的属性类型
    • 包含id、label、nodeType、disabled等核心字段
    • 支持children属性用于嵌套结构
  2. 在web/src/api/sslxx/dormBuilding/index.ts中添加getBuildingTree方法:

    • 调用后端API获取树形结构数据
    • 方法返回类型为AxiosPromise<BuildingTreeSelectVo[]>
  3. 修改ScopeDialog.vue组件:

    • 为宿舍楼类型(type="building")添加独立的树形选择器
    • 移除原有的模拟数据,改用API获取真实数据
    • 添加宿舍楼数据回显和解析逻辑
    • 保留对校区和宿舍区的原有支持

技术实现

树形结构数据构建采用三步查询 + 组装的方式:

  1. 首先查询所有校区数据
  2. 查询所有宿舍区数据
  3. 查询所有宿舍楼数据
  4. 通过Stream API过滤和关联数据,构建多层嵌套结构

使用说明

  1. 校区管理员授权时,使用普通多选下拉框
  2. 宿舍区管理员授权时,使用以校区为父节点的两级树形结构
  3. 宿舍楼管理员授权时,使用新开发的三级树形结构(校区-宿舍区-宿舍楼)
    • 校区和宿舍区节点自动禁用,不可选择
    • 只有宿舍楼节点可以选择
    • 支持多选和折叠标签