import router from './router' import store from './store' import NProgress from 'nprogress' // progress bar import 'nprogress/nprogress.css' // progress bar style import getPageTitle from '@/utils/get-page-title' import Layout from '@/layout' import serve from 'api/login.js' NProgress.configure({ showSpinner: false }) // NProgress Configuration const whiteList = ['/login'] // no redirect whitelist router.beforeEach(async (to, from, next) => { NProgress.start() document.title = getPageTitle(to.meta.title) const hasToken = localStorage.getItem('businessToken') if (hasToken) { if (to.path === '/login') { next({ path: '/' }) NProgress.done() } else { const hasAuth = store.getters.auth && store.getters.auth.length if (hasAuth) { next() } else { try { // let infoRes = await serve.getUserInfo(); // infoRes.data.authList = [1]; let infoRes = await serve.info() // infoRes.data.authList = infoRes.authList; store.dispatch('user/info', infoRes.data) let routerRes = await serve.getCustomerRouters() let realRouter = filterAsyncRouter(routerRes.data) store.dispatch('permission/generateRoutes', realRouter) router.addRoutes(realRouter) next({ ...to, replace: true }) } catch (err) { console.log('catch') // next("/login"); NProgress.done() } } } } else { if (whiteList.includes(to.path)) { next() } else { next('/login') NProgress.done() } } }) router.afterEach(() => { NProgress.done() }) function filterAsyncRouter(routers) { return routers.map(route => { if (route.component) { if (route.component === 'Layout') { route.component = Layout } else { route.component = lazyLoad(route.component) } } if (route.children && route.children.length) { route.children = filterAsyncRouter(route.children) } return route }) } function lazyLoad(path) { return resolve => require([`@/views/${path}`], resolve) }