diff --git a/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/mapper/ClassRoomMapper.java b/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/mapper/ClassRoomMapper.java index afb46e1a..2dc2b229 100644 --- a/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/mapper/ClassRoomMapper.java +++ b/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/mapper/ClassRoomMapper.java @@ -20,4 +20,11 @@ public interface ClassRoomMapper extends BaseMapper { * @return 分页结果 */ Page selectPageList(Page page, @Param("jsb") JSB jsb); + + /** + * 获取最大教室编号(仅统计纯数字编号) + * + * @return 最大教室编号 + */ + String selectMaxJsbh(); } \ No newline at end of file diff --git a/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/mapper/ClassRoomMapper.xml b/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/mapper/ClassRoomMapper.xml index fa9220ee..40888956 100644 --- a/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/mapper/ClassRoomMapper.xml +++ b/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/mapper/ClassRoomMapper.xml @@ -54,4 +54,8 @@ ORDER BY 序号 + + \ No newline at end of file diff --git a/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/service/impl/ClassRoomServiceImpl.java b/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/service/impl/ClassRoomServiceImpl.java index 746c8169..38652583 100644 --- a/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/service/impl/ClassRoomServiceImpl.java +++ b/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/service/impl/ClassRoomServiceImpl.java @@ -2,6 +2,7 @@ package com.roomroot.jwgl.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.roomroot.common.utils.StringUtils; import com.roomroot.jwgl.entity.JSB; import com.roomroot.jwgl.mapper.ClassRoomMapper; import com.roomroot.jwgl.service.ClassRoomService; @@ -26,9 +27,30 @@ public class ClassRoomServiceImpl implements ClassRoomService { public void add(JSB jsb) { jsb.setId(UuidUtil.getUUID()); jsb.setDelFlag(0); + // 教室编号为非空列:留空时按现有最大数字编号 +1 自动生成 + if (StringUtils.isEmpty(jsb.getJsbh())) { + jsb.setJsbh(nextJsbh()); + } else { + jsb.setJsbh(jsb.getJsbh().trim()); + } jsbMapper.insert(jsb); } + /** + * 获取下一个教室编号(纯数字编号中取最大值 +1) + */ + private String nextJsbh() { + String maxJsbh = jsbMapper.selectMaxJsbh(); + if (StringUtils.isEmpty(maxJsbh)) { + return "1"; + } + try { + return String.valueOf(Integer.parseInt(maxJsbh.trim()) + 1); + } catch (NumberFormatException e) { + return "1"; + } + } + @Override public void delete(String id) { JSB jsb = getById(id); diff --git a/frontend/src/views/teachBusiness/venue/index.vue b/frontend/src/views/teachBusiness/venue/index.vue index 3ef95245..32a6d2b3 100644 --- a/frontend/src/views/teachBusiness/venue/index.vue +++ b/frontend/src/views/teachBusiness/venue/index.vue @@ -100,6 +100,11 @@ :close-on-click-modal="false"> + + + + + @@ -107,7 +112,15 @@ - + + + @@ -200,6 +213,7 @@ import { listClassroom, listAllClassroom } from '@/api/teachBusiness/classroom' +import { listAllBuild } from '@/api/teachBusiness/build' export default { name: 'Venue', @@ -215,6 +229,9 @@ export default { }, tableData: [], jxcdlxOptions: [], + // 教学楼下拉选项(来源:教学楼表,未删除数据) + buildOptions: [], + buildOptionsLoading: false, total: 0, pageNum: 1, pageSize: 20, @@ -231,9 +248,26 @@ export default { }, created() { this.loadVenueTypeOptions() + this.loadBuildOptions() this.fetchList() }, methods: { + /** 加载全部未删除的教学楼,作为新增/编辑弹窗中教学楼代号下拉选项。 */ + loadBuildOptions() { + this.buildOptionsLoading = true + listAllBuild().then(response => { + this.buildOptions = Array.isArray(response.data) ? response.data : [] + }).catch(() => { + this.buildOptions = [] + }).finally(() => { + this.buildOptionsLoading = false + }) + }, + + formatBuildLabel(item) { + const base = [item.jxldh, item.jxlmc].filter(Boolean).join(' ') + return base || item.id + }, /** * 独立加载全部场地类型,避免查询结果收窄后下拉候选项同步丢失。 */