ludc
2025-01-16 391eec3114a17e68652434c6eae610799d80290e
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,23 +63,25 @@
    //根据用户名登录
    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) {
          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('SET_TENANT_ID', data.tenant_id);
            // commit('SET_USER_INFO', data.obj.sessionInfo); 用户信息
            commit('DEL_ALL_TAG');
            commit('CLEAR_LOCK');
          } else {
            Message({
              message: data.msg,
              type: 'error'
            getUserInfo().then((res) => {
              const data = res.data;
              commit('SET_USER_INFO', data.obj);
            }).catch(err => {
              console.log(err)
            })
          }
          resolve();
          resolve(data);
        }).catch(error => {
          // console.log(error)
          reject(error);
        })
      })
@@ -137,18 +140,6 @@
            commit('CLEAR_LOCK');
          }
          resolve();
        })
      })
    },
    //获取用户信息
    GetUserInfo({commit}) {
      return new Promise((resolve, reject) => {
        getUserInfo().then((res) => {
          const data = res.data.data;
          commit('SET_ROLES', data.roles);
          resolve(data);
        }).catch(err => {
          reject(err);
        })
      })
    },
@@ -213,6 +204,21 @@
        })
      })
    },
    //获取用户信息
    GetUserInfo({commit}) {
      return new Promise((resolve, reject) => {
        getUserInfo().then((res) => {
          const data = res.data.data;
          console.log('user', res)
          // commit('SET_USER_INFO', data.roles);
          resolve(data);
        }).catch(err => {
          reject(err);
        })
      })
    },
    //获取系统菜单
    GetMenu({commit, dispatch}, topMenuId) {
      return new Promise(resolve => {
@@ -226,11 +232,13 @@
          commit('SET_MENU_ALL', menu)
          commit('SET_MENU', menu)
          //dispatch('GetButtons');s
          dispatch('GetButtons');
          resolve(menu)
        })
      })
    },
    //获取系统按钮
    GetButtons({commit}) {
      return new Promise((resolve) => {
@@ -278,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