|  | @@ -85,6 +85,7 @@ JpcFlowTabSrv.prototype.createNew = function(){
 | 
	
		
			
				|  |  |          me.seg_sum_fields_idx = [];
 | 
	
		
			
				|  |  |          me.seg_sum_tab_fields = [];
 | 
	
		
			
				|  |  |          me.page_sum_fields_idx = [];
 | 
	
		
			
				|  |  | +        me.page_sum_tab_fields = [];
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          me.group_fields = [];
 | 
	
		
			
				|  |  |          me.group_sum_fields = [];
 | 
	
	
		
			
				|  | @@ -95,6 +96,7 @@ JpcFlowTabSrv.prototype.createNew = function(){
 | 
	
		
			
				|  |  |          me.pageStatusLst = [];
 | 
	
		
			
				|  |  |          me.groupSumValLst = [];
 | 
	
		
			
				|  |  |          me.segSumValLst = [];
 | 
	
		
			
				|  |  | +        me.pageSumValLst = [];
 | 
	
		
			
				|  |  |          me.multiCols = 1;
 | 
	
		
			
				|  |  |          me.pagesAmt = 0;
 | 
	
		
			
				|  |  |      };
 | 
	
	
		
			
				|  | @@ -102,7 +104,7 @@ JpcFlowTabSrv.prototype.createNew = function(){
 | 
	
		
			
				|  |  |          let me = this;
 | 
	
		
			
				|  |  |          let FLOW_NODE_STR = me.isEx?JV.NODE_FLOW_INFO_EX:JV.NODE_FLOW_INFO;
 | 
	
		
			
				|  |  |          JpcFieldHelper.findAndPutDataFieldIdx(rptTpl, rptTpl[FLOW_NODE_STR][JV.NODE_FLOW_SEG_SUM][JV.PROP_SUM_FIELDS], me.seg_sum_tab_fields, me.seg_sum_fields_idx, me.isEx);
 | 
	
		
			
				|  |  | -        JpcFieldHelper.findAndPutDataFieldIdx(rptTpl, rptTpl[FLOW_NODE_STR][JV.NODE_FLOW_PAGE_SUM][JV.PROP_SUM_FIELDS], null, me.page_sum_fields_idx, me.isEx);
 | 
	
		
			
				|  |  | +        JpcFieldHelper.findAndPutDataFieldIdx(rptTpl, rptTpl[FLOW_NODE_STR][JV.NODE_FLOW_PAGE_SUM][JV.PROP_SUM_FIELDS], me.page_sum_tab_fields, me.page_sum_fields_idx, me.isEx);
 | 
	
		
			
				|  |  |          JpcFieldHelper.findAndPutDataFieldIdx(rptTpl, rptTpl[FLOW_NODE_STR][JV.NODE_FLOW_GROUP][JV.PROP_GROUP_FIELDS], me.group_fields, null, me.isEx);
 | 
	
		
			
				|  |  |          JpcFieldHelper.findAndPutDataFieldIdx(rptTpl, rptTpl[FLOW_NODE_STR][JV.NODE_FLOW_GROUP][JV.PROP_SUM_FIELDS], me.group_sum_fields, null, me.isEx);
 | 
	
		
			
				|  |  |          for (let si = 0; si < dataSeq.length; si++) {
 | 
	
	
		
			
				|  | @@ -355,15 +357,18 @@ JpcFlowTabSrv.prototype.createNew = function(){
 | 
	
		
			
				|  |  |                      } else {
 | 
	
		
			
				|  |  |                          if (currentRecAmt + maxRowRec >= ttlSegRecAmt) {
 | 
	
		
			
				|  |  |                              pageStatus[JV.STATUS_SEGMENT_END] = true;
 | 
	
		
			
				|  |  | +                            pageStatus[JV.STATUS_REPORT_END] = true;
 | 
	
		
			
				|  |  |                              private_resetBandArea();
 | 
	
		
			
				|  |  |                              let hasAdHocRow = !JpcFlowTabHelper.chkSegEnd(bands, rptTpl, ttlSegRecAmt, currentRecAmt, maxRowRec, me.isEx);
 | 
	
		
			
				|  |  |                              if (hasAdHocRow) {
 | 
	
		
			
				|  |  |                                  //add page info(pre segment end)
 | 
	
		
			
				|  |  |                                  pageStatus[JV.STATUS_SEGMENT_END] = false;
 | 
	
		
			
				|  |  | +                                pageStatus[JV.STATUS_REPORT_END] = false;
 | 
	
		
			
				|  |  |                                  private_addPage(segIdx, grpSeqInfo, false, false, -1);
 | 
	
		
			
				|  |  |                              }
 | 
	
		
			
				|  |  |                              //add page info
 | 
	
		
			
				|  |  |                              pageStatus[JV.STATUS_SEGMENT_END] = true;
 | 
	
		
			
				|  |  | +                            pageStatus[JV.STATUS_REPORT_END] = true;
 | 
	
		
			
				|  |  |                              private_addPage(segIdx, grpSeqInfo, false, false, -1);
 | 
	
		
			
				|  |  |                          } else {
 | 
	
		
			
				|  |  |                              private_addPage(segIdx, grpSeqInfo, false, false, -1);
 | 
	
	
		
			
				|  | @@ -503,6 +508,7 @@ JpcFlowTabSrv.prototype.createNew = function(){
 | 
	
		
			
				|  |  |              // 2.3 Sum Seg
 | 
	
		
			
				|  |  |              tabRstLst.push(me.outputSegSum(rptTpl, dataObj, page, segIdx, bands, unitFactor, controls));
 | 
	
		
			
				|  |  |              // 2.4 Sum Page
 | 
	
		
			
				|  |  | +            tabRstLst.push(me.outputPageSum(rptTpl, dataObj, page, segIdx, bands, unitFactor, controls));
 | 
	
		
			
				|  |  |              // 2.5 Group
 | 
	
		
			
				|  |  |              // 2.6 Discrete
 | 
	
		
			
				|  |  |              tabRstLst.push(JpcDiscreteHelper.outputDiscreteInfo(rptTpl[FLOW_NODE_STR][JV.NODE_DISCRETE_INFO], bands, dataObj, unitFactor, me.pageStatusLst[page - 1], segIdx, 1, 0, $CURRENT_RPT));
 | 
	
	
		
			
				|  | @@ -536,6 +542,7 @@ JpcFlowTabSrv.prototype.createNew = function(){
 | 
	
		
			
				|  |  |                  // 2.3 Sum Seg
 | 
	
		
			
				|  |  |                  tabRstLst.push(me.outputSegSum(rptTpl, dataObj, actualPage, segIdx, bands, unitFactor, controls));
 | 
	
		
			
				|  |  |                  // 2.4 Sum Page
 | 
	
		
			
				|  |  | +                tabRstLst.push(me.outputPageSum(rptTpl, dataObj, actualPage, segIdx, bands, unitFactor, controls));
 | 
	
		
			
				|  |  |                  // 2.5 Group
 | 
	
		
			
				|  |  |                  // 2.6 Discrete
 | 
	
		
			
				|  |  |                  if (pi === 0) {
 | 
	
	
		
			
				|  | @@ -563,6 +570,15 @@ JpcFlowTabSrv.prototype.createNew = function(){
 | 
	
		
			
				|  |  |                  let data_details = me.isEx?dataObj[JV.DATA_DETAIL_DATA_EX]:dataObj[JV.DATA_DETAIL_DATA];
 | 
	
		
			
				|  |  |                  let data_details_ex = $CURRENT_RPT.isFollowMode?dataObj[JV.DATA_DETAIL_DATA_EX]:null;
 | 
	
		
			
				|  |  |                  let contentValuesIdx = me.dispValueIdxLst[page - 1];
 | 
	
		
			
				|  |  | +                let page_sum_data_fields = [];
 | 
	
		
			
				|  |  | +                for (let i = 0; i < me.page_sum_fields_idx.length; i++) {
 | 
	
		
			
				|  |  | +                    let data_field = data_details[me.page_sum_fields_idx[i]];
 | 
	
		
			
				|  |  | +                    page_sum_data_fields.push(data_field);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                let rowGrandTotal = [];
 | 
	
		
			
				|  |  | +                for (let di = 0; di < page_sum_data_fields.length; di++) {
 | 
	
		
			
				|  |  | +                    rowGrandTotal.push(0.0);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |                  //normal content
 | 
	
		
			
				|  |  |                  for (let rowIdx = 0; rowIdx < contentValuesIdx.length; rowIdx++) {
 | 
	
		
			
				|  |  |                      for (let i = 0; i < tab_fields.length; i++) {
 | 
	
	
		
			
				|  | @@ -603,7 +619,12 @@ JpcFlowTabSrv.prototype.createNew = function(){
 | 
	
		
			
				|  |  |                              }
 | 
	
		
			
				|  |  |                          }
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  | +                    //page sum content
 | 
	
		
			
				|  |  | +                    for (let di = 0; di < page_sum_data_fields.length; di++) {
 | 
	
		
			
				|  |  | +                        rowGrandTotal[di] = rowGrandTotal[di] + 1.0 * JpcFieldHelper.getValue(page_sum_data_fields[di], contentValuesIdx[rowIdx][2]);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | +                me.pageSumValLst.push(rowGrandTotal);
 | 
	
		
			
				|  |  |                  //grouping content
 | 
	
		
			
				|  |  |                  for (let rowIdx = 0; rowIdx < contentValuesIdx.length; rowIdx++) {
 | 
	
		
			
				|  |  |                      if (contentValuesIdx[rowIdx][1] === JV.DISPLAY_VAL_TYPE_GROUP) {
 | 
	
	
		
			
				|  | @@ -672,6 +693,35 @@ JpcFlowTabSrv.prototype.createNew = function(){
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          return rst;
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  | +    JpcFlowTabResult.outputPageSum = function (rptTpl, dataObj, page, segIdx, bands, unitFactor, controls) {
 | 
	
		
			
				|  |  | +        let me = this, rst = [];
 | 
	
		
			
				|  |  | +        let FLOW_NODE_STR = me.isEx?JV.NODE_FLOW_INFO_EX:JV.NODE_FLOW_INFO;
 | 
	
		
			
				|  |  | +        let tab = rptTpl[FLOW_NODE_STR][JV.NODE_FLOW_PAGE_SUM];
 | 
	
		
			
				|  |  | +        let band = bands[tab[JV.PROP_BAND_NAME]];
 | 
	
		
			
				|  |  | +        if (band) {
 | 
	
		
			
				|  |  | +            let pageStatus = me.pageStatusLst[page - 1];
 | 
	
		
			
				|  |  | +            if (pageStatus[band[JV.BAND_PROP_DISPLAY_TYPE]]) {
 | 
	
		
			
				|  |  | +                let tab_fields = me.page_sum_tab_fields;
 | 
	
		
			
				|  |  | +                for (let i = 0; i < tab_fields.length; i++) {
 | 
	
		
			
				|  |  | +                    let cellItem = JpcCommonOutputHelper.createCommonOutput(tab_fields[i], me.pageSumValLst[page - 1], controls);
 | 
	
		
			
				|  |  | +                    cellItem[JV.PROP_AREA] = JpcAreaHelper.outputArea(tab_fields[i][JV.PROP_AREA], band, unitFactor, 1, 0, 1, 0, me.multiCols, 0, true, false);
 | 
	
		
			
				|  |  | +                    rst.push(cellItem);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                if (tab[JV.PROP_TEXT]) {
 | 
	
		
			
				|  |  | +                    rst.push(JpcTextHelper.outputText(tab[JV.PROP_TEXT], band, unitFactor, 1, 0, 1, 0, me.multiCols, 0));
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                if (tab[JV.PROP_TEXTS]) {
 | 
	
		
			
				|  |  | +                    for (let j = 0; j < tab[JV.PROP_TEXTS].length; j++) {
 | 
	
		
			
				|  |  | +                        rst.push(JpcTextHelper.outputText(tab[JV.PROP_TEXTS][j], band, unitFactor, 1, 0, 1, 0, me.multiCols, 0));
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                if (tab[JV.NODE_DISCRETE_INFO]) {
 | 
	
		
			
				|  |  | +                    rst = rst.concat(JpcDiscreteHelper.outputDiscreteInfo(tab[JV.NODE_DISCRETE_INFO], bands, dataObj, unitFactor, me.pageStatusLst[page - 1], segIdx, me.multiCols, 0));
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        return rst;
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  |      JpcFlowTabResult.outputTabField = function (band, tab_field, data_field, valueIdx, serialIdx, rows, rowIdx, cols, colIdx, unitFactor, isRow, controls, multiColIdx) {
 | 
	
		
			
				|  |  |          let me = this,
 | 
	
		
			
				|  |  |              rst = JpcCommonOutputHelper.createCommonOutput(tab_field, JpcFieldHelper.getValue(data_field, valueIdx), controls);
 | 
	
	
		
			
				|  | @@ -695,10 +745,10 @@ JpcFlowTabSrv.prototype.createNew = function(){
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          if (grp_line[JV.PROP_DISCRETE_FIELDS]) {
 | 
	
		
			
				|  |  | -            //
 | 
	
		
			
				|  |  | +            //暂时不支持
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          if (grp_line[JV.PROP_PARAMS]) {
 | 
	
		
			
				|  |  | -            //
 | 
	
		
			
				|  |  | +            //暂时不支持
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          // console.log(rst);
 | 
	
		
			
				|  |  |          return rst;
 |