import React, { Component } from 'react';
import { LockOutlined, UserOutlined } from '@ant-design/icons';
import { Form } from '@ant-design/compatible';
import '@ant-design/compatible/assets/index.css';
import { Input, Button, Select, message, Radio } from 'antd-v4';
import { FloatButton } from 'antd-v4';
import commonConfig from '../../utils/config';
import * as commonServices from '../../services/services';
import * as commonFunc from '../../components/Common/commonFunc';
import logo from '@/assets/foot_logo.png';
import * as commonUtils from '../../utils/utils';
import styles from './Login.css';
import FaceDetect from '../FaceDetect';
const AppComponent = () => {
return
}
const FormItem = Form.Item;
const { Option } = Select;
class LoginForm extends Component {
constructor(props) {
let ssoLoginParams = {};
const urlParams = new URLSearchParams(location.search);
const params = {};
urlParams.forEach((value, key) => {
params[key] = value;
});
const { sUserNo, token, sSubsidiaryId: sId, sBrandsId: sParentId } = params;
if (sUserNo && token && sId && sParentId) {
ssoLoginParams = { sUserNo, token, sId, sParentId };
}
super(props);
this.state = {
companys: [],
sParentId: JSON.parse(localStorage.getItem(`${commonConfig.prefix}companysParentId`)) || '',
sId: JSON.parse(localStorage.getItem(`${commonConfig.prefix}companyId`)) || '',
loginInfo: [],
loginType: 'normal',
sEmployeeNo: '',
ssoLoginParams,
logoImageInfo: [],
};
this.loginSRMC = props.baseInfo?.flag === 'loginSRMC';
this.erpBaseWord = this.loginSRMC ? this.props.baseInfo.word : 'ERP'
}
componentWillMount() {
this.handleGetLogoImage();
this.props.onClearModelCenter();
if (commonUtils.isNotEmptyObject(this.state.ssoLoginParams)) {
this.handleLogin(this.state.ssoLoginParams, true);
} else {
this.handleInit();
}
}
handleInit = async () => {
this.handleGetLoginInfo();/* 根据后台配置获取公司信息 */
const configUrl = `${commonConfig.server_host}sysbrands/getSysbrands`;
const configReturn = (await commonServices.getService(null, configUrl)).data;
if (configReturn.code === 1) {
const companys = configReturn.dataset.rows;
const sParentId = commonUtils.isNotEmptyObject(this.state.sParentId) ? this.state.sParentId : companys[0].sParentId;
const sId = commonUtils.isNotEmptyObject(this.state.sId) ? this.state.sId : companys[0].sId;
const footer = commonUtils.isNotEmptyObject(this.state.footer) ? this.state.footer : companys[0].footer;
this.setState({ companys, sParentId, sId, footer });
} else {
message.error(configReturn.msg);
}
}
// 获取自定义logo
handleGetLogoImage = () => {
for (let index = 0; index < 4; index++) {
const imgUrl = `${commonConfig.file_host}file/downloadLogo?sLogoName=logo${index + 1}&date=${new Date().getTime()}`;
const ImgObj = new Image();
ImgObj.src = imgUrl;
ImgObj.onload = () => {
if (ImgObj.fileSize > 0 || (ImgObj.width > 0 && ImgObj.height > 0)) {
this.setState(({ logoImageInfo }) => {
const logoImageInfoNew = [...logoImageInfo];
logoImageInfoNew[index] = imgUrl;
return { logoImageInfo: logoImageInfoNew };
});
} else {
this.setState(({ logoImageInfo }) => {
const logoImageInfoNew = [...logoImageInfo];
logoImageInfoNew[index] = '';
return { logoImageInfo: logoImageInfoNew };
});
}
};
ImgObj.onerror = () => {
this.setState(({ logoImageInfo }) => {
const logoImageInfoNew = [...logoImageInfo];
logoImageInfoNew[index] = '';
return { logoImageInfo: logoImageInfoNew };
});
};
}
}
/* 获取登录窗体配置文字 */
handleGetLoginInfo = async () => {
const sModelsId = '16148217740007696998039471379000';
const configUrl = `${commonConfig.server_host}business/getModelBysId/${sModelsId}?sModelsId=${sModelsId}&sName=/commonAuto`;
const configReturn = (await commonServices.getService('', configUrl)).data;
if (configReturn.code === 1) {
const dataReturn = configReturn.dataset.rows;
if (commonUtils.isNotEmptyArr(dataReturn)) {
const { formData } = dataReturn[0];
if (commonUtils.isNotEmptyArr(formData)) {
const { gdsconfigformslave } = formData[0];
if (commonUtils.isNotEmptyArr(gdsconfigformslave)) {
this.setState({
loginInfo: gdsconfigformslave,
});
}
}
}
} else {
message.error(configReturn.msg);
}
}
handleSelect = (value, option) => {
const sParentId = option.props['data-parentid'];
this.setState({
sParentId,
sId: value,
});
};
handleSubmit = (e) => {
e.preventDefault();
this.props.form.validateFields(async (err, values) => {
if (!err) {
this.handleLogin(values);
}
});
};
handleLogin = async (values = {}, bSsoLogin = false) => {
this.setState({ loginLoading: true });
/* 点击登录按钮时 清空localStorage,保留左侧树定位 */
const xlybusinessActiveTreeArr = [];
for (let i = 0; i < localStorage.length; i++) {
const key = localStorage.key(i);
if (key && key.includes('xlybusinessActiveTree')) {
xlybusinessActiveTreeArr.push([key, localStorage.getItem(key)]);
}
}
localStorage.clear();
xlybusinessActiveTreeArr.forEach((item) => {
localStorage.setItem(item[0], item[1]);
});
const value = values;
if (!bSsoLogin) {
value.sParentId = this.state.sParentId;
value.sId = this.state.sId;
if (this.state.loginType === 'face') {
value.sEmployeeNo = this.sEmployeeNo;
}
}
const url = `${commonConfig.server_host}userlogin/${value.sParentId}/${value.sId}`;
const dataReturn = (await commonServices.postValueService(null, value, url)).data;
if (dataReturn.code === 1) {
if (commonUtils.isNotEmptyObject(dataReturn.msg)) {
message.warning(dataReturn.msg, 6);
}
const {
token, gdslogininfo: userinfo, systemData, commonConst, rxtx, passworIsOld, auxiliaryQty,
} = dataReturn.dataset.rows[0];
// commonUtils.setSystemSettings(systemData);
// commonUtils.setCommonConst(commonConst);
const decimals = {};
if (systemData !== undefined) {
const dNetPrice = systemData.filter(item => (item.sName === 'NetPrice'))[0];
const dNetMoney = systemData.filter(item => (item.sName === 'NetMoney'))[0];
const dNumAlign = systemData.filter(item => (item.sName === 'CkxNumAlign'))[0];
/* 20230628老孟提的需求:单价设置6位,金额设置2位,不根据配置走 */
// decimals.dNetPrice = 12;
decimals.dNetPrice = Number(dNetPrice.sValue); // 20240528晚上杨昌辉提-钱豹要求改;
decimals.dNetMoney = 2;
// decimals.dNetPrice = dNetPrice !== undefined && dNetPrice.sValue !== undefined ? (dNetPrice.sValue) * 1 : 6;
// decimals.dNetMoney = dNetMoney !== undefined && dNetMoney.sValue !== undefined ? (dNetMoney.sValue) * 1 : 6;
decimals.dNumAlign = dNumAlign !== undefined && dNumAlign.sValue !== undefined ? (dNumAlign.sValue) : 0;
// commonUtils.setNetPrice(decimals.dNetPrice);
// commonUtils.setNetMoney(decimals.dNetMoney);
// commonUtils.setDateFormat(commonFunc.getDateFormat(systemData));
}
// 判断是否是初始密码
if (values.username !== 'zhangz') {
localStorage.setItem(`${commonConfig.prefix}changePwd`, (passworIsOld === true || passworIsOld === 'true') ? 'true' : 'false');
}
/* 登录记住公司信息 */
localStorage.setItem(`${commonConfig.prefix}companysParentId`, JSON.stringify(this.state.sParentId));
localStorage.setItem(`${commonConfig.prefix}companyId`, JSON.stringify(this.state.sId));
const companyName = commonUtils.isNotEmptyArr(this.state.companys) ? this.state.companys.filter(item => item.sId === userinfo.sSubsidiaryId)[0].sName : '';
userinfo.companyName = companyName;
const { footer, logoImageInfo } = this.state;
const isInitPassword = passworIsOld === true || passworIsOld === 'true';
await this.props.onLogin({
token, systemData, rxtx, commonConst, userinfo, decimals, dateFormat: commonFunc.getDateFormat(systemData), footer, logoImageInfo, auxiliaryQty,
isInitPassword,
});
} else {
message.error(dataReturn.msg);
this.setState({ loginLoading: false, ssoLoginParams: {} }, () => {
this.handleInit();
});
}
}
onLoginTypeChange = (e) => {
this.setState({
loginType: e.target.value
})
};
//人脸验证登录
onIdentifySuccess = async(e) => {
this.sEmployeeNo = e.dataset.rows[0].sEmployeeNo;
const value = {};
value.sEmployeeNo = this.sEmployeeNo;
value.sParentId = e.dataset.rows[0].sBrandsId;
value.sId = e.dataset.rows[0].sSubsidiaryId;
await this.handleLogin(value);
}
render() {
const { getFieldDecorator } = this.props.form;
const { companys, sId, loginInfo, ssoLoginParams, footer } = this.state;
if (commonUtils.isNotEmptyObject(ssoLoginParams)) {
return ('');
}
const companysId = commonUtils.isNotEmptyObject(sId) ? sId : commonUtils.isNotEmptyArr(companys) ? companys[0].sId : chooseBranchCompany;
const options = companys.map(com =>
(
));
let sLanguage = 'sChinese';
if (companys !== null && companys.length > 0) {
sLanguage = companys[0].sLanguage !== null ? companys[0].sLanguage.toString() : sLanguage;
}
const { loginLoading, logoImageInfo } = this.state;
let XiaoLingYang = sLanguage === 'sChinese' ? '小羚羊' : (sLanguage === 'sEnglish' ? 'XiaoLingYang' : '小羚羊');/* 小羚羊 */
let WelcometoERP = sLanguage === 'sChinese' ? `欢迎登录${this.erpBaseWord}` : (sLanguage === 'sEnglish' ? `Welcometo${this.erpBaseWord}` : `歡迎登錄${this.erpBaseWord}`);/* 欢迎登录ERP */
let companyName = sLanguage === 'sChinese' ? '上海小羚羊软件' : (sLanguage === 'sEnglish' ? 'ShangHaiXiaoLingYangSoft' : '上海小羚羊軟件');/* 上海小羚羊软件 */
let printAllFlow = sLanguage === 'sChinese' ? '智能印刷全流程' : (sLanguage === 'sEnglish' ? 'IntelligentPrintAllFlow' : '智能印刷全流程');/* 智能印刷全流程 */
let ERP = this.erpBaseWord;/* ERP */
let UserLogin = sLanguage === 'sChinese' ? '用户登录' : (sLanguage === 'sEnglish' ? 'UserLogin' : '用戶登錄');/* 用户登录 */
let pleaseInputUserName = sLanguage === 'sChinese' ? '请输入你的用户名' : (sLanguage === 'sEnglish' ? 'pleaseInputUserName' : '請輸入妳的用戶名');/* 请选择分公司名称 */
let pleaseInputPassword = sLanguage === 'sChinese' ? '请输入你的密码' : (sLanguage === 'sEnglish' ? '请输入你的密码' : '請輸入妳的用戶名');/* 请选择分公司名称 */
let chooseBranchCompany = sLanguage === 'sChinese' ? '请选择分公司名称' : (sLanguage === 'sEnglish' ? 'Please select branch name' : '請選擇分公司名稱');/* 请选择分公司名称 */
let btnLogin = sLanguage === 'sChinese' ? '登 录' : (sLanguage === 'sEnglish' ? 'Login' : '登 錄');/* 登 陆 */
let Copyright = 'Copyright';/* Copyright */
let AddrOne = sLanguage === 'sChinese' ? '小羚羊软件' : (sLanguage === 'sEnglish' ? 'XiaoLingYangSoft' : '小羚羊軟件');/* 小羚羊软件 */
let AddrTwo = sLanguage === 'sChinese' ? '印刷智慧工厂' : (sLanguage === 'sEnglish' ? 'PrintingSmartFactory' : '印刷智慧工廠');/* 印刷智慧工厂 */
let AddrThree = sLanguage === 'sChinese' ? '印刷MES' : (sLanguage === 'sEnglish' ? 'WelcometoMes' : '印刷MES');/* 印刷MES */
let AddrFour = sLanguage === 'sChinese' ? '印刷ERP' : (sLanguage === 'sEnglish' ? 'PrintingErp' : '印刷ERP');/* 印刷ERP */
let AddrFive = sLanguage === 'sChinese' ? '印刷电商平台' : (sLanguage === 'sEnglish' ? 'PrintingE-commercePlatform' : '印刷電商平台');/* 印刷电商平台 */
let AddrSix = sLanguage === 'sChinese' ? '文件智能处理' : (sLanguage === 'sEnglish' ? 'FileIntelligenceHandle' : '文件智能處理');/* 文件智能处理 */
let AddrSeven = sLanguage === 'sChinese' ? '印前自动化' : (sLanguage === 'sEnglish' ? 'PrepressAutomation' : '印前自動化');/* 印前自动化 */
let AddrEight = '400-880-6237';/* 400-880-6237 */
const AddrIcp = '沪ICP备14034791号-1'; /* 粤ICP备2022093080号-1 */
if (commonUtils.isNotEmptyArr(loginInfo)) {
const CompanyNameData = loginInfo.filter(item => item.sControlName === 'CompanyName');
XiaoLingYang = commonUtils.isNotEmptyArr(CompanyNameData) ? CompanyNameData[0].showName : XiaoLingYang;
if (!this.loginSRMC) {
const filterDataLoginERP = loginInfo.filter(item => item.sControlName === 'LoginERP');
WelcometoERP = commonUtils.isNotEmptyArr(filterDataLoginERP) ? filterDataLoginERP[0].showName : WelcometoERP;
}
const CompanyAllNameData = loginInfo.filter(item => item.sControlName === 'CompanyAllName');
companyName = commonUtils.isNotEmptyArr(CompanyAllNameData) ? CompanyAllNameData[0].showName : companyName;
const PrintAllFlowData = loginInfo.filter(item => item.sControlName === 'PrintAllFlow');
printAllFlow = commonUtils.isNotEmptyArr(PrintAllFlowData) ? PrintAllFlowData[0].showName : printAllFlow;
if (!this.loginSRMC) {
const ERPData = loginInfo.filter(item => item.sControlName === 'ERP');
ERP = commonUtils.isNotEmptyArr(ERPData) ? ERPData[0].showName : ERP;
}
const UserLoginData = loginInfo.filter(item => item.sControlName === 'UserLogin');
UserLogin = commonUtils.isNotEmptyArr(UserLoginData) ? UserLoginData[0].showName : 'UserLogin';
const PleaseInputUserNameData = loginInfo.filter(item => item.sControlName === 'PleaseInputUserName');
pleaseInputUserName = commonUtils.isNotEmptyArr(PleaseInputUserNameData) ? PleaseInputUserNameData[0].showName : pleaseInputUserName;
const PasswordData = loginInfo.filter(item => item.sControlName === 'PleaseInputPassword');
pleaseInputPassword = commonUtils.isNotEmptyArr(PasswordData) ? PasswordData[0].showName : 'PleaseInputPassword';
const ChooseBranchCompanyData = loginInfo.filter(item => item.sControlName === 'ChooseBranchCompany');
chooseBranchCompany = commonUtils.isNotEmptyArr(ChooseBranchCompanyData) ? ChooseBranchCompanyData[0].showName : chooseBranchCompany;
const BtnLoginData = loginInfo.filter(item => item.sControlName === 'BtnLogin');
btnLogin = commonUtils.isNotEmptyArr(BtnLoginData) ? BtnLoginData[0].showName : btnLogin;
const CopyrightData = loginInfo.filter(item => item.sControlName === 'Copyright');
Copyright = commonUtils.isNotEmptyArr(CopyrightData) ? CopyrightData[0].showName : Copyright;
const AddrOneData = loginInfo.filter(item => item.sControlName === 'AddrOne');
AddrOne = commonUtils.isNotEmptyArr(AddrOneData) ? AddrOneData[0].showName : AddrOne;
const AddrTwoData = loginInfo.filter(item => item.sControlName === 'AddrTwo');
AddrTwo = commonUtils.isNotEmptyArr(AddrTwoData) ? AddrTwoData[0].showName : AddrTwo;
const AddrThreeData = loginInfo.filter(item => item.sControlName === 'AddrThree');
AddrThree = commonUtils.isNotEmptyArr(AddrThreeData) ? AddrThreeData[0].showName : AddrThree;
const AddrFourData = loginInfo.filter(item => item.sControlName === 'AddrFour');
AddrFour = commonUtils.isNotEmptyArr(AddrFourData) ? AddrFourData[0].showName : AddrFour;
const AddrFiveData = loginInfo.filter(item => item.sControlName === 'AddrFive');
AddrFive = commonUtils.isNotEmptyArr(AddrFiveData) ? AddrFiveData[0].showName : AddrFive;
const AddrSixData = loginInfo.filter(item => item.sControlName === 'AddrSix');
AddrSix = commonUtils.isNotEmptyArr(AddrSixData) ? AddrSixData[0].showName : AddrSix;
const AddrSevenData = loginInfo.filter(item => item.sControlName === 'AddrSeven');
AddrSeven = commonUtils.isNotEmptyArr(AddrSevenData) ? AddrSevenData[0].showName : AddrSeven;
const AddrEightData = loginInfo.filter(item => item.sControlName === 'AddrEight');
AddrEight = commonUtils.isNotEmptyArr(AddrEightData) ? AddrEightData[0].showName : AddrEight;
}
const dropdownStyle = {
fontSize: '14px',
};
// 修改favicon
const favicon = logoImageInfo[0];
if (favicon) {
let $favicon = document.querySelector('link[rel="icon"]');
if ($favicon) {
$favicon.href = favicon;
} else {
$favicon = document.createElement("link");
$favicon.rel = "icon";
$favicon.href = favicon;
document.head.appendChild($favicon);
}
}
// 修改左上角logo
const xlyHeaderLogo = logoImageInfo[1];
const root = document.querySelector('#root');
root.style.removeProperty('--xly-header-logo-opacity');
root.style.removeProperty('--xly-header-logo');
if (xlyHeaderLogo !== undefined) {
root.style.setProperty('--xly-header-logo-opacity', 1);
if (xlyHeaderLogo !== '') {
root.style.setProperty('--xly-header-logo', `url(${xlyHeaderLogo})`);
}
}
// 修改foot的logo
const xlyFootLogo = logoImageInfo[3] === '' ? logo : logoImageInfo[3];
return (
{XiaoLingYang}{WelcometoERP}
{companyName}
{printAllFlow}
{ERP}
);
}
}
const LoginFormComponent = Form.create()(LoginForm);
export default LoginFormComponent;