From b5e6ca3cce4251de8d94b649a3aa8a542ad5beb4 Mon Sep 17 00:00:00 2001 From: zlwu <704541015@qq.com> Date: Tue, 22 Jul 2025 21:45:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E6=88=BF=E9=97=B4=E5=88=86?= =?UTF-8?q?=E9=85=8D=E7=BB=99=E4=BA=8C=E7=BA=A7=E5=AD=A6=E9=99=A2=E7=9A=84?= =?UTF-8?q?=E4=B8=9A=E5=8A=A1=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xg/controller/XgDormBedController.java | 105 ++ .../java/org/dromara/xg/domain/XgDormBed.java | 66 ++ .../org/dromara/xg/domain/bo/XgDormBedBo.java | 68 ++ .../xg/domain/vo/DormBuildingInfoVo.java | 5 + .../xg/domain/vo/DormBuildingTreeVo.java | 5 + .../org/dromara/xg/domain/vo/XgDormBedVo.java | 80 ++ .../dromara/xg/mapper/XgDormBedMapper.java | 15 + .../dromara/xg/service/IXgDormBedService.java | 68 ++ .../xg/service/impl/XgDormBedServiceImpl.java | 137 +++ .../impl/XgDormBuildingTreeServiceImpl.java | 1 + .../service/impl/XgDormRoomServiceImpl.java | 13 +- .../mapper/dormbed/XgDormBedMapper.xml | 7 + .../mapper/xg/XgDormBuildingTreeMapper.xml | 6 + .../code-adjust-record-2025-07-22-wuzilong.md | 68 ++ docs/开发文档/API/宿舍房间管理API.md | 154 ++- .../宿舍管理数据库建表脚本.sql | 1 + web/src/api/xgss/dormBed/index.ts | 63 ++ web/src/api/xgss/dormBed/types.ts | 66 ++ web/src/api/xgss/dormRoom/index.ts | 63 ++ web/src/api/xgss/dormRoom/types.ts | 176 ++++ web/src/api/xgss/xsssfjgl/index.ts | 12 +- web/src/api/xgss/xsssfjgl/types.ts | 6 +- .../xgss/xsssfjgl/components/BedDialog.vue | 54 +- web/src/views/xgss/xsssfjgl/index.vue | 233 ++++- .../xgss/xsssfpejxy/components/BedDialog.vue | 150 +++ .../xgss/xsssfpejxy/components/RoomDialog.vue | 171 +++ web/src/views/xgss/xsssfpejxy/index.vue | 989 ++++++++++++++++++ 27 files changed, 2727 insertions(+), 55 deletions(-) create mode 100644 backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgDormBedController.java create mode 100644 backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/XgDormBed.java create mode 100644 backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/bo/XgDormBedBo.java create mode 100644 backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/vo/XgDormBedVo.java create mode 100644 backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/mapper/XgDormBedMapper.java create mode 100644 backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/IXgDormBedService.java create mode 100644 backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgDormBedServiceImpl.java create mode 100644 backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/dormbed/XgDormBedMapper.xml create mode 100644 docs/变更管理/code-adjust-record-2025-07-22-wuzilong.md create mode 100644 web/src/api/xgss/dormBed/index.ts create mode 100644 web/src/api/xgss/dormBed/types.ts create mode 100644 web/src/api/xgss/dormRoom/index.ts create mode 100644 web/src/api/xgss/dormRoom/types.ts create mode 100644 web/src/views/xgss/xsssfpejxy/components/BedDialog.vue create mode 100644 web/src/views/xgss/xsssfpejxy/components/RoomDialog.vue create mode 100644 web/src/views/xgss/xsssfpejxy/index.vue diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgDormBedController.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgDormBedController.java new file mode 100644 index 00000000..42153597 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgDormBedController.java @@ -0,0 +1,105 @@ +package org.dromara.xg.controller; + +import java.util.List; + +import lombok.RequiredArgsConstructor; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.web.core.BaseController; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.xg.domain.vo.XgDormBedVo; +import org.dromara.xg.domain.bo.XgDormBedBo; +import org.dromara.xg.service.IXgDormBedService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 宿舍床位信息 + * + * @author zlwu + * @date 2025-07-22 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/dormbed/dormBed") +public class XgDormBedController extends BaseController { + + private final IXgDormBedService xgDormBedService; + + /** + * 查询宿舍床位信息列表 + */ + @SaCheckPermission("dormbed:dormBed:list") + @GetMapping("/list") + public TableDataInfo list(XgDormBedBo bo, PageQuery pageQuery) { + return xgDormBedService.queryPageList(bo, pageQuery); + } + + /** + * 导出宿舍床位信息列表 + */ + @SaCheckPermission("dormbed:dormBed:export") + @Log(title = "宿舍床位信息", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(XgDormBedBo bo, HttpServletResponse response) { + List list = xgDormBedService.queryList(bo); + ExcelUtil.exportExcel(list, "宿舍床位信息", XgDormBedVo.class, response); + } + + /** + * 获取宿舍床位信息详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("dormbed:dormBed:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(xgDormBedService.queryById(id)); + } + + /** + * 新增宿舍床位信息 + */ + @SaCheckPermission("dormbed:dormBed:add") + @Log(title = "宿舍床位信息", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody XgDormBedBo bo) { + return toAjax(xgDormBedService.insertByBo(bo)); + } + + /** + * 修改宿舍床位信息 + */ + @SaCheckPermission("dormbed:dormBed:edit") + @Log(title = "宿舍床位信息", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody XgDormBedBo bo) { + return toAjax(xgDormBedService.updateByBo(bo)); + } + + /** + * 删除宿舍床位信息 + * + * @param ids 主键串 + */ + @SaCheckPermission("dormbed:dormBed:remove") + @Log(title = "宿舍床位信息", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(xgDormBedService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/XgDormBed.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/XgDormBed.java new file mode 100644 index 00000000..daa4e235 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/XgDormBed.java @@ -0,0 +1,66 @@ +package org.dromara.xg.domain; + +import org.dromara.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 宿舍床位信息对象 xg_dorm_bed + * + * @author zlwu + * @date 2025-07-22 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("xg_dorm_bed") +public class XgDormBed extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id") + private Long id; + + /** + * 床位编号 + */ + private String bedCode; + + /** + * 床位名称 + */ + private String bedName; + + /** + * 所属房间ID + */ + private Long roomId; + + /** + * 床位类型(1下铺 2上铺 3中铺 4独立床) + */ + private String bedType; + + /** + * 床位状态(0空闲 1已分配 2维修中) + */ + private String bedStatus; + + /** + * 删除标志(0代表存在 1代表删除) + */ + @TableLogic(value = "0", delval = "1") + private String deleted; + + /** + * 备注 + */ + private String remark; + +} diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/bo/XgDormBedBo.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/bo/XgDormBedBo.java new file mode 100644 index 00000000..c28c31d1 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/bo/XgDormBedBo.java @@ -0,0 +1,68 @@ +package org.dromara.xg.domain.bo; + +import org.dromara.xg.domain.XgDormBed; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +/** + * 宿舍床位信息业务对象 xg_dorm_bed + * + * @author zlwu + * @date 2025-07-22 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = XgDormBed.class, reverseConvertGenerate = false) +public class XgDormBedBo extends BaseEntity { + + /** + * 主键ID + */ + @NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 床位编号 + */ + @NotBlank(message = "床位编号不能为空", groups = { AddGroup.class, EditGroup.class }) + private String bedCode; + + /** + * 床位名称 + */ + @NotBlank(message = "床位名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String bedName; + + /** + * 所属房间ID + */ + @NotNull(message = "所属房间ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long roomId; + + /** + * 床位类型(1下铺 2上铺 3中铺 4独立床) + */ + private String bedType; + + /** + * 床位状态(0空闲 1已分配 2维修中) + */ + private String bedStatus; + + /** + * 删除标志(0代表存在 1代表删除) + */ + private String deleted; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/vo/DormBuildingInfoVo.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/vo/DormBuildingInfoVo.java index 6d56136b..88dfcadc 100644 --- a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/vo/DormBuildingInfoVo.java +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/vo/DormBuildingInfoVo.java @@ -102,4 +102,9 @@ public class DormBuildingInfoVo implements Serializable { */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date updateTime; + + /** + * 宿舍楼类型(1男生楼 2女生楼 3混合楼)(仅宿舍楼节点有此字段) + */ + private String buildingType; } diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/vo/DormBuildingTreeVo.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/vo/DormBuildingTreeVo.java index 7532e115..7d88c1e4 100644 --- a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/vo/DormBuildingTreeVo.java +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/vo/DormBuildingTreeVo.java @@ -41,6 +41,11 @@ public class DormBuildingTreeVo implements Serializable { */ private Integer buildingFloors; + /** + * 宿舍楼类型(1男生楼 2女生楼 3混合楼)(仅宿舍楼节点有此字段) + */ + private String buildingType; + /** * 子节点 */ diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/vo/XgDormBedVo.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/vo/XgDormBedVo.java new file mode 100644 index 00000000..74d6cf30 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/vo/XgDormBedVo.java @@ -0,0 +1,80 @@ +package org.dromara.xg.domain.vo; + +import org.dromara.xg.domain.XgDormBed; +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 宿舍床位信息视图对象 xg_dorm_bed + * + * @author zlwu + * @date 2025-07-22 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = XgDormBed.class) +public class XgDormBedVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @ExcelProperty(value = "主键ID") + private Long id; + + /** + * 床位编号 + */ + @ExcelProperty(value = "床位编号") + private String bedCode; + + /** + * 床位名称 + */ + @ExcelProperty(value = "床位名称") + private String bedName; + + /** + * 所属房间ID + */ + @ExcelProperty(value = "所属房间ID") + private Long roomId; + + /** + * 床位类型(1下铺 2上铺 3中铺 4独立床) + */ + @ExcelProperty(value = "床位类型(1下铺 2上铺 3中铺 4独立床)") + private String bedType; + + /** + * 床位状态(0空闲 1已分配 2维修中) + */ + @ExcelProperty(value = "床位状态(0空闲 1已分配 2维修中)") + private String bedStatus; + + /** + * 删除标志(0代表存在 1代表删除) + */ + @ExcelProperty(value = "删除标志(0代表存在 1代表删除)") + private String deleted; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/mapper/XgDormBedMapper.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/mapper/XgDormBedMapper.java new file mode 100644 index 00000000..d31dd383 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/mapper/XgDormBedMapper.java @@ -0,0 +1,15 @@ +package org.dromara.xg.mapper; + +import org.dromara.xg.domain.XgDormBed; +import org.dromara.xg.domain.vo.XgDormBedVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 宿舍床位信息Mapper接口 + * + * @author zlwu + * @date 2025-07-22 + */ +public interface XgDormBedMapper extends BaseMapperPlus { + +} diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/IXgDormBedService.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/IXgDormBedService.java new file mode 100644 index 00000000..0452e4a0 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/IXgDormBedService.java @@ -0,0 +1,68 @@ +package org.dromara.xg.service; + +import org.dromara.xg.domain.vo.XgDormBedVo; +import org.dromara.xg.domain.bo.XgDormBedBo; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 宿舍床位信息Service接口 + * + * @author zlwu + * @date 2025-07-22 + */ +public interface IXgDormBedService { + + /** + * 查询宿舍床位信息 + * + * @param id 主键 + * @return 宿舍床位信息 + */ + XgDormBedVo queryById(Long id); + + /** + * 分页查询宿舍床位信息列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 宿舍床位信息分页列表 + */ + TableDataInfo queryPageList(XgDormBedBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的宿舍床位信息列表 + * + * @param bo 查询条件 + * @return 宿舍床位信息列表 + */ + List queryList(XgDormBedBo bo); + + /** + * 新增宿舍床位信息 + * + * @param bo 宿舍床位信息 + * @return 是否新增成功 + */ + Boolean insertByBo(XgDormBedBo bo); + + /** + * 修改宿舍床位信息 + * + * @param bo 宿舍床位信息 + * @return 是否修改成功 + */ + Boolean updateByBo(XgDormBedBo bo); + + /** + * 校验并批量删除宿舍床位信息信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgDormBedServiceImpl.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgDormBedServiceImpl.java new file mode 100644 index 00000000..b0e99e7f --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgDormBedServiceImpl.java @@ -0,0 +1,137 @@ +package org.dromara.xg.service.impl; + +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.dromara.xg.domain.bo.XgDormBedBo; +import org.dromara.xg.domain.vo.XgDormBedVo; +import org.dromara.xg.domain.XgDormBed; +import org.dromara.xg.mapper.XgDormBedMapper; +import org.dromara.xg.service.IXgDormBedService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 宿舍床位信息Service业务层处理 + * + * @author zlwu + * @date 2025-07-22 + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class XgDormBedServiceImpl implements IXgDormBedService { + + private final XgDormBedMapper baseMapper; + + /** + * 查询宿舍床位信息 + * + * @param id 主键 + * @return 宿舍床位信息 + */ + @Override + public XgDormBedVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询宿舍床位信息列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 宿舍床位信息分页列表 + */ + @Override + public TableDataInfo queryPageList(XgDormBedBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的宿舍床位信息列表 + * + * @param bo 查询条件 + * @return 宿舍床位信息列表 + */ + @Override + public List queryList(XgDormBedBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(XgDormBedBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByAsc(XgDormBed::getId); + lqw.like(StringUtils.isNotBlank(bo.getBedCode()), XgDormBed::getBedCode, bo.getBedCode()); + lqw.like(StringUtils.isNotBlank(bo.getBedName()), XgDormBed::getBedName, bo.getBedName()); + lqw.eq(bo.getRoomId() != null, XgDormBed::getRoomId, bo.getRoomId()); + lqw.eq(StringUtils.isNotBlank(bo.getBedType()), XgDormBed::getBedType, bo.getBedType()); + lqw.eq(StringUtils.isNotBlank(bo.getBedStatus()), XgDormBed::getBedStatus, bo.getBedStatus()); + lqw.eq(StringUtils.isNotBlank(bo.getDeleted()), XgDormBed::getDeleted, bo.getDeleted()); + return lqw; + } + + /** + * 新增宿舍床位信息 + * + * @param bo 宿舍床位信息 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(XgDormBedBo bo) { + XgDormBed add = MapstructUtils.convert(bo, XgDormBed.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改宿舍床位信息 + * + * @param bo 宿舍床位信息 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(XgDormBedBo bo) { + XgDormBed update = MapstructUtils.convert(bo, XgDormBed.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(XgDormBed entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除宿舍床位信息信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgDormBuildingTreeServiceImpl.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgDormBuildingTreeServiceImpl.java index 6bc9b2c5..df264460 100644 --- a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgDormBuildingTreeServiceImpl.java +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgDormBuildingTreeServiceImpl.java @@ -141,6 +141,7 @@ public class XgDormBuildingTreeServiceImpl implements IXgDormBuildingTreeService buildingNode.setType("building"); buildingNode.setDisabled(false); // 宿舍楼节点可点击 buildingNode.setBuildingFloors(building.getFloors()); + buildingNode.setBuildingType(building.getBuildingType()); // 将宿舍楼节点添加到对应的宿舍区节点下 DormBuildingTreeVo areaNode = areaMap.get(building.getAreaId()); diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgDormRoomServiceImpl.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgDormRoomServiceImpl.java index 1811a4fd..ad751863 100644 --- a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgDormRoomServiceImpl.java +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgDormRoomServiceImpl.java @@ -40,7 +40,7 @@ public class XgDormRoomServiceImpl implements IXgDormRoomService { * @return 宿舍房间信息 */ @Override - public XgDormRoomVo queryById(Long id){ + public XgDormRoomVo queryById(Long id) { return baseMapper.selectVoById(id); } @@ -73,7 +73,8 @@ public class XgDormRoomServiceImpl implements IXgDormRoomService { private LambdaQueryWrapper buildQueryWrapper(XgDormRoomBo bo) { Map params = bo.getParams(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.orderByAsc(XgDormRoom::getId); + lqw.orderByAsc(XgDormRoom::getFloorNum); // 优先按楼层排序 + lqw.orderByAsc(XgDormRoom::getRoomName); // 其次按房间名称排序 lqw.like(StringUtils.isNotBlank(bo.getRoomCode()), XgDormRoom::getRoomCode, bo.getRoomCode()); lqw.like(StringUtils.isNotBlank(bo.getRoomName()), XgDormRoom::getRoomName, bo.getRoomName()); lqw.eq(bo.getBuildingId() != null, XgDormRoom::getBuildingId, bo.getBuildingId()); @@ -119,8 +120,8 @@ public class XgDormRoomServiceImpl implements IXgDormRoomService { /** * 保存前的数据校验 */ - private void validEntityBeforeSave(XgDormRoom entity){ - //TODO 做一些数据校验,如唯一约束 + private void validEntityBeforeSave(XgDormRoom entity) { + // TODO 做一些数据校验,如唯一约束 } /** @@ -132,8 +133,8 @@ public class XgDormRoomServiceImpl implements IXgDormRoomService { */ @Override public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { - if(isValid){ - //TODO 做一些业务上的校验,判断是否需要校验 + if (isValid) { + // TODO 做一些业务上的校验,判断是否需要校验 } return baseMapper.deleteByIds(ids) > 0; } diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/dormbed/XgDormBedMapper.xml b/backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/dormbed/XgDormBedMapper.xml new file mode 100644 index 00000000..437d6fe7 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/dormbed/XgDormBedMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/xg/XgDormBuildingTreeMapper.xml b/backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/xg/XgDormBuildingTreeMapper.xml index 7076d5cb..0a15ecab 100644 --- a/backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/xg/XgDormBuildingTreeMapper.xml +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/xg/XgDormBuildingTreeMapper.xml @@ -8,6 +8,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -55,6 +56,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" b.building_name, b.building_code, b.campus_id, + b.building_type, c.campus_name, b.area_id, a.area_name, @@ -103,6 +105,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" b.id, b.building_name, b.building_code, + b.building_type, b.campus_id, c.campus_name, b.area_id, @@ -148,6 +151,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" b.building_name, b.building_code, b.campus_id, + b.building_type, c.campus_name, b.area_id, a.area_name, @@ -201,6 +205,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" b.campus_id, c.campus_name, b.area_id, + b.building_type, a.area_name, b.floors, b.remark, @@ -249,6 +254,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" b.id, b.building_name, b.building_code, + b.building_type, b.campus_id, c.campus_name, b.area_id, diff --git a/docs/变更管理/code-adjust-record-2025-07-22-wuzilong.md b/docs/变更管理/code-adjust-record-2025-07-22-wuzilong.md new file mode 100644 index 00000000..9fa141f6 --- /dev/null +++ b/docs/变更管理/code-adjust-record-2025-07-22-wuzilong.md @@ -0,0 +1,68 @@ +# 代码调整记录 - 2025-07-22 + +## 宿舍房间查询排序优化 + +### 变更时间 +2025-07-22 10:35:26 + +### 变更类型 +接口优化 - 数据排序调整 + +### 变更描述 +修改了宿舍房间列表查询接口的排序逻辑,调整为优先按楼层(floorNum)排序,然后按房间名称(roomName)排序,确保宿舍房间按照楼层顺序输出。 + +### 变更文件 +- `backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgDormRoomServiceImpl.java` + +### 变更详情 +原先的排序逻辑: +```java +lqw.orderByAsc(XgDormRoom::getId); +lqw.orderByAsc(XgDormRoom::getFloorNum); // 按楼层排序 +``` + +修改后的排序逻辑: +```java +lqw.orderByAsc(XgDormRoom::getFloorNum); // 优先按楼层排序 +lqw.orderByAsc(XgDormRoom::getRoomName); // 其次按房间名称排序 +``` + +### 原因 +前端展示宿舍房间列表时,需要按照楼层顺序进行排列,但原有排序逻辑中先按ID排序,导致楼层排序不能正确生效。 + +### 影响范围 +- 宿舍分配二级学院页面(xsssfpejxy)中的房间列表显示顺序 +- 其他调用宿舍房间查询接口的功能 + +### 测试验证 +- 验证宿舍楼下的房间是否按楼层升序排列 +- 验证相同楼层的房间是否按房间名称排序 + +# 宿舍管理功能变更记录 + +## 宿舍树性别标识功能添加 + +**时间**:2025-07-22 15:30:00 + +**变更内容**: +1. 在宿舍树显示中,为宿舍楼名称前添加性别标识 + - 男生楼:添加"(男)"前缀,显示蓝色 + - 女生楼:添加"(女)"前缀,显示粉色 +2. 修改前端数据模型 + - 在`DormTreeNode`接口中添加`gender`字段,用于标识宿舍楼性别(1-男生楼,2-女生楼) +3. 修改模拟数据 + - 为模拟数据中的宿舍楼添加性别标识 +4. 适配逻辑处理 + - 对于后端返回的没有性别标识的数据,前端会进行随机分配(临时措施) + +**相关文件**: +- `/web/src/views/xgss/xsssfjgl/index.vue`:修改宿舍树节点显示,添加性别标识和样式 +- `/web/src/api/xgss/xsssfjgl/types.ts`:在`DormTreeNode`接口中添加性别字段 +- `/web/src/api/xgss/xsssfjgl/index.ts`:修改模拟数据,添加性别标识 + +**后续优化建议**: +1. 后端需要确保返回的宿舍楼数据中包含性别信息 +2. 宿舍楼管理功能中应添加性别设置选项 +3. 考虑在宿舍树过滤功能中添加按性别筛选功能 + +**相关SQL变更**:无(本次只涉及前端显示变更) \ No newline at end of file diff --git a/docs/开发文档/API/宿舍房间管理API.md b/docs/开发文档/API/宿舍房间管理API.md index 165e0684..6c031ea1 100644 --- a/docs/开发文档/API/宿舍房间管理API.md +++ b/docs/开发文档/API/宿舍房间管理API.md @@ -6,6 +6,8 @@ - [1.1 获取宿舍楼树形结构](#11-获取宿舍楼树形结构) - [2. 宿舍楼信息管理](#2-宿舍楼信息管理) - [2.1 获取宿舍楼列表](#21-获取宿舍楼列表) +- [3. 宿舍房间管理](#3-宿舍房间管理) + - [3.1 获取宿舍房间列表](#31-获取宿舍房间列表) ## 1. 宿舍楼树形结构 @@ -60,14 +62,16 @@ xgss:dormBuildingTree:list "label": "1号楼", "type": "building", "disabled": false, - "buildingFloors": 6 + "buildingFloors": 6, + "gender": "male" }, { "id": 1002, "label": "2号楼", "type": "building", "disabled": false, - "buildingFloors": 5 + "buildingFloors": 5, + "gender": "female" } ] }, @@ -97,10 +101,11 @@ xgss:dormBuildingTree:list | 参数名 | 类型 | 描述 | | -------------- | ------- | ------------------------------------------------ | | id | Long | 节点ID | -| label | String | 节点名称 | -| type | String | 节点类型(campus:校区,area:宿舍区,building:宿舍楼) | +| label | String | 节点显示名称 | +| type | String | 节点类型(campus:校区、area:宿舍区、building:宿舍楼) | | disabled | Boolean | 是否禁用点击(校区和宿舍区为true,宿舍楼为false) | | buildingFloors | Integer | 宿舍楼层数(只有宿舍楼节点有此字段) | +| gender | String | 宿舍楼性别(只有宿舍楼节点有此字段) | | children | Array | 子节点列表 | #### 数据权限说明 @@ -260,4 +265,145 @@ async function getDormBuildingList(params) { } return { total: 0, rows: [] }; } +``` + +## 3. 宿舍房间管理 + +### 3.1 获取宿舍房间列表 + +#### 接口说明 + +该接口用于获取宿舍房间信息的列表,包含房间基本信息。列表按照楼层升序、房间名称升序排列。 + +#### 请求方式 + +``` +GET /xgss/dormRoom/list +``` + +#### 权限要求 + +``` +xgss:dormRoom:list +``` + +#### 请求参数 + +| 参数名 | 类型 | 必须 | 描述 | +| ---------- | ------- | ---- | ---------------------- | +| pageNum | Integer | 是 | 当前页码,从1开始 | +| pageSize | Integer | 是 | 每页记录数 | +| buildingId | Long | 否 | 宿舍楼ID,精确查询 | +| roomName | String | 否 | 房间名称,模糊查询 | +| floorNum | Integer | 否 | 楼层号,精确查询 | +| roomType | String | 否 | 房间类型(1标准间 2单人间 3套间) | +| roomStatus | String | 否 | 房间状态(0正常 1维修中 2停用) | + +#### 返回结果 + +```json +{ + "total": 2, + "rows": [ + { + "id": "1947459199879495682", + "roomCode": "room-101", + "roomName": "101", + "buildingId": "1947459199879495681", + "floorNum": 1, + "roomType": "1", + "standardBeds": 4, + "actualBeds": 4, + "roomArea": 20.5, + "roomStatus": "0", + "remark": "标准四人间", + "createBy": 1, + "createTime": "2025-07-22 09:15:30", + "updateBy": 1, + "updateTime": "2025-07-22 09:15:30" + }, + { + "id": "1947459199879495683", + "roomCode": "room-201", + "roomName": "201", + "buildingId": "1947459199879495681", + "floorNum": 2, + "roomType": "1", + "standardBeds": 4, + "actualBeds": 4, + "roomArea": 20.5, + "roomStatus": "0", + "remark": "标准四人间", + "createBy": 1, + "createTime": "2025-07-22 09:15:30", + "updateBy": 1, + "updateTime": "2025-07-22 09:15:30" + } + ], + "code": 200, + "msg": "查询成功" +} +``` + +#### 返回参数说明 + +| 参数名 | 类型 | 描述 | +| ------------ | ------- | --------------------------------------- | +| id | Long | 房间主键ID | +| roomCode | String | 房间编码 | +| roomName | String | 房间名称 | +| buildingId | Long | 所属宿舍楼ID | +| floorNum | Integer | 楼层号 | +| roomType | String | 房间类型(1标准间 2单人间 3套间) | +| standardBeds | Integer | 标准床位数 | +| actualBeds | Integer | 实际床位数 | +| roomArea | Double | 房间面积(平方米) | +| roomStatus | String | 房间状态(0正常 1维修中 2停用) | +| remark | String | 备注 | +| createBy | Long | 创建者ID | +| createTime | Date | 创建时间 | +| updateBy | Long | 更新者ID | +| updateTime | Date | 更新时间 | + +#### 排序规则 + +房间列表按照以下顺序排序: +1. 优先按楼层号(floorNum)升序排列 +2. 其次按房间名称(roomName)升序排列 + +这确保了在宿舍管理系统中房间按照从低楼层到高楼层的顺序展示,相同楼层的房间按照名称顺序排列,提供更直观的浏览体验。 + +#### 错误码 + +| 错误码 | 描述 | +| ------ | -------------------- | +| 401 | 未授权,需要登录 | +| 403 | 无权限访问该接口 | +| 500 | 服务器内部错误 | + +#### 使用示例 + +```javascript +// 前端代码示例(使用axios) +import axios from 'axios'; + +// 获取宿舍房间列表 +async function getDormRoomList(params) { + try { + const response = await axios.get('/xgss/dormRoom/list', { + params: { + pageNum: 1, + pageSize: 100, + buildingId: buildingId, + ...params + } + }); + if (response.data.code === 200) { + return response.data; + } + } catch (error) { + console.error('获取宿舍房间列表失败:', error); + } + return { total: 0, rows: [] }; +} ``` \ No newline at end of file diff --git a/docs/设计文档/database/学工管理-宿舍管理/宿舍管理数据库建表脚本.sql b/docs/设计文档/database/学工管理-宿舍管理/宿舍管理数据库建表脚本.sql index 9b6f5c1a..d8e17d64 100644 --- a/docs/设计文档/database/学工管理-宿舍管理/宿舍管理数据库建表脚本.sql +++ b/docs/设计文档/database/学工管理-宿舍管理/宿舍管理数据库建表脚本.sql @@ -109,6 +109,7 @@ create table `xg_dorm_bed` ( `bed_status` char(1) default '0' comment '床位状态(0空闲 1已分配 2维修中)', `deleted` char(1) default '0' comment '删除标志(0代表存在 1代表删除)', `tenant_id` bigint(20) default '0' comment '租户编号', + `create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门', `create_by` bigint(20) default null comment '创建者', `create_time` datetime default null comment '创建时间', `update_by` bigint(20) default null comment '更新者', diff --git a/web/src/api/xgss/dormBed/index.ts b/web/src/api/xgss/dormBed/index.ts new file mode 100644 index 00000000..ec52eaa8 --- /dev/null +++ b/web/src/api/xgss/dormBed/index.ts @@ -0,0 +1,63 @@ +import request from '@/utils/request'; +import { AxiosPromise } from 'axios'; +import { DormBedVO, DormBedForm, DormBedQuery } from '@/api/xgss/dormBed/types'; + +/** + * 查询宿舍床位信息列表 + * @param query + * @returns {*} + */ + +export const listDormBed = (query?: DormBedQuery): AxiosPromise => { + return request({ + url: '/dormbed/dormBed/list', + method: 'get', + params: query + }); +}; + +/** + * 查询宿舍床位信息详细 + * @param id + */ +export const getDormBed = (id: string | number): AxiosPromise => { + return request({ + url: '/dormbed/dormBed/' + id, + method: 'get' + }); +}; + +/** + * 新增宿舍床位信息 + * @param data + */ +export const addDormBed = (data: DormBedForm) => { + return request({ + url: '/dormbed/dormBed', + method: 'post', + data: data + }); +}; + +/** + * 修改宿舍床位信息 + * @param data + */ +export const updateDormBed = (data: DormBedForm) => { + return request({ + url: '/dormbed/dormBed', + method: 'put', + data: data + }); +}; + +/** + * 删除宿舍床位信息 + * @param id + */ +export const delDormBed = (id: string | number | Array) => { + return request({ + url: '/dormbed/dormBed/' + id, + method: 'delete' + }); +}; diff --git a/web/src/api/xgss/dormBed/types.ts b/web/src/api/xgss/dormBed/types.ts new file mode 100644 index 00000000..ca79033b --- /dev/null +++ b/web/src/api/xgss/dormBed/types.ts @@ -0,0 +1,66 @@ +/** + * 宿舍床位信息查询参数 + */ +export interface DormBedQuery { + /** 床位编号 */ + bedCode?: string; + /** 床位名称 */ + bedName?: string; + /** 所属房间ID */ + roomId?: string | number; + /** 床位状态(0=空闲,1=已分配,2=维修中) */ + bedStatus?: string; + /** 床位类型(1=下铺,2=上铺,3=中铺,4=独立床) */ + bedType?: string; +} + +/** + * 宿舍床位信息对象 + */ +export interface DormBedVO { + /** 床位ID */ + id: string | number; + /** 床位编号 */ + bedCode: string; + /** 床位名称 */ + bedName: string; + /** 所属房间ID */ + roomId: string | number; + /** 床位状态(0=空闲,1=已分配,2=维修中) */ + bedStatus: string; + /** 床位类型(1=下铺,2=上铺,3=中铺,4=独立床) */ + bedType: string; + /** 备注 */ + remark?: string; + /** 创建者 */ + createBy: number; + /** 创建时间 */ + createTime: Date; + /** 更新者 */ + updateBy: number; + /** 更新时间 */ + updateTime: Date; +} + +/** + * 宿舍床位信息表单对象 + */ +export interface DormBedForm { + /** 床位ID */ + id: string | number; + /** 床位编号 */ + bedCode: string; + /** 床位名称 */ + bedName: string; + /** 所属房间ID */ + roomId: string | number; + /** 床位状态(0=空闲,1=已分配,2=维修中) */ + bedStatus: string; + /** 床位类型(1=下铺,2=上铺,3=中铺,4=独立床) */ + bedType: string; + /** 备注 */ + remark?: string; +} + + + diff --git a/web/src/api/xgss/dormRoom/index.ts b/web/src/api/xgss/dormRoom/index.ts new file mode 100644 index 00000000..abb407c0 --- /dev/null +++ b/web/src/api/xgss/dormRoom/index.ts @@ -0,0 +1,63 @@ +import request from '@/utils/request'; +import { AxiosPromise } from 'axios'; +import { DormRoomVO, DormRoomForm, DormRoomQuery } from '@/api/xgss/dormRoom/types'; + +/** + * 查询宿舍房间信息列表 + * @param query + * @returns {*} + */ + +export const listDormRoom = (query?: DormRoomQuery): AxiosPromise => { + return request({ + url: '/xgss/dormRoom/list', + method: 'get', + params: query + }); +}; + +/** + * 查询宿舍房间信息详细 + * @param id + */ +export const getDormRoom = (id: string | number): AxiosPromise => { + return request({ + url: '/xgss/dormRoom/' + id, + method: 'get' + }); +}; + +/** + * 新增宿舍房间信息 + * @param data + */ +export const addDormRoom = (data: DormRoomForm) => { + return request({ + url: '/xgss/dormRoom', + method: 'post', + data: data + }); +}; + +/** + * 修改宿舍房间信息 + * @param data + */ +export const updateDormRoom = (data: DormRoomForm) => { + return request({ + url: '/xgss/dormRoom', + method: 'put', + data: data + }); +}; + +/** + * 删除宿舍房间信息 + * @param id + */ +export const delDormRoom = (id: string | number | Array) => { + return request({ + url: '/xgss/dormRoom/' + id, + method: 'delete' + }); +}; diff --git a/web/src/api/xgss/dormRoom/types.ts b/web/src/api/xgss/dormRoom/types.ts new file mode 100644 index 00000000..11d29158 --- /dev/null +++ b/web/src/api/xgss/dormRoom/types.ts @@ -0,0 +1,176 @@ +export interface DormRoomVO { + /** + * 主键ID + */ + id: string | number; + + /** + * 房间编号 + */ + roomCode: string; + + /** + * 房间名称 + */ + roomName: string; + + /** + * 所属宿舍楼ID + */ + buildingId: string | number; + + /** + * 楼层 + */ + floorNum: number; + + /** + * 房间类型(1标准间 2 单人间 3 套间) + */ + roomType: string; + + /** + * 实际床位数 + */ + actualBeds: number; + + /** + * 当前床位数 + */ + currentBeds?: number; + + /** + * 房间面积(平方米) + */ + roomArea: number; + + /** + * 房间状态(0可用 1维修中 2停用) + */ + roomStatus: string; + + /** + * 删除标志(0代表存在 1代表删除) + */ + deleted: string; + + /** + * 备注 + */ + remark: string; + +} + +export interface DormRoomForm extends BaseEntity { + /** + * 主键ID + */ + id?: string | number; + + /** + * 房间编号 + */ + roomCode?: string; + + /** + * 房间名称 + */ + roomName?: string; + + /** + * 所属宿舍楼ID + */ + buildingId?: string | number; + + /** + * 楼层 + */ + floorNum?: number; + + /** + * 房间类型(1标准间 2 单人间 3 套间) + */ + roomType?: string; + + /** + * 实际床位数 + */ + actualBeds?: number; + + /** + * 房间面积(平方米) + */ + roomArea?: number; + + /** + * 房间状态(0可用 1维修中 2停用) + */ + roomStatus?: string; + + /** + * 删除标志(0代表存在 1代表删除) + */ + deleted?: string; + + /** + * 备注 + */ + remark?: string; + +} + +export interface DormRoomQuery extends PageQuery { + + /** + * 房间编号 + */ + roomCode?: string; + + /** + * 房间名称 + */ + roomName?: string; + + /** + * 所属宿舍楼ID + */ + buildingId?: string | number; + + /** + * 楼层 + */ + floorNum?: number; + + /** + * 房间类型(1标准间 2 单人间 3 套间) + */ + roomType?: string; + + /** + * 实际床位数 + */ + actualBeds?: number; + + /** + * 房间面积(平方米) + */ + roomArea?: number; + + /** + * 房间状态(0可用 1维修中 2停用) + */ + roomStatus?: string; + + /** + * 删除标志(0代表存在 1代表删除) + */ + deleted?: string; + + /** + * 日期范围参数 + */ + params?: any; +} + + + diff --git a/web/src/api/xgss/xsssfjgl/index.ts b/web/src/api/xgss/xsssfjgl/index.ts index 385fc371..47c3174b 100644 --- a/web/src/api/xgss/xsssfjgl/index.ts +++ b/web/src/api/xgss/xsssfjgl/index.ts @@ -148,13 +148,15 @@ export function getMockDormTree(): { data: DormTreeNode[] } { id: 111, label: '东区1号楼', type: 'building', - buildingFloors: 6 + buildingFloors: 6, + gender: '1' // 男生楼 }, { id: 112, label: '东区2号楼', type: 'building', - buildingFloors: 8 + buildingFloors: 8, + gender: '2' // 女生楼 } ] } @@ -176,13 +178,15 @@ export function getMockDormTree(): { data: DormTreeNode[] } { id: 211, label: '西区1号楼', type: 'building', - buildingFloors: 7 + buildingFloors: 7, + gender: '2' // 女生楼 }, { id: 212, label: '西区2号楼', type: 'building', - buildingFloors: 5 + buildingFloors: 5, + gender: '1' // 男生楼 } ] } diff --git a/web/src/api/xgss/xsssfjgl/types.ts b/web/src/api/xgss/xsssfjgl/types.ts index 4226a7a5..71ac3c02 100644 --- a/web/src/api/xgss/xsssfjgl/types.ts +++ b/web/src/api/xgss/xsssfjgl/types.ts @@ -20,6 +20,7 @@ export interface DormTreeNode { type: 'campus' | 'area' | 'building'; // 节点类型:校区、宿舍区、宿舍楼 disabled?: boolean; // 是否禁用选择 buildingFloors?: number; // 宿舍楼层数 + gender?: string; // 宿舍楼性别: 1-男生楼, 2-女生楼 } // 房间信息 @@ -72,9 +73,12 @@ export interface RoomForm { // 床位表单 export interface BedForm { + id?: string | number; bedId?: string | number; + bedCode: string; bedName: string; roomId: string | number; - status: string; + bedType: string; + bedStatus: string; remark?: string; } diff --git a/web/src/views/xgss/xsssfjgl/components/BedDialog.vue b/web/src/views/xgss/xsssfjgl/components/BedDialog.vue index 58bb5dfb..2374f95d 100644 --- a/web/src/views/xgss/xsssfjgl/components/BedDialog.vue +++ b/web/src/views/xgss/xsssfjgl/components/BedDialog.vue @@ -1,16 +1,27 @@