/* eslint-disable */ import { routerRedux } from 'dva/router'; import React, { Component } from 'react'; import { Layout, message } from 'antd'; import { Form } from '@ant-design/compatible'; import '@ant-design/compatible/assets/index.css'; import StaticEditTable from '../../components/Common/CommonTable'; import OeeSearchComponent from './oeeSearchComponent'; import * as commonBusiness from '../../components/Common/commonBusiness'; import * as commonFunc from '../../components/Common/commonFunc'; import * as commonUtils from '../../utils/utils'; import CommonBase from '../../components/Common/CommonBase'; import oeeStyle from './oee.less'; import CommonListEvent from '../../components/Common/CommonListEvent'; import OeestartWork from '../../oee/common/oeeStartWork'; import * as commonConfig from '../../utils/config'; import * as commonServices from '../../services/services'; import SlaveMemo from '../../components/Common/SlaveMemo'; import AffixOeeMenu from "./AffixOeeMenu"; // import OeeLabelPrint from '../../oee/common/oeeLabelPrint'; const { Content } = Layout; class OeeCurrentState extends Component { constructor(props) { super(props); this.state = { enabled: true, isRender: true, sTitleLogoPathStr: '', // 用来存储上传tu'pian // isRender1: true, // sTeamNameOneNamesId: '', // slaveLastDataDate: '', }; } async componentWillReceiveProps(nextProps) { const { slaveData, masterData, } = nextProps; if (commonUtils.isNotEmptyObject(masterData) && commonUtils.isEmptyArr(nextProps.slaveSelectedRowKeys) && commonUtils.isEmptyArr(nextProps.slaveSelectedData)) { // 开工或者完工选中该条数据 nextProps.slaveSelectedRowKeys.push(slaveData[0].sId); nextProps.slaveSelectedData.push(slaveData[0]); } if (this.state.isRender && commonUtils.isNotEmptyArr(slaveData)) { // 判断按钮类型是当前设备还是返回当前任务 // const sNameUrl = `${commonConfig.server_host}gdsmodule/getGdsmoduleById/${sModelsId}?sModelsId=${sModelsId}&sName=${formRoute}`; // const configReturn = (await commonServices.getService(token, sNameUrl)).data; // if (configReturn.code === 1) { // const sTitleLogoPathStr = configReturn.dataset.rows[0].sTitleLogoPath; // this.setState({ sTitleLogoPathStr }); // } this.setState({ isRender: false }); // onSaveCurrentState(slaveData); } } shouldComponentUpdate(nextProps) { const { slaveColumn } = nextProps; return commonUtils.isNotEmptyArr(slaveColumn); } componentDidUpdate() { // 设置table中的ant-table-body的高度,使滚动条至底 if(document.getElementsByClassName('currentTable')[0]) { const antTable = document.getElementsByClassName('currentTable')[0].getElementsByClassName('xly-normal-list')[0].offsetHeight; const antTableHeader = document.getElementsByClassName('currentTable')[0].getElementsByClassName('ant-table-header')[0].offsetHeight; document.getElementsByClassName('currentTable')[0].getElementsByClassName('ant-table-body')[0].style.height = `${antTable - antTableHeader}px`; } else { } // const { slaveData, startWorkStr, app } = this.props; // if (commonUtils.isNotEmptyArr(slaveData)) { // 如果有生产中的单据,将滚动条至底 // const slaveDataIndex = slaveData.findIndex(item => item.sStatus === commonFunc.showMessage(app.commonConst, 'startWorking') || item.sStatus === 'startWorking'); // if (slaveDataIndex > -1 && startWorkStr === 'currentState') { // const currentStateTable = document.getElementsByClassName('currentStateTable')[0].getElementsByClassName('ant-table-body')[0]; // currentStateTable.scrollTop = currentStateTable.scrollHeight - currentStateTable.clientHeight; // } // } // 设置table中的ant-table-body的高度,使滚动条至底 // const antTable = document.getElementsByClassName('currentStateTable')[0].getElementsByClassName('xly-normal-list')[0].offsetHeight + 8; // const antTableHeader = document.getElementsByClassName('currentStateTable')[0].getElementsByClassName('ant-table-header')[0].offsetHeight; // document.getElementsByClassName('currentStateTable')[0].getElementsByClassName('ant-table-body')[0].style.height = `${antTable - antTableHeader}px`; } /** 树节点选中 */ // handleTreeSelect = (name, checkedKeys, e) => { // this.props.onSelect(name, checkedKeys, e); /* 调用CommonListEvent通用处理 */ // }; // handleBrint = () => { // console.log('handleBrint'); // } // 关闭按钮 // handleColsePage = () => { // // eslint-disable-next-line prefer-destructuring // const userAgent = navigator.userAgent; // if (userAgent.indexOf('Firefox') !== -1 || userAgent.indexOf('Chrome') !== -1) { // window.location.href = 'about:blank'; // } else { // window.opener = null; // window.open(' ', '_self', ' '); // window.close(); // } // } // 审核 // handleSuccessDoIt = async () => { // // UnCanHandleByCheck // const { // slaveSelectedData, // sModelsId, // app, // token, // masterConfig, // masterData, // // slaveConfig, // } = this.props; // if (commonUtils.isNotEmptyArr(slaveSelectedData)) { // if (slaveSelectedData[0].sCompleteCheck !== 'bCompleteCheck') { // /* 数据参数 */ // const value = {}; // value.data = {}; // value.sFormId = ''; // const btnCopyToConfigs = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.bVisible && item.sControlName.indexOf('BtnCopyTo.over') > -1); // const sAssignField = {}; // if (commonUtils.isNotEmptyArr(btnCopyToConfigs)) { // // eslint-disable-next-line array-callback-return // btnCopyToConfigs.map((item) => { // if (commonUtils.isNotEmptyStr(item.sActiveId) && commonUtils.isEmptyStr(value.sFormId)) { // value.sFormId = item.sActiveId; // } // const tableName = item.sControlName.split('.')[2]; // sAssignField[tableName] = item.sAssignField; // }); // } // value.data[masterConfig.sTbName.toLowerCase()] = []; // // const endWorked = commonFunc.showMessage(app.commonConst, 'endWorked');/* 完工 */ // if (commonUtils.isNotEmptyObject(masterData)) { // value.data[masterConfig.sTbName.toLowerCase()].push(slaveSelectedData[0]); // } // value.sAssignField = sAssignField; // value.sTeamId = slaveSelectedData[0].sTeamId; // const dataUrl = `${commonConfig.server_host}oee/doOutputReport?sModelsId=${sModelsId}&sType=check`; // const dataReturn = (await commonServices.postValueService(token, value, dataUrl)).data; // if (dataReturn.code === 1) { // message.success(dataReturn.msg); // this.props.onButtonClick('BtnRefresh'); // } else { // this.props.getServiceError(dataReturn); // } // } else { // message.warning(commonFunc.showMessage(app.commonConst, 'CheckedOrNoConplete')); // } // } else { // message.warning(commonFunc.showMessage(app.commonConst, 'CheckedOrNoConplete')); // } // } handleSetCancel = () => { this.props.onSaveState({ editVisible: false, }); } // eslint-disable-next-line react/sort-comp,class-methods-use-this // renderContent(propsValue) { // if (location.pathname === '/indexOee/labelPrint') { // return ( //
// //
// ); // } // } handleForceComplete = (name, createDate) => { let sysLogData = {}; const slaveMemoConfigOld = []; if (createDate !== 'chooseDate') { const { slaveSelectedRowKeys, app, masterConfig, masterData, } = this.props; if (commonUtils.isEmptyArr(slaveSelectedRowKeys)) { message.warn(commonFunc.showMessage(app.commonConst, 'pleaseChooseData')); // 请选择记录 } else { let btnConfigNameArr = []; let singleConfig = {}; if (name.indexOf('BtnRepair') > -1) { const btnConfig = masterConfig.gdsconfigformslave.filter(item => item.sControlName === name)[0];// sButtonEnabled sButtonParam if (!commonUtils.isEmpty(btnConfig.sActiveKey)) { btnConfigNameArr = btnConfig.sActiveKey.split(','); } if (commonUtils.isNotEmptyArr(btnConfigNameArr)) { // eslint-disable-next-line array-callback-return btnConfigNameArr.map((i) => { const sIndex = this.props.slaveConfig.gdsconfigformslave.findIndex(item => (item.sName === i)); if (sIndex > -1) { singleConfig = this.props.slaveConfig.gdsconfigformslave[sIndex]; if (masterData) { masterData[singleConfig.sName] = undefined; } slaveMemoConfigOld.push(singleConfig); } }); } } sysLogData = { sId: slaveSelectedRowKeys.toString() }; this.props.onSaveState({ slaveMemoConfig: slaveMemoConfigOld, sCurrMemoProps: { bVisibleMemo: true, sMemoField: 'sReason', sRecord: sysLogData, dataSource: sysLogData, btnName: name, }, }); } } else { const chooseDateConfig = { sId: commonUtils.createSid(), sName: 'pChooseDate', sDropDownType: 'sql', bNotEmpty: false, iVisCount: 1, dropDownData: [], showName: '生成凭证', }; slaveMemoConfigOld.push(chooseDateConfig); this.props.onSaveState({ slaveMemoConfig: slaveMemoConfigOld, sCurrMemoProps: { bVisibleMemo: true, sMemoField: 'sReason', sRecord: sysLogData, dataSource: sysLogData, btnName: name, }, }); } } handleBtnClick = async (btnConfig) => { if (btnConfig.sControlName === 'BtnDel') { // 删除 const { slaveData, slaveSelectedData, app, onSaveCurrentState, } = this.props; if (commonUtils.isNotEmptyArr(slaveSelectedData)) { if (slaveSelectedData[0].sStatus !== 'startWorking') { message.warning(commonFunc.showMessage(app.commonConst, 'UnCanHandleByCheck')); } else { this.props.onDel(); onSaveCurrentState(slaveData.filter(item => item.sStatus !== commonFunc.showMessage(app.commonConst, 'startWorking') && item.sStatus !== 'startWorking')); } } } else if (btnConfig.sControlName.includes('BtnEnterLabel')) { // 标签打印 const { slaveSelectedRowKeys, getSlaveSelectedRowKeys } = this.props; if (commonUtils.isEmptyArr(slaveSelectedRowKeys)) { message.warn('请选择数据!'); return; } const { slaveData, onSaveCurrentState } = this.props; /* 打印标签跳转的界面模块ID */ console.log('2222', btnConfig); onSaveCurrentState(slaveData, undefined, undefined, btnConfig); this.props.onOeeLabelCopyTo(btnConfig.sControlName, btnConfig.sActiveId); this.props.dispatch(routerRedux.push('/indexOee/labelPrint')); if (commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) { // 向父组件中存slaveSelectedRowKeys getSlaveSelectedRowKeys(slaveSelectedRowKeys); } } else if (btnConfig.sControlName.includes('OeeCopyTo')) { /* OEE单据 */ const { slaveSelectedRowKeys, getSlaveSelectedRowKeys } = this.props; if (commonUtils.isEmptyArr(slaveSelectedRowKeys)) { message.warn('请选择数据!'); return; } const { slaveData, onSaveCurrentState } = this.props; onSaveCurrentState(slaveData, undefined, undefined, btnConfig, undefined, true); this.props.onOeeBillCopyTo(btnConfig.sControlName, btnConfig.sActiveId, btnConfig); // this.props.dispatch(routerRedux.push('/indexOee/commonBillOee')); if (commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) { // 向父组件中存slaveSelectedRowKeys getSlaveSelectedRowKeys(slaveSelectedRowKeys); } } else if (btnConfig.sControlName.includes('BtnState')) { // 增加状态 const { sModelsId, app } = this.props; const stateStr = btnConfig.sControlName.split('_')[1]; const value = { sTeamId: app.sTeamNameSId, sMachineId: app.sMachineNameSId, }; const url = `${commonConfig.server_host}oee/doAddStatus/${stateStr}?sModelsId=${sModelsId}`; const returnData = (await commonServices.postValueService(app.token, value, url)).data; if (returnData.code === 1) { message.success(returnData.msg); this.props.onButtonClick('BtnRefresh'); } else { // 失败 this.props.getServiceError(returnData); } } else if (btnConfig.sControlName === 'BtnRepair') { this.handleForceComplete(btnConfig.sControlName); } else if (btnConfig.sControlName === 'BtnForceComplete') { this.handleForceComplete(btnConfig.sControlName); } else if (commonUtils.isNotEmptyObject(btnConfig.sControlName) && btnConfig.sControlName.indexOf('Repair') > -1) { /* 自定义按钮 */ this.props.onOeeBtnEent(btnConfig); } } // 进行存储过程按钮存储过程参数解析拼接 根据存储过程按钮参数配置进行解析,配置是json格式 {"sproName":"cal_sss","inMap":"master.sSlaveId,slave.sId"} handleBtnEent = (btnConfig, name, sValue) => { if (commonUtils.isNotEmptyObject(btnConfig) && (btnConfig.sControlName === 'BtnEventReceiveReturn' || btnConfig.sControlName === 'BtnEventReceive')) { // 刀模归还, 刀模领用判断是否选择数据 const { slaveSelectedRowKeys, app } = this.props; if (slaveSelectedRowKeys && commonUtils.isEmptyArr(slaveSelectedRowKeys)) { message.warn(commonFunc.showMessage(app.commonConst, 'pleaseChooseData')); // 请选择记录 this.props.onSaveState({ loading: false, }); return; } } const { masterData, sCurrMemoProps } = this.props; if (commonUtils.isNotEmptyObject(name) && name.indexOf('BtnRepair') > -1 && commonUtils.isNotEmptyObject(sCurrMemoProps)) { sCurrMemoProps.bVisibleMemo = false; this.props.onSaveState({ sCurrMemoProps }); } const { sButtonParam } = btnConfig; const btn = JSON.parse(sButtonParam); const sProName = btn.sproName; const inParams = []; const { inMap } = btn; const inlist = inMap.split(','); const masterArr = []; const slaveArr = []; const slaveInfoArr = []; const controlArr = []; const materialsArr = []; const processArr = []; if (inlist.length > 0) { inlist.forEach((item) => { const itemArr = item.split('.'); if (itemArr.length > 0) { const sname = itemArr[0]; const stype = itemArr[1]; if (commonUtils.isNotEmptyStr(sname) && sname === 'master') { masterArr.push(stype); } if (commonUtils.isNotEmptyStr(sname) && sname === 'slave') { slaveArr.push(stype); } if (commonUtils.isNotEmptyStr(sname) && sname === 'slaveInfo') { slaveInfoArr.push(stype); } if (commonUtils.isNotEmptyStr(sname) && sname === 'control') { controlArr.push(stype); } if (commonUtils.isNotEmptyStr(sname) && sname === 'materials') { materialsArr.push(stype); } if (commonUtils.isNotEmptyStr(sname) && sname === 'process') { processArr.push(stype); } } }); if (commonUtils.isNotEmptyArr(masterArr) && commonUtils.isNotEmptyObject(masterData)) { const addState = {}; addState.key = 'master'; const val = []; const currVal = {}; masterArr.forEach((filed) => { currVal[`${filed}`] = masterData[`${filed}`]; }); val.push(currVal); addState.value = val; inParams.push({ ...addState }); } if (commonUtils.isNotEmptyArr(slaveArr)) { const addState = this.handleProParams('slave', slaveArr); if (commonUtils.isNotEmptyObject(addState)) { inParams.push({ ...addState }); } } if (commonUtils.isNotEmptyArr(slaveInfoArr)) { const addState = this.handleProParams('slaveInfo', slaveInfoArr); if (commonUtils.isNotEmptyObject(addState)) { inParams.push({ ...addState }); } } if (commonUtils.isNotEmptyArr(controlArr)) { const addState = this.handleProParams('control', controlArr); if (commonUtils.isNotEmptyObject(addState)) { inParams.push({ ...addState }); } } if (commonUtils.isNotEmptyArr(materialsArr)) { const addState = this.handleProParams('materials', materialsArr); if (commonUtils.isNotEmptyObject(addState)) { inParams.push({ ...addState }); } } if (commonUtils.isNotEmptyArr(processArr)) { const addState = this.handleProParams('process', processArr); if (commonUtils.isNotEmptyObject(addState)) { inParams.push({ ...addState }); } } } this.handleProcedureCall(btnConfig, sProName, JSON.stringify({ params: inParams, changeValue: sValue })); }; // 根据配置解析拼接具体参数 handleProParams = (sKey, arr) => { const { [`${sKey}Data`]: tableData, [`${sKey}SelectedRowKeys`]: selectedRowKeys } = this.props; const keyData = commonUtils.isNotEmptyArr(tableData) ? tableData.filter(item => selectedRowKeys.includes(item.sId) || selectedRowKeys.includes(item.sSlaveId)) : []; if (commonUtils.isNotEmptyArr(keyData)) { const addState = {}; addState.key = sKey; const val = []; keyData.forEach((currData) => { const currVal = {}; arr.forEach((filed) => { currVal[`${filed}`] = currData[`${filed}`]; }); val.push(currVal); }); addState.value = val; return addState; } else { return undefined; } }; // 存储过程按钮调用存储过程 handleProcedureCall = async (btnConfig, proName, proInParam) => { const { app, sModelsId } = this.props; const value = { sProName: proName, sProInParam: proInParam }; const url = `${commonConfig.server_host}procedureCall/doGenericProcedureCall?sModelsId=${sModelsId}`; const returnData = (await commonServices.postValueService(app.token, value, url)).data; if (returnData.code === 1) { message.success(returnData.msg); this.props.onButtonClick('BtnRefresh'); } else { this.props.onSaveState({ loading: false }); this.props.getServiceError(returnData); } } handleToForceComplete = async (sValue) => { const { app, slaveSelectedRowKeys, slaveConfig, sModelsId, slaveInfoSelectedRowKeys, formRoute, } = this.props; const { token } = app; const iIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'BtnForceComplete' || item.sControlName === 'BtnNoPurchase'); const btnConfig = slaveConfig.gdsconfigformslave[iIndex]; // debugger const { sRelation } = btnConfig; let selectedRowKeys = ''; if (formRoute === '/indexPage/materialRequirementsPlanning') { selectedRowKeys = slaveInfoSelectedRowKeys.toString(); } else { selectedRowKeys = slaveSelectedRowKeys.toString(); } const url = `${commonConfig.server_host}bill/billForceComplete?sModelsId=${sModelsId}&sName=${formRoute}`; const values = { sqlParam: sRelation, sId: selectedRowKeys, sReason: sValue }; const masterReturn = (await commonServices.postValueService(token, values, url)).data; if (masterReturn.code === 1) { message.success(masterReturn.msg); this.props.onButtonClick('BtnRefresh'); } else { this.props.getServiceError(masterReturn); } } /* 双击弹出Memo */ handleGetMemo = (name, sValue, sMemoFiled, sRecord, bVisibleMemo, btnConfig) => { const { sCurrMemoProps } = this.props; sCurrMemoProps.bVisibleMemo = false; if (btnConfig.length > 0) { sRecord[sMemoFiled] = sValue; this.props.onSaveState({ sCurrMemoProps }); this.handleToForceComplete(sValue); } else { let { [`${name}Data`]: tableData } = this.props; const addStata = { [`${sMemoFiled}`]: sValue }; if (name !== 'master') { const iIndex = tableData.findIndex(item => item.sId === sRecord.sId); let { handleType } = tableData[iIndex];/* 获取操作类型 */ handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType; addStata.handleType = handleType; tableData[iIndex] = { ...tableData[iIndex], ...addStata }; } else { let { handleType } = tableData;/* 获取操作类型 */ handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType; addStata.handleType = handleType; tableData = { ...tableData, ...addStata }; } this.props.onSaveState({ ...sCurrMemoProps, [`${name}Data`]: tableData }); } }; /* 点击隐藏Memo 弹窗 */ handleGetMemoCancel = () => { const { sCurrMemoProps } = this.props; sCurrMemoProps.bVisibleMemo = false; this.props.onSaveState({ sCurrMemoProps }); }; render() { return ( ); } } const CommonOeeReportComponent = Form.create({ mapPropsToFields(props) { const { masterData } = props; const obj = commonFunc.mapPropsToFields(masterData, Form); return obj; }, })((props) => { const { form, onReturnForm, slavePagination, isSmall, // renderContent, // 切换页面 onBtnClick, token, // sTitleLogoPathStr, // 图片字符串 startWorkStr, slaveConfig, handleGetMemo, handleGetMemoCancel, handleBtnEent, } = props; // isSmall将分页变小,以及去掉跳转页面和总条数记录 /* 回带表单 */ if (commonUtils.isNotEmptyObject(slavePagination)) { if (isSmall) { slavePagination.showTotal = null; } } onReturnForm(form); // const pagination = { // pageSize: commonConfig.pageSize, // ...slavePagination, // size: isSmall ? 'small' : 'large', // pageSizeOptions: commonConfig.pageSizeOptions, // showSizeChanger: !isSmall, // showQuickJumper: !isSmall, // }; const pagination = false; const tableProps = { ...commonBusiness.getTableTypes('slave', props), tableProps: { rowKey: 'sSlaveId', pagination, onChange: props.onTitleChange, }, onSaveState: props.onSaveState, clearArray: props.clearArray, readOnly: true, isSmall, sGroupByList: props.sGroupByList, }; // 取得配置中的按钮 // eslint-disable-next-line no-unused-vars,prefer-destructuring let masterData = props.masterData; const { slaveSelectedRowKeys, slaveData, isFresh } = props; if (isFresh && commonUtils.isNotEmptyArr(slaveSelectedRowKeys) && commonUtils.isNotEmptyObject(masterData)) { const index = slaveData.findIndex(item => slaveSelectedRowKeys.includes(item.sId)); if (index > -1) { masterData = { ...masterData, ...slaveData[index] }; } } const buttonConfigs = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave.filter(item => item.sName === '' && item.sControlName !== '' && item.bVisible && item.sControlName.indexOf('Btn') > -1 && item.sControlName.indexOf('BtnCopyTo') === -1 && item.sControlName.indexOf('BtnEndWork') === -1 && item.sControlName.indexOf('Right') === -1) : []; return (
{startWorkStr === 'startWork' ?
: '' } {startWorkStr === 'currentState' ?
{ commonUtils.isNotEmptyArr(buttonConfigs) ? buttonConfigs.map((item, index) => { const picName = item.sControlName.split('_')[2]; // const sTitleLogoPathArr = commonUtils.isNotEmptyObject(sTitleLogoPathStr) ? sTitleLogoPathStr.split(',') : []; // const sTitleLogoPathBloon = commonUtils.isNotEmptyArr(sTitleLogoPathArr) ? sTitleLogoPathArr.findIndex(item => item === picName) : -1; // sTitleLogoPathBloon判断是上传的图片名是否存在,防止存在之前相同的图片混乱 if (item.sControlName.includes('BtnState') && commonUtils.isNotEmptyObject(picName)) { return ( // eslint-disable-next-line jsx-a11y/anchor-is-valid,react/no-array-index-key onBtnClick(item)}> {item.showName} ); } else { if (item.sControlName === 'BtnSet') { return ( // eslint-disable-next-line jsx-a11y/anchor-is-valid,react/no-array-index-key onBtnClick(item)}> {item.showName} ); } else { return ( // eslint-disable-next-line jsx-a11y/anchor-is-valid,react/no-array-index-key onBtnClick(item)}> {item.showName} ); } } }) : '' }
{/* eslint-disable-next-line jsx-a11y/anchor-is-valid */} {/* */} {/* */} {/* */}
: ''}
); }); export default CommonBase(CommonListEvent(OeeCurrentState));