12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- /**
- * 全站权限配置
- *
- */
- 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)
- })
|