/* eslint-disable prefer-destructuring */

import React, { Component } from 'react';
import { UploadOutlined } from '@ant-design/icons';
import { Form } from '@ant-design/compatible';
// import '@ant-design/compatible/assets/index.css';
import { Row, Col, Checkbox, Layout, Spin, Tabs, Avatar, Button, message, Table, Input, Upload } from 'antd-v4';
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 CommonView from '@/components/Common/CommonView';
import CommonBase from '@/components/Common/CommonBase';/* 获取配置及数据 */
import * as commonBusiness from '@/components/Common/commonBusiness';/* 单据业务功能 */
import commonConfig from '@/utils/config';
import * as commonUtils from '@/utils/utils';/* 通用方法 */
import * as commonServices from '@/services/services';/*   服务类   */

import AddIcon from '@/assets/add.svg';
import DisableAddIcon from '@/assets/disableadd.svg';
import CopyIcon from '@/assets/copy.svg';
import CopyAllIcon from '@/assets/copyall.svg';
import DisableCopyIcon from '@/assets/disablecopy.svg';
import DisableCopyAllIcon from '@/assets/disablecopyall.svg';
import DelIcon from '@/assets/delete.svg';
import DisableDelIcon from '@/assets/disabledelete.svg';/* 获取配置及数据 */
import MaterialRemarkIcon from '@/assets/materialremark.svg';
import DisMaRemarklIcon from '@/assets/disablematerialremark.svg';
import ProcessIcon from '@/assets/process.svg';
import DisableProcessIcon from '@/assets/disableprocess.svg';
import MateriallIcon from '@/assets/material.svg';
import DisableMateriallIcon from '@/assets/disablematerial.svg';
import AntdDraggableModal from '@/components/Common/AntdDraggableModal';
import CommonListSelect from '@/components/Common/CommonListSelect';
import CommonListSelectTree from '@/components/Common/CommonListSelectTree';

import StaticEditTree from '@/components/Common/Tree/StaticTree';
import AddChildIcon from '@/assets/addChild.svg';
import DisableAddChildIcon from '@/assets/disableaddChild.svg';
import ContextMenuModal from '@/components/Common/ContextMenuModal';
import CommonDeliverSales from '@/components/Common/CommonBillDeliverEvent';

/* 继承销售模块业务功能 */
const width = '18px';
const height = '18px';
const setAdd = {
  title: '增加',
  width: { width },
  height: { height },
  img: <img src={AddIcon} alt="添加" width={width} height={height} />,
  disableimg: <img src={DisableAddIcon} alt="删除" width={width} height={height} />,
};
const setAddChild = {
  title: '增加',
  width: { width },
  height: { height },
  img: <img src={AddChildIcon} alt="添加" width={width} height={height} />,
  disableimg: <img src={DisableAddChildIcon} alt="添加" width={width} height={height} />,
};
const setCopy = {
  title: '复制',
  width: { width },
  height: { height },
  img: <img src={CopyIcon} alt="复制" width="20px" height="20px" />,
  disableimg: <img src={DisableCopyIcon} alt="复制" width="20px" height="20px" />,
};
const setCopyAll = {
  title: '复制部件',
  width: { width },
  height: { height },
  img: <img src={CopyAllIcon} alt="复制部件" width="16px" height="16px" />,
  disableimg: <img src={DisableCopyAllIcon} alt="复制部件" width="16px" height="16px" />,
};
const setDelete = {
  title: '删除',
  width: { width },
  height: { height },
  img: <img src={DelIcon} alt="删除" width={width} height={height} />,
  disableimg: <img src={DisableDelIcon} alt="删除" width={width} height={height} />,
};
const setProcess = {
  title: '工序',
  width: { width },
  height: { height },
  img: <img src={ProcessIcon} alt="选择工序" width="16px" height="16px" />,
  disableimg: <img src={DisableProcessIcon} alt="删除" width="16px" height="16px" />,
};
const setMaterial = {
  title: '材料',
  width: { width },
  height: { height },
  img: <img src={MateriallIcon} alt="选择材料" width="22px" height="22px" />,
  disableimg: <img src={DisableMateriallIcon} alt="选择材料" width="22px" height="22px" />,
};


const { Header, Content, Sider } = Layout;
const { TabPane } = Tabs;
// const { confirm } = Modal;
class CommonBillDeliver extends Component {
  constructor(props) {
    super(props);
    this.state = {
    };
  }
  /**   行选择   */
  onRowClick = (name, record) => {
    if (name === 'control') {
      this.props.onTableSelectRowChange(name, [record.sId]);
    }
  };

  onChange = (checkedValues) => {
    this.props.onSaveState({
      dataPersonArray: checkedValues,
    });
  };
  getMenuStatus = (menu) => {
    if (menu.sControlName === 'BtnImport') {
      return !this.props.enabled;
    }
  };
  /**   上传后执行函数    */
  handleUploadChangeFile = async (info) => {
    const { file } = info;
    const {
      masterData, sModelsId, app, token, sModelsType, slaveConfig, slaveData,
    } = this.props;
    if (file.response) {
      if (file.response.code === 1) {
        /*   数据查询成功   */
        const errorInfo = file.response.dataset.rows[0].nocanbeInsert;
        if (commonUtils.isNotEmptyObject(errorInfo)) {
          message.error(errorInfo[0].sReason);
          return;
        }
        /* 把之前存放的数据删除 */
        const slaveDelData = [];
        if (commonUtils.isNotEmptyArr(slaveData)) {
          slaveData.forEach((item) => {
            if (commonUtils.isEmptyObject(item.handleType)) {
              item.handleType = 'del';
              slaveDelData.push(item);
            }
          });
        }
        const returnData = file.response.dataset.rows[0].canbeInsert;
        let iCount = 0;
        let productIdDropDown;
        if (productIdDropDown === undefined && commonUtils.isNotEmptyArr(returnData)) { /* 无论导入多少条数据 都只调用1次接口,获取产品下拉数据集 */
          const iIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === 'sProductName');
          if (iIndex > -1) {
            const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', slaveConfig.gdsconfigformslave[iIndex], returnData[0]);
            productIdDropDown = sqlDropDownData.dropDownData;
          }
        }
        await returnData.forEach(async (tableDataRow) => {
          tableDataRow.handleType = 'add';
          tableDataRow.sId = commonUtils.createSid();
          tableDataRow.sParentId = masterData.sId;
          tableDataRow.key = tableDataRow.sId;
          /* 若导入模板没有序号，则序号从1自增 */
          if (commonUtils.isEmptyObject(tableDataRow.iOrder)) {
            iCount += 1;
            tableDataRow.iOrder = iCount;
          }
          for (const child of Object.keys(tableDataRow)) {
            const index = child.indexOf('_sRealValue_');
            if (index > -1) {
              const property = child.substring(0, child.length - 12);
              tableDataRow[property] = tableDataRow[child];
            }
          }
          if (productIdDropDown !== undefined) {
            const iProductIdIndex = productIdDropDown.findIndex(item => item.sId === tableDataRow.sProductId);
            if (iProductIdIndex === -1 && commonUtils.isNotEmptyObject(sModelsType) && sModelsType.includes('sales/salesOrder')) { /* 只有销售模块生成新产品 盘点 ，期间 不生成新的产品 */
              tableDataRow.sProductId = tableDataRow.sProductName;
              tableDataRow.sProductInfo = JSON.stringify({
                sProductId: tableDataRow.sProductName,
                sProductName: tableDataRow.sProductName,
                sProductStyle: tableDataRow.sProductStyle,
                sProductUnit: tableDataRow.sProductUnit,
                sProductNo: tableDataRow.sProductNo,
                sCustomerProductNo: tableDataRow.sCustomerProductNo,
                sProductClassifyId: tableDataRow.sProductClassifyId,
                sProductClassifyName: tableDataRow.sProductClassifyName,
              });
            }
          }
          if (!tableDataRow.dNProductPrice) {
            tableDataRow.dNProductPrice = tableDataRow.dProductForeignPrice;
          }
          const models = sModelsType.includes('sales/') || sModelsType.includes('manufacture/') || sModelsType.includes('quotation/') || sModelsType.includes('productStock/') ? 'Product' : 'Materials';
          if (sModelsType.includes('purchase/') || sModelsType.includes('quotation/') || sModelsType.includes('manufacture/') || sModelsType.includes('materialsStock/') || sModelsType.includes('outside/')) {
            tableDataRow = await this.props.onMaterialsChange(tableDataRow, sModelsId, masterData, {}, 'dAuxiliaryQty', app, token, models);
            tableDataRow = commonBusiness.getCalculateAllMoney(app, models, 'dAuxiliaryQty', masterData, tableDataRow);
          } else {
            tableDataRow = commonBusiness.getCalculateAllMoney(app, models, 'dProductQty', masterData, tableDataRow);
          }
        });
        this.props.onSaveState({ slaveData: returnData, slaveDelData });
      } else { /*   失败s   */
        this.props.getServiceError(file.response);
      }
    }
  };
  handleUploadPropsSales = () => {
    const { masterData, sModelsType } = this.props;
    if (commonUtils.isNotEmptyObject(masterData)) {
      const sCustomerId = commonUtils.isEmptyStr(masterData.sCustomerId) ? undefined : masterData.sCustomerId;
      let existCustomerId = false;
      if (sModelsType.includes('sales/') && commonUtils.isNotEmptyStr(sCustomerId)) {
        existCustomerId = true;
      } else if (!sModelsType.includes('sales/')) {
        existCustomerId = true;
      }
      return {
        disabled: !this.props.enabled || !existCustomerId, /*   是否可用   */
        style: { display: commonUtils.convertBooleanToDisplayBlock(true) }, /*   是否显示   */
      };
    }
  };

  /**   上传后执行函数    */
  handleBeforeUpload = () => {
    // const isLt10M = file.size / 1024 / 1024 < 10;
    // if (!isLt10M) {
    //   message.error(commonFunc.showMessage(this.props.app.commonConst, 'picMax'));/* 图片大小需小于10MB! */
    // }
  };
  /**   图片上传后执行函数    */
  handleUploadChange = (info, name) => {
    const { file } = info;
    if (file.response && file.response.code === 1) {
      const sPicturePath = file.response.dataset.rows[0].savePathStr;
      const uploadInfo = {
        sPicturePath,
        sFileName: file.name,
      };
      const { [`${name}Column`]: tableColumn, masterData, [`${name}Data`]: tableData } = this.props;
      if (commonUtils.isNotEmptyArr(tableData) && commonUtils.isEmpty(tableData[tableData.length - 1].sPicturePath)) {
        tableData[tableData.length - 1].sPicturePath = uploadInfo.sPicturePath;
        tableData[tableData.length - 1] = { ...tableData[tableData.length - 1], sPicturePath: uploadInfo.sPicturePath, sFileName: uploadInfo.sFileName };
      } else {
        const tableDataRow = this.props.onDataRowAdd(name, true);
        tableColumn.forEach((slaveChild) => {
          const ckey = slaveChild.dataIndex;
          if (ckey === 'sProductNo' || ckey === 'sProductName') {
            tableDataRow[ckey] = masterData[ckey] !== undefined ? masterData[ckey] : '';
          } else if (ckey === 'iOrder') {
            tableDataRow[ckey] = '';
          } else if (file.response && file.response.code === 1) {
            if (uploadInfo[ckey] !== undefined) {
              tableDataRow[ckey] = uploadInfo[ckey];
            }
          }
        });
        tableData.push(tableDataRow);
      }
      this.props.onSaveState({ [`${name}Data`]: tableData, enabled: true });
    } else if (file.response && file.response.code === -1) {
      message.error(file.response.msg);
    }
  };
  handleOk = async (flag, tmpCheck, isWait) => {
    const {
      sModelsId, masterData, app, checkConditions, sCheckModelId, checkPersonData, currentId, masterConfig, slaveConfig, checkConfig, sCheckRemark,
    } = this.props;
    const { currentPane } = app;
    const bCkxTmpCheck = app.systemData.filter(item => item.sName === 'CkxTmpCheck')[0].sValue;
    if (bCkxTmpCheck === '1') {
      const returnData = await this.props.onDataAudit(flag, tmpCheck, isWait);
      if (returnData.code === 1) {
        if (returnData.dataset.rows[0].dataSet.outData[0].sCode === 1) {
          this.props.onGetData(masterConfig, slaveConfig, checkConfig);
          message.success(returnData.msg);
        } else {
          message.error(returnData.dataset.rows[0].dataSet.outData[0].sReturn);
        }
      } else { /*   失败   */
        this.props.getServiceError(returnData);
      }
    } else {
      const dataPersonArray = commonUtils.isEmptyObject(this.props.dataPersonArray) ? [] : this.props.dataPersonArray;
      if (commonUtils.isEmptyObject(dataPersonArray)) {
        checkPersonData.forEach((item) => {
          dataPersonArray.push(item.sUserId);
        });
      }
      const dataPersonString = dataPersonArray.join(',');
      const url = `${commonConfig.server_host}business/getProData?sModelsId=${sModelsId}`;
      const value = {
        sProName: 'Sp_System_AutoSendCheckMsg',
        paramsMap: {
          sFormGuid: sModelsId,
          sBillKey: currentPane.sProcName,
          sTbName: masterConfig.sTbName,
          sGuid: masterData.sId,
          sBillNo: masterData.sBillNo,
          sCheckCondition: checkConditions,
          sMemo: sCheckRemark,
          sCheckModelGuid: sCheckModelId,
          sCheckPerson: dataPersonString,
        },
      };

      const returnData = (await commonServices.postValueService(app.token, value, url)).data;
      if (returnData.code === 1) {
        const noCheckMsg = commonFunc.showMessage(app.commonConst, 'NoCheckMsg'); /* 您有消息待审核 */
        if (returnData.dataset.rows[0].dataSet.outData[0].sCode === 1) {
          this.props.handleSendSocketMessage('examine', 'showImg', currentId, dataPersonString, noCheckMsg, null);
          const urlCanCheckBill = `${commonConfig.server_host}checkModel/getCanCheckBill?sModelsId=${sModelsId}`;
          const valueCanCheckBill = { sCheckModelId, checkPersonData, sBillId: masterData.sId };
          const returnCanCheckBill = (await commonServices.postValueService(app.token, valueCanCheckBill, urlCanCheckBill)).data;
          if (returnCanCheckBill.code === 1) {
            if (returnCanCheckBill.dataset.rows[0].iCount === 1) {
              this.props.onDataAudit(1, 1);
              this.props.onSaveState({
                visible: false,
              });
              return;
            }
          } else { /*   失败   */
            this.props.getServiceError(returnCanCheckBill);
          }
          this.props.handleSendSocketMessage('reflush', 'showImg', currentId, dataPersonString, noCheckMsg, null);
          message.success(returnData.msg);
        } else {
          message.error(returnData.dataset.rows[0].dataSet.outData[0].sReturn);
        }
      } else { /*   失败   */
        this.props.getServiceError(returnData);
      }
    }
    this.props.onSaveState({
      visible: false,
    });
  };

  handleCancel = () => {
    this.props.onSaveState({
      visible: false,
    });
  };
  handleTableModal = async () => {
    const {
      sModelsId, controlData, masterData, slaveData, controlConfig, slaveSelectedRowKeys, enabled, slaveConfig, sModelsType,
    } = this.props;
    const addState = {};
    let treeState = {};
    if (this.props.sModelsType.includes('sales/salesOrder')) {
      const iSlaveIndex = slaveData.findIndex(item => item.sId === slaveSelectedRowKeys[0]);
      const iIndex = controlData.findIndex(item => item.sSlaveId === slaveSelectedRowKeys[0]);
      if (iIndex === -1 && iSlaveIndex > -1 && enabled) {
        const allTableData = {};
        allTableData.master = masterData;
        allTableData.slaveData = slaveData;
        let dropdownProductClassifyId;
        const iIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === 'sProductClassifyId');
        if (iIndex > -1) {
          const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', slaveConfig.gdsconfigformslave[iIndex]);
          dropdownProductClassifyId = sqlDropDownData.dropDownData;
        }
        if (commonUtils.isEmptyArr(dropdownProductClassifyId)) {
          const iIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === 'sProductClassifyName');
          if (iIndex > -1) {
            const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', slaveConfig.gdsconfigformslave[iIndex]);
            dropdownProductClassifyId = sqlDropDownData.dropDownData;
          }
        }
        if (commonUtils.isNotEmptyArr(dropdownProductClassifyId)) {
          const iProductClassifyIdIndex = dropdownProductClassifyId.findIndex(item => item.sId === slaveData[iSlaveIndex].sProductClassifyId);
          if (commonUtils.isNotEmptyObject(dropdownProductClassifyId[iProductClassifyIdIndex])) {
            const sAllPartsName = dropdownProductClassifyId[iProductClassifyIdIndex].sAllPartsName;
            if (commonUtils.isNotEmptyStr(sAllPartsName)) {
              const sAssignFieldObj = sAllPartsName.split(',');
              for (const child of sAssignFieldObj) {
                const tableDataRowAdd = commonFunc.getDefaultData(controlConfig, allTableData);
                tableDataRowAdd.handleType = 'add';
                tableDataRowAdd.sId = commonUtils.createSid();
                tableDataRowAdd.sParentId = masterData && masterData.sId ? masterData.sId : null;
                tableDataRowAdd.sSlaveId = slaveSelectedRowKeys[0];
                tableDataRowAdd.key = tableDataRowAdd.sId;
                tableDataRowAdd.bDefault = false;
                tableDataRowAdd.iOrder = 0;
                tableDataRowAdd.sPartsName = child;
                tableDataRowAdd.dPartsQty = commonUtils.isNull(slaveData[iSlaveIndex].dProductQty, 0) + commonUtils.isNull(slaveData[iSlaveIndex].dGiveQty, 0) + commonUtils.isNull(slaveData[iSlaveIndex].dStockupQty, 0);
                tableDataRowAdd.sAllId = tableDataRowAdd.sId;
                tableDataRowAdd.sControlParentId = '';
                controlData.push(tableDataRowAdd);
              }
            }
          }
        }
        addState.controlData = controlData;
      }

      if (controlData !== undefined) {
        const iControlIndex = controlData.findIndex(item => item.sSlaveId === slaveSelectedRowKeys[0]);
        if (iControlIndex > -1) {
          addState.controlSelectedRowKeys = [controlData[iControlIndex].sId];
        }
      }
      if (sModelsType === 'sales/salesOrderPack') {
        const sSlaveId = slaveSelectedRowKeys[0];
        if (commonUtils.isNotEmptyObject(sSlaveId)) {
          treeState = this.props.onGetControlTreeData(controlData, true, sSlaveId);
        }
      }
    }

    this.props.onSaveState({
      visibleModal: true,
      ...addState,
      ...treeState,
    });
  };
  handleTableChooseProcess = () => {
    const { processConfig } = this.props;
    const iIndex = processConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'BtnChooseProcess');

    if (iIndex > -1) {
      this.props.onBtnChoose('process', 'BtnChooseProcess', processConfig.gdsconfigformslave[iIndex]);
    }
  };
  handleCancelModal = (modelVisible) => {
    this.props.onSaveState({
      [modelVisible]: false,
    });
  };
  handleOkModal = async () => {
    const {
      controlData, materialsData, processData, slaveData, slaveSelectedRowKeys,
    } = this.props;
    const ctData = controlData.filter(item => item.handleType !== 'del' && item.sSlaveId === slaveSelectedRowKeys[0]);
    const mtData = materialsData.filter(item => item.handleType !== 'del' && item.sSlaveId === slaveSelectedRowKeys[0]);
    const pData = processData.filter(item => item.handleType !== 'del' && item.sSlaveId === slaveSelectedRowKeys[0] && item.sType !== '3');
    const p3Data = processData.filter(item => item.handleType !== 'del' && item.sSlaveId === slaveSelectedRowKeys[0] && item.sType === '3'); /* 成品工序 */
    if (commonUtils.isNotEmptyArr(ctData)) {
      let mDetail = '';
      let pDetail = '';
      const slaveIndex = slaveData.findIndex(item => item.sId === slaveSelectedRowKeys[0]);
      await ctData.forEach((controlItem, n) => {
        if (commonUtils.isNotEmptyObject(controlItem.sPartsName)) {
          const qz = n === 0 ? '' : ' ';
          if (commonUtils.isNotEmptyObject(controlItem.sPartsName)) {
            const yDetail = `${mDetail}${qz}#${controlItem.sPartsName}:`;
            const gDetail = `${pDetail}${qz}#${controlItem.sPartsName}:`;
            let imDetail = '';
            let ipDetail = '';
            const materials = mtData.filter(materialsItem => (materialsItem.sControlId === controlItem.sId));
            // let materialsIdDropDown;
            // const materialsIndex = materialsConfig.gdsconfigformslave.findIndex(item => item.sName === 'sMaterialsName');
            // if (materialsIndex > -1) {
            //   const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'materials', materialsConfig.gdsconfigformslave[materialsIndex]);
            //   materialsIdDropDown = sqlDropDownData.dropDownData;
            // }
            materials.forEach((mItem, i) => {
              const fh = i === 0 ? '' : ',';
              imDetail = `${imDetail}${fh} ${mItem.sMaterialsName}`;
            });
            // processPropsType
            const process = pData.filter(processItem => (processItem.sControlId === controlItem.sId));
            // let processIdDropDown;
            // const processIndex = processConfig.gdsconfigformslave.findIndex(item => item.sName === 'sProcessName');
            // if (processIndex > -1) {
            //   const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'process', processConfig.gdsconfigformslave[processIndex]);
            //   processIdDropDown = sqlDropDownData.dropDownData;
            // }
            // const processIdDropDown = commonUtils.getStoreDropDownData(sModelsId, 'process', 'sProcessName');
            process.forEach((pItem, i) => {
              const fh = i === 0 ? '' : ',';
              ipDetail = `${ipDetail}${fh} ${pItem.sProcessName}`;
            });
            if (commonUtils.isNotEmptyObject(imDetail)) {
              mDetail = `${yDetail}${imDetail}`;
            }
            if (commonUtils.isNotEmptyObject(ipDetail)) {
              pDetail = `${gDetail}${ipDetail}`;
            }
          }
        }
      });
      /* 成品工序 */
      let ip3Detail = '';
      if (commonUtils.isNotEmptyArr(p3Data)) {
        p3Data.forEach((pItem, i) => {
          const fh = i === 0 ? '' : ',';
          ip3Detail = `${ip3Detail}${fh} ${pItem.sProcessName}`;
        });
      }
      if (commonUtils.isNotEmptyObject(ip3Detail)) {
        if (commonUtils.isNotEmptyObject(pDetail)) {
          pDetail = `${pDetail},${ip3Detail}`;
        } else {
          pDetail = ip3Detail;
        }
      }
      slaveData[slaveIndex].sMaterialsMemo = mDetail;
      slaveData[slaveIndex].sProcessMemo = pDetail;
      slaveData[slaveIndex].handleType = commonUtils.isEmpty(slaveData[slaveIndex].handleType) ? 'update' : slaveData[slaveIndex].handleType;
    } else if (commonUtils.isNotEmptyArr(controlData) && commonUtils.isEmptyArr(ctData)) {
      const sSlaveId = controlData[0].sSlaveId;
      const slaveIndex = slaveData.findIndex(item => item.sId === sSlaveId);
      slaveData[slaveIndex].sMaterialsMemo = '';
      slaveData[slaveIndex].sProcessMemo = '';
      slaveData[slaveIndex].handleType = commonUtils.isEmpty(slaveData[slaveIndex].handleType) ? 'update' : slaveData[slaveIndex].handleType;
    }
    this.props.onSaveState({
      visibleModal: false,
      controlData,
      materialsData,
      processData,
      slaveData,
    });
  };
  /** 控制选择控制表时，显示部件工序与成品工序 */
  handleFilterSlaveData = (name, dataIndex, value, record) => {
    return (commonUtils.isNotEmptyStr(record.sSlaveId) && record.sSlaveId.toString().toLowerCase().includes(value.toLowerCase()));
  };
  /** 控制选择控制表时，显示部件工序与成品工序 */
  handleFilterData = (name, dataIndex, value, record) => {
    const { slaveSelectedRowKeys } = this.props;
    if (name === 'process') {
      return (commonUtils.isNotEmptyStr(record.sType) && record.sType === '3' &&
        commonUtils.isNotEmptyStr(record.sSlaveId) && record.sSlaveId.toString().toLowerCase().includes(slaveSelectedRowKeys.toString().toLowerCase())) ||
        (commonUtils.isNotEmptyStr(record.sControlId) && record.sControlId.toString().toLowerCase().includes(value.toLowerCase()) &&
          commonUtils.isNotEmptyStr(record.sSlaveId) && record.sSlaveId.toString().toLowerCase().includes(slaveSelectedRowKeys.toString().toLowerCase()));
    } else if (name === 'slaveChild') {
      return commonUtils.isNotEmptyStr(record.sDelivergooodSlaveId) && record.sDelivergooodSlaveId.toString().toLowerCase().includes(slaveSelectedRowKeys.toString().toLowerCase());
    } else {
      return (commonUtils.isNotEmptyStr(record.sType) && record.sType === '2' &&
        commonUtils.isNotEmptyStr(record.sSlaveId) && record.sSlaveId.toString().toLowerCase().includes(slaveSelectedRowKeys.toString().toLowerCase())) ||
        (commonUtils.isNotEmptyStr(record.sControlId) && record.sControlId.toString().toLowerCase().includes(value.toLowerCase()) &&
          commonUtils.isNotEmptyStr(record.sSlaveId) && record.sSlaveId.toString().toLowerCase().includes(slaveSelectedRowKeys.toString().toLowerCase()));
    }
    // (commonUtils.isNotEmptyStr(record.sControlId) && record.sControlId.toString().toLowerCase().includes(value.toLowerCase()));
  };
  /* 控制表过滤材料表 工序表数据 */
  handleGetFilterData = (name) => {
    const { [`${name}Data`]: data, controlSelectedRowKeys, slaveSelectedRowKeys } = this.props;
    if (data !== undefined) {
      const newArr = data.filter((item) => {
        if (name === 'control') {
          return (commonUtils.isNotEmptyStr(item.sSlaveId) && item.sSlaveId.toString().toLowerCase().includes(slaveSelectedRowKeys.toString()));
        } else {
          return (commonUtils.isNotEmptyStr(item.sControlId) && item.sControlId.toString().toLowerCase().includes(controlSelectedRowKeys.toString()) &&
            commonUtils.isNotEmptyStr(item.sSlaveId) && item.sSlaveId.toString().toLowerCase().includes(slaveSelectedRowKeys.toString()));
        }
      });
      return newArr.length;
    }
  };
  /* 包装工单过滤行 */ /** 控制选择控制表时，显示部件工序与成品工序 */
  handleFilterDataPack = (name, dataIndex, value, record) => {
    if (name === 'process') {
      return (commonUtils.isNotEmptyStr(record.sType) && record.sType === '3') ||
        (commonUtils.isNotEmptyStr(record.sControlId) && record.sControlId.toString().toLowerCase().includes(value.toLowerCase()));
    } else {
      return (commonUtils.isNotEmptyStr(record.sType) && record.sType === '2') ||
        (commonUtils.isNotEmptyStr(record.sControlId) && record.sControlId.toString().toLowerCase().includes(value.toLowerCase()));
    }
  };
  /* 控制表过滤材料表 工序表数据 */
  handleGetFilterDataPack = (name) => {
    const { [`${name}Data`]: data, controlSelectedRowKeys } = this.props;
    if (data !== undefined && commonUtils.isNotEmptyArr(controlSelectedRowKeys)) {
      const newArr = data.filter((item) => {
        return (commonUtils.isNotEmptyStr(item.sControlId) && item.sControlId.toString().toLowerCase().includes(controlSelectedRowKeys.toString()));
      });
      return newArr.length;
    }
  };
  /**   添加表格空行   */
  handleTableAdd = async (name, flag, bchild) => {
    /*   外置处理业务   */
    const {
      sModelsId, sModelsType, gdsformconst, slaveData, controlData, controlSelectedRowKeys, [`${name}Data`]: tableData, slaveSelectedRowKeys, slaveConfig,
    } = this.props;
    let tableDataRow = {};
    if (name === 'control') {
      const {
        [`${name}SelectedRowKeys`]: treeSelectedKeys,
      } = this.props;
      if ((bchild === 'childNode' || bchild === 'sameNode') && (commonUtils.isEmptyArr(treeSelectedKeys) || commonUtils.isEmptyArr(controlSelectedRowKeys))) {
        message.warn('请选择部件！'); // 请选择部件
        return;
      }
      tableDataRow = this.props.onDataRowAdd(name, true);
      if (commonUtils.isEmptyObject(tableDataRow)) {
        return;
      }
      let dPartsQty = 0;
      if (commonUtils.isNotEmptyArr(slaveData)) {
        slaveData.forEach((item) => {
          dPartsQty += commonUtils.isNull(item.dProductQty, 0) + commonUtils.isNull(item.dGiveQty, 0) + commonUtils.isNull(item.dStockupQty, 0);
        });
        let productIdDropDown;
        const slaveIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sName === 'sProductName');
        if (slaveIndex > -1) {
          const sqlDropDownData = await this.props.getSqlDropDownData(sModelsId, 'slave', slaveConfig.gdsconfigformslave[slaveIndex]);
          productIdDropDown = sqlDropDownData.dropDownData;
        }
        if (productIdDropDown) {
          const iProductIdIndex = productIdDropDown.findIndex(item => item.sId === slaveData[0].sProductId);
          if (iProductIdIndex > -1) {
            tableDataRow.sPartsName = productIdDropDown[iProductIdIndex].sProductName;
          }
        }
      }
      const iSlaveIndex = slaveData.findIndex(item => item.sId === slaveSelectedRowKeys[0]);
      if (iSlaveIndex > -1) {
        if (sModelsType.includes('sales/salesOrder')) {
          if (!commonUtils.isEmpty(slaveData[iSlaveIndex].dProductQty)) {
            tableDataRow.dPartsQty = commonUtils.isNull(slaveData[iSlaveIndex].dProductQty, 0) + commonUtils.isNull(slaveData[iSlaveIndex].dGiveQty, 0);
          }
        } else {
          tableDataRow.dPartsQty = dPartsQty;
        }
        tableDataRow.sSlaveId = slaveData[iSlaveIndex].sId;
      }
      /* 树形部件节点增加同级部件、增加子级部件 */
      if (sModelsType === 'sales/salesOrderPack') {
        if (bchild === 'sameNode') { /* 添加同级 */
          const iIndex = controlData.findIndex(item => item.sId === treeSelectedKeys[0]);
          /* 找到同级子元素的sControlParentId */
          if (iIndex > -1) {
            tableDataRow.sControlParentId = controlData[iIndex].sControlParentId;
            /* 找到同级父级sAllId */
            const pId = controlData[iIndex].sControlParentId;
            const sControlParentId = controlData.findIndex(item => item.sId === pId);
            if (sControlParentId > -1) {
              const sAllId = controlData[sControlParentId].sAllId;
              if (commonUtils.isEmptyObject(sAllId)) {
                message.warn('部件数据生成错误！[sAllId为空]');
                return;
              }
              tableDataRow.sAllId = `${controlData[sControlParentId].sAllId},${tableDataRow.sId}`;
            } else {
              tableDataRow.sAllId = tableDataRow.sId;
            }
          }
        }
        if (bchild === 'childNode') { /* 添加子级 */
          tableDataRow.sControlParentId = treeSelectedKeys[0];
          const iIndex = controlData.findIndex(item => item.sId === treeSelectedKeys[0]);
          if (iIndex > -1) {
            const sAllId = controlData[iIndex].sAllId;
            if (commonUtils.isEmptyObject(sAllId)) {
              message.warn('子部件数据生成错误！[sAllId为空]'); // 获取父节点的sAllId
              return;
            }
            tableDataRow.sAllId = `${controlData[iIndex].sAllId},${tableDataRow.sId}`;
          }
        }
      }
      tableData.push(tableDataRow);
      let treeState = [];
      if (sModelsType === 'sales/salesOrderPack') {
        treeState = this.props.onGetControlTreeData(tableData, true, tableDataRow.sSlaveId);
      }
      this.props.onSaveState({ [`${name}Data`]: tableData, [`${name}SelectedRowKeys`]: [tableDataRow.sId], ...treeState });
    } else if (name === 'materials' || name === 'process') {
      tableDataRow = this.props.onDataRowAdd(name, true);
      if (commonUtils.isEmptyArr(controlSelectedRowKeys)) {
        const msg = commonFunc.showMessage(gdsformconst, 'pleaseChooseParts');
        message.warn(msg === '' ? '请选择部件' : msg); // 请选择部件
        return;
      }
      const iIndex = controlData.findIndex(item => item.sId === controlSelectedRowKeys[0]);
      const iSlaveIndex = slaveData.findIndex(item => item.sId === slaveSelectedRowKeys[0]);
      if (iIndex > -1 && iSlaveIndex > -1) {
        if (commonUtils.isEmpty(controlData[iIndex].sPartsName) === '') {
          message.warn(commonFunc.showMessage(gdsformconst, 'partsNameNotNull')); // 部件名称不能为空
          return;
        }
        tableDataRow.sSlaveId = slaveData[iSlaveIndex].sId;
        tableDataRow.sControlId = controlData[iIndex].sId;
        tableDataRow.sPartsName = controlData[iIndex].sPartsName;
      }
      tableData.push(tableDataRow);
      this.props.onSaveState({ [`${name}Data`]: tableData, [`${name}SelectedRowKeys`]: [tableDataRow.sId] });
    } else {
      this.props.onDataRowAdd(name, flag);
    }
  };
  /**   删除表格数据   */
  otherTableDel = (name, tableSelectedRowKeys) => {
    const tableData = this.props[`${name}Data`];
    let tableDelData = this.props[`${name}DelData`];
    tableDelData = commonUtils.isEmptyArr(tableDelData) ? [] : tableDelData;
    for (const sId of tableSelectedRowKeys) {
      /*   看看删除集合和从表中是否都存在该条数据   */
      let tableDataIndex = tableData.findIndex(item => item.sControlId === sId);
      while (tableDataIndex > -1) {
        /*   删除从表中的数据并存入删除集合中   */
        const slaveDataFilter = tableData[tableDataIndex];
        tableData.splice(tableDataIndex, 1);
        slaveDataFilter.handleType = 'del';
        tableDelData.push(slaveDataFilter);
        tableDataIndex = tableData.findIndex(item => item.sControlId === sId);
      }
    }
    return { [`${name}Data`]: tableData, [`${name}DelData`]: tableDelData, [`${name}SelectedRowKeys`]: [] };
  };
  otherDeliverTableDel = (name, tableSelectedRowKeys) => {
    const tableData = this.props[`${name}Data`];
    let tableDelData = this.props[`${name}DelData`];
    tableDelData = commonUtils.isEmptyArr(tableDelData) ? [] : tableDelData;
    for (const sId of tableSelectedRowKeys) {
      /*   看看删除集合和从表中是否都存在该条数据   */
      let tableDataIndex = tableData.findIndex(item => item.sDelivergooodSlaveId === sId);
      while (tableDataIndex > -1) {
        /*   删除从表中的数据并存入删除集合中   */
        const slaveDataFilter = tableData[tableDataIndex];
        tableData.splice(tableDataIndex, 1);
        slaveDataFilter.handleType = 'del';
        tableDelData.push(slaveDataFilter);
        tableDataIndex = tableData.findIndex(item => item.sDelivergooodSlaveId === sId);
      }
    }
    return { [`${name}Data`]: tableData, [`${name}DelData`]: tableDelData, [`${name}SelectedRowKeys`]: [] };
  };
  /**   删除表格数据   */
  handleTableDel = (name, isWait, tableSelectedRowKeys, isTree) => {
    const {
      sModelsType, slaveSelectedRowKeys, slaveData,
    } = this.props;
    if (name === 'control') {
      // const tableSelectedRowKeys = this.props[`${name}SelectedRowKeys`]; /* 删除时,选中行取删除参数传过来的 */
      const {
        controlData, treeSelectedKeys, [`${name}SelectedRowKeys`]: tableSelectedRowKeys,
      } = this.props;
      if (isTree) {
        /* 删除该节点及所有子节点 */
        const controlChildData = controlData.filter(item => commonUtils.isNotEmptyObject(item.sAllId) && item.sAllId.indexOf(treeSelectedKeys[0]) > -1 && item.sId !== treeSelectedKeys[0]);
        if (commonUtils.isNotEmptyArr(controlData)) {
          controlChildData.forEach((itemNew) => {
            tableSelectedRowKeys.push(itemNew.sId);
          });
        }
      }
      if (commonUtils.isNotEmptyArr(tableSelectedRowKeys)) {
        const materialsReturnData = this.otherTableDel('materials', tableSelectedRowKeys);
        const processReturnData = this.otherTableDel('process', tableSelectedRowKeys);
        const controlReturnData = this.props.onDataRowDel(name, isWait, tableSelectedRowKeys);
        let treeState = [];
        if (sModelsType === 'sales/salesOrderPack') {
          const iSlaveIndex = slaveData.findIndex(item => item.sId === slaveSelectedRowKeys[0]);
          if (iSlaveIndex > -1) {
            const sSlaveId = slaveData[iSlaveIndex].sId;
            treeState = this.props.onGetControlTreeData(controlReturnData.controlData, true, sSlaveId);
          }
        }
        this.props.onSaveState({
          ...materialsReturnData,
          ...processReturnData,
          ...controlReturnData,
          ...treeState,
        });
        return true;
      } else {
        message.warn('请选择要删除的部件！');
        return false;
      }
    } else if (name === 'slave' && sModelsType === 'sales/salesSgoods') {
      if (commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) {
        const slaveChildReturnData = this.otherDeliverTableDel('slaveChild', slaveSelectedRowKeys);
        const slaveReturnData = this.props.onDataRowDel(name, isWait, slaveSelectedRowKeys);
        this.props.onSaveState({
          ...slaveChildReturnData,
          ...slaveReturnData,
        });
        return true;
      }
    } else {
      return this.props.onDataRowDel(name, isWait, tableSelectedRowKeys);
    }
  };
  /**   销售订单删除从表数据时也删除控制材料工序表数据   */
  handleSlaveTableDel = (name, isWait, tableSelectedRowKeys) => {
    const {
      sModelsType, controlData, processData, materialsData,
    } = this.props;
    if (sModelsType === 'sales/salesOrder' && name === 'slave') {
      const controlDataDel = controlData.filter(item => item.sSlaveId === tableSelectedRowKeys[0]);
      const controlDataSelectedRowKeys = [];
      if (!commonUtils.isEmpty(controlDataDel)) {
        for (const item of controlDataDel) {
          const materialsDataSelectedRowKey = item.sId;
          controlDataSelectedRowKeys.push(materialsDataSelectedRowKey);
        }
        if (commonUtils.isNotEmptyArr(controlDataSelectedRowKeys)) {
          this.props.onDataRowDel('control', isWait, controlDataSelectedRowKeys, true);
        }
        const materialsDataDel = materialsData.filter(item => item.sSlaveId === tableSelectedRowKeys[0]);
        const materialsDataSelectedRowKeys = [];
        if (!commonUtils.isEmpty(materialsDataDel)) {
          for (const item of materialsDataDel) {
            const materialsDataSelectedRowKey = item.sId;
            materialsDataSelectedRowKeys.push(materialsDataSelectedRowKey);
          }
        }
        if (commonUtils.isNotEmptyArr(materialsDataSelectedRowKeys)) {
          this.props.onDataRowDel('materials', isWait, materialsDataSelectedRowKeys, true);
        }
        const processDataDel = processData.filter(item => item.sSlaveId === tableSelectedRowKeys[0]);
        const processDataSelectedRowKeys = [];
        if (!commonUtils.isEmpty(processDataDel)) {
          for (const item of processDataDel) {
            const processDataSelectedRowKey = item.sId;
            processDataSelectedRowKeys.push(processDataSelectedRowKey);
          }
        }
        if (commonUtils.isNotEmptyArr(processDataSelectedRowKeys)) {
          this.props.onDataRowDel('process', isWait, processDataSelectedRowKeys, true);
        }
      }
    }
    return this.props.onDataRowDel(name, isWait, tableSelectedRowKeys);
  };
  handleSelect = async (name, selectConfig, selectData) => {
    const {
      [`${name}Data`]: tableData, [`${name}Config`]: tableConfig, masterData, masterConfig, controlSelectedRowKeys, sModelsId, token, app, tableName, sModelsType,
    } = this.props;
    const tableSelectedRowKeys = [];
    if (name === 'productProcessInfo') {
      if (commonUtils.isNotEmptyArr(selectData)) {
        let slaveData = [];
        let controlData = [];
        let materialsData = [];
        let processData = [];
        let sConfigMasterIdSlave = '';
        let sConfigMasterIdControl = '';
        let sConfigMasterIdMaterials = '';
        let sConfigMasterIdProcess = '';
        const selectRowData = selectData[0];
        const sConfigIdString = masterConfig.gdsconfigformslave.filter(item => item.sName === 'sConfigId')[0].showDropDown;
        if (commonUtils.isNotEmptyStr(sConfigIdString)) {
          const sConfigId = JSON.parse(sConfigIdString);
          sConfigMasterIdSlave = sConfigId.sConfigMasterIdSlave;
          sConfigMasterIdControl = sConfigId.sConfigMasterIdControl;
          sConfigMasterIdMaterials = sConfigId.sConfigMasterIdMaterials;
          sConfigMasterIdProcess = sConfigId.sConfigMasterIdProcess;
        }
        if (commonUtils.isEmptyStr(sConfigMasterIdSlave)) {
          message.warning(commonFunc.showMessage(app.commonConst, 'slaveParameterErro'));
        }
        if (commonUtils.isEmptyStr(sConfigMasterIdControl)) {
          message.warning(commonFunc.showMessage(app.commonConst, 'controlParameterErro'));
        }
        if (commonUtils.isEmptyStr(sConfigMasterIdMaterials)) {
          message.warning(commonFunc.showMessage(app.commonConst, 'materialsParameterErro'));
        }
        if (commonUtils.isEmptyStr(sConfigMasterIdProcess)) {
          message.warning(commonFunc.showMessage(app.commonConst, 'processParameterErro'));
        }
        const slaveUrl = `${commonConfig.server_host}business/getBusinessDataByFormcustomId/${sConfigMasterIdSlave}?sModelsId=${sModelsId}`;
        const value = { sSqlCondition: { sParentId: selectRowData.sId } };
        const slaveReturnData = (await commonServices.postValueService(token, value, slaveUrl)).data;
        if (slaveReturnData.code === 1) {
          slaveData = slaveReturnData.dataset.rows[0].dataSet;
          slaveData.forEach((item) => {
            item.handleType = 'add';
            item.sId = commonUtils.createSid();
            item.sParentId = masterData.sId;
          });
        } else {
          this.props.getServiceError(slaveReturnData);
        }

        const controlUrl = `${commonConfig.server_host}business/getBusinessDataByFormcustomId/${sConfigMasterIdControl}?sModelsId=${sModelsId}`;
        const controlReturnData = (await commonServices.postValueService(token, value, controlUrl)).data;
        if (controlReturnData.code === 1) {
          controlData = controlReturnData.dataset.rows[0].dataSet;
          controlData.forEach((item) => {
            item.handleType = 'add';
            item.sId = commonUtils.createSid();
            item.sParentId = masterData.sId;
          });
        } else {
          this.props.getServiceError(controlReturnData);
        }
        const materialsUrl = `${commonConfig.server_host}business/getBusinessDataByFormcustomId/${sConfigMasterIdMaterials}?sModelsId=${sModelsId}`;
        const materialsReturnData = (await commonServices.postValueService(token, value, materialsUrl)).data;
        if (materialsReturnData.code === 1) {
          materialsData = materialsReturnData.dataset.rows[0].dataSet;
          materialsData.forEach((item) => {
            item.handleType = 'add';
            item.sId = commonUtils.createSid();
            item.sParentId = masterData.sId;
          });
        } else {
          this.props.getServiceError(materialsReturnData);
        }
        const processUrl = `${commonConfig.server_host}business/getBusinessDataByFormcustomId/${sConfigMasterIdProcess}?sModelsId=${sModelsId}`;
        const processReturnData = (await commonServices.postValueService(token, value, processUrl)).data;
        if (processReturnData.code === 1) {
          processData = processReturnData.dataset.rows[0].dataSet;
          processData.forEach((item) => {
            item.handleType = 'add';
            item.sId = commonUtils.createSid();
            item.sParentId = masterData.sId;
          });
        } else {
          this.props.getServiceError(processReturnData);
        }
        this.props.onSaveState({
          processData, materialsData, controlData, slaveData, [`${name}ChooseVisible`]: false, [`${name}SelectedRowKeys`]: tableSelectedRowKeys,
        });
      }
    } else if (tableName === 'slave' && selectConfig.sControlName === 'BtnChooseMaterials') {
      this.props.onSelect('slave', selectConfig, selectData);
    } else if (sModelsType.includes('cashier/') && selectConfig.sControlName === 'BtnImportFormData') {
      const { slaveData } = this.props;
      let tableDataNew = [];
      if (commonUtils.isNotEmptyArr(slaveData)) {
        tableDataNew = slaveData;
        tableDataNew.forEach((item, index) => {
          const handleType = item.handleType;
          if (commonUtils.isEmptyObject(handleType) || handleType === 'update') {
            tableDataNew[index] = { ...item, handleType: 'del' };
          }
        });
      }
      if (commonUtils.isNotEmptyArr(selectData)) {
        selectData.forEach((item) => {
          let tableDataRow = {}; // 取默认值
          tableDataRow = { ...tableDataRow, ...commonFunc.getAssignFieldValue(selectConfig.sAssignField, item) }; // 取赋值字段
          tableDataRow.handleType = 'add';
          tableDataRow.sId = commonUtils.createSid();
          tableDataRow.sParentId = masterData.sId;
          tableDataNew.push(tableDataRow);
        });
        this.props.onSaveState({ slaveData: tableDataNew, importFormDataVisible: false });
      }
    } else {
      const { controlData, slaveData, slaveSelectedRowKeys } = this.props;
      const iIndex = commonUtils.isNotEmptyArr(controlSelectedRowKeys) ? controlData.findIndex(item => item.sId === controlSelectedRowKeys[0]) : -1;
      if (commonUtils.isNotEmptyArr(selectData)) {
        selectData.forEach((item) => {
          const newCopyTo = {};
          newCopyTo.master = masterData;
          if (iIndex > -1) {
            newCopyTo.control = controlData[iIndex];
          }
          let tableDataRow = commonFunc.getDefaultData(tableConfig, newCopyTo); // 取默认值
          tableDataRow = { ...tableDataRow, ...commonFunc.getAssignFieldValue(selectConfig.sAssignField, item, newCopyTo) }; // 取赋值字段
          tableDataRow.handleType = 'add';
          tableDataRow.sId = commonUtils.createSid();
          tableDataRow.sParentId = masterData.sId;
          if (this.props.sModelsType.includes('sales/salesOrder')) {
            const iSlaveIndex = commonUtils.isNotEmptyArr(slaveSelectedRowKeys) ? slaveData.findIndex(item => item.sId === slaveSelectedRowKeys[0]) : -1;
            if (iSlaveIndex > -1) {
              tableDataRow.sSlaveId = slaveData[iSlaveIndex].sId;
            }
          }
          if (iIndex > -1 && tableDataRow.sType !== '3') {
            tableDataRow.sControlId = controlData[iIndex].sId;
            tableDataRow.sPartsName = controlData[iIndex].sPartsName;
            tableData.push(tableDataRow);
          } else if (tableDataRow.sType === '3') {
            tableData.push(tableDataRow);
          }
          tableSelectedRowKeys.push(tableDataRow.sId);
        });
      }
      const tableDataNew = this.sortData(controlData, tableData);
      this.props.onSaveState({ [`${name}Data`]: tableDataNew, [`${name}ChooseVisible`]: false, [`${name}SelectedRowKeys`]: tableSelectedRowKeys });
    }
  };

  /**   树节点选中   */
  handleTreeSelect = (name, checkedKeys, e) => {
    let { controlSelectedRowKeys } = this.props;
    controlSelectedRowKeys = checkedKeys; /* 把树形选中节点赋值给表格部件选中节点 */
    this.props.onTreeSelect(name, checkedKeys, e);
    this.props.onSaveState({
      controlSelectedRowKeys,
    });
  };

  sortData = (tableData, processData) => {
    processData.sort((g1, g2) => {
      const iIndex1 = tableData.findIndex(item => item.sId === g1.sControlId) === -1 ? 999 : tableData.findIndex(item => item.sId === g1.sControlId);
      let sPartOrder1 = `0000${iIndex1}`;
      sPartOrder1 = sPartOrder1.substring(sPartOrder1.length - 3);
      let sOrder1 = `000${g1.iOrder}`;
      sOrder1 = sOrder1.substring(sOrder1.length - 3);

      const iIndex2 = tableData.findIndex(item => item.sId === g2.sControlId) === -1 ? 999 : tableData.findIndex(item => item.sId === g2.sControlId);
      let sPartOrder2 = `0000${iIndex2}`;
      sPartOrder2 = sPartOrder2.substring(sPartOrder2.length - 3);
      let sOrder2 = `000${g2.iOrder}`;
      sOrder2 = sOrder2.substring(sOrder2.length - 3);
      return parseInt(sPartOrder1 + g1.sType + sOrder1, 10) - parseInt(sPartOrder2 + g2.sType + sOrder2, 10);
    });
    return processData;
  };
  handleGetDataOk = () => {
    this.props.onDataImport('zero');
  }
  handleGetDataCancel = () => {
    this.props.onDataImport('all');
  }
  colseGetDataVisible = () => {
    this.props.onSaveState({ isGetDataVisible: false });
  }

  /* 审核备注文本框改变事件 */
  textChange= (e, record) => {
    const sCheckRemark = commonUtils.isNotEmptyObject(record) && commonUtils.isNotEmptyObject(e.target.value) ? e.target.value : '';
    this.props.onSaveState({ sCheckRemark });/* 审核备注 */
  }
  // ----------------------------数据修改回带end  ---------------------------- //

  render() {
    const {
      pageLoading, masterConfig, visible, checkConditions, checkPersonData, visibleModal, processChooseVisible, materialsChooseVisible, app, sTabId, sModelsType, enabled, slaveSelectedRowKeys,
    } = this.props;
    const checkCondition = commonFunc.showMessage(app.commonConst, 'checkCondition');/* 审核条件 */
    const checkSmemo = commonFunc.showMessage(app.commonConst, 'checkSmemo');/* 备注 */
    const columns = [{
      title: checkCondition,
      dataIndex: 'condition',
      key: 'condition',
    }, {
      title: checkSmemo,
      dataIndex: 'sMemo',
      key: 'sMemo',
      render: (text, record) => {
        return (
          <Form>
            <Input onChange={(e) => { this.textChange(e, record); }} />
          </Form>
        );
      },
    }];
    let chooseProcessConfig;
    let onChooseProcessIndex;
    /* 获取toolbar 选择工序 */
    if (commonUtils.isNotEmptyObject(masterConfig)) {
      onChooseProcessIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'BtnChooseProcess');
      if (onChooseProcessIndex > -1) {
        chooseProcessConfig = this.props.masterConfig.gdsconfigformslave[onChooseProcessIndex];
      }
    }
    /* 获取toolbar 选择材料 */
    let chooseMaterialsConfig;
    const modalWidth = '1132';
    const fixedAutoHeight = sModelsType === 'sales/salesOrderPack' ? 120 : 66;
    if (commonUtils.isNotEmptyObject(masterConfig)) {
      const iIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'BtnChooseMaterials');
      if (iIndex > -1) {
        chooseMaterialsConfig = masterConfig.gdsconfigformslave[iIndex];
      }
    }
    /* 若销售订单从表选中行被工单或其他调用 则材料与工艺只能查看不能操作 */
    let bUsed = enabled;
    if (sModelsType.includes('sales/salesOrder') && enabled && commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) {
      const { slaveData } = this.props;
      const iSlaveDataIndex = slaveData.findIndex(item => slaveSelectedRowKeys.includes(item.sId));
      if (iSlaveDataIndex > -1) {
        const sWorkOrderUsed = slaveData[iSlaveDataIndex].sWorkOrderUsed;
        if (commonUtils.isNotEmptyObject(sWorkOrderUsed)) {
          bUsed = false;
        }
      }
    }

    const controlPropsType = {
      ...commonBusiness.getTableTypes('control', this.props),
      tableProps: {
        CalLastWidth: modalWidth, AutoTableHeight: fixedAutoHeight, setCopyAll, setProcess, setMaterial, chooseProcessConfigRow: chooseProcessConfig, chooseMaterialsConfigRow: chooseMaterialsConfig, onRow: (record) => { return { onClick: () => { this.onRowClick('control', record); } }; },
      },
      filteredValue: this.props.slaveSelectedRowKeys,
      onFilterData: this.handleFilterSlaveData,
      OnGetFilterData: this.handleGetFilterData,
      onAddRow: this.handleTableAdd,
      onKeyDown: this.props.onKeyDown,
      onDelRow: this.handleTableDel,
      enabled: bUsed,
    };
    const name = 'controlTree';
    const treeProps = {
      ...commonBusiness.getTreeTypes('tree', this.props),
      isSearch: false,
      checkable: false,
      disabled: false,
      checkedAll: false,
      unChecked: false,
      [`${name}Column`]: this.props[`${name}Column`],
      [`${name}Config`]: this.props[`${name}Config`],
      [`${name}Data`]: this.props[`${name}Data`],
      getFloatNum: this.props.getFloatNum,
      getSqlDropDownData: this.props.getSqlDropDownData,
      getSqlCondition: this.props.getSqlCondition,
      handleSqlDropDownNewRecord: this.props.handleSqlDropDownNewRecord,
      getDateFormat: this.props.getDateFormat,
      onDoubleClick: this.props.onDoubleClick,
      onSelect: this.handleTreeSelect,
      expandedKeys: this.props.expandedKeys,
      showLine: true,
    };
    const materialsPropsType = {
      ...commonBusiness.getTableTypes('materials', this.props),
      tableProps: { CalLastWidth: modalWidth, AutoTableHeight: fixedAutoHeight },
      filteredValue: this.props.controlSelectedRowKeys,
      onFilterData: this.handleFilterData,
      OnGetFilterData: this.handleGetFilterData,
      onAddRow: this.handleTableAdd,
      onKeyDown: this.props.onKeyDown,
      enabled: bUsed,
    };
    const processPropsType = {
      ...commonBusiness.getTableTypes('process', this.props),
      tableProps: { CalLastWidth: modalWidth, AutoTableHeight: 132 },
      filteredValue: this.props.controlSelectedRowKeys,
      onFilterData: this.handleFilterData,
      OnGetFilterData: this.handleGetFilterData,
      onAddRow: this.handleTableAdd,
      onChooseProcessRow: this.handleTableChooseProcess,
      onKeyDown: this.props.onKeyDown,
      enabled: bUsed,
    };
    let searchProcessType = {};
    // let chooseProcessConfig = {};
    if (commonUtils.isNotEmptyObject(this.props.processChooseData)) {
      // const iIndex = this.props.processConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'BtnChooseProcess');
      // if (iIndex > -1) {
      //   chooseProcessConfig = this.props.processConfig.gdsconfigformslave[iIndex];
      // }

      searchProcessType = {
        app: {
          ...this.props.app,
          currentPane: {
            name: 'process',
            config: chooseProcessConfig,
            conditonValues: this.props.getSqlCondition(chooseProcessConfig),
            title: this.props.processChooseData.sMenuName,
            route: this.props.processChooseData.sName,
            formId: this.props.processChooseData.sId,
            key: this.props.sModelsId + this.props.processChooseData.sId,
            sModelsType: this.props.processChooseData.sModelType,
            select: this.handleSelect,
            selectCancel: this.props.onSelectCancel,
          },
        },
        dispatch: this.props.dispatch,
        content: this.props.content,
        id: new Date().getTime().toString(),
        realizeHeight: this.props.realizeHeight, /* 拖动偏移高度 */
      };
    }


    let searchMaterialsType = {};
    // let chooseMaterialsConfig = {};
    if (commonUtils.isNotEmptyObject(this.props.materialsChooseData) && this.props.tableName !== 'slave') {
      // const iIndex = this.props.materialsConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'BtnChooseMaterials');
      // if (iIndex > -1) {
      //   chooseMaterialsConfig = this.props.materialsConfig.gdsconfigformslave[iIndex];
      // }

      searchMaterialsType = {
        app: {
          ...this.props.app,
          currentPane: {
            name: 'materials',
            config: chooseMaterialsConfig,
            conditonValues: this.props.getSqlCondition(chooseMaterialsConfig),
            title: this.props.materialsChooseData.sMenuName,
            route: this.props.materialsChooseData.sName,
            formId: this.props.materialsChooseData.sId,
            key: this.props.sModelsId + this.props.materialsChooseData.sId,
            sModelsType: this.props.materialsChooseData.sModelsType,
            select: this.handleSelect,
            selectCancel: this.props.onSelectCancel,
          },
        },
        dispatch: this.props.dispatch,
        content: this.props.content,
        id: new Date().getTime().toString(),
        realizeHeight: this.props.realizeHeight,
      };
    }
    const pane = app.panes.filter(paneTmp => paneTmp.key === sTabId)[0];
    const setMaterailRemark = commonFunc.showMessage(app.commonConst, 'setMaterailRemark');/* 选择材料与工艺 */
    const setProcessTitle = commonFunc.showMessage(app.commonConst, 'setProcess');/* 选择工序标题 */
    const setMaterialTitle = commonFunc.showMessage(app.commonConst, 'setMaterial');/* 选择材料标题 */
    const btnSure = commonFunc.showMessage(app.commonConst, 'btnSure');/* 确认 */
    const check = commonFunc.showMessage(app.commonConst, 'check');/* 审核 */
    const BtnClose = commonFunc.showMessage(app.commonConst, 'BtnClose');/* 关闭 */
    const checkPerson = commonFunc.showMessage(app.commonConst, 'checkPerson');/* 审核人 */
    // eslint-disable-next-line jsx-a11y/anchor-is-valid
    const operateAdd = <a title="添加同级" alt="" onClick={this.props.enabled ? this.handleTableAdd.bind(this, 'control', false, 'sameNode') : null}>{this.props.enabled ? setAdd.img : setAdd.disableimg} </a>;
    // eslint-disable-next-line jsx-a11y/anchor-is-valid
    const operateAddChild = <a title="添加子级" onClick={this.props.enabled ? this.handleTableAdd.bind(this, 'control', false, 'childNode') : null}>{this.props.enabled ? setAddChild.img : setAddChild.disableimg }</a>;
    // eslint-disable-next-line jsx-a11y/anchor-is-valid
    const operateCopy = <a title="复制" onClick={this.props.enabled ? this.props.onDataRowCopy.bind(this, 'control', false, true) : null}>{this.props.enabled ? setCopy.img : setCopy.disableimg}</a>;
    // eslint-disable-next-line jsx-a11y/anchor-is-valid
    const operateUpdate = <a title="复制全部" onClick={this.props.enabled ? this.props.onDataRowCopyAll.bind(this, 'control', false, true) : null}>{this.props.enabled ? setCopyAll.img : setCopyAll.disableimg }</a>;
    // eslint-disable-next-line jsx-a11y/anchor-is-valid
    const operateDel = <a title="删除" onClick={this.props.enabled ? this.handleTableDel.bind(this, 'control', true, '', true) : null}>{this.props.enabled ? setDelete.img : setDelete.disableimg}</a>;
    return (
      <div>
        <Spin spinning={pageLoading}>
          <div>
            <BillDeliverComponent
              {...this.props}
              {...this.state}
              onUploadChangeFile={this.handleUploadChangeFile} /* xls文件导入 */
              onUploadChange={this.handleUploadChange} /* 表格图片上传 */
              onBeforeUpload={this.handleBeforeUpload}
              onGetDataCancel={this.handleGetDataCancel}
              onGetDataOk={this.handleGetDataOk}
              colseGetDataVisible={this.colseGetDataVisible}
              getMenuStatus={this.getMenuStatus}
              onUploadPropsSales={this.handleUploadPropsSales}
              onDataRowModal={this.handleTableModal}
              onDataRowDel={this.handleSlaveTableDel}
              onDoubleClick={this.onDoubleClick}
              onSelectTree={this.handleTreeSelect}
              handleCancelModal={this.handleCancelModal}
              setMaterialTitle={setMaterialTitle}
              onSelect={this.handleSelect}
              onFilterData={this.handleFilterData}
              onDelRow={this.handleTableDel}
            />
            {
              visible ?
                <AntdDraggableModal
                  title={check}
                  visible={visible}
                  onCancel={this.handleCancel}
                  onSaveState={this.props.onSaveState}
                  footer={[
                    <Button key="back" onClick={this.handleCancel}>{BtnClose}</Button>,
                    <Button key="submit" type="primary" onClick={this.handleOk.bind(this, 1, 1, true)}>
                      {btnSure}
                    </Button>,
              ]}
                >
                  <Table columns={columns} dataSource={checkConditions} bordered pagination={false} className={styles.checkTable} />
                  <div style={{ float: 'left', width: '15%' }}>{checkPerson}</div>
                  <div style={{ float: 'left', width: '60%' }}>
                    <Checkbox.Group style={{ width: '100%' }} onChange={this.onChange}>
                      <Row>
                        { commonUtils.isNotEmptyObject(checkPersonData) ?
                          checkPersonData.map((item) => {
                            return (
                              <Col span={8}>
                                <Checkbox value={item.sUserId}>{item.sUserName}</Checkbox>
                              </Col>
                            );
                          })
                          : ''
                      }
                      </Row>
                    </Checkbox.Group>
                  </div>
                </AntdDraggableModal>
              : ''
            }
            {
              visibleModal ?
                <AntdDraggableModal
                  title={setMaterailRemark}
                  width="1200"
                  bodyStyle={{ paddingBottom: 0, zIndex: 1000 }}
                  visible={pane.notCurrentPane ? false : visibleModal}
                  onCancel={this.handleCancelModal.bind(this, 'visibleModal')}
                  onSaveState={this.props.onSaveState}
                  forbidResize
                  footer={[
                    <Button key="back" onClick={this.handleCancelModal.bind(this, 'visibleModal')}>{BtnClose}</Button>,
                    <Button key="submit" type="primary" onClick={this.handleOkModal.bind(this)}>
                      {btnSure}
                    </Button>,
                  ]}
                >
                  {
                    (pane.notCurrentPane ? false : processChooseVisible) ?
                      <AntdDraggableModal
                        width={1100}
                        className="MProcess"
                        bodyStyle={{ paddingBottom: 0, maxHeight: 520, zIndex: 2000 }}
                        title={commonUtils.isEmptyObject(searchProcessType) ? setProcessTitle : searchProcessType.app.currentPane.title}
                        onCancel={this.handleCancelModal.bind(this, 'processChooseVisible')}
                        visible={pane.notCurrentPane ? false : processChooseVisible}
                        onSaveState={this.props.onSaveState}
                        footer={null}
                      >
                        <CommonListSelectTree {...searchProcessType} />
                      </AntdDraggableModal>
                      : ''
                  }
                  {
                    (pane.notCurrentPane ? false : materialsChooseVisible) ?
                      <AntdDraggableModal
                        bodyStyle={{ paddingBottom: 0, maxHeight: 520, zIndex: 2000 }}
                        className="MProcess"
                        width={1100}
                        title={commonUtils.isEmptyObject(searchMaterialsType) ? setMaterialTitle : searchMaterialsType.app.currentPane.title}
                        onCancel={this.handleCancelModal.bind(this, 'materialsChooseVisible')}
                        visible={pane.notCurrentPane ? false : materialsChooseVisible}
                        onSaveState={this.props.onSaveState}
                        footer={null}
                      >
                        <CommonListSelect {...searchMaterialsType} />
                      </AntdDraggableModal>
                      : ''
                  }
                  <div id="ModalMaterialRemark" >
                    {
                        sModelsType === 'sales/salesOrderPack' ?
                          <div style={{
 marginTop: 0, height: '180px', overflowY: 'hidden', overflowX: 'hidden',
}}
                          >
                            <div className="xly-bill-pack">
                              <Sider className="controlhandcover">
                                <div className="xly-control">
                                  <div style={{ backgroundColor: '#f5f5f5', height: '30px' }} />
                                  <div className="xly-control-tree"><StaticEditTree {...treeProps} /></div>
                                  <div className="xly-control-operate" >
                                    <span>{operateAdd}</span>
                                    <span>{operateAddChild}</span>
                                    <span>{operateCopy}</span>
                                    <span>{operateUpdate}</span>
                                    <span>{operateDel}</span>
                                  </div>
                                </div>
                              </Sider>
                              <div style={{ overflowX: 'auto', overflowY: 'hidden' }}>
                                <StaticEditTable {...controlPropsType} footer="hidden" setOpterationColumn="Y" />
                              </div>
                            </div>
                          </div> :
                          <div style={{ marginTop: 0, overflowY: 'hidden' }} >
                            <StaticEditTable {...controlPropsType} footer="hidden" setOpterationColumn="Y" />
                          </div>
                      }
                    <div style={{ marginTop: 0, overflowY: 'hidden' }}>
                      <StaticEditTable {...materialsPropsType} footer="hidden" setOpterationColumn="Y" />
                    </div>
                    <div style={{ marginTop: 0, overflowY: 'hidden' }} id="chooseProcessModal">
                      <StaticEditTable {...processPropsType} footer="hidden" setOpterationColumn="Y" />
                    </div>
                  </div>
                </AntdDraggableModal>
              : ''}
          </div>
        </Spin>
      </div>
    );
  }
}

const BillDeliverComponent = Form.create({
  mapPropsToFields(props) {
    const { masterData, masterConfig } = props;
    const obj = commonFunc.mapPropsToFields(masterData, Form, masterConfig);
    return obj;
  },
})((props) => {
  const {
    form,
    onReturnForm,
    slaveData,
    slavePagination,
    onlyMaster,
    AutoTableHeight,
    sModelsId,
    app,
    onlyMasterAndSlave,
    masterConfig,
    slaveConfig,
    isSmall,
    isGetDataVisible,
    onGetDataCancel,
    onGetDataOk,
    colseGetDataVisible,
    sModelsType,
    masterData,
  } = props;
  /*   回带表单   */
  onReturnForm(form);
  const pagination = {
    pageSize: commonConfig.pageSize,
    total: commonUtils.isEmptyArr(slaveData) ? 0 : slaveData.length,
    current: commonUtils.isEmptyObject(slavePagination) ? 1 : slavePagination.current,
    ...slavePagination,
    // size: 'large',

    // showQuickJumper: true,
    hideOnSinglePage: false,
    size: isSmall ? 'small' : 'large',
    pageSizeOptions: commonConfig.pageSizeOptions,
    showSizeChanger: !isSmall,
    showQuickJumper: !isSmall,
  };
  const templateProps = props.formData.filter(item => item.sGrd === 'importTemplate')[0];
  let setMaterialRemark = {
    title: '材料与工艺',
    width: { width },
    height: { height },
    img: <img src={MaterialRemarkIcon} alt="材料与工艺" width={width} height={height} />,
    disableimg: <img src={DisMaRemarklIcon} alt="材料与工艺不可用" width={width} height={height} />,
  };
  /* 获取toolbar 选择材料 */
  let searchMaterialsType = {};
  let chooseMaterialsConfig = {};
  if (commonUtils.isNotEmptyObject(slaveConfig)) {
    const iIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'BtnChooseMaterials');
    if (iIndex > -1) {
      chooseMaterialsConfig = slaveConfig.gdsconfigformslave[iIndex];
    }
  }
  if (commonUtils.isNotEmptyObject(props.materialsChooseData)) {
    searchMaterialsType = {
      app: {
        ...props.app,
        currentPane: {
          name: 'materials',
          config: chooseMaterialsConfig,
          conditonValues: props.getSqlCondition(chooseMaterialsConfig),
          title: props.materialsChooseData.sMenuName,
          route: props.materialsChooseData.sName,
          formId: props.materialsChooseData.sId,
          key: sModelsId + props.materialsChooseData.sId,
          sModelsType: props.materialsChooseData.sModelType,
          select: props.onSelect,
          selectCancel: props.onSelectCancel,
        },
      },
      dispatch: props.dispatch,
      content: props.content,
      id: new Date().getTime().toString(),
      realizeHeight: props.realizeHeight, /* 拖动偏移高度 */
    };
  }

  /* 导入收付款未清数据 */
  let importPopupProps = {};
  let importPopupTitle = '导入未清数据';
  if (commonUtils.isNotEmptyObject(props)) {
    let importPopupConfig = {};
    const {
      masterConfig, sModelsId,
    } = props;
    if (commonUtils.isNotEmptyObject(masterConfig)) {
      const iIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'BtnImportFormData' && item.bVisible);
      if (iIndex > -1) {
        importPopupConfig = masterConfig.gdsconfigformslave[iIndex];
        importPopupTitle = commonUtils.isNotEmptyObject(importPopupConfig) && commonUtils.isNotEmptyObject(importPopupConfig.sActiveName) ? importPopupConfig.sActiveName : importPopupTitle;
        importPopupProps = {
          app: {
            ...props.app,
            currentPane: {
              name: 'commonPopup',
              config: importPopupConfig,
              conditonValues: {},
              title: importPopupTitle,
              route: '/indexPage/commonList',
              formRoute: '/indexPage/commonList',
              formId: importPopupConfig.sActiveId,
              key: sModelsId + importPopupConfig.sId,
              sModelsType: 'search/importFormData',
              select: props.onSelect,
              selectCancel: props.handleCancelModal.bind(this, 'importFormDataVisible'),
              bFilterProName: props.bFilterProName, /* 存储过程查询ID  */
              bFilterProValue: props.bFilterProValue, /* 存储过程查询VALUE */
            },
          },
          dispatch: props.dispatch,
          content: props.content,
          id: new Date().getTime().toString(),
          realizeHeight: props.realizeHeight, /* 拖动偏移高度 */
        };
      }
    }
  }

  // const saleOrder = commonFunc.showMessage(app.commonConst, 'saleOrder');/* 销售订单 */
  setMaterialRemark = props.sModelsType !== undefined && props.sModelsType.includes('sales/salesOrder') ? setMaterialRemark : null;
  const autoHeight = AutoTableHeight - 90;
  const slaveTableProps = {
    ...commonBusiness.getTableTypes('slave', props),
    tableProps: {
      setAdd, setCopy, setCopyAll, setDelete, setMaterialRemark, setMaterial, chooseMaterialsConfigRow: chooseMaterialsConfig, pagination, onChange: props.onTitleChange, AutoTableHeight: autoHeight,
    },
    templateProps,
    /*
      修改日期：2021-03-18
      修改人：吕杰
      区域：以下一行
      说明：添加keyDown事件透传
    */
    onKeyDown: props.onKeyDown,
    onContextMenu: props.onContextMenu,
    masterData: props.masterData, // 为通用弹窗提供主表数据(孟总需求：产品新增需要带上客户信息)
    onDelRow: props.onDelRow,
  };

  const slaveChildTableProps = {
    ...commonBusiness.getTableTypes('slaveChild', props),
    filteredValue: props.slaveSelectedRowKeys,
    onFilterData: props.onFilterData,
    tableProps: {
      setAdd, setCopy, setDelete, pagination, onChange: props.onTitleChange,
    },
    templateProps,
    bRowClick: true,
    /*
      修改日期：2021-03-18
      修改人：吕杰
      区域：以下一行
      说明：添加keyDown事件透传
    */
    onKeyDown: props.onKeyDown,
    onContextMenu: props.onContextMenu,
    masterData: props.masterData, // 为通用弹窗提供主表数据(孟总需求：产品新增需要带上客户信息)
  };

  let gdsconfigformmasterId = '';
  if (templateProps !== undefined) {
    gdsconfigformmasterId = templateProps.sId;
  }

  const sNotEmpty = 'sParentId,sProductId';
  let uploadUrl = `${commonConfig.server_host}import/checkExcel?sModelsId=${sModelsId}&gdsconfigformmasterId=${gdsconfigformmasterId}&sNotEmpty=${sNotEmpty}&token=${app.token}`;
  /* 送货单需要传客户id  */
  if (commonUtils.isNotEmptyObject(sModelsType) && sModelsType === 'sales/salesSgoods' && commonUtils.isNotEmptyObject(masterData)) {
    const sCustomerId = masterData.sCustomerId;
    if (commonUtils.isNotEmptyObject(sCustomerId)) {
      uploadUrl = `${commonConfig.server_host}import/checkExcel?sModelsId=${sModelsId}&gdsconfigformmasterId=${gdsconfigformmasterId}&sNotEmpty=${sNotEmpty}&sCustomerId=${sCustomerId}&token=${app.token}`;
    }
  }
  const outProps = {
    action: uploadUrl,
    onChange: props.onUploadChangeFile, /* 文件上传 */
    accept: 'xls/*',
    showUploadList: false,
    beforeUpload: () => {
      /* 查看时不可上传 */
      if (!props.enabled) return false;
    },
  };
  const uploadPropsSales = props.onUploadPropsSales();
  const MainContent = commonFunc.showMessage(app.commonConst, 'MainContent');/* 主体内容 */
  const isGetData = commonFunc.showMessage(app.commonConst, 'isGetData');/* 确认获取库存为零的数据吗 */
  const isFilterGetDataZero = commonFunc.showMessage(app.commonConst, 'isFilterGetDataZero');
  const isAllGetData = commonFunc.showMessage(app.commonConst, 'isAllGetData');
  const CheckInfo = commonFunc.showMessage(app.commonConst, 'CheckInfo');/* 审批信息 */
  const BtnimportData = commonFunc.showMessage(app.commonConst, 'importData');/* 导入数据 */
  const ImportData = commonUtils.isNotEmptyObject(masterConfig) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName.includes('ImportData') && item.bVisible) : '';/* 后台是否配置导入 */
  /*
  if (props.sModelsType === 'sales/salesOrder') {
    const btnUpload = (
      <Upload {...outProps}>
        <Button {...uploadPropsSales}>
          <Icon type="upload" /> 导入数据
        </Button>
      </Upload>);
    slaveTableProps.tableProps.newButton = btnUpload;
  }
  */

  return (
    <Form style={{ backgroundColor: '#e3e3e3' }}>
      <Layout>
        <Header className={styles.header}>
          <div className="billToolBar">
            <Toolbar {...props} className="billBtnGroup btnGroupHasImport" style={{ backgroundColor: '#646464', color: 'rgb(255,255,255)' }} pageFrom="billList" />
            { commonUtils.isNotEmptyArr(ImportData) ?
              <div id="btnImportData" className={`importData ${props.enabled}`} >
                <Upload {...outProps}><UploadOutlined />{BtnimportData}
                  <Button {...uploadPropsSales} />
                </Upload>
              </div> : ''}
          </div>
        </Header>
        <Layout className={styles.clayout}>
          <Content className={styles.content} >
            <div style={{
              border: '1px solid #c2c3c5',
              margin: '0 10px',
              marginTop: 8,
              backgroundColor: '#fff',
            }}
            >
              <div className="bill-search-group" >
                <CommonView {...props} />
              </div>
            </div>
            { onlyMaster ?
              <div id="slaveTabs" className={styles.bShow}>
                <div>
                  <Avatar src={props.imgSrc} />
                </div>
              </div> :
              <div id="slaveTabs" className={styles.bShow}>
                <div>
                  <Avatar src={props.imgSrc} />
                </div>
                <Tabs className={styles.slaveTabs} tabBarStyle={{ margin: '0 10px' }} >
                  <TabPane tab={MainContent} key={2} className="xly-bill-list">
                    <div className="TabPaneStyle">
                      <StaticEditTable {...slaveTableProps} noVlist setOpterationColumn={props.sModelsType !== 'cost/cosexpenseshare' ? 'Y' : ''} />
                    </div>
                  </TabPane>
                  <TabPane tab={CheckInfo} key={3} className="xly-bill-list">
                    <div className="TabPaneStyle">
                      <StaticEditTable {...commonBusiness.getTableTypes('check', props)} tableProps={{ AutoTableHeight: autoHeight || 250 }} noVlist setOpterationColumn="Y" />
                    </div>
                  </TabPane>
                </Tabs>
              </div> }
            { onlyMasterAndSlave ?
              <div id="slaveTabs" className={styles.bShow}>
                <div>
                  <Avatar src={props.imgSrc} />
                </div>
                <Tabs className={styles.slaveTabs} style={{ margin: '0px!important', height: AutoTableHeight, overflow: 'hidden' }} tabBarStyle={{ margin: '0 10px' }} >
                  <TabPane tab={MainContent} key={2} className="xly-bill-list">
                    <StaticEditTable {...slaveTableProps} setOpterationColumn={props.sModelsType !== 'cashier/receipt' && props.sModelsType !== 'cashier/payment' ? 'Y' : ''} />
                  </TabPane>
                </Tabs>
              </div> : '' }
            <div className="xly-tab-table" style={{ marginTop: '5px' }}>
              <StaticEditTable {...slaveChildTableProps} setOpterationColumn="Y" />
            </div>
          </Content>
        </Layout>
      </Layout>
      {
        isGetDataVisible ?
          <AntdDraggableModal
            visible={isGetDataVisible}
            title="获取数据"
            onOk={onGetDataOk}
            onCancel={colseGetDataVisible}
            footer={[
              <Button key="back" onClick={onGetDataCancel}>
                {isAllGetData}
              </Button>,
              <Button key="submit" type="primary" onClick={onGetDataOk}>
                {isFilterGetDataZero}
              </Button>,
            ]}
          >
            <p>{isGetData}</p>
          </AntdDraggableModal>
          : ''
      }
      {
        props.materialsChooseVisible && !props.visibleModal ?
          <AntdDraggableModal
            width={1300}
            title={props.setMaterialTitle}
            visible={props.materialsChooseVisible}
            onCancel={props.handleCancelModal.bind(this, 'materialsChooseVisible')}
            onSaveState={props.onSaveState}
            footer={null}
          >
            <CommonListSelect {...searchMaterialsType} />
          </AntdDraggableModal>
          : ''
      }
      {
        props.importFormDataVisible ?
          <AntdDraggableModal
            width={1300}
            zIndex={1000}
            title={importPopupTitle}
            visible={props.importFormDataVisible}
            onCancel={props.handleCancelModal.bind(this, 'importFormDataVisible')}
            onSaveState={props.onSaveState}
            footer={null}
          >
            <CommonListSelect {...importPopupProps} />
          </AntdDraggableModal>
          : ''
      }
      {
        props.contextMenuModalVisible ?
          <ContextMenuModal {...props} />
          : ''
      }
    </Form>
  );
});

export default CommonBase(CommonDeliverSales(CommonBillDeliver));
