|
|
@@ -823,12 +823,12 @@ let rptControlObj = {
|
|
|
var start = new Date().getTime();
|
|
|
while(true) if(new Date().getTime()-start > n) break;
|
|
|
}
|
|
|
- const _splitMasterDetailPageData = (pageData) => {
|
|
|
+ const _splitMasterDetailPageData = (pageData, propStr = 'excelExportOptions') => {
|
|
|
// 这个专门服务于TASK 5565:导出Excel报表时,根据主从关系分多个sheet导出。
|
|
|
const newPageDatas = [];
|
|
|
const sheetNames = [];
|
|
|
- for (let segIdx = 0; segIdx < pageData.excelExportOptions.segsAmt; segIdx++) {
|
|
|
- const splitSeg = pageData.excelExportOptions.segs[`_${segIdx}`];
|
|
|
+ for (let segIdx = 0; segIdx < pageData[propStr].segsAmt; segIdx++) {
|
|
|
+ const splitSeg = pageData[propStr].segs[`_${segIdx}`];
|
|
|
const newPageData = {};
|
|
|
const newContrl = {};
|
|
|
const newFont = {};
|
|
|
@@ -841,7 +841,7 @@ let rptControlObj = {
|
|
|
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}`);
|
|
|
+ sheetNames.push(splitSeg.sheetName || splitSeg.fileName || `${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++) {
|
|
|
@@ -857,18 +857,32 @@ let rptControlObj = {
|
|
|
if (currentIndex < pageDataArr.length) {
|
|
|
//这里的数据应该在调用前己处理
|
|
|
const rptName = rpt_names[currentIndex];
|
|
|
- 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([]);
|
|
|
+ if (pageDataArr[currentIndex].excelExportOptions || pageDataArr[currentIndex].excelFileExportOptions) {
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+ if (pageDataArr[currentIndex].excelFileExportOptions) {
|
|
|
+ const singlePage = true;
|
|
|
+ const {sheetNames, newPageDatas} = _splitMasterDetailPageData(pageDataArr[currentIndex], 'excelFileExportOptions');
|
|
|
+ const role_rel_list = signatureRelArr[currentIndex];
|
|
|
+ const dtlSignCells = [];
|
|
|
+ filterSignCells(pageDataArr[currentIndex], dtlSignCells, null, null, PAGE_SHOW.isTextSignature, false);
|
|
|
+ for (let fIdx = 0; fIdx < newPageDatas.length; fIdx++) {
|
|
|
+ // const rptName = fileNames[fIdx];
|
|
|
+ await excelExportUtil.exportExcel(newPageDatas[fIdx], pageSize, sheetNames[fIdx], singlePage, null, null, role_rel_list, null, getStageStatus() !== 3);
|
|
|
+ }
|
|
|
+ restoreSignCells(pageDataArr[currentIndex], dtlSignCells, null, null, PAGE_SHOW.isTextSignature, false);
|
|
|
}
|
|
|
- await rptControlObj.downloadExcelReportInOneBook(newPageDatas, pageSize, subSignatureRelArr, sheetNames, rptName);
|
|
|
} else {
|
|
|
const singlePage = true;
|
|
|
- let role_rel_list = signatureRelArr[currentIndex];
|
|
|
+ const 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);
|