gx
chenyc
2025-02-17 6e015f71927ea207d398735db5a2e6f2d592538f
src/stores/userInfo.ts
@@ -1,6 +1,7 @@
import { defineStore } from 'pinia';
import Cookies from 'js-cookie';
import { Session } from '/@/utils/storage';
import { getuserinfo } from '../api/login';
/**
 * 用户信息
@@ -10,10 +11,14 @@
   state: (): UserInfosState => ({
      userInfos: {
         userName: '',
         code:'',
         photo: '',
         time: 0,
         roles: [],
         authBtnList: [],
         clientCode:'',
         clientName:'',
         clientInfos:[],
      },
   }),
   actions: {
@@ -22,19 +27,27 @@
         if (Session.get('userInfo')) {
            this.userInfos = Session.get('userInfo');
         } else {
            console.log('Session里没有userInfo')
            const userInfos = <UserInfos>await this.getApiUserInfo();
            this.userInfos = userInfos;
            console.log('完成了')
         }
      },
      // 模拟接口数据
      // https://gitee.com/lyt-top/vue-next-admin/issues/I5F1HP
      async getApiUserInfo() {
         const userinfoRes = await getuserinfo()
         console.log('-----------用token 换用户信息---------------')
         console.log(userinfoRes.data)
         const userRet=userinfoRes.data
         return new Promise((resolve) => {
            setTimeout(() => {
               // 模拟数据,请求接口时,记得删除多余代码及对应依赖的引入
               const userName = Cookies.get('userName');
               const userName = userRet.userName
               const userCode = userRet.code
               // 模拟数据
               let defaultRoles: Array<string> = [];
               let defClients:Array<object>=[];
               let defaultAuthBtnList: Array<string> = [];
               // admin 页面权限标识,对应路由 meta.roles,用于控制路由的显示/隐藏
               let adminRoles: Array<string> = ['admin'];
@@ -45,28 +58,51 @@
               // test 按钮权限标识
               let testAuthBtnList: Array<string> = ['btn.add', 'btn.link'];
               // 不同用户模拟不同的用户权限
               if (userName === 'admin') {
               let isadmin=false;
               if(userRet.roles.length > 0){
                  const x=userRet.roles.findIndex(e=>{return e.roleName==='admin'})
                  if(x>=0){
                     isadmin=true
                  }
                  else{
                     isadmin=false
                  }
               }
               if (isadmin) {
                  defaultRoles = adminRoles;
                  defaultAuthBtnList = adminAuthBtnList;
                  defClients=userRet?.管理员能看到的客户列表
               } else {
                  defaultRoles = testRoles;
                  defaultAuthBtnList = testAuthBtnList;
                  defClients=userRet.clientInfos
               }
               // 用户信息模拟数据
               const userInfos = {
                  userName: userName,
                  photo:
                     userName === 'admin'
                  code:userCode,
                  photo:userRet.userAvatar===''
                        ? 'https://img2.baidu.com/it/u=1978192862,2048448374&fm=253&fmt=auto&app=138&f=JPEG?w=504&h=500'
                        : 'https://img2.baidu.com/it/u=2370931438,70387529&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500',
                        : userRet.userAvatar,
                  time: new Date().getTime(),
                  roles: defaultRoles,
                  authBtnList: defaultAuthBtnList,
                  clientCode:userRet.currentClientInfo.code,
                  clientName:userRet.currentClientInfo.clientName,
                  clientInfos:defClients
               };
               Session.set('userInfo', userInfos);
               console.log('-----------------2222------------------------------')
               console.log(userInfos)
               // Session.set('userInfo', userInfos);
               resolve(userInfos);
            }, 0);
         });
      },
      async setUserCilent(client:clientInfo){
         this.userInfos.clientCode=client.code
         this.userInfos.clientName=client.clientName
      }
   },
});