index.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  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. path: '/EnterSys',
  19. beforeEnter: (to, from, next) => {
  20. let loadingInstance = Loading.service({
  21. text: '跳转中...'
  22. });
  23. store
  24. .dispatch('user/enterSys', { access_code: to.query.AccessCode })
  25. .then(() => {
  26. loadingInstance.close();
  27. next('/');
  28. })
  29. .catch(() => {
  30. store.dispatch('user/signOut');
  31. loadingInstance.close();
  32. next('/login');
  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/teacher/main')
  45. }
  46. ]
  47. },
  48. // 创建课程
  49. {
  50. path: '/create_course',
  51. component: Layout,
  52. redirect: '/create_course/index',
  53. meta: { title: '课程列表' },
  54. children: [
  55. {
  56. path: '/create_course/index',
  57. component: () => import('@/views/teacher/create_course/index'),
  58. meta: { title: '创建课程' }
  59. }
  60. ]
  61. },
  62. {
  63. path: '/create_course_step_table',
  64. component: Layout,
  65. redirect: '/create_course_step_table/course_info',
  66. children: [
  67. {
  68. path: '/create_course_step_table/course_info',
  69. component: () => import('@/views/teacher/create_course/step_table/CourseInfo')
  70. },
  71. {
  72. path: '/create_course_step_table/select_book/:id',
  73. name: 'SelectBook',
  74. component: () => import('@/views/teacher/create_course/step_table/SelectBook')
  75. },
  76. {
  77. path: '/create_course_step_table/create_task/:id',
  78. component: () => import('@/views/teacher/create_course/step_table/CreateTask')
  79. },
  80. {
  81. path: '/create_course_step_table/new_task/:time_type/:id/:cs_item_id',
  82. component: () => import('@/views/teacher/create_course/step_table/NewTask')
  83. }
  84. ]
  85. },
  86. {
  87. path: '/cs_item_detail',
  88. component: Layout,
  89. redirect: '/cs_item_detail/index/:id',
  90. children: [
  91. {
  92. path: '/cs_item_detail/index/:id',
  93. name: 'CSItemDetail',
  94. component: () => import('@/views/teacher/cs_item_detail')
  95. }
  96. ]
  97. },
  98. {
  99. path: '/add_course',
  100. component: Layout,
  101. redirect: '/add_course/index',
  102. children: [
  103. {
  104. path: '/add_course/index',
  105. name: 'AddCourse',
  106. component: () => import('@/views/teacher/add_course')
  107. }
  108. ]
  109. },
  110. {
  111. path: '/live',
  112. component: Layout,
  113. redirect: '/live/teacher',
  114. children: [
  115. {
  116. path: '/live/teacher',
  117. name: 'TeacherLive',
  118. component: () => import('@/views/live')
  119. }
  120. ]
  121. },
  122. {
  123. path: '*',
  124. redirect: '/404'
  125. }
  126. ];
  127. const createRouter = () =>
  128. new VueRouter({
  129. // mode: 'history',
  130. scrollBehavior: () => ({ y: 0 }),
  131. routes
  132. });
  133. const router = createRouter();
  134. // 重置路由
  135. export function resetRouter() {
  136. const newRouter = createRouter();
  137. router.matcher = newRouter.matcher;
  138. }
  139. export default router;