import router from './router' import store from './store' import { Message } from 'element-ui' import NProgress from 'nprogress' // progress bar import 'nprogress/nprogress.css' // progress bar style import { getToken } from '@/utils/auth' // get token from cookie import getPageTitle from '@/utils/get-page-title' import { asyncRoutes } from '@/router' NProgress.configure({ showSpinner: false }) // NProgress Configuration const whiteList = ['/login', '/auth-redirect', '/testForm'] // no redirect whitelist router.beforeEach(async (to, from, next) => { // 添加路由信息,方便代码修改定位 // console.log('----------------' + to.meta.title + '-----------------------'+ to.fullPath.substring(to.fullPath.lastIndexOf('-')+1,to.fullPath.length) + '.vue' ); // start progress bar NProgress.start() // set page title document.title = getPageTitle() next() // determine whether the user has logged in // todo-new:等获取token接口恢复后做处理 const hasRoles =await store.getters.roles && await store.getters.roles.length > 0 if (hasRoles) { next() } else { try { // get user info // note: roles must be a object array! such as: ['admin'] or ,['developer','editor'] // 如果缓存中没有 interfaceBoardColumnsNames(接口监控看板表头信息) 的缓存数据 则退出登录 let _interfaceBoardColumnsNames = localStorage.getItem("interfaceBoardColumnsNames") if(!_interfaceBoardColumnsNames || _interfaceBoardColumnsNames == 'undefined' || _interfaceBoardColumnsNames == 'null'){ await store.dispatch('user/logout') next(`/login?redirect=${to.path}`) NProgress.done() } const { roles } = await store.dispatch('user/getInfo') // generate accessible routes map based on roles // const accessRoutes = await store.dispatch('permission/generateRoutes', localStorage.getItem('userId')) // router.addRoutes(accessRoutes) // 原码 防止刷新出现空白页(系统暂无出现所以注释) // const accessRoutes = await store.dispatch('permission/generateRoutes', roles) // router.addRoutes(accessRoutes) // hack method to ensure that addRoutes is complete // set the replace: true, so the navigation will not leave a history record next({ ...to, replace: true }) } catch (error) { // remove token and go to login page to re-login await store.dispatch('user/resetToken') Message.error(error || 'Has Error') next(`/login?redirect=${to.path}`) NProgress.done() } } }) router.afterEach(() => { // element-ui 使用 Tooltip 提示时候,更换页面,提示依旧存在偶现bug处理。 const mytooltipList = document.querySelectorAll('.el-tooltip__popper') // 获取页面所有tooltip的dom集合 setTimeout(() => { mytooltipList.forEach((value) => { value.style.display = 'none' if(value.parentElement){ value.parentElement.removeChild(value) } }) }, 1000) // finish progress bar NProgress.done() })