import Vue from 'vue'; import VueRouter from 'vue-router'; import Layout from '@/layouts'; import Login from '@/views/login'; import store from '@/store'; import { Loading } from 'element-ui'; Vue.use(VueRouter); const routes = [ { path: '/login', component: Login }, { path: '/404', component: () => import('@/views/404') }, // 外部跳转 { path: '/EnterSys', beforeEnter: (to, from, next) => { let loadingInstance = Loading.service({ text: '跳转中...' }); store .dispatch('user/enterSys', { access_code: to.query.AccessCode }) .then(() => { loadingInstance.close(); next('/'); }) .catch(() => { store.dispatch('user/signOut'); loadingInstance.close(); next('/login'); }); } }, // 首页 { path: '/', component: Layout, redirect: '/main', children: [ { path: '/main', name: 'Main', component: () => import('@/views/teacher/main') } ] }, // 创建课程 { path: '/create_course', component: Layout, redirect: '/create_course/index', meta: { title: '课程列表', link: '/?tab=CurriculaList' }, children: [ { path: '/create_course/index', component: () => import('@/views/teacher/create_course/index'), meta: { title: '创建课程' } } ] }, // 新建课程 分步表单 { path: '/create_course_step_table', component: Layout, redirect: '/create_course_step_table/course_info', children: [ // 分步表单 -> 第一步 { path: '/create_course_step_table/course_info', component: () => import('@/views/teacher/create_course/step_table/CourseInfo') }, // 分步表单 -> 第二步 { path: '/create_course_step_table/select_book/:id', name: 'SelectBook', component: () => import('@/views/teacher/create_course/step_table/SelectBook') }, // 分步表单 -> 第三步 { path: '/create_course_step_table/create_task/:id', component: () => import('@/views/teacher/create_course/step_table/CreateTask') }, // 分步表单 -> 第三步 -> 新建课节任务 { path: '/create_course_step_table/new_task/:time_type/:id/:cs_item_id', component: () => import('@/views/teacher/create_course/step_table/NewTask') } ] }, // 课程列表 -> 学生列表 { path: '/student_list', component: Layout, redirect: '/student_list/index/:id', children: [ { path: '/student_list/index/:id', component: () => import('@/views/teacher/student_list') } ] }, // 直播 { path: '/live', component: Layout, redirect: '/live/student', children: [ { path: '/live/teacher', component: () => import('@/views/live/teacher') }, { path: '/live/student', component: () => import('@/views/live/student') }, { path: '/live/group', component: () => import('@/views/live/group') } ] }, { path: '*', redirect: '/404' } ]; const createRouter = () => new VueRouter({ // mode: 'history', scrollBehavior: () => ({ y: 0 }), routes }); const router = createRouter(); // 重置路由 export function resetRouter() { const newRouter = createRouter(); router.matcher = newRouter.matcher; } export default router;