zlwu 1 anno fa
parent
commit
5f7c6f16c7

+ 1 - 1
backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgDormBedStudentController.java

@@ -323,7 +323,7 @@ public class XgDormBedStudentController extends BaseController {
 
     /**
      * 根据房间ID获取住在当前房间的所有学生信息
-     * 包含学生姓名、学号、性别、学院名称、专业名称、班级名称
+     * 包含学生姓名、学号、性别、学院名称、专业名称、班级名称、床位编码、床位ID
      */
     @SaCheckPermission("dormBedStudent:dormBedStudent:list")
     @GetMapping("/getRoomStudents")

+ 2 - 1
backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/mapper/XgDormBedStudentMapper.java

@@ -143,7 +143,7 @@ public interface XgDormBedStudentMapper extends BaseMapperPlus<XgDormBedStudent,
 
     /**
      * 根据房间ID查询住在当前房间的所有学生信息
-     * 包含学生姓名、学号、性别、学院名称、专业名称、班级名称
+     * 包含学生姓名、学号、性别、学院名称、专业名称、班级名称、床位编码、床位ID
      *
      * @param roomId 房间ID
      * @return 房间学生信息列表
@@ -160,6 +160,7 @@ public interface XgDormBedStudentMapper extends BaseMapperPlus<XgDormBedStudent,
 
                 -- 床位信息
                 b.bed_name,
+                b.bed_code,
 
                 -- 班级信息
                 c.class_name,

+ 1 - 1
backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/IXgDormBedStudentService.java

@@ -236,7 +236,7 @@ public interface IXgDormBedStudentService {
 
     /**
      * 根据房间ID获取住在当前房间的所有学生信息
-     * 包含学生姓名、学号、性别、学院名称、专业名称、班级名称
+     * 包含学生姓名、学号、性别、学院名称、专业名称、班级名称、床位编码、床位ID
      *
      * @param roomId 房间ID
      * @return 房间学生信息列表

+ 3 - 1
backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgDormBedStudentServiceImpl.java

@@ -2270,7 +2270,7 @@ public class XgDormBedStudentServiceImpl implements IXgDormBedStudentService {
 
     /**
      * 根据房间ID获取住在当前房间的所有学生信息
-     * 包含学生姓名、学号、性别、学院名称、专业名称、班级名称
+     * 包含学生姓名、学号、性别、学院名称、专业名称、班级名称、床位编码、床位ID
      */
     @Override
     public List<Object> getRoomStudents(Long roomId) {
@@ -2299,6 +2299,8 @@ public class XgDormBedStudentServiceImpl implements IXgDormBedStudentService {
 
                 // 床位信息
                 studentInfo.put("bedName", detailMap.get("bed_name"));
+                studentInfo.put("bedCode", detailMap.get("bed_code"));
+                studentInfo.put("bedId", detailMap.get("bed_id"));
 
                 result.add(studentInfo);
             }

+ 39 - 6
mobile/src/pages/xgss/wsjc/wsjcAdd.vue

@@ -186,7 +186,7 @@
                     <u-form-item label="宿舍总分" prop="totalScore" required>
                         <u-input
                             v-model="formData.totalScore"
-                            type="number"
+                            type="digit"
                             placeholder="请输入宿舍总分(0-100分)"
                             @input="handleTotalScoreChange"
                         />
@@ -236,7 +236,7 @@
                                         <text class="form-label">个人得分</text>
                                         <u-input
                                             v-model="student.student_score"
-                                            type="number"
+                                            type="digit"
                                             placeholder="0-100分"
                                             size="small"
                                             style="
@@ -678,11 +678,24 @@ export default {
                 checkLevel: [{ required: true, message: '请选择检查级别', trigger: 'change' }],
                 hygieneGrade: [{ required: true, message: '请选择卫生等级', trigger: 'change' }],
                 totalScore: [
-                    { required: true, message: '请输入宿舍总分', trigger: 'blur' },
                     {
-                        pattern: /^([0-9]|[1-9]\d|100)$/,
-                        message: '宿舍总分必须是0-100之间的整数',
+                        required: true,
+                        message: '请输入宿舍总分',
                         trigger: 'blur',
+                        validator: (rule, value, callback) => {
+                            if (value === null || value === undefined || value === '') {
+                                callback(new Error('请输入宿舍总分'));
+                            } else {
+                                const numValue = Number(value);
+                                if (isNaN(numValue)) {
+                                    callback(new Error('宿舍总分必须是数字'));
+                                } else if (numValue < 0 || numValue > 100) {
+                                    callback(new Error('宿舍总分必须在0-100之间'));
+                                } else {
+                                    callback();
+                                }
+                            }
+                        },
                     },
                 ],
             },
@@ -1092,6 +1105,14 @@ export default {
                 if (res && res.code === 200 && res.data) {
                     Object.assign(this.formData, res.data);
 
+                    // 确保totalScore为字符串类型,避免验证问题
+                    if (
+                        this.formData.totalScore !== null &&
+                        this.formData.totalScore !== undefined
+                    ) {
+                        this.formData.totalScore = String(this.formData.totalScore);
+                    }
+
                     // 设置时间显示
                     if (this.formData.checkDate) {
                         const date = new Date(this.formData.checkDate);
@@ -1226,6 +1247,8 @@ export default {
                             student_grade: item.studentGrade || 'A',
                             showAttendancePicker: false,
                             showGradePicker: false,
+                            bedCode: item.bedCode,
+                            bedName: item.bedCode,
                         }));
                         return;
                     }
@@ -1501,6 +1524,11 @@ export default {
 
         // 总分变化处理
         handleTotalScoreChange() {
+            // 确保totalScore为字符串类型,避免验证问题
+            if (this.formData.totalScore !== null && this.formData.totalScore !== undefined) {
+                this.formData.totalScore = String(this.formData.totalScore);
+            }
+
             const score = parseFloat(this.formData.totalScore);
 
             // 验证分数范围
@@ -2515,7 +2543,8 @@ export default {
                     majorName: student.majorName,
                     collegeName: student.collegeName,
                     bedId: student.bedId,
-                    bedCode: student.bedName,
+                    bedCode: student.bedCode,
+                    bedName: student.bedName,
                     studentScore: student.student_score ? Number(student.student_score) : undefined,
                     attendanceStatus: student.attendance_status,
                     studentGrade: student.student_grade,
@@ -2529,6 +2558,10 @@ export default {
                 // 构建提交数据
                 const submitData = {
                     ...this.formData,
+                    // 确保totalScore为数字类型
+                    totalScore: this.formData.totalScore
+                        ? Number(this.formData.totalScore)
+                        : undefined,
                     studentScores: studentScores,
                 };
 

+ 7 - 5
web/src/views/xg/xgss/dormHygieneCheck/dormHygieneCheck/DormHygieneCheckDialog.vue

@@ -744,18 +744,19 @@ const submitForm = () => {
         // 处理学生信息数据,转换为符合API接口的格式
         const studentScores = roomStudents.value.map((student: any) => {
           const studentScore: any = {
-            studentId: Number(student.studentId), // 确保是数字类型
+            studentId: student.studentId, // 保持原始类型,避免精度丢失
             studentName: student.studentName,
             studentNo: student.studentNo,
             className: student.className,
             majorName: student.majorName,
             collegeName: student.collegeName,
-            bedId: student.bedId ? Number(student.bedId) : undefined,
-            bedCode: student.bedName, // 使用bedName作为bedCode
-            studentScore: student.student_score ? Number(student.student_score) : undefined, // 确保是数字类型
+            bedId: student.bedId, // 保持原始类型,避免精度丢失
+            bedCode: student.bedCode,
+            bedName: student.bedName,
+            studentScore: student.student_score ? Number(student.student_score) : undefined, // 分数可以安全转换为数字
             attendanceStatus: student.attendance_status,
             studentGrade: student.student_grade,
-            isResponsiblePerson: student.isResponsiblePerson ? Number(student.isResponsiblePerson) : 0, // 确保是数字类型
+            isResponsiblePerson: student.isResponsiblePerson ? Number(student.isResponsiblePerson) : 0, // 布尔值转换安全
             scoreRemarks: student.scoreRemarks || '',
             improvementNotes: student.improvementNotes || ''
           };
@@ -1132,6 +1133,7 @@ const loadRoomStudents = async () => {
           collegeName: studentScore.collegeName,
           bedId: studentScore.bedId,
           bedName: studentScore.bedCode, // 使用bedCode作为bedName显示
+          bedCode: studentScore.bedCode,
           gender: studentScore.gender || '1', // 默认女性,如果没有性别字段
           // 使用历史评分数据
           student_score: studentScore.studentScore || null,