index.js 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  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: '/canvas',
  13. component: () => import('@/views/canvas')
  14. },
  15. {
  16. path: '/404',
  17. component: () => import('@/views/404')
  18. },
  19. // 外部跳转
  20. {
  21. path: '/EnterSys',
  22. beforeEnter: (to, from, next) => {
  23. store
  24. .dispatch('user/enterSys')
  25. .then(() => {
  26. const { tab, enter, dateStamp } = to.query;
  27. if (enter) {
  28. next(`/${enter}?tab=${tab}&dateStamp=${dateStamp}`);
  29. } else {
  30. next('/');
  31. }
  32. })
  33. .catch(() => {
  34. store.dispatch('user/signOut');
  35. next('/login');
  36. });
  37. }
  38. },
  39. // 首页
  40. {
  41. path: '/',
  42. component: Layout,
  43. redirect: '/main',
  44. children: [
  45. {
  46. path: '/main',
  47. name: 'Main',
  48. component: () => import('@/views/main')
  49. }
  50. ]
  51. },
  52. // 创建课程
  53. {
  54. path: '/create_course',
  55. component: Layout,
  56. redirect: '/create_course/index',
  57. meta: { title: 'Key279', link: '/?tab=CurriculaList' },
  58. children: [
  59. {
  60. path: '/create_course/index',
  61. component: () => import(/* webpackChunkName: 'create_course'*/ '@/views/teacher/create_course/index'),
  62. meta: { title: 'Key285' }
  63. }
  64. ]
  65. },
  66. // 新建课程 分步表单
  67. {
  68. path: '/create_course_step_table',
  69. component: Layout,
  70. redirect: '/create_course_step_table/course_info',
  71. children: [
  72. // 分步表单 -> 第一步
  73. {
  74. path: '/create_course_step_table/course_info',
  75. component: () =>
  76. import(/* webpackChunkName: 'create_course'*/ '@/views/teacher/create_course/step_table/CourseInfo')
  77. },
  78. // 分步表单 -> 第二步
  79. {
  80. path: '/create_course_step_table/select_book/:id',
  81. name: 'SelectBook',
  82. component: () =>
  83. import(/* webpackChunkName: 'create_course'*/ '@/views/teacher/create_course/step_table/SelectBook')
  84. },
  85. /* 旧创建课节 开始 */
  86. // 分步表单 -> 第三步
  87. {
  88. path: '/create_course_step_table/old_create_task/:id',
  89. component: () =>
  90. import(/* webpackChunkName: 'old_create_course'*/ '@/views/teacher/create_course/step_table/CreateTask')
  91. },
  92. // 分步表单 -> 第四步 -> 新建课节任务
  93. {
  94. path: '/create_course_step_table/new_task/:time_type/:id/:curItemID',
  95. component: () =>
  96. import(/* webpackChunkName: 'old_create_course'*/ '@/views/teacher/create_course/step_table/NewTask')
  97. },
  98. /* 旧创建课节 结束 */
  99. /* 新创建课节 */
  100. // 分步表单 -> 第三步
  101. {
  102. path: '/create_course_step_table/create_task/:id',
  103. component: () =>
  104. import(
  105. /* webpackChunkName: 'create_course'*/ '@/views/teacher/create_course/step_table/create_task/index.vue'
  106. )
  107. }
  108. ]
  109. },
  110. // 任务详情
  111. {
  112. path: '/task_detail',
  113. component: Layout,
  114. meta: { title: 'Key278', link: '/' },
  115. children: [
  116. {
  117. path: '/task_detail/student/:id',
  118. component: () => import('@/views/task_details/student')
  119. },
  120. {
  121. path: '/task_detail/teacher/:id',
  122. component: () => import('@/views/task_details/teacher')
  123. }
  124. ]
  125. },
  126. // 0元付款成功
  127. {
  128. path: '/OrderPaySuccess',
  129. component: Layout,
  130. redirect: '/OrderPaySuccess/index',
  131. children: [
  132. {
  133. path: '/OrderPaySuccess/index',
  134. component: () => import('@/views/OrderPaySuccess.vue')
  135. }
  136. ]
  137. },
  138. {
  139. path: '/task_detail/show_courseware/:coursewareId',
  140. component: () => import('@/views/task_details/ShowCourseware')
  141. },
  142. // 课程列表 -> 学生列表
  143. {
  144. path: '/student_list',
  145. component: Layout,
  146. redirect: '/student_list/index/:id',
  147. children: [
  148. {
  149. path: '/student_list/index/:id',
  150. component: () => import(/* webpackChunkName: 'course'*/ '@/views/teacher/student_list')
  151. }
  152. ]
  153. },
  154. // 直播
  155. {
  156. path: '/live',
  157. component: Layout,
  158. redirect: '/live/student',
  159. children: [
  160. {
  161. path: '/live/teacher',
  162. component: () => import(/* webpackChunkName: 'live'*/ '@/views/live/teacher')
  163. },
  164. {
  165. path: '/live/teacher/group',
  166. component: () => import(/* webpackChunkName: 'live'*/ '@/views/live/teacher/group.vue')
  167. },
  168. {
  169. path: '/live/student',
  170. component: () => import(/* webpackChunkName: 'live'*/ '@/views/live/student')
  171. },
  172. {
  173. path: '/live/student/group',
  174. component: () => import(/* webpackChunkName: 'live'*/ '@/views/live/student/group.vue')
  175. },
  176. {
  177. path: '/live/student/audit',
  178. component: () => import(/* webpackChunkName: 'live' */ '@/views/live/student/audit.vue')
  179. }
  180. ]
  181. },
  182. // 课程详情
  183. {
  184. path: '/course_details',
  185. component: Layout,
  186. redirect: '/GoodsDetail',
  187. children: [
  188. {
  189. path: '/GoodsDetail',
  190. component: () => import('@/views/course_details')
  191. }
  192. ]
  193. },
  194. // 模板详情
  195. {
  196. path: '/template_details',
  197. component: Layout,
  198. redirect: '/TemplateDetails',
  199. children: [
  200. {
  201. path: '/TemplateDetails',
  202. component: () => import('@/views/template_details')
  203. }
  204. ]
  205. },
  206. {
  207. path: '*',
  208. redirect: '/404'
  209. }
  210. ];
  211. const createRouter = () =>
  212. new VueRouter({
  213. // mode: 'history',
  214. scrollBehavior: () => ({ y: 0 }),
  215. routes
  216. });
  217. const router = createRouter();
  218. // 重置路由
  219. export function resetRouter() {
  220. const newRouter = createRouter();
  221. router.matcher = newRouter.matcher;
  222. }
  223. export default router;