田源
2025-01-15 78fa1f005a9ec2581611e53d7eba8efeacb4df6e
Source/plt-web/plt-web-ui/src/store/modules/user.js
@@ -2,11 +2,12 @@
import {Message} from 'element-ui'
import {setStore, getStore} from '@/util/store'
import {isURL, validatenull} from '@/util/validate'
import {deepClone,queryStringToObject} from '@/util/util'
import {deepClone, queryStringToObject} from '@/util/util'
import website from '@/config/website'
import {loginByUsername, loginBySocial, loginBySso, getUserInfo, logout, refreshToken, getButtons} from '@/api/user'
import {loginByUsername, loginBySocial, loginBySso, getUserInfo, logout, refreshToken, getButtons,getUserPhoto} from '@/api/user'
import {getTopMenu, getRoutes} from '@/api/system/menu'
import md5 from 'js-md5'
import func from "@/util/func";
function addPath(ele, first) {
@@ -15,8 +16,8 @@
  const propsDefault = {
    label: propsConfig.label || 'name',
    path: propsConfig.path || 'path',
    icon: propsConfig.icon || 'icon',
    children: propsConfig.children || 'children'
    icon: propsConfig.icon || 'source',
    children: propsConfig.children || 'children',
  }
  const icon = ele[propsDefault.icon];
  ele[propsDefault.icon] = validatenull(icon) ? menu.iconDefault : icon;
@@ -35,9 +36,9 @@
function updateCode(items) {
  items.forEach(item => {
    item.pathValue = item.path;
    item.path = '/' + item.code;
    item.path = '/' + item.id;
    item.query = {}; // 初始化 item.query
    if(item.pathValue.indexOf('?')!=-1) {
    if (item.pathValue.indexOf('?') != -1) {
      item.query = queryStringToObject(item.pathValue)
    }
    if (item.children && item.children.length > 0) {
@@ -62,12 +63,10 @@
    //根据用户名登录
    LoginByUsername({commit}, userInfo) {
      return new Promise((resolve, reject) => {
        loginByUsername(userInfo.deptId, userInfo.roleId, userInfo.username,userInfo.password, userInfo.type, userInfo.key,).then(res => {
        let passwordDes = func.encryptData(userInfo.password, 'daliantan0v0vcip')
        loginByUsername(userInfo.deptId, userInfo.roleId, userInfo.username, passwordDes, userInfo.type, userInfo.key,).then(res => {
          const data = res.data;
          if (data.code === 200) {
            // commit('SET_TOKEN', data.obj.sessionInfo.token);
            // commit('SET_REFRESH_TOKEN', data.obj.sessionInfo.token);
          if (data.obj.failCode === 'loginSuccess' || data.obj.failCode === 'passwordRemainDay') {
            commit('SET_TOKEN', data.obj.tokenVO.accessToken);
            commit('SET_REFRESH_TOKEN', data.obj.tokenVO.accessToken);
            commit('DEL_ALL_TAG');
@@ -79,15 +78,10 @@
            }).catch(err => {
              console.log(err)
            })
          } else {
            Message({
              message: data.msg,
              type: 'error'
            })
          }
          resolve(data);
        }).catch(error => {
          // console.log(error)
          reject(error);
        })
      })
@@ -216,7 +210,7 @@
      return new Promise((resolve, reject) => {
        getUserInfo().then((res) => {
          const data = res.data.data;
          console.log('user',res)
          console.log('user', res)
          // commit('SET_USER_INFO', data.roles);
          resolve(data);
        }).catch(err => {
@@ -238,7 +232,7 @@
          commit('SET_MENU_ALL', menu)
          commit('SET_MENU', menu)
          //dispatch('GetButtons');s
          dispatch('GetButtons');
          resolve(menu)
        })
      })
@@ -292,18 +286,52 @@
      state.tenantId = tenantId;
      setStore({name: 'tenantId', content: state.tenantId})
    },
    // SET_USER_INFO: (state, userInfo) => {
    //   getUserPhoto().then(res => {
    //     userInfo.avatar = URL.createObjectURL(res.data);
    //     console.log('userInfo',userInfo)
    //   })
    //   state.userInfo = userInfo;
    //   setStore({name: 'userInfo', content: state.userInfo})
    // },
    SET_USER_INFO: (state, userInfo) => {
      if (validatenull(userInfo.avatar)) {
        userInfo.avatar = "/img/bg/img-logo.png";
      }
      state.userInfo = userInfo;
      setStore({name: 'userInfo', content: state.userInfo})
      getUserPhoto().then(res => {
        // 将 Blob 转换为 Base64
        const reader = new FileReader();
        reader.onloadend = (result) => {
          userInfo.avatar = reader.result; // 存储 Base64 字符串
          // 更新状态并存储到 localStorage
          state.userInfo = userInfo;
          setStore({ name: 'userInfo', content: state.userInfo });
        };
        reader.readAsDataURL(res.data); // 调用reader方法
      });
    },
    SET_ROLES: (state, roles) => {
      state.roles = roles;
    },
    SET_PERMISSION: (state, permission) => {
      let permission_new = {};
      permission.forEach(item => {
        let children = {};
        if (item.children && item.children.length > 0) {
          item.children.forEach(child => {
            // const childObject = {
            //   [child.code]: true,
            //   source: child.source
            // };
            // Object.assign(children, childObject);
            children[child.code] = {
              source: child.source
            }
          });
        }
        Vue.set(permission_new, item.id, children);
      });
      state.permission = permission_new;
      setStore({name: "permission", content: permission_new});
    },
  }
}
export default user