|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
-
- import { fetchApi } from '@/utils/request';
- import { platform, PLATFORM_TYPE, AccessCode } from '@/utils/access';
- import { firstCharToLowerCase } from '@/utils/tool';
-
- const initialState = () => ({
- isLogin: false,
- accountId: undefined,
- accountName: undefined,
- userName: undefined,
- platformList: [],
- currentPlatform: {},
- currentCompanyId: undefined,
- avator: undefined,
- userInfo: {},
- });
-
- const getBootstrapState = () => {
- let state = initialState();
- try {
- const sessionState = JSON.parse(sessionStorage.getItem('user'));
- const currentCompanyId = sessionStorage.getItem('companyId');
- const currentPlatform = JSON.parse(sessionStorage.getItem('platform') || '{}');
- if (sessionState && sessionState.accountId) {
- state.isLogin = true;
- Object.assign(state, sessionState);
- state.currentCompanyId = currentCompanyId;
- state.currentPlatform = currentPlatform;
- }
- } catch (e) {
- console.log('加载session数据失败');
- state = initialState();
- }
- return state;
- }
-
-
- export default {
- state: getBootstrapState(),
- setCurrentPlatform(platformInfo) {
- this.state.currentPlatform = platformInfo;
- this.state.currentCompanyId = platformInfo.orgId;
- sessionStorage.companyId = platformInfo.orgId;
- sessionStorage.platform = JSON.stringify(platformInfo);
- },
- async login(UserName, PassWord) {
- const loginRes = await fetchApi('authentication/login', { UserName, PassWord });
-
- const loginSucc = loginRes.Code === 0;
- if (!loginSucc) {
- return loginRes;
- }
-
- this.state.isLogin = true;
- const userData = firstCharToLowerCase(loginRes.Data || {});
- // 如果以后用到这里面的数据,拍平放到同层级,不再放到userExt字段下
- delete userData.userExt;
- const { companyId, cnName, id: accountId, permission, backgroundPermission } = userData;
- const platformList = [];
- const loginData = {
- accountId,
- accountName: UserName,
- userName: cnName,
- platformList,
- userInfo: userData,
- };
-
- /**
- * 身份类型:
- * 1. 超管: 仅可看到总后台(暂时将模板控制台与其绑定)
- * 2. 模板提供商(serviceProvider) : 角色类型暂无
- * 3. 企业
- */
-
- const isSuperAdmin = backgroundPermission === 3;
- const isCompanyAdmin = backgroundPermission === 2;
-
- //
- if (isSuperAdmin) { // todo 服务商查询企业列表并生成platformList
- // todo 暂时将模板控制台加入到超管账号中
- platformList.push(
- platform(PLATFORM_TYPE.MANAGE_CENTER, companyId, 'LOCKING 总后台', undefined, []),
- // platform(PLATFORM_TYPE.TEMPLATE_CONSOLE, CompanyId, undefined, false, '模版控制台'),
- );
- } else { // 企业生成自己的企业平台权限
- const companyInfoRes = await fetchApi('company/queryFrontDeskCompanyById', { id: companyId });
- if (companyInfoRes.Code !== 0) {
- return companyInfoRes;
- }
- const { Data = {} } = companyInfoRes;
- const { company: { LogoUrl, CompanyName } } = Data;
- const accessList = [];
- if (isCompanyAdmin) { accessList.push(AccessCode.CompanyConsole); }
- if (permission === 1) { accessList.push(AccessCode.ProjectManager); }
- platformList.push(platform(PLATFORM_TYPE.COMPANY, companyId, CompanyName, LogoUrl, accessList));
- }
-
- // 存储
- this.state.isLogin = true;
- Object.assign(this.state, loginData);
- sessionStorage.userId = accountId;
- sessionStorage.accountId = accountId;
- sessionStorage.user = JSON.stringify(loginData);
- return {
- Code: loginRes.Code,
- Data: loginData,
- }
- },
- logout() {
- this.state = initialState();
- fetchApi('authentication/loginOut');
- sessionStorage.clear();
- }
- }
|