index.js 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. import Vue from 'vue';
  2. import VueRouter from 'vue-router';
  3. import Layout from '@/layouts';
  4. import store from '@/store';
  5. Vue.use(VueRouter);
  6. const routes = [
  7. {
  8. path: '/login',
  9. component: () => import('@/views/login')
  10. },
  11. {
  12. path: '/404',
  13. component: () => import('@/views/404')
  14. },
  15. // 外部跳转
  16. {
  17. path: '/EnterSys',
  18. beforeEnter: (to, from, next) => {
  19. store
  20. .dispatch('user/enterSys')
  21. .then(() => {
  22. const { tab, enter, dateStamp } = to.query;
  23. if (enter) {
  24. next(`/${enter}?tab=${tab}&dateStamp=${dateStamp}`);
  25. } else {
  26. next('/');
  27. }
  28. })
  29. .catch(() => {
  30. store.dispatch('user/signOut');
  31. next('/login');
  32. });
  33. }
  34. },
  35. // 首页
  36. {
  37. path: '/',
  38. component: Layout,
  39. redirect: '/main',
  40. children: [
  41. {
  42. path: '/main',
  43. name: 'Main',
  44. component: () => import('@/views/main')
  45. }
  46. ]
  47. },
  48. // 创建课程
  49. {
  50. path: '/create_course',
  51. component: Layout,
  52. redirect: '/create_course/index',
  53. meta: { title: 'Key279', link: '/?tab=CurriculaList' },
  54. children: [
  55. {
  56. path: '/create_course/index',
  57. component: () => import(/* webpackChunkName: 'create_course'*/ '@/views/teacher/create_course/index'),
  58. meta: { title: 'Key285' }
  59. }
  60. ]
  61. },
  62. // 新建课程 分步表单
  63. {
  64. path: '/create_course_step_table',
  65. component: Layout,
  66. redirect: '/create_course_step_table/course_info',
  67. children: [
  68. // 分步表单 -> 第一步
  69. {
  70. path: '/create_course_step_table/course_info',
  71. component: () =>
  72. import(/* webpackChunkName: 'create_course'*/ '@/views/teacher/create_course/step_table/CourseInfo')
  73. },
  74. // 分步表单 -> 第二步
  75. {
  76. path: '/create_course_step_table/select_book/:id',
  77. name: 'SelectBook',
  78. component: () =>
  79. import(/* webpackChunkName: 'create_course'*/ '@/views/teacher/create_course/step_table/SelectBook')
  80. },
  81. // 分步表单 -> 第三步
  82. {
  83. path: '/create_course_step_table/create_task/:id',
  84. component: () =>
  85. import(/* webpackChunkName: 'create_course'*/ '@/views/teacher/create_course/step_table/CreateTask')
  86. },
  87. // 分步表单 -> 第三步 -> 新建课节任务
  88. {
  89. path: '/create_course_step_table/new_task/:time_type/:id/:curItemID',
  90. component: () =>
  91. import(/* webpackChunkName: 'create_course'*/ '@/views/teacher/create_course/step_table/NewTask')
  92. }
  93. ]
  94. },
  95. // 任务详情
  96. {
  97. path: '/task_detail',
  98. component: Layout,
  99. meta: { title: 'Key278', link: '/' },
  100. children: [
  101. {
  102. path: '/task_detail/student/:id',
  103. component: () => import('@/views/task_details/student')
  104. },
  105. {
  106. path: '/task_detail/teacher/:id',
  107. component: () => import('@/views/task_details/teacher')
  108. }
  109. ]
  110. },
  111. {
  112. path: '/task_detail/show_courseware/:coursewareId',
  113. component: () => import('@/views/task_details/ShowCourseware')
  114. },
  115. // 课程列表 -> 学生列表
  116. {
  117. path: '/student_list',
  118. component: Layout,
  119. redirect: '/student_list/index/:id',
  120. children: [
  121. {
  122. path: '/student_list/index/:id',
  123. component: () => import(/* webpackChunkName: 'course'*/ '@/views/teacher/student_list')
  124. }
  125. ]
  126. },
  127. // 直播
  128. {
  129. path: '/live',
  130. component: Layout,
  131. redirect: '/live/student',
  132. children: [
  133. {
  134. path: '/live/teacher',
  135. component: () => import(/* webpackChunkName: 'live'*/ '@/views/live/teacher')
  136. },
  137. {
  138. path: '/live/teacher/group',
  139. component: () => import(/* webpackChunkName: 'live'*/ '@/views/live/teacher/group.vue')
  140. },
  141. {
  142. path: '/live/student',
  143. component: () => import(/* webpackChunkName: 'live'*/ '@/views/live/student')
  144. },
  145. {
  146. path: '/live/student/group',
  147. component: () => import(/* webpackChunkName: 'live'*/ '@/views/live/student/group.vue')
  148. },
  149. {
  150. path: '/live/student/audit',
  151. component: () => import(/* webpackChunkName: 'live' */ '@/views/live/student/audit.vue')
  152. }
  153. ]
  154. },
  155. {
  156. path: '/course_details',
  157. component: Layout,
  158. redirect: '/GoodsDetail',
  159. children: [
  160. {
  161. path: '/GoodsDetail',
  162. component: () => import('@/views/course_details/index')
  163. }
  164. ]
  165. },
  166. {
  167. path: '*',
  168. redirect: '/404'
  169. }
  170. ];
  171. const createRouter = () =>
  172. new VueRouter({
  173. // mode: 'history',
  174. scrollBehavior: () => ({ y: 0 }),
  175. routes
  176. });
  177. const router = createRouter();
  178. // 重置路由
  179. export function resetRouter() {
  180. const newRouter = createRouter();
  181. router.matcher = newRouter.matcher;
  182. }
  183. export default router;