import React, { Component } from 'react'; import { Form } from '@ant-design/compatible'; import '@ant-design/compatible/assets/index.css'; import { Layout, Spin, Button, Row, Col, message } from 'antd'; import * as commonFunc from '@/components/Common/commonFunc';/* 通用单据方法 */ /* 通用单据方法 */ import StaticEditTable from '@/components/Common//CommonTable';/* 可编辑表格 */ import StaticEditTree from '@/components/Common/Tree/StaticTree'; import CommonBase from '@/components/Common/CommonBase';/* 获取配置及数据 */ import * as commonBusiness from '@/components/Common//commonBusiness';/* 单据业务功能 */ import SearchComponent from '@/components/Common/SearchComponent'; import AntdDraggableModal from '@/components/Common/AntdDraggableModal'; import * as commonUtils from '@/utils/utils'; import ShowType from '@/components/Common/CommonComponent'; import CommonListEvent from '@/components/Common/CommonListEvent'; const { Content } = Layout; /** 此组件是用于色序选择颜色弹窗 区别在于列可编辑 */ class CommonList extends Component { constructor(props) { super(props); // this.treeName = null; // this.treeCheckedKeys = null; this.state = { }; } componentWillReceiveProps(nextProps) { const { slaveData, selectedRowKeys, sModelsType, slaveFilterData, slaveSelectedData, sisColorSelectedData, } = nextProps; if (slaveFilterData === undefined && sModelsType === 'search/sisColor') { if (commonUtils.isNotEmptyArr(slaveData) && commonUtils.isNotEmptyArr(selectedRowKeys)) { /* 点击字段弹窗显示的是修改后的值,而非颜色基础信息 */ if (commonUtils.isNotEmptyArr(sisColorSelectedData) && sisColorSelectedData.length > 0) { sisColorSelectedData.forEach((item) => { const iIndex = slaveData.findIndex(child => child.sId === item.sId); if (iIndex > -1) { slaveData[iIndex].sName = item.sName; slaveData[iIndex].dColor = item.dColor; } }); } // 修改选择色序弹出窗排序后保存的问题 const slaveFilterData = []; selectedRowKeys.forEach((item) => { for (let i = 0; i < slaveData.length; i += 1) { if (item === slaveData[i].sSlaveId) { slaveFilterData.push(slaveData[i]); break; } } }); // const slaveFilterData = slaveData.filter(item => selectedRowKeys.includes(item.sSlaveId)); if (commonUtils.isNotEmptyArr(slaveFilterData)) { this.props.onSaveState({ slaveFilterData, slaveSelectedRowKeys: selectedRowKeys, slaveData, }); } } } else if (commonUtils.isEmptyArr(slaveFilterData) && sModelsType === 'search/commonPopup') { if (commonUtils.isNotEmptyArr(slaveData) && commonUtils.isNotEmptyArr(slaveSelectedData)) { this.props.onSaveState({ slaveFilterData: slaveSelectedData, }); } } } handleSelect = () => { const { slaveFilterData, app } = this.props; this.props.app.currentPane.select(app.currentPane.name, app.currentPane.config, slaveFilterData); this.props.app.currentPane.selectCancel(app.currentPane.name); this.props.onSaveState({ slaveFilterData: [], }); }; handleDoubleClickSelect = () => { const { slaveConfig } = this.props; if (commonUtils.isNotEmptyObject(slaveConfig) && !slaveConfig.bMutiSelect) { // 单选时双击选中数据 this.handleSelect(); } } /** 关闭 */ handleCancelModal = () => { const { app } = this.props; this.props.app.currentPane.selectCancel(app.currentPane.name); }; /** 树节点多选框选中 */ handleTreeCheck = (checkedKeys, e) => { this.props.onCheck(checkedKeys, e); /* 调用CommonListEvent通用处理 */ }; /** 树节点选中 */ handleTreeSelect = (name, checkedKeys, e) => { this.props.onSelect(name, checkedKeys, e); /* 调用CommonListEvent通用处理 */ }; handleTableSelectRowChange = (name, selectedRowKeys, changeValue, chooseProcessParams) => { /* 表格行选择 */ this.props.onTableSelectRowChange(name, selectedRowKeys); if (name === 'slave') { /* 选择工序 从表表 */ const { [`${name}Data`]: tableData, slaveConfig, fatherModelsType } = this.props; const { selectedRowKeysLength, slaveFilterData, slaveData } = this.props; const oldSlaveFilterData = slaveFilterData === undefined ? [] : JSON.parse(JSON.stringify(slaveFilterData)); const newSlaveFilterData = []; /* 处理搜索后的右侧选中数据源不在左侧slaveData数据源中问题 */ if (commonUtils.isNotEmptyArr(oldSlaveFilterData)) { oldSlaveFilterData.forEach((item) => { const iIndex = slaveData.findIndex(itemFilter => itemFilter.sSlaveId === item.sSlaveId); if (iIndex === -1) { newSlaveFilterData.push(item); } }); } selectedRowKeys.forEach((key) => { const filterDataIndex = oldSlaveFilterData.findIndex(item => item.sSlaveId === key); if (filterDataIndex < 0) { const tableDataIndex = tableData.findIndex(item => item.sSlaveId === key); newSlaveFilterData.push({ ...tableData[tableDataIndex] }); } else { const iIndex = newSlaveFilterData.findIndex(item => oldSlaveFilterData[filterDataIndex].sSlaveId === item.sSlaveId); /* 解决删除后重新添加相同颜色 重复问题 */ if (iIndex === -1) { newSlaveFilterData.push({ ...oldSlaveFilterData[filterDataIndex] }); } } }); this.props.onSaveState({ slaveFilterData: newSlaveFilterData, }); if (chooseProcessParams) { let modalVisible = false; let slaveSelectOneData = {}; let slaveSelectOneDataIndex = -1; if (commonUtils.isNotEmptyArr(tableData)) { if (selectedRowKeys instanceof Array) { // 多选情况下 if (commonUtils.isEmpty(selectedRowKeysLength) || (selectedRowKeys.length - selectedRowKeysLength) > 0) { modalVisible = true; } slaveSelectOneDataIndex = tableData.findIndex(item => item.sId === selectedRowKeys[selectedRowKeys.length - 1]); // 多选选择最后一个 } else { // 单选情况下 slaveSelectOneDataIndex = tableData.findIndex(item => item.sId === selectedRowKeys); } if (slaveSelectOneDataIndex > -1) { slaveSelectOneData = tableData[slaveSelectOneDataIndex]; } } // let masterData = {}; const sProcessParamsSelects = []; let paramType = ''; if (commonUtils.isNotEmptyObject(slaveSelectOneData) && commonUtils.isNotEmptyObject(fatherModelsType)) { if (fatherModelsType.includes('manufacture/')) { paramType = slaveSelectOneData.sWorkOrderParam; } else if (fatherModelsType.includes('quotation/')) { paramType = slaveSelectOneData.sProcessParam; } } if (commonUtils.isNotEmptyObject(paramType)) { // eslint-disable-next-line no-plusplus for (let i = 1; i < 7; i++) { const iIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === `sParamValue${i.toString()}`); if (iIndex > -1 && !commonUtils.isEmpty(slaveSelectOneData[`sParam${i.toString()}`])) { slaveConfig.gdsconfigformslave[iIndex].showName = slaveSelectOneData[`sParam${i.toString()}`]; slaveConfig.gdsconfigformslave[iIndex].bVisible = !slaveSelectOneData[`sParam${i.toString()}`].includes('参数值'); // masterData = { ...masterNewData, ...commonUtils.convertStrToObj(slaveFilterData[0].sProcessParam) }; sProcessParamsSelects.push(slaveConfig.gdsconfigformslave[iIndex]); } else if (iIndex > -1) { slaveConfig.gdsconfigformslave[iIndex].bVisible = false; } } } else { modalVisible = false; // eslint-disable-next-line no-plusplus for (let i = 1; i < 7; i++) { const iIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === `sParamValue${i.toString()}`); if (iIndex > -1) { slaveConfig.gdsconfigformslave[iIndex].bVisible = false; } } } this.props.onSaveState({ sProcessParamsModalVisible: modalVisible, sProcessParamsSelects, slaveSelectOneDataIndex, selectedRowKeysLength: selectedRowKeys.length, }); } } } handleCancelProcessParamsModalVisible = () => { this.props.onSaveState({ sProcessParamsModalVisible: false, }); } handleProcessParamsOk = () => { const { slaveData, slaveSelectOneDataIndex, slaveFilterData, sProcessParamsSelects, } = this.props; let sProcessParamStr = ''; if (commonUtils.isNotEmptyArr(slaveData) && !commonUtils.isEmpty(slaveSelectOneDataIndex) && commonUtils.isNotEmptyArr(slaveFilterData) && commonUtils.isNotEmptyArr(sProcessParamsSelects)) { // eslint-disable-next-line array-callback-return sProcessParamsSelects.map((item) => { sProcessParamStr += `${item.showName}:${slaveData[slaveSelectOneDataIndex][item.sName]},`; }); slaveFilterData[slaveFilterData.length - 1].sProcessParamStr = sProcessParamStr; slaveFilterData[slaveFilterData.length - 1] = { ...slaveFilterData[slaveFilterData.length - 1], ...slaveData[slaveSelectOneDataIndex] }; } this.props.onSaveState({ slaveFilterData, sProcessParamsModalVisible: false, }); } handleTableChange = async (name, sFieldName, changeValue, sId, dropDownData) => { /* 从CommonBase获取默认参数 */ if (name === 'slaveFilter' && (sFieldName === 'sName' || sFieldName === 'dColor')) { const { [`${name}Data`]: tableData } = this.props; if (commonUtils.isNotEmptyObject(tableData)) { const iIndex = tableData.findIndex(item => item.sId === sId); if (iIndex > -1) { const tableDataRowOld = tableData[iIndex]; if (sFieldName === 'sName' && commonUtils.isNotEmptyObject(tableDataRowOld.sName) && (tableDataRowOld.sName === 'C' || tableDataRowOld.sName === 'M' || tableDataRowOld.sName === 'Y' || tableDataRowOld.sName === 'K')) { message.error('此颜色值禁止更改!'); return; } const tableDataRow = await this.props.onDataChange(name, sFieldName, changeValue, sId, dropDownData, true); tableData[iIndex] = tableDataRow; this.props.onSaveState({ [`${name}Data`]: tableData }); } } } } /* 可以刪除选中颜色,同步移除左侧勾选行 */ handleTableDel = (name, isWait, tableSelectedRowKeys) => { const { slaveSelectedRowKeys } = this.props; if (commonUtils.isNotEmptyArr(tableSelectedRowKeys) && commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) { slaveSelectedRowKeys.forEach((item, index) => { if (tableSelectedRowKeys.includes(item)) { slaveSelectedRowKeys.splice(index, 1); } }); this.props.onDataRowDel(name, isWait, tableSelectedRowKeys); } } // ----------------------------数据修改回带end ---------------------------- // handleDrag = (data) => { this.props.onSaveState({ slaveFilterData: data, }); } render() { const { pageLoading } = this.props; return (