import React, { useEffect, useState, useMemo, useRef } from "react"; import { cloneDeep } from "lodash"; import { Form, Button, message } from "antd"; import * as commonConfig from "@/utils/config"; import * as commonServices from "@/services/services"; import * as commonUtils from "@/utils/utils"; import * as commonFunc from "@/components/Common/commonFunc"; import useCommonBase from "@/components/Common/CommonHooks/useCommonBase"; import ShowType from "@/components/Common/CommonComponent"; import FaceDetect from "@/components/FaceDetect"; import styles from "./index.less"; import { Modal } from "antd"; const initValue = { sModelsId: "16034339700006038392152714521000" }; // 事件层 const useLoginEvent = props => { const [companys, setCompanys] = useState([]); // 添加这行 // 清除浏览器缓存 useEffect(() => { const ipAddress = localStorage.ipAddress; const tempFaceData = localStorage.tempFaceData; props.dispatch({ type: "app/saveCurrentMesPane", payload: {} }); sessionStorage.clear(); // localStorage.clear(); const masterValue = localStorage.getItem(`${commonConfig.prefix}masterData`); localStorage.clear(); localStorage.setItem(`${commonConfig.prefix}masterData`, masterValue); ipAddress && localStorage.setItem("ipAddress", ipAddress); tempFaceData && localStorage.setItem("tempFaceData", tempFaceData); }, []); // 获取登录配置 const [loginConfig, setLoginConfig] = useState([]); useEffect(async () => { const { sModelsId } = initValue; 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)) { setLoginConfig(formData[0]); } } } else { message.error(configReturn.msg); } }, []); // 根据登录配置过滤登录页字段 const [configs, setConfigs] = useState([]); useEffect( () => { if (!commonUtils.isNotEmptyObject(loginConfig)) { return; } const { gdsconfigformslave } = loginConfig; if (!commonUtils.isNotEmptyArr(gdsconfigformslave)) { return; } const tempConfig = gdsconfigformslave.filter( item => item.bVisible && item.sName ); setConfigs(tempConfig); }, [loginConfig] ); // 获取公司信息 useEffect(async () => { const companysConfigUrl = `${commonConfig.server_host }sysbrands/getSysbrands`; const companysConfigReturn = (await commonServices.getService( null, companysConfigUrl )).data; if (companysConfigReturn.code === 1) { const rows = companysConfigReturn.dataset.rows; const { sParentId, sId } = rows[0]; localStorage.setItem( "mesSysbrands", JSON.stringify({ sBrandsId: sParentId, sSubsidiaryId: sId }) ); /* 测试英文版本 默认英文 */ // if(companysConfigReturn.dataset.rows) { // companysConfigReturn.dataset.rows[0].sLanguage = 'sEnglish'; // } setCompanys(companysConfigReturn.dataset.rows); // 修改这行2 props.onSaveState({ masterData: { sBrandsId: sParentId, sSubsidiaryId: sId } }); } else { message.error(companysConfigReturn.msg); } }, []); // 获取开工人员信息 const handleGetTeamEmployee = async (sTeamId, token) => { const url = `${commonConfig.server_host }oee/getTeamEmployee/${sTeamId}?sModelsId=100`; const dataReturn = (await commonServices.getService(token, url)).data; if (dataReturn.code === 1) { const returnData = dataReturn.dataset.rows; localStorage.setItem( `${commonConfig.prefix}oeeEmployeeData_${sTeamId}`, JSON.stringify(returnData) ); } else { message.error(dataReturn.msg); } }; const handleUserlogin = param => { const { dispatch } = props; dispatch({ type: "loginMes/login", payload: { ...param, dispatch } }); }; // 登录事件 const handleSubmit = async ({ faceLoginValue = {}, sEmployeeName, sEmployeeNo, sUserId } = {}, configsData) => { const bFaceLogin = commonUtils.isNotEmptyObject(faceLoginValue); let masterNewData = {} let dataReturn = {}; if (!bFaceLogin) { // 账号密码登录 const { masterData, companys } = props; const masterLocal = commonUtils.convertStrToObj( localStorage.getItem(`${commonConfig.prefix}masterData`) ) if (masterLocal) { masterNewData = { ...masterLocal, ...masterData, } if (sEmployeeNo) { masterNewData = { ...masterNewData, sEmployeeNo, sUserName:sEmployeeName, sUserId } } } else { masterNewData = { ...masterData } } // 新增方法:根据sName过滤configs const getConfigByName = (name, configs, sLanguage) => { const configObj = configs?.find(item => item.sName === name) || {}; const showName = sLanguage === 'sChinese' ? configObj.sChinese : sLanguage === 'sEnglish' ? configObj.sEnglish : sLanguage === 'sBig5' ? configObj.sBig5 : configObj.sChinese; return showName; }; const sLanguage = companys ? commonUtils.isNotEmptyArr(companys) ? companys[0].sLanguage : 'sEnglish' : 'sChinese'; const pleaseSelectUser = getConfigByName('pleaseSelectUser', configsData, sLanguage); const pleaseInputPassword = getConfigByName('pleaseInputPassword', configsData, sLanguage); const pleaseSelectTeam = getConfigByName('pleaseSelectTeam', configsData, sLanguage); const pleaseselectShift = getConfigByName('pleaseselectShift', configsData, sLanguage); const pleaseSelectMachine = getConfigByName('pleaseSelectMachine', configsData, sLanguage); const { sUserId: userId, sUserNo: username, sUserName: userShowName, sPassWord: password, sBrandsId: sParentId, sSubsidiaryId: sId, sTeamId, sTeamName, sMachineId, sMachineName, iPlcNo, sShift } = masterNewData; let value = { userId, // username, userShowName, password, sParentId, sId, sTeamId, sTeamName, sMachineId, sMachineName, iPlcNo, sShift, sEmployeeNo }; if (!sEmployeeNo) { value.username = username; } if (!username) { message.error(pleaseSelectUser); return; } if (!sEmployeeNo && !password) { message.error(pleaseInputPassword); return; } // if (sShift === undefined) { // message.error(pleaseselectShift); // return; // } if (!sTeamId) { message.error(pleaseSelectTeam); return; } if (!sMachineId) { message.error(pleaseSelectMachine); return; } const url = `${commonConfig.server_host }userOeelogin/${sParentId}/${sId}/${sTeamId}/${sMachineId}`; dataReturn = (await commonServices.postValueService(null, value, url)) .data; } else { // 人脸登录 const { sBrandsId, sSubsidiaryId, sEmployeeNo } = faceLoginValue; const url = `${commonConfig.server_host }userOeelogin/${sBrandsId}/${sSubsidiaryId}`; const value = { sEmployeeNo, sParentId: sBrandsId, sId: sSubsidiaryId }; dataReturn = (await commonServices.postValueService(null, value, url)) .data; } if (dataReturn.code !== 1) { message.error(dataReturn.msg); return; } if (commonUtils.isNotEmptyObject(dataReturn.msg)) { message.warning(dataReturn.msg, 6); } const { token, gdslogininfo = {}, teamInfo = {}, systemData, commonConst, rxtx, plcMachinedata, statusData, managementData, fileData, bDelayedOvertime, sJzPicturePath } = dataReturn.dataset.rows[0]; gdslogininfo.bDelayedOvertime = bDelayedOvertime; const userinfo = { ...teamInfo, ...gdslogininfo, sJzPicturePath }; const { sTeamShift: sShift1, sShift: sShift2, sTeamId, sTeamNo, sMachineGuid, sMachineId: sMachineIdOld, sMachineName, iPlcNo = "" } = userinfo; const sShift = sShift2 || sShift1 || "1"; userinfo.sShift = sShift; userinfo.sUserNameBak = userinfo.sUserName; userinfo.sUserNoBak = userinfo.sUserNo; const sMachineId = sMachineGuid || sMachineIdOld; // 数字保留位数 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]; decimals.dNetPrice = dNetPrice && dNetPrice.sValue ? dNetPrice.sValue * 1 : 6; decimals.dNetMoney = dNetMoney && dNetMoney.sValue ? dNetMoney.sValue * 1 : 6; decimals.dNumAlign = dNumAlign && dNumAlign.sValue ? dNumAlign.sValue : 0; } handleGetTeamEmployee(sTeamId, token); // 记住登录信息 localStorage.setItem( `${commonConfig.prefix}userlogin`, JSON.stringify(userinfo) ); localStorage.setItem( `${commonConfig.prefix}plcMachinedata_${sMachineId}`, JSON.stringify(plcMachinedata) ); localStorage.setItem( `${commonConfig.prefix}statusData_${sMachineId}`, JSON.stringify(statusData) ); const { masterData = {} } = props; const storeMasterData = JSON.parse(JSON.stringify(masterNewData)); const newMasterData = { sUserId:storeMasterData.sUserId, sUserName:storeMasterData.sUserName, sUserNo:storeMasterData.sUserNo, } localStorage.setItem( `${commonConfig.prefix}masterData`, JSON.stringify(newMasterData) ) handleUserlogin({ token, systemData, rxtx, commonConst, userinfo, decimals, dateFormat: commonFunc.getDateFormat(systemData), sTeamNameSId: sTeamId, sTeamNameSName: sTeamNo, sMachineNameStr: sMachineName, sMachineNameSId: sMachineId, iPlcNo, managementData, fileData, sShift }); }; // 人脸登录 const handleFaceLogin = () => { props.onSaveState({ faceLoginModalVisible: true }); }; // 人脸登录成功回调 const handleIdentifySuccess = e => { const faceLoginValue = e.dataset.rows[0]; props.onSaveState({ faceLoginModalVisible: false, faceLoginValue, faceLoginAfterModalVisible: true }); }; return { ...props, companys, // 确保返回companys configs, onSubmit: handleSubmit, onFaceLogin: handleFaceLogin, onIdentifySuccess: handleIdentifySuccess }; }; // 遍历登录文本组件 const handleGetFormItem = (props, item, isHuge) => { const { sModelsId } = initValue; const { masterData = {}, companys, faceLoginValue } = props; let userInfo = commonUtils.convertStrToObj( localStorage.getItem(`${commonConfig.prefix}masterData`) ); if (faceLoginValue) { userInfo = { ...userInfo, sUserName: faceLoginValue.sEmployeeName, sUserNo: faceLoginValue.sEmployeeNo, sUserId: faceLoginValue.sUserId } } let masterNewData = masterData if (userInfo) { masterNewData = { ...userInfo, ...masterData, } } const sLanguage = commonUtils.isNotEmptyArr(companys) && companys[0].sLanguage || 'sEnglish'; let enabledNew = true; if (item.sName?.includes('please') || item.sName?.includes('请')) { return; } if (item.iTag === 1) { enabledNew = false; } else if (item.iTag === 3) { enabledNew = true; } const showTypeProps = { bNewForm: true, iColValue: 24, record: masterNewData, name: "master", formId: sModelsId, getSqlDropDownData: props.getSqlDropDownData, getSqlCondition: props.getSqlCondition, handleSqlDropDownNewRecord: props.handleSqlDropDownNewRecord, getFloatNum: props.getFloatNum, getDateFormat: props.getDateFormat, onChange: (...args) => { const [, sFieldsName, value = {}] = args; if ( sFieldsName === "sUserName" && value.sMachineName && (value.sMachineName.indexOf("切纸") > -1 || value.sMachineName.toLowerCase().indexOf("cu") > -1) ) { args[2].sMachineName = ""; args[2].sMachineId = ""; } props.onChange(...args); }, showConfig: item, formItemLayout: { labelCol: { span: 0 }, wrapperCol: { span: 24 } }, textArea: false, enabled: enabledNew, dataValue: masterNewData[item.sName], bTable: item.sName !== "sPassWord", bViewTable: true, onFilterDropDownData: props.onFilterDropDownData, onSaveState: props.onSaveState, bPassWord: item.sName === "sPassWord", style: { backgroundColor: "#eaeaea" }, dropdownClassName: isHuge ? 'huge-font-option' : '' }; const showName = sLanguage === 'sChinese' ? item.sChinese : sLanguage === 'sEnglish' ? item.sEnglish : item.sBig5; return (