Toggle navigation
Toggle navigation
This project
Loading...
Sign in
Hooke
/
mlaj
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Snippets
Network
Create a new issue
Builds
Commits
Issue Boards
Authored by
hookehuyr
2025-11-10 11:08:59 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
43ac024aa73317af796e974e5412ce1e2d0c993d
43ac024a
1 parent
01f96a91
feat(教师表单): 重构课程选择逻辑为级联选择
将课程选择改为优先选择,驱动年级和班级的级联选择 更新API返回数据结构以支持新的级联逻辑
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
40 additions
and
20 deletions
src/api/teacher.js
src/views/teacher/formPage.vue
src/api/teacher.js
View file @
43ac024
/*
* @Date: 2025-06-23 11:46:21
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2025-11-
07 17:16:04
* @LastEditTime: 2025-11-
10 10:56:17
* @FilePath: /mlaj/src/api/teacher.js
* @Description: 文件描述
*/
...
...
@@ -31,7 +31,7 @@ export const getTeacherGradeClassListAPI = (params) => fn(fetch.get(Api.TEACHER_
/**
* 获取老师查询作业参数
* @returns {Object} data { gr
ade_list [{id, grade_name}], class_list [{id, class_name}], group_list [{id, title, schedule_list[{id, title
}]}], task_type, task_frequency }
* @returns {Object} data { gr
oup_list [{id, title, schedule_list[{id, title}], team_list[{id, team_name, subteam_list[{id, subteam_name}]
}]}], task_type, task_frequency }
*/
export
const
getTeacherFindSettingsAPI
=
(
params
)
=>
fn
(
fetch
.
get
(
Api
.
TEACHER_FIND_SETTINGS
,
params
))
...
...
src/views/teacher/formPage.vue
View file @
43ac024
...
...
@@ -133,6 +133,15 @@
<!-- 选择项目 -->
<div class="mb-6">
<!-- 优先选择课程,驱动后续年级与班级级联 -->
<div class="select-row">
<div class="select-item">
<van-icon name="friends-o" class="select-icon" />
<span class="select-label">所在课程:</span>
<span class="select-value" @click="showCoursePicker = true">{{ formData.course || '请选择课程' }}</span>
<van-icon name="arrow" class="arrow-icon" @click="showCoursePicker = true" />
</div>
</div>
<div class="select-row">
<div class="select-item">
<van-icon name="friends-o" class="select-icon" />
...
...
@@ -149,15 +158,8 @@
<van-icon name="arrow" class="arrow-icon" @click="showClassPicker = true" />
</div>
</div>
<div class="select-row">
<div class="select-item">
<van-icon name="friends-o" class="select-icon" />
<span class="select-label">所在课程:</span>
<span class="select-value" @click="showCoursePicker = true">{{ formData.course || '请选择课程' }}</span>
<van-icon name="arrow" class="arrow-icon" @click="showCoursePicker = true" />
</div>
</div>
<div class="select-row" v-if="courseChapters[formData.course]?.length">
<!-- 仅在完成班级选择后,允许进行课程章节选择 -->
<div class="select-row" v-if="formData.class_id && courseChapters[formData.course]?.length">
<div class="select-item">
<van-icon name="bookmark-o" class="select-icon" />
<span class="select-label">课程章节:</span>
...
...
@@ -672,6 +674,19 @@ const onEndTimeConfirm = () => {
const onCourseSelect = (course) => {
formData.value.course = course.name;
formData.value.lesson_id = course.id;
// 重置级联选择
formData.value.grade = '';
formData.value.grade_id = '';
formData.value.class_name = '';
formData.value.class_id = '';
// 根据课程派生年级列表
grades.value = (course.team_list || []).map(team => ({
name: team.team_name,
id: String(team.id),
subteam_list: team.subteam_list || []
}));
// 清空班级列表,待年级选择后填充
classes.value = [];
// 清空之前选择的章节
selectedChapters.value = [];
// 根据选择的课程更新章节数据
...
...
@@ -812,6 +827,14 @@ const confirmChapterSelection = () => {
const onGradeSelect = (grade) => {
formData.value.grade = grade.name;
formData.value.grade_id = grade.id;
// 根据年级派生班级列表
classes.value = (grade.subteam_list || []).map(sub => ({
name: sub.subteam_name,
id: String(sub.id)
}));
// 清空已选择的班级,等待用户确认
formData.value.class_name = '';
formData.value.class_id = '';
showGradePicker.value = false;
gradeSearchValue.value = '';
};
...
...
@@ -957,18 +980,15 @@ onMounted(async () => {
}));
}
grades.value = data.grade_list.map(grade => ({
name: grade.grade_name,
id: String(grade.id)
}));
classes.value = data.class_list.map(classItem => ({
name: classItem.class_name,
id: String(classItem.id)
}));
// 年级与班级不再从顶层返回,改为根据所选课程派生
grades.value = [];
classes.value = [];
// 课程包含章节与年级树
courses.value = data.group_list.map(course => ({
name: course.title,
id: String(course.id),
schedule_list: course.schedule_list
schedule_list: course.schedule_list || [],
team_list: course.team_list || []
}));
data.group_list.forEach(course => {
courseChapters.value[course.title] = course.schedule_list.map(chapter => ({
...
...
Please
register
or
login
to post a comment