|
|
@@ -823,17 +823,58 @@ let rptControlObj = {
|
|
|
var start = new Date().getTime();
|
|
|
while(true) if(new Date().getTime()-start > n) break;
|
|
|
}
|
|
|
+ const _splitMasterDetailPageData = (pageData) => {
|
|
|
+ // 这个专门服务于TASK 5565:导出Excel报表时,根据主从关系分多个sheet导出。
|
|
|
+ const newPageDatas = [];
|
|
|
+ const sheetNames = [];
|
|
|
+ for (let segIdx = 0; segIdx < pageData.excelExportOptions.segsAmt; segIdx++) {
|
|
|
+ const splitSeg = pageData.excelExportOptions.segs[`_${segIdx}`];
|
|
|
+ const newPageData = {};
|
|
|
+ const newContrl = {};
|
|
|
+ const newFont = {};
|
|
|
+ const newStyle = {};
|
|
|
+ const custMergeBands = [];
|
|
|
+ mergeProperties(newContrl, pageData[JV.NODE_CONTROL_COLLECTION]);
|
|
|
+ mergeProperties(newFont, pageData[JV.NODE_FONT_COLLECTION]);
|
|
|
+ mergeProperties(newStyle, pageData[JV.NODE_STYLE_COLLECTION]);
|
|
|
+ newPageData[JV.NODE_CONTROL_COLLECTION] = newContrl;
|
|
|
+ newPageData[JV.NODE_FONT_COLLECTION] = newFont;
|
|
|
+ newPageData[JV.NODE_STYLE_COLLECTION] = newStyle;
|
|
|
+ newPageData[JV.NODE_PAGE_INFO] = JSON.parse(JSON.stringify(pageData[JV.NODE_PAGE_INFO]));
|
|
|
+ sheetNames.push(splitSeg.sheetName || `${segIdx + 1}`);
|
|
|
+ newPageData[JV.BAND_PROP_MERGE_BAND] = pageData[JV.BAND_PROP_MERGE_BAND];
|
|
|
+ newPageData.items = [];
|
|
|
+ for (let piIdx = 0; piIdx < pageData.items.length; piIdx++) {
|
|
|
+ if (splitSeg.pages.includes(piIdx + 1)) {
|
|
|
+ newPageData.items.push(pageData.items[piIdx]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ newPageDatas.push(newPageData);
|
|
|
+ }
|
|
|
+ return {sheetNames, newPageDatas};
|
|
|
+ };
|
|
|
const private_download = async function(currentIndex) {
|
|
|
if (currentIndex < pageDataArr.length) {
|
|
|
//这里的数据应该在调用前己处理
|
|
|
const rptName = rpt_names[currentIndex];
|
|
|
- const singlePage = true;
|
|
|
- let role_rel_list = signatureRelArr[currentIndex];
|
|
|
- // await excelExportUtil.exportExcel(pageDataArr[currentIndex], pageSize, rptName, singlePage, null, null, ROLE_REL_LIST, null);
|
|
|
- const dtlSignCells = [];
|
|
|
- filterSignCells(pageDataArr[currentIndex], dtlSignCells, null, null, PAGE_SHOW.isTextSignature, false);
|
|
|
- await excelExportUtil.exportExcel(pageDataArr[currentIndex], pageSize, rptName, singlePage, null, null, role_rel_list, null, getStageStatus() !== 3);
|
|
|
- restoreSignCells(pageDataArr[currentIndex], dtlSignCells, null, null, PAGE_SHOW.isTextSignature, false);
|
|
|
+ if (pageDataArr[currentIndex].excelExportOptions) {
|
|
|
+ // 拆分当前报表数据,然后以AllInOneBook的方式导出
|
|
|
+ const {sheetNames, newPageDatas} = _splitMasterDetailPageData(pageDataArr[currentIndex]);
|
|
|
+ const subSignatureRelArr = [];
|
|
|
+ subSignatureRelArr.push(signatureRelArr[currentIndex]);
|
|
|
+ for (let ssrIdx = 1; ssrIdx < newPageDatas.length; ssrIdx++) {
|
|
|
+ subSignatureRelArr.push([]);
|
|
|
+ }
|
|
|
+ await rptControlObj.downloadExcelReportInOneBook(newPageDatas, pageSize, subSignatureRelArr, sheetNames, rptName);
|
|
|
+ } else {
|
|
|
+ const singlePage = true;
|
|
|
+ let role_rel_list = signatureRelArr[currentIndex];
|
|
|
+ // await excelExportUtil.exportExcel(pageDataArr[currentIndex], pageSize, rptName, singlePage, null, null, ROLE_REL_LIST, null);
|
|
|
+ const dtlSignCells = [];
|
|
|
+ filterSignCells(pageDataArr[currentIndex], dtlSignCells, null, null, PAGE_SHOW.isTextSignature, false);
|
|
|
+ await excelExportUtil.exportExcel(pageDataArr[currentIndex], pageSize, rptName, singlePage, null, null, role_rel_list, null, getStageStatus() !== 3);
|
|
|
+ restoreSignCells(pageDataArr[currentIndex], dtlSignCells, null, null, PAGE_SHOW.isTextSignature, false);
|
|
|
+ }
|
|
|
}
|
|
|
};
|
|
|
const _splitDownload = async (currentIndex) => {
|
|
|
@@ -861,7 +902,7 @@ let rptControlObj = {
|
|
|
}
|
|
|
},
|
|
|
|
|
|
- downloadExcelReportInOneBook: async function(pageDataArr, pageSize, signatureRelArr, rpt_names) {
|
|
|
+ downloadExcelReportInOneBook: async function(pageDataArr, pageSize, signatureRelArr, rpt_names, inferRptName = null) {
|
|
|
let rptRoleRelArr = [];
|
|
|
let ttlRoleAmt = 0;
|
|
|
const reAssignSignatureName = function(pageData, roleRel, rpt_name_key) {
|
|
|
@@ -921,7 +962,7 @@ let rptControlObj = {
|
|
|
rptRoleRelArr = rptRoleRelArr.concat([pageDataArr[idx].items[0][JV.PROP_WATERMARK_CELLS][0].signature_name]);
|
|
|
}
|
|
|
}
|
|
|
- await excelExportUtil.exportExcelInOneBook(pageDataArr, pageSize, TENDER_NAME, rptRoleRelArr, null, getStageStatus() !== 3);
|
|
|
+ await excelExportUtil.exportExcelInOneBook(pageDataArr, pageSize, inferRptName || TENDER_NAME, rptRoleRelArr, null, getStageStatus() !== 3);
|
|
|
for (let idx = 0; idx < pageDataArr.length; idx++) {
|
|
|
restoreSignCells(pageDataArr[idx], ttlDtlSignCells[idx], null, null, PAGE_SHOW.isTextSignature, false);
|
|
|
}
|