智慧农业后台管理页面
xiebin
2022-08-30 0ca529f18f64a20d5c939436b993814c52e74fff
优化登录相关
6 files modified
99 ■■■■■ changed files
src/page/index/index.vue 1 ●●●● patch | view | raw | blame | history
src/page/index/top/index.vue 2 ●●● patch | view | raw | blame | history
src/page/login/userlogin.vue 23 ●●●●● patch | view | raw | blame | history
src/permission.js 27 ●●●●● patch | view | raw | blame | history
src/store/modules/user.js 36 ●●●●● patch | view | raw | blame | history
src/util/store.js 10 ●●●● patch | view | raw | blame | history
src/page/index/index.vue
@@ -38,6 +38,7 @@
  import {validatenull} from "@/util/validate";
  import {calcDate} from "@/util/date.js";
  import {getStore} from "@/util/store.js";
  import {Message} from "element-ui";
  export default {
    components: {
src/page/index/top/index.vue
@@ -87,7 +87,7 @@
                    ></i>
                </div>
            </el-tooltip>
            <img class="top-bar__img" :src="userInfo.avatar" />
            <img class="top-bar__img" :src="'/zhny-web/' + userInfo.avatar" />
            <el-dropdown>
                <span class="el-dropdown-link">
                    {{userInfo.userName}}
src/page/login/userlogin.vue
@@ -72,8 +72,9 @@
<script>
  import {mapGetters} from "vuex";
  import {info} from "@/api/system/tenant";
  import {getCaptcha} from "@/api/user";
  import {getCaptcha, loginInfoByToken} from "@/api/user";
  import {getTopUrl} from "@/util/util";
  import {Message} from "element-ui";
  export default {
    name: "userlogin",
@@ -170,6 +171,11 @@
      this.refreshCode();
    },
    mounted() {
      //统一登录有没有登录
      const token = window.sessionStorage.getItem('token')
      if (token) {
        this.loginInfoByToken();
      }
    },
    watch: {
      'loginForm.deptId'() {
@@ -263,6 +269,21 @@
            this.$parent.$refs.login.style.backgroundImage = `url(${data.data.backgroundUrl})`;
          }
        })
      },
      // 统一登陆获取用户
      loginInfoByToken() {
        const loading = this.$loading({
          lock: true,
          text: '登录中,请稍后。。。',
          spinner: "el-icon-loading"
        });
        this.$store.dispatch("loginInfoByToken").then(() => {
          this.$router.push({path: this.tagWel.value});
          loading.close();
        }).catch(() => {
          loading.close();
          this.refreshCode();
        });
      }
    }
  };
src/permission.js
@@ -8,8 +8,6 @@
import {getToken} from '@/util/auth'
import NProgress from 'nprogress' // progress bar
import 'nprogress/nprogress.css' // progress bar style
import {loginInfoByToken} from '@/api/user'
import {Message} from "element-ui";
NProgress.configure({showSpinner: false});
const lockPage = store.getters.website.lockPage; //锁屏页
router.beforeEach((to, from, next) => {
@@ -59,30 +57,7 @@
    if (meta.isAuth === false) {
      next()
    } else {
      // 需要判断是否单点登录
      let token = window.sessionStorage.getItem('token')
      if (token) {
        loginInfoByToken.then(res => {
          const data = res.data;
          if (data.error_description) {
            Message({
              message: data.error_description,
              type: 'error'
            })
          } else {
            this.$store.commit('SET_TOKEN', data.access_token);
            this.$store.commit('SET_REFRESH_TOKEN', data.refresh_token);
            this.$store.commit('SET_TENANT_ID', data.tenant_id);
            this.$store.commit('SET_USER_INFO', data);
            this.$store.commit('DEL_ALL_TAG');
            this.$store.commit('CLEAR_LOCK');
            next(to.path)
          }
        })
      } else {
        next('/login')
      }
      next('/login')
    }
  }
})
src/store/modules/user.js
@@ -4,7 +4,15 @@
import {isURL, validatenull} from '@/util/validate'
import {deepClone} from '@/util/util'
import website from '@/config/website'
import {loginByUsername, loginBySocial, getUserInfo, logout, refreshToken, getButtons} from '@/api/user'
import {
  loginByUsername,
  loginBySocial,
  getUserInfo,
  logout,
  refreshToken,
  getButtons,
  loginInfoByToken
} from '@/api/user'
import {getTopMenu, getRoutes} from '@/api/system/menu'
import md5 from 'js-md5'
@@ -46,6 +54,30 @@
    $farmId: 0
  },
  actions: {
    loginInfoByToken({commit}) {
      return new Promise((resolve,reject) => {
        loginInfoByToken().then(res => {
          const data = res.data
          if (data.code == 200) {
            commit('SET_TOKEN', data.data.access_token)
            commit('SET_REFRESH_TOKEN', data.data.refresh_token)
            commit('SET_TENANT_ID', data.data.tenant_id)
            commit('SET_USER_INFO', data.data)
            commit('DEL_ALL_TAG')
            commit('CLEAR_LOCK')
          } else {
            Message({
              message: data.error_description,
              type: 'error'
            })
          }
          resolve();
        }).catch(error => {
          reject(error);
        })
      })
    },
    //根据用户名登录
    LoginByUsername({commit}, userInfo) {
      return new Promise((resolve, reject) => {
@@ -244,7 +276,7 @@
    },
    SET_USER_INFO: (state, userInfo) => {
      if (validatenull(userInfo.avatar)) {
        userInfo.avatar = "/img/bg/mg.png";
        userInfo.avatar = "/zhny-web/img/bg/mg.png";
      }
      state.userInfo = userInfo;
      setStore({name: 'userInfo', content: state.userInfo})
src/util/store.js
@@ -13,9 +13,13 @@
        content,
        type,
    } = params;
    if (name == 'token' || name == 'refreshToken') {
        window.sessionStorage.setItem(name, content);
        window.localStorage.setItem(name, content);
    if (name == 'token') {
        window.sessionStorage.setItem('token', content);
        window.localStorage.setItem('token', content);
    }
    if (name == 'refreshToken') {
        window.sessionStorage.setItem('refresh_token', content);
        window.localStorage.setItem('refresh_token', content);
    }
    name = keyName + name
    let obj = {