index.js 4.5 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. next('/');
  23. })
  24. .catch(() => {
  25. store.dispatch('user/signOut');
  26. next('/login');
  27. });
  28. }
  29. },
  30. // 首页
  31. {
  32. path: '/',
  33. component: Layout,
  34. redirect: '/main',
  35. children: [
  36. {
  37. path: '/main',
  38. name: 'Main',
  39. component: () => import('@/views/main')
  40. }
  41. ]
  42. },
  43. // 创建课程
  44. {
  45. path: '/create_course',
  46. component: Layout,
  47. redirect: '/create_course/index',
  48. meta: { title: '课程列表', link: '/?tab=CurriculaList' },
  49. children: [
  50. {
  51. path: '/create_course/index',
  52. component: () =>
  53. import(/* webpackChunkName: 'create_course'*/ '@/views/teacher/create_course/index'),
  54. meta: { title: '创建课程' }
  55. }
  56. ]
  57. },
  58. // 新建课程 分步表单
  59. {
  60. path: '/create_course_step_table',
  61. component: Layout,
  62. redirect: '/create_course_step_table/course_info',
  63. children: [
  64. // 分步表单 -> 第一步
  65. {
  66. path: '/create_course_step_table/course_info',
  67. component: () =>
  68. import(
  69. /* webpackChunkName: 'create_course'*/ '@/views/teacher/create_course/step_table/CourseInfo'
  70. )
  71. },
  72. // 分步表单 -> 第二步
  73. {
  74. path: '/create_course_step_table/select_book/:id',
  75. name: 'SelectBook',
  76. component: () =>
  77. import(
  78. /* webpackChunkName: 'create_course'*/ '@/views/teacher/create_course/step_table/SelectBook'
  79. )
  80. },
  81. // 分步表单 -> 第三步
  82. {
  83. path: '/create_course_step_table/create_task/:id',
  84. component: () =>
  85. import(
  86. /* webpackChunkName: 'create_course'*/ '@/views/teacher/create_course/step_table/CreateTask'
  87. )
  88. },
  89. // 分步表单 -> 第三步 -> 新建课节任务
  90. {
  91. path: '/create_course_step_table/new_task/:time_type/:id/:cs_item_id',
  92. component: () =>
  93. import(
  94. /* webpackChunkName: 'create_course'*/ '@/views/teacher/create_course/step_table/NewTask'
  95. )
  96. }
  97. ]
  98. },
  99. // 任务详情
  100. {
  101. path: '/task_detail',
  102. component: Layout,
  103. meta: { title: '任务列表', link: '/' },
  104. children: [
  105. {
  106. path: '/task_detail/student/:id',
  107. component: () => import('@/views/task_details/student')
  108. },
  109. {
  110. path: '/task_detail/teacher/:id',
  111. component: () => import('@/views/task_details/teacher')
  112. }
  113. ]
  114. },
  115. {
  116. path: '/task_detail/show_courseware/:coursewareId',
  117. component: () => import('@/views/task_details/ShowCourseware')
  118. },
  119. // 课程列表 -> 学生列表
  120. {
  121. path: '/student_list',
  122. component: Layout,
  123. redirect: '/student_list/index/:id',
  124. children: [
  125. {
  126. path: '/student_list/index/:id',
  127. component: () => import(/* webpackChunkName: 'course'*/ '@/views/teacher/student_list')
  128. }
  129. ]
  130. },
  131. // 直播
  132. {
  133. path: '/live',
  134. component: Layout,
  135. redirect: '/live/student',
  136. children: [
  137. {
  138. path: '/live/teacher',
  139. component: () => import(/* webpackChunkName: 'live'*/ '@/views/live/teacher')
  140. },
  141. {
  142. path: '/live/teacher/group',
  143. component: () => import(/* webpackChunkName: 'live'*/ '@/views/live/teacher/group.vue')
  144. },
  145. {
  146. path: '/live/student',
  147. component: () => import(/* webpackChunkName: 'live'*/ '@/views/live/student')
  148. },
  149. {
  150. path: '/live/student/group',
  151. component: () => import(/* webpackChunkName: 'live'*/ '@/views/live/student/group.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;