/** * 全站权限配置 * */ import router from './router/router' import store from '@/store' import {validatenull} from '@/util/validate' import NProgress from 'nprogress' // progress bar import 'nprogress/nprogress.css' // progress bar style NProgress.configure({showSpinner: false}) /** * 导航守卫,相关内容可以参考: * https://router.vuejs.org/zh/guide/advanced/navigation-guards.html */ router.beforeEach((to, from, next) => { // 缓冲设置 if (to.meta.keepAlive === true && store.state.tags.tagList.some(ele => { return ele.value === to.fullPath })) { to.meta.$keepAlive = true } else { NProgress.start() if (to.meta.keepAlive === true && validatenull(to.meta.$keepAlive)) { to.meta.$keepAlive = true } else { to.meta.$keepAlive = false } } const meta = to.meta || {} if (store.getters.access_token) { if (to.path === '/login') { next({path: '/'}) } else { // NOTE: 当用户角色不存在时,会存在无限请求用户信息接口的问题 if (store.getters.roles.length === 0) { // store.dispatch('GetUserInfo').then(() => { next() // }).catch(() => { // store.dispatch('FedLogOut').then(() => { // next({path: '/login'}) // }) // }) } else { const value = to.query.src || to.fullPath const label = to.query.name || to.name if (meta.isTab !== false && !validatenull(value) && !validatenull(label)) { store.commit('ADD_TAG', { label: label, value: value, params: to.params, query: to.query, group: router.$avueRouter.group || [] }) } next() } } // if(to.fullPath=="/idp/data/forecastpowerdata/index"&&from.fullPath=='/homePage'){ // var href = location.href.split("#")[0] // if (location.href.indexOf("#reloaded") == -1) { // location.href = href+"#/idp/data/forecastpowerdata/index"+"#reloaded"; // location.reload(); // } // } } else { if (meta.isAuth === false) { next() } else { next('/login') } } }) router.afterEach(() => { NProgress.done() const title = store.getters.tag.label router.$avueRouter.setTitle(title) })