index.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  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. },
  82. {
  83. path: '/cs_item_detail',
  84. component: Layout,
  85. redirect: '/cs_item_detail/index/:id',
  86. children: [
  87. {
  88. path: '/cs_item_detail/index/:id',
  89. name: 'CSItemDetail',
  90. component: () => import('@/views/teacher/cs_item_detail')
  91. }
  92. ]
  93. },
  94. {
  95. path: '/add_course',
  96. component: Layout,
  97. redirect: '/add_course/index',
  98. children: [
  99. {
  100. path: '/add_course/index',
  101. name: 'AddCourse',
  102. component: () => import('@/views/teacher/add_course')
  103. }
  104. ]
  105. },
  106. {
  107. path: '/live',
  108. component: Layout,
  109. redirect: '/live/teacher',
  110. children: [
  111. {
  112. path: '/live/teacher',
  113. name: 'TeacherLive',
  114. component: () => import('@/views/live')
  115. }
  116. ]
  117. },
  118. {
  119. path: '*',
  120. redirect: '/404'
  121. }
  122. ];
  123. const createRouter = () =>
  124. new VueRouter({
  125. // mode: 'history',
  126. scrollBehavior: () => ({ y: 0 }),
  127. routes
  128. });
  129. const router = createRouter();
  130. // 重置路由
  131. export function resetRouter() {
  132. const newRouter = createRouter();
  133. router.matcher = newRouter.matcher;
  134. }
  135. export default router;