From d5a5057132baf7e1e835c827c9cceae743f20f40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=B2=85?= <907037276@qq.com> Date: Sat, 5 Sep 2026 14:15:57 +0800 Subject: [PATCH] fix: default student management to owned class --- src/views/teacherEnd/student/index.vue | 3 ++- ...r-owned-student-management.static.test.cjs | 5 +++-- ...acher-student-default-owned-class.test.mjs | 19 +++++++++++++++++++ 3 files changed, 24 insertions(+), 3 deletions(-) create mode 100644 tests/teacher-student-default-owned-class.test.mjs diff --git a/src/views/teacherEnd/student/index.vue b/src/views/teacherEnd/student/index.vue index cc84d8d..a21ed82 100644 --- a/src/views/teacherEnd/student/index.vue +++ b/src/views/teacherEnd/student/index.vue @@ -441,7 +441,8 @@ const getClassList = () => { }; const selectDefaultStudentClass = () => { if (!isManagerTeacher.value && !paramsquery.value.schoolClassId) { - paramsquery.value.schoolClassId = teachingClassOptions.value[0]?.schoolClassId || ""; + const ownTeachingClass = teachingClassOptions.value.find((schoolClass) => sameValue(schoolClass.createdBy, currentUserId.value)); + paramsquery.value.schoolClassId = ownTeachingClass?.schoolClassId || ""; } }; const handleClassFilterChange = () => { diff --git a/tests/teacher-owned-student-management.static.test.cjs b/tests/teacher-owned-student-management.static.test.cjs index add36c3..1d06d99 100644 --- a/tests/teacher-owned-student-management.static.test.cjs +++ b/tests/teacher-owned-student-management.static.test.cjs @@ -10,8 +10,9 @@ assert(page.includes("const isManagerTeacher = computed(() => userStore.userInfo assert(page.includes("const studentClassOptions = computed(() => teachingClassOptions.value);"), "学生筛选下拉框必须只展示教学班"); assert(page.includes("isManagerTeacher.value || sameValue(schoolClass.createdBy, currentUserId.value)"), "教师管理员必须可查看本校全部教学班"); assert(page.includes(".sort((left, right) => classCreateTime(left) - classCreateTime(right))"), "普通教师的班级选项必须按创建时间升序排列"); -assert(page.includes("if (!isManagerTeacher.value && !paramsquery.value.schoolClassId)"), "普通教师必须默认选中自己最早创建的教学班"); -assert(page.includes('paramsquery.value.schoolClassId = teachingClassOptions.value[0]?.schoolClassId || "";'), "默认班级必须取排序后的第一个教学班"); +assert(page.includes("if (!isManagerTeacher.value && !paramsquery.value.schoolClassId)"), "普通教师必须默认选择自己的教学班"); +assert(page.includes("const ownTeachingClass = teachingClassOptions.value.find((schoolClass) => sameValue(schoolClass.createdBy, currentUserId.value));"), "默认班级必须按创建人匹配当前教师"); +assert(page.includes('paramsquery.value.schoolClassId = ownTeachingClass?.schoolClassId || "";'), "没有本人创建的班级时,默认值必须保持为空"); assert(/await getClassList\(\);\r?\n\s*selectDefaultStudentClass\(\);\r?\n\s*getList\(\);/.test(page), "学生列表必须在默认班级确定后查询"); assert(page.includes('@change="handleClassFilterChange"'), "切换班级后必须立即刷新学生列表"); assert(page.includes("const resolveRowTeachingClassId = (row) =>"), "未选择班级时操作必须从学生行解析教学班"); diff --git a/tests/teacher-student-default-owned-class.test.mjs b/tests/teacher-student-default-owned-class.test.mjs new file mode 100644 index 0000000..b56a124 --- /dev/null +++ b/tests/teacher-student-default-owned-class.test.mjs @@ -0,0 +1,19 @@ +import assert from "node:assert/strict"; +import { readFileSync } from "node:fs"; +import { resolve } from "node:path"; + +const root = resolve(import.meta.dirname, ".."); +const page = readFileSync(resolve(root, "src/views/teacherEnd/student/index.vue"), "utf8"); + +assert.match( + page, + /const ownTeachingClass = teachingClassOptions\.value\.find\(\(schoolClass\) => sameValue\(schoolClass\.createdBy, currentUserId\.value\)\);/, + "学生管理应识别当前教师本人创建的教学班" +); +assert.match( + page, + /paramsquery\.value\.schoolClassId = ownTeachingClass\?\.schoolClassId \|\| "";/, + "首次进入学生管理应默认选中本人创建的班级;不存在时保持未选择" +); + +console.log("student management prefers the current teacher's own class by default");