/* eslint-disable */ import React, { Component } from 'react'; import { Form, Icon } from '@ant-design/compatible'; import '@ant-design/compatible/assets/index.css'; import { Layout, Spin, Slider, Button, Input, message, Tooltip } from 'antd'; import { MessageOutlined, MinusOutlined, NodeExpandOutlined } from '@ant-design/icons'; import CommonListEvent from '@/components/Common/CommonListEvent';/* 继承销售模块业务功能 */ import * as commonFunc from '@/components/Common/commonFunc';/* 通用单据方法 */ /* 通用单据方法 */ import Toolbar from '@/components/Common/ToolBar/ToolBarNew'; import StaticEditTable from '@/components/Common/CommonTable';/* 可编辑表格 */ import styles from '@/index.less'; import selfstyles from '@/components/Common/CommonListLeft/index.less'; import CommonBase from '@/components/Common/CommonBase';/* 获取配置及数据 */ import * as commonBusiness from '@/components/Common/commonBusiness';/* 单据业务功能 */ import SearchComponent from '@/components/Common/SearchComponent';/* 搜索组件 */ import * as commonConfig from '@/utils/config'; import * as commonUtils from '@/utils/utils'; import StaticEditTree from '@/components/Common/Tree/StaticTree'; import Eject from '@/assets/eject.svg';/* 弹出图标 */ import Close from '@/assets/close.svg';/* 关闭图标 */ import leftTreeEdit from '@/assets/leftTreeEdit.svg';/* 编辑节点*/ import leftTreeDel from '@/assets/leftTreeDel.svg';/* 删除节点 */ import leftTreeAddChild from '@/assets/leftTreeAddChild.svg';/* 新增节点 */ import AntdDraggableModal from '@/components/Common/AntdDraggableModal'; import CommonListSelect from '@/components/Common/CommonListSelect';/* 选择界面2222 */ import WorkOrderSystemAddModal from '@/components/Common/WorkOrderSystem/WorkOrderSystemAdd'; import WorkOrderSystemDetailModal from '@/components/Common/WorkOrderSystem/WorkOrderSystemDetail'; const { Header, Content } = Layout; const { TextArea } = Input; let NoTotalData = ''; class CommonList extends Component { constructor(props) { super(props); this.state = { expandAll: true, expandedTreeKeys: [], defaultKey: 'unset', slideFlag: localStorage.getItem(`treeSlide_${this.props.sModelsId}`) ? +localStorage.getItem(`treeSlide_${this.props.sModelsId}`) : 0, treeId: `treeId_${commonUtils.createSid()}` }; this.treeDiv = null; } componentDidMount() { if (!this.state.slideFlag) { this.treeDiv.getElementsByClassName('listTree-sider')[0].style.display = 'block'; const originWidth = this.treeDiv.getElementsByClassName('listTree-sider')[0].offsetWidth; this.treeDiv.getElementsByClassName('listTree-content')[0].style.width = `calc(100% - ${originWidth + 10}px)`; } else { this.treeDiv.getElementsByClassName('listTree-sider')[0].style.display = 'none'; this.treeDiv.getElementsByClassName('listTree-content')[0].style.width = `calc(100%)`; } this.handleDefaultExpandTree(); } componentDidUpdate() { if (window.xlyListLeftTreeExpand) { this.handleDefaultExpandTree(); window.xlyListLeftTreeExpand = false; } } handleDefaultExpandTree = () => { let count = 0; const timer = setInterval(() => { count += 1; if (count > 10) { clearInterval(timer); } const { expandedKeys } = this.props; if (commonUtils.isNotEmptyArr(expandedKeys)) { clearInterval(timer); this.handleExpandTreeAll(2); } }, 500); } 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, }); } 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('listTree-sider')[0].style.display = 'block'; const originWidth = this.treeDiv.getElementsByClassName('listTree-sider')[0].offsetWidth; this.treeDiv.getElementsByClassName('listTree-content')[0].style.width = `calc(100% - ${originWidth + 10}px)`; this.toggleSlide(); } else { this.treeDiv.getElementsByClassName('listTree-sider')[0].style.display = 'none'; this.treeDiv.getElementsByClassName('listTree-content')[0].style.width = `calc(100%)`; this.toggleSlide(); } } handleEject = () => { const { currentPane, panes } = this.props.app; if (commonUtils.isNotEmptyArr(panes) && commonUtils.isNotEmptyObject(currentPane)) { // const index = panes.indexOf(currentPane); const index = panes.findIndex(item => item.formId === currentPane.formId && item.key === currentPane.key && item.notCurrentPane === currentPane.notCurrentPane && item.route === currentPane.route && item.title === currentPane.title && item.sModelsType === currentPane.sModelsType && item.sProcName === currentPane.sProcName); /* 当前页签 */ let currentTab = document.getElementById('navTabWrap').children[index]; if (commonUtils.isEmpty(currentTab)) { const oChildren = document.getElementById('navTabWrap').getElementsByClassName('ant-tabs-content')[0].children; for (const child of oChildren) { if (child.nodeName === 'DIV' && index !== undefined && child.getAttribute('id') === `navTabWrap-panel-${panes[index].key}`) { currentTab = child; } } } if (!commonUtils.isEmpty(currentTab)) { const filterTreeArr = currentTab.getElementsByClassName('xly-filter-tree');/* 获取当前页签下的树组件 */ if (commonUtils.isNotEmptyArr(filterTreeArr)) { const filterTree = filterTreeArr[0]; if (filterTree.style.display === 'block') { filterTree.style.display = 'none'; } else { filterTree.style.display = 'block'; } } } } }; /** 树节点选中 */ handleTreeSelect = (name, checkedKeys, e) => { this.props.onSelect(name, checkedKeys, e); /* 调用CommonListEvent通用处理 */ }; handleCancelModal = (modelVisible) => { this.props.onSaveState({ [modelVisible]: false, }); } handleSelectModal = (modelVisible) => { this.props.onSaveState({ [modelVisible]: false, }); } /* 新增左侧树节点 */ handleLeftTreeAddChild = () => { this.props.onSaveState({ leftTreeNodeVisible: true, leftTreeNodeHandleType: 'add', leftTreeNodeTitle: '新增子节点' }) } /* 编辑左侧树节点 */ handleLeftTreeAddEdit = () => { const { treeSelectedKeys, treeTreeNode} = this.props; if(commonUtils.isEmptyArr(treeSelectedKeys)) { message.error('请选择树节点!'); return; } const leftTreeNodeName = treeTreeNode.showName; this.props.onSaveState({ leftTreeNodeVisible: true, leftTreeNodeName: leftTreeNodeName, leftTreeNodeTitle: '编辑树节点', leftTreeNodeHandleType: 'update' }) } /* 删除左侧树节点 */ handleLeftTreeAddDel = () => { const { treeSelectedKeys, treeTreeNode, leftTreeNodeHandleType, slaveConfig,slaveData, slaveDelData} = this.props; if(commonUtils.isEmptyArr(treeSelectedKeys)) { message.error('请选择树节点!'); return; } const newNodeData = []; const newNodeDelData = []; const newNodeObj ={}; newNodeObj.sId = treeTreeNode.sId; newNodeObj.sName = treeTreeNode.showName; newNodeObj.sParentId = treeTreeNode.sId; newNodeObj.sAllId = treeTreeNode.sAllId; newNodeObj.handleType = 'del'; newNodeData.push(newNodeObj); newNodeDelData.push(newNodeObj); const data = []; if (!commonBusiness.validateTable(slaveConfig, slaveData, this.props)) { this.props.onSaveState({ loading: false, }); return; } data.push(commonBusiness.mergeData('slave', slaveConfig.sTbName, newNodeData, newNodeDelData)); this.handleSaveData({ data, sClientType: '1' }); } // 展开收起全部树节点 handleExpandTreeAll = (level = 999) => { const { expandedKeys: expandedKeysOld, treeData } = this.props; let expandedKeys = []; const getExpandedKeys = (arr, lv) => { for (let i = 0; i < arr.length; i++) { const obj = arr[i]; expandedKeys.push(obj.key); if (obj.children && lv < level) { getExpandedKeys(obj.children, lv + 1); } } } getExpandedKeys(treeData, 0); if (expandedKeysOld.length >= expandedKeys.length && level === 999) { expandedKeys = []; } this.props.onSaveState({ expandedKeys }); } handleLeftTreeNodeOk = () => { /* 调用接口 新增保存 */ const { treeSelectedKeys, treeTreeNode, leftTreeNodeHandleType, slaveConfig,slaveData, slaveDelData} = this.props; // const {treeNodeValue } = this.state; const nodeName = commonUtils.isNotEmptyObject(document.getElementById('treeNodeName')) ? document.getElementById('treeNodeName').value : '' ; if(commonUtils.isEmptyArr(treeSelectedKeys)) { message.error('请选择树节点!'); return; } if(commonUtils.isEmptyObject(nodeName)) { message.error('请输入子节点名称!'); return; } let filterTreeConfig = {}; let picArrConfig = {}; const filterTreeConfigArr = slaveConfig.gdsconfigformslave.filter(item => item.bTree); if (commonUtils.isNotEmptyArr(filterTreeConfigArr)) { filterTreeConfig = filterTreeConfigArr[0]; } const picArrConfigArr = slaveConfig.gdsconfigformslave.filter(item => item.sName === 'picArr'); if (commonUtils.isNotEmptyArr(picArrConfigArr)) { picArrConfig = picArrConfigArr[0]; } const { sActiveId: sFormId } = picArrConfig; if (!sFormId) { message.error('sFormId不能为空!'); return; } const { sName = 'sName' } = filterTreeConfig; const newNodeData = []; const newNodeDelData = []; /* 新增节点 */ if(leftTreeNodeHandleType && leftTreeNodeHandleType === 'add') { const newNodeObj ={}; newNodeObj.sId = commonUtils.createSid(); newNodeObj[sName] = nodeName; newNodeObj.sParentId = treeTreeNode.sId; newNodeObj.sAllId = newNodeObj.sId + newNodeObj.sParentId; newNodeObj.handleType = leftTreeNodeHandleType; newNodeObj.sFormId = sFormId; newNodeData.push(newNodeObj); }else if(leftTreeNodeHandleType && leftTreeNodeHandleType === 'update') { const newNodeObj ={}; newNodeObj.sId = treeTreeNode.sId; newNodeObj[sName] = nodeName; newNodeObj.sParentId = treeTreeNode.sParentId; newNodeObj.sAllId = treeTreeNode.sAllId; newNodeObj.handleType = leftTreeNodeHandleType; newNodeData.push(newNodeObj); } const data = []; if (!commonBusiness.validateTable(slaveConfig, slaveData, this.props)) { this.props.onSaveState({ loading: false, }); return; } data.push(commonBusiness.mergeData('slave', slaveConfig.sTbName, newNodeData, newNodeDelData)); this.handleSaveData({ data, sClientType: '1' }); } handleSaveData = async (params) => { const { token, sModelsId, currentId, masterData, masterConfig, slaveConfig, checkConfig, billnosetting, app, sModelsType, controlConfig, materialsConfig, processConfig, colorConfig, packConfig, orderDetailConfig, dispatch, } = this.props; const {userinfo} = app; const {copyTo} = app.currentPane; const BtnSave = commonFunc.showMessage(app.commonConst, 'BtnSave');/* 保存 */ params.optName = BtnSave; const returnData = await commonBusiness.saveData({token, value: params, sModelsId}); if (commonUtils.isNotEmptyObject(returnData)) { if(returnData.code === 1) { /* 回刷树 */ this.handleRefleshTree(); } } } handleRefleshTree = async () => { const { slaveConfig, filterCondition, treeSelectedKeys } = this.props; const filterTreeConfigArr = slaveConfig.gdsconfigformslave.filter(item => item.bTree); const addState = {}; let bInData = true; if (commonUtils.isNotEmptyArr(filterTreeConfigArr)) { const filterTreeConfig = filterTreeConfigArr[0]; const { treeData } = await this.handleGetFilterTreeData(filterTreeConfig, filterCondition, 1); addState.treeData = treeData; } if (commonUtils.isNotEmptyArr(addState.treeData) && commonUtils.isNotEmptyArr(treeSelectedKeys)) { const findObjectById = (arr, key) => { for (let i = 0; i < arr.length; i++) { const obj = arr[i]; if (obj.key === key) { return obj; } if (obj.children) { const child = findObjectById(obj.children, key); if (child) { return child; } } } return null; } bInData = findObjectById(addState.treeData, treeSelectedKeys[0]); } this.props.onSaveState({ leftTreeNodeVisible: false, ...addState }, () => { if (!bInData) { const oFirstNode = this.treeRef?.querySelector('.ant-tree-node-content-wrapper'); if (oFirstNode) { oFirstNode.click(); } } }); } handleGetFilterTreeData= async (slaveConfig, slaveFilterCondition, page, slaveOrderBy, props) => { const { app } = props === undefined ? this.props : props; const conditonValues = app.currentPane.conditonValues; const pageNum = commonUtils.isEmpty(page) ? 1 : page; return await this.props.handleGetTreeDataSet({ name: 'slave', configData: slaveConfig, condition: { pageNum, pageSize: commonConfig.pageSize, bFilter: slaveFilterCondition, sFilterOrderBy: slaveOrderBy, sSqlCondition: conditonValues, isTreeList: "1", }, flag: true, clearSelectData: true, isWait: true }); }; render() { const { pageLoading } = this.props; return (
this.treeDiv = ref} style={{ height: '100%' }}> { this.treeRef = ref; }} onExpandTreeAll={this.handleExpandTreeAll} />
); } } const CommonListComponent = Form.create({ mapPropsToFields(props) { const { masterData, masterConfig } = props; const obj = commonFunc.mapPropsToFields(masterData, Form, masterConfig); return obj; }, })((props) => { const { form, onReturnForm, slavePagination, slaveConfig, slaveColumn, isSmall, iHeight, logVisible, sModelsType, slaveData, slaveFilterCondition, onTreeExpandChange, flowHistroyId, flowHistroyVisible, app, expandAll, leftTreeNodeVisible, leftTreeNodeTitle, leftTreeNodeName, } = props; const { userinfo, token } = app; // isSmall将分页变小,以及去掉跳转页面和总条数记录 /* 回带表单 */ if (commonUtils.isNotEmptyObject(slavePagination)) { // if (isSmall) { // slavePagination.showTotal = null; // } } onReturnForm(form); // const pagination = { // pageSize: commonUtils.isNotEmptyNumber(props.iPageSize) && props.iPageSize !== 0 ? props.iPageSize : commonConfig.pageSize, // ...slavePagination, // size: isSmall ? 'small' : 'large', // pageSizeOptions: commonConfig.pageSizeOptions, // showSizeChanger: !isSmall, // showQuickJumper: !isSmall, // }; const pagination = false; let slaveTreeData = []; /* 包含子节点的通用列表 */ if (commonUtils.isNotEmptyObject(sModelsType) && sModelsType.includes('childrenList') && commonUtils.isNotEmptyArr(slaveData)) { const addSate = props.onGetSlaveTreeData(slaveData); if (commonUtils.isNotEmptyObject(addSate)) { // eslint-disable-next-line prefer-destructuring slaveTreeData = addSate.slaveTreeData; } } else { slaveTreeData = slaveData; } const tableProps = { ...commonBusiness.getTableTypes('slave', props), data: slaveTreeData, tableProps: { rowKey: 'sSlaveId', pagination, onChange: props.onTitleChange }, onSaveState: props.onSaveState, clearArray: props.clearArray, readOnly: true, isSmall, sGroupByList: props.sGroupByList, customConfig: props.customConfig, }; /* 有树形的不用虚拟列表 */ if (commonUtils.isNotEmptyObject(sModelsType) && sModelsType.includes('childrenList') && commonUtils.isNotEmptyArr(slaveTreeData)) { tableProps.noVlist = true; } const masterSum = commonUtils.isNotEmptyObject(slaveConfig) ? slaveConfig.gdsconfigformslave.filter(item => item.bSum && item.sName !== '') : []; const masterTitleGroup = commonUtils.isNotEmptyObject(slaveColumn) ? slaveColumn.filter(item => commonUtils.isNotEmptyObject(item.title) && item.title.indexOf('-') > -1) : []; const hasColumnGroup = masterTitleGroup.length; if (masterSum.length > 0) { NoTotalData = hasColumnGroup > 0 ? 'TitleGroup' : 'NoTitleGroup'; } else { NoTotalData = hasColumnGroup > 0 ? 'NoTotalData TitleGroup' : 'NoTotalData NoTitleGroup'; } // const mProps = { ...commonBusiness.createMemoProps('master', props)}; const filterTreeData = (treeData) => { if (commonUtils.isNotEmptyArr(treeData)) { if (commonUtils.isNotEmptyArr(treeData[0].children)) { return treeData[0].children; } return treeData; } else { return []; } } // const name = 'filterTree'; const treeProps = { ...commonBusiness.getTreeTypes('tree', props), isSearch: false, checkable: false, disabled: false, checkedAll: false, unChecked: false, showLine: true, treeData: filterTreeData(props.treeData), // [`${name}Column`]: props[`${name}Column`], // [`${name}Config`]: props[`${name}Config`], // [`${name}Data`]: filterTreeData(props[`${name}Data`]), getFloatNum: props.getFloatNum, getSqlDropDownData: props.getSqlDropDownData, getSqlCondition: props.getSqlCondition, handleSqlDropDownNewRecord: props.handleSqlDropDownNewRecord, getDateFormat: props.getDateFormat, onDoubleClick: props.onDoubleClick, onSelect: props.onSelectTree, expandedKeys: props.expandedKeys, onSaveState: props.onSaveState, onExpandTree: () => {}, }; const logProps = { app: { ...props.app, currentPane: { ...props.app.currentPane, formRoute: '/indexPage/commonList', route: '/indexPage/commonList', name: 'logView', config: props.logConfig, select: props.onSelectModal.bind(this, 'logVisible'), selectCancel: props.onCancelModal.bind(this, 'logVisible'), sModelsType: 'modal/logView', }, }, token: props.app.token, slaveColumn: props.logColumn, /* 表头 */ slaveConfig: props.logConfig, slaveData: props.logData, dispatch: props.dispatch, content: props.content, id: new Date().getTime().toString(), pageLoading: false, }; const refreshSlaveTable = () => { props.handleGetDataSet({ name: 'slave', configData: props.slaveConfig, condition: { pageNum: 1, pageSize: slavePagination.pageSize, bFilter: slaveFilterCondition, }, flag: true, clearSelectData: true, }); }; const workOrderSystemAddProps = { ...props, onAddWorkOrderSuccess: () => { props.onSaveState({ workOrderSystemAddModalVisible: false }); refreshSlaveTable(); }, }; let workOrderSystemDetailTitle = ''; if (commonUtils.isNotEmptyObject(props.slaveCurrentData)) { const { sTitle, sModuleName, tCreateDate } = props.slaveCurrentData; /* eslint-disable */ workOrderSystemDetailTitle = ( <> {sTitle} {`菜单名称: ${sModuleName} ${Array(10) .fill('\xa0') .join('')} 创建时间: ${tCreateDate.split(' ')[0]}`} ); /* eslint-enable */ } let customWidth = 224; if (localStorage.getItem(`customProductionScheduleTreeWidth_${props.sModelsId}`) !== '') { customWidth = localStorage.getItem(`customProductionScheduleTreeWidth_${props.sModelsId}`); } const workOrderSystemDetailProps = { ...props, sId: commonUtils.isNotEmptyObject(props.slaveCurrentData) ? props.slaveCurrentData.sId : '', refreshSlaveTable, }; let addressStr = `${location.protocol}//${location.host}`; if (sModelsType && sModelsType.includes('http')) { addressStr = location.host; } const sFlowUrl = `${commonConfig.server_host}process/historyListerp/{sBillId}/{sBrandsId}/{sSubsidiaryId}/{sUserName}/{token}`; const flowHistrory = sFlowUrl !== undefined ? sFlowUrl.replace('{sBrandsId}', userinfo.sBrandsId).replace('{sSubsidiaryId}', userinfo.sSubsidiaryId).replace('{sUserName}', userinfo.sUserName).replace('{sUserId}', userinfo.sId) .replace('{token}', token) .replace('{ipAddress}', addressStr) .replace('{sBillId}', flowHistroyId) : ''; const handleResizeLayout = (e) => { const originX = e.pageX; const originWidth = props.treeDiv.getElementsByClassName('listTree-sider')[0].offsetWidth; let offset = 0; window.onmousemove = function (e2) { offset = e2.pageX - originX; props.treeDiv.getElementsByClassName('listTree-sider')[0].style.width = `${originWidth + offset}px`; props.treeDiv.getElementsByClassName('listTree-content')[0].style.width = `calc(100% - ${originWidth + offset + 10}px)`; }; window.onmouseup = function () { window.onmousemove = null; window.onmousemove = null; localStorage.setItem(`customProductionScheduleTreeWidth_${props.sModelsId}`, originWidth + offset + 10); }; }; return (
{!commonUtils.isEmpty(props.routing) ? '' :
}
操作      {/* 新增节点 编辑节点 删除节点 */} { props.onExpandTreeAll(); }} />
{ props.onSaveTreeRef(ref); }}>
{/* {!commonUtils.isEmpty(props.routing) ? '' : } */} {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */} {true ? '' : } {true ? '' :
{/* eslint-disable-next-line jsx-a11y/anchor-is-valid */} close
} { logVisible ? : '' } { props.bDataAuditProgress ?
: '' } { commonUtils.isNotEmptyObject(slaveConfig) && slaveConfig.sTbName === 'sys_workorder' && props.bMin && } { props.workOrderSystemAddModalVisible && 新增 /* eslint-enable */ } style={{ top: 10 }} className={styles.workOrderSystemModal} visible={props.workOrderSystemAddModalVisible && !props.bMin} onCancel={props.onCancelModal.bind(this, 'workOrderSystemAddModalVisible')} onOk={props.onSelectModal.bind(this, 'workOrderSystemAddModalVisible')} footer={null} > } { props.workOrderSystemDetailModalVisible && } { flowHistroyVisible ? {/* eslint-disable-next-line jsx-a11y/iframe-has-title */}