|
|
@@ -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,
|
|
|
};
|
|
|
|