spring
2025-04-27 2a2d753357f4d3c26b3622513ffb6e647f64704a
src/permission.js
@@ -2,72 +2,99 @@
 * 全站权限配置
 *
 */
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 });
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 })
router.beforeEach((to, from, next) => {
  NProgress.start();
  const meta = to.meta || {};
  NProgress.start()
  const meta = to.meta || {}
  const whiteList = ['/login', '/404', '/401', '/lock', '/pack']
  if (store.getters.access_token) {
    if (store.getters.isLock && to.path !== '/lock') {
      next({ path: '/lock' });
      next({ path: '/lock' })
    } else if (to.path === '/login') {
      next({ path: '/' });
      next({ path: '/' })
    } else {
      const value = to.query.src || to.fullPath;
      const label = to.query.name || to.name;
      if (meta.isTab !== false && !validatenull(value) && !validatenull(label)) {
      const value = to.query.src || to.fullPath
      const label = to.query.name || to.name
      // 检查当前要进入的页面是否在标签列表中
      const existingTag = store.getters.tagList.find(
        (tag) => tag.label === label
      )
      if (existingTag) {
        // 如果存在,删除该标签
        store.commit('DEL_TAG', existingTag)
      }
      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();
      next()
    }
  } else {
    // 页面多开:载入localStorage的auth参数 By Luxn
    let auth = JSON.parse(localStorage.getItem("authorization") || "{}");
    if ( meta.isAuth === false) {
      next();
    }else{
      if (auth.date_time) {
        let key = ["access_token", "refresh_token", "expires_in", "user_info", "language"];
        key.forEach((item, i) => {
          store.commit("SET_" + item.toUpperCase(), auth[item]);
          store.commit("SET_PERMISSIONS", auth.user_info.authorities || []);
        });
        // 获取左侧导航,打开Path页面 By Luxn
        store.dispatch("GetMenu", { language: auth.language, type: true }).then((data) => {
          let path = window.location.hash.substr(1);
          if (data.length > 0 && path.length > 1) {
            router.$avueRouter.formatRoutes(data, true);
            next({ path: path });
          }
          else {
            next();
          }
        });
      }else{
        next('/login');
    let auth = JSON.parse(localStorage.getItem('authorization') || '{}')
    if (meta.isAuth === false) {
      //没有token的情况
      if (whiteList.indexOf(to.path) !== -1) {
        // 如果在白名单内则直接跳转
        next()
      } else {
        // 其余页面重定向到登录页
        next('/login')
      }
      // next();
    } else {
      if (auth.date_time) {
        let key = [
          'access_token',
          'refresh_token',
          'expires_in',
          'user_info',
          'language'
        ]
        key.forEach((item, i) => {
          store.commit('SET_' + item.toUpperCase(), auth[item])
          store.commit('SET_PERMISSIONS', auth.user_info.authorities || [])
        })
        // 获取左侧导航,打开Path页面 By Luxn
        store
          .dispatch('GetMenu', { language: auth.language, type: true })
          .then((data) => {
            let path = window.location.hash.substr(1)
            if (data.length > 0 && path.length > 1) {
              router.$avueRouter.formatRoutes(data, true)
              next({ path: path })
            } else {
              next()
            }
          })
      } else {
        next('/login')
      }
    }
  }
})
router.afterEach((to,from) => {
  NProgress.done();
  const title = store.getters.tag.label;
  router.$avueRouter.setTitle(title);
router.afterEach((to, from) => {
  NProgress.done()
  const title = store.getters.tag.label
  router.$avueRouter.setTitle(title)
  // 打开新页面标题不对,根据router配置的title进行替换
  if(to.meta.title){
    router.$avueRouter.setTitle( to.meta.title)
  if (to.meta.title) {
    router.$avueRouter.setTitle(to.meta.title)
  }
})