From df30b178462d02cbddedf75069f7fa38c64de00c Mon Sep 17 00:00:00 2001 From: Leo <98382335+gaoziman@users.noreply.github.com> Date: Sun, 28 Sep 2025 21:49:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=95=99=E8=82=B2=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E6=A8=A1=E5=9D=97=E5=89=8D=E7=AB=AF=E7=95=8C=E9=9D=A2?= =?UTF-8?q?=E5=92=8CAPI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增前端API接口:学期管理、课程班级管理、课程安排管理接口 - 新增通用选项配置接口:options.js,提供下拉选择数据 - 新增学期管理页面:semester/index.vue,提供学期的增删改查功能 - 新增课程班级管理页面:courseClass/index.vue,提供班级管理功能 - 集成Element UI组件实现表格、表单、分页等交互功能 - 实现前后端数据交互和状态管理 --- ruoyi-ui/src/api/education/courseClass.js | 171 ++++ ruoyi-ui/src/api/education/options.js | 31 + ruoyi-ui/src/api/education/schedule.js | 201 +++++ ruoyi-ui/src/api/education/semester.js | 113 +++ .../src/views/education/courseClass/index.vue | 743 ++++++++++++++++++ .../src/views/education/semester/index.vue | 393 +++++++++ 6 files changed, 1652 insertions(+) create mode 100644 ruoyi-ui/src/api/education/courseClass.js create mode 100644 ruoyi-ui/src/api/education/options.js create mode 100644 ruoyi-ui/src/api/education/schedule.js create mode 100644 ruoyi-ui/src/api/education/semester.js create mode 100644 ruoyi-ui/src/views/education/courseClass/index.vue create mode 100644 ruoyi-ui/src/views/education/semester/index.vue diff --git a/ruoyi-ui/src/api/education/courseClass.js b/ruoyi-ui/src/api/education/courseClass.js new file mode 100644 index 0000000..84e402e --- /dev/null +++ b/ruoyi-ui/src/api/education/courseClass.js @@ -0,0 +1,171 @@ +import request from '@/utils/request' + +/** + * 查询开课计划列表 + * @param {Object} query 查询参数 + */ +export function listCourseClass(query) { + return request({ + url: '/education/courseClass/list', + method: 'get', + params: query + }) +} + +/** + * 查询开课计划详细 + * @param {Number} classId 开课计划ID + */ +export function getCourseClass(classId) { + return request({ + url: '/education/courseClass/' + classId, + method: 'get' + }) +} + +/** + * 新增开课计划 + * @param {Object} data 开课计划数据 + */ +export function addCourseClass(data) { + return request({ + url: '/education/courseClass', + method: 'post', + data: data + }) +} + +/** + * 修改开课计划 + * @param {Object} data 开课计划数据 + */ +export function updateCourseClass(data) { + return request({ + url: '/education/courseClass', + method: 'put', + data: data + }) +} + +/** + * 删除开课计划 + * @param {Array} classIds 开课计划ID数组 + */ +export function delCourseClass(classIds) { + return request({ + url: '/education/courseClass/' + classIds, + method: 'delete' + }) +} + +/** + * 发布开课计划 + * @param {Number} classId 开课计划ID + */ +export function publishCourseClass(classId) { + return request({ + url: '/education/courseClass/publish/' + classId, + method: 'put' + }) +} + +/** + * 批量发布开课计划 + * @param {Array} classIds 开课计划ID数组 + */ +export function batchPublishCourseClass(classIds) { + return request({ + url: '/education/courseClass/batchPublish', + method: 'put', + data: classIds + }) +} + +/** + * 停止选课 + * @param {Number} classId 开课计划ID + */ +export function stopEnrollment(classId) { + return request({ + url: '/education/courseClass/stopEnrollment/' + classId, + method: 'put' + }) +} + +/** + * 结课 + * @param {Number} classId 开课计划ID + */ +export function finishCourse(classId) { + return request({ + url: '/education/courseClass/finish/' + classId, + method: 'put' + }) +} + +/** + * 调整容量 + * @param {Number} classId 开课计划ID + * @param {Number} newCapacity 新容量 + */ +export function adjustCapacity(classId, newCapacity) { + return request({ + url: '/education/courseClass/adjustCapacity/' + classId + '/' + newCapacity, + method: 'put' + }) +} + +/** + * 获取指定学期的开课计划 + * @param {Number} semesterId 学期ID + */ +export function getCourseClassBySemester(semesterId) { + return request({ + url: '/education/courseClass/semester/' + semesterId, + method: 'get' + }) +} + +/** + * 获取指定教师的开课计划 + * @param {Number} teacherId 教师ID + */ +export function getCourseClassByTeacher(teacherId) { + return request({ + url: '/education/courseClass/teacher/' + teacherId, + method: 'get' + }) +} + +/** + * 获取可选课的开课计划 + */ +export function getEnrollableCourseClasses() { + return request({ + url: '/education/courseClass/enrollable', + method: 'get' + }) +} + +/** + * 获取开课计划统计信息 + * @param {Number} semesterId 学期ID + */ +export function getCourseClassStatistics(semesterId) { + return request({ + url: '/education/courseClass/statistics/' + semesterId, + method: 'get' + }) +} + +/** + * 导出开课计划 + * @param {Object} query 查询参数 + */ +export function exportCourseClass(query) { + return request({ + url: '/education/courseClass/export', + method: 'post', + params: query + }) +} \ No newline at end of file diff --git a/ruoyi-ui/src/api/education/options.js b/ruoyi-ui/src/api/education/options.js new file mode 100644 index 0000000..ad0f62e --- /dev/null +++ b/ruoyi-ui/src/api/education/options.js @@ -0,0 +1,31 @@ +import request from '@/utils/request' + +/** + * 获取课程选项 + */ +export function getCourseOptions() { + return request({ + url: '/education/courseClass/courseOptions', + method: 'get' + }) +} + +/** + * 获取教师选项 + */ +export function getTeacherOptions() { + return request({ + url: '/education/courseClass/teacherOptions', + method: 'get' + }) +} + +/** + * 获取教室选项 + */ +export function getClassroomOptions() { + return request({ + url: '/education/courseClass/classroomOptions', + method: 'get' + }) +} \ No newline at end of file diff --git a/ruoyi-ui/src/api/education/schedule.js b/ruoyi-ui/src/api/education/schedule.js new file mode 100644 index 0000000..ec44816 --- /dev/null +++ b/ruoyi-ui/src/api/education/schedule.js @@ -0,0 +1,201 @@ +import request from '@/utils/request' + +/** + * 查询开课节次安排列表 + * @param {Object} query 查询参数 + */ +export function listSchedule(query) { + return request({ + url: '/education/schedule/list', + method: 'get', + params: query + }) +} + +/** + * 查询开课节次安排详细 + * @param {Number} scheduleId 节次安排ID + */ +export function getSchedule(scheduleId) { + return request({ + url: '/education/schedule/' + scheduleId, + method: 'get' + }) +} + +/** + * 新增开课节次安排 + * @param {Object} data 节次安排数据 + */ +export function addSchedule(data) { + return request({ + url: '/education/schedule', + method: 'post', + data: data + }) +} + +/** + * 修改开课节次安排 + * @param {Object} data 节次安排数据 + */ +export function updateSchedule(data) { + return request({ + url: '/education/schedule', + method: 'put', + data: data + }) +} + +/** + * 删除开课节次安排 + * @param {Array} scheduleIds 节次安排ID数组 + */ +export function delSchedule(scheduleIds) { + return request({ + url: '/education/schedule/' + scheduleIds, + method: 'delete' + }) +} + +/** + * 根据开课ID查询节次安排 + * @param {Number} classId 开课ID + */ +export function getScheduleByClassId(classId) { + return request({ + url: '/education/schedule/class/' + classId, + method: 'get' + }) +} + +/** + * 根据开课ID删除节次安排 + * @param {Number} classId 开课ID + */ +export function delScheduleByClassId(classId) { + return request({ + url: '/education/schedule/class/' + classId, + method: 'delete' + }) +} + +/** + * 查询指定教室的课程安排 + * @param {Number} classroomId 教室ID + * @param {Number} semesterId 学期ID + */ +export function getScheduleByClassroom(classroomId, semesterId) { + return request({ + url: '/education/schedule/classroom/' + classroomId + '/' + semesterId, + method: 'get' + }) +} + +/** + * 查询指定教师的课程安排 + * @param {Number} teacherId 教师ID + * @param {Number} semesterId 学期ID + */ +export function getScheduleByTeacher(teacherId, semesterId) { + return request({ + url: '/education/schedule/teacher/' + teacherId + '/' + semesterId, + method: 'get' + }) +} + +/** + * 查询指定学期的所有课程安排 + * @param {Number} semesterId 学期ID + */ +export function getScheduleBySemester(semesterId) { + return request({ + url: '/education/schedule/semester/' + semesterId, + method: 'get' + }) +} + +/** + * 生成教室课表 + * @param {Number} classroomId 教室ID + * @param {Number} semesterId 学期ID + */ +export function generateClassroomTimetable(classroomId, semesterId) { + return request({ + url: '/education/schedule/timetable/classroom/' + classroomId + '/' + semesterId, + method: 'get' + }) +} + +/** + * 生成教师课表 + * @param {Number} teacherId 教师ID + * @param {Number} semesterId 学期ID + */ +export function generateTeacherTimetable(teacherId, semesterId) { + return request({ + url: '/education/schedule/timetable/teacher/' + teacherId + '/' + semesterId, + method: 'get' + }) +} + +/** + * 批量添加节次安排 + * @param {Number} classId 开课ID + * @param {Array} scheduleList 节次安排列表 + */ +export function batchAddSchedule(classId, scheduleList) { + return request({ + url: '/education/schedule/batch/' + classId, + method: 'post', + data: scheduleList + }) +} + +/** + * 复制节次安排 + * @param {Number} sourceClassId 源开课ID + * @param {Number} targetClassId 目标开课ID + */ +export function copySchedule(sourceClassId, targetClassId) { + return request({ + url: '/education/schedule/copy/' + sourceClassId + '/' + targetClassId, + method: 'post' + }) +} + +/** + * 自动排课 + * @param {Number} classId 开课ID + * @param {Number} semesterId 学期ID + * @param {Number} courseHours 课程学时 + */ +export function autoSchedule(classId, semesterId, courseHours) { + return request({ + url: '/education/schedule/auto/' + classId + '/' + semesterId + '/' + courseHours, + method: 'post' + }) +} + +/** + * 获取时间段统计信息 + * @param {Number} semesterId 学期ID + */ +export function getScheduleStatistics(semesterId) { + return request({ + url: '/education/schedule/statistics/' + semesterId, + method: 'get' + }) +} + +/** + * 导出节次安排 + * @param {Object} query 查询参数 + */ +export function exportSchedule(query) { + return request({ + url: '/education/schedule/export', + method: 'post', + params: query + }) +} \ No newline at end of file diff --git a/ruoyi-ui/src/api/education/semester.js b/ruoyi-ui/src/api/education/semester.js new file mode 100644 index 0000000..aa5f646 --- /dev/null +++ b/ruoyi-ui/src/api/education/semester.js @@ -0,0 +1,113 @@ +import request from '@/utils/request' + +/** + * 查询学期信息列表 + * @param {Object} query 查询参数 + */ +export function listSemester(query) { + return request({ + url: '/education/semester/list', + method: 'get', + params: query + }) +} + +/** + * 查询学期信息详细 + * @param {Number} semesterId 学期ID + */ +export function getSemester(semesterId) { + return request({ + url: '/education/semester/' + semesterId, + method: 'get' + }) +} + +/** + * 新增学期信息 + * @param {Object} data 学期数据 + */ +export function addSemester(data) { + return request({ + url: '/education/semester', + method: 'post', + data: data + }) +} + +/** + * 修改学期信息 + * @param {Object} data 学期数据 + */ +export function updateSemester(data) { + return request({ + url: '/education/semester', + method: 'put', + data: data + }) +} + +/** + * 删除学期信息 + * @param {Array} semesterIds 学期ID数组 + */ +export function delSemester(semesterIds) { + return request({ + url: '/education/semester/' + semesterIds, + method: 'delete' + }) +} + +/** + * 发布学期 + * @param {Number} semesterId 学期ID + */ +export function publishSemester(semesterId) { + return request({ + url: '/education/semester/publish/' + semesterId, + method: 'put' + }) +} + +/** + * 归档学期 + * @param {Number} semesterId 学期ID + */ +export function archiveSemester(semesterId) { + return request({ + url: '/education/semester/archive/' + semesterId, + method: 'put' + }) +} + +/** + * 获取当前学期 + */ +export function getCurrentSemester() { + return request({ + url: '/education/semester/current', + method: 'get' + }) +} + +/** + * 获取可选课学期列表 + */ +export function getEnrollableSemesters() { + return request({ + url: '/education/semester/enrollable', + method: 'get' + }) +} + +/** + * 导出学期信息 + * @param {Object} query 查询参数 + */ +export function exportSemester(query) { + return request({ + url: '/education/semester/export', + method: 'post', + params: query + }) +} \ No newline at end of file diff --git a/ruoyi-ui/src/views/education/courseClass/index.vue b/ruoyi-ui/src/views/education/courseClass/index.vue new file mode 100644 index 0000000..d41d184 --- /dev/null +++ b/ruoyi-ui/src/views/education/courseClass/index.vue @@ -0,0 +1,743 @@ + + + + + \ No newline at end of file diff --git a/ruoyi-ui/src/views/education/semester/index.vue b/ruoyi-ui/src/views/education/semester/index.vue new file mode 100644 index 0000000..c94fefa --- /dev/null +++ b/ruoyi-ui/src/views/education/semester/index.vue @@ -0,0 +1,393 @@ + + + \ No newline at end of file