From 1149c2b141c98b28ebbd8e398b2258d3ad943000 Mon Sep 17 00:00:00 2001 From: wangzhibiao Date: Fri, 9 Oct 2026 15:48:13 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=BC=80=E7=8F=AD=E4=B8=BB?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=EF=BC=9A=E5=AE=9E=E7=8E=B0=E5=AD=A6=E6=A0=A1?= =?UTF-8?q?=E5=91=A8=E8=AF=BE=E8=A1=A8=E5=B1=95=E7=A4=BA=E3=80=81=E4=BD=8F?= =?UTF-8?q?=E5=AE=BF=E7=8A=B6=E6=80=81=E7=9B=B4=E8=A7=82=E5=A4=96=E9=9C=B2?= =?UTF-8?q?=E5=8F=8A=E8=AF=BE=E6=AC=A1=E8=80=83=E5=8B=A4=E9=97=AD=E7=8E=AF?= =?UTF-8?q?=E8=81=94=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../train/domain/vo/EnrollmentItemVO.java | 52 ++ .../mapper/train/TrainEnrollmentMapper.xml | 16 +- build_ui/src/views/train/checkin/index.vue | 13 +- .../train/plan/components/EnrollmentPanel.vue | 25 + .../train/plan/components/TimetablePanel.vue | 641 +++++++++++++++++- build_ui/src/views/train/plan/index.vue | 36 +- 6 files changed, 773 insertions(+), 10 deletions(-) diff --git a/RuoYi-Vue/ruoyi-train/src/main/java/com/ruoyi/train/domain/vo/EnrollmentItemVO.java b/RuoYi-Vue/ruoyi-train/src/main/java/com/ruoyi/train/domain/vo/EnrollmentItemVO.java index 6074d3402..172b9a31e 100644 --- a/RuoYi-Vue/ruoyi-train/src/main/java/com/ruoyi/train/domain/vo/EnrollmentItemVO.java +++ b/RuoYi-Vue/ruoyi-train/src/main/java/com/ruoyi/train/domain/vo/EnrollmentItemVO.java @@ -55,6 +55,18 @@ public class EnrollmentItemVO /** 备注 */ private String remark; + /** 宿舍楼栋 (当前分配) */ + private String dormBuilding; + + /** 宿舍房间号 (当前分配) */ + private String dormRoom; + + /** 床位号 (当前分配) */ + private String bedNo; + + /** 住宿状态 (0: 预分配, 1: 已入住, 2: 已退宿) */ + private Integer accommodationStatus; + public Long getEnrollmentId() { return enrollmentId; @@ -204,4 +216,44 @@ public class EnrollmentItemVO { this.remark = remark; } + + public String getDormBuilding() + { + return dormBuilding; + } + + public void setDormBuilding(String dormBuilding) + { + this.dormBuilding = dormBuilding; + } + + public String getDormRoom() + { + return dormRoom; + } + + public void setDormRoom(String dormRoom) + { + this.dormRoom = dormRoom; + } + + public String getBedNo() + { + return bedNo; + } + + public void setBedNo(String bedNo) + { + this.bedNo = bedNo; + } + + public Integer getAccommodationStatus() + { + return accommodationStatus; + } + + public void setAccommodationStatus(Integer accommodationStatus) + { + this.accommodationStatus = accommodationStatus; + } } diff --git a/RuoYi-Vue/ruoyi-train/src/main/resources/mapper/train/TrainEnrollmentMapper.xml b/RuoYi-Vue/ruoyi-train/src/main/resources/mapper/train/TrainEnrollmentMapper.xml index 77e028dea..4532a238a 100644 --- a/RuoYi-Vue/ruoyi-train/src/main/resources/mapper/train/TrainEnrollmentMapper.xml +++ b/RuoYi-Vue/ruoyi-train/src/main/resources/mapper/train/TrainEnrollmentMapper.xml @@ -78,9 +78,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" e.accommodation_required as accommodationRequired, e.join_time as joinTime, e.complete_time as completeTime, - e.remark as remark + e.remark as remark, + d.dorm_building as dormBuilding, + d.dorm_room as dormRoom, + a.bed_no as bedNo, + a.accommodation_status as accommodationStatus from train_enrollment e left join train_student s on e.student_id = s.s_id + left join ( + select a1.enrollment_id, a1.dorm_id, a1.bed_no, a1.accommodation_status + from train_accommodation a1 + inner join ( + select enrollment_id, max(accommodation_id) as max_id + from train_accommodation + group by enrollment_id + ) a2 on a1.accommodation_id = a2.max_id + ) a on e.enrollment_id = a.enrollment_id + left join train_dormitory_info d on a.dorm_id = d.dorm_id e.plan_id = #{planId} diff --git a/build_ui/src/views/train/checkin/index.vue b/build_ui/src/views/train/checkin/index.vue index cc38fb69e..f8440f81b 100644 --- a/build_ui/src/views/train/checkin/index.vue +++ b/build_ui/src/views/train/checkin/index.vue @@ -389,15 +389,20 @@ export default { }).finally(() => { this.loading = false }) }, loadPlans() { + const queryPlanId = this.$route.query.planId + const queryLessonId = this.$route.query.lessonId listPlan({ pageNum: 1, pageSize: 100 }).then(response => { this.planOptions = response.rows || [] - if (this.planOptions.length > 0 && !this.rosterQuery.planId) { + if (queryPlanId && this.planOptions.some(p => p.planId === queryPlanId)) { + this.rosterQuery.planId = queryPlanId + this.handlePlanChange(queryPlanId, queryLessonId) + } else if (this.planOptions.length > 0 && !this.rosterQuery.planId) { this.rosterQuery.planId = this.planOptions[0].planId this.handlePlanChange(this.rosterQuery.planId) } }).catch(() => {}) }, - handlePlanChange(planId) { + handlePlanChange(planId, targetLessonId) { this.rosterQuery.lessonId = null this.rosterList = [] this.lessonOptions = [] @@ -425,7 +430,9 @@ export default { } this.lessonOptions = list if (list.length > 0) { - this.rosterQuery.lessonId = list[0].lessonId + const parsedTarget = targetLessonId ? Number(targetLessonId) : null + const matched = parsedTarget ? list.find(item => item.lessonId === parsedTarget) : null + this.rosterQuery.lessonId = matched ? matched.lessonId : list[0].lessonId this.loadRoster() } }).finally(() => { diff --git a/build_ui/src/views/train/plan/components/EnrollmentPanel.vue b/build_ui/src/views/train/plan/components/EnrollmentPanel.vue index 3cc470cc1..f9687b055 100644 --- a/build_ui/src/views/train/plan/components/EnrollmentPanel.vue +++ b/build_ui/src/views/train/plan/components/EnrollmentPanel.vue @@ -82,6 +82,31 @@ + + + - +