123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- import Vue from 'vue'
- import router from './router'
- import store from './store'
- import user from '@/store/modules/user'
- import NProgress from 'nprogress' // progress bar
- import 'nprogress/nprogress.css' // progress bar style
- import notification from 'ant-design-vue/es/notification'
- import {ACCESS_TOKEN, INDEX_MAIN_PAGE_PATH, OAUTH2_LOGIN_PAGE_PATH} from '@/store/mutation-types'
- import {generateIndexRouter, isOAuth2AppEnv} from '@/utils/util'
- NProgress.configure({showSpinner: false}) // NProgress Configuration
- const whiteList = ['/user/login', '/user/register', '/user/register-result', '/user/alteration', '/mainMapback', "/tj/sjtjModule"] // no redirect whitelist
- whiteList.push(OAUTH2_LOGIN_PAGE_PATH)
- router.beforeEach((to, from, next) => {
- NProgress.start() // start progress bar
- // alert(to.path)
- if (Vue.ls.get(ACCESS_TOKEN)) {
- /* has token */
- if (to.path === '/user/login' || to.path === OAUTH2_LOGIN_PAGE_PATH) {
- next({path: INDEX_MAIN_PAGE_PATH})
- NProgress.done()
- } else {
- if (store.getters.permissionList.length === 0) {
- store.dispatch('GetPermissionList').then(res => {
- console.log("GetPermissionList", res.result);
- const menuData = res.result.menu;
- //console.log(res.message)
- if (menuData === null || menuData === "" || menuData === undefined) {
- return;
- }
- let constRoutes = [];
- constRoutes = generateIndexRouter(menuData);
- const auth = res.result.auth;
- if (auth.length > 0) {
- store.commit('setMenu', auth);
- }
- // 添加主界面路由
- store.dispatch('UpdateAppRouter', {constRoutes}).then(() => {
- // 根据roles权限生成可访问的路由表
- // 动态添加可访问路由表
- router.addRoutes(store.getters.addRouters)
- const redirect = decodeURIComponent(from.query.redirect || to.path)
- if (to.path === redirect) {
- // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record
- next({...to, replace: true})
- } else {
- // 跳转到目的路由
- // next({path: redirect})
- if (JSON.stringify(constRoutes).includes(redirect)) {
- next({
- path: redirect
- })
- } else {
- next({
- path: '/dashboard/analysis'
- })
- }
- }
- })
- })
- .catch(() => {
- /* notification.error({
- message: '系统提示',
- description: '请求用户信息失败,请重试!'
- })*/
- store.dispatch('Logout').then(() => {
- next({path: '/user/login', query: {redirect: to.fullPath}})
- })
- })
- } else {
- next()
- }
- }
- } else {
- if (sessionStorage.getItem('loginTicket')) {
- user.actions.ValidateLogin(JSON.parse(sessionStorage.getItem('loginTicket')).access_token).then(res=>{
- if(res.code=='200'){
- next()
- }else{
- console.log("出错了")
- }
- }).catch(err=>{
- console.log(err)
- });
- }else{
- if (whiteList.indexOf(to.path) !== -1) {
- // 在免登录白名单,如果进入的页面是login页面并且当前是OAuth2app环境,就进入OAuth2登录页面
- if (to.path === '/user/login' && isOAuth2AppEnv()) {
- next({path: OAUTH2_LOGIN_PAGE_PATH})
- } else {
- // 在免登录白名单,直接进入
- next()
- }
- NProgress.done()
- } else {
- // alert(whiteList)
- // alert(to.path)
- // 如果当前是在OAuth2APP环境,就跳转到OAuth2登录页面
- let path = isOAuth2AppEnv() ? OAUTH2_LOGIN_PAGE_PATH : '/user/login'
- next({path: path, query: {redirect: to.fullPath}})
- NProgress.done() // if current page is login will not trigger afterEach hook, so manually handle it
- }
- }
- }
- })
- router.afterEach(() => {
- NProgress.done() // finish progress bar
- })
|