123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- import { defineStore, storeToRefs } from 'pinia';
- import { Cookie, Session } from '@/utils/storage';
- import { getUserInfo } from '@/api/login/user';
- import { useThemeConfig } from '@/stores/themeConfig';
- import { JSEncrypt } from 'jsencrypt';
- /**
- * @description 用户信息
- * @methods getUserInfos 获取用户信息
- * @methods setUserInfos 设置用户信息
- */
- export const useUserInfo = defineStore('userInfo', {
- state: (): UserInfosStates => ({
- userInfos: {
- account: '', // 账号
- name: '', // 姓名
- phoneNo: '', //电话
- staffNo: '', // 工号
- id: '',
- photo: '', //头像
- authBtnList: [], // 授权按钮数组
- defaultTelNo: '', // 默认分机号
- defaultTelGroup: '', // 默认分机组
- token: '',
- showTelControl: false, // 是否展示坐席操作电话面板
- orgName: '', // 组织名称
- roles: [], // 角色
- isCenter: false, // 当前本部门是否是中心
- monitor: false, // 是否是班长
- encryptionHeader: '', // 加密用户信息(用户数据共享平台加密header)
- },
- }),
- actions: {
- async setUserInfos(buttons: string[]) {
- if (Session.get('userInfo')) {
- //有缓存 取缓存
- this.userInfos = Session.get('userInfo');
- } else {
- this.userInfos = (await this.getApiUserInfo(buttons)) as any;
- }
- },
- async getApiUserInfo(buttons: string[]) {
- try {
- // 个人信息
- let userInfo: any = await getUserInfo();
- this.userInfos.name = userInfo.result?.user.name ?? '暂无名称';
- this.userInfos.account = userInfo.result?.user.account ?? '';
- this.userInfos.phoneNo = userInfo.result?.user.phoneNo ?? '';
- this.userInfos.staffNo = userInfo.result?.user.staffNo ?? '';
- this.userInfos.defaultTelNo = userInfo.result.user.defaultTelNo ?? '';
- this.userInfos.defaultTelGroup = userInfo.result.user.defaultTelGroup ?? '';
- this.userInfos.id = userInfo.result?.user.id ?? '';
- this.userInfos.roles = userInfo.result?.user.roles ?? [];
- this.userInfos.token = Cookie.get('token') ?? '';
- this.userInfos.photo = '';
- this.userInfos.orgName = userInfo.result?.user.organization?.name ?? '';
- this.userInfos.isCenter = userInfo.result?.user.organization?.isCenter ?? false;
- this.userInfos.monitor = userInfo.result?.monitor ?? false;
- //授权按钮
- this.userInfos.showTelControl = buttons.includes('public:seat:panel'); // 查询是否有展示面板权限
- this.userInfos.authBtnList = buttons;
- // 新建一个JSEncrypt对象
- const encryptor = new JSEncrypt({ default_key_size: '2048' });
- // 设置公钥
- const publicKey =
- '-----BEGIN PUBLIC KEY-----MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgw+/x6IQPkH0A4eoF63jkLThsOXWyNBdcL9LATGy/G1yTHOr1RyKJB//iNug+V8DIoIHuFTlhgLHDbSqxvRWMONxIIF289riS6bDI4Ox/pFmOfmElFRk0lKGihaTE2Aefd6g/N+RfLLaHWztY+/voVeDTiOIw9y3tokIxjKwuJ/mQ66MkKh78AqQjjSD/3jcBP8ZhMyCJOK9XQcqvhD6WBFWkxlAqKOWggDU7YohfrbNkg3bd0oGE6zCE2EHhkcQbzGCh3lu1zf4TfKMXD+PPrr5JWDNYQTXFQklqgae+Puge7xxZGYRoi5YpIUnkQGm6zpPxhIOdxlz+Yb5geSJUQIDAQAB-----END PUBLIC KEY-----';
- encryptor.setPublicKey(publicKey); // publicKey为公钥
- // 加密数据
- const submitObj: { userId: string; userName: string; orgName: string } = {
- userId: this.userInfos.id,
- userName: this.userInfos.name,
- orgName: this.userInfos.orgName,
- };
- this.userInfos.encryptionHeader = <string>encryptor.encrypt(JSON.stringify(submitObj));
- Session.set('userInfo', this.userInfos);
- const storesThemeConfig = useThemeConfig();
- const { themeConfig } = storeToRefs(storesThemeConfig);
- if (themeConfig.value.isWatermark) {
- storesThemeConfig.setThemeConfig({
- ...storesThemeConfig.themeConfig,
- watermarkText: [this.userInfos.name, this.userInfos.orgName],
- });
- }
- return this.userInfos;
- } catch (error) {
- this.userInfos = {
- account: '暂无名称', // 账号
- name: '', // 姓名
- phoneNo: '', //电话
- staffNo: '', // 工号
- id: '',
- photo: '', //头像
- authBtnList: [], // 授权按钮数组
- defaultTelNo: '', // 默认分机号
- defaultTelGroup: '', // 默认分机组
- token: '',
- showTelControl: false, // 是否展示坐席操作电话面板
- orgName: '', // 组织名称
- roles: [], // 角色
- isCenter: false, // 当前部门是否是中心
- monitor: false, // 是否是班长
- encryptionHeader: '', // 加密用户信息(用户数据共享平台加密header)
- };
- Session.set('userInfo', this.userInfos);
- return this.userInfos;
- }
- },
- },
- });
|