/* eslint-disable */
/* eslint-disable spaced-comment,no-lonely-if */
/* eslint-disable prefer-destructuring */
import React, { Component } from 'react';
import moment from 'moment';
import lodash from 'lodash';
import { DownloadOutlined, DownOutlined, UploadOutlined } from '@ant-design/icons';
import { Menu, Spin, Input, Checkbox, Upload, Modal, Progress } from 'antd-v4';
import { message } from '@/utils/common/message';
import commonConfig from '@/utils/config';
import * as commonUtils from '@/utils/utils';
import StatementInfo from '@/components/CommonElementEvent/StatementInfo';
import FilfileManageInfo from '@/components/CommonElementEvent/FilfileManageInfo';
import BatchPriceUpdate from '@/components/CommonElementEvent/BatchPriceUpdate';
import BatchNPriceUpdate from '@/components/CommonElementEvent/BatchNPriceUpdate';/* 产品单价价格批量更新 */
import AffixMenu from '@/routes/common/AffixMenu';
import * as commonBusiness from '@/components/Common/commonBusiness';
import * as commonFunc from '@/components/Common/commonFunc';
import AntdDraggableModal from '@/components/Common/AntdDraggableModal';
import SlaveMemo from '@/components/Common/SlaveMemo';
import SlaveMemo1 from '@/components/Common/SlaveMemo1';
import * as commonServices from '@/services/services';
import BatchWorkListPriceUpdate from '@/components/CommonElementEvent/BatchWorkListPriceUpdate';
import CommonListSelect from '@/components/Common/CommonListSelect';
import EditorModal from '@/components/Common/EditorModal';
import styles from './index.less';
import SvgIcon from "../../SvgIcon";
import instructSet from "@/components/Common/CommonInstructSet";
import FileImposition from '@/components/Common/FileImposition';
const { SubMenu } = Menu;
const MenuItemGroup = Menu.ItemGroup;
let time;
const throttle = (fn, wtime) => {
return (...arg) => {
if (!time || (Date.now() - time > wtime)) {
time = Date.now();
fn(...arg);
}
}
}
class ToolBarComponent extends Component {
/** 构造函数 */
constructor(props) {
super(props);
this.state = {
menuData: [], /* 导航工具栏 */
enabled: false,
bCheck: false,
bInvalid: false,
reportData: [], /* 报表数据 */
reportSelectedRowKeys: [],
inputChange: '',
checked: false,
checkedId: '',
printData :[], /* 打印数据集 */
};
}
componentWillMount() {
this.componentWillReceiveProps(this.props);
}
componentWillReceiveProps(nextProps) {
const {
masterConfig, gdsjurisdiction, report, masterData, app, menuChildData,
} = nextProps;
let {
searchUpDownData, enabled, bCheck, bInvalid, visibleStatement, visibleBatchPriceUpdate, visibleBatchNPriceUpdate, reportData, reportSelectedRowKeys,
} = this.state;
const btnShowData = [];
commonConfig.btnData.forEach((item) => {
btnShowData.push({ ...item });
});
let menuData = [];
if (commonUtils.isNotEmptyObject(masterConfig) && commonUtils.isEmptyArr(menuData)) {
const buttonConfig = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.showName !== '' && item.sControlName !== '');
/** 筛选出显示的按钮 */
buttonConfig.forEach((child) => {
const index = btnShowData.findIndex(item => item.sControlName === child.sControlName);
if (child.bVisible && child.sControlName.substring(0, 3) === 'Btn' && btnShowData.findIndex(item => item.sControlName === child.sControlName) === -1) {
child.iconName = 'menu-unfold';
if (child.sControlName === 'BtnBatchExamine') { child.iconName = 'check'; }
if (child.sControlName === 'BtnBatchCancelExamine') { child.iconName = 'rollback'; }
if (child.sControlName === 'BtnUpload') { child.iconName = 'upload'; }
if (child.sControlName === 'BtnUploadicon') { child.iconName = 'upload'; }
if (child.sControlName === 'BtnUploadPic') { child.iconName = 'upload'; }
if (child.sControlName === 'BtnCalculation') { child.iconName = 'calculator'; }
if (child.sControlName === 'BtnAddBug') { child.iconName = 'plus'; }
if (child.sControlName === 'BtnAddTo') { child.iconName = 'plus'; }
if (child.sControlName === 'BtnSubmit') { child.iconName = 'submit'; }
if (child.sControlName === 'BtnSubmitCancel') { child.iconName = 'submitCancel'; }
if (child.sControlName === 'BtnBatchSubmit') { child.iconName = 'batchSubmit'; }
if (child.sControlName === 'BtnEventAdjust') { child.iconName = 'batchSubmitCancel'; }
btnShowData.push(child);
} else if (!child.bVisible && index > -1) {
btnShowData.splice(index, 1);
} else if (index > -1) {
btnShowData[index].sColor = child.sColor;
btnShowData[index].showName = child.showName;
btnShowData[index].interface = commonUtils.isNotEmptyArr(child.interface) ? child.interface : []; /* 按钮接口参数 */
btnShowData[index] = { ...child, ...btnShowData[index] };
}
});
/** 根据权限,筛选出显示的按钮 */
gdsjurisdiction.forEach((child) => {
const index = btnShowData.findIndex(item => item.sControlName === child.sAction);
if (index > -1) {
btnShowData.splice(index, 1);
}
});
/* 管理员有重置按钮,非管理员无重置按钮 */
const { sType } = app.userinfo;
if (sType !== 'sysadmin') {
const index = btnShowData.findIndex(item => item.sControlName === 'BtnResetpwd');
if (index > -1) {
btnShowData.splice(index, 1);
}
}
/* 筛选出一级菜单 */
menuData = btnShowData.filter(item => !item.sControlName.includes('.'));
/* 初始值的二级菜单 */
// const secondMenu = btnShowData.filter(item => item.sControlName.includes('.'));
/** 配置后匹配二级菜单 */
menuData.forEach((menu) => {
menu.child = [];
/** 匹配相应的子菜单 */
const childData = btnShowData.filter(item => item.sControlName.startsWith(`${menu.sControlName}.`) && item.sControlName.split('.').length <= 2);
if (menu.sControlName === 'BtnPrint') {
/* 打印的二级菜单集合 */
const reportChild = [];
if (commonUtils.isNotEmptyArr(report)) {
for (const each of report) {
reportChild.push({
sControlName: `BtnPrint.${each.sId}`,
showName: each.sReportName,
disabled: false,
sActiveId: each.sId,
sId: each.sId,
});
}
}
menu.child.push(...reportChild);
} else if (menu.sControlName === 'BtnPrintCustomer' && commonUtils.isNotEmptyObject(menuChildData)) {
const reportChild = [];
if (commonUtils.isNotEmptyArr(menuChildData)) {
for (const each of menuChildData) {
reportChild.push({
sControlName: `BtnPrintCus.${each.sId}`,
showName: each.sReportName,
disabled: false,
sActiveId: each.sId,
sId: each.sId,
});
}
}
menu.child.push(...reportChild);
} else if (commonUtils.isNotEmptyArr(childData)) {
childData.forEach((childTwo) => {
if (childTwo.sControlName === 'BtnBsOperation.BtnUpCheck' || childTwo.sControlName === 'BtnBsOperation.BtnDownCheck') {
const childDataThree = btnShowData.filter(item => item.sControlName.startsWith(`${childTwo.sControlName}.`) && item.sControlName.split('.').length === 3);
childTwo.child = childDataThree;
}
});
menu.child.push(...childData);
}
});
}
/* 按照后台配置加载按钮顺序 */
if(commonUtils.isNotEmptyArr(menuData)) {
menuData = menuData.sort((item, item2) => item.iOrder - item2.iOrder);
}
if (enabled !== nextProps.enabled) {
enabled = nextProps.enabled;
}
if (visibleStatement !== nextProps.visibleStatement) {
visibleStatement = nextProps.visibleStatement;
}
if (visibleBatchPriceUpdate !== nextProps.visibleBatchPriceUpdate) {
visibleBatchPriceUpdate = nextProps.visibleBatchPriceUpdate;
}
if (visibleBatchNPriceUpdate !== nextProps.visibleBatchNPriceUpdate) {
visibleBatchNPriceUpdate = nextProps.visibleBatchNPriceUpdate;
}
if (reportData !== nextProps.reportData) {
reportData = nextProps.reportData;
}
if (reportSelectedRowKeys !== nextProps.reportSelectedRowKeys) {
reportSelectedRowKeys = nextProps.reportSelectedRowKeys;
}
if (commonUtils.isNotEmptyObject(masterData) && bCheck !== masterData.bCheck) {
bCheck = masterData.bCheck;
}
if (commonUtils.isNotEmptyObject(masterData) && bInvalid !== masterData.bInvalid) {
bInvalid = masterData.bInvalid;
}
if (JSON.stringify(searchUpDownData) !== JSON.stringify(nextProps.searchUpDownData)) {
searchUpDownData = nextProps.searchUpDownData;
}
// 当前页面全部数据
const allTableData = commonFunc.getAllTableData(nextProps);
// 当前页面所有选中数据
const allTableSelectedData = Object.keys(allTableData).reduce((result, tableName) => {
const tableData = allTableData[tableName];
if (!Array.isArray(tableData)) {
result = {
...result,
[tableName]: tableData
};
} else {
const { [`${tableName}SelectedRowKeys`]: selectedRowKeys = [] } = nextProps;
result = {
...result,
[tableName]: tableData.filter(item => selectedRowKeys.includes(item.sSlaveId) || selectedRowKeys.includes(item.sId))
};
}
return result;
}, {});
this.setState({
menuData, searchUpDownData, enabled, bCheck, bInvalid, visibleStatement, visibleBatchPriceUpdate, visibleBatchNPriceUpdate, reportData, reportSelectedRowKeys, allTableSelectedData,
});
}
shouldComponentUpdate(nextProps, nextState) {
const { masterConfig } = nextProps;
const {
menuData, searchUpDownData, enabled, bCheck, bInvalid, visibleStatement, visibleBatchPriceUpdate, visibleBatchNPriceUpdate, visibleBatchWorkListPriceUpdate, reportData, reportSelectedRowKeys,
} = this.state;
const {
adDisabled,
} = this.props;
return masterConfig !== undefined && Object.keys(masterConfig).length > 0 &&
(JSON.stringify(menuData) !== JSON.stringify(nextState.menuData) ||
JSON.stringify(masterConfig) !== JSON.stringify(nextState.masterConfig) ||
JSON.stringify(searchUpDownData) !== JSON.stringify(nextState.searchUpDownData) ||
JSON.stringify(reportData) !== JSON.stringify(nextState.initialReportData) ||
JSON.stringify(reportSelectedRowKeys) !== JSON.stringify(nextState.reportSelectedRowKeys) ||
enabled !== nextState.enabled || bCheck !== nextState.bCheck || visibleStatement !== nextState.visibleStatement ||
visibleBatchPriceUpdate !== nextState.visibleBatchPriceUpdate ||
visibleBatchNPriceUpdate !== nextState.visibleBatchNPriceUpdate ||
visibleBatchWorkListPriceUpdate !== nextState.visibleBatchWorkListPriceUpdate ||
bInvalid !== nextState.bInvalid || adDisabled !== nextProps.adDisabled);
}
componentDidUpdate(prevProps) {
const {
slaveSelectedRowKeys, slaveInfoSelectedRowKeys, slaveData, slaveInfoData, masterData,
} = prevProps;
if (JSON.stringify(slaveData) !== JSON.stringify(this.props.slaveData) || JSON.stringify(slaveInfoData) !== JSON.stringify(this.props.slaveInfoData) ||
JSON.stringify(slaveSelectedRowKeys) !== JSON.stringify(this.props.slaveSelectedRowKeys) ||
JSON.stringify(masterData) !== JSON.stringify(this.props.masterData) ||
JSON.stringify(slaveInfoSelectedRowKeys) !== JSON.stringify(this.props.slaveInfoSelectedRowKeys)) {
this.handleBtnEnabled(this.props, false);
}
if (!this.btnSendDialogLoaded) {
const { masterConfig = {} } = this.props;
const { gdsconfigformslave = [] } = masterConfig;
const sBtnSendDialogConfigList = gdsconfigformslave.filter(item => item.sControlName && item.sControlName.includes('BtnSendDialog'));
if (commonUtils.isNotEmptyArr(sBtnSendDialogConfigList) && !this.props.onToolBarBtnClick) {
this.btnSendDialogLoaded = true;
this.props.onSaveState({
onToolBarBtnClick: this.handleClick,
sBtnSendDialogConfigList
});
}
};
}
/** 获取有三级菜单的父级菜单属性 */
getMenuProps = (menu, type) => {
const { iconName, showName: showNameOld, sIcon } = menu;
const { menuStatus, bShown, showName: showNameNew } = this.getMenuStatus(menu);
const showName = showNameNew || showNameOld;
const obj = {};
obj.key = menu.sControlName;
obj.name = showName;
obj.disabled = menuStatus;
obj.style = bShown ? {} : { display: 'none' };
obj.className = this.getMenuStatus(menu) && this.props.billList === 'billList' ? styles.toolBarSubDisabled : styles.toolBarSub;
if (menu.sControlName !== undefined && (menu.sControlName === 'BtnBsOperation.BtnUpCheck' || menu.sControlName === 'BtnBsOperation.BtnDownCheck')) {
obj.onMouseEnter = this.handleMouseEnter; /* 根据二级菜单获取三级数据 */
}
// if (menu.sControlName !== undefined && (menu.sControlName.indexOf('BtnBsOperation.BtnUpCheck') > -1 || menu.sControlName.indexOf('BtnBsOperation.BtnDownCheck') > -1) && menu.sControlName.split('.').length === 3) {
// obj.onMouseEnter = this.handleMouseEnter; /* 根据二级菜单获取三级数据 */
// }
obj['data-sactiveid'] = menu.sActiveId;
if (type === 'icon') {
const imageDom = this.getImageDom(sIcon) || ();
obj.title = {imageDom}{showName};
} else if (type === 'title') {
obj.title = showName;
} else if (type === 'key' && commonUtils.isEmpty(menu.sControlName)) {
obj.key = menu.sId;
}
return obj;
};
/** 获取父级菜单属性 */
getMenuStatus = (menu) => {
let bShown = true;
// 如果配置了按钮自定义状态,走自定义逻辑
const statusObj = this.getMenuStatusCostom(menu);
const { bContinue, bContinueMenuStatus } = statusObj;
if (!bContinue && !bContinueMenuStatus) { // 如果不在配置中,走默认逻辑
return statusObj;
} else if (bContinueMenuStatus) { // 如果只配置了show没有配置enabled,show取自定义结果,enabled走默认逻辑
bShown = statusObj.bShown;
}
let { masterData, formRoute } = this.props;
// 主表数据是当前表格已选中数据
if (formRoute === '/indexPage/commonListLeft') {
const { slaveSelectedData } = this.props;
if (commonUtils.isNotEmptyArr(slaveSelectedData)) {
masterData = slaveSelectedData[0];
}
}
const { sortEnabled } = this.props;
const {
enabled, adDisabled, sModelsType, masterConfig, activeKey, sModelsId,
} = this.props;
if (commonUtils.isEmptyObject(masterData)) {
masterData = {};
}
const { bInvalid, bSubmit } = masterData;
let { bCheck, bNextCheck } = masterData;
/* 是否有审核按钮 基础模块转换的commonNewBill复制到只需通过有无审核按钮判断 */
const iIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sControlName && item.sControlName.includes('BtnCheck'));
let bBtnCheck = true;
if(iIndex > -1) {
bBtnCheck = true;
}else {
bBtnCheck = false;
}
if(location.pathname ==='/indexPage/commonClassify'){ /* 通用分类 若配置没有审核按钮 则默认bCheck不为空 */
if(iIndex === -1) {
bCheck= false;
}
}
let disabledData = []; /* 置灰按钮集合 */
if (adDisabled) {
disabledData = ['BtnAdd', 'BtnAddChild', 'BtnUpd', 'BtnDel', 'BtnSave', 'BtnCancel', 'BtnSetPeriod'];
} else if (!adDisabled) {
if (!enabled) {
if (bInvalid) { // 已作废
disabledData = ['BtnUpd', 'BtnDel', 'BtnSave', 'BtnCancel', 'BtnExamine', 'BtnCancelExamine', 'BtnCopyTo', 'BtnCopyFrom', 'BtnBsOperation.BtnInvalid', 'BtnInvalid'];
} else if (bCheck) { // 已审核
if (!commonUtils.isEmpty(sModelsType) && sModelsType.includes('element/')) {
if (sModelsType === 'element/customerInfo') {
const iIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'BtnCheck');
if (iIndex > -1) {
disabledData = ['BtnDel', 'BtnSave', 'BtnCancel', 'BtnExamine', 'BtnCopyFrom', 'BtnCancelInvalid', 'BtnImport']; //'BtnUpd',
} else {
disabledData = ['BtnSave', 'BtnCancel', 'BtnCancelExamine', 'BtnCopyFrom', 'BtnCancelInvalid'];
}
} else {
disabledData = ['BtnSave', 'BtnCancel', 'BtnCancelExamine', 'BtnCopyFrom', 'BtnCancelInvalid'];
}
} else {
/* 已审核查看状态 修改 删除 保存 取消 审核 复制从 取消作废置灰 */
disabledData = ['BtnUpd', 'BtnDel', 'BtnSave', 'BtnCancel', 'BtnExamine', 'BtnCopyFrom', 'BtnCancelInvalid', 'BtnImport'];
}
} else {
/** 查看状态 修改 删除 保存 取消 审核 复制从置灰 */
disabledData = ['BtnSave', 'BtnCancel', 'BtnCopy2Custom', 'BtnCancelExamine', 'BtnCopyTo', 'BtnCopyFrom', 'BtnCancelInvalid'];
if (!commonUtils.isEmpty(sModelsType) && sModelsType.includes('element/')) {
/* 除了客户信息,其他基础信息在查看状态状态下 复制到常亮 */
disabledData = ['BtnSave', 'BtnCancel', 'BtnCancelExamine', 'BtnCopyFrom', 'BtnCancelInvalid'];
if (sModelsType === 'element/customerInfo') {
const iIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'BtnCheck');
if (iIndex > -1) {
disabledData = ['BtnSave', 'BtnCancel', 'BtnCancelExamine', 'BtnCopyTo', 'BtnCopyFrom', 'BtnCancelInvalid'];
}
}
}
}
} else {
/* 修改状态 */
if (sModelsType === 'production/productionPlanInfo' || sModelsType === 'productionMainPlan/productionMainPlan') {
disabledData = ['BtnAdd', 'BtnAddChild', 'BtnUpd', 'BtnDel', 'BtnFirst', 'BtnPrior', 'BtnNext', 'BtnLast', 'BtnUpCheck', 'BtnDownCheck', 'BtnExamine', 'BtnCancelExamine', 'BtnCopyTo', 'BtnBsOperation.BtnInvalid', 'BtnBsOperation.BtnCancelInvalid', 'BtnCancelInvalid', 'BtnInvalid'];
} else {
disabledData = ['BtnRefresh', 'BtnAdd', 'BtnInit', 'BtnExportSql','Btn', 'BtnAddChild', 'BtnUpd', 'BtnDel', 'BtnFirst', 'BtnPrior', 'BtnNext', 'BtnLast', 'BtnUpCheck', 'BtnDownCheck', 'BtnExamine', 'BtnCancelExamine', 'BtnCopyTo', 'BtnBsOperation.BtnInvalid', 'BtnBsOperation.BtnCancelInvalid', 'BtnPrint', 'BtnCancelInvalid', 'BtnInvalid'];
}
}
}
if (bSubmit) {
// 提交后不能修改
if (!disabledData.includes('BtnUpd')) {
disabledData.push('BtnUpd');
}
if (!disabledData.includes('BtnDel')) {
disabledData.push('BtnDel');
}
if (!disabledData.includes('BtnSave')) {
disabledData.push('BtnSave');
}
if (!disabledData.includes('BtnEventCancel')) {
disabledData.push('BtnEventCancel');
}
// 提交后提交按钮变灰
if (!disabledData.includes('BtnSubmit')) {
disabledData.push('BtnSubmit');
}
// 提交后取消提交按钮变亮
if (disabledData.indexOf('BtnSubmitCancel') !== -1) {
disabledData.splice(disabledData.indexOf('BtnSubmitCancel'), 1);
}
} else {
// 未提交时取消提交按钮变灰
if (!disabledData.includes('BtnSubmitCancel')) {
disabledData.push('BtnSubmitCancel');
disabledData.push('BtnEventOrder');
}
}
// 修改或者审核后提交、取消提交按钮都变灰
if (enabled || bCheck) {
if (!disabledData.includes('BtnSubmit')) {
disabledData.push('BtnSubmit');
}
if (!disabledData.includes('BtnSubmitCancel')) {
disabledData.push('BtnSubmitCancel');
}
}
if(bCheck) { /* 已审核状态下 审核按钮灰色 */
if (!disabledData.includes('BtnEventOrder')) {
disabledData.push('BtnEventOrder');
}
// if (!disabledData.includes('BtnEventSubmit')) {
// disabledData.push('BtnEventSubmit');
// }
// /* 已审核状态下 消审亮 */
// if (disabledData.indexOf('BtnEventSubmitCancel') !== -1) {
// disabledData.splice(disabledData.indexOf('BtnEventSubmitCancel'), 1);
// }
/* 已审核状态下 驳回灰色 */
// if (!disabledData.includes('BtnEventCancel')) {
// disabledData.push('BtnEventCancel');
// }
// if (!disabledData.includes('BtnBatchExamine')) {
// disabledData.push('BtnBatchExamine');
// }
}
/* 未审核状态 ,审核按钮亮,销审按钮灰色 */
if(!bCheck) {
if (!disabledData.includes('BtnEventSubmitCancel')) {
disabledData.push('BtnEventSubmitCancel');
}
if (!disabledData.includes('BtnBatchCancelExamine')) {
disabledData.push('BtnBatchCancelExamine');
}
}
/* 若下游已审核,则上游的消审按钮置灰 */
if(bNextCheck) {
if (!disabledData.includes('BtnEventSubmitCancel')) {
disabledData.push('BtnEventSubmitCancel');
}
if (!disabledData.includes('BtnBatchCancelExamine')) {
disabledData.push('BtnBatchCancelExamine');
}
}
/*
将按钮的sButtonParam中的b开头字段的值 与 主表中相同字段的值做对比
值相同 代表审核通过 对应按钮置灰
**/
const sButtonParamBtn = masterConfig.gdsconfigformslave.filter(
item =>
commonUtils.isNotEmptyStr(item.showName)
&& commonUtils.isNotEmptyStr(item.sControlName)
&& commonUtils.isNotEmptyStr(item.sButtonParam)
);
sButtonParamBtn.forEach(btn => {
const { sButtonParam = {} } = commonUtils.convertStrToObj(btn.sButtonParam);
const key = Object.keys(sButtonParam).find(item => item && item.substring(0, 1) === 'b');
if (key) {
const bCheckCostom = masterData[key] === sButtonParam[key];
if (bCheckCostom) {
disabledData.push(btn.sControlName);
}
}
});
// 生产排程搜索时不可以上下移动
if (sortEnabled === false) {
if(sModelsType === 'production/productionPlanInfo') {
// disabledData.push('BtnSave');
}
disabledData.push('BtnRepairstartdate');
}
/* 通用上传按钮 除了新增,其他状态下都是亮的*/
if (menu.sControlName === 'BtnUpload') {
const { handleType } = masterData;
if (handleType === 'add') {
disabledData.push('BtnUpload');
}
}
// 其它自定义按钮不在以上 不能操作数据里
if (menu.disabled) {
disabledData.push(menu.sControlName);
}
// 订单已审核 价格批量更新亮 */
if (commonUtils.isNotEmptyObject(menu.sControlName) && menu.sControlName.includes('PriceUpdate')) {
const { bCheck } = masterData;
if (!bCheck) {
disabledData.push(menu.sControlName);
}
}
/* 导入未清按钮 只有编辑亮的*/
if (menu.sControlName === 'BtnImportFormData') {
if (!enabled) {
disabledData.push('BtnImportFormData');
}
}
/* 盘点导出模板数据 只有非编辑 按钮亮*/
if (menu.sControlName === 'BtnOutTemplateData') {
if (enabled) {
disabledData.push('BtnOutTemplateData');
}
}
if (sModelsType === 'productionMainPlan/productionMainPlan') {
// 主计划中保存,取消保存按钮默认不可点击
if (disabledData.indexOf('BtnSave') === -1) {
disabledData.push('BtnSave');
}
if (disabledData.indexOf('BtnRefresh') === -1) {
disabledData.push('BtnRefresh');
}
// 生产主计划数据集有改动的时候才会高亮保存按钮
// 生产主计划保存按钮和确认计划的按钮互斥,存一
if (this.props.dataChanged === true) {
// 列表有所改动
// 显示保存,禁用确认计划
if (disabledData.indexOf('BtnSave') !== -1) {
disabledData.splice(disabledData.indexOf('BtnSave'), 1);
}
if (disabledData.indexOf('BtnRefresh') !== -1) {
disabledData.splice(disabledData.indexOf('BtnRefresh'), 1);
}
if (disabledData.indexOf('BtnUnifiedPlanning') === -1) {
disabledData.push('BtnUnifiedPlanning');
}
}
// if (this.props.dataChanged === false) {
// if (disabledData.indexOf('BtnUnifiedPlanning') !== -1) {
// disabledData.splice(disabledData.indexOf('BtnUnifiedPlanning'), 1);
// }
// if (disabledData.indexOf('BtnSave') === -1) {
// disabledData.push('BtnSave');
// disabledData.push('BtnRefresh'); /* 生产主计划刷新按钮的亮与灰与保存按钮同步 */
// }
// }
}
if (sModelsType === 'system/sisformulaInfo') { // 方案保存开放复制方案
disabledData.splice(disabledData.indexOf('BtnCopyTo'), 1);
}
/* 审核中的按钮 所有按钮都置灰 */
if( commonUtils.isNotEmptyObject(masterData) && masterData.sStatus === '2') {
const disabledDataNew = ['BtnUpd', 'BtnDel', 'BtnRevert', 'BtnSave', 'BtnCopyTo', 'BtnCancel', 'BtnExamine','BtnCancelExamine', 'BtnCopyFrom', 'BtnCancelInvalid', 'BtnImport',
'BtnBsOperation.BtnInvalid', 'BtnBsOperation.BtnCancelInvalid', 'BtnUpload', 'BtnSend','BtnEject', 'BtnBsOperation.BtnUpCheck',
'BtnBsOperation'
];
if(commonUtils.isNotEmptyArr(disabledDataNew)) {
for (const item of disabledDataNew) {
const iIndex = disabledData.findIndex(each => each === item);
if(iIndex === -1) {
disabledData.push(item);
}
}
}
}
/* 红冲中的单据 根据条件进行所有按钮置灰 */
if(commonUtils.isNotEmptyObject(masterData) && ((masterData.bCheck && commonUtils.isNotEmptyObject(masterData.sMinusSrcId)) || commonUtils.isNotEmptyObject(masterData.sMinusUsed) )) {
disabledData = ['BtnUpd', 'BtnDel', 'BtnRevert', 'BtnSave', 'BtnCopyTo', 'BtnCancel', 'BtnExamine','BtnCancelExamine', 'BtnCopyFrom', 'BtnCancelInvalid', 'BtnImport',
'BtnBsOperation.BtnInvalid', 'BtnBsOperation.BtnCancelInvalid', 'BtnUpload', 'BtnSend','BtnEject', 'BtnBsOperation.BtnUpCheck',
'BtnBsOperation'
];
}
/* 红冲中的单据 红冲按钮置灰色 */
if(commonUtils.isNotEmptyObject(masterData) && (commonUtils.isNotEmptyObject(masterData.sMinusSrcId) || commonUtils.isNotEmptyObject(masterData.sMinusUsed) )) {
disabledData.push('BtnCopyTo.ActProductionMaterials'); /* 红冲单据按钮若已红冲 则置灰色 */
}
/* 工艺卡启用按钮 只有审核是亮的 */
if(location.pathname.includes('processCardPackTableTree')) {
if (!masterData.bCheck) {
disabledData.push('BtnEventEnable');
}
}
/* 单据的自定义按钮,控制它在保存后才高亮 */
if(location.pathname.includes('Bill')) {
if (commonUtils.isNotEmptyObject(menu.sControlName) && (
menu.sControlName.indexOf('BtnEvent') > -1
|| menu.sControlName.indexOf('BtnRepair') > -1
|| menu.sControlName.indexOf('BtnSubmit') > -1
|| menu.sControlName.indexOf('BtnBatchSubmit') > -1
) ) {
if(enabled) { /* 只有非编辑编辑状态 按钮会亮 */
disabledData.push(menu.sControlName);
}
}
if (commonUtils.isNotEmptyObject(menu.sControlName) && menu.sControlName.indexOf('BtnCalc') > -1) {
if(!enabled) { /* 只有编辑状态 按钮会亮 */
disabledData.push(menu.sControlName);
}
}
}
if(location.pathname.includes('systemPermission')) {
if(activeKey === '3') { /* 用户权限 */
if (commonUtils.isNotEmptyObject(menu.sControlName) && menu.sControlName.indexOf('BtnRepairGroup') > -1) {
disabledData.push(menu.sControlName);
}
}else { /* 组权限 */
if (commonUtils.isNotEmptyObject(menu.sControlName) && menu.sControlName.indexOf('BtnRepairUser') > -1) {
disabledData.push(menu.sControlName);
}
}
}
if (menu.sColor === 'alwaysAbled') {
const iIndex = disabledData.findIndex(item => item === menu.sControlName)
if (iIndex !== -1) {
disabledData.splice(iIndex, 1);
}
if(sModelsId === '12710101117055564119120' || sModelsId === '12710101117170330526240') { /* 物资评审 采购申请常亮 */
const iCIndex = disabledData.findIndex(item => item === 'BtnCopyTo');
if (iCIndex !== -1) {
disabledData.splice(iCIndex, 1);
}
}
}
let bReturn = true;
if (menu.sControlName !== undefined && menu.sControlName.indexOf('.') > -1) {
bReturn = disabledData.findIndex(item => item === menu.sControlName.substring(0, menu.sControlName.indexOf('.'))) > -1;
if (!bReturn) {
bReturn = disabledData.findIndex(item => item === menu.sControlName) > -1;
}
} else {
bReturn = disabledData.findIndex(item => item === menu.sControlName) > -1;
}
bReturn = bReturn || (this.props.getMenuStatus !== undefined && this.props.getMenuStatus(menu));
return { menuStatus: bReturn, bShown };
};
// 获取父级菜单属性(自定义逻辑)
getMenuStatusCostom = (menu) => {
const { sInstruct: sInstructStr } = this.props.masterConfig || {};
const sInstruct = commonUtils.convertStrToObj(sInstructStr, {});
const { data = [], conditionGroup = {} } = sInstruct;
let menuStatus = false;
let bShown = true;
const { showName: showNameDefault } = menu;
let { sControlName } = menu;
if (sControlName && sControlName.includes('BtnPrint')) {
sControlName = 'BtnPrint';
}
let showName = showNameDefault;
const btnConfig = data.find(
item =>
item.name &&
item.name.split(',').includes(sControlName) &&
(item.enabled !== undefined || item.show !== undefined)
);
if (btnConfig === undefined) return { bContinue: true };
const getStatus = (type, defaultValue) => {
const { [type]: condition = "" } = btnConfig;
if (condition === '') return defaultValue;
if (typeof condition === "boolean") {
return condition;
} else if (condition.includes("conditionGroup")) {
const [, conditionName] = condition.split(".");
const conditionNew = conditionGroup[conditionName];
const result = this.getStatusResult(conditionNew, defaultValue);
return condition.includes("!") ? !result : result;
} else if (typeof condition === "string") {
return this.getStatusResult(condition, defaultValue);
}
return defaultValue;
}
menuStatus = !getStatus('enabled', menuStatus);
bShown = getStatus('show', bShown);
const { showText } = btnConfig;
if (typeof showText === 'string') {
showName = showText;
} else if (commonUtils.isNotEmptyArr(showText)) {
for (let i = 0; i < showText.length; i++) {
let tempResult = false;
const item = showText[i];
const { condition, text } = item;
if (condition.includes("conditionGroup")) {
const [, conditionName] = condition.split(".");
const conditionNew = conditionGroup[conditionName];
tempResult = this.getStatusResult(conditionNew, tempResult);
tempResult = condition.includes("!") ? !tempResult : tempResult;
} else {
tempResult = this.getStatusResult(condition, tempResult);
}
if (tempResult) {
showName = text;
break;
}
}
}
// 是否继续走原先的逻辑(当没有配置enabled时)
const bContinueMenuStatus = btnConfig.enabled === undefined;
return { menuStatus, bShown, showName, bContinueMenuStatus };
}
matchResult = (rowData, sFileName, conditionStr, conditionValue) => {
let rowDataValue = rowData[sFileName];
try {
if (rowDataValue === undefined || rowDataValue === null || rowData === 'null') {
rowDataValue = '';
} else {
rowDataValue = rowDataValue.toString();
}
} catch (error) {}
switch (conditionStr) {
case '===':
return rowDataValue === conditionValue;
case '==':
return rowDataValue === conditionValue;
case '>=':
return rowDataValue >= conditionValue;
case '<=':
return rowDataValue <= conditionValue;
case '>':
return rowDataValue > conditionValue;
case '<':
return rowDataValue < conditionValue;
case '!=':
return rowDataValue != conditionValue;
case '!==':
return rowDataValue !== conditionValue;
default:
throw new Error('conditionStr is not valid');
}
}
getStatusResult = (str, defaultValue) => {
let strNew = str.replace(/\s+/g, '');
let result = defaultValue;
const { allTableSelectedData: tempData } = this.state;
tempData.props = {
sSrcModelsId: this.props.sSrcModelsId,
enabled: !!this.props.enabled
};
Object.keys(tempData).forEach(key => {
const reg = new RegExp(`${key}\\.`, "g");
strNew = strNew.replace(reg, `tempData["${key}"].`);
});
try {
// 截取字符串中 ${tableName@all.fieldName.判断符号.判断内容} 格式的内容
const reg1 = /\$\{[^{}@]+@[^{}\.]+\.[^{}\.]+\.[^{}\.]+\.[^{}\.]*\}/g;
strNew = strNew.replace(reg1, (matchStr) => {
const matchStrNew = matchStr.substring(2, matchStr.length - 1);
const [tableName, restStr] = matchStrNew.split("@");
const [filterType, sFileName, conditionStr, conditionValue] = restStr.split('.');
let matchResult = matchStr;
const tableData = tempData[tableName] || [];
const selectedRowKeys = this.props[`${tableName}SelectedRowKeys`] || [];
const selectedData = tableData.filter(rowData => selectedRowKeys.includes(rowData.sSlaveId) || selectedRowKeys.includes(rowData.sId));
if (commonUtils.isEmptyObject(selectedData)) return false;
if (filterType === 'all') {
matchResult = !selectedData.some(rowData => !this.matchResult(rowData, sFileName, conditionStr, conditionValue));
} else if (filterType === 'one') {
matchResult = selectedData.some(rowData => this.matchResult(rowData, sFileName, conditionStr, conditionValue));
}
return matchResult;
});
const evalStr = eval("`" + strNew + "`");
console.log('=====数据处理结果', { tempData, str, strNew, evalStr });
result = eval(evalStr);
} catch (error) {
console.log('=====error', error);
// clearInterval(this.modaltimer);
// this.modaltimer = setTimeout(() => {
// Modal.error({
// width: 1000,
// title: "按钮状态指令集错误信息",
// content:
//
按钮状态运算错误!
//
请检查按钮状态运算语法!
//
按钮状态运算内容:
//
{str}
//
按钮状态运算被替代后的结果:
//
{strNew}
//
,
// okText: "知道了"
// });
// }, 1000);
return defaultValue;
}
if (typeof result !== "boolean") {
clearInterval(this.modaltimer);
this.modaltimer = setTimeout(() => {
clearInterval(this.modaltimer);
Modal.error({
width: 1000,
title: "按钮状态指令集错误信息",
content:
按钮状态运算返回值不是布尔值!
请检查按钮状态运算语法!
按钮状态运算内容:
{str}
按钮状态运算被替代后的结果:
{strNew}
按钮状态运算返回值:
{result}
,
okText: "知道了"
});
}, 1000);
return defaultValue;
}
console.log('=====result', result);
return result;
}
getDisabledProps = (name) => {
if (commonUtils.isNotEmptyObject(name)) {
const { enabled } = this.props;
const obj = {};
obj.disabled = enabled;
return obj;
}
};
/* */
handleBtnEnabled = (props, isReturn) => {
const { masterConfig: masterConfigOld } = props;
if (commonUtils.isNotEmptyObject(masterConfigOld)) {
const masterConfig = JSON.parse(JSON.stringify(masterConfigOld));
const buttonConfig = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.showName !== '' && item.sControlName !== '');
if (commonUtils.isNotEmptyArr(buttonConfig)) {
for (const btnItem of buttonConfig) {
const iIndex = masterConfig.gdsconfigformslave.findIndex(item => btnItem.sId === item.sId);
let btndisabled = false;
if (commonUtils.isNotEmptyStr(btnItem.sButtonEnabled)) {
btndisabled = this.handleAnalysisBtnEnabled(props, btnItem, masterConfig.gdsconfigformslave);
}
if (!!masterConfig.gdsconfigformslave[iIndex].disabled !== btndisabled) {
masterConfig.gdsconfigformslave[iIndex].disabled = btndisabled; // = { ...masterConfig.gdsconfigformslave[iIndex], disabled: btndisabled };
}
}
}
if (isReturn) {
return { ...masterConfig };
} else if (JSON.stringify(masterConfig) === JSON.stringify(masterConfigOld)) {
return;
} else {
const addState = {};
addState.masterConfig = { ...masterConfig };
this.props.onSaveState({ ...addState });
}
}
}
handleAnalysisBtnEnabled = (props, currConfig, gdsconfigformslave) => {
const { sButtonEnabled } = currConfig;
let btndisabled = false;
if (commonUtils.isNotEmptyObject(sButtonEnabled)) {
const btnObj = JSON.parse(sButtonEnabled);
const solution = btnObj.solution;
const rowSelected = btnObj.rowSelected;
const buttonFilter = btnObj.button; /* 需要控制的按钮集 */
const dataArr = btnObj.data; /* 根据数据控制按钮亮与灰色 */
// 解析配置中 solution:["新工单"]
if (!(commonUtils.isNotEmptyArr(solution) && solution.includes(props.masterData.sSolutionName))) {
btndisabled = true;
// return btndisabled;
}
let disabledRowSelected;
// 解析配置中 rowSelected: [{name:'master',rule:'&&'},{name:'slave',rule:'&&'}],
if (commonUtils.isNotEmptyArr(rowSelected)) {
let rule;
let selectRt;
let i = 0;
for (const item of rowSelected) {
const name = item.name;
i += 1;
if (commonUtils.isNotEmptyArr(props[`${name}SelectedRowKeys`])) {
selectRt = true; // 表示 满足当前条件,
} else {
selectRt = false;
}
/* 只有1个配置:
selectRt = true 当满足当前条件,按钮应该为亮,即当前btndisabled =false,不返回继续往下进行判断
selectRt = false 不当满足当前条件,按钮应该为灰色,即当前btndisabled =true,已经有条件不满足,按钮可直接定为灰色的,即直接返回true
*/
if (i === 1) {
disabledRowSelected = selectRt;
} else if (i > 1 && rule === '&&') {
disabledRowSelected = selectRt && disabledRowSelected;
} else if (i > 1 && rule === '||') {
disabledRowSelected = selectRt || disabledRowSelected;
}
rule = item.rule;
}
if (!disabledRowSelected) {
btndisabled = true;
// return btndisabled;
}
}
// gdsconfigformslave[iIndex].disabled 为true 表示按钮至灰, false 表示按钮亮,可使用
let disabledButtonFilter;
if (commonUtils.isNotEmptyArr(buttonFilter)) {
let rule;
let buttonRt;
let i = 0;
for (const item of buttonFilter) {
i += 1;
const name = item.name;
const currDisabled = !item.enabled;
const iIndex = gdsconfigformslave.findIndex(config => config.sControlName === name);
if (iIndex === -1) {
continue;
}
const tempDisabled = gdsconfigformslave[iIndex].disabled;
if (tempDisabled === currDisabled) {
buttonRt = true;
} else {
buttonRt = false;
}
if (i === 1) {
disabledButtonFilter = buttonRt;
} else if (i > 1 && rule === '&&') {
disabledButtonFilter = buttonRt && disabledRowSelected;
} else if (i > 1 && rule === '||') {
disabledButtonFilter = buttonRt || disabledRowSelected;
}
rule = item.rule;
}
if (!disabledButtonFilter) {
btndisabled = true;
// return btndisabled;
}
}
/* 按钮根据需要能按字段值来控制 */
if (commonUtils.isNotEmptyArr(dataArr)) {
const currButtonName = currConfig.sControlName; /* 当前按钮 */
let flag = btndisabled;
for (const item of dataArr) {
const {
name, fieldName, condition, value,showBtn, hideBtn,
} = item;
const {[`${name}Data`]: tableData, [`${name}SelectedRowKeys`]: selectedRowKeys, masterData} = this.props;
let tableDataRow = {};
if (name === 'master') {
tableDataRow = masterData;
} else {
const filterData = commonUtils.isNotEmptyArr(tableData) && commonUtils.isNotEmptyArr(selectedRowKeys) ? tableData.filter(item => selectedRowKeys.includes(item.sId) || selectedRowKeys.includes(item.sSlaveId)) : [];
if (commonUtils.isNotEmptyArr(filterData)) {
tableDataRow = filterData[0];
}
}
if (commonUtils.isNotEmptyObject(tableDataRow)) {
if (condition === '>') {
if (tableDataRow[fieldName] > value) {
if(commonUtils.isNotEmptyArr(showBtn)) {
const iIndex= showBtn.findIndex(item => item.indexOf(currButtonName));
if(iIndex > -1) {
flag = false; /* 按钮亮 */
}
}
if(commonUtils.isNotEmptyArr(hideBtn)) {
const iIndex= hideBtn.findIndex(item => item.indexOf(currButtonName));
if(iIndex > -1) {
flag = true; /* 按钮灰 */
}
}
}
} else if (condition === '===') {
if (tableDataRow[fieldName] === value) {
if(commonUtils.isNotEmptyArr(showBtn)) {
const iIndex= showBtn.findIndex(item => item.indexOf(currButtonName) > -1);
if(iIndex > -1) {
flag = false; /* 按钮亮 */
}
}
if(commonUtils.isNotEmptyArr(hideBtn)) {
const iIndex= hideBtn.findIndex(item => item.indexOf(currButtonName));
if(iIndex > -1) {
flag = true; /* 按钮灰 */
}
}
}
}else if (condition === '!==') {
if (tableDataRow[fieldName] !== value) {
if(commonUtils.isNotEmptyArr(showBtn)) {
const iIndex= showBtn.findIndex(item => item.indexOf(currButtonName) > -1);
if(iIndex > -1) {
flag = false; /* 按钮亮 */
}
}
if(commonUtils.isNotEmptyArr(hideBtn)) {
const iIndex= hideBtn.findIndex(item => item.indexOf(currButtonName));
if(iIndex > -1) {
flag = true; /* 按钮灰 */
}
}
}
} else if (condition === '<') {
if (tableDataRow[fieldName] < value) {
if(commonUtils.isNotEmptyArr(showBtn)) {
const iIndex= showBtn.findIndex(item => item.indexOf(currButtonName));
if(iIndex > -1) {
flag = false; /* 按钮亮 */
}
}
if(commonUtils.isNotEmptyArr(hideBtn)) {
const iIndex= hideBtn.findIndex(item => item.indexOf(currButtonName));
if(iIndex > -1) {
flag = true; /* 按钮灰 */
}
}
}
} else if (condition === 'like') {
if (fieldName.substring(0, 1) === 's') {
if(commonUtils.isNotEmptyArr(showBtn)) {
const iIndex= showBtn.findIndex(item => item.indexOf(currButtonName));
if(iIndex > -1) {
flag = false; /* 按钮亮 */
}
}
if(commonUtils.isNotEmptyArr(hideBtn)) {
const iIndex= hideBtn.findIndex(item => item.indexOf(currButtonName));
if(iIndex > -1) {
flag = true; /* 按钮灰 */
}
}
}
}
}
}
btndisabled = flag;
}
/* End */
}
return btndisabled;
}
/** 根据二级菜单获取三级数据 */
handleMouseEnter = (e) => {
if (commonUtils.isNotEmptyStr(e.key) && this.props.onSearchUpDownThird !== undefined) {
this.props.onSearchUpDownThird(e.key);
}
};
handleMouseEnterTooBar = () => {
const focusedElement = document.activeElement;
if (focusedElement.tagName.toLowerCase() === "input") {
focusedElement.blur();
}
}
handleImport = async (proName, proInParam, other) => {
this.props.onSaveState({
loading: true,
});
const {
sModelsId, masterData, slaveData, slaveDelData: slaveDelDataOld, app,
} = this.props;
const btnConfig = this.props.masterConfig.gdsconfigformslave.filter(item => (item.sControlName === 'BtnCommonImport'))[0];// sButtonEnabled sButtonParam
if (!commonUtils.isNotEmptyObject(btnConfig) || !commonUtils.isNotEmptyStr(btnConfig.sButtonParam)) {
message.error('请配置按钮的存储过程');
this.props.onSaveState({
loading: false,
});
}
const sButtonParam = btnConfig.sButtonParam;
const btn = JSON.parse(sButtonParam);
const sProName = btn.sproName;
const inParams = [];
const inMap = btn.inMap;
const inlist = inMap ? inMap.split(',') : [];
const masterArr = [];
const slaveArr = [];
const slaveInfoArr = [];
const controlArr = [];
const materialsArr = [];
const processArr = [];
if (!sTableName && !inMap) { // 都为undefined时直接退出
return;
}
if (inlist.length > 0) {
inlist.forEach((item) => {
const itemArr = item.split('.');
if (itemArr.length > 0) {
const sname = itemArr[0];
const stype = itemArr[1];
if (commonUtils.isNotEmptyStr(sname) && sname === 'master') {
masterArr.push(stype);
}
if (commonUtils.isNotEmptyStr(sname) && sname === 'slave') {
slaveArr.push(stype);
}
if (commonUtils.isNotEmptyStr(sname) && sname === 'slaveInfo') {
slaveInfoArr.push(stype);
}
if (commonUtils.isNotEmptyStr(sname) && sname === 'control') {
controlArr.push(stype);
}
if (commonUtils.isNotEmptyStr(sname) && sname === 'materials') {
materialsArr.push(stype);
}
if (commonUtils.isNotEmptyStr(sname) && sname === 'process') {
processArr.push(stype);
}
}
});
if (commonUtils.isNotEmptyArr(masterArr) && commonUtils.isNotEmptyObject(masterData)) {
const addState = {};
addState.key = 'master';
const val = [];
const currVal = {};
masterArr.forEach((filed) => {
currVal[`${filed}`] = masterData[`${filed}`];
});
val.push(currVal);
addState.value = val;
inParams.push({ ...addState });
}
if (commonUtils.isNotEmptyArr(slaveArr)) {
const addState = this.handleProParams('slave', slaveArr);
if (commonUtils.isNotEmptyObject(addState)) {
inParams.push({ ...addState });
}
}
if (commonUtils.isNotEmptyArr(slaveInfoArr)) {
const addState = this.handleProParams('slaveInfo', slaveInfoArr);
if (commonUtils.isNotEmptyObject(addState)) {
inParams.push({ ...addState });
}
}
if (commonUtils.isNotEmptyArr(controlArr)) {
const addState = this.handleProParams('control', controlArr);
if (commonUtils.isNotEmptyObject(addState)) {
inParams.push({ ...addState });
}
}
if (commonUtils.isNotEmptyArr(materialsArr)) {
const addState = this.handleProParams('materials', materialsArr);
if (commonUtils.isNotEmptyObject(addState)) {
inParams.push({ ...addState });
}
}
if (commonUtils.isNotEmptyArr(processArr)) {
const addState = this.handleProParams('process', processArr);
if (commonUtils.isNotEmptyObject(addState)) {
inParams.push({ ...addState });
}
}
}
const value = { sProName, sProInParam: JSON.stringify({ params: inParams }) };
if (other?.iFlag === 1) {
value.iFlag = 1;
}
const url = `${commonConfig.server_host}procedureCall/doGenericProcedureCall?sModelsId=${sModelsId}`;
const dataReturn = (await commonServices.postValueService(app.token, value, url)).data;
// const url = `${commonConfig.server_host}eleMaterialsStock/getEleMaterialsStock?sModelsId=${sModelsId}&sWareHouseId=${masterData.sWareHouseId}&num=${num}`;
// const dataReturn = (await commonServices.getService(this.props.app.token, url)).data;
if (dataReturn.code === 1) {
const returnData = dataReturn.dataset.rows;
const slaveDelData = commonUtils.isEmptyArr(slaveDelDataOld) ? [] : slaveDelDataOld;
slaveData.forEach((item) => {
item.handleType = 'del';
slaveDelData.push({ ...item });
});
returnData.forEach((item, index) => {
item.handleType = 'add';
item.sParentId = masterData.sId;
item.iOrder = index + 1;
returnData[index] = { ...item };
});
this.props.onSaveState({ slaveData: returnData, slaveDelData });
} else {
this.props.getServiceError({ ...dataReturn, fn: () => this.handleImport(proName, proInParam, { iFlag: 1 }) });
}
this.props.onSaveState({
loading: false,
});
}
handleSBusinessType = (key, sBusinessType) => {
const result = ({
'BtnCopyTo.saldelivergoods': (v) => ({ isTrue: ['ZS05'].includes(v), message: '送货单只能选择非免费订单' }),
'BtnCopyTo.saldeliverfree': (v) => ({ isTrue: !['ZS05'].includes(v), message: '免费送货只能选择免费订单' })
})[key];
return result?.(sBusinessType);
}
/**
* 区分是否免费送货
* @param {*} key
* @returns
*/
handleFreeDeliver = (key) => {
if (['BtnCopyTo.saldelivergoods', 'BtnCopyTo.saldeliverfree'].includes(key)
&& Array.isArray(this.props.slaveSelectedData) && this.props.slaveSelectedData.length) {
const selectSBusinessType = this.props.slaveSelectedData.map(i => i?.sBusinessType);
if (selectSBusinessType.includes('ZS05') && selectSBusinessType.find(i => i !== 'ZS05')) {
message.error('送货单只能选择非免费订单, 免费送货只能选择免费订单');
return true;
} else {
const result = this.handleSBusinessType(key, selectSBusinessType[0])
if (result?.isTrue) {
message.error(result?.message || '送货类型需保持一致');
return true;
}
}
}
}
// 按钮指令集
handleClick = (e) => {
// 如果没找到调用指令集方法,执行原始方法
if (!this.props.onExecInstructSet) {
this.handleClick1(e);
return;
}
let { key } = e;
const { menuData } = this.state;
if (key.includes('BtnCopyTo')) {
key = 'BtnCopyTo';
}
const iIndex = menuData.findIndex(item => item.sName === key || item.sControlName === key);
const { sInstruct: sInstructStr, sChangeType } = (iIndex > -1) ? menuData[iIndex] : {};
console.log( menuData[iIndex]);
const sInstruct = commonUtils.convertStrToObj(sInstructStr, {});
// const { data = [] } = sInstruct;
// console.log('btnConfig', iIndex, sInstruct, data);
// const btnConfig = data.find(item => item.name && item.name.split(',').includes(key) && item.click);
if (commonUtils.isEmptyObject(sInstruct)) {
this.handleClick1(e);
return;
}
if (sChangeType === 'clickOnly') {
// 只执行指令集
this.props.onExecInstructSet({
sInstruct: sInstruct,
showName: "按钮only"
});
} else if (sChangeType === 'afterClick') {
// 先按钮再指令集
this.handleClick1(e);
setTimeout(() => {
this.props.onExecInstructSet({
sInstruct: sInstruct,
showName: "按钮-指令集"
});
}, 1000);
} else {
// 先指令集再按钮
this.props.onExecInstructSet({
sInstruct: sInstruct,
showName: "指令集-按钮",
callback: (ex) => {
console.log('=====xxx', '指令集-按钮', ex);
this.handleClick1(e);
}
});
}
}
/** 菜单的点击事件 */
handleClick1 = async (e) => {
if (this.props.onToolBarClick && this.props.onToolBarClick(e)) {
return;
}
let checkedBoolean = false;
let obj = { enabled: false };
const { checked, checkedId, menuData, printData } = this.state;
const { key, keyPath } = e;
// if (checked && checkedId === key) {
// checkedBoolean = true;
// }
const checkIndex = printData.findIndex(item => item.checkedId === key);
if(checkIndex > -1) {
checkedBoolean = printData[checkIndex].checked;
}
// console.log('toolbar-checked', checked, checkedId, key);
const iIndex = menuData.findIndex(item => item.sName === key || item.sControlName === key);
let interfaceArr = [] ;
if (iIndex > -1) {
interfaceArr = menuData[iIndex].interface;
}
const sErrorInfo = this.handleCheckButton(key); /* 验证按钮是否可以点击 */
if(commonUtils.isNotEmptyObject(sErrorInfo)) {
message.error(sErrorInfo);
return ;
}
/* 新增 */
if (key === 'BtnAdd') { /* 增加 */
this.handleAdd(obj);
} else if (key === 'BtnAddChild') { /* 分类增加子级 */
this.handleAddChild(obj);
} else if (key.indexOf('BtnAddTo') > -1) { /* 新增下拉 */
this.props.onAddTo(e.key);
} else if (key === 'BtnUpd') { /* 修改 */
this.props.onSaveState({
loading: true,
});
this.props.onEdit(obj);
} else if (key === 'BtnSave') { /* 保存 */
this.props.onSaveState({
loading: true,
});
/* 生产主计划重置数据变化状态 */
this.props.onSaveState({
dataChanged: false,
});
setTimeout(async() => {
/* 根据接口返回是之前调用还是之后调用 */
if(commonUtils.isNotEmptyArr(interfaceArr)) {
const beforeInterfaceArr = interfaceArr.filter(item => item.sInterfaceCallMethod === "1" );
const afterInterfaceArr = interfaceArr.filter(item => item.sInterfaceCallMethod === "2" );
let flag = 0;
if(commonUtils.isNotEmptyArr(beforeInterfaceArr)) { /* 之前调用 */
const asyncFunc = async () => {
for (let i = 0; i < beforeInterfaceArr.length; i ++) {
const data = await this.handleInterfaceCall(beforeInterfaceArr[i]);
if (!data) {
flag += 1;
return;
}
}
}
await asyncFunc();
// beforeInterfaceArr.forEach((item) => {
// this.handleInterfaceCall(item);
// });
if (flag == 0) {
this.handleSubmit();
} else {
this.props.onSaveState({
loading: false,
});
}
}
if(commonUtils.isNotEmptyArr(afterInterfaceArr)) { /* 之后调用 */
this.handleSubmit();
const asyncFunc = async () => {
for (let i = 0; i < afterInterfaceArr.length; i ++) {
await this.handleInterfaceCall(afterInterfaceArr[i]);
}
}
await asyncFunc();
// afterInterfaceArr.forEach((item) => {
// this.handleInterfaceCall(item);
// });
}
} else {
this.handleSubmit();
}
}, 500);
} else if (key === 'BtnExamine') { /* 审核 */
this.props.onSaveState({
loading: true,
});
/* 根据接口返回是之前调用还是之后调用 */
let flag = 0;
if(commonUtils.isNotEmptyArr(interfaceArr)) {
const beforeInterfaceArr = interfaceArr.filter(item => item.sInterfaceCallMethod === "1" );
const afterInterfaceArr = interfaceArr.filter(item => item.sInterfaceCallMethod === "2" );
if(commonUtils.isNotEmptyArr(beforeInterfaceArr)) { /* 之前调用 */
// beforeInterfaceArr.forEach((item) => {
// this.handleInterfaceCall(item);
// });
const asyncFunc = async () => {
for (let i = 0; i < beforeInterfaceArr.length; i ++) {
const data = await this.handleInterfaceCall(beforeInterfaceArr[i]);
if (!data) {
flag += 1;
return;
}
}
}
await asyncFunc();
}
let result;
if (flag == 0) {
result = await this.props.onBtnExamine();
} else {
this.props.onSaveState({
loading: false,
});
}
if(commonUtils.isNotEmptyArr(afterInterfaceArr)) { /* 之后调用 */
// const result = await this.props.onBtnExamine();
if(result) { /* 只有审核成功 才能调用接口 -5代表审核失败 */
const asyncFunc = async () => {
for (let i = 0; i < afterInterfaceArr.length; i++) {
await this.handleInterfaceCall(afterInterfaceArr[i],true);
}
}
await asyncFunc();
// afterInterfaceArr.forEach((item) => {
// this.handleInterfaceCall(item);
// });
}
}
} else{
this.props.onBtnExamine();
}
} else if (key === 'BtnBatchExamine') { /* 批量审核 接口循环调用 选中行1 调用接口+审核 选中行2 调用接口+审核 选中行3 调用接口+审核, 1错了,2、3继续 */
this.props.onSaveState({
loading: true,
});
/* 根据接口返回是之前调用还是之后调用 */
if(commonUtils.isNotEmptyArr(interfaceArr)) {
this.props.onBtnBatchExamine(interfaceArr);
} else{
this.props.onBtnBatchExamine();
}
this.props.onSaveState({
loading: false,
});
} else if (key === 'BtnBatchCancelExamine') { /* 批量审核 接口循环调用 选中行1 调用接口+审核 选中行2 调用接口+审核 选中行3 调用接口+审核, 1错了,2、3继续 */
this.props.onSaveState({
loading: true,
});
/* 根据接口返回是之前调用还是之后调用 */
if(commonUtils.isNotEmptyArr(interfaceArr)) {
this.props.onBtnBatchCancelExamine(interfaceArr);
} else{
this.props.onBtnBatchCancelExamine(interfaceArr);
}
this.props.onSaveState({
loading: false,
});
} else if (key === 'BtnBatchExamine' && false) { /* 批量审核 统一接口调用, 三条勾选行 合并为sIdArr */
this.props.onSaveState({
loading: true,
});
/* 根据接口返回是之前调用还是之后调用 */
if(commonUtils.isNotEmptyArr(interfaceArr)) {
const beforeInterfaceArr = interfaceArr.filter(item => item.sInterfaceCallMethod === "1" );
const afterInterfaceArr = interfaceArr.filter(item => item.sInterfaceCallMethod === "2" );
if(commonUtils.isNotEmptyArr(beforeInterfaceArr)) { /* 之前调用 */
// beforeInterfaceArr.forEach((item) => {
// this.handleInterfaceCall(item);
// });
let flag = 0
const asyncFunc = async () => {
for (let i = 0; i < beforeInterfaceArr.length; i ++) {
const data = await this.handleInterfaceCall(beforeInterfaceArr[i]);
if (!data) {
flag += 1;
return;
}
}
}
await asyncFunc();
if (flag == 0) {
this.props.onBtnBatchExamine();
} else {
this.props.onSaveState({
loading: false,
});
}
}
if(commonUtils.isNotEmptyArr(afterInterfaceArr)) { /* 之后调用 */
const result = await this.props.onBtnBatchExamine();
if(result!== -5) { /* 只有审核成功 才能调用接口 -5代表审核失败 */
const asyncFunc = async () => {
for (let i = 0; i < afterInterfaceArr.length; i++) {
await this.handleInterfaceCall(afterInterfaceArr[i],true);
}
}
await asyncFunc();
this.props.onSaveState({
loading: false,
});
// afterInterfaceArr.forEach((item) => {
// this.handleInterfaceCall(item);
// });
}
}
} else{
this.props.onBtnBatchExamine();
this.props.onSaveState({
loading: false,
});
}
} else if (key.indexOf('BtnSend') > -1 && key.includes('BtnSendDialog')) { /* 推送接口 */
/* 将当前界面所有数据集作为入参传到接口中 */
const { masterConfig, sModelsId, } = this.props;
let { masterData} = this.props;
const addState ={};
let allTableMap = {};
const allReturnMap = {};
let masterDataList = []; /* 弹窗数据集合 */
let allDataList = {}; /* 接口返回所有数据对象集合 */
const btnConfig = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => (item.sControlName === key))) ?
masterConfig.gdsconfigformslave.filter(item => (item.sControlName === key))[0] : {};// sButtonEnabled sButtonParam
const slaveNameList = [];
if(commonUtils.isNotEmptyObject(btnConfig)) {
/* 组装allTableData */
/* 从props找到 所有的Config */
if (commonUtils.isNotEmptyArr(this.props)) {
for (const key of Object.keys(this.props)) {
if (key.includes('Config') && !key.includes('onGet') && !key.includes('report')) {
const tablename = key.replace('Config', '').trim();
slaveNameList.push(tablename);
}
}
}
addState.slaveNameList = slaveNameList;
if (commonUtils.isNotEmptyArr(slaveNameList)) {
slaveNameList.forEach((name, index) => {
const tableConfig = this.props[name + 'Config']; /* 动态配置 */
if(commonUtils.isNotEmptyObject(tableConfig)) {
const tableData = this.props[name + 'Data']; /* 动态配置 */
const tableSelectedRowKeys = this.props[name + 'SelectedRowKeys']; /* 选中Key */
if (commonUtils.isNotEmptyObject(tableConfig)) {
allTableMap[name + '.' + tableConfig.sTbName] = tableData
}
}
})
const masterTbName = masterConfig.sTbName;
allTableMap['master.' + masterTbName] = masterData;
}
const { sActiveKey } = btnConfig;
if (commonUtils.isNotEmptyStr(sActiveKey)) {
sActiveKey.split(',').forEach(item => {
const [tableName, fieldName] = item.split('.');
if (commonUtils.isNotEmptyStr(tableName) && commonUtils.isNotEmptyStr(fieldName)) {
let tableData = this.props[`${tableName}Data`];
if (commonUtils.isNotEmptyObject(tableData)) {
tableData = tableName === 'master' ? tableData : tableData[0];
if (commonUtils.isNotEmptyObject(tableData)) {
allTableMap[fieldName] = tableData[fieldName];
}
}
}
});
if (commonUtils.isNotEmptyObject(this.tempCondition)) {
allTableMap = {
...allTableMap,
...this.tempCondition
};
}
}
}
/* 根据接口返回是之前调用还是之后调用 */
this.props.onSaveState({
loading: true,
});
let addStateReturn = {};
if(commonUtils.isNotEmptyArr(interfaceArr)) {
const beforeInterfaceArr = interfaceArr.filter(item => item.sInterfaceCallMethod === "1" );
const afterInterfaceArr = interfaceArr.filter(item => item.sInterfaceCallMethod === "2" );
if(commonUtils.isNotEmptyArr(beforeInterfaceArr)) { /* 之前调用 */
const asyncFunc = async () => {
for (let i = 0; i < beforeInterfaceArr.length; i ++) {
addStateReturn = await this.handleInterfaceCallDialog(beforeInterfaceArr[i], true, key, allTableMap);
}
}
await asyncFunc();
}
if(commonUtils.isNotEmptyArr(afterInterfaceArr)) { /* 之后调用 */
const asyncFunc = async () => {
for (let i = 0; i < afterInterfaceArr.length; i ++) {
addStateReturn = await this.handleInterfaceCallDialog(afterInterfaceArr[i], true , key, allTableMap);
}
}
await asyncFunc();
}
}
if(addStateReturn && addStateReturn.bResult) {
addState.interfaceDialogData = addStateReturn.returnData;
addState.interfaceDialogAllData = addStateReturn.returnData;
} else {
addState.interfaceDialogData = [];
}
addState.masterData = { ...masterData, bIsSAP: 1 };
if(commonUtils.isNotEmptyArr(addState.interfaceDialogAllData)) {
/* 循环interfaceDialogData */
addState.interfaceDialogAllData.forEach((item, index) => {
/* 先把master数据 放到interfaceDialogData中 */
let sMasterId = '';
const dataMap = {};
for (const key of Object.keys(item)) {
/* 把主表数据塞到masterDataList中 */
if(key && key.includes('master')) {
const data = commonUtils.isNotEmptyObject(item[key]) && commonUtils.isJSON(item[key]) ? JSON.parse(item[key]) :[];
if(commonUtils.isNotEmptyObject(data)) {
sMasterId = commonUtils.isNotEmptyObject(data.sSlaveId) ? data.sSlaveId : data.sId;
masterDataList.push(data);
}
}
const data = commonUtils.isNotEmptyObject(item[key]) && commonUtils.isJSON(item[key]) ? JSON.parse(item[key]) :[];
dataMap[key] = data;
}
/* 将全部返回数据都铺到allDataList中 */
const allKey = 'master-' + sMasterId;
allDataList[allKey] = dataMap; /* 根据返回的下标 封装key-value */
});
addState.allDataList = allDataList;
}
/* 弹窗的条件是 数据集数量>1 或者有this.tempCondition 切配置弹窗,否则直接将返回数据集铺到界面上 */
if((commonUtils.isNotEmptyObject(btnConfig) && commonUtils.isNotEmptyObject(btnConfig.sActiveId) && masterDataList.length > 0) || commonUtils.isNotEmptyObject(this.tempCondition)) {
addState.interfaceDialogData = masterDataList;
addState.visibleInterfaceDialog = true;
addState.masterData = { ...masterData, bIsSAP: 1 };
} else{
addState.visibleInterfaceDialog = false; /* 没有弹窗 且主表只有1条 则不弹窗 直接带值 */
const dataMap = commonUtils.isNotEmptyArr(addState.interfaceDialogData) ? addState.interfaceDialogData[0] : {};
console.log('接口返回值:', dataMap);
if (commonUtils.isNotEmptyArr(slaveNameList) && commonUtils.isNotEmptyArr(dataMap)) {
slaveNameList.forEach((name) => {
const tableConfig = this.props[name +'Config']; /* 动态配置 */
let tableData = [];
if(commonUtils.isNotEmptyObject(tableConfig)) {
tableData = dataMap[name +'-'+ tableConfig.sTbName]; /* 动态配置 */
if(commonUtils.isNotEmptyObject(tableData) && commonUtils.isJSON(tableData)) {
const newCopyTo = {};
newCopyTo.master = masterData;
let tableNewData = JSON.parse(tableData);
if(name === 'master') {
tableNewData = Array.isArray(tableNewData) ? tableNewData[0] : tableNewData;
masterData = { ...masterData, ...commonFunc.getAssignFieldValue(btnConfig.sAssignField, tableNewData, newCopyTo, true), bIsSAP: 1 }; // 取赋值字段
addState.masterData = masterData;
} else {
const btnTableName = btnConfig.sControlName +'.'+ name;
const btnTableConfig = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => (item.sControlName === btnTableName))) ?
masterConfig.gdsconfigformslave.filter(item => (item.sControlName === btnTableName))[0] : {};// sButtonEnabled sButtonParam
const newData = [];
tableNewData.forEach((child) => {
let newRow ={};
if(commonUtils.isNotEmptyObject(btnTableConfig) && btnTableConfig.sAssignField){
newRow = { ...child, ...commonFunc.getAssignFieldValue(btnTableConfig.sAssignField, child, newCopyTo) }; // 取赋值字段
}else {
newRow = child;
}
newRow = {
...newRow,
handleType: 'add',
sId: commonUtils.createSid(),
sParentId: masterData.sId
};
newData.push(newRow);
});
addState[name +'Data'] = newData;
}
}
}
});
} else {
addState.masterData = { ...masterData, bIsSAP: 1 };
}
}
this.tempCondition = null;
addState.loading = false;
console.log('弹窗接口数据:', addState);
this.props.onSaveState({
...addState,
});
}else if ( key.includes('BtnGetApiDialog')) { /* 从第三方拿数据 */
/* 将当前界面所有数据集作为入参传到接口中 */
const { masterConfig, sModelsId, } = this.props;
let { masterData} = this.props;
const addState ={};
let allTableMap = {};
const allReturnMap = {};
let masterDataList = []; /* 弹窗数据集合 */
let allDataList = {}; /* 接口返回所有数据对象集合 */
const btnConfig = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => (item.sControlName === key))) ?
masterConfig.gdsconfigformslave.filter(item => (item.sControlName === key))[0] : {};// sButtonEnabled sButtonParam
/* 根据接口返回是之前调用还是之后调用 */
this.props.onSaveState({
loading: true,
});
let addStateReturn = {};
if(commonUtils.isNotEmptyArr(interfaceArr)) {
const beforeInterfaceArr = interfaceArr.filter(item => item.sInterfaceCallMethod === "1" );
const afterInterfaceArr = interfaceArr.filter(item => item.sInterfaceCallMethod === "2" );
if(commonUtils.isNotEmptyArr(beforeInterfaceArr)) { /* 之前调用 */
const asyncFunc = async () => {
for (let i = 0; i < beforeInterfaceArr.length; i ++) {
addStateReturn = await this.handleInterfaceCallDialog(beforeInterfaceArr[i], true, key, allTableMap);
}
}
await asyncFunc();
}
if(commonUtils.isNotEmptyArr(afterInterfaceArr)) { /* 之后调用 */
const asyncFunc = async () => {
for (let i = 0; i < afterInterfaceArr.length; i ++) {
addStateReturn = await this.handleInterfaceCallDialog(afterInterfaceArr[i], true , key, allTableMap);
}
}
await asyncFunc();
}
}
if(addStateReturn) {
addState.getApiDialogData = addStateReturn.returnData;
} else {
addState.getApiDialogData = [];
}
/* 弹窗的条件是 数据集数量>1 或者有this.tempCondition 切配置弹窗,否则直接将返回数据集铺到界面上 */
if((commonUtils.isNotEmptyObject(btnConfig) && commonUtils.isNotEmptyObject(btnConfig.sActiveId)) || commonUtils.isNotEmptyObject(this.tempCondition)) {
addState.visibleApiDialog = true;
}
this.tempCondition = null;
addState.loading = false;
console.log('发票获取第三方接口:', addState);
this.props.onSaveState({
...addState,
});
} else if (key === 'BtnCancelExamine') { /* 消审 */
this.props.onSaveState({
loading: true,
});
/* 根据接口返回是之前调用还是之后调用 */
if(commonUtils.isNotEmptyArr(interfaceArr)) {
const beforeInterfaceArr = interfaceArr.filter(item => item.sInterfaceCallMethod === "1" );
const afterInterfaceArr = interfaceArr.filter(item => item.sInterfaceCallMethod === "2" );
if(commonUtils.isNotEmptyArr(beforeInterfaceArr)) { /* 之前调用 */
let flag = 0;
const asyncFunc = async () => {
for (let i = 0; i < beforeInterfaceArr.length; i ++) {
const data = await this.handleInterfaceCall(beforeInterfaceArr[i]);
if (!data) {
flag += 1;
return;
}
}
}
await asyncFunc();
if (flag == 0) {
this.props.onBtnCancelExamine();
} else {
this.props.onSaveState({
loading: false,
});
}
}
if(commonUtils.isNotEmptyArr(afterInterfaceArr)) { /* 之后调用 */
const result = await this.props.onBtnCancelExamine();
if(result) { /* 只有审核成功 才能调用接口 -5代表审核失败 */
const asyncFunc = async () => {
for (let i = 0; i < afterInterfaceArr.length; i++) {
await this.handleInterfaceCall(afterInterfaceArr[i],true);
}
}
await asyncFunc();
}
}
} else{
this.props.onBtnCancelExamine();
}
} else if (key.indexOf('BtnBsOperation') > -1) { /* 作废、取消作废 */
if (key === 'BtnBsOperation.BtnInvalid') {
obj = {
title: '确定要作废',
handleType: 'toVoid',
};
this.props.onChangeInvalid(obj);
} else if (key === 'BtnBsOperation.BtnCancelInvalid') {
obj = {
title: '确定取消作废',
handleType: 'cancel',
};
this.props.onChangeInvalid(obj);
} else {
const name = key.split('.');
this.props.onButtonClick(name[1]);
}
} else if (key === 'BtnInvalid') {
obj = {
title: '确定要作废',
handleType: 'toVoid',
};
this.props.onChangeInvalid(obj);
} else if (key === 'BtnCancelInvalid') {
obj = {
title: '确定取消作废',
handleType: 'cancel',
};
this.props.onChangeInvalid(obj);
} else if (key === 'BtnGetWeight') { // 获取重量
this.props.onGetWeight();
} else if (key.indexOf('BtnCopyTo') > -1) { /* 复制到 */ // && commonUtils.isNotEmptyStr(e.item.props.sActiveId)
// if (this.handleFreeDeliver(key)) return;
this.props.onCopyTo(e.key, e.item.props['data-sactiveid']);
} else if (key.indexOf('BtnCopyFrom') > -1 && commonUtils.isNotEmptyStr(e.item.props['data-sactiveid'])) { /* 复制从 */
obj = {
name: e.key,
copyFromKey: key,
copyFromSActiveId: e.item.props['data-sactiveid'],
};
this.props.onCopyFrom(obj);
} else if (key.indexOf('BtnEject') > -1) { /* 自定义接口弹出 */
const { masterConfig, masterData } = this.props;
const buttonConfig = masterConfig.gdsconfigformslave.filter(item => item.sName === '' && item.showName !== '' && item.sControlName === key);
if (commonUtils.isNotEmptyStr(buttonConfig)) {
const sActiveKey = buttonConfig[0].sActiveKey;
/* 拿到表名 */
if (commonUtils.isNotEmptyObject(sActiveKey)) {
let tbName = 'slave'; /* 表名 */
const btnName = key; /* 按钮名 */
let record = {}; /* 选中行 */
let iIndex = -1;
const splitData = sActiveKey.split('.');
if (commonUtils.isNotEmptyStr(splitData) && splitData.length > 1) {
tbName = splitData[0]; /* 表名 */
if (tbName === 'master') {
record = masterData;
} else {
const { [`${tbName}SelectedRowKeys`]: tableSelectedRowKeys, [`${tbName}Data`]: tableData } = this.props;
if (commonUtils.isNotEmptyStr(tableData)) {
iIndex = tableData.findIndex(item => tableSelectedRowKeys.includes(item.sSlaveId));
if (iIndex > -1) {
record = tableData[iIndex];
}
}
}
}
this.props.onViewClick(tbName, btnName, record, iIndex);
}
}
} else if (keyPath.indexOf('BtnBsOperation.BtnUpCheck') > -1 && commonUtils.isNotEmptyStr(e.item.props['data-sactiveid']) && key.indexOf('BtnBsOperation.BtnUpCheck') < 0) { /* 上查 */ /* key.indexOf('BtnUpCheck') < 0 用于防止用户点击二级菜单时的跳转 */
this.props.onSearchUpDown(key, e.item.props['data-sactiveid']);
} else if (keyPath.indexOf('BtnBsOperation.BtnDownCheck') > -1 && commonUtils.isNotEmptyStr(e.item.props['data-sactiveid']) && key.indexOf('BtnBsOperation.BtnDownCheck') < 0) { /* 下查 */ /* key.indexOf('BtnDownCheck') < 0 用于防止用户点击二级菜单时的跳转 */
this.props.onSearchUpDown(key, e.item.props['data-sactiveid']);
} else if (key === 'BtnNext') { /* 下一条 */
this.props.onNext();
} else if (key === 'BtnPrior') { /* 上一条 */
this.props.onBtnPrior();
} else if (key === 'BtnFirst') { /* 首条 */
this.props.onBtnFirst();
} else if (key === 'BtnLast') { /* 末条 */
this.props.onBtnLast();
} else if (key === 'BtnCancel') { /* 取消 */
obj = {
title: '确定要取消',
};
this.props.onCancel(obj);
} else if (key.indexOf('BtnPrint') > -1 && commonUtils.isNotEmptyStr(e.item.props['data-sactiveid'])) { /* 打印 */
const { billnosetting, masterData } = this.props;
let sActiveId = e.item.props['data-sActiveId'];
if (commonUtils.isEmptyObject(sActiveId)) {
sActiveId = e.item.props['data-sactiveid'];
}
if (billnosetting.sStatusType === '1') { /* 1:审核后打印 0:制单后打印 */
if (!masterData.bCheck) { /* 未审核只能预览pdf */
this.props.onBtnPreview(sActiveId, checkedBoolean, e.key);
} else { /* 已审核:打印 */
this.props.onBtnPrint(sActiveId, checkedBoolean, e.key);
}
} else { /* 制单后可以直接打印 */
this.props.onBtnPrint(sActiveId, checkedBoolean, e.key);
}
} else if (key === 'BtnDel') { /* 删除 */
obj = {
title: '确定要删除',
};
this.props.onDel(obj);
} else if (key === 'BtnGetGoods') {
this.props.onGetGoods();
} else if (key.indexOf('BtnUploadOther') > -1) { /* 上传 */
const { slaveSelectedRowKeys } = this.props;
if (commonUtils.isEmptyArr(slaveSelectedRowKeys)) {
message.warning('请先选择一条数据');
return;
}
this.props.onSaveState({
visibleOtherFilfile: true,
});
} else if (key.indexOf('BtnUpload') > -1) { /* 上传 */
const { slaveSelectedRowKeys } = this.props;
if (commonUtils.isEmptyArr(slaveSelectedRowKeys)) {
message.warning('请先选择一条数据');
return;
}
this.props.onSaveState({
visibleFilfile: true,
});
} else if (key.indexOf('BtnEvent')> -1 || key.indexOf('BtnBatchSubmit')> -1 || key.indexOf('BtnSubmit')> -1) {
const { slaveSelectedRowKeys, slaveData, formRoute, slave0Child1Data: controlData, materialsData: materialsData, slave0Data: processData, } = this.props;
let { slaveSelectedData } = this.props;
if (key == 'BtnEventSAP' && ['/indexPage/processCardPackTableTree'].includes(this.props.formRoute)) {
if (!commonBusiness.validatePramsNotEmpty(this.props)) return;
}
// if (formRoute === '/indexPage/commonList' && commonUtils.isEmptyArr(slaveSelectedData)) {
// message.warning('请先选择一条数据');
// return;
// }
/* 如果主体数据为空 则提示 */
// if(location.pathname ==='/indexPage/commonCostomTabBill') {
// if(commonUtils.isEmptyArr(controlData) && commonUtils.isEmptyArr(processData) && commonUtils.isEmptyArr(materialsData)){
// message.error('主体数据不能为空!');
// return;
// }
// }
if(commonUtils.isEmptyArr(slaveSelectedData) && commonUtils.isNotEmptyArr(slaveData)) {
slaveSelectedData = slaveData.filter(item => slaveSelectedRowKeys.includes(item.sId) || slaveSelectedRowKeys.includes(item.sSlaveId));
}
this.props.onSaveState({
loading: true,
});
// const slaveSelectedDataNew = this.deteleObject(slaveSelectedData); // 删除sid重复的数据
const btnConfig = this.props.masterConfig.gdsconfigformslave.filter(item => (item.sControlName === key))[0];// sButtonEnabled sButtonParam
if (commonUtils.isNotEmptyObject(btnConfig) && commonUtils.isNotEmptyStr(btnConfig.sButtonParam)) {
/* 根据接口返回是之前调用还是之后调用 */
if(commonUtils.isNotEmptyArr(interfaceArr)) {
const beforeInterfaceArr = interfaceArr.filter(item => item.sInterfaceCallMethod === "1" );
const afterInterfaceArr = interfaceArr.filter(item => item.sInterfaceCallMethod === "2" );
const bProgressBar = btnConfig.sRelation === "progressBar";
let bContinue = true;
if (commonUtils.isNotEmptyArr(beforeInterfaceArr)) { /* 之前调用 */
let flag = 0;
const asyncFunc = async () => {
for (let i = 0; i < beforeInterfaceArr.length; i++) {
if (bProgressBar) {
this.xlyProcessPercent = 0;
clearInterval(this.xlyProcessTimer);
message.loading({ content: , key: "xlyProcess", duration: 0, className: styles.xlyProcess});
for (let j = 0; j < slaveSelectedRowKeys.length; j++) {
const slaveSelectedRowOneKey = slaveSelectedRowKeys[j];
const data = await this.handleInterfaceCall(beforeInterfaceArr[i], false, key, slaveSelectedRowOneKey, slaveSelectedRowOneKey);
if (!data) {
message.destroy("xlyProcess");
flag += 1;
break;
}
this.xlyProcessPercent = ((i + 1) * (j + 1) / (beforeInterfaceArr.length * slaveSelectedRowKeys.length) * 100).toFixed(2);
message.loading({ content: , key: "xlyProcess", duration: this.xlyProcessPercent >=100 ? 3 : 0, className: styles.xlyProcess});
}
} else {
const data = await this.handleInterfaceCall(beforeInterfaceArr[i], false, key, slaveSelectedRowKeys);
if (!data) {
flag += 1;
return;
}
}
}
}
await asyncFunc();
if (flag == 0) {
await this.handleBtnEent(btnConfig);
}else {
bContinue = false;
}
}
if (commonUtils.isNotEmptyArr(afterInterfaceArr) && bContinue) { /* 之后调用 */
const result = await this.handleBtnEent(btnConfig);
if (result === 1) { /* 只有按钮成功 才能调用接口 -5代表审核失败 */
const asyncFunc = async () => {
for (let i = 0; i < afterInterfaceArr.length; i++) {
if (bProgressBar) {
this.xlyProcessPercent = 0;
clearInterval(this.xlyProcessTimer);
message.loading({ content: , key: "xlyProcess", duration: 0, className: styles.xlyProcess});
for (let j = 0; j < slaveSelectedRowKeys.length; j++) {
const slaveSelectedRowOneKey = slaveSelectedRowKeys[j];
const data = await this.handleInterfaceCall(afterInterfaceArr[i], false, key, slaveSelectedRowOneKey, slaveSelectedRowOneKey);
if (!data) {
message.destroy("xlyProcess");
break;
}
this.xlyProcessPercent = ((i + 1) * (j + 1) / (afterInterfaceArr.length * slaveSelectedRowKeys.length) * 100).toFixed(2);
message.loading({ content: , key: "xlyProcess", duration: this.xlyProcessPercent >=100 ? 3 : 0, className: styles.xlyProcess});
}
} else {
await this.handleInterfaceCall(afterInterfaceArr[i], false, key, slaveSelectedRowKeys);
}
}
}
await asyncFunc();
}
}
// for (const child of slaveSelectedDataNew) {
//
// }
} else if (btnConfig.sButtonParam?.includes('Sp_BtnEven_CalcJsHs') && btnConfig.showName?.includes('工资核算')) {
// 工资核算特殊处理
const { slave3Data = [], slave3SelectedRowKeys = [] } = this.props;
const slave3SelectedData = slave3Data.filter(item => slave3SelectedRowKeys.includes(item.sId));
if (slave3SelectedData.length) {
for (let i = 0; i < slave3SelectedData.length; i++) {
const slave3DataOne = slave3SelectedData[i];
const { sCalcProName: sCalcProDetail, sId, sCalcDepart } = slave3DataOne;
const inParams = [
{
key: "slave3",
value: [{ sId, sCalcProDetail }]
}
];
const percent = (i / slave3SelectedData.length * 100).toFixed(2);
message.loading({ content: , key: "xlyProcess", duration: 0, className: styles.xlyProcess});
await this.handleBtnEent(btnConfig, undefined, undefined, inParams);
// message.success(`【${sCalcDepart}】核算完成。`);
}
message.loading({ content: , key: "xlyProcess", duration: 0, className: styles.xlyProcess});
message.success(`全部方案计算成功。`);
setTimeout(() => {
message.loading({ content: , key: "xlyProcess", duration: 0, className: styles.xlyProcess});
}, 1000);
setTimeout(() => {
message.destroy("xlyProcess");
}, 2000);
} else {
message.warning('请先选择计算方案!');
}
} else {
this.handleBtnEent(btnConfig);
}
this.props.onSaveState({
loading: false,
});
} else {
message.error('请配置按钮的存储过程');
this.props.onSaveState({
loading: false,
});
}
} else if (key.indexOf('BtnRepair') > -1) {
if (key.toLowerCase().endsWith('choosedate')) {
this.handleForceComplete(key, 'chooseDate');
} else if (key.includes('BtnRepairGroup') || key.includes('BtnRepairUser')) { /* 复制组权限单独处理 */
this.props.onButtonClick(key);
} else {
/* 根据接口返回是之前调用还是之后调用 */
if(false) {
const beforeInterfaceArr = interfaceArr.filter(item => item.sInterfaceCallMethod === "1" );
const afterInterfaceArr = interfaceArr.filter(item => item.sInterfaceCallMethod === "2" );
if(commonUtils.isNotEmptyArr(beforeInterfaceArr)) { /* 之前调用 */
let flag = 0;
const asyncFunc = async () => {
for (let i = 0; i < beforeInterfaceArr.length; i ++) {
const data = await this.handleInterfaceCall(beforeInterfaceArr[i]);
if (!data) {
flag += 1;
return;
}
}
}
await asyncFunc();
if (flag == 0) {
this.handleForceComplete(key);
}
}
if(commonUtils.isNotEmptyArr(afterInterfaceArr)) { /* 之后调用 */
const result = await this.handleForceComplete(key);;
if(result!== -5) { /* 只有审核成功 才能调用接口 -5代表审核失败 */
const asyncFunc = async () => {
for (let i = 0; i < afterInterfaceArr.length; i++) {
await this.handleInterfaceCall(afterInterfaceArr[i],true);
}
}
await asyncFunc();
}
}
} else{
this.handleForceComplete(key);
}
}
} else if (key.indexOf('BtnApiLog') > -1) { /* 操作日志 */
const { slaveSelectedRowKeys, slaveData, formRoute } = this.props;
let { slaveSelectedData } = this.props;
/* 根据接口返回是之前调用还是之后调用 */
const btnConfig = commonUtils.isNotEmptyArr(this.props.masterConfig.gdsconfigformslave.filter(item => (item.sControlName === key))) ?
this.props.masterConfig.gdsconfigformslave.filter(item => (item.sControlName === key))[0] : {};// sButtonEnabled sButtonParam
const msgInfo = commonUtils.isNotEmptyObject(btnConfig)? btnConfig.sAssignField : '';
if(commonUtils.isEmptyArr(slaveSelectedData) && commonUtils.isNotEmptyArr(slaveData)) {
slaveSelectedData = slaveData.filter(item => slaveSelectedRowKeys.includes(item.sId) || slaveSelectedRowKeys.includes(item.sSlaveId));
}
let slaveSelectedDataNew = [];
if(commonUtils.isNotEmptyArr(slaveSelectedData)){
slaveSelectedDataNew = this.deteleObject(slaveSelectedData); // 删除sid重复的数据
if(slaveSelectedData[0].iStatus !==0) {
message.error(msgInfo);
return ;
}
}
let ids = '';
if(commonUtils.isNotEmptyArr(slaveSelectedDataNew)) {
slaveSelectedDataNew.forEach((item) => {
if(commonUtils.isNotEmptyObject(item)) {
ids += `${item.sId},`;
}
});
ids = commonUtils.isNotEmptyObject(ids) ? ids.substr(0, ids.length - 1) : '';
}
this.handleInterfaceCallLog(ids);
} else if (key === 'BtnForceComplete' || key === 'BtnNoPurchase' || key === 'BtnForceComplete2' || key === 'BtnForceComplete3') {
this.handleForceComplete(key);
} else if (key === 'BtnUpPbOrder') {
this.props.onSaveState({
upPbOrderVisible: true,
});
} else if (key === 'BtnDlPbOrder') {
this.props.onSaveState({
dlPbOrderVisible: true,
});
} else if (key === 'BtnCommonImport') {
this.handleImport();
} else if (key === 'BtnInit') {
this.props.handleSlaveInit('slave');
} else if (key === 'BtnExportSql.salve') {
this.props.handleMenuClick({ key: 'formSlave' });
} else if (key === 'BtnExportSql.master') {
this.props.handleMenuClick({ key: 'formMaster' });
} else if (key === 'BtnExportSql.full') {
this.props.handleMenuClick({ key: 'fromMasterSlave' });
} else if (key === 'BtnExportSql.full') {
this.props.handleMenuClick({ key: 'fromMasterSlave' });
} else if (key === 'BtnCopy2Custom') {
this.props.handleCopy2Custom();
} else if (key === 'BtnModuleSql.sModuleSql') {
this.props.handleSqlDownload('single');
} else if (key === 'BtnModuleSql.sModule2Sql') {
this.props.handleSqlDownload('all');
} else if (key === "BtnFileImposition") {
this.setState({
fileImpositionData: {
visible: true,
onCancel: () => {
this.setState({ fileImpositionData: null });
},
onOk: () => {
this.setState({ fileImpositionData: null });
},
onSaveState: (obj) => {
this.setState({
fileImpositionData: { ...this.state.fileImpositionData, ...obj }
});
},
onSaveState1: this.props.onSaveState
}
});
} else if (this.props.onButtonClick !== undefined) {
this.props.onButtonClick(key);
}
};
// 删除当前pane
handleClosePane = (btnConfig, callback) => {
const { showName, sButtonParam } = btnConfig;
/* 若sButtonParam含有 bClose": true 则关闭当前页签*/
let bClose = false; /* 是否关闭当前页签 */
let bRefreshBefore = false; /* 是否刷新之前列表 */
if(sButtonParam && commonUtils.isJSON(sButtonParam)) {
const jsonObj = JSON.parse(sButtonParam);
if(jsonObj.bClose) {
bClose = true;
}
if(jsonObj.bRefreshBefore) {
bRefreshBefore = true;
}
}
if (bClose) {
const { panes, currentPane } = this.props.app;
const currentPaneIndex = panes.findIndex(item => item.key === currentPane.key);
if (currentPaneIndex > 0) {
const newPanes = panes.filter(item => item.key !== currentPane.key);
this.props.dispatch({ type: 'app/removePane', payload: { changePanes: newPanes, currentPane: panes[currentPaneIndex - 1] } });/* 关闭当前页签 */
}
if(bRefreshBefore) {
if (currentPane.refresh !== undefined) {
currentPane.refresh();
}
}
} else {
callback();
}
}
handleSubmit = () => {
// 保存前手机号、邮箱校验
let checkResult = true;
const { masterData = {}, masterConfig = {} } = this.props;
const { gdsconfigformslave = [] } = masterConfig;
const sDateFormatTypeList = ['phone', 'mobile', 'mail', 'postcode'];
const fieldsList = gdsconfigformslave.filter(
item =>
item.bVisible && item.sDateFormat && sDateFormatTypeList.includes(item.sDateFormat)
);
for (let i = 0; i < fieldsList.length; i++) {
const config = fieldsList[i];
const { sName, showName, sDateFormat } = config;
const value = masterData[sName];
if (value === undefined || value === '') {
continue;
}
if (sDateFormat === "phone") {
const reg = /^0\d{2,3}-\d{7,8}$/;
const reg1 = /^1[0-9]{10}$/;
const reg2 = /^0\d{2,3}-\d{7,8}-\d{1,8}$/;
if (!reg.test(value) && !reg1.test(value) && !reg2.test(value)) {
message.warning(`【${showName}】【${sName}】格式不正确!`);
checkResult = false;
break;
}
} else if (sDateFormat === "mobile") {
const reg = /^0\d{2,3}-\d{7,8}$/;
const reg1 = /^1[0-9]{10}$/;
const reg2 = /^0\d{2,3}-\d{7,8}-\d{1,8}$/;
if (!reg.test(value) && !reg1.test(value) && !reg2.test(value)) {
message.warning(`【${showName}】【${sName}】格式不正确!`);
checkResult = false;
break;
}
} else if (sDateFormat === "mail") {
const reg = /^[a-zA-Z0-9]{1,20}@[a-zA-Z0-9]{1,5}\.[a-zA-Z0-9]{1,5}$/;
if (!reg.test(value)) {
message.warning(`【${showName}】【${sName}】格式不正确!`);
checkResult = false;
break;
}
} else if (sDateFormat === "postcode") {
const reg = /^[1-9][0-9]{5}$/;
if (!reg.test(value)) {
message.warning(`【${showName}】【${sName}】格式不正确!`);
checkResult = false;
break;
}
}
}
// 客户简码校验
// if (masterData.sBuSort2) {
// const reg = /^(?:[A-Z]{4}|[A-Z]{2}\d{2}|[A-Z]{3}\d)$/;
// if (!reg.test(masterData.sBuSort2)) {
// message.warning(`【客户简码】格式不正确【正确格式:大写字母+数字(共四位)】!`);
// checkResult = false;
// }
// }
if (checkResult) {
// 验证各种工序参数的必填项
if (!commonBusiness.validatePramsNotEmpty(this.props)) return;
this.props.onSubmit();
} else {
this.props.onSaveState({
loading: false,
});
}
}
deteleObject = (obj = []) => {
// eslint-disable-next-line camelcase
const replace_data = obj;
const result = []; // 去重后的数组对象集合
const hash = {};
// eslint-disable-next-line no-plusplus
for (let i = 0; i < replace_data.length; i++) {
const elem = replace_data[i].sId;
if (!hash[elem]) {
result.push(replace_data[i]);
hash[elem] = true;
}
}
return result;
}
handleCheckButton = (key) => {
let sErrorInfo = '';
const sCheckName = 's'+key +'ErroMsg';
/* sControlName + ErrorMsg 看数据集是否包含,包含则提示出来 */
let tableName = '';
if(location.pathname && location.pathname.includes('List')) {
tableName ='slave';
}else {
tableName = 'master';
}
if(commonUtils.isNotEmptyObject(tableName)) {
const {[`${tableName}Data`]: tableData, [`${tableName}SelectedRowKeys`]: tableSelectedRowKeys} = this.props;
if(tableName === 'master' && commonUtils.isNotEmptyObject(tableData)) {
sErrorInfo = tableData[sCheckName];
} else if(commonUtils.isNotEmptyArr(tableData)) {
const iIndex = tableData.findIndex(item => tableSelectedRowKeys.includes(item.sSlaveId));
if(iIndex > -1) {
const tableRow = tableData[iIndex];
if(commonUtils.isNotEmptyObject(tableRow[sCheckName])) {
sErrorInfo = tableRow[sCheckName];
}
}
}
}
return sErrorInfo;
}
handleToolBarKeyDown =(e) => {
/* 前端CTRL+ALT+G后,如果没有数据默认跳转第一个配置的数据 */
if (e.ctrlKey && (e.altKey || e.metaKey) && e.keyCode === 71) { /* CTRL+ALT+G F7 设置界面 */
const { sType } = this.props?.app?.userinfo || {};
if (!['sysadmin'].includes(sType)) {
return;
}
if (commonUtils.isNotEmptyObject(this.props)) {
let name = 'master';
if(location.pathname.includes('commonList')) {
name = 'slave';
}
const { [`${name}Config`]: tableConfig } = this.props;
if(commonUtils.isNotEmptyArr(tableConfig)) {
const myTableConfig = JSON.parse(JSON.stringify(tableConfig));
myTableConfig.sActiveId = '16411004790004762980820285096000';
/* 找到配置的第一个字段 */
const columnArr = tableConfig.gdsconfigformslave.filter(child => child.sName !== '' && child.bVisible && child.showName !== '');
const sName = commonUtils.isNotEmptyArr(columnArr) ? columnArr[0].sName : '';
myTableConfig.sName = sName;
const myTableConfigArr = [];
myTableConfigArr.push(myTableConfig);
if (name === 'master') { /* 主表 */
this.props.onViewClick(name, 'myTableConfig', {}, 0, myTableConfigArr, '');
} else { /* 从表 */
this.props.onViewClick(name, 'myTableConfig', {}, 0, myTableConfigArr, '');
}
}
}
}
};
/* 解析消息 */
handleGetMsg = (str) => {
const msgArr = commonUtils.isNotEmptyObject(str) ? str.split('xpm'): '';
const divStr = [];
if(commonUtils.isNotEmptyArr(msgArr)) {
for (let i = 0; i < msgArr.length; i ++) {
divStr.push({msgArr[i]}
);
}
}
return divStr;
}
/* 调用后台配置的接口 */
handleInterfaceCall = async (obj, showTip, key, ids, slaveSelectedRowKeysOld) => {
let bResult = false;
const { app, sModelsId, masterData, slaveData, masterConfig, slaveFilterCondition } = this.props;
const slaveSelectedRowKeys = slaveSelectedRowKeysOld || this.props.slaveSelectedRowKeys;
const sInterfaceName = obj.sInterfaceName;
/* 如果key是BtnSendList 传从表的主键集合 */
let idArr = '';
/* 如果有对应字段 则取对应字段 ,否则 取默认值 */
const btnConfig = commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => (item.sControlName === key))) ?
masterConfig.gdsconfigformslave.filter(item => (item.sControlName === key))[0] : {};
let sActiveKey = '';
if(commonUtils.isNotEmptyObject(btnConfig)) {
sActiveKey = btnConfig.sActiveKey;
}
if(sActiveKey) {
if( sActiveKey.includes('master.sId')) {
idArr = masterData.sId;
}
} else if(key && (key.includes('BtnSendList') || key.includes('BtnBatchExamine'))) {
if(commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) {
slaveSelectedRowKeys.forEach((item) => {
if(commonUtils.isNotEmptyObject(item)) {
idArr += `${item},`;
}
});
idArr = commonUtils.isNotEmptyObject(idArr) ? idArr.substr(0, idArr.length - 1) : '';
}
}else if(location.pathname.includes('commonList')){
const { slaveSelectedRowKeys, slaveData } = this.props;
let { slaveSelectedData } = this.props;
if(commonUtils.isEmptyArr(slaveSelectedData) && commonUtils.isNotEmptyArr(slaveData)) {
slaveSelectedData = slaveData.filter(item => slaveSelectedRowKeys.includes(item.sId) || slaveSelectedRowKeys.includes(item.sSlaveId));
}
const slaveSelectedDataNew = this.deteleObject(slaveSelectedData); // 删除sid重复的数据
if(commonUtils.isNotEmptyArr(slaveSelectedDataNew)) {
slaveSelectedDataNew.forEach((item) => {
if(commonUtils.isNotEmptyObject(item)) {
idArr += `${item.sId},`;
}
});
idArr = commonUtils.isNotEmptyObject(idArr) ? idArr.substr(0, idArr.length - 1) : '';
}
if(commonUtils.isNotEmptyObject(ids)) { /* 如果是勾选多行 则sId为循环的每一条 */
idArr = ids;
}
} else {
idArr = masterData.sId;
}
const value = { sId: commonUtils.isNotEmptyObject(idArr) ? idArr : commonUtils.isNotEmptyObject(ids) ? ids : masterData.sId, sSlaveId: slaveSelectedRowKeys?.toString(), masterData, userInfo: app.userinfo };
if(location.pathname.includes('commonList') && commonUtils.isNotEmptyArr(slaveFilterCondition)){
value.bFilter = JSON.stringify(slaveFilterCondition) ;
}
const url = `${commonConfig.interface_host}interfaceDefine/callthirdparty/${sInterfaceName}?sModelsId=${sModelsId}`;
const returnData = (await commonServices.postValueService(app.token, value, url, app)).data;
if (showTip) {
if ((!returnData || returnData.code < 0)) {
if (commonUtils.isNotEmptyObject(returnData) && returnData.code === -8) {
Modal.info({
title: '温馨提示:',
content: (
{this.handleGetMsg(returnData.msg)}
),
okText: '确认',
onOk() {},
});
} else {
Modal.info({
title: '温馨提示:',
content: (
{this.handleGetMsg(returnData.msg)}
),
okText: '确认',
onOk() {},
});
return;
}
// message.error('同步INFOR失败!');
return;
} else {
// message.success('同步INFOR成功!');
}
}
if(!returnData) {
message.error('接口调用失败!');
return false;
}
if (returnData.code === 1) {
bResult = true;
// message.success(returnData.msg);
}else if (returnData.code === 2) {
// Modal.info({
// title: '温馨提示:',
// content: (
//
// {this.handleGetMsg(returnData.msg)}
//
// ),
// okText: '确认',
// onOk() {},
// });
bResult = true;
}else if (returnData.code === -8) {
Modal.info({
title: '温馨提示:',
content: (
{this.handleGetMsg(returnData.msg)}
),
okText: '确认',
onOk() {},
});
bResult = false;
} else {
bResult = false;
this.props.getServiceError(returnData);
}
/* 若配置的是按钮后调用第三方, 则调用成功后 需要重新回刷一次数据 */
if(commonUtils.isNotEmptyObject(obj) && obj.sInterfaceCallMethod === "2"){
if(bResult){
this.props.onButtonClick('BtnRefresh');
}
}
return bResult;
}
/* 调用后台配置的接口 */
handleInterfaceCallDialog = async (obj, showTip, key, map) => {
const addState ={};
let bResult = false;
const { app, sModelsId, masterData, slaveSelectedRowKeys} = this.props;
const sInterfaceName = obj.sInterfaceName;
/* 如果key是BtnSendList 传从表的主键集合 */
let idArr = '';
if(key && key.includes('BtnSendList')) {
if(commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) {
slaveSelectedRowKeys.forEach((item) => {
if(commonUtils.isNotEmptyObject(item)) {
idArr += `${item},`;
}
});
idArr = commonUtils.isNotEmptyObject(idArr) ? idArr.substr(0, idArr.length - 1) : '';
}
}
const value = { sId: key === 'BtnSendList' ? idArr : masterData.sId, masterData, userInfo: app.userinfo, data: map };
const url = `${commonConfig.interface_host}interfaceDefine/callthirdparty/${sInterfaceName}?sModelsId=${sModelsId}`;
const returnData = (await commonServices.postValueService(app.token, value, url, app)).data;
/*
-1: 提示returnData.msg的信息(message.error)
-8: 提示提示returnData.msg的信息(Modal温馨提示)
1: 提示returnData.msg的信息(message.sucess)
2: 提示提示returnData.msg的信息(Modal温馨提示)
**/
if (showTip) {
if ((!returnData || returnData.code < 1)) {
if (commonUtils.isNotEmptyObject(returnData) && returnData.code === -8) {
Modal.info({
title: '温馨提示:',
content: (
{this.handleGetMsg(returnData.msg)}
),
okText: '确认',
onOk() {},
});
} else if (commonUtils.isNotEmptyObject(returnData) && returnData.code === -1) {
message.error(returnData.msg);
}
return;
} else if (returnData.code === 2) {
Modal.info({
title: '温馨提示:',
content: (
{this.handleGetMsg(returnData.msg)}
),
okText: '确认',
onOk() {},
});
} else {
// message.success('同步INFOR成功!');
}
}
let inforEvent = ['itemiss', 'jobmatliss', 'jobmatliss-bz', 'jobmatliss-tl', 'jobmatliss-cx'];
if (obj && inforEvent.indexOf(obj.sInterfaceName) !== -1) {
if ((!returnData || returnData.code < 1)) {
if (returnData) {
if (returnData.code === -8) {
Modal.info({
title: '温馨提示:',
content: (
{this.handleGetMsg(returnData.msg)}
),
okText: '确认',
onOk() {},
});
} else {
message.error(returnData.erroMsg || returnData.msg);
}
} else {
message.error('审核失败!');
}
return false;
}
}
if(commonUtils.isNotEmptyObject(returnData)) {
if (returnData.code > 0) {
bResult = true;
if(commonUtils.isNotEmptyObject(returnData.data) && commonUtils.isNotEmptyObject(returnData.data.dataList)) {
addState.returnData = returnData.data.dataList;
}
}else if (returnData.code === -8) {
Modal.info({
title: '温馨提示:',
content: (
{this.handleGetMsg(returnData.msg)}
),
okText: '确认',
onOk() {},
});
} else {
message.error(returnData.erroMsg || returnData.msg);
}
} else {
bResult = false;
this.props.getServiceError(returnData);
}
addState.bResult = bResult;
// addState.returnData = datalist;
return addState;
}
/* 调用后台配置的日志接口 */
handleInterfaceCallLog = async (ids) => {
let bResult = false;
const { app, sModelsId } = this.props;
const value = { userInfo: app.userinfo };
const url = `${commonConfig.interface_host}interfaceDefine/callthirdpartyByLogId/${ids}?sModelsId=${sModelsId}`;
const returnData = (await commonServices.postValueService(app.token, value, url, app)).data;
if(!returnData) {
message.error('接口调用失败!');
return false;
}
if (returnData.code === 1) {
bResult = true;
// message.success(returnData.msg);
}else if (returnData.code === 2) {
Modal.info({
title: '温馨提示:',
content: (
{this.handleGetMsg(returnData.msg)}
),
okText: '确认',
onOk() {},
});
bResult = true;
}else if (returnData.code === -8) {
Modal.info({
title: '温馨提示:',
content: (
{this.handleGetMsg(returnData.msg)}
),
okText: '确认',
onOk() {},
});
bResult = false;
} else {
bResult = false;
this.props.getServiceError(returnData);
}
return bResult;
}
/* 新增 */
handleAdd = () => {
this.props.onAdd();
};
/* 新增子级 */
handleAddChild= (obj) => {
this.props.onAddChild(obj);
};
handleRefresh = () => {
this.props.onButtonClick('BtnRefresh');
}
handleFilfileManageCancel = (modelVisible) => {
const { slaveConfig, sModelsId } = this.props;
if (['12710101117013204247130'].includes(sModelsId)) {
this.props.onGetData(slaveConfig);
}
this.props.onSaveState({ [modelVisible]: false });
}
handleFilfileManageOk = (modelVisible, selectConfig, filfileSelectedData, sSrcSlaveId, filfileDelData) => {
if (commonUtils.isNotEmptyObject(sSrcSlaveId) && !location.pathname.includes('commonList')) { /* 工单、工艺卡、报价单控制表数据带回 */
let controlFilfileData = [];
let controlFilfileDelData = [];
if (commonUtils.isNotEmptyArr(filfileSelectedData)) {
controlFilfileData = filfileSelectedData.filter(item => item.sSrcSlaveId === sSrcSlaveId);/* 控制表选中行上传的图片数组 */
}
if (commonUtils.isNotEmptyArr(filfileDelData)) {
controlFilfileDelData = filfileDelData.filter(item => item.sSrcSlaveId === sSrcSlaveId);
}
const { sActiveId } = selectConfig;
if (sActiveId && location.pathname.includes('processCardPackTableTree')) {
// 印品PBOM专用附件回调
this.props.onFilfileManageOk1 && this.props.onFilfileManageOk1({
controlFilfileData,
controlFilfileDelData,
sSrcSlaveId
});
} else {
// 通用附件回调
this.props.onFilfileManageOk(controlFilfileData, controlFilfileDelData, sSrcSlaveId);
}
}
this.props.onSaveState({ [modelVisible]: false, visibleOtherFilfile: false }, () => {
const { sAfterClickInstruct, showName } = selectConfig;
if (sAfterClickInstruct) {
instructSet({
...this.props,
slavepupData: filfileSelectedData,
btnConfig: { sInstruct: sAfterClickInstruct, showName }
})
}
});
}
handleSelectDialog = (name, selectConfig, selectData) => {
this.props.onSelectDialog(name, selectConfig, selectData, 'master');
}
handleDialogCancel= () => {
this.props.onSaveState({ visibleInterfaceDialog: false });
}
// 获取订单中的取消
handleCancel = () => {
this.setState({
inputChange: '',
});
this.props.onGetGoodsCancle();
};
// 获取订单中的确定
handleOk = () => {
this.props.onGetGoodsValue(this.state.inputChange);
};
// 获取订单中的值变化
handleInputChange = (e) => {
this.setState({
inputChange: e.target.value,
});
}
radioClick = (Child, e) => {
e.stopPropagation();
const { printData } = this.state;
const iIndex = printData.findIndex(item => item.checkedId === Child.sControlName);
if(iIndex === -1) {
const printObj ={};
printObj.checked = e.target.checked;
printObj.checkedId = Child.sControlName;
printData.push(printObj);
} else {
printData[iIndex] ={...printData[iIndex], checked : e.target.checked}
}
this.setState({
// eslint-disable-next-line react/no-unused-state
// checked: e.target.checked, checkedId: Child.sControlName,
printData
});
}
// 进行存储过程按钮存储过程参数解析拼接 根据存储过程按钮参数配置进行解析,配置是json格式 {"sproName":"cal_sss","inMap":"master.sSlaveId,slave.sId"}
handleBtnEent = async (btnConfig, name, sValue, nextInParams) => {
this.xlyProcessPercent = 0;
clearInterval(this.xlyProcessTimer);
if (this.props.app?.currentPane?.title === "工单损耗及无形损跟踪" && btnConfig?.sControlName === "BtnEventAllWork") {
message.loading({ content: , key: "xlyProcess", duration: 0, className: styles.xlyProcess});
this.xlyProcessTimer = setInterval(() => {
if (this.xlyProcessPercent >= 50) {
this.xlyProcessPercent += 0.2;
} else if (this.xlyProcessPercent >= 90) {
return;
} else {
this.xlyProcessPercent += 0.5;
}
message.loading({ content: , key: "xlyProcess", duration: 0, className: styles.xlyProcess});
}, 500);
}
this.props.onSaveState({
pageLoading: true,
});
const { menuData } = this.state;
let iResult = 0;
let bFirst = false;
if (commonUtils.isNotEmptyObject(btnConfig) && (btnConfig.sControlName === 'BtnEventReceiveReturn' || btnConfig.sControlName === 'BtnEventReceive')) { // 刀模归还, 刀模领用判断是否选择数据
const { slaveSelectedRowKeys, app } = this.props;
if (slaveSelectedRowKeys && commonUtils.isEmptyArr(slaveSelectedRowKeys)) {
message.warn(commonFunc.showMessage(app.commonConst, 'pleaseChooseData')); // 请选择记录
this.props.onSaveState({
pageLoading: false,
});
return;
}
}
if (commonUtils.isNotEmptyObject(btnConfig) && (btnConfig.sControlName.includes('BtnEventAutoOrder'))) { // 刀模归还, 刀模领用判断是否选择数据
bFirst = true; /* 沒有选中行时 默认第一条 */
}
const { masterData, sCurrMemoProps, masterConditionData } = this.props;
if (commonUtils.isNotEmptyObject(name) && name.indexOf('BtnRepair') > -1 && commonUtils.isNotEmptyObject(sCurrMemoProps)) {
sCurrMemoProps.bVisibleMemo = false;
this.props.onSaveState({ sCurrMemoProps });
}
const sButtonParam = btnConfig.sButtonParam;
const btn = commonUtils.convertStrToObj(sButtonParam);
const sProName = btn.sproName;
const inParams = [];
const inMap = btn.inMap;
const inlist = inMap ? inMap.split(',') : [];
const masterArr = [];
const masterConditionArr = [];
const slaveArr = [];
const slaveInfoArr = [];
const controlArr = [];
const materialsArr = [];
const processArr = [];
const sTableName = btn.sTableName;
if (!sTableName && !inMap) { // 都为undefined时直接退出
this.props.onSaveState({
pageLoading: false,
});
return;
}
if (inlist.length > 0) {
inlist.forEach((item) => {
const itemArr = item.split('.');
if (itemArr.length > 0) {
const sname = itemArr[0];
const stype = itemArr[1];
const stypeNew = itemArr.length > 2 ? itemArr[2] : stype;
if (commonUtils.isNotEmptyStr(sname) && sname === 'master') {
masterArr.push([stype, stypeNew]);
}
if (commonUtils.isNotEmptyStr(sname) && sname === 'masterCondition') { /* 参数数据集 */
masterConditionArr.push([stype, stypeNew]);
}
if (commonUtils.isNotEmptyStr(sname) && sname === 'slave') {
slaveArr.push([stype, stypeNew]);
}
if (commonUtils.isNotEmptyStr(sname) && sname === 'slaveInfo') {
slaveInfoArr.push([stype, stypeNew]);
}
if (commonUtils.isNotEmptyStr(sname) && sname === 'control') {
controlArr.push([stype, stypeNew]);
}
if (commonUtils.isNotEmptyStr(sname) && sname === 'materials') {
materialsArr.push([stype, stypeNew]);
}
if (commonUtils.isNotEmptyStr(sname) && sname === 'process') {
processArr.push([stype, stypeNew]);
}
if (commonUtils.isNotEmptyStr(sname) && !['master', 'masterCondition', 'slave', 'slaveInfo', 'control', 'materials', 'process'].includes(sname)) {
const addState = this.handleProParams(sname, [[stype, stypeNew]]);
if (commonUtils.isNotEmptyObject(addState)) {
inParams.push({ ...addState });
}
}
}
});
if (commonUtils.isNotEmptyArr(masterArr) && commonUtils.isNotEmptyObject(masterData)) {
const addState = {};
addState.key = 'master';
const val = [];
const currVal = {};
masterArr.forEach(([stype, stypeNew]) => {
currVal[`${stypeNew}`] = masterData[`${stype}`];
});
val.push(currVal);
addState.value = val;
inParams.push({ ...addState });
}
if (commonUtils.isNotEmptyArr(masterConditionArr) && commonUtils.isNotEmptyObject(masterConditionData)) {
const addState = {};
addState.key = 'masterCondition';
const val = [];
const currVal = {};
masterConditionArr.forEach((filed) => {
currVal[`${filed}`] = masterConditionData[`${filed}`];
});
val.push(currVal);
addState.value = val;
inParams.push({ ...addState });
}
if (commonUtils.isNotEmptyArr(slaveArr)) {
const addState = this.handleProParams('slave', slaveArr, bFirst);
if (commonUtils.isNotEmptyObject(addState)) {
inParams.push({ ...addState });
}
}
if (commonUtils.isNotEmptyArr(slaveInfoArr)) {
const addState = this.handleProParams('slaveInfo', slaveInfoArr);
if (commonUtils.isNotEmptyObject(addState)) {
inParams.push({ ...addState });
}
}
if (commonUtils.isNotEmptyArr(controlArr)) {
const addState = this.handleProParams('control', controlArr);
if (commonUtils.isNotEmptyObject(addState)) {
inParams.push({ ...addState });
}
}
if (commonUtils.isNotEmptyArr(materialsArr)) {
const addState = this.handleProParams('materials', materialsArr);
if (commonUtils.isNotEmptyObject(addState)) {
inParams.push({ ...addState });
}
}
if (commonUtils.isNotEmptyArr(processArr)) {
const addState = this.handleProParams('process', processArr);
if (commonUtils.isNotEmptyObject(addState)) {
inParams.push({ ...addState });
}
}
}
if (commonUtils.isNotEmptyStr(sTableName) && commonUtils.isNotEmptyArr(inParams)) {
inParams.forEach(item => {
if (commonUtils.isNotEmptyArr(item.value)) {
item.value.forEach(item1 => {
item1.sTableName = sTableName;
})
}
});
}
/* 列表增加查询条件的传参 */
if(location.pathname?.includes('indexPage/commonList') && (btnConfig?.sControlName === "BtnEventOneWork"
|| btnConfig?.sControlName === "BtnEventAllWork")) {
const { slaveFilterCondition = []} = this.props;
if (commonUtils.isNotEmptyArr(slaveFilterCondition) && commonUtils.isNotEmptyArr(inParams)) {
inParams.forEach(item => {
item.bFilter = slaveFilterCondition;
});
}
}
const iIndex = commonUtils.isNotEmptyObject(btnConfig) ? menuData.findIndex(item => item.sControlName === btnConfig.sControlName) : -1;
let interfaceArr = [];
if (iIndex > -1) {
interfaceArr = menuData[iIndex].interface;
}
if (commonUtils.isNotEmptyArr(interfaceArr) && commonUtils.isNotEmptyObject(btnConfig) && btnConfig.sControlName.includes('BtnRepair')) {
if(true) {
const { slaveSelectedRowKeys, app, slaveData, } = this.props;
if (inMap && inMap.includes('slave.') && slaveSelectedRowKeys && commonUtils.isEmptyArr(slaveSelectedRowKeys)) {
message.warn(commonFunc.showMessage(app.commonConst, 'pleaseChooseData')); // 请选择记录
this.props.onSaveState({
pageLoading: false,
});
return;
}
let slaveRow = {};
const iSlaveDataIndex = slaveData.findIndex(item => slaveSelectedRowKeys.includes(item.sSlaveId));
if(iSlaveDataIndex > -1) {
slaveRow = slaveData[iSlaveDataIndex];
}
let ids = '';
if(location.pathname.includes('commonList')){
let { slaveSelectedData } = this.props;
if(commonUtils.isEmptyArr(slaveSelectedData) && commonUtils.isNotEmptyArr(slaveData)) {
slaveSelectedData = slaveData.filter(item => slaveSelectedRowKeys.includes(item.sId) || slaveSelectedRowKeys.includes(item.sSlaveId));
}
const slaveSelectedDataNew = this.deteleObject(slaveSelectedData); // 删除sid重复的数据
if(commonUtils.isNotEmptyArr(slaveSelectedDataNew)) {
slaveSelectedDataNew.forEach((item) => {
if(commonUtils.isNotEmptyObject(item)) {
ids += `${item.sId},`;
}
});
ids = commonUtils.isNotEmptyObject(ids) ? ids.substr(0, ids.length - 1) : '';
}
} else {
ids = slaveRow.sId
}
const beforeInterfaceArr = interfaceArr.filter(item => item.sInterfaceCallMethod === "1");
const afterInterfaceArr = commonUtils.isNotEmptyArr(interfaceArr) ? interfaceArr.filter(item => item.sInterfaceCallMethod === "2" ) : [];
if(commonUtils.isNotEmptyArr(beforeInterfaceArr)) { /* 之前调用 */
let flag = 0;
const asyncFunc = async () => {
for (let i = 0; i < beforeInterfaceArr.length; i ++) {
const data = await this.handleInterfaceCall(beforeInterfaceArr[i], true, btnConfig.sControlName, ids);
if (!data) {
flag += 1;
this.props.onSaveState({
pageLoading: false,
});
return;
}
}
}
await asyncFunc();
if (flag == 0) {
await this.handleProcedureCall(btnConfig, sProName, JSON.stringify({ params: inParams, changeValue: sValue, sButtonParam: btn }));
}
}
if(commonUtils.isNotEmptyArr(afterInterfaceArr)) { /* 之后调用 */
const result = await this.handleProcedureCall(btnConfig, sProName, JSON.stringify({ params: inParams, changeValue: sValue, sButtonParam: btn }));
if(result > 0) { /* 只有成功 才能调用接口 -5代表失败 */
const asyncFunc = async () => {
for (let i = 0; i < afterInterfaceArr.length; i++) {
await this.handleInterfaceCall(afterInterfaceArr[i],true, btnConfig.sControlName, ids);
}
}
await asyncFunc();
}
}
}
} else {
const inParamsNew = nextInParams || inParams;
iResult = await this.handleProcedureCall(btnConfig, sProName, JSON.stringify({ params: inParamsNew, changeValue: sValue, sButtonParam: btn }));
}
if (this.props.app?.currentPane?.title === "工单损耗及无形损跟踪" && btnConfig?.sControlName === "BtnEventAllWork") {
clearInterval(this.xlyProcessTimer);
this.xlyProcessPercent = 91;
message.loading({ content: , key: "xlyProcess", duration: 0, className: styles.xlyProcess});
this.xlyProcessTimer = setInterval(() => {
this.xlyProcessPercent += 1;
message.loading({ content: , key: "xlyProcess", duration: 0, className: styles.xlyProcess});
if (this.xlyProcessPercent === 100) {
clearInterval(this.xlyProcessTimer);
setTimeout(() => {
message.destroy();
}, 1000);
}
}, 100);
}
this.props.onSaveState({
pageLoading: false,
});
return iResult;
};
// 存储过程按钮调用存储过程
handleProcedureCall = async (btnConfig, proName, proInParam, other) => {
const { app, sModelsId } = this.props;
let iResult = 0;
const sBtnName = btnConfig.sControlName;
const value = { sProName: proName, sProInParam: proInParam, sBtnName };
if (other?.iFlag === 1) {
value.iFlag = 1;
}
const url = `${commonConfig.server_host}procedureCall/doGenericProcedureCall?sModelsId=${sModelsId}`;
// const url = '';
const returnData = (await commonServices.postValueService(app.token, value, url)).data;
if (proName === 'Sp_BtnEven_CalcJsHs') {
if (returnData.code === 1) {
message.success(returnData.msg);
} else {
message.warning(returnData.msg);
}
const proInParamJson = commonUtils.convertStrToObj(proInParam);
const sId = proInParamJson.params?.[0]?.value?.[0]?.sId;
const { slave3Data = [] } = this.props;
const iIndex = slave3Data.findIndex(item => item.sId === sId);
if (iIndex !== -1) {
slave3Data[iIndex].sCalcProDetail = returnData.msg;
this.props.onSaveState({ slave3Data });
}
} else if (returnData.code === 1) {
message.success(returnData.msg);
this.handleClosePane(btnConfig, () => {
this.props.onButtonClick('BtnRefresh');
});
} else if (returnData.code === -8) {
Modal.info({
title: '温馨提示:',
content: (
{this.handleGetMsg(returnData.msg)}
),
okText: '确认',
onOk() {},
});
} else {
this.props.getServiceError({ ...returnData, fn: () => this.handleProcedureCall(btnConfig, proName, proInParam, { iFlag: 1 }) });
}
iResult = returnData.code;
this.props.onSaveState({ loading: false });
// 点击返回重排的时候刷新树
if (btnConfig.sControlName === 'BtnEventReturn') {
if (this.props.refreshTreeData) {
this.props.refreshTreeData();
}
}
return iResult
}
// 根据配置解析拼接具体参数
handleProParams = (sKey, arr, bFirst) => {
const { [`${sKey}Data`]: tableData, [`${sKey}SelectedRowKeys`]: selectedRowKeys } = this.props;
let keyData = commonUtils.isNotEmptyArr(tableData) && commonUtils.isNotEmptyArr(selectedRowKeys) ? tableData.filter(item => commonUtils.isEmptyObject(item.sDivRowNew) && (selectedRowKeys.includes(item.sId) || selectedRowKeys.includes(item.sSlaveId))) : [];
if (bFirst) { /* 没有选中行时默认第一条 */
if (commonUtils.isNotEmptyArr(tableData)) {
keyData = [tableData[0]];
}
}
if (commonUtils.isNotEmptyArr(keyData)) {
const addState = {};
addState.key = sKey;
const val = [];
keyData.forEach((currData) => {
const currVal = {};
arr.forEach(([stype, stypeNew]) => {
currVal[`${stypeNew}`] = currData[`${stype}`];
});
val.push(currVal);
});
addState.value = val;
return addState;
} else {
return undefined;
}
};
/* 双击弹出Memo */
handleGetMemo = (name, sValue, sMemoFiled, sRecord, bVisibleMemo, btnConfig, sCurrMemoPropsType) => {
const sCurrMemoProps = sCurrMemoPropsType === '1' ? this.props.sCurrMemoProps1 : this.props.sCurrMemoProps;
sCurrMemoProps.bVisibleMemo = false;
if (btnConfig.length > 0) {
sRecord[sMemoFiled] = sValue;
if (sCurrMemoPropsType === '1') {
this.props.onSaveState({ sCurrMemoProps1: sCurrMemoProps });
} else {
this.props.onSaveState({ sCurrMemoProps });
}
this.handleToForceComplete(sValue);
} else {
let { [`${name}Data`]: tableData } = this.props;
let addStata = { [`${sMemoFiled}`]: sValue };
if (name !== 'master') {
const iIndex = tableData.findIndex(item => item.sId === sRecord.sId);
let handleType = tableData[iIndex].handleType;/* 获取操作类型 */
handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType;
addStata.handleType = handleType;
tableData[iIndex] = { ...tableData[iIndex], ...addStata };
} else {
if (sMemoFiled === 'sFormulaMemo') {
addStata.sFormula = sValue;
}
let handleType = tableData.handleType;/* 获取操作类型 */
handleType = commonUtils.isEmpty(handleType) ? 'update' : handleType;
addStata.handleType = handleType;
tableData = { ...tableData, ...addStata };
}
this.props.onSaveState({ ...sCurrMemoProps, [`${name}Data`]: tableData});
}
};
handleGetMemo1 = (name, sValue, sMemoFiled, sRecord, bVisibleMemo, btnConfig) => {
this.handleGetMemo(name, sValue, sMemoFiled, sRecord, bVisibleMemo, btnConfig, '1');
}
/* 点击隐藏Memo 弹窗 */
handleGetMemoCancel = () => {
const { sCurrMemoProps } = this.props;
sCurrMemoProps.bVisibleMemo = false;
this.props.onSaveState({ sCurrMemoProps });
};
handleGetMemoCancel1 = () => {
const { sCurrMemoProps1 } = this.props;
sCurrMemoProps1.bVisibleMemo = false;
this.props.onSaveState({ sCurrMemoProps1 });
}
handleForceComplete = (name, createDate) => {
let sysLogData = {};
const slaveMemoConfigOld = [];
const {
slaveSelectedRowKeys, slaveInfoSelectedRowKeys, app, masterConfig, slaveInfoData, masterData, slaveData, gdsformconst,
} = this.props;
const btnConfig = commonUtils.isNotEmptyObject(masterConfig) && commonUtils.isNotEmptyArr(masterConfig.gdsconfigformslave.filter(item => item.sControlName === name)) ? masterConfig.gdsconfigformslave.filter(item => item.sControlName === name)[0] :{};// sButtonEnabled sButtonParam
const bNoMemo = btnConfig.sDefault === 'noMemo';
if (createDate !== 'chooseDate') {
let target = '';
if (btnConfig.sActiveKey) {
target = btnConfig.sActiveKey.split(',')[0].split('.')[0];
}
if (target === 'slave' && commonUtils.isEmptyArrNew(slaveSelectedRowKeys)) {
message.warn(commonFunc.showMessage(app.commonConst, 'pleaseChooseData')); // 请选择记录
} else if (target === 'slaveInfo' && commonUtils.isEmptyArrNew(slaveInfoSelectedRowKeys)) {
message.warn(commonFunc.showMessage(app.commonConst, 'pleaseChooseData')); // 请选择记录
} else if (target === 'slaveInfo' && !Array.isArray(slaveInfoData)) {
message.warn('请展开详情并选择数据。'); // 请选择记录
} else {
let btnConfigNameArr = [];
let singleConfig = {};
let singleRow = {}; /* 选中行的数据 */
if (name.indexOf('BtnRepair') > -1) {
if (!commonUtils.isEmpty(btnConfig.sActiveKey)) {
btnConfigNameArr = btnConfig.sActiveKey.split(',');
}
if (commonUtils.isNotEmptyArr(btnConfigNameArr)) {
// eslint-disable-next-line array-callback-return
btnConfigNameArr.map((i) => {
let sIndex = -1;
if (target === 'slaveInfo') {
sIndex = this.props.slaveInfoConfig.gdsconfigformslave.findIndex(item => (item.sName === i.split('.')[1]));
const iSlaveIndex = slaveInfoData.findIndex(item => slaveInfoSelectedRowKeys.includes(item.sSlaveId));
if(iSlaveIndex > -1) {
singleRow = slaveInfoData[iSlaveIndex];
}
} else if (target === 'master') {
sIndex = this.props.masterConfig.gdsconfigformslave.findIndex(item => (item.sName === i.split('.')[1]));
singleRow = masterData;
} else {
if(commonUtils.isNotEmptyObject(this.props) && commonUtils.isNotEmptyObject(this.props.slaveConfig)) {
sIndex = this.props.slaveConfig.gdsconfigformslave.findIndex(item => (item.sName === i));
const iSlaveIndex = slaveData.findIndex(item => slaveSelectedRowKeys.includes(item.sSlaveId));
if (iSlaveIndex > -1) {
singleRow = slaveData[iSlaveIndex];
}
}
}
console.log('singleRow:', singleRow);
if (sIndex > -1) {
if (target === 'slaveInfo') {
singleConfig = this.props.slaveInfoConfig.gdsconfigformslave[sIndex];
} else if (target === 'master') {
singleConfig = this.props.masterConfig.gdsconfigformslave[sIndex];
}else {
singleConfig = this.props.slaveConfig.gdsconfigformslave[sIndex];
}
if (masterData && commonUtils.isNotEmptyObject(singleRow)) {
masterData[singleConfig.sName] = singleRow[singleConfig.sName];
}
// if (masterData && commonUtils.isNotEmptyObject(singleConfig)) {
// masterData[singleConfig.sName] = undefined;
// }
slaveMemoConfigOld.push(singleConfig);
}
});
}
}
/* 时间格式的字段 若默认值为空 则取当前时间 */
const activeKeyData = commonUtils.isNotEmptyObject(btnConfig.sActiveKey) ? btnConfig.sActiveKey.split(',') : [];
if (activeKeyData.length > 1) { /* 当多字段时候 若时间格式的字段 若默认值为空 则取当前时间 */
const filterData = activeKeyData.filter(item => item.substring(0, 1) === 't');
if (commonUtils.isNotEmptyArr(filterData)) {
filterData.forEach((item) => {
let currentDate = moment().format('YYYY-MM-DD HH:mm:ss');
// 如果默认值为0 则不设置默认时间
const itemConfigIndex = masterConfig.gdsconfigformslave.findIndex(config => config.sName ===item);
if (itemConfigIndex !== -1 && masterConfig.gdsconfigformslave[itemConfigIndex].sDefault === '0') {
currentDate = null;
}
if (commonUtils.isNotEmptyObject(masterData) && commonUtils.isEmpty(masterData[item])) {
masterData[item] = currentDate;
}
});
}
} else {
if (commonUtils.isNotEmptyObject(btnConfig.sActiveKey) && btnConfig.sActiveKey.substring(0, 1) === 't') {
if (commonUtils.isNotEmptyObject(masterData) && commonUtils.isEmpty(masterData[btnConfig.sActiveKey])) {
masterData[btnConfig.sActiveKey] = moment().format('YYYY-MM-DD HH:mm:ss');
}
}
}
// if (slaveSelectedRowKeys === undefined || slaveSelectedRowKeys === null) {
// message.warn('请选择数据!');
// return;
// }
sysLogData =commonUtils.isNotEmptyArr(slaveSelectedRowKeys) ? { sId: slaveSelectedRowKeys.toString() } : {};
this.props.onSaveState({
slaveMemoConfig: slaveMemoConfigOld,
masterData: commonUtils.isNotEmptyObject(masterData) ? lodash.cloneDeep(masterData) : {}, /* 将选中行数据深拷贝 变成两个互不相扰的独立数据源 */
sCurrMemoProps: {
bVisibleMemo: true,
sMemoField: 'sReason',
sRecord: sysLogData,
dataSource: sysLogData,
btnName: name,
bNoMemo,
},
});
}
} else {
/* 从系统常量中找到pChooseDate的sName */
let pChooseDateName = '生成凭证';
if(commonUtils.isNotEmptyArr(gdsformconst)) {
const iIndex = gdsformconst.findIndex(item => item.sName === 'pChooseDate');
if (iIndex > -1) {
pChooseDateName = gdsformconst[iIndex].showName;
}
}
const chooseDateConfig = {
sId: commonUtils.createSid(),
sName: 'pChooseDate',
sDropDownType: 'sql',
bNotEmpty: false,
iVisCount: 1,
dropDownData: [],
showName: pChooseDateName,
sDateFormat:btnConfig && btnConfig.sDateFormat ? btnConfig.sDateFormat : 'YYYY-MM-DD'
};
slaveMemoConfigOld.push(chooseDateConfig);
this.props.onSaveState({
slaveMemoConfig: slaveMemoConfigOld,
sCurrMemoProps: {
bVisibleMemo: true,
sMemoField: 'sReason',
sRecord: sysLogData,
dataSource: sysLogData,
btnName: name,
bNoMemo,
},
});
}
}
handleToForceComplete = async (sValue) => {
const {
app, slaveSelectedRowKeys, slaveConfig, sModelsId, slaveInfoSelectedRowKeys, formRoute,
masterConfig,
} = this.props;
const { token } = app;
let iIndex = -1;
if (masterConfig && Array.isArray(masterConfig.gdsconfigformslave)) {
iIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'BtnForceComplete' || item.sControlName === 'BtnNoPurchase');
}
if (iIndex < 0 && slaveConfig && Array.isArray(slaveConfig.gdsconfigformslave)) {
iIndex = slaveConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'BtnForceComplete' || item.sControlName === 'BtnNoPurchase');
}
if (iIndex < 0) return;
const btnConfig = slaveConfig.gdsconfigformslave[iIndex];
// debugger
const sRelation = btnConfig.sRelation;
let selectedRowKeys = '';
if (formRoute === '/indexPage/materialRequirementsPlanning') {
selectedRowKeys = slaveInfoSelectedRowKeys.toString();
} else {
selectedRowKeys = slaveSelectedRowKeys.toString();
}
const url = `${commonConfig.server_host}bill/billForceComplete?sModelsId=${sModelsId}&sName=${formRoute}`;
const values = { sqlParam: sRelation, sId: selectedRowKeys, sReason: sValue };
const masterReturn = (await commonServices.postValueService(token, values, url)).data;
if (masterReturn.code === 1) {
message.success(masterReturn.msg);
this.props.onButtonClick('BtnRefresh');
} else {
this.props.getServiceError(masterReturn);
}
}
/** 上传文件改变时的状态 */
handleUploadChange = async (info) => {
const {
slaveSelectedRowKeys, app, slaveSelectedData, sModelsId, token,
} = this.props;
if (slaveSelectedRowKeys === undefined || slaveSelectedRowKeys.length !== 1) {
message.warn(commonFunc.showMessage(app.commonConst, 'selectedRowKeysNo')); /* 请先选择一条数据! */
return;
}
const { file } = info;
if (file.response) {
if (file.response.code === 1) {
/* 成功 */
message.success(file.response.msg);
const savePathStr = file.response.dataset.rows[0].savePathStr;
const sId = commonUtils.isNotEmptyArr(slaveSelectedData) ? slaveSelectedData[0].sId : '';
const bFile = commonUtils.isNotEmptyArr(slaveSelectedData) ? slaveSelectedData[0].bCorrespondFile : '';
if (commonUtils.isNotEmptyObject(sId) && !bFile) {
const url = `${commonConfig.server_host}salesorder/updateOrderCorrespondFile?sModelsId=${sModelsId}`;
const values = { sOrderId: sId, savePathStr };
const sReturn = (await commonServices.postValueService(token, values, url)).data;
if (sReturn.code === 1) {
this.props.onButtonClick('BtnRefresh');
} else {
this.props.getServiceError(sReturn);
}
}
} else { /* 失败 */
this.props.getServiceError({ msg: commonFunc.showMessage(app.commonConst, 'reportDesign') + file.response }); /* 报表设计 */
}
}
};
/** 上传发票文件改变时的状态 */
handleUploadInvoiceChange = async (info) => {
const {
slaveSelectedRowKeys, app, slaveSelectedData, sModelsId, token,
} = this.props;
if (slaveSelectedRowKeys === undefined || slaveSelectedRowKeys.length !== 1) {
message.warn(commonFunc.showMessage(app.commonConst, 'selectedRowKeysNo')); /* 请先选择一条数据! */
return;
}
const { file } = info;
if (file.response) {
if (file.response.code === 1) {
/* 成功 */
message.success(file.response.msg);
} else { /* 失败 */
this.props.getServiceError({ msg:'发票上传失败!' }); /* 报表设计 */
}
}
};
/* 订单文件下载 */
handleBtnDownload = () => {
const {
slaveSelectedRowKeys, slaveData, app,
} = this.props;
if (commonUtils.isEmptyArr(slaveSelectedRowKeys)) {
message.warn(commonFunc.showMessage(app.commonConst, 'selectedRowKeysNo'));/* 请先选择一条数据 */
return;
}
const dataSelect = slaveData.filter(item => slaveSelectedRowKeys.includes(item.sSlaveId));
const sBillNoArr = [];
let sBillNoStr = '';
if (commonUtils.isNotEmptyArr(dataSelect)) {
dataSelect.forEach((item) => {
sBillNoArr.push(item.sBillNo);
});
sBillNoStr = JSON.stringify(sBillNoArr);
}
if (commonUtils.isNotEmptyArr(sBillNoArr)) {
const urlPrint = `${commonConfig.file_host}file/downloadPbOrder`;
this.handleOpenPost(urlPrint, sBillNoStr);
}
};
handleOpenPost= (url, params) => {
const newWin = window.open();
let formStr = '';
formStr = `';
newWin.document.body.innerHTML = formStr;
newWin.document.forms[0].submit();
return newWin;
}
handleUploadImgChange = (info) => {
const { file } = info;
if (file.response && file.response.code === 1) {
const { treeSelectedKeys } = this.props;
const sPicturePath = file.response.dataset.rows[0].savePathStr;
const uploadInfo = {
sPicturePath,
sFileName: file.name,
};
let { masterData } = this.props;
const addState = {};
if (file.response && file.response.code === 1) {
addState.sTitleLogoPath = uploadInfo.sPicturePath;
/* 当前设备状态上传多张图 */
if (commonUtils.isNotEmptyArr(treeSelectedKeys) && treeSelectedKeys[0].indexOf('101251240115016043081412740') > -1) {
addState.sTitleLogoPath = masterData.sTitleLogoPath;
if (commonUtils.isNotEmptyObject(addState.sTitleLogoPath)) {
addState.sTitleLogoPath += `,${uploadInfo.sPicturePath}`;
} else {
addState.sTitleLogoPath = uploadInfo.sPicturePath;
}
}
addState.handleType = 'update';
}
masterData = { ...masterData, ...addState };
this.props.onSaveState({ masterData });
} else if (file.response && file.response.code === -1) {
message.error(file.response.msg);
}
};
/* 通用上传员工图片 */
handleUploadPicChange = (info) => {
const { file } = info;
if (file.response && file.response.code === 1) {
const sPicturePath = file.response.dataset.rows[0].savePathStr;
const spicture = sPicturePath;
const uploadInfo = {
sPicturePath,
sFileName: file.name,
};
let { masterData } = this.props;
const addState = {};
if (file.response && file.response.code === 1) {
addState.sPicturePath = uploadInfo.sPicturePath;
addState.spicture = spicture;
addState.handleType = 'update';
}
masterData = { ...masterData, ...addState };
this.props.onSaveState({ masterData });
} else if (file.response && file.response.code === -1) {
message.error(file.response.msg);
}
};
customRequest = (option) =>{
const { onSuccess, onError, file, action, data = {} } = option;
// 添加额外的参数
const formData = new FormData();
formData.append('file', file);
Object.keys(data).forEach((key) => {
formData.append(key, data[key]);
});
fetch(action, {
method: 'POST',
body: formData,
})
.then(response => response.json())
.then(data => {
onSuccess(data, file);
})
.catch(error => {
onError(error);
});
}
// 获取img元素
getImageDom = (sIcon) => {
if (!sIcon) {
return false;
}
const imageUrl = `${commonConfig.file_host}file/download?savePathStr=${sIcon}&sModelsId=100&token=${this.props.token}`;
return
;
};
/** 渲染 */
render() {
const { menuData, searchUpDownData, fileImpositionData = {} } = this.state;
const {
loading, sModelsId, masterConfig, masterData, visibleGetGoods, visibleFilfile, visibleOtherFilfile, copyFromChooseVisible, app, sTabId, controlSelectedRowKeys, sModelsType, slaveSelectedData, slaveSelectedRowKeys, formRoute, slaveData, visibleInterfaceDialog, interfaceDialogData, visibleApiDialog, getApiDialogData, bTabModal,
} = this.props;
const { userinfo } = app;
const pane = app.panes.filter(paneTmp => paneTmp.key === sTabId)[0];
const filfileManageTitle = commonFunc.showMessage(app.commonConst, 'filfileManageTitle');/* 通用文件上传 */
const getGoodsTitle = commonFunc.showMessage(app.commonConst, 'getGoodsTitle');/* 获取订单表头 */
const getGoodsPlaceholder = commonFunc.showMessage(app.commonConst, 'handleNoWebOrderIds');/* 获取订单输入框字样 */
let btnUploadConfig = {};
if (commonUtils.isNotEmptyObject(masterConfig)) {
const iIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'BtnUpload');
if (iIndex > -1) {
btnUploadConfig = this.props.masterConfig.gdsconfigformslave[iIndex];
}
}
/* 第二个上传按钮 */
let btnUploadOtherConfig = {};
if (commonUtils.isNotEmptyObject(masterConfig)) {
const iOtherIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sControlName && item.sControlName.includes('BtnUploadOther'));
if (iOtherIndex > -1) {
btnUploadOtherConfig = this.props.masterConfig.gdsconfigformslave[iOtherIndex];
}
}
let btnUploadIconConfig = {};
if (commonUtils.isNotEmptyObject(masterConfig)) {
const iIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'BtnUploadicon');
if (iIndex > -1) {
btnUploadIconConfig = this.props.masterConfig.gdsconfigformslave[iIndex];
}
}
let sSlaveId = '';
let selectedsId = ''; /* 列表选中行或窗体sFormId */
let selectedRow = {};
const bList = ['/indexPage/commonList', '/indexPage/commonClassify'].includes(formRoute);
if ((sModelsType === 'manufacture/workOrder' || sModelsType === 'manufacture/workOrder3' || sModelsType === 'quotation/quotation') && commonUtils.isNotEmptyArr(controlSelectedRowKeys)) {
sSlaveId = controlSelectedRowKeys[0];/* 控制表选中行ID */
} else if (bList) { /* HM订单准印资质列表 sSrcId为列表选中行sId */
if (sModelsType === 'HMOrderList') {
if (commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) {
selectedsId = slaveSelectedRowKeys[0];
}
} else if (commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) {
const iIndex = slaveData.findIndex(item => slaveSelectedRowKeys.includes(item.sSlaveId));
if (iIndex > -1) {
selectedRow = slaveData[iIndex];
selectedsId = commonUtils.isNotEmptyArr(slaveData) && commonUtils.isNotEmptyObject(selectedRow) ? (commonUtils.isNotEmptyObject(selectedRow.sFormId) ? selectedRow.sFormId : '') : ''; /* 列表从表的sFormId */
sSlaveId = commonUtils.isNotEmptyArr(slaveData) && commonUtils.isNotEmptyObject(selectedRow) ? (commonUtils.isNotEmptyObject(selectedRow.sSlaveId) ? selectedRow.sSlaveId : '') : ''; /* 列表从表的sSlaveId */
}
}
}
/* 如果配置按钮有sqlConditon条件 则根据SQLCondition条件 否则走正常 */
let conditonValues ={ sSrcId: bList ? selectedsId : commonUtils.isNotEmptyObject(masterData) ? masterData.sId : '' };
if(commonUtils.isNotEmptyObject(btnUploadConfig) && btnUploadConfig.sSqlCondition) {
/* 选中行 */
if (commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) {
const iIndex = slaveData.findIndex(item => slaveSelectedRowKeys.includes(item.sSlaveId));
if(iIndex > -1) {
if(commonUtils.isNotEmptyObject(selectedRow)) {
conditonValues = this.props.getSqlCondition(btnUploadConfig,'slave', selectedRow);
}
}
}
}
let conditonOtherValues ={ sSrcId: bList ? selectedsId : commonUtils.isNotEmptyObject(masterData) ? masterData.sId : '' };
if(commonUtils.isNotEmptyObject(btnUploadOtherConfig) && btnUploadOtherConfig.sSqlCondition) {
/* 选中行 */
if (commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) {
const iIndex = slaveData.findIndex(item => slaveSelectedRowKeys.includes(item.sSlaveId));
if(iIndex > -1) {
if(commonUtils.isNotEmptyObject(selectedRow)) {
conditonOtherValues = this.props.getSqlCondition(btnUploadOtherConfig,'slave', selectedRow);
}
}
}
}
const filfilemanageType = {
app: {
...this.props.app,
currentPane: {
name: 'elefilfilemanage',
config: btnUploadConfig,
conditonValues,
title: filfileManageTitle,
route: '/elefilfilemanage',
formId: btnUploadConfig && btnUploadConfig.sActiveId ? btnUploadConfig.sActiveId : '15864832090002447752315825731600',
key: `${sModelsId}15864832090002447752315825731600`,
sModelsType: 'element/filfilemanage',
sSrcNo: bList ? (commonUtils.isNotEmptyArr(selectedRow) ? selectedRow.sBillNo : '') : (commonUtils.isNotEmptyObject(masterData) ? masterData.sBillNo : ''), /* 源单号 */
sSrcFormId: bList ? (commonUtils.isNotEmptyArr(selectedRow) ? sModelsId : '') : (commonUtils.isNotEmptyObject(masterData) ? masterData.sFormId : ''), /* 源单窗体Id */
sSrcId: bList ? (commonUtils.isNotEmptyObject(selectedRow) ? selectedRow.sId : '') : commonUtils.isNotEmptyObject(masterData) ? masterData.sId : '', /* 源单Id */
sSrcSlaveId: commonUtils.isNotEmptyObject(sSlaveId) ? sSlaveId : '', /* 工单控制表选中行或列表的是sSlaveId */
onFilfileOk: this.handleFilfileManageOk,
onFilfileCancel: this.handleFilfileManageCancel,
refresh: this.handleRefresh,
},
},
config: btnUploadConfig,
enabled: true, /*this.props.enabled */
dispatch: this.props.dispatch,
content: this.props.content,
id: new Date().getTime().toString(),
};
/* 第二个上传按钮配置 */
const filfilemanageOtherType = {
app: {
...this.props.app,
currentPane: {
name: 'elefilfilemanage',
config: btnUploadOtherConfig,
conditonValues: conditonOtherValues,
title: filfileManageTitle,
route: '/elefilfilemanage',
formId: btnUploadOtherConfig && btnUploadOtherConfig.sActiveId ? btnUploadOtherConfig.sActiveId : '15864832090002447752315825731600',
key: `${sModelsId}15864832090002447752315825731600`,
sModelsType: 'element/filfilemanage',
sSrcNo: bList ? (commonUtils.isNotEmptyArr(selectedRow) ? selectedRow.sBillNo : '') : (commonUtils.isNotEmptyObject(masterData) ? masterData.sBillNo : ''), /* 源单号 */
sSrcFormId: bList ? (commonUtils.isNotEmptyArr(selectedRow) ? sModelsId : '') : (commonUtils.isNotEmptyObject(masterData) ? masterData.sFormId : ''), /* 源单窗体Id */
sSrcId: bList ? (commonUtils.isNotEmptyObject(selectedRow) ? selectedRow.sId : '') : commonUtils.isNotEmptyObject(masterData) ? masterData.sId : '', /* 源单Id */
sSrcSlaveId: commonUtils.isNotEmptyObject(sSlaveId) ? sSlaveId : '', /* 工单控制表选中行或列表的是sSlaveId */
onFilfileOk: this.handleFilfileManageOk,
onFilfileCancel: this.handleFilfileManageCancel.bind(this, 'visibleOtherFilfile'),
},
},
config: btnUploadOtherConfig,
enabled: true, /*this.props.enabled */
dispatch: this.props.dispatch,
content: this.props.content,
id: new Date().getTime().toString(),
};
/* 通用复制从调用 */
let copyFromType = {};
let copyFromConfig = {};
let copyFromTitle = '自定义复制从窗体';/* 复制从工艺卡查询结果 */
if (commonUtils.isNotEmptyObject(this.props.copyFromChooseData)) {
const copyFromKey = this.props.copyFromKey;
const iIndex = this.props.masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === copyFromKey);
if (iIndex > -1) {
copyFromConfig = this.props.masterConfig.gdsconfigformslave[iIndex];
copyFromTitle = commonUtils.isNotEmptyObject(copyFromConfig) ? copyFromConfig.sActiveName : copyFromTitle;
}
copyFromType = {
app: {
...this.props.app,
currentPane: {
name: 'commonCopyFrom',
config: copyFromConfig,
conditonValues: this.props.getSqlCondition(copyFromConfig),
title: this.props.copyFromChooseData.sMenuName,
route: this.props.copyFromChooseData.sName,
formId: this.props.copyFromChooseData.sId,
key: sModelsId + this.props.copyFromChooseData.sId,
sModelsType: this.props.copyFromChooseData.sModelType,
select: this.props.onCopyFromSelect, /* 自定义复制从窗体时间 */
selectCancel: this.handleFilfileManageCancel.bind(this, 'copyFromChooseVisible'),
},
},
dispatch: this.props.dispatch,
content: this.props.content,
id: new Date().getTime().toString(),
};
}
/* 接口对话框弹出推送接口返回数据功能 */
let btnDialogConfig = {};
if (commonUtils.isNotEmptyObject(masterConfig)) {
const iIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'BtnSendDialog');
if (iIndex > -1) {
btnDialogConfig = this.props.masterConfig.gdsconfigformslave[iIndex];
}
}
const intefaceDialogType = {
app: {
...this.props.app,
currentPane: {
name: 'interfaceDialog',
config: btnDialogConfig,
conditonValues,
title: filfileManageTitle,
route: '/eleintefaceDialog',
formId: btnDialogConfig && btnDialogConfig.sActiveId ? btnDialogConfig.sActiveId : '15864832090002447752315825731600',
key: `${sModelsId}15864832090002447752315825731600`,
sModelsType: 'element/intefaceDialog',
select:this.handleSelectDialog,
selectCancel:this.handleDialogCancel,
},
},
config: btnDialogConfig,
slaveData: interfaceDialogData,
enabled: true, /*this.props.enabled */
dispatch: this.props.dispatch,
content: this.props.content,
id: new Date().getTime().toString(),
onGetIntefaceDialogData: (slaveFilterCondition = [], callback) => {
const tempCondition = {};
slaveFilterCondition.forEach(item => {
const { bFilterName, bFilterValue } = item;
tempCondition[bFilterName] = bFilterValue;
});
this.tempCondition = tempCondition;
this.handleClick({ key: 'BtnSendDialog' });
setTimeout(() => {
callback && callback();
}, 1000);
}
};
let upPbOrderProps = {};
let sBillNo = '';
if (commonUtils.isNotEmptyArr(slaveSelectedData)) {
sBillNo = slaveSelectedData[0].sBillNo;
}
const uploadIconProps = {
action: `${commonConfig.file_host}file/upload?sModelsId=${sModelsId}&token=${app.token}&sUploadType=model`,
onChange: this.handleUploadImgChange,
accept: 'image/*',
showUploadList: false,
listType: 'text',
disabled: !this.props.enabled,
// beforeUpload: this.handleBeforeUpload,
};
upPbOrderProps = {
action: `${commonConfig.file_host_ebc}file/uploadPbOrder?sModelsId=${sModelsId}&&sOrderNo=${sBillNo}`,
onChange: this.handleUploadChange,
accept: '.pdf',
showUploadList: false,
beforeUpload: () => {
if (commonUtils.isEmptyObject(sBillNo)) {
const noUpload = commonFunc.showMessage(app.commonConst, 'NoUpload');/* 禁止上传 */
message.error(noUpload);
return false;
}
},
};
/* 职工信息上传员工图片 */
const uploadPicProps = {
action: `${commonConfig.file_host}file/upload?sModelsId=${sModelsId}&token=${app.token}`,
onChange: this.handleUploadPicChange,
accept: 'image/*',
showUploadList: false,
disabled: !this.props.enabled,
// beforeUpload: this.handleBeforeUpload,
};
/* 发票上传 */
let invoiceBody ={};
if (commonUtils.isNotEmptyArr(slaveSelectedData)) {
const slaveRow = slaveSelectedData[0];
invoiceBody ={
invTaxNum: slaveRow.sBillNo, /* 发票号码 */
invType: "8000", /* 增值税发票类型代码 */
invSellerName: slaveRow.sSupplyName, /* 发票销方名称 */
statusQuery: 0, /* 查询条件 */
relaBizNos: { /* 业务单号集合 */
// "relaBizNo1": "",
// "relaBizNo2": "",
// "relaOaNo": "",
// "relaVoucherNo": ""
},
operatorId: userinfo.sUserNo, /* 操作人账号 */
operatorName: userinfo.sUserName, /* 操作人名字 */
InfoSysSource: "EBC", /* 信息系统来源 */
beginDate: slaveRow.tCreateDate, /* 查询起始时间 */
endDate: slaveRow.tEndDate, /* 查询结束时间 */
// size:3, /* 查询行 */
// page:1, /* 查询页 */
// invOrder: "desc", /* 排序方式 */
companyCode: userinfo.sSubsidiaryId /* 公司代码 */
}
}
const upInvoiceProps = {
action: `${commonConfig.server_host}open/api/tax/input/invlock`,
onChange: this.handleUploadInvoiceChange,
accept: '*/*',
customRequest: this.customRequest,
// 添加额外的参数
data: invoiceBody,
showUploadList: false,
beforeUpload: () => {
},
};
/* 第三方接口拉取数据源 */
let btnGetApiDialogConfig = {};
if (commonUtils.isNotEmptyObject(masterConfig)) {
const iIndex = masterConfig.gdsconfigformslave.findIndex(item => item.sControlName === 'BtnGetApiDialog');
if (iIndex > -1) {
btnGetApiDialogConfig = this.props.masterConfig.gdsconfigformslave[iIndex];
/* 根据配置条件 */
if(bList && commonUtils.isNotEmptyObject(btnGetApiDialogConfig) && btnGetApiDialogConfig.sSqlCondition) {
/* 选中行 */
if (commonUtils.isNotEmptyArr(slaveSelectedRowKeys)) {
const iIndex = slaveData.findIndex(item => slaveSelectedRowKeys.includes(item.sSlaveId));
if(iIndex > -1) {
if(commonUtils.isNotEmptyObject(selectedRow)) {
conditonValues = this.props.getSqlCondition(btnGetApiDialogConfig,'slave', selectedRow);
}
}
}
}
}
}
const getApiDialogType = {
app: {
...this.props.app,
currentPane: {
name: 'getApiDialog',
config: btnGetApiDialogConfig,
conditonValues,
title: filfileManageTitle,
route: '/eleintefaceDialog',
formId: btnGetApiDialogConfig && btnGetApiDialogConfig.sActiveId ? btnGetApiDialogConfig.sActiveId : '15864832090002447752315825731600',
key: `${sModelsId}15864832090002447752315825731600`,
sModelsType: 'element/getApiDialog',
select: this.props.onSelect,
selectCancel:this.handleFilfileManageCancel.bind(this, 'visibleApiDialog'),
},
},
config: btnGetApiDialogConfig,
// slaveData: getApiDialogData,
enabled: true, /*this.props.enabled */
dispatch: this.props.dispatch,
content: this.props.content,
id: new Date().getTime().toString(),
// onGetApiDialogData: (slaveFilterCondition = [], callback) => {
// const tempCondition = {};
// slaveFilterCondition.forEach(item => {
// const { bFilterName, bFilterValue } = item;
// tempCondition[bFilterName] = bFilterValue;
// });
// this.tempCondition = tempCondition;
// this.handleClick({ key: 'BtnGetApiDialog' });
// setTimeout(() => {
// callback && callback();
// }, 1000);
// }
};
let menuDataCopy = JSON.parse(JSON.stringify(menuData));
// let btnOutData = menuDataCopy.find(item => item.sName === 'BtnOut');
// if (commonUtils.isNotEmptyObject(btnOutData)) {
// btnOutData.child = [];
// for (let i = -1; i < 100; i++) {
// const slaveConfigName = i === -1 ? `slaveConfig` : `slave${i}Config`;
// const slaveConfig = this.props[slaveConfigName];
// if (slaveConfig && commonUtils.isNotEmptyObject(slaveConfig) && slaveConfig.bGrd) {
// const child = {
// child: [],
// iconName: 'menu-unfold',
// sControlName: `BtnOut.slave${i === -1 ? '' : i}`,
// sName: `BtnOut.slave${i === -1 ? '' : i}`,
// showName: slaveConfig.showName
// };
// btnOutData.child.push(child);
// }
// }
// if (btnOutData.child.length === 1) {
// // 如果只有一张表,还是用原来的配置
// menuDataCopy = JSON.parse(JSON.stringify(menuData));
// }
// }
// 如果复制到的child为空,则隐藏掉复制到按钮
let btnCopyToIndex = menuDataCopy.findIndex(item => item.sName === 'BtnCopyTo');
if (btnCopyToIndex !== -1) {
const btnCopyTo = menuDataCopy[btnCopyToIndex];
if (commonUtils.isEmptyArr(btnCopyTo.child)) {
menuDataCopy.splice(btnCopyToIndex, 1);
}
}
const { tabModalConfig, tabModalRecord } = this.props;
const sActiveId = tabModalConfig?.sActiveId;
let sActiveKey = tabModalConfig?.sActiveKey;
let tabModalTitle = tabModalConfig?.showName ? tabModalConfig.showName : '数据展示';
const sFormId = sActiveId === '1' ? commonUtils.isEmpty(tabModalRecord?.sFormId) ? tabModalRecord?.sSrcFormId : tabModalRecord?.sFormId : sActiveId;
if (commonUtils.isNotEmptyObject(sActiveKey) && sActiveKey.includes('.')) {
const index = sActiveKey.lastIndexOf('.');
sActiveKey = sActiveKey.substring(index + 1, sActiveKey.length);
}
const tabModalProps = {
app: {
...this.props.app,
currentPane: {
...this.props.app.currentPane,
formId: sFormId,
route: '/indexPage/commonList',
name: 'CommonList',
sModelsType: 'sales/autoView',
selectCancel: this.handleFilfileManageCancel.bind(this, 'bTabModal'),
checkedId: tabModalRecord?.[sActiveKey],
},
},
bTabModal: bTabModal,
token: this.props.app.token,
dispatch: this.props.dispatch,
content: this.props.content,
id: new Date().getTime().toString(),
pageLoading: false,
};
return (
{commonUtils.isNotEmptyObject(btnUploadConfig) && (pane?.notCurrentPane ? false : visibleFilfile) ?
: ''
}
{commonUtils.isNotEmptyObject(btnUploadOtherConfig) && (pane?.notCurrentPane ? false : visibleOtherFilfile) ?
: ''
}
{commonUtils.isNotEmptyObject(btnDialogConfig) && (pane?.notCurrentPane ? false : visibleInterfaceDialog) ?
: ''
}
{commonUtils.isNotEmptyObject(btnGetApiDialogConfig) && (pane?.notCurrentPane ? false : visibleApiDialog) ?
: ''
}
{pane?.notCurrentPane ? false : copyFromChooseVisible ?
: ''
}
{
visibleGetGoods ?
: ''
}
{ bTabModal ?
查看
{/**/}
: ''}
{!commonUtils.isEmpty(this.props.routing) ? '' :
}
{!commonUtils.isEmpty(this.props.routing) ? '' :
}
{!commonUtils.isEmpty(this.props.routing) ? '' :
}
);
}
}
export default ToolBarComponent;