diff --git a/src/components/admin/CourseComponents/CourseAnalysis.vue b/src/components/admin/CourseComponents/CourseAnalysis.vue new file mode 100644 index 0000000..221f0f5 --- /dev/null +++ b/src/components/admin/CourseComponents/CourseAnalysis.vue @@ -0,0 +1,14 @@ + + + + + + diff --git a/src/components/admin/CourseComponents/CourseCategory.vue b/src/components/admin/CourseComponents/CourseCategory.vue new file mode 100644 index 0000000..b6734a4 --- /dev/null +++ b/src/components/admin/CourseComponents/CourseCategory.vue @@ -0,0 +1,19 @@ + + + + + + diff --git a/src/components/admin/CourseComponents/MaterialCategory.vue b/src/components/admin/CourseComponents/MaterialCategory.vue new file mode 100644 index 0000000..1c9604c --- /dev/null +++ b/src/components/admin/CourseComponents/MaterialCategory.vue @@ -0,0 +1,14 @@ + + + + + + diff --git a/src/components/admin/CourseManagement.vue b/src/components/admin/CourseManagement.vue new file mode 100644 index 0000000..661d5ff --- /dev/null +++ b/src/components/admin/CourseManagement.vue @@ -0,0 +1,116 @@ + + + + + + diff --git a/src/components/admin/MyResources.vue b/src/components/admin/MyResources.vue new file mode 100644 index 0000000..eb74f40 --- /dev/null +++ b/src/components/admin/MyResources.vue @@ -0,0 +1,14 @@ + + + + + + diff --git a/src/components/admin/PersonalCenter.vue b/src/components/admin/PersonalCenter.vue new file mode 100644 index 0000000..775e45b --- /dev/null +++ b/src/components/admin/PersonalCenter.vue @@ -0,0 +1,14 @@ + + + + + + diff --git a/src/components/admin/StudentManagement.vue b/src/components/admin/StudentManagement.vue new file mode 100644 index 0000000..1c02a1e --- /dev/null +++ b/src/components/admin/StudentManagement.vue @@ -0,0 +1,14 @@ + + + + + + diff --git a/src/router/index.ts b/src/router/index.ts index d72c8a4..ac21dd4 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -6,7 +6,6 @@ import Home from '@/views/Home.vue' import Courses from '@/views/Courses.vue' import CourseDetail from '@/views/CourseDetail.vue' import CourseDetailEnrolled from '@/views/CourseDetailEnrolled.vue' -import CourseExchanged from '@/views/CourseExchanged.vue' import CourseStudy from '@/views/CourseStudy.vue' import Learning from '@/views/Learning.vue' import Profile from '@/views/Profile.vue' @@ -23,14 +22,93 @@ import ExamNotice from '@/views/ExamNotice.vue' import ExamSubmitted from '@/views/ExamSubmitted.vue' import TestSections from '@/views/TestSections.vue' import LocalVideoDemo from '@/views/LocalVideoDemo.vue' -import DPlayerTest from '@/views/DPlayerTest.vue' import SpecialTraining from '@/views/SpecialTraining.vue' import SpecialTrainingDetail from '@/views/SpecialTrainingDetail.vue' import HelpCenter from '@/views/HelpCenter.vue' -import Practice from '@/views/Practice.vue' -import LearningCenter from '@/views/LearningCenter.vue' + +// 管理员路由 +import AdminDashboard from '@/views/teacher/AdminDashboard.vue' +import PersonalCenter from '@/components/admin/PersonalCenter.vue' +import CourseManagement from '@/components/admin/CourseManagement.vue' +import MyResources from '@/components/admin/MyResources.vue' +import StudentManagement from '@/components/admin/StudentManagement.vue' +// 课程管理子路由组件 +import CourseCategory from '@/components/admin/CourseComponents/CourseCategory.vue' +import MaterialCategory from '@/components/admin/CourseComponents/MaterialCategory.vue' +import CourseAnalysis from '@/components/admin/CourseComponents/CourseAnalysis.vue' + const routes: RouteRecordRaw[] = [ + { + path: '/teacher', + + name: 'AdminDashboard', + component: AdminDashboard, + meta: { + title: '管理后台', + requiresAuth: true + }, + children: [ + { + path: 'personal-center', + name: 'PersonalCenter', + component: PersonalCenter, + meta: { + title: '个人中心' + } + }, + { + path: 'course-management', + name: 'CourseManagement', + component: CourseManagement, + meta: { + title: '课程管理' + }, + children: [ + { + path: 'course-category', + name: 'CourseCategory', + component: CourseCategory, + meta: { + title: '课程分类' + } + }, + { + path: 'material-category', + name: 'MaterialCategory', + component: MaterialCategory, + meta: { + title: '资料分类' + } + }, + { + path: 'course-analysis', + name: 'CourseAnalysis', + component: CourseAnalysis, + meta: { + title: '课程分析' + } + } + ] + }, + { + path: 'my-resources', + name: 'MyResources', + component: MyResources, + meta: { + title: '我的资源' + } + }, + { + path: 'student-management', + name: 'StudentManagement', + component: StudentManagement, + meta: { + title: '学员管理' + } + } + ] + }, { path: '/help-center', name: 'HelpCenter', @@ -71,14 +149,6 @@ const routes: RouteRecordRaw[] = [ title: '课程详情 - 已报名' } }, - { - path: '/course/:id/exchanged', - name: 'CourseExchanged', - component: CourseExchanged, - meta: { - title: '课程兑换成功' - } - }, { path: '/course/study/:id', name: 'CourseStudy', @@ -106,14 +176,6 @@ const routes: RouteRecordRaw[] = [ requiresAuth: true } }, - { - path: '/learning-center', - name: 'LearningCenter', - component: LearningCenter, - meta: { - title: '学习中心' - } - }, { path: '/learning-paths', @@ -219,14 +281,6 @@ const routes: RouteRecordRaw[] = [ title: 'AI' } }, - { - path: '/ai-companion/:id?', - name: 'AICompanion', - component: () => import('@/views/AICompanion.vue'), - meta: { - title: 'AI伴学' - } - }, { path: '/ai-demo', name: 'AIDemo', @@ -251,29 +305,14 @@ const routes: RouteRecordRaw[] = [ title: '本地视频播放演示' } }, - { - path: '/dplayer-test', - name: 'DPlayerTest', - component: DPlayerTest, - meta: { - title: 'DPlayer 测试页面' - } - }, - { - path: '/course/:courseId/practice/:sectionId', - name: 'Practice', - component: Practice, - meta: { - title: '练习页面' - } - }, { path: '/:pathMatch(.*)*', name: 'NotFound', component: () => import('@/views/NotFound.vue'), meta: { title: '页面未找到' - } + }, + } ] @@ -290,7 +329,7 @@ const router = createRouter({ }) // 路由守卫 -router.beforeEach((to, from, next) => { +router.beforeEach((to, _from, next) => { // 设置页面标题 if (to.meta.title) { document.title = `${to.meta.title} - 在线学习平台` @@ -307,38 +346,6 @@ router.beforeEach((to, from, next) => { } } - // 特殊处理:检测从其他页面进入积分中心 - if (to.name === 'LearningCenter') { - // 如果是从其他页面进入积分中心,设置自动刷新标记 - if (from.name && from.name !== 'LearningCenter') { - sessionStorage.setItem('learningCenterNeedsRefresh', 'true'); - } - } - - // 特殊处理:检测从其他页面进入帮助中心 - if (to.name === 'HelpCenter') { - // 如果是从其他页面进入帮助中心,设置自动刷新标记 - if (from.name && from.name !== 'HelpCenter') { - sessionStorage.setItem('helpCenterNeedsRefresh', 'true'); - } - } - - // 特殊处理:检测从其他页面进入已兑换页面 - if (to.name === 'CourseExchanged') { - // 如果是从其他页面进入已兑换页面,设置自动刷新标记 - if (from.name && from.name !== 'CourseExchanged') { - sessionStorage.setItem('refreshCourseExchanged', 'true'); - } - } - - // 特殊处理:检测从其他页面进入个人中心 - if (to.name === 'Profile') { - // 如果是从其他页面进入个人中心,设置自动刷新标记 - if (from.name && from.name !== 'Profile') { - sessionStorage.setItem('refreshProfile', 'true'); - } - } - next() }) diff --git a/src/views/teacher/AdminDashboard.vue b/src/views/teacher/AdminDashboard.vue new file mode 100644 index 0000000..8554759 --- /dev/null +++ b/src/views/teacher/AdminDashboard.vue @@ -0,0 +1,243 @@ + + + + +