在宿舍卫生检查编辑模式下,提交表单时 studentScores 数据中缺少学生评分记录的 id 字段,导致后端无法正确识别和更新现有的学生评分记录。
id 字段id 字段form.totalScore !== '' 的类型比较错误文件: web/src/views/xg/xgss/dormHygieneCheck/dormHygieneCheck/DormHygieneCheckDialog.vue
修改内容:
// 修复前
roomStudents.value = studentScoresRes.data.map((studentScore: any) => ({
studentId: studentScore.studentId,
// ... 其他字段
}));
// 修复后
roomStudents.value = studentScoresRes.data.map((studentScore: any) => ({
// 保存学生评分记录的ID,用于编辑时提交
id: studentScore.id,
studentId: studentScore.studentId,
// ... 其他字段
}));
修改内容:
// 修复前
const studentScores = roomStudents.value.map((student: any) => ({
studentId: Number(student.studentId),
// ... 其他字段
}));
// 修复后
const studentScores = roomStudents.value.map((student: any) => {
const studentScore: any = {
studentId: Number(student.studentId),
// ... 其他字段
};
// 编辑时包含学生评分记录的ID,新增时不包含
if (form.id && student.id) {
studentScore.id = student.id;
}
return studentScore;
});
修改内容:
// 修复前
if (
form.totalScore !== null &&
form.totalScore !== undefined &&
form.totalScore !== '' && // ❌ 类型不匹配:number !== string
form.totalScore !== 0 &&
String(form.totalScore) !== '0'
) {
// 修复后
if (
form.totalScore !== null &&
form.totalScore !== undefined &&
form.totalScore !== 0 &&
String(form.totalScore) !== '0'
) {
新增内容:
// 调试日志:输出提交的数据结构
console.log('提交的完整数据:', submitData);
console.log('学生评分数据:', studentScores);
console.log('是否为编辑模式:', !!form.id);
id 字段id 字段(为 undefined)后端采用"删除后重新插入"的策略:
通过本次修复,解决了宿舍卫生检查编辑时学生评分ID缺失的问题,确保了:
修复后的代码能够正确处理编辑和新增两种模式,确保数据的准确性和一致性。