/* eslint-disable */ /* eslint-disable array-callback-return,no-undef,object-curly-newline,prefer-destructuring,no-unused-vars */ import React, { Component } from 'react'; import { DownOutlined, LoadingOutlined, MenuFoldOutlined, MenuUnfoldOutlined } from '@ant-design/icons'; import { Form, Icon } from '@ant-design/compatible'; import '@ant-design/compatible/assets/index.css'; import { Modal, Layout, Spin, Card, Row, Col, message, Tree, Switch, Pagination } from 'antd'; // Switch Select, Tabs, import styles from '@/index.less'; import selfstyles from '@/components/productionMainPlan/index.less'; import * as commonFunc from '@/components/Common/commonFunc'; import CommonBase from '@/components/Common/CommonBase'; import * as commonBusiness from '@/components/Common/commonBusiness';/* 单据业务功能 */ import StaticEditTable from '@/components/Common/CommonTable';/* 可编辑表格 */ import CommonProductionPlanTreeEvent from '@/components/Common/CommonProductionPlanTreeEvent'; import Toolbar from '@/components/Common/ToolBar/ToolBarNew'; import MoveUp from '@/assets/processUp.svg'; import MoveDown from '@/assets/processDown.svg'; import DisableMoveUp from '@/assets/disableprocessUp.svg'; import DisableMoveDown from '@/assets/disableprocessDown.svg'; import MoveTop from '@/assets/processTop.svg'; import DisableMoveTop from '@/assets/disableprocessTop.svg'; import MoveBottom from '@/assets/processBottom.svg'; import DisableMoveBottom from '@/assets/disableprocessBottom.svg'; import ChangeMachine from '@/assets/plan/change.png'; import DisableChangeMachine from '@/assets/plan/change_1.png'; import SetSave from '@/assets/plan/save.png'; import DisableSetSave from '@/assets/plan/save_1.png'; import SetLock from '@/assets/plan/lock.png'; import DisableSetLock from '@/assets/plan/lock_1.png'; import SetOverExec from '@/assets/plan/over.png'; import DisableSetOverExec from '@/assets/plan/over_1.png'; import ShowGantt from '@/assets/gantt.svg'; import DisableShowGantt from '@/assets/disablegantt.svg'; import ShowCheckModel from '@/assets/plan/check.png'; import DisableShowCheckModel from '@/assets/plan/check_1.png'; import ShowTimer from '@/assets/plan/cal.png'; import DisableShowTimer from '@/assets/plan/cal_1.png'; import ShowList from '@/assets/list.svg'; import DisableShowList from '@/assets/disablelist.svg'; import Reset from '@/assets/reset.svg'; import DisableReset from '@/assets/disablereset.svg'; import * as commonUtils from '@/utils/utils'; import ShowType from '@/components/Common/CommonComponent'; import * as commonConfig from '@/utils/config'; import AntdDraggableModal from '@/components/Common/AntdDraggableModal'; import Gantt from '@/components/Charts/Gantt'; import * as commonServices from '@/services/services'; import CommonListSelect from '@/components/Common/CommonListSelect'; import SearchComponent from '@/components/Common/SearchComponent'; import tab from '@/routes/tab/tab'; import GanttStyles from './index.less'; import moment from 'moment'; const { TreeNode } = Tree; const { Header, Content, Sider } = Layout; class ProductionSchedule extends Component { constructor(props) { super(props); this.state = { isRender: 0, treeData: [], pageSize: 20, pageNum: 1, expandAll: true, expandedTreeKeys: [], checkModelStatus: false, defaultKey: 'unset', slideFlag: localStorage.getItem('treeSlide_' + this.props.sModelsId) ? +localStorage.getItem('treeSlide_' + this.props.sModelsId) : 0, }; this.treeDiv = null; this.requested = false this.bMachine = false; if (props && props.app && props.app.currentPane && props.app.currentPane.copyTo && props.app.currentPane.copyTo.sWorkCenterName) { this.bMachine = true } this.showSetMachine = false; this.form = {}; } componentWillReceiveProps(props) { if (props.slaveInfoSelectedRowKeys && props.slaveSelectedData && (props.slaveInfoSelectedRowKeys.length || props.slaveSelectedData.length)) { this.showSetMachine = true; } else { this.showSetMachine = false; } if (props.app && props.app.currentPane && props.app.currentPane.copyTo && props.app.currentPane.copyTo.treeKey) { if (this.state.defaultKey === 'unset') { this.setState({ defaultKey: [props.app.currentPane.copyTo.treeKey] }); } } if (Array.isArray(this.state.defaultKey) && props.treeData.length && props.app.currentPane.copyTo.treeKey && !this.requested) { let selectedItem = ''; props.treeData.forEach(item => { if (item.children) { item.children.forEach(item2 => { if (item2.sId + item2.sWorkCenterId == props.app.currentPane.copyTo.treeKey) { selectedItem = item2; } }) } }) this.handleTabsCallback(selectedItem); this.requested = true; } if (this.state.expandedTreeKeys.length === 0 && this.state.expandAll) { const arr = []; props.treeData.forEach((item) => { arr.push(item.sId + item.sWorkCenterId); }); this.setState({ expandedTreeKeys: arr, }); } } shouldComponentUpdate(nextProps) { const { slaveColumn, masterConfig } = nextProps; return commonUtils.isNotEmptyArr(slaveColumn) || commonUtils.isNotEmptyObject(masterConfig); } onDoubleClick = (name, record) => { if (this.props.onDoubleClick !== undefined) { this.props.onDoubleClick(record); } }; onRowClick = (name, record, bRowClick) => { const { slaveData } = this.props; let { slaveSelectedRowKeys, slaveInfoSelectedRowKeys } = this.props; slaveInfoSelectedRowKeys = commonUtils.isNotEmptyArr(slaveInfoSelectedRowKeys) ? slaveInfoSelectedRowKeys : []; if (name === 'slave') { if (commonUtils.isEmptyArr(slaveSelectedRowKeys)) { const keys = []; keys.push(record.sSlaveId); slaveSelectedRowKeys = keys; const sIds = record.sSlaveId.split('-'); slaveInfoSelectedRowKeys.push(...sIds); } else { const indexKey = slaveSelectedRowKeys.indexOf(record.sSlaveId); if (indexKey === -1) { slaveSelectedRowKeys.push(record.sSlaveId); const sIds = record.sSlaveId.split('-'); slaveInfoSelectedRowKeys.push(...sIds); sIds.forEach((item) => { const iIndex = slaveInfoSelectedRowKeys.findIndex(e => e === item); if (iIndex === -1) { slaveInfoSelectedRowKeys.push(item); } }); } else if (indexKey !== -1) { if (!bRowClick) { slaveSelectedRowKeys.splice(indexKey, 1); } const sIds = record.sSlaveId.split('-'); sIds.forEach((item) => { const index = slaveInfoSelectedRowKeys.findIndex(e => e === item); if (!bRowClick) { slaveInfoSelectedRowKeys.splice(index, 1); } }); } } } else if (name === 'slaveInfo') { if (commonUtils.isEmptyArr(slaveInfoSelectedRowKeys)) { const keys = []; keys.push(record.sId); slaveInfoSelectedRowKeys = keys; const slaveDataNews = slaveData.filter(item => item.sSlaveId.split('-').includes(record.sId)); if (commonUtils.isNotEmptyArr(slaveDataNews)) { slaveSelectedRowKeys = [slaveDataNews[0].sSlaveId]; } } else { const indexKey = slaveInfoSelectedRowKeys.indexOf(record.sId); if (indexKey === -1) { slaveInfoSelectedRowKeys.push(record.sId); const slaveDataNews = slaveData.filter(item => item.sSlaveId.split('-').includes(record.sId)); if (commonUtils.isNotEmptyArr(slaveDataNews)) { const iIndex = slaveSelectedRowKeys.findIndex(item => item === slaveDataNews[0].sSlaveId); if (iIndex === -1) { slaveSelectedRowKeys.push(slaveDataNews[0].sSlaveId); } } } else if (indexKey !== -1) { slaveInfoSelectedRowKeys.splice(indexKey, 1); const slaveDataNews = slaveData.filter(item => item.sSlaveId.split('-').includes(record.sId)); if (commonUtils.isNotEmptyArr(slaveDataNews)) { const sSlaveIds = slaveDataNews[0].sSlaveId.split('-'); if (slaveInfoSelectedRowKeys.length === 0 || sSlaveIds.length === 1) { const iIndex = slaveSelectedRowKeys.indexOf(item => slaveDataNew[0].sSlaveId === item); slaveSelectedRowKeys.splice(iIndex, 1); } else { let bdel = true; for (const sId of sSlaveIds) { if (slaveInfoSelectedRowKeys.findIndex(item => item === sId && item !== record.sId)) { bdel = false; break; } } if (bdel) { const iIndex = slaveSelectedRowKeys.indexOf(item => slaveDataNew[0].sSlaveId === item); slaveSelectedRowKeys.splice(iIndex, 1); } } } } } } let machineEnabled = false; if (commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) { const currSlave = slaveData.filter(item => item.sSlaveId === slaveSelectedRowKeys[0])[0]; const processSlave = slaveData.filter(item => item.sProcessId === currSlave.sProcessId && slaveSelectedRowKeys.includes(item.sSlaveId)); if (processSlave.length === slaveSelectedRowKeys.length) { machineEnabled = true; } } const { sModelsId } = this.props; commonUtils.setStoreDropDownData(sModelsId, 'master', 'sMachineId', []); commonUtils.setStoreDropDownData(sModelsId, 'master', 'sWorkCenterId', []); this.props.onSaveState({ slaveSelectedRowKeys, slaveInfoSelectedRowKeys, machineEnabled }); }; onRowMouseEnter= (name, record) => { // recor if (this.timerSelectRowChange) { clearTimeout(this.timerSelectRowChange); } this.timerSelectRowChange = setTimeout(() => { this.props.onSaveState({ rowHoverSid: record.sSlaveId, }); // console.log('=====record', record); // this.handleSelectRowChange(this.props.name, [record[this.rowKey]]); }, 150); } onRowMouseLeave= () => { if (this.timerSelectRowChange) { this.props.onSaveState({ rowHoverSid: '', }); clearTimeout(this.timerSelectRowChange); } } onCloseChangeMachine = () => { const { masterData } = this.props; delete masterData.tStartDate; delete masterData.iSplitNum; delete masterData.bSplit; this.props.onSaveState({ isChangeMachine: false, masterData: { ...masterData, sWorkCenterId: '', sMachineId: '', sTeamId: '' } }); } onPageChange = (pageNum) => { this.setState({ pageNum, }); } onTableSelectRowChange = (name, selectedRowKeys) => { const { slaveData, slaveSelectedRowKeys, slaveInfoConfig } = this.props; if (name === 'slave') { const addState = this.props.onTableSelectRowChange(name, selectedRowKeys, true); const slaveInfoSelectedRowKeys = []; /* 找到勾选掉的Id */ let oldSelectRowkeys = []; /* 取消勾选行 */ if(commonUtils.isEmptyObject(slaveInfoConfig) && commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) { oldSelectRowkeys = slaveSelectedRowKeys.filter(item => !selectedRowKeys.includes(item)); // 历史数据中删除的数据 if(commonUtils.isNotEmptyArr(oldSelectRowkeys) ) { /* 单层表格时 */ oldSelectRowkeys.forEach((oldSelectRowkey) => { if(commonUtils.isNotEmptyObject(oldSelectRowkey) && oldSelectRowkey.includes('sDivRow')) { /* 找到勾选掉的sDivRow汇总行 */ const slaveRemoveData = slaveData.filter(item => item.sDivRowParentId === oldSelectRowkey); if(commonUtils.isNotEmptyArr(slaveRemoveData)) { slaveRemoveData.forEach((itemChild) => { const indexKey = selectedRowKeys.indexOf(itemChild.sSlaveId); if(indexKey > -1) { selectedRowKeys.splice(indexKey, 1); } }); } } else { const indexKey = selectedRowKeys.indexOf(oldSelectRowkey); if(indexKey > -1) { selectedRowKeys.splice(indexKey, 1); } } }); } } if (commonUtils.isNotEmptyArr(selectedRowKeys)) { selectedRowKeys.forEach((selectedRow) => { const sIds = selectedRow.split('-'); slaveInfoSelectedRowKeys.push(...sIds); if (commonUtils.isEmptyObject(slaveInfoConfig) && commonUtils.isEmptyArr(oldSelectRowkeys)) { /* 单层结构 sDivRow控制 */ if (commonUtils.isNotEmptyObject(selectedRow) && selectedRow.includes('sDivRow')) { const slaveChildData = slaveData.filter(item => item.sDivRowParentId === selectedRow); if (commonUtils.isNotEmptyArr(slaveChildData)) { slaveChildData.forEach((itemChild) => { const indexKey = selectedRowKeys.indexOf(itemChild.sSlaveId); if (indexKey === -1) { selectedRowKeys.push(itemChild.sSlaveId); } }); } } } }); } addState.slaveInfoSelectedRowKeys = slaveInfoSelectedRowKeys; addState.slaveSelectedRowKeys = selectedRowKeys; this.props.onSaveState({ ...addState }); } else { this.props.onTableSelectRowChange(name, selectedRowKeys); } // let record = {}; // let key; // if (name === 'slave') { // if (commonUtils.isNotEmptyArr(selectedRowKeys) && commonUtils.isEmptyArr(slaveSelectedRowKeys) && selectedRowKeys.length === 1) { // key = selectedRowKeys[0]; // } else if (commonUtils.isNotEmptyArr(slaveSelectedRowKeys) && commonUtils.isEmptyArr(selectedRowKeys) && slaveSelectedRowKeys.length === 1) { // key = slaveSelectedRowKeys[0]; // } else if (commonUtils.isNotEmptyArr(selectedRowKeys) && commonUtils.isNotEmptyArr(slaveSelectedRowKeys) && selectedRowKeys.length > slaveSelectedRowKeys.length) { // key = selectedRowKeys.filter(item => !slaveSelectedRowKeys.includes(item))[0]; // } else if (commonUtils.isNotEmptyArr(selectedRowKeys) && commonUtils.isNotEmptyArr(slaveSelectedRowKeys) && selectedRowKeys.length < slaveSelectedRowKeys.length) { // key = slaveSelectedRowKeys.filter(item => !selectedRowKeys.includes(item))[0]; // } // record = tableData.filter(item => key === item.sSlaveId)[0]; // this.onRowClick(name, record); // } else if (name === 'slaveInfo') { // if (commonUtils.isNotEmptyArr(selectedRowKeys) && commonUtils.isEmptyArr(slaveInfoSelectedRowKeys) && selectedRowKeys.length === 1) { // key = selectedRowKeys[0]; // } else if (commonUtils.isNotEmptyArr(slaveInfoSelectedRowKeys) && commonUtils.isEmptyArr(selectedRowKeys) && slaveInfoSelectedRowKeys.length === 1) { // key = slaveInfoSelectedRowKeys[0]; // } else if (commonUtils.isNotEmptyArr(selectedRowKeys) && commonUtils.isNotEmptyArr(slaveInfoSelectedRowKeys) && selectedRowKeys.length > slaveInfoSelectedRowKeys.length) { // key = selectedRowKeys.filter(item => !slaveInfoSelectedRowKeys.includes(item))[0]; // } else if (commonUtils.isNotEmptyArr(selectedRowKeys) && commonUtils.isNotEmptyArr(slaveInfoSelectedRowKeys) && selectedRowKeys.length < slaveInfoSelectedRowKeys.length) { // key = slaveInfoSelectedRowKeys.filter(item => !selectedRowKeys.includes(item))[0]; // } // record = tableData.filter(item => key === item.sId)[0]; // this.onRowClick(name, record); // } else { // this.props.onTableSelectRowChange(name, selectedRowKeys); // } }; onTreeExpandChange = () => { const oldState = this.state.expandAll; const arr = []; if (!oldState) { this.props.treeData.forEach((item) => { arr.push(item.sId + item.sProcessId + item.iOrder); }); } this.setState({ expandAll: !oldState, expandedTreeKeys: arr, }); } onTreeExpand = (e) => { this.setState({ expandedTreeKeys: e, }); } /** 处理选择行发生改变s */ handleTableFilterData = (name, data, record) => { /* 外置处理业务 */ if (name === 'slave') { let slaveInfoDataNew = []; if (commonUtils.isNotEmptyArr(data)) { slaveInfoDataNew = data.filter(item => record.sSlaveId.split('-').includes(item.sId)); } return slaveInfoDataNew; } }; // 根据配置解析拼接具体参数 handleProParams = (sKey, arr) => { const { [`${sKey}Data`]: tableData, [`${sKey}SelectedRowKeys`]: selectedRowKeys } = this.props; const keyData = 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; } }; /* 甘特图数据改变出发事件 */ logDataUpdate = (type, action, item, id) => { const { charGanttData } = this.props; /* 记录更新的数据 */ if (action === 'update') { if (commonUtils.isNotEmptyArr(charGanttData)) { const { data } = charGanttData; if (commonUtils.isNotEmptyArr(data) && data.length > 0) { const iIndex = data.findIndex(child => child.id === id); if (iIndex > -1) { if (commonUtils.isNotEmptyObject(item.start_date)) { data[iIndex].start_date = item.start_date; } if (commonUtils.isNotEmptyObject(item.end_date)) { data[iIndex].end_date = item.end_date; } charGanttData.tasks.data = data; this.props.onSaveState({ charGanttData }); } } } } const text = item && item.text ? ` (${item.text})` : ''; let message = `${type} ${action}: ${id} ${text}`; if (type === 'link' && action !== 'delete') { message += ` ( source: ${item.source}, target: ${item.target} )`; } this.addMessage(message); } logTaskUpdate = (id, mode, task) => { const text = task && task.text ? ` (${task.text})` : ''; const message = `Task ${mode}: ${id} ${text}`; this.addMessage(message); } logLinkUpdate = (id, mode, link) => { let message = `Link ${mode}: ${id}`; if (link) { message += ` ( source: ${link.source}, target: ${link.target} )`; this.addMessage(message); } } addMessage = (message) => { const maxLogLength = 5; const newMessate = { message }; const messages = [ ]; messages.push(newMessate); if (messages.length > maxLogLength) { messages.length = maxLogLength; } this.props.onSaveState({ messages }); } sortData = (tempData) => { tempData.sort((g1, g2) => { return g1.iOrder - g2.iOrder; }); return tempData; }; /* 控制排序 */ orderData = (e, name, type) => { const { [`${name}SelectedRowKeys`]: tableselectedRowKeys, app, slavePagination: slavePaginationOld } = this.props; let { [`${name}Data`]: currentData } = this.props; if (name === 'slave') { if (commonUtils.isEmptyArr(tableselectedRowKeys)) { message.warn(commonFunc.showMessage(app.commonConst, 'pleaseChooseMoveData'));/* 请勾选要移动数据 */ return; } if (commonUtils.isEmptyArr(currentData)) { message.warn(commonFunc.showMessage(app.commonConst, 'NoProcessData'));/* 请填写工序表数据 */ return; } const tempData = []; for (const sId of tableselectedRowKeys) { let index = 0; const tableDataIndex = currentData.findIndex(item => item.sId === sId); if (tableDataIndex > -1) { const tableDataRow = JSON.parse(JSON.stringify(currentData[tableDataIndex])); if(commonUtils.isNotEmptyObject(tableDataRow)) { const iSelectedOrder = tableDataRow.iOrder + index + 100; const row = {...tableDataRow, iSelectedOrder : iSelectedOrder } tempData.push(row); } } index +=1; } const tempNew = commonUtils.isNotEmptyArr(tempData) ? JSON.parse(JSON.stringify(tempData)) : []; if (commonUtils.isEmptyArr(tempNew)) { message.warn(commonFunc.showMessage(app.commonConst, 'pleaseChooseMoveData'));/* 请选择要移动数据 */ return; } const len = currentData.length; currentData = this.orderNum(currentData); const newLen = tempNew.length; let num = 0.01;/* 循环增加体 */ let targetiOrder = -1; if (type === 1) { /* 上移 */ const iIndex = currentData.findIndex(item => item.sSlaveId === tempNew[0].sSlaveId);/* 选中第一个节点的下标 */ if (iIndex === 0) { if (newLen === 1) { message.warn(commonFunc.showMessage(app.commonConst, 'NoUp'));/* 无需上移 */ return; } else { targetiOrder = 0; } } else if (iIndex === 1 && currentData[0].sDivRowNew) { message.warn(commonFunc.showMessage(app.commonConst, 'NoUp'));/* 无需上移 */ return; } else { targetiOrder = currentData[iIndex - 1].iOrder - 1; /* 目标排序号 */ } } else if (type === 2) { /* 下移 */ const iIndex = currentData.findIndex(item => item.sSlaveId === tempNew[newLen - 1].sSlaveId);/* 选中最后一个节点的下标 */ if (iIndex === len - 1) { if (newLen === 1) { message.warn(commonFunc.showMessage(app.commonConst, 'NoDown')); /* 无需下移 */ return; } else { targetiOrder = currentData[iIndex].iOrder; } } else { targetiOrder = currentData[iIndex + 1].iOrder; } } else if (type === 0) { /* 置顶 */ const iIndex = currentData.findIndex(item => item.sSlaveId === tempNew[0].sSlaveId);/* 选中第一个节点的下标 */ if (iIndex === 0) { if (newLen === 1) { message.warn(commonFunc.showMessage(app.commonConst, 'NoTop')); /* 无需置顶 */ return; } else { targetiOrder = currentData[iIndex].iOrder; } } else if (iIndex === 1 && currentData[0].sDivRowNew) { message.warn(commonFunc.showMessage(app.commonConst, 'NoTop'));/* 无需置顶 */ return; } else if (currentData[0].sDivRowNew) { /* 如果顶层有分割 */ targetiOrder = currentData[1].iOrder - 1; } else { targetiOrder = currentData[0].iOrder - 1; } } else if (type === 3) { /* 置底 */ const iIndex = currentData.findIndex(item => item.sSlaveId === tempNew[newLen - 1].sSlaveId);/* 选中最后一个节点的下标 */ if (iIndex === len - 1) { if (newLen === 1) { message.warn(commonFunc.showMessage(app.commonConst, 'NoBottom')); /* 无需置底 */ return; } else { targetiOrder = currentData[iIndex].iOrder; } } else { targetiOrder = currentData[len - 1].iOrder + 1; } } tempNew.forEach((item) => { const index1 = currentData.findIndex(item1 => item1.sSlaveId === item.sSlaveId); currentData[index1] = { ...item, iOrder: targetiOrder + num, handleType: 'update' }; num += 0.01; }); currentData = this.sortData(currentData); currentData = this.orderNum(currentData); const iIndex = currentData.findIndex(item => item.sSlaveId === tableselectedRowKeys[0]); const slavePagination = { ...slavePaginationOld }; slavePagination.current = Math.ceil((iIndex + 1) / commonConfig.pageSize); this.props.onSaveState({ [`${name}Data`]: currentData, slavePagination }); } else if (name === 'slaveInfo') { const { slaveData, slaveSelectedRowKeys, masterData }= this.props; if(commonUtils.isEmptyArr(slaveSelectedRowKeys)) { message.error('请选择一行数据!'); return; } if(commonUtils.isNotEmptyArr(slaveData) && commonUtils.isNotEmptyObject(masterData)) { const iIndex = slaveData.findIndex(item => slaveSelectedRowKeys.includes(item.sId) && commonUtils.isEmptyObject(item.sDivRowNew)); /* 找不是sDivRow的选中行第一条 */ if (iIndex > -1) { masterData.sMachineId = slaveData[iIndex].sMachineId; masterData.sMachineName = slaveData[iIndex].sMachineName; masterData.sWorkCenterId = slaveData[iIndex].sWorkCenterId; masterData.sWorkCenterName = slaveData[iIndex].sWorkCenterName; } } this.props.onSaveState({ isChangeMachine: true, masterData }); } }; /* 自定义排序号 */ orderNum = (tableData) => { const {slaveColumn} = this.props; tableData.forEach((item, index) => { item.iOrder = index + 1; item.handleType = 'update'; }); /* 移动后 重新计算分割间隔条数及用时逻辑 */ const returnFilterData = tableData.filter(item => commonUtils.isNotEmptyObject(item.sDivRowNew) && item.sDivRowNew !==''); if (commonUtils.isNotEmptyArr(returnFilterData)) { returnFilterData.forEach((tableDataRow, index) => { /* 找到白班与晚班区间的汇总条数与工时 */ let startIndex = 0; /* 找到开始下标 */ let endindex = 0; /* 找到结束下标 */ let sliceData =[]; startIndex = tableData.findIndex(item => item.sId === returnFilterData[index].sId); if(index +1 < returnFilterData.length) { endindex = tableData.findIndex(item => item.sId === returnFilterData[index + 1].sId); } if(index === returnFilterData.length -1) { endindex = tableData.length; } if(startIndex < endindex) { sliceData= tableData.slice(startIndex + 1, endindex); } let num = 0; let dTime = 0; let dPlateQty = 0; /* 付版 */ let dProcessQty = 0; let endTime; /* 找到第二个字段 */ const scheduleShow = ['16508090850002295893127095467000'].includes(this.props?.sModelsId); let timeSName = 'dHour1'; if (scheduleShow) timeSName = 'dSumHour'; if(commonUtils.isNotEmptyArr(sliceData)) { num = sliceData.length; sliceData.forEach((item) => { if (commonUtils.isNotEmptyNumber(item[timeSName])) { dTime += item[timeSName]; dPlateQty += item.dPlateQty; dProcessQty += item.dProcessQty; if (item?.tEndDate) { let value = item.tEndDate; if (endTime) { value = moment.max(moment(endTime), moment(item.tEndDate)); } endTime = value; } const iSrcIndex = tableData.findIndex(itemReturn => itemReturn.sSlaveId === item.sSlaveId); /* 汇总的每行上都加newRow的sSlaveId作为父级Id */ if(iSrcIndex > -1) { tableData[iSrcIndex] = {...tableData[iSrcIndex], sDivRowParentId : tableDataRow.sSlaveId, sDivRowTmp : tableDataRow.sDivRowNew} } } }); let sCount = ''; if(num > 0) { sCount += 'F'+ num + '单'; } if(dProcessQty > 0) { sCount += ' - '+ dProcessQty; } if(sliceData[0].sType === "1" && !scheduleShow) { sCount += ' - ' + dPlateQty +'付版'; } if(dTime > 0) { if (scheduleShow) { sCount += ' - ' + Math.floor(dTime / 24) + "d" + (dTime % 24).toFixed(2) + 'h'; } else { sCount += ' - ' + (dTime/60).toFixed(2) + 'h'; }; } if (endTime) { sCount += ' - ' + moment(endTime).format('MM月DD日'); } const sFileName = commonUtils.isNotEmptyArr(slaveColumn) && slaveColumn.length > 2 ? slaveColumn[1].dataIndex : ''; if(sCount && sFileName) { const addState ={}; addState[sFileName] = tableDataRow.sDivRowNew + sCount; tableData[startIndex] = {...tableData[startIndex] , ...addState} } } }); } return tableData; }; /* 切换甘特图/列表视图 */ changeGantt = (e, type) => { let bGantt = false; if (type === 'gantt') { const { slaveFilterCondition } = this.props; bGantt = true; /* 调用获取甘特图数据 */ const chart = {}; chart.sProcedureName = 'Sp_Process_CommonGtChar'; chart.paramsMap = { }; this.props.onGanttChar(chart, slaveFilterCondition).finally(() => { this.props.onSaveState({ pageLoading: false }); }); } else if (type === 'list') { bGantt = false; } this.props.onSaveState({ bGantt }); }; /* 切换稽查列表 */ changeCheckModel= async (e, type) => { if (type === 'checkModel') { if (this.state.checkModelStatus) { return; } this.setState({ checkModelStatus: true }) const { slaveFilterCondition } = this.props; /* 调用获取甘特图数据 */ const chart = {}; chart.sProcedureName = 'Sp_Manufacture_GetAPSstate'; chart.paramsMap = { }; await this.props.onCheckModel(chart, slaveFilterCondition); this.setState({ checkModelStatus: false }) } }; /* 弹出重算时间弹窗 */ showTimerModal= (e, type) => { if (type === 'changeTimer') { this.props.onChangeTimerPro(); } }; /* 侧边保存 */ showSave= (e, type) => { if (type === 'save') { this.props.onSaveState({ pageLoading: true, }); setTimeout(async() => { this.props.onSubmit(); /* 调用保存 */ }, 500); } }; /* 侧边保存 */ showLock= (e, type) => { if (type === 'lock') { this.props.onShowLockPro(); } }; showLock= (e, type) => { if (type === 'lock') { this.props.onShowLockPro(); } }; showOverExec= (e, type) => { if (this.props.onShowOverExecPro) { this.props.onShowOverExecPro(); } }; /** 处理选择行发生改变 */ // handleTableFilterData = (name, data, record) => { // /* 外置处理业务 */ // if (name === 'slave') { // let slaveInfoDataNew = ''; // slaveInfoDataNew = data.filter(item => record.sSlaveId.split(',').includes(item.sId)); // return slaveInfoDataNew; // } // }; /** 处理card点击事件 */ handleTabsCallback = (child) => { // if (commonUtils.isNotEmptyArr(this.props.teamData)) { // child.cardSelectedColor = '#fff7e6'; // const iIndex = this.props.teamData.findIndex(item => item.sId === child.sId); // const teamDataNew = this.props.teamData; // teamDataNew.forEach((item, index) => { // if (index !== iIndex) { item.cardSelectedColor = ''; } // }); // } // this.props.onSaveState({ Loading: true }); this.props.onTabsCallback(child); }; toggleSlide = () => { let flag = this.state.slideFlag ? 0 : 1; localStorage.setItem('treeSlide_' + this.props.sModelsId, flag); this.setState({ slideFlag: flag }) } handleSlideToggle = () => { if (this.state.slideFlag) { this.treeDiv.getElementsByClassName('productionScheduleTree-sider')[0].style.display = 'block'; const originWidth = this.treeDiv.getElementsByClassName('productionScheduleTree-sider')[0].offsetWidth; this.treeDiv.getElementsByClassName('productionScheduleTree-content')[0].style.width = `calc(100% - ${originWidth + 10}px)`; this.toggleSlide(); } else { this.treeDiv.getElementsByClassName('productionScheduleTree-sider')[0].style.display = 'none'; this.treeDiv.getElementsByClassName('productionScheduleTree-content')[0].style.width = `calc(100%)`; this.toggleSlide(); } } resetTreeKey = () => { this.setState({ defaultKey: 'selected' }) } setBMachine = (flag) => { this.bMachine = flag } componentDidMount() { if (!this.state.slideFlag) { this.treeDiv.getElementsByClassName('productionScheduleTree-sider')[0].style.display = 'block'; const originWidth = this.treeDiv.getElementsByClassName('productionScheduleTree-sider')[0].offsetWidth; this.treeDiv.getElementsByClassName('productionScheduleTree-content')[0].style.width = `calc(100% - ${originWidth + 10}px)`; } else { this.treeDiv.getElementsByClassName('productionScheduleTree-sider')[0].style.display = 'none'; this.treeDiv.getElementsByClassName('productionScheduleTree-content')[0].style.width = `calc(100%)`; } } // handleGanttChar = async (ganttChart) => { // const { token, sModelsId, formRoute, slaveFilterCondition } = this.props; // let charGanttData = {}; // const value = { // sProName: ganttChart.sProcedureName, // paramsMap: ganttChart.prodParamsMap, // bFilter: slaveFilterCondition, // }; // const url = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}&sName=${formRoute}`; // const { data: returnData } = await commonServices.postValueService(token, value, url); // console.log('returnData', returnData); // if (returnData.code === 1) { // const { dataset } = returnData; // if (commonUtils.isNotEmptyObject(dataset)) { // const outData = returnData.dataset.rows[0].dataSet.outData[0]; // if (outData.sCode === -1) { // message.error(outData.sReturn); // } else { // charGanttData = commonUtils.isEmpty(outData.sReturn) ? [] : JSON.parse(outData.sReturn); // } // } // } else { // message.error(returnData.msg); // } // console.log('charGanttData', charGanttData); // this.props.onSaveState({ charGanttData }); // }; // renderCards = (data) => { // let showInfo = ''; // data.map((item) => { // showInfo += ( //