import Vue from 'vue'
import VueRouter from 'vue-router'
import layout from '@/views/Index.vue'
import blank from '@/components/blank'
// import { checkAuth } from './api/api'
const _import = (file) => () => import(`@/views/${file}`)
Vue.use(VueRouter)
const routes = [
{
path: '/',
name: 'layout',
component: layout,
},
{
path: '/login',
name: 'login',
hidden: true,
meta: {
requiresAuth: false,
},
component: () => import('@/views/login/Login.vue'),
},
]
let router = new VueRouter({
mode: 'hash',
// base: process.env.BASE_URL,
routes,
})
var getRouter = sessionStorage.getItem('router')
if (getRouter) {
let _getRouter = filterAsyncRouter(JSON.parse(getRouter))
router.addRoutes(_getRouter)
router.addRoutes([
{
path: '/404',
name: '404',
hidden: true,
component: () => import('@/views/404.vue'),
meta: {
title: '请求页面未找到',
auth: false,
requiresAuth: false,
},
},
{
path: '*',
hidden: true,
meta: {
title: '请求页面未找到',
auth: false,
requiresAuth: false,
},
redirect: '/404',
},
])
}
router.beforeEach((to, from, next) => {
let token = sessionStorage.getItem('access_token')
if (to.meta.requiresAuth != false) {
if (token) {
// checkAuth().then((res) => {
// if (res && getRouter) {
next()
// } else {
// next({ path: '/login' })
}
// })
else {
next({
path: '/login',
})
}
} else {
next()
}
})
function filterAsyncRouter(asyncRouterMap) {
//遍历后台传来的路由字符串,转换为组件对象
const accessedRouters = asyncRouterMap.filter((route) => {
if (route.parentId) {
delete route.parentId
}
if (route.id) {
delete route.id
}
if (route.component) {
if (route.component === 'layout') {
//Layout组件特殊处理
route.component = layout
} else if (route.component === 'blank') {
route.component = blank
} else {
route.component = _import(route.component)
}
}
if (route.children && route.children.length) {
route.children = filterAsyncRouter(route.children)
}
return true
})
return accessedRouters
}
export default router