|
- import { fetchApi } from '@/utils/request';
- import { platform, PLATFORM_TYPE, AccessCode } from '@/utils/access';
- import { firstCharToLowerCase } from '@/utils/tool';
- import system from '@/services/system';
-
- const systemInitState = () => ({
- gatewayState: false,
- isMaxWindowSize: false,
- client: system.isClient ? '桌面端' : 'WEB端',
- });
-
- const loginInitState = () => ({
- isLogin: false,
- accountId: undefined,
- accountName: undefined,
- userName: undefined,
- platformList: [],
- currentPlatform: {},
- currentCompanyId: undefined,
- avator: undefined,
- userInfo: {},
- })
-
- const getBootstrapState = () => {
- let state = Object.assign(systemInitState(), loginInitState());
- try {
- const sessionState = JSON.parse(sessionStorage.getItem('user'));
- const currentCompanyId = sessionStorage.getItem('companyId');
- const currentPlatform = JSON.parse(sessionStorage.getItem('platform') || '{}');
- //sessionStorage.getItem('companyName');
- if (sessionState && sessionState.accountId) {
- state.isLogin = true;
- Object.assign(state, sessionState);
- state.currentCompanyId = currentCompanyId;
- state.currentPlatform = currentPlatform;
- }
- } catch (e) {
- console.log('加载session数据失败');
- state = Object.assign(systemInitState(), loginInitState());
- }
- 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);
- sessionStorage.CompanyName = JSON.parse(sessionStorage.platform).orgName;
- sessionStorage.accountName = JSON.parse(sessionStorage.user).accountName;
-
- const params = {
- API: 'authentication/login',
- Action: '登录',
- CompanyName: sessionStorage.CompanyName,
- Subject: sessionStorage.accountName,
- Source: sessionStorage.client,
- };
- fetchApi('operation/record', params);
- },
- setIsMaxWindowSize(val) {
- this.state.isMaxWindowSize = val;
- },
- changeGatewayState(newState) {
- this.state.gatewayState = newState;
- },
- async login(UserName, PassWord) {
- const loginRes = await fetchApi('authentication/login', { UserName, PassWord });
-
- const loginSucc = loginRes.Code === 0;
- if (!loginSucc) {
- return loginRes;
- }
- // //记录登录
- // const param={
- // API:'authentication/login',
- // Action: 'login',
- // CompanyName:''
-
- // }
- // const res = await fetchApi('operation/record')
-
- 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.client = this.state.client;
- sessionStorage.userId = accountId;
- sessionStorage.accountId = accountId;
- sessionStorage.user = JSON.stringify(loginData);
-
- return {
- Code: loginRes.Code,
- Data: loginData,
- };
- },
- logout() {
- const params = {
- API: 'authentication/loginOut',
- Action: '注销',
- CompanyName: sessionStorage.CompanyName,
- Subject: sessionStorage.accountName,
- Source: sessionStorage.client,
- };
- fetchApi('operation/record', params);
- this.state = Object.assign(this.state, loginInitState());
- fetchApi('authentication/loginOut');
- sessionStorage.clear();
- },
- };
|