From 8b55f0c5b6a0c7b5503df6b514d7fe4760940757 Mon Sep 17 00:00:00 2001 From: 2991692032 Date: Fri, 23 May 2025 14:54:14 +0800 Subject: [PATCH] v2 --- Front/vue-unilife/src/api/schedule.ts | 6 ++++++ .../src/views/schedule/CourseTableView.vue | 21 +++++++++++++++++-- .../unilife/controller/CourseController.java | 11 ++++++++++ .../java/com/unilife/mapper/CourseMapper.java | 8 +++++++ .../unilife/model/dto/CreateCourseDTO.java | 5 +++++ .../java/com/unilife/model/entity/Course.java | 5 +++++ .../java/com/unilife/model/vo/CourseVO.java | 5 +++++ .../com/unilife/service/CourseService.java | 8 +++++++ .../service/impl/CourseServiceImpl.java | 20 ++++++++++++++++++ unilife-server/src/main/resources/db/init.sql | 8 ++++++- .../main/resources/mappers/CourseMapper.xml | 20 +++++++++++++----- 11 files changed, 109 insertions(+), 8 deletions(-) diff --git a/Front/vue-unilife/src/api/schedule.ts b/Front/vue-unilife/src/api/schedule.ts index bfe2577..36219a5 100644 --- a/Front/vue-unilife/src/api/schedule.ts +++ b/Front/vue-unilife/src/api/schedule.ts @@ -44,6 +44,7 @@ export interface CreateCourseParams { endTime: string; startWeek: number; endWeek: number; + semester?: string; color?: string; } @@ -91,6 +92,11 @@ export default { return get<{ code: number; data: { total: number; list: CourseItem[] } }>(`/courses/day/${dayOfWeek}`); }, + // 获取用户在指定学期的课程 + getCoursesBySemester(semester: string) { + return get<{ code: number; data: { total: number; list: CourseItem[] } }>(`/courses/semester/${semester}`); + }, + // 更新课程 updateCourse(id: number, data: UpdateCourseParams) { return put<{ code: number; message: string }>(`/courses/${id}`, data); diff --git a/Front/vue-unilife/src/views/schedule/CourseTableView.vue b/Front/vue-unilife/src/views/schedule/CourseTableView.vue index 56e55f2..adea693 100644 --- a/Front/vue-unilife/src/views/schedule/CourseTableView.vue +++ b/Front/vue-unilife/src/views/schedule/CourseTableView.vue @@ -14,7 +14,7 @@
学期: - + @@ -264,6 +264,7 @@ const courseForm = reactive({ endTime: '', startWeek: 1, endWeek: 16, + semester: '2023-1', // 默认学期 color: '#409EFF' }); @@ -293,7 +294,15 @@ onMounted(async () => { const fetchCourses = async () => { loading.value = true; try { - const res = await scheduleApi.getAllCourses(); + let res; + if (currentSemester.value) { + // 按学期查询 + res = await scheduleApi.getCoursesBySemester(currentSemester.value); + } else { + // 查询所有课程 + res = await scheduleApi.getAllCourses(); + } + if (res.code === 200) { courses.value = res.data.list; } @@ -364,6 +373,7 @@ const handleCellClick = (day: number, timeSlotId: number) => { courseForm.startWeek = currentWeek.value; courseForm.endWeek = currentWeek.value + 15 > 20 ? 20 : currentWeek.value + 15; + courseForm.semester = currentSemester.value; // 设置当前学期 courseForm.color = getRandomColor(); courseDialogVisible.value = true; @@ -392,6 +402,7 @@ const handleAddCourse = () => { courseForm.endTime = '09:40'; courseForm.startWeek = 1; courseForm.endWeek = 16; + courseForm.semester = currentSemester.value; // 设置当前学期 courseForm.color = getRandomColor(); courseDialogVisible.value = true; @@ -591,6 +602,7 @@ const saveCourse = async () => { endTime: formatTime(courseForm.endTime), startWeek: courseForm.startWeek, endWeek: courseForm.endWeek, + semester: courseForm.semester, color: courseForm.color || '#409EFF' }; @@ -667,6 +679,11 @@ const getRandomColor = () => { ]; return colors[Math.floor(Math.random() * colors.length)]; }; + +// 学期选择变化处理 +const handleSemesterChange = () => { + fetchCourses(); +};