|  | @@ -11,14 +11,60 @@ let JpcCommonOutputHelper = require('./helper/jpc_helper_common_output');
 | 
	
		
			
				|  |  |  let JpcAreaHelper = require('./helper/jpc_helper_area');
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  let JpcFlowTabSrv = function(){};
 | 
	
		
			
				|  |  | +//let grpPageInfo = {"segGrpRecStartIdx": 0, "insertedGrpRecAmt": 0, "preAddPageGrpInfo": null};
 | 
	
		
			
				|  |  |  JpcFlowTabSrv.prototype.createNew = function(){
 | 
	
		
			
				|  |  | -    function private_addPageValue(ValuedIdxLst, sortedSequence, preRec, nextRec,page_seg_map, segIdx, pageIdx) {
 | 
	
		
			
				|  |  | -        let vIdx = [];
 | 
	
		
			
				|  |  | -        for (let vi = 0; vi < nextRec; vi++) {
 | 
	
		
			
				|  |  | -            if (sortedSequence.length > preRec + vi) {
 | 
	
		
			
				|  |  | -                vIdx.push(sortedSequence[preRec + vi]);
 | 
	
		
			
				|  |  | +    function private_addPageValue(ValuedIdxLst, sortedSequence, grpSequenceInfo, startRecIdx, maxRecPerPage,page_seg_map, segIdx, pageIdx, grpPageInfo) {
 | 
	
		
			
				|  |  | +        let vIdx = [], preAmt = 0, insertedGrpAmt = 0, grp_lines = 0;
 | 
	
		
			
				|  |  | +        if (grpPageInfo) {
 | 
	
		
			
				|  |  | +            //grpPageInfo[JV.PROP_INSERTED_GRP_REC] = 0;
 | 
	
		
			
				|  |  | +            for (let grpLineIdx of grpPageInfo[JV.PROP_PRE_ADD_GRP_REC_INFO]) {
 | 
	
		
			
				|  |  | +                vIdx.push([JV.DISPLAY_VAL_TYPE_GROUP, grpPageInfo[JV.PROP_SEG_GRP_IDX], grpLineIdx]);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            preAmt = grpPageInfo[JV.PROP_PRE_ADD_GRP_REC_INFO].length;
 | 
	
		
			
				|  |  | +            grpPageInfo[JV.PROP_PRE_ADD_GRP_REC_INFO] = [];
 | 
	
		
			
				|  |  | +            grp_lines = grpPageInfo[JV.PROP_GRP_LINES];
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        for (let vi = 0; (vi + insertedGrpAmt * grp_lines) < maxRecPerPage - preAmt; vi++) {
 | 
	
		
			
				|  |  | +            if (grpPageInfo) {
 | 
	
		
			
				|  |  | +                if ((startRecIdx + vi) === grpSequenceInfo[grpPageInfo[JV.PROP_SEG_GRP_IDX]]) {
 | 
	
		
			
				|  |  | +                    //表示这里要插入grouping信息啦!
 | 
	
		
			
				|  |  | +                    //1. 首先push正常的记录
 | 
	
		
			
				|  |  | +                    vIdx.push([JV.DISPLAY_VAL_TYPE_NORMAL, sortedSequence[startRecIdx + vi]]);
 | 
	
		
			
				|  |  | +                    //2. 然后就要push grouping记录了
 | 
	
		
			
				|  |  | +                    let hasFullGrp = true;
 | 
	
		
			
				|  |  | +                    for (let i = 0; i < grp_lines; i++) {
 | 
	
		
			
				|  |  | +                        if ( (vi + i + 1) >= (maxRecPerPage - preAmt)) {
 | 
	
		
			
				|  |  | +                            for (let j = i; j < grp_lines; j++) {
 | 
	
		
			
				|  |  | +                                grpPageInfo[JV.PROP_PRE_ADD_GRP_REC_INFO].push(j);
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  | +                            //准备要跳出去了
 | 
	
		
			
				|  |  | +                            hasFullGrp = false;
 | 
	
		
			
				|  |  | +                            break;
 | 
	
		
			
				|  |  | +                        } else {
 | 
	
		
			
				|  |  | +                            vIdx.push([JV.DISPLAY_VAL_TYPE_GROUP, grpPageInfo[JV.PROP_SEG_GRP_IDX], i]);
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    //3. 进位下一个group信息所在位置
 | 
	
		
			
				|  |  | +                    if (hasFullGrp) {
 | 
	
		
			
				|  |  | +                        grpPageInfo[JV.PROP_INSERTED_GRP_REC]++;
 | 
	
		
			
				|  |  | +                        insertedGrpAmt++;
 | 
	
		
			
				|  |  | +                        grpPageInfo[JV.PROP_SEG_GRP_IDX]++;
 | 
	
		
			
				|  |  | +                    } else {
 | 
	
		
			
				|  |  | +                        break;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                } else {
 | 
	
		
			
				|  |  | +                    if (sortedSequence.length > startRecIdx + vi) {
 | 
	
		
			
				|  |  | +                        vIdx.push([JV.DISPLAY_VAL_TYPE_NORMAL, sortedSequence[startRecIdx + vi]]);
 | 
	
		
			
				|  |  | +                    } else {
 | 
	
		
			
				|  |  | +                        vIdx.push([JV.DISPLAY_VAL_TYPE_NORMAL, JV.BLANK_VALUE_INDEX]);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |              } else {
 | 
	
		
			
				|  |  | -                vIdx.push(JV.BLANK_VALUE_INDEX);
 | 
	
		
			
				|  |  | +                if (sortedSequence.length > startRecIdx + vi) {
 | 
	
		
			
				|  |  | +                    vIdx.push([JV.DISPLAY_VAL_TYPE_NORMAL, sortedSequence[startRecIdx + vi]]);
 | 
	
		
			
				|  |  | +                } else {
 | 
	
		
			
				|  |  | +                    vIdx.push([JV.DISPLAY_VAL_TYPE_NORMAL, JV.BLANK_VALUE_INDEX]);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          page_seg_map.push([pageIdx, segIdx]);
 | 
	
	
		
			
				|  | @@ -36,7 +82,13 @@ JpcFlowTabSrv.prototype.createNew = function(){
 | 
	
		
			
				|  |  |          me.seg_sum_fields_idx = [];
 | 
	
		
			
				|  |  |          me.seg_sum_tab_fields = [];
 | 
	
		
			
				|  |  |          me.page_sum_fields_idx = [];
 | 
	
		
			
				|  |  | -        me.group_fields_idx = [];
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        me.group_fields = [];
 | 
	
		
			
				|  |  | +        me.group_sum_fields = [];
 | 
	
		
			
				|  |  | +        me.group_sum_values = null;
 | 
	
		
			
				|  |  | +        me.group_node_info = null; //记录在哪个seg及到哪条记录后有group sum信息
 | 
	
		
			
				|  |  | +        me.group_lines_amt = 0;    //每group一次占用多少行,计算page信息会用到
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          me.pageStatusLst = [];
 | 
	
		
			
				|  |  |          me.groupSumValLst = [];
 | 
	
		
			
				|  |  |          me.segSumValLst = [];
 | 
	
	
		
			
				|  | @@ -48,7 +100,8 @@ JpcFlowTabSrv.prototype.createNew = function(){
 | 
	
		
			
				|  |  |          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_GROUP][JV.PROP_GROUP_FIELDS], null, me.group_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++) {
 | 
	
		
			
				|  |  |              me.segments.push(dataSeq[si].slice(0));
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -74,8 +127,81 @@ JpcFlowTabSrv.prototype.createNew = function(){
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  | -    JpcFlowTabResult.preSetupPages = function (rptTpl, dataOjb, defProperties, option) {
 | 
	
		
			
				|  |  | +    JpcFlowTabResult.sumUpGrp = function ($CURRENT_RPT, dataObj, segIdx, preGrpIdx, nexGrpIdx) {
 | 
	
		
			
				|  |  | +        let me = this, segDataIdx = me.segments[segIdx];
 | 
	
		
			
				|  |  | +        for (let j = 0; j < me.group_sum_fields.length; j++) {
 | 
	
		
			
				|  |  | +            let sum_field = JE.F(me.group_sum_fields[j][JV.PROP_FIELD_ID], $CURRENT_RPT);
 | 
	
		
			
				|  |  | +            if (sum_field) {
 | 
	
		
			
				|  |  | +                let data_field = null;
 | 
	
		
			
				|  |  | +                if (sum_field[JV.PROP_AD_HOC_DATA]) {
 | 
	
		
			
				|  |  | +                    data_field = sum_field[JV.PROP_AD_HOC_DATA]
 | 
	
		
			
				|  |  | +                } else {
 | 
	
		
			
				|  |  | +                    data_field = dataObj[sum_field.DataNodeName][sum_field.DataSeq];
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                let sumV = 0;
 | 
	
		
			
				|  |  | +                for (let si = preGrpIdx; si <= nexGrpIdx; si++) {
 | 
	
		
			
				|  |  | +                    sumV += JpcFieldHelper.getValue(data_field, segDataIdx[si]);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                me.group_sum_values[segIdx][j].push(sumV);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        me.group_node_info[segIdx].push(nexGrpIdx);
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +    JpcFlowTabResult.setupGroupingData = function (rptTpl, dataObj, $CURRENT_RPT) {
 | 
	
		
			
				|  |  | +        let me = this;
 | 
	
		
			
				|  |  | +        if (me.group_fields.length > 0 && me.group_sum_fields.length > 0) {
 | 
	
		
			
				|  |  | +            me.group_sum_values = [];
 | 
	
		
			
				|  |  | +            me.group_node_info = [];
 | 
	
		
			
				|  |  | +            let CURRENT_FLOW_INFO = (me.isEx)?JV.NODE_FLOW_INFO_EX:JV.NODE_FLOW_INFO;
 | 
	
		
			
				|  |  | +            me.group_lines_amt = rptTpl[CURRENT_FLOW_INFO][JV.NODE_FLOW_GROUP][JV.PROP_GROUP_LINES].length;
 | 
	
		
			
				|  |  | +            //
 | 
	
		
			
				|  |  | +            let preGrpIdx = 0, nexGrpIdx = 0;
 | 
	
		
			
				|  |  | +            for (let segIdx = 0; segIdx < me.segments.length; segIdx++) {
 | 
	
		
			
				|  |  | +                let segDataIdx = me.segments[segIdx];
 | 
	
		
			
				|  |  | +                me.group_sum_values.push([]);
 | 
	
		
			
				|  |  | +                me.group_node_info.push([]);
 | 
	
		
			
				|  |  | +                for (let j = 0; j < me.group_sum_fields.length; j++) {
 | 
	
		
			
				|  |  | +                    me.group_sum_values[segIdx].push([]);
 | 
	
		
			
				|  |  | +                    //me.group_node_info[segIdx].push([]);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                for (let di = 1; di < segDataIdx.length; di++) {
 | 
	
		
			
				|  |  | +                    let hasDiff = false;
 | 
	
		
			
				|  |  | +                    for (let i = 0; i < me.group_fields.length; i++) {
 | 
	
		
			
				|  |  | +                        let grp_field = JE.F(me.group_fields[i][JV.PROP_FIELD_ID], $CURRENT_RPT);
 | 
	
		
			
				|  |  | +                        if (grp_field) {
 | 
	
		
			
				|  |  | +                            let data_field = null;
 | 
	
		
			
				|  |  | +                            if (grp_field[JV.PROP_AD_HOC_DATA]) {
 | 
	
		
			
				|  |  | +                                data_field = grp_field[JV.PROP_AD_HOC_DATA]
 | 
	
		
			
				|  |  | +                            } else {
 | 
	
		
			
				|  |  | +                                data_field = dataObj[grp_field.DataNodeName][grp_field.DataSeq];
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  | +                            let v1 = JpcFieldHelper.getValue(data_field, segDataIdx[di]), v2 = JpcFieldHelper.getValue(data_field, segDataIdx[di - 1]);
 | 
	
		
			
				|  |  | +                            if (v1 !== v2) {
 | 
	
		
			
				|  |  | +                                hasDiff = true;
 | 
	
		
			
				|  |  | +                                break;
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    if (hasDiff) {
 | 
	
		
			
				|  |  | +                        //then sum up the fields
 | 
	
		
			
				|  |  | +                        me.sumUpGrp($CURRENT_RPT, dataObj, segIdx, preGrpIdx, nexGrpIdx);
 | 
	
		
			
				|  |  | +                        nexGrpIdx = di;
 | 
	
		
			
				|  |  | +                        preGrpIdx = di;
 | 
	
		
			
				|  |  | +                        if (di === segDataIdx.length - 1) {
 | 
	
		
			
				|  |  | +                            me.sumUpGrp($CURRENT_RPT, dataObj, segIdx, preGrpIdx, nexGrpIdx);
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                    } else if (di === segDataIdx.length - 1) {
 | 
	
		
			
				|  |  | +                        me.sumUpGrp($CURRENT_RPT, dataObj, segIdx, preGrpIdx, di);
 | 
	
		
			
				|  |  | +                    } else {
 | 
	
		
			
				|  |  | +                        nexGrpIdx = di;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +    JpcFlowTabResult.preSetupPages = function (rptTpl, dataObj, defProperties, option, $CURRENT_RPT) {
 | 
	
		
			
				|  |  |          let me = this, rst = 1, counterRowRec = 0, maxRowRec = 1, pageIdx = 0;
 | 
	
		
			
				|  |  | +        me.setupGroupingData(rptTpl, dataObj, $CURRENT_RPT);
 | 
	
		
			
				|  |  |          me.paging_option = option||JV.PAGING_OPTION_NORMAL;
 | 
	
		
			
				|  |  |          let CURRENT_FLOW_INFO = (me.isEx)?JV.NODE_FLOW_INFO_EX:JV.NODE_FLOW_INFO;
 | 
	
		
			
				|  |  |          JpcFieldHelper.findAndPutDataFieldIdx(rptTpl, rptTpl[CURRENT_FLOW_INFO][JV.NODE_FLOW_CONTENT][JV.PROP_FLOW_FIELDS], null, me.disp_fields_idx, me.isEx);
 | 
	
	
		
			
				|  | @@ -91,7 +217,8 @@ JpcFlowTabSrv.prototype.createNew = function(){
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  me.pageStatusLst.push(pageStatus.slice(0));
 | 
	
		
			
				|  |  |                  pageIdx++;
 | 
	
		
			
				|  |  | -                private_addPageValue(me.dispValueIdxLst, me.segments[segIdx], 0, me.segments[segIdx].length, me.page_seg_map, segIdx, pageIdx);
 | 
	
		
			
				|  |  | +                let grpSeqInfo = (me.group_node_info)?me.group_node_info[segIdx]:null;
 | 
	
		
			
				|  |  | +                private_addPageValue(me.dispValueIdxLst, me.segments[segIdx], grpSeqInfo, 0, me.segments[segIdx].length, me.page_seg_map, segIdx, pageIdx, null);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          } else {
 | 
	
		
			
				|  |  |              let bands = JpcBand.createNew(rptTpl, defProperties);
 | 
	
	
		
			
				|  | @@ -106,10 +233,17 @@ JpcFlowTabSrv.prototype.createNew = function(){
 | 
	
		
			
				|  |  |                  JpcBandHelper.setBandArea(bands, rptTpl, pageStatus, !me.isEx, me.isEx);
 | 
	
		
			
				|  |  |                  maxRowRec = JpcFlowTabHelper.getMaxRowsPerPage(bands, rptTpl, me.isEx);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | +            let grpPageInfo = {};
 | 
	
		
			
				|  |  |              for (let segIdx = 0; segIdx < me.segments.length; segIdx++) {
 | 
	
		
			
				|  |  | +                let grpSeqInfo = (me.group_node_info)?me.group_node_info[segIdx]:null;
 | 
	
		
			
				|  |  | +                grpPageInfo[JV.PROP_SEG_GRP_IDX] = 0;
 | 
	
		
			
				|  |  | +                grpPageInfo[JV.PROP_INSERTED_GRP_REC] = 0;
 | 
	
		
			
				|  |  | +                grpPageInfo[JV.PROP_PRE_ADD_GRP_REC_INFO] = [];
 | 
	
		
			
				|  |  | +                grpPageInfo[JV.PROP_GRP_LINES] = me.group_lines_amt;
 | 
	
		
			
				|  |  |                  private_resetBandArea();
 | 
	
		
			
				|  |  |                  let orgMaxRowRec = maxRowRec;
 | 
	
		
			
				|  |  | -                let rowSplitCnt = Math.ceil(1.0 * me.segments[segIdx].length / orgMaxRowRec);
 | 
	
		
			
				|  |  | +                let grpRecAmt = (grpSeqInfo)?(grpSeqInfo.length*me.group_lines_amt):0;
 | 
	
		
			
				|  |  | +                let rowSplitCnt = Math.ceil(1.0 * (me.segments[segIdx].length + grpRecAmt) / orgMaxRowRec);
 | 
	
		
			
				|  |  |                  pageStatus[JV.STATUS_SEGMENT_END] = true;
 | 
	
		
			
				|  |  |                  private_resetBandArea();
 | 
	
		
			
				|  |  |                  let hasAdHocRow = !JpcFlowTabHelper.chkSegEnd(bands, rptTpl, me.segments, segIdx, (rowSplitCnt - 1) * orgMaxRowRec, maxRowRec, me.isEx);
 | 
	
	
		
			
				|  | @@ -117,14 +251,16 @@ JpcFlowTabSrv.prototype.createNew = function(){
 | 
	
		
			
				|  |  |                  if (rowSplitCnt % me.multiCols > 0) {
 | 
	
		
			
				|  |  |                      rowSplitCnt++
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | -                for (let rowIdx = 0; rowIdx < rowSplitCnt; rowIdx++) {
 | 
	
		
			
				|  |  | -                    pageStatus[JV.STATUS_SEGMENT_END] = (rowIdx === (rowSplitCnt - 1));
 | 
	
		
			
				|  |  | +                for (let segPageIdx = 0; segPageIdx < rowSplitCnt; segPageIdx++) {
 | 
	
		
			
				|  |  | +                    pageStatus[JV.STATUS_SEGMENT_END] = (segPageIdx === (rowSplitCnt - 1));
 | 
	
		
			
				|  |  |                      if (pageIdx > 0) pageStatus[JV.STATUS_REPORT_START] = false;
 | 
	
		
			
				|  |  |                      private_resetBandArea();
 | 
	
		
			
				|  |  |                      me.pageStatusLst.push(pageStatus.slice(0));
 | 
	
		
			
				|  |  |                      pageIdx++;
 | 
	
		
			
				|  |  | -                    counterRowRec = orgMaxRowRec * rowIdx;
 | 
	
		
			
				|  |  | -                    private_addPageValue(me.dispValueIdxLst, me.segments[segIdx], counterRowRec, maxRowRec,me.page_seg_map, segIdx, pageIdx);
 | 
	
		
			
				|  |  | +                    counterRowRec = orgMaxRowRec * segPageIdx - grpPageInfo[JV.PROP_INSERTED_GRP_REC];
 | 
	
		
			
				|  |  | +                    private_addPageValue(me.dispValueIdxLst, me.segments[segIdx], grpSeqInfo, counterRowRec, maxRowRec,me.page_seg_map, segIdx, pageIdx, null);
 | 
	
		
			
				|  |  | +                    //private_addPageValue(me.dispValueIdxLst, me.segments[segIdx], grpSeqInfo, counterRowRec, maxRowRec,me.page_seg_map, segIdx, pageIdx, grpPageInfo);
 | 
	
		
			
				|  |  | +                    //备注: 考虑到分组数据是临时融入的,所以需要知道这一页的数据融入了多少条group数据,并且得考虑边界条件情况(group数据可能跨页!)
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  pageStatus[JV.STATUS_SEGMENT_END] = false;
 | 
	
		
			
				|  |  |                  pageStatus[JV.STATUS_REPORT_START] = false;
 | 
	
	
		
			
				|  | @@ -225,7 +361,9 @@ JpcFlowTabSrv.prototype.createNew = function(){
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                      if (!(tab_field[JV.PROP_HIDDEN])) {
 | 
	
		
			
				|  |  |                          for (let rowIdx = 0; rowIdx < contentValuesIdx.length; rowIdx++) {
 | 
	
		
			
				|  |  | -                            rst.push(me.outputTabField(band, tab_field, data_field, contentValuesIdx[rowIdx], -1, contentValuesIdx.length, rowIdx, 1, 0, unitFactor, true, controls, multiColIdx));
 | 
	
		
			
				|  |  | +                            // rst.push(me.outputTabField(band, tab_field, data_field, contentValuesIdx[rowIdx], -1, contentValuesIdx.length, rowIdx, 1, 0, unitFactor, true, controls, multiColIdx));
 | 
	
		
			
				|  |  | +                            //测试中
 | 
	
		
			
				|  |  | +                            rst.push(me.outputTabField(band, tab_field, data_field, contentValuesIdx[rowIdx][1], -1, contentValuesIdx.length, rowIdx, 1, 0, unitFactor, true, controls, multiColIdx));
 | 
	
		
			
				|  |  |                          }
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                  }
 |