import React from 'react';
import { Enclosure, ProjectInfo } from '../../index';
// type: general | nestCard | custom
// 商机详情可编辑环节
const OPP_DETAILS_EDIT = {
NEW_OPP_AUDIT: '商机审核',
NEW_OPP_FOLLOW: '商机跟进',
} as any;
// 自定义产品信息
const customProjectInfo = (props: any) => {
return {
type: 'custom',
customChildren: ,
};
};
// 自定义附件信息
const customEnclosure = (props: any) => {
return {
type: 'custom',
customChildren: ,
};
};
const dealTacheInfo = (props: any) => {
return {
type: 'custom',
customChildren: ,
};
};
// 流程环节处理
const initLinkInfoFormState = (props: any) => {
return {
title: '环节处理',
type: 'general',
formStateKey: 'initLinkInfoFormState',
isEdit: props.isEdit,
};
};
// 初始化BCMC
const initBCMCDFormState = (props: any) => {
return {
...props,
type: 'general',
formStateKey: 'initBCMCDFormState',
isEdit: props.isEdit,
};
};
// 已经支持的特殊区块对象
const specialObj = {
SaleOppHLJ_fileList: customEnclosure,
OppPurchasing_noticeFlie: customEnclosure,
ProdAndOfferList: customProjectInfo,
DealTacheSelectBscDefault: initLinkInfoFormState,
OppPlanSpuuort_commuSupportPlanFlie: customEnclosure,
OppApproval_projectApprovalFile: customEnclosure,
// ObjFlowView: customFlowChart,
} as any;
// 返回特殊区块
const renderSpecialBlock = (props: any, currentBlockInfo: any) => {
const {
flowNodeCode,
queryType,
oppFileRef,
oppFilesObj = {},
aCSupportProgramFileRef,
isEdit = false,
} = props;
// console.log('oppFilesObj', oppFilesObj);
const { oppAttachmentList = [] } = oppFilesObj;
const {
elementCode,
componentCode,
componentType,
disabled = false,
editable = true,
label,
tableProps = {},
} = currentBlockInfo;
const mDisabled = disabled || !editable;
let renderItem = undefined as any;
let key = componentType === 'Async' ? componentCode : componentType;
switch (key) {
case 'Table':
renderItem = customEnclosure({
...props,
isEdit: tableProps.add,
title: label,
cRef: oppFileRef,
propsFileList: oppFilesObj[elementCode] || [],
currentBlockInfo,
saveKey: elementCode,
});
break;
case 'ProdAndOfferList':
renderItem = customProjectInfo({ ...props, isEdit: isEdit });
break;
case 'DealTacheSelectBscDefault':
renderItem = initLinkInfoFormState({ isEdit: isEdit });
break;
default:
break;
}
return renderItem;
};
// 初始化Bcmc数据
const initBcmcData = (props: any) => {
const pageContent = [] as any[];
const { bcmcData = {}, queryType = '', flowNodeCode = '' } = props;
console.log('bcmcData', bcmcData);
const { elementList = [] as any[] } = bcmcData;
elementList.forEach((row: any, index: number) => {
const {
componentType,
elementCode,
componentCode,
disabled = false,
editable = true,
visible = true,
label,
properties = [],
} = row;
let mDisabled = false;
if (queryType === 'handle' && OPP_DETAILS_EDIT[flowNodeCode]) {
mDisabled = true;
}
if (visible) {
switch (componentType) {
case 'Async':
if (specialObj[componentCode]) {
if (componentCode === 'DealTacheSelectBscDefault') {
if (queryType === 'handle' && renderSpecialBlock(props, row)) {
pageContent.push(dealTacheInfo({ ...props, isEdit: true }));
}
} else {
if (renderSpecialBlock(props, row)) {
pageContent.push(
renderSpecialBlock({ ...props, isEdit: mDisabled }, row),
);
}
}
}
break;
case 'Table':
if (specialObj[elementCode]) {
if (renderSpecialBlock(props, row)) {
pageContent.push(
renderSpecialBlock({ ...props, isEdit: mDisabled }, row),
);
}
}
break;
case 'Card':
pageContent.push(
initBCMCDFormState({
...props,
isEdit: !mDisabled,
title: label,
properties,
}),
);
break;
default:
break;
}
}
});
console.log('pageContent', pageContent);
return pageContent;
};
// 商机详情
// 可编辑条件:1:待办情况下,2: 商机审核和商机跟进环节下
const businessDetails = (props: any) => {
const {
flowNodeCode = '',
queryType = '',
aCSupportProgramFileRef,
dealFileRef,
oppFilesObj,
} = props;
// console.log('oppFilesObj', oppFilesObj);
const pageContent = [] as any[];
const { bcmcData = {} } = props;
const { elementList = [] as any[] } = bcmcData;
elementList.forEach((row: any, index: number) => {
const {
componentType,
elementCode,
componentCode,
disabled = false,
editable = true,
visible = true,
label,
properties = [],
} = row;
let mDisabled = false;
if (queryType === 'handle' && OPP_DETAILS_EDIT[flowNodeCode]) {
mDisabled = true;
}
if (visible) {
switch (componentType) {
case 'Async':
if (specialObj[componentCode]) {
if (componentCode === 'DealTacheSelectBscDefault') {
if (queryType === 'handle' && renderSpecialBlock(props, row)) {
pageContent.push(dealTacheInfo({ ...props, isEdit: true }));
}
} else {
if (renderSpecialBlock(props, row)) {
pageContent.push(
renderSpecialBlock({ ...props, isEdit: mDisabled }, row),
);
}
}
}
break;
case 'Table':
if (renderSpecialBlock(props, row)) {
pageContent.push(
renderSpecialBlock({ ...props, isEdit: mDisabled }, row),
);
}
break;
case 'Card':
pageContent.push(
initBCMCDFormState({
...props,
isEdit: mDisabled,
title: label,
properties,
}),
);
break;
default:
break;
}
}
});
return pageContent;
};
const pagesObj = {
businessDetails,
initBcmcData,
};
export { pagesObj };