上饶市警务平台后台管理前端
guanqb
2023-02-28 2e41623f7fd7fd4f01b08cda81012edc9c573d91
src/permission.js
@@ -2,9 +2,9 @@
 * 全站权限配置
 *
 */
import md5 from 'js-md5'
import request from '@/router/axios';
import { Message } from 'element-ui'
// import md5 from 'js-md5'
// import request from '@/router/axios'
// import { Message } from 'element-ui'
import router from './router/router'
import store from './store'
@@ -12,144 +12,150 @@
import { getToken } from '@/util/auth'
import NProgress from 'nprogress' // progress bar
import 'nprogress/nprogress.css' // progress bar style
NProgress.configure({ showSpinner: false });
const lockPage = store.getters.website.lockPage; //锁屏页
NProgress.configure({ showSpinner: false })
const lockPage = store.getters.website.lockPage //锁屏页
router.beforeEach((to, from, next) => {
  var tag = false;
  // if (to.fullPath.indexOf("token") > 0) {
  //   tag = true;
  // }
  const meta = to.meta || {};
  const isMenu = meta.menu === undefined ? to.query.menu : meta.menu;
  store.commit('SET_IS_MENU', isMenu === undefined);
  if (getToken()) {
    if (store.getters.isLock && to.path !== lockPage) { //如果系统激活锁屏,全部跳转到锁屏页
      next({ path: lockPage })
    } else if (to.path === '/login') { //如果登录成功访问登录页跳转到主页
      next({ path: '/' })
    } else {
      //如果用户信息为空则获取用户信息,获取用户信息失败,跳转到登录页
      // if (store.getters.token.length === 0 && tag==false) {
        if (store.getters.token.length === 0) {
        store.dispatch('FedLogOut').then(() => {
          next({ path: '/login' })
        })
      } else {
        const value = to.query.src || to.fullPath;
        const label = to.query.name || to.name;
        const meta = to.meta || router.$avueRouter.meta || {};
        const i18n = to.query.i18n;
        if (to.query.target) {
          window.open(value)
        } else if (meta.isTab !== false && !validatenull(value) && !validatenull(label)) {
       // } else if (meta.isTab !== false && !validatenull(value) && !validatenull(label) && tag==false) {
          store.commit('ADD_TAG', {
            label: label,
            value: value,
            params: to.params,
            query: to.query,
            meta: (() => {
              if (!i18n) {
                return meta
              }
              return {
                i18n: i18n
              }
            })(),
            group: router.$avueRouter.group || []
          });
        }
        next()
      }
    let hrefIdx = window.location.href.indexOf('token=') // url中是否携带token
    var tag = false
    if (to.fullPath.indexOf("token") > 0) {
        tag = true
    }
  } else {
    //判断是否需要认证,没有登录访问去登录页
    if (meta.isAuth === false) {
      next()
    } else {
      console.log(to.path,66666)
      if (to.path == '/security/security') {
        // console.log('进入首页-----')
        var a = to.query.securitySupervisionSystem;
        if (a == undefined || typeof a != "string") {
          // console.log("无securitySupervisionSystem参数  跳回登入");
          next('/login');
          next('/login');
          return;
        }
        // console.log("有securitySupervisionSystem参数");
        try {
          // console.log("判断securitySupervisionSystem是否能被JSOn解码");
          var obj = JSON.parse(a);
          if (typeof obj == "object" && obj && obj.tokenMY == '987654321S') {
            debugger
            var data = {
              tenantId: obj.data.dip,
              username: obj.data.rese,
              password: md5(obj.data.sap),
              grant_type: 'password',
              scope: 'all',
              type: 'account'
            };
            request({
              url: '/api/blade-auth/oauth/token',
              method: 'post',
              headers: {
                'Authorization': 'Basic c2FiZXI6c2FiZXJfc2VjcmV0',
                "Tenant-Id": "000000"
              },
              params: data
            }).then(res => {
              const data = res.data;
              if (data.error_description) {
                // console.log("登入失败");
                Message({
                  message: data.error_description,
                  type: 'error'
    const meta = to.meta || {}
    const isMenu = meta.menu === undefined ? to.query.menu : meta.menu
    store.commit('SET_IS_MENU', isMenu === undefined)
    if (hrefIdx > -1) {
        let token = window.location.href.slice(hrefIdx + 6)
        store.commit('SET_TOKEN', token)
    }
    if (getToken()) {
        if (store.getters.isLock && to.path !== lockPage) { //如果系统激活锁屏,全部跳转到锁屏页
            next({ path: lockPage })
        } else if (to.path === '/login') { //如果登录成功访问登录页跳转到主页
            next({ path: '/' })
        } else {
            //如果用户信息为空则获取用户信息,获取用户信息失败,跳转到登录页
            if (store.getters.token.length === 0 && tag == false) {
                // if (store.getters.token.length === 0) {
                store.dispatch('FedLogOut').then(() => {
                    next({ path: '/login' })
                })
                next('/login');
                next('/login');
                return;
              } else {
                // console.log("登入成功");
                store.commit('SET_TOKEN', data.access_token);
                store.commit('SET_REFRESH_TOKEN', data.refresh_token);
                store.commit('SET_TENANT_ID', data.tenant_id);
                store.commit('SET_USER_INFO', data);
                store.commit('DEL_ALL_TAG');
                store.commit('CLEAR_LOCK');
                next(to.path);
                return;
              }
            })
            return;
          } else {
            // console.log("成功解码 不是对象");
            next('/login');
            next('/login');
            return;
          }
        } catch {
          // console.log('不是Json对象 跳回登入');
          next('/login');
          next('/login');
          return;
            } else {
                const value = to.query.src || to.fullPath
                const label = to.query.name || to.name
                const meta = to.meta || router.$avueRouter.meta || {}
                const i18n = to.query.i18n
                if (to.query.target) {
                    window.open(value)
                    // } else if (meta.isTab !== false && !validatenull(value) && !validatenull(label)) {
                } else if (meta.isTab !== false && !validatenull(value) && !validatenull(label) && tag == false) {
                    store.commit('ADD_TAG', {
                        label: label,
                        value: value,
                        params: to.params,
                        query: to.query,
                        meta: (() => {
                            if (!i18n) {
                                return meta
                            }
                            return {
                                i18n: i18n
                            }
                        })(),
                        group: router.$avueRouter.group || []
                    })
                }
                next()
            }
        }
      }
      next('/login')
    } else {
        //判断是否需要认证,没有登录访问去登录页
        if (meta.isAuth === false) {
            next()
        } else {
            // console.log(to.path, 66666)
            // if (to.path == '/security/security') {
            //     // console.log('进入首页-----')
            //     var a = to.query.securitySupervisionSystem
            //     if (a == undefined || typeof a != "string") {
            //         // console.log("无securitySupervisionSystem参数  跳回登入");
            //         next('/login')
            //         next('/login')
            //         return
            //     }
            //     // console.log("有securitySupervisionSystem参数");
            //     try {
            //         // console.log("判断securitySupervisionSystem是否能被JSOn解码");
            //         var obj = JSON.parse(a)
            //         if (typeof obj == "object" && obj && obj.tokenMY == '987654321S') {
            //             debugger
            //             var data = {
            //                 tenantId: obj.data.dip,
            //                 username: obj.data.rese,
            //                 password: md5(obj.data.sap),
            //                 grant_type: 'password',
            //                 scope: 'all',
            //                 type: 'account'
            //             }
            //             request({
            //                 url: '/api/blade-auth/oauth/token',
            //                 method: 'post',
            //                 headers: {
            //                     'Authorization': 'Basic c2FiZXI6c2FiZXJfc2VjcmV0',
            //                     "Tenant-Id": "000000"
            //                 },
            //                 params: data
            //             }).then(res => {
            //                 const data = res.data
            //                 if (data.error_description) {
            //                     // console.log("登入失败");
            //                     Message({
            //                         message: data.error_description,
            //                         type: 'error'
            //                     })
            //                     next('/login')
            //                     next('/login')
            //                     return
            //                 } else {
            //                     // console.log("登入成功");
            //                     store.commit('SET_TOKEN', data.access_token)
            //                     store.commit('SET_REFRESH_TOKEN', data.refresh_token)
            //                     store.commit('SET_TENANT_ID', data.tenant_id)
            //                     store.commit('SET_USER_INFO', data)
            //                     store.commit('DEL_ALL_TAG')
            //                     store.commit('CLEAR_LOCK')
            //                     next(to.path)
            //                     return
            //                 }
            //             })
            //             return
            //         } else {
            //             // console.log("成功解码 不是对象");
            //             next('/login')
            //             return
            //         }
            //     } catch {
            //         // console.log('不是Json对象 跳回登入');
            //         next('/login')
            //         return
            //     }
            // }
            next('/login')
        }
    }
  }
})
router.afterEach(() => {
  NProgress.done();
  let title = store.getters.tag.label;
  let i18n = store.getters.tag.meta.i18n;
  title = router.$avueRouter.generateTitle(title, i18n);
  //判断登录页的情况
  if (router.history.current.fullPath === "/login") {
    title = "登录";
  }
  //根据当前的标签也获取label的值动态设置浏览器标题
  router.$avueRouter.setTitle(title);
});
    NProgress.done()
    let title = store.getters.tag.label
    let i18n = store.getters.tag.meta.i18n
    title = router.$avueRouter.generateTitle(title, i18n)
    //判断登录页的情况
    if (router.history.current.fullPath === "/login") {
        title = "登录"
    }
    //根据当前的标签也获取label的值动态设置浏览器标题
    router.$avueRouter.setTitle(title)
})