/* 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' ?
: ''}
);
});
export default CommonBase(CommonListEvent(OeeCurrentState));