diff --git a/public/images/teacher/发布人.png b/public/images/teacher/发布人.png new file mode 100644 index 0000000..2f2e238 Binary files /dev/null and b/public/images/teacher/发布人.png differ diff --git a/public/images/teacher/起点时间.png b/public/images/teacher/起点时间.png new file mode 100644 index 0000000..6e32a32 Binary files /dev/null and b/public/images/teacher/起点时间.png differ diff --git a/src/components/admin/CourseDetailManagement.vue b/src/components/admin/CourseDetailManagement.vue new file mode 100644 index 0000000..e69de29 diff --git a/src/components/admin/ExamComponents/BatchSetScoreModal.vue b/src/components/admin/ExamComponents/BatchSetScoreModal.vue new file mode 100644 index 0000000..561047a --- /dev/null +++ b/src/components/admin/ExamComponents/BatchSetScoreModal.vue @@ -0,0 +1,324 @@ + + + + + diff --git a/src/components/admin/ExamComponents/ExamSettingsModal.vue b/src/components/admin/ExamComponents/ExamSettingsModal.vue new file mode 100644 index 0000000..e8e772f --- /dev/null +++ b/src/components/admin/ExamComponents/ExamSettingsModal.vue @@ -0,0 +1,761 @@ + + + + + diff --git a/src/main.ts b/src/main.ts index 24bc150..4eeb027 100644 --- a/src/main.ts +++ b/src/main.ts @@ -34,6 +34,7 @@ import { NBreadcrumbItem, NInput, NInputGroup, + NInputNumber, NForm, NFormItem, NSelect, @@ -41,6 +42,7 @@ import { NTimePicker, NCheckbox, NRadio, + NRadioGroup, NSwitch, NSlider, NRate, @@ -82,7 +84,8 @@ import { NStep, NTimeline, NTimelineItem, - NMessageProvider + NMessageProvider, + NPopselect } from 'naive-ui' const naive = create({ @@ -104,6 +107,7 @@ const naive = create({ NBreadcrumbItem, NInput, NInputGroup, + NInputNumber, NForm, NFormItem, NSelect, @@ -111,6 +115,7 @@ const naive = create({ NTimePicker, NCheckbox, NRadio, + NRadioGroup, NSwitch, NSlider, NRate, @@ -152,7 +157,8 @@ const naive = create({ NStep, NTimeline, NTimelineItem, - NMessageProvider + NMessageProvider, + NPopselect ] }) diff --git a/src/router/index.ts b/src/router/index.ts index 4d14738..8d99c0b 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -43,7 +43,6 @@ import CourseCreate from '@/components/admin/CourseComponents/CourseCreate.vue' import CourseEditor from '@/views/teacher/course/CourseEditor.vue' import CoursewareManagement from '@/views/teacher/course/CoursewareManagement.vue' import ChapterManagement from '@/views/teacher/course/ChapterManagement.vue' -import HomeworkManagement from '@/views/teacher/course/HomeworkManagement.vue' import PracticeManagement from '@/views/teacher/course/PracticeManagement.vue' import QuestionBankManagement from '@/views/teacher/course/QuestionBankManagement.vue' import CertificateManagement from '@/views/teacher/course/CertificateManagement.vue' @@ -52,6 +51,14 @@ import StatisticsManagement from '@/views/teacher/course/StatisticsManagement.vu import NotificationManagement from '@/views/teacher/course/NotificationManagement.vue' import GeneralManagement from '@/views/teacher/course/GeneralManagement.vue' +// 作业子组件 +import HomeworkLibrary from '@/views/teacher/course/HomeworkLibrary.vue' +import HomeworkReview from '@/views/teacher/course/HomeworkReview.vue' +// 练考通菜单组件 +import ExamLibrary from '@/views/teacher/course/ExamPages/ExamLibrary.vue' +import MarkingCenter from '@/views/teacher/course/ExamPages/MarkingCenter.vue' +import AddExam from '@/views/teacher/course/ExamPages/AddExam.vue' + // ========== 路由配置 ========== const routes: RouteRecordRaw[] = [ // 管理后台路由 @@ -125,14 +132,55 @@ const routes: RouteRecordRaw[] = [ { path: 'homework', name: 'HomeworkManagement', - component: HomeworkManagement, - meta: { title: '作业管理' } + redirect: (to) => `/teacher/course-editor/${to.params.id}/homework/library`, + children: [ + { + path: 'library', + name: 'HomeworkLibrary', + component: HomeworkLibrary, + meta: { title: '作业库' } + }, + { + path: 'review', + name: 'HomeworkReview', + component: HomeworkReview, + meta: { title: '批阅作业' } + } + ] }, { path: 'practice', name: 'PracticeManagement', component: PracticeManagement, - meta: { title: '练考通管理' } + meta: { title: '练考通管理' }, + redirect: (to) => `/teacher/course-editor/${to.params.id}/practice/exam-library`, + children: [ + { + path: 'exam-library', + name: 'ExamLibrary', + component: ExamLibrary, + meta: { + title: '试卷库' + }, + }, + { + path: 'marking-center', + name: 'MarkingCenter', + component: MarkingCenter, + meta: { + title: '阅卷中心' + } + }, + { + path: 'add', + name: 'AddExam', + component: AddExam, + meta: { + title: '添加试卷', + hideSidebar: true + } + } + ] }, { path: 'question-bank', diff --git a/src/views/Faculty.vue b/src/views/Faculty.vue index 7c2ab17..0df24f9 100644 --- a/src/views/Faculty.vue +++ b/src/views/Faculty.vue @@ -128,7 +128,7 @@ const navigateToTeacherDetail = (teacherId: number) => { router.push(`/teacher/${teacherId}`) } -// 处理箭头点击(保留以防后续需要) +// 处理箭头点击 // const toggleCourseInfo = (teacherId: number) => { // if (expandedTeacherId.value === teacherId) { // expandedTeacherId.value = null @@ -143,7 +143,7 @@ const showCourseInfo = (teacherId: number) => { } // 鼠标离开隐藏课程信息 -const hideCourseInfo = (_teacherId: number) => { +const hideCourseInfo = (_: number) => { expandedTeacherId.value = null } diff --git a/src/views/teacher/course/ChapterManagement.vue b/src/views/teacher/course/ChapterManagement.vue index eaff419..b0e2fc5 100644 --- a/src/views/teacher/course/ChapterManagement.vue +++ b/src/views/teacher/course/ChapterManagement.vue @@ -1,36 +1,786 @@ diff --git a/src/views/teacher/course/CourseEditor.vue b/src/views/teacher/course/CourseEditor.vue index 9bc3792..e1780ec 100644 --- a/src/views/teacher/course/CourseEditor.vue +++ b/src/views/teacher/course/CourseEditor.vue @@ -1,7 +1,7 @@ diff --git a/src/views/teacher/course/ExamPages/ExamLibrary.vue b/src/views/teacher/course/ExamPages/ExamLibrary.vue new file mode 100644 index 0000000..d39b58b --- /dev/null +++ b/src/views/teacher/course/ExamPages/ExamLibrary.vue @@ -0,0 +1,236 @@ + + + + + diff --git a/src/views/teacher/course/ExamPages/MarkingCenter.vue b/src/views/teacher/course/ExamPages/MarkingCenter.vue new file mode 100644 index 0000000..eb2fad6 --- /dev/null +++ b/src/views/teacher/course/ExamPages/MarkingCenter.vue @@ -0,0 +1,11 @@ + + + + + diff --git a/src/views/teacher/course/HomeworkLibrary.vue b/src/views/teacher/course/HomeworkLibrary.vue new file mode 100644 index 0000000..fa2b894 --- /dev/null +++ b/src/views/teacher/course/HomeworkLibrary.vue @@ -0,0 +1,720 @@ + + + + + \ No newline at end of file diff --git a/src/views/teacher/course/HomeworkReview.vue b/src/views/teacher/course/HomeworkReview.vue new file mode 100644 index 0000000..291a5a4 --- /dev/null +++ b/src/views/teacher/course/HomeworkReview.vue @@ -0,0 +1,409 @@ + + + + + \ No newline at end of file diff --git a/src/views/teacher/course/PracticeManagement.vue b/src/views/teacher/course/PracticeManagement.vue index 9a91db7..9e64950 100644 --- a/src/views/teacher/course/PracticeManagement.vue +++ b/src/views/teacher/course/PracticeManagement.vue @@ -1,9 +1,6 @@ @@ -17,20 +14,4 @@ background: #fff; height: 100%; } - -.content-placeholder { - text-align: center; - padding: 60px 20px; -} - -.content-placeholder h2 { - font-size: 24px; - color: #333; - margin-bottom: 20px; -} - -.content-placeholder p { - font-size: 16px; - color: #666; -}