index.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. import Vue from 'vue';
  2. import VueRouter from 'vue-router';
  3. import Layout from '@/layouts';
  4. import Login from '@/views/login';
  5. import store from '@/store';
  6. import { Loading } from 'element-ui';
  7. Vue.use(VueRouter);
  8. const routes = [
  9. {
  10. path: '/login',
  11. component: Login
  12. },
  13. {
  14. path: '/404',
  15. component: () => import('@/views/404')
  16. },
  17. // 外部跳转
  18. {
  19. path: '/EnterSys',
  20. beforeEnter: (to, from, next) => {
  21. let loadingInstance = Loading.service({
  22. text: '跳转中...'
  23. });
  24. store
  25. .dispatch('user/enterSys', { access_code: to.query.AccessCode })
  26. .then(() => {
  27. loadingInstance.close();
  28. next('/');
  29. })
  30. .catch(() => {
  31. store.dispatch('user/signOut');
  32. loadingInstance.close();
  33. next('/login');
  34. });
  35. }
  36. },
  37. // 首页
  38. {
  39. path: '/',
  40. component: Layout,
  41. redirect: '/main',
  42. children: [
  43. {
  44. path: '/main',
  45. name: 'Main',
  46. component: () => import('@/views/teacher/main')
  47. }
  48. ]
  49. },
  50. // 创建课程
  51. {
  52. path: '/create_course',
  53. component: Layout,
  54. redirect: '/create_course/index',
  55. meta: { title: '课程列表', link: '/?tab=CurriculaList' },
  56. children: [
  57. {
  58. path: '/create_course/index',
  59. component: () => import('@/views/teacher/create_course/index'),
  60. meta: { title: '创建课程' }
  61. }
  62. ]
  63. },
  64. // 新建课程 分步表单
  65. {
  66. path: '/create_course_step_table',
  67. component: Layout,
  68. redirect: '/create_course_step_table/course_info',
  69. children: [
  70. // 分步表单 -> 第一步
  71. {
  72. path: '/create_course_step_table/course_info',
  73. component: () => import('@/views/teacher/create_course/step_table/CourseInfo')
  74. },
  75. // 分步表单 -> 第二步
  76. {
  77. path: '/create_course_step_table/select_book/:id',
  78. name: 'SelectBook',
  79. component: () => import('@/views/teacher/create_course/step_table/SelectBook')
  80. },
  81. // 分步表单 -> 第三步
  82. {
  83. path: '/create_course_step_table/create_task/:id',
  84. component: () => import('@/views/teacher/create_course/step_table/CreateTask')
  85. },
  86. // 分步表单 -> 第三步 -> 新建课节任务
  87. {
  88. path: '/create_course_step_table/new_task/:time_type/:id/:cs_item_id',
  89. component: () => import('@/views/teacher/create_course/step_table/NewTask')
  90. }
  91. ]
  92. },
  93. // 课程列表 -> 学生列表
  94. {
  95. path: '/student_list',
  96. component: Layout,
  97. redirect: '/student_list/index/:id',
  98. children: [
  99. {
  100. path: '/student_list/index/:id',
  101. component: () => import('@/views/teacher/student_list')
  102. }
  103. ]
  104. },
  105. // 直播
  106. {
  107. path: '/live',
  108. component: Layout,
  109. redirect: '/live/student',
  110. children: [
  111. {
  112. path: '/live/teacher',
  113. component: () => import('@/views/live/teacher')
  114. },
  115. {
  116. path: '/live/student',
  117. component: () => import('@/views/live/student')
  118. },
  119. {
  120. path: '/live/group',
  121. component: () => import('@/views/live/group')
  122. }
  123. ]
  124. },
  125. {
  126. path: '*',
  127. redirect: '/404'
  128. }
  129. ];
  130. const createRouter = () =>
  131. new VueRouter({
  132. // mode: 'history',
  133. scrollBehavior: () => ({ y: 0 }),
  134. routes
  135. });
  136. const router = createRouter();
  137. // 重置路由
  138. export function resetRouter() {
  139. const newRouter = createRouter();
  140. router.matcher = newRouter.matcher;
  141. }
  142. export default router;