Files
huike-front/src/routes.ts
T
weli c96830c301 feat: add lesson statistics pages and audit log viewer
- Add student lesson records page (/student/lessons)
- Add teacher lesson statistics page (/teacher/stats)
- Add supervisor statistics page (/supervisor/stats)
- Add navigation entries in student/teacher/supervisor profiles
- Add audit log viewer in clazz detail modal
- Add getAuditLog, queryStudentLessons, queryTeacherDetailStats store methods
- Register new routes

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-01 19:46:00 +08:00

256 lines
13 KiB
TypeScript

import Index from '~/pages/index.vue'
import NotFound from '~/pages/404.vue'
import Avatar from "~/pages/avatar.vue"
import GuestProfile from '~/pages/guest/profile.vue'
import GuestRegister from '~/pages/guest/register.vue'
import AdminProfile from '~/pages/admin/profile.vue'
import AdminTeacher from '~/pages/admin/teachers.vue';
import CourseCategory from '~/pages/admin/qumu-category.vue';
import Student from '~/pages/student/index.vue'
import StudentUnclaimed from '~/pages/student/unclaimed.vue'
import StudentHome from '~/pages/student/home.vue'
import StudentDetail from '~/pages/student/detail.vue'
import StudentProfile from '~/pages/student/profile.vue'
import StudentTeachers from '~/pages/student/teachers.vue'
import StudentTeacherSelect from '~/pages/student/teacher-select.vue'
import StudentLianxiAdd from '~/pages/student/lianxi/add.vue';
import StudentLessons from '~/pages/student/lessons.vue';
import Teacher from '~/pages/teacher/index.vue'
import TeacherHome from '~/pages/teacher/home.vue'
import TeacherDetail from '~/pages/teacher/detail.vue';
import TeacherProfile from '~/pages/teacher/profile.vue'
import TeacherStudents from '~/pages/teacher/students.vue'
import TeacherSubsidiaries from '~/pages/teacher/subsidiaries.vue'
import TeacherStats from '~/pages/teacher/stats.vue'
import SupervisorStats from '~/pages/supervisor/stats.vue'
import CourseSummary from '~/pages/qumu/summary.vue'
import Course from '~/pages/qumu/index.vue'
import CourseSection from '~/pages/qumu/section/index.vue';
import CourseSectionMixPick from '~/pages/qumu/mix-pick.vue';
import CourseSectionPick from '~/pages/qumu/section/pick.vue';
import CourseSectionAdd from '~/pages/qumu/section/add.vue'
import CourseSectionEdit from '~/pages/qumu/section/edit.vue'
import CourseSectionDetail from '~/pages/qumu/section/detail.vue'
import CourseSectionModify from '~/pages/qumu/section/modify.vue'
import CourseGroup from '~/pages/qumu/group/index.vue'
import CourseGroupPick from '~/pages/qumu/group/pick.vue';
import CourseGroupAdd from '~/pages/qumu/group/add.vue'
import CourseGroupEdit from '~/pages/qumu/group/edit.vue'
import CourseGroupDetail from '~/pages/qumu/group/detail.vue'
import CoursePackage from '~/pages/qumu/course-package/index.vue'
import CoursePackageAdd from '~/pages/qumu/course-package/add.vue'
import CoursePackageEdit from '~/pages/qumu/course-package/edit.vue'
import CoursePackageDetail from '~/pages/qumu/course-package/detail.vue'
import Tongzhi from '~/pages/tongzhi/index.vue';
import TongzhiDetail from '~/pages/tongzhi/detail.vue';
import Tester from '~/pages/tester/index.vue'
import TesterFunction from '~/pages/tester/function.vue'
import TesterProfile from '~/pages/tester/profile.vue';
import TesterAI from '~/pages/tester/ai.vue';
import TesterCalendar from '~/pages/tester/calendar.vue';
import TesterAvatar from '~/pages/tester/avatar.vue';
import TesterXml from '~/pages/tester/xml.vue';
import TesterMap from '~/pages/tester/map.vue';
import TesterVF from '~/pages/tester/vf.vue';
import TesterAiCs from '~/pages/tester/ai-cs.vue';
import UserGroup from '~/pages/user-group/index.vue';
import UserGroupPick from '~/pages/user-group/pick.vue';
import UserGroupAdd from '~/pages/user-group/add.vue';
import UserGroupEdit from '~/pages/user-group/edit.vue';
import UserGroupDetail from '~/pages/user-group/detail.vue';
import Daka from '~/pages/daka/index.vue';
import DakaAdd from '~/pages/daka/add.vue';
import DakaEdit from '~/pages/daka/edit.vue';
import DakaDetail from '~/pages/daka/detail.vue';
import DakaPiyue from '~/pages/daka/piyue.vue';
import SupervisorProfile from "~/pages/supervisor/profile.vue"
import SupervisorSubsidiaries from "~/pages/supervisor/subsidiaries.vue"
import ClazzPage from "~/pages/clazz/index.vue"
import UserSettings from "~/pages/user-settings.vue";
import OrgSelect from "~/pages/org/select.vue";
import OrgHomepage from "~/pages/org/homepage.vue";
import {RouteQueryAndHash} from "vue-router";
export default [
{
path: '/', component: Index, meta: {title: "首页"},
props: ({query}: RouteQueryAndHash) => ({params: query})
} ,
{path: '/guest/profile', component: GuestProfile, meta: {title: "我的"}},
{path: '/guest/register', component: GuestRegister, meta: {title: "注册"}},
{path: '/avatar', component: Avatar, meta: {title: "编辑头像"}},
{path: '/admin/profile', component: AdminProfile, meta: {title: "我的"}},
{path: '/admin/teachers', component: AdminTeacher, meta: {title: "教师管理"}},
{path: '/admin/course-category', component: CourseCategory, meta: {title: "课程体系类型"}},
{
path: '/student', component: Student, meta: {title: "学生列表"},
props: ({query}: RouteQueryAndHash) => ({params: query})
},
{path: '/student/home', component: StudentHome, meta: {title: "首页"}},
{
path: '/student/detail', component: StudentDetail,
meta: {title: "学生详情"}, props: ({query}: RouteQueryAndHash) => ({params: query})
},
{path: '/student/unclaimed', component: StudentUnclaimed, meta: {title: "选择学生"}},
{path: '/student/profile', component: StudentProfile, meta: {title: "我的"}},
{path: '/student/lessons', component: StudentLessons, meta: {title: "我的课时"}},
{path: '/student/teachers', component: StudentTeachers, meta: {title: "我的老师"}},
{path: '/student/teacher-select', component: StudentTeacherSelect, meta: {title: "选择老师"}},
{
path: '/student/lianxi/add', component: StudentLianxiAdd,
meta: {title: "添加练习"}, props: ({query}: RouteQueryAndHash) => ({params: query})
},
{
path: '/teacher', component: Teacher, meta: {title: "教师列表"},
props: ({query}: RouteQueryAndHash) => ({params: query})
},
{path: '/teacher/home', component: TeacherHome, meta: {title: "首页"}},
{
path: '/teacher/detail', component: TeacherDetail,
meta: {title: "首页"}, props: ({query}: RouteQueryAndHash) => ({params: query})
},
{path: '/teacher/profile', component: TeacherProfile, meta: {title: "我的"}},
{path: '/teacher/students', component: TeacherStudents, meta: {title: "我的学生"}},
{
path: '/teacher/subsidiaries', component: TeacherSubsidiaries, meta: {title: "助教老师"},
props: ({query}: RouteQueryAndHash) => ({params: query})
},
{path: '/teacher/stats', component: TeacherStats, meta: {title: "课时统计"}},
{path: '/supervisor/profile', component: SupervisorProfile, meta: {title: "我的"}},
{path: '/supervisor/subsidiaries', component: SupervisorSubsidiaries, meta: {title: "我的下属老师"}},
{path: '/supervisor/stats', component: SupervisorStats, meta: {title: "课时统计"}},
{path: '/tester', component: Tester, meta: {title: "首页"}},
{path: '/tester/function', component: TesterFunction, meta: {title: "功能测试"}},
{path: '/tester/ai', component: TesterAI, meta: {title: "AI测试"}},
{path: '/tester/calendar', component: TesterCalendar, meta: {title: "日历测试"}},
{path: '/tester/xml', component: TesterXml, meta: {title: "图片/XML 测试"}},
{path: '/tester/map', component: TesterMap, meta: {title: "标注测试"}},
{path: '/tester/profile', component: TesterProfile, meta: {title: "我的"}},
{path: '/tester/avatar', component: TesterAvatar, meta: {title: "头像测试"}},
{path: '/tester/vf', component: TesterVF, meta: {title: "VF测试"}},
{path: '/tester/ai-cs', component: TesterAiCs, meta: {title: "AI客服测试"}},
{
path: '/course/summary', component: CourseSummary, meta: {title: "教学资源库"},
props: ({query}: RouteQueryAndHash) => ({params: query})
},
{
path: '/course', component: Course, meta: {title: "课程体系"},
props: ({query}: RouteQueryAndHash) => ({params: query})
},
{
path: '/course/mix-pick', component: CourseSectionMixPick, meta: {title: "选择课程"},
props: ({query}: RouteQueryAndHash) => ({params: query})
},
{
path: '/course/section', component: CourseSection, meta: {title: "课程"},
props: ({query}: RouteQueryAndHash) => ({params: query})
},
{
path: '/course/section/pick', component: CourseSectionPick, meta: {title: "选择课程"},
props: ({query}: RouteQueryAndHash) => ({params: query})
},
{path: '/course/section/add', component: CourseSectionAdd, meta: {title: "创建课程"}},
{
path: '/course/section/edit', component: CourseSectionEdit,
meta: {title: "编辑课程"}, props: ({query}: RouteQueryAndHash) => ({params: query})
},
{
path: '/course/section/modify', component: CourseSectionModify,
meta: {title: "编辑课程"}, props: ({query}: RouteQueryAndHash) => ({params: query})
},
{
path: '/course/section/detail', component: CourseSectionDetail,
meta: {title: "查看课程"}, props: ({query}: RouteQueryAndHash) => ({params: query})
},
{
path: '/course/group', component: CourseGroup, meta: {title: "课节 "},
props: ({query}: RouteQueryAndHash) => ({params: query})
},
{
path: '/course/group/pick', component: CourseGroupPick, meta: {title: "选择课节"},
props: ({query}: RouteQueryAndHash) => ({params: query})
},
{path: '/course/group/add', component: CourseGroupAdd, meta: {title: "创建课节"}},
{
path: '/course/group/edit', component: CourseGroupEdit,
meta: {title: "编辑课节"}, props: ({query}: RouteQueryAndHash) => ({params: query})
},
{
path: '/course/group/detail', component: CourseGroupDetail,
meta: {title: "查看课节"}, props: ({query}: RouteQueryAndHash) => ({params: query})
},
{
path: '/course/course-package', component: CoursePackage, meta: {title: "课包"},
props: ({query}: RouteQueryAndHash) => ({params: query})
},
{path: '/course/course-package/add', component: CoursePackageAdd, meta: {title: "新建课包"}},
{
path: '/course/course-package/edit', component: CoursePackageEdit,
meta: {title: "编辑课包"}, props: ({query}: RouteQueryAndHash) => ({params: query})
},
{
path: '/course/course-package/detail', component: CoursePackageDetail,
meta: {title: "课包详情"}, props: ({query}: RouteQueryAndHash) => ({params: query})
},
{path: '/tongzhi', component: Tongzhi, meta: {title: "消息通知"}},
{
path: '/tongzhi/detail', component: TongzhiDetail, meta: {title: "通知详情"},
props: ({query}: RouteQueryAndHash) => ({params: query})
},
{
path: '/user-group', component: UserGroup, meta: {title: "我的小组"},
props: ({query}: RouteQueryAndHash) => ({params: query})
},
{path: '/user-group/add', component: UserGroupAdd, meta: {title: "新增小组"}},
{
path: '/user-group/pick', component: UserGroupPick, meta: {title: "选择小组"},
props: ({query}: RouteQueryAndHash) => ({params: query})
},
{
path: '/user-group/edit', component: UserGroupEdit,
meta: {title: "编辑小组"}, props: ({query}: RouteQueryAndHash) => ({params: query})
},
{
path: '/user-group/detail', component: UserGroupDetail,
meta: {title: "小组详情"}, props: ({query}: RouteQueryAndHash) => ({params: query})
},
{path: '/daka', component: Daka, meta: {title: "打卡"}},
{
path: '/daka/add', component: DakaAdd, meta: {title: "新增打卡"},
props: ({query}: RouteQueryAndHash) => ({params: query})
},
{
path: '/daka/edit', component: DakaEdit,
meta: {title: "编辑打卡"}, props: ({query}: RouteQueryAndHash) => ({params: query})
},
{
path: '/daka/detail', component: DakaDetail,
meta: {title: "打卡详情"}, props: ({query}: RouteQueryAndHash) => ({params: query})
},
{
path: '/daka/piyue', component: DakaPiyue,
meta: {title: "打卡批阅"}, props: ({query}: RouteQueryAndHash) => ({params: query})
},
{
path: '/clazz', component: ClazzPage, meta: {title: "排课"},
props: ({query}: RouteQueryAndHash) => ({params: query})
},
{path: '/org/select', component: OrgSelect, meta: {title: "选择机构"}},
{path: '/org/homepage', component: OrgHomepage, meta: {title: "机构首页管理"}},
{path: '/user-settings', component: UserSettings, meta: {title: "个性化设置"}},
{path: '/student/jihua/:pathMatch(.*)*', redirect: '/daka'},
{path: '/teacher/jihua/:pathMatch(.*)*', redirect: '/daka'},
...(import.meta.env.DEV
? [
{
path: '/__dev/session',
component: () => import('~/pages/dev/SessionSeed.vue'),
meta: {title: 'Dev 会话'},
},
]
: []),
{path: '/:pathMatch(.*)*', name: 'NotFound', component: NotFound, meta: {title: "404"}},
]