import { defineStore } from 'pinia'; import Cookies from 'js-cookie'; import { UserInfosStates } from './interface'; import { Session } from '/@/utils/storage'; /** * 用户信息 * @methods setUserInfos 设置用户信息 */ export const useUserInfo = defineStore('userInfo', { state: (): UserInfosStates => ({ userInfos: { userName: '', photo: '', time: 0, roles: [], authBtnList: [], }, }), actions: { async setUserInfos() { // 模拟数据,请求接口时,记得删除多余代码及对应依赖的引入 const userName = Cookies.get('userName'); // 模拟数据 let defaultRoles: Array = []; let defaultAuthBtnList: Array = []; // admin 页面权限标识,对应路由 meta.roles,用于控制路由的显示/隐藏 let adminRoles: Array = ['admin']; // admin 按钮权限标识 let adminAuthBtnList: Array = ['btn.add', 'btn.del', 'btn.edit', 'btn.link']; // test 页面权限标识,对应路由 meta.roles,用于控制路由的显示/隐藏 let testRoles: Array = ['common']; // test 按钮权限标识 let testAuthBtnList: Array = ['btn.add', 'btn.link']; // 不同用户模拟不同的用户权限 if (userName === 'admin') { defaultRoles = adminRoles; defaultAuthBtnList = adminAuthBtnList; } else { defaultRoles = testRoles; defaultAuthBtnList = testAuthBtnList; } // 用户信息模拟数据 const userInfos = { userName: userName, photo: userName === 'admin' ? 'https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=1813762643,1914315241&fm=26&gp=0.jpg' : 'https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=317673774,2961727727&fm=26&gp=0.jpg', time: new Date().getTime(), roles: defaultRoles, authBtnList: defaultAuthBtnList, }; // 存储用户信息到浏览器缓存 Session.set('userInfo', userInfos); if (Session.get('userInfo')) { this.userInfos = Session.get('userInfo'); } else { this.userInfos = userInfos; } }, }, });