| 
															
																@@ -13,27 +13,30 @@ let JpcAreaHelper = require('./helper/jpc_helper_area'); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 let JpcFlowTabSrv = function(){}; 
															 | 
															
															 | 
															
																 let JpcFlowTabSrv = function(){}; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 //let grpPageInfo = {"segGrpRecStartIdx": 0, "insertedGrpRecAmt": 0, "preAddPageGrpInfo": null}; 
															 | 
															
															 | 
															
																 //let grpPageInfo = {"segGrpRecStartIdx": 0, "insertedGrpRecAmt": 0, "preAddPageGrpInfo": null}; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 JpcFlowTabSrv.prototype.createNew = function(){ 
															 | 
															
															 | 
															
																 JpcFlowTabSrv.prototype.createNew = function(){ 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-    function private_addPageValue(ValuedIdxLst, sortedSequence, grpSequenceInfo, startRecIdx, maxRecPerPage,page_seg_map, segIdx, pageIdx, grpPageInfo) { 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+    function private_addPageValue(ValuedIdxLst, sortedSequence, grpSequenceInfo, startRecIdx, maxRecPerPage,page_seg_map, segIdx, pageIdx, grpPageInfo, isFollow) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         let vIdx = [], preAmt = 0, insertedGrpAmt = 0, grp_lines = 0; 
															 | 
															
															 | 
															
																         let vIdx = [], preAmt = 0, insertedGrpAmt = 0, grp_lines = 0; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-        if (grpPageInfo) { 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        if (grpSequenceInfo && grpPageInfo) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             //grpPageInfo[JV.PROP_INSERTED_GRP_REC] = 0; 
															 | 
															
															 | 
															
																             //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]); 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            if (grpPageInfo[JV.PROP_PRE_ADD_GRP_REC_INFO].length > 0) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                for (let grpLineIdx of grpPageInfo[JV.PROP_PRE_ADD_GRP_REC_INFO]) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    vIdx.push([(isFollow)?JV.TYPE_FOLLOW_MODE:-1, JV.DISPLAY_VAL_TYPE_GROUP, grpPageInfo[JV.PROP_SEG_GRP_IDX], grpLineIdx]); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                grpPageInfo[JV.PROP_SEG_GRP_IDX]++; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             } 
															 | 
															
															 | 
															
																             } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             preAmt = grpPageInfo[JV.PROP_PRE_ADD_GRP_REC_INFO].length; 
															 | 
															
															 | 
															
																             preAmt = grpPageInfo[JV.PROP_PRE_ADD_GRP_REC_INFO].length; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             grpPageInfo[JV.PROP_PRE_ADD_GRP_REC_INFO] = []; 
															 | 
															
															 | 
															
																             grpPageInfo[JV.PROP_PRE_ADD_GRP_REC_INFO] = []; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             grp_lines = grpPageInfo[JV.PROP_GRP_LINES]; 
															 | 
															
															 | 
															
																             grp_lines = grpPageInfo[JV.PROP_GRP_LINES]; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         } 
															 | 
															
															 | 
															
																         } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         for (let vi = 0; (vi + insertedGrpAmt * grp_lines) < maxRecPerPage - preAmt; vi++) { 
															 | 
															
															 | 
															
																         for (let vi = 0; (vi + insertedGrpAmt * grp_lines) < maxRecPerPage - preAmt; vi++) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-            if (grpPageInfo) { 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            if (grpSequenceInfo && grpPageInfo) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 if ((startRecIdx + vi) === grpSequenceInfo[grpPageInfo[JV.PROP_SEG_GRP_IDX]]) { 
															 | 
															
															 | 
															
																                 if ((startRecIdx + vi) === grpSequenceInfo[grpPageInfo[JV.PROP_SEG_GRP_IDX]]) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                     //表示这里要插入grouping信息啦! 
															 | 
															
															 | 
															
																                     //表示这里要插入grouping信息啦! 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                     //1. 首先push正常的记录 
															 | 
															
															 | 
															
																                     //1. 首先push正常的记录 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                    vIdx.push([JV.DISPLAY_VAL_TYPE_NORMAL, sortedSequence[startRecIdx + vi]]); 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    vIdx.push([(isFollow)?JV.TYPE_FOLLOW_MODE:-1, JV.DISPLAY_VAL_TYPE_NORMAL, sortedSequence[startRecIdx + vi]]); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                     //2. 然后就要push grouping记录了 
															 | 
															
															 | 
															
																                     //2. 然后就要push grouping记录了 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                     let hasFullGrp = true; 
															 | 
															
															 | 
															
																                     let hasFullGrp = true; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                     for (let i = 0; i < grp_lines; i++) { 
															 | 
															
															 | 
															
																                     for (let i = 0; i < grp_lines; i++) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                        if ( (vi + i + 1) >= (maxRecPerPage - preAmt)) { 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                        if ( ((vi + insertedGrpAmt * grp_lines) + i + 1) >= (maxRecPerPage - preAmt)) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                             for (let j = i; j < grp_lines; j++) { 
															 | 
															
															 | 
															
																                             for (let j = i; j < grp_lines; j++) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                                 grpPageInfo[JV.PROP_PRE_ADD_GRP_REC_INFO].push(j); 
															 | 
															
															 | 
															
																                                 grpPageInfo[JV.PROP_PRE_ADD_GRP_REC_INFO].push(j); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                             } 
															 | 
															
															 | 
															
																                             } 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@@ -41,7 +44,7 @@ JpcFlowTabSrv.prototype.createNew = function(){ 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                             hasFullGrp = false; 
															 | 
															
															 | 
															
																                             hasFullGrp = false; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                             break; 
															 | 
															
															 | 
															
																                             break; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                         } else { 
															 | 
															
															 | 
															
																                         } else { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                            vIdx.push([JV.DISPLAY_VAL_TYPE_GROUP, grpPageInfo[JV.PROP_SEG_GRP_IDX], i]); 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                            vIdx.push([(isFollow)?JV.TYPE_FOLLOW_MODE:-1, JV.DISPLAY_VAL_TYPE_GROUP, grpPageInfo[JV.PROP_SEG_GRP_IDX], i]); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                         } 
															 | 
															
															 | 
															
																                         } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                     } 
															 | 
															
															 | 
															
																                     } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                     //3. 进位下一个group信息所在位置 
															 | 
															
															 | 
															
																                     //3. 进位下一个group信息所在位置 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@@ -54,16 +57,16 @@ JpcFlowTabSrv.prototype.createNew = function(){ 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                     } 
															 | 
															
															 | 
															
																                     } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 } else { 
															 | 
															
															 | 
															
																                 } else { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                     if (sortedSequence.length > startRecIdx + vi) { 
															 | 
															
															 | 
															
																                     if (sortedSequence.length > startRecIdx + vi) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                        vIdx.push([JV.DISPLAY_VAL_TYPE_NORMAL, sortedSequence[startRecIdx + vi]]); 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                        vIdx.push([(isFollow)?JV.TYPE_FOLLOW_MODE:-1, JV.DISPLAY_VAL_TYPE_NORMAL, sortedSequence[startRecIdx + vi]]); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                     } else { 
															 | 
															
															 | 
															
																                     } else { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                        vIdx.push([JV.DISPLAY_VAL_TYPE_NORMAL, JV.BLANK_VALUE_INDEX]); 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                        vIdx.push([(isFollow)?JV.TYPE_FOLLOW_MODE:-1, JV.DISPLAY_VAL_TYPE_NORMAL, JV.BLANK_VALUE_INDEX]); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                     } 
															 | 
															
															 | 
															
																                     } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 } 
															 | 
															
															 | 
															
																                 } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             } else { 
															 | 
															
															 | 
															
																             } else { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 if (sortedSequence.length > startRecIdx + vi) { 
															 | 
															
															 | 
															
																                 if (sortedSequence.length > startRecIdx + vi) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                    vIdx.push([JV.DISPLAY_VAL_TYPE_NORMAL, sortedSequence[startRecIdx + vi]]); 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    vIdx.push([(isFollow)?JV.TYPE_FOLLOW_MODE:-1, JV.DISPLAY_VAL_TYPE_NORMAL, sortedSequence[startRecIdx + vi]]); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 } else { 
															 | 
															
															 | 
															
																                 } else { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                    vIdx.push([JV.DISPLAY_VAL_TYPE_NORMAL, JV.BLANK_VALUE_INDEX]); 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    vIdx.push([(isFollow)?JV.TYPE_FOLLOW_MODE:-1, JV.DISPLAY_VAL_TYPE_NORMAL, JV.BLANK_VALUE_INDEX]); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 } 
															 | 
															
															 | 
															
																                 } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             } 
															 | 
															
															 | 
															
																             } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         } 
															 | 
															
															 | 
															
																         } 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@@ -142,7 +145,8 @@ JpcFlowTabSrv.prototype.createNew = function(){ 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 for (let si = preGrpIdx; si <= nexGrpIdx; si++) { 
															 | 
															
															 | 
															
																                 for (let si = preGrpIdx; si <= nexGrpIdx; si++) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                     sumV += JpcFieldHelper.getValue(data_field, segDataIdx[si]); 
															 | 
															
															 | 
															
																                     sumV += JpcFieldHelper.getValue(data_field, segDataIdx[si]); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 } 
															 | 
															
															 | 
															
																                 } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                me.group_sum_values[segIdx][j].push(sumV); 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                // me.group_sum_values[segIdx][j].push(sumV); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                me.group_sum_values[segIdx][me.group_sum_fields[j][JV.PROP_SUM_KEY]].push(sumV); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             } 
															 | 
															
															 | 
															
																             } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         } 
															 | 
															
															 | 
															
																         } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         me.group_node_info[segIdx].push(nexGrpIdx); 
															 | 
															
															 | 
															
																         me.group_node_info[segIdx].push(nexGrpIdx); 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@@ -158,27 +162,31 @@ JpcFlowTabSrv.prototype.createNew = function(){ 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             let preGrpIdx = 0, nexGrpIdx = 0; 
															 | 
															
															 | 
															
																             let preGrpIdx = 0, nexGrpIdx = 0; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             for (let segIdx = 0; segIdx < me.segments.length; segIdx++) { 
															 | 
															
															 | 
															
																             for (let segIdx = 0; segIdx < me.segments.length; segIdx++) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 let segDataIdx = me.segments[segIdx]; 
															 | 
															
															 | 
															
																                 let segDataIdx = me.segments[segIdx]; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                me.group_sum_values.push([]); 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                // me.group_sum_values.push([]); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                me.group_sum_values.push({}); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 me.group_node_info.push([]); 
															 | 
															
															 | 
															
																                 me.group_node_info.push([]); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 for (let j = 0; j < me.group_sum_fields.length; j++) { 
															 | 
															
															 | 
															
																                 for (let j = 0; j < me.group_sum_fields.length; j++) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                    me.group_sum_values[segIdx].push([]); 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                    //me.group_node_info[segIdx].push([]); 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    // me.group_sum_values[segIdx].push([]); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    me.group_sum_values[segIdx][me.group_sum_fields[j][JV.PROP_SUM_KEY]] = []; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    // me.group_node_info[segIdx].push([]); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 } 
															 | 
															
															 | 
															
																                 } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                for (let di = 1; di < segDataIdx.length; di++) { 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                for (let di = 0; di < segDataIdx.length; di++) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                     let hasDiff = false; 
															 | 
															
															 | 
															
																                     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 (di > 1) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                        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; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                                } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                             } 
															 | 
															
															 | 
															
																                             } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                         } 
															 | 
															
															 | 
															
																                         } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                     } 
															 | 
															
															 | 
															
																                     } 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@@ -199,9 +207,194 @@ JpcFlowTabSrv.prototype.createNew = function(){ 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             } 
															 | 
															
															 | 
															
																             } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         } 
															 | 
															
															 | 
															
																         } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																     }; 
															 | 
															
															 | 
															
																     }; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-    JpcFlowTabResult.preSetupPages = function (rptTpl, dataObj, defProperties, option, $CURRENT_RPT) { 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+ 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+    JpcFlowTabResult.preSetupPages = function (rptTpl, dataObj, defProperties, option, $CURRENT_RPT, followTabEx) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        //换一种思路来整理流水式数据 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        let me = this, rst = 1, counterRowRec = 0, counterRowRecEx = 0, maxRowRec = 1, pageIdx = 0, currentRecAmt = 0; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        me.setupGroupingData(rptTpl, dataObj, $CURRENT_RPT); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        if (followTabEx) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            followTabEx.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); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        if (me.paging_option === JV.PAGING_OPTION_INFINITY) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            rst = me.segments.length; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            let pageStatus = [true, true, false, true, true, true, false, false]; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            for (let segIdx = 0; segIdx < me.segments.length; segIdx++) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                if (segIdx === me.segments.length - 1) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    pageStatus[JV.STATUS_REPORT_END] = true; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                if (segIdx > 0) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    pageStatus[JV.STATUS_REPORT_START] = false; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                me.pageStatusLst.push(pageStatus.slice(0)); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                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, false); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            //目前不支持flowTabEx 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        } else { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            let bands = JpcBand.createNew(rptTpl, defProperties); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            let pageStatus = [true, true, false, true, false, false, false, false]; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            if (me.isEx) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                pageStatus[JV.STATUS_REPORT_START] = false; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            if (rptTpl[CURRENT_FLOW_INFO][JV.PROP_MULTI_COLUMN]) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                me.multiCols = 1 * rptTpl[CURRENT_FLOW_INFO][JV.PROP_MULTI_COLUMN]; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            let grpPageInfo = {}; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            function private_resetBandArea() { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                JpcBandHelper.setBandArea(bands, rptTpl, pageStatus, !me.isEx, me.isEx); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                maxRowRec = JpcFlowTabHelper.getMaxRowsPerPage(bands, rptTpl, me.isEx); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            function private_addPage(segIdx, grpSeqInfo, isFollow, isMix, mixSplitPoint) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                private_resetBandArea(); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                me.pageStatusLst.push(pageStatus.slice(0)); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                currentRecAmt += maxRowRec; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                pageIdx++; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                if (isMix) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    //先处理上半部分 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    private_addPageValue(me.dispValueIdxLst, me.segments[segIdx], grpSeqInfo, counterRowRec, mixSplitPoint,me.page_seg_map, segIdx, pageIdx, grpPageInfo, false); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    for (let dv of me.dispValueIdxLst[me.dispValueIdxLst.length - 1]) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                        if (dv[1] === JV.DISPLAY_VAL_TYPE_NORMAL) counterRowRec++; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    //再处理下半部分 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    private_addPageValue(me.dispValueIdxLst, followTabEx.segments[segIdx], null, counterRowRecEx, maxRowRec - mixSplitPoint, me.page_seg_map, segIdx, pageIdx, null, true); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    for (let dv of me.dispValueIdxLst[me.dispValueIdxLst.length - 1]) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                        if (dv[1] === JV.DISPLAY_VAL_TYPE_NORMAL) counterRowRecEx++; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    //合并到一页中 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    me.page_seg_map.splice(me.page_seg_map.length - 1, 1); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    let vl = me.dispValueIdxLst[me.dispValueIdxLst.length - 2]; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    for (let item of me.dispValueIdxLst[me.dispValueIdxLst.length - 1]) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                        vl.push(item); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    me.dispValueIdxLst.splice(me.dispValueIdxLst.length - 1, 1); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                } else if (isFollow) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    private_addPageValue(me.dispValueIdxLst, followTabEx.segments[segIdx], null, counterRowRecEx, maxRowRec, me.page_seg_map, segIdx, pageIdx, null, true); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    for (let dv of me.dispValueIdxLst[me.dispValueIdxLst.length - 1]) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                        if (dv[1] === JV.DISPLAY_VAL_TYPE_NORMAL) counterRowRecEx++; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                } else { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    private_addPageValue(me.dispValueIdxLst, me.segments[segIdx], grpSeqInfo, counterRowRec, maxRowRec,me.page_seg_map, segIdx, pageIdx, grpPageInfo, false); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    for (let dv of me.dispValueIdxLst[me.dispValueIdxLst.length - 1]) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                        if (dv[1] === JV.DISPLAY_VAL_TYPE_NORMAL) counterRowRec++; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            for (let segIdx = 0; segIdx < me.segments.length; segIdx++) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                let grpSeqInfo = (me.group_node_info)?me.group_node_info[segIdx]:null; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                let grpRecAmt = (grpSeqInfo)?(grpSeqInfo.length*me.group_lines_amt):0; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                let grpRecAmtEx = 0; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                if (followTabEx && followTabEx.group_node_info) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    grpRecAmtEx = followTabEx.group_node_info.length * followTabEx.group_lines_amt; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                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; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                pageStatus[JV.STATUS_SEGMENT_START] = true; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                private_resetBandArea(); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                let threshold = 0; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                currentRecAmt = 0; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                counterRowRec = 0; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                counterRowRecEx = 0; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                let ttlSegRecAmtNormal = me.segments[segIdx].length + grpRecAmt; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                let ttlSegRecAmt = (followTabEx)?(me.segments[segIdx].length + grpRecAmt + followTabEx.segments[segIdx].length + grpRecAmtEx):(me.segments[segIdx].length + grpRecAmt); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                while (true) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    if (currentRecAmt > 0) pageStatus[JV.STATUS_SEGMENT_START] = false; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    if (pageIdx > 0) pageStatus[JV.STATUS_REPORT_START] = false; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    //开始判断各种scenarios 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    if (ttlSegRecAmtNormal < ttlSegRecAmt) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                        if (currentRecAmt + maxRowRec > ttlSegRecAmtNormal) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                            if (currentRecAmt >= ttlSegRecAmtNormal) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                                //纯 followTabEx 数据 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                                if (currentRecAmt + maxRowRec >= ttlSegRecAmt) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                                    pageStatus[JV.STATUS_SEGMENT_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; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                                        private_addPage(segIdx, null, true, false, -1); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                                    } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                                    //add page info 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                                    pageStatus[JV.STATUS_SEGMENT_END] = true; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                                    private_addPage(segIdx, null, true, false, -1); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                                } else { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                                    private_addPage(segIdx, null, true, false, -1); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                                } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                            } else { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                                //混合数据 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                                if (currentRecAmt + maxRowRec >= ttlSegRecAmt) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                                    pageStatus[JV.STATUS_SEGMENT_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; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                                        private_addPage(segIdx, grpSeqInfo, false, true, ttlSegRecAmtNormal); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                                    } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                                    //add page info 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                                    pageStatus[JV.STATUS_SEGMENT_END] = true; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                                    if (currentRecAmt >= ttlSegRecAmtNormal) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                                        //纯 followTabEx 数据啦 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                                        private_addPage(segIdx, null, true, false, -1); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                                    } else { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                                        private_addPage(segIdx, grpSeqInfo, false, true, ttlSegRecAmtNormal); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                                    } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                                } else { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                                    private_addPage(segIdx, grpSeqInfo, false, true, ttlSegRecAmtNormal); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                                } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                            } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                        } else { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                            //纯followTab数据 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                            private_addPage(segIdx, grpSeqInfo, false, false, -1); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                        } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    } else { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                        if (currentRecAmt + maxRowRec >= ttlSegRecAmt) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                            pageStatus[JV.STATUS_SEGMENT_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; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                                private_addPage(segIdx, grpSeqInfo, false, false, -1); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                            } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                            //add page info 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                            pageStatus[JV.STATUS_SEGMENT_END] = true; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                            private_addPage(segIdx, grpSeqInfo, false, false, -1); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                        } else { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                            private_addPage(segIdx, grpSeqInfo, false, false, -1); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                        } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    //检测是否可退出 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    if (currentRecAmt >= ttlSegRecAmt) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                        break; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    //控制阀值,超过阀值则强制退出,防止死循环 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    threshold++; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    if (threshold > 500) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                        console.log("Hey! There may be a dead loop here!!!"); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                        break; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            // console.log(me.dispValueIdxLst); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            rst = Math.ceil(pageIdx / me.multiCols); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        me.pagesAmt = rst; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        return rst; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+    }; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+ 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+    JpcFlowTabResult.preSetupPages_Org = function (rptTpl, dataObj, defProperties, option, $CURRENT_RPT, followTabEx) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         let me = this, rst = 1, counterRowRec = 0, maxRowRec = 1, pageIdx = 0; 
															 | 
															
															 | 
															
																         let me = this, rst = 1, counterRowRec = 0, maxRowRec = 1, pageIdx = 0; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         me.setupGroupingData(rptTpl, dataObj, $CURRENT_RPT); 
															 | 
															
															 | 
															
																         me.setupGroupingData(rptTpl, dataObj, $CURRENT_RPT); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        if (followTabEx) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            followTabEx.setupGroupingData(rptTpl, dataObj, $CURRENT_RPT); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        //console.log(me.group_sum_values); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         me.paging_option = option||JV.PAGING_OPTION_NORMAL; 
															 | 
															
															 | 
															
																         me.paging_option = option||JV.PAGING_OPTION_NORMAL; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         let CURRENT_FLOW_INFO = (me.isEx)?JV.NODE_FLOW_INFO_EX:JV.NODE_FLOW_INFO; 
															 | 
															
															 | 
															
																         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); 
															 | 
															
															 | 
															
																         JpcFieldHelper.findAndPutDataFieldIdx(rptTpl, rptTpl[CURRENT_FLOW_INFO][JV.NODE_FLOW_CONTENT][JV.PROP_FLOW_FIELDS], null, me.disp_fields_idx, me.isEx); 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@@ -218,7 +411,10 @@ JpcFlowTabSrv.prototype.createNew = function(){ 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 me.pageStatusLst.push(pageStatus.slice(0)); 
															 | 
															
															 | 
															
																                 me.pageStatusLst.push(pageStatus.slice(0)); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 pageIdx++; 
															 | 
															
															 | 
															
																                 pageIdx++; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 let grpSeqInfo = (me.group_node_info)?me.group_node_info[segIdx]:null; 
															 | 
															
															 | 
															
																                 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); 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                private_addPageValue(me.dispValueIdxLst, me.segments[segIdx], grpSeqInfo, 0, me.segments[segIdx].length, me.page_seg_map, segIdx, pageIdx, null, false); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                if (followTabEx) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    // 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             } 
															 | 
															
															 | 
															
																             } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         } else { 
															 | 
															
															 | 
															
																         } else { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             let bands = JpcBand.createNew(rptTpl, defProperties); 
															 | 
															
															 | 
															
																             let bands = JpcBand.createNew(rptTpl, defProperties); 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@@ -243,28 +439,43 @@ JpcFlowTabSrv.prototype.createNew = function(){ 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 private_resetBandArea(); 
															 | 
															
															 | 
															
																                 private_resetBandArea(); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 let orgMaxRowRec = maxRowRec; 
															 | 
															
															 | 
															
																                 let orgMaxRowRec = maxRowRec; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 let grpRecAmt = (grpSeqInfo)?(grpSeqInfo.length*me.group_lines_amt):0; 
															 | 
															
															 | 
															
																                 let grpRecAmt = (grpSeqInfo)?(grpSeqInfo.length*me.group_lines_amt):0; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                let grpRecAmtEx = 0; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 let rowSplitCnt = Math.ceil(1.0 * (me.segments[segIdx].length + grpRecAmt) / orgMaxRowRec); 
															 | 
															
															 | 
															
																                 let rowSplitCnt = Math.ceil(1.0 * (me.segments[segIdx].length + grpRecAmt) / orgMaxRowRec); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                let rowSplitCntEx = rowSplitCnt; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                if (followTabEx) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    rowSplitCntEx = Math.ceil(1.0 * (me.segments[segIdx].length + grpRecAmt + followTabEx.segments[segIdx].length + grpRecAmtEx) / orgMaxRowRec); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 pageStatus[JV.STATUS_SEGMENT_END] = true; 
															 | 
															
															 | 
															
																                 pageStatus[JV.STATUS_SEGMENT_END] = true; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 private_resetBandArea(); 
															 | 
															
															 | 
															
																                 private_resetBandArea(); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                let hasAdHocRow = !JpcFlowTabHelper.chkSegEnd(bands, rptTpl, me.segments, segIdx, (rowSplitCnt - 1) * orgMaxRowRec, maxRowRec, me.isEx); 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                if (hasAdHocRow) rowSplitCnt++; 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                if (rowSplitCnt % me.multiCols > 0) { 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                    rowSplitCnt++ 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                let len = (followTabEx)?(me.segments[segIdx].length + grpRecAmt + followTabEx.segments[segIdx].length + grpRecAmtEx):(me.segments[segIdx].length + grpRecAmt); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                //let hasAdHocRow = !JpcFlowTabHelper.chkSegEnd(bands, rptTpl, me.segments[segIdx].length, (rowSplitCntEx - 1) * orgMaxRowRec, maxRowRec, me.isEx); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                let hasAdHocRow = !JpcFlowTabHelper.chkSegEnd(bands, rptTpl, len, (rowSplitCntEx - 1) * orgMaxRowRec, maxRowRec, me.isEx); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                if (hasAdHocRow) rowSplitCntEx++; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                if (rowSplitCntEx % me.multiCols > 0) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    rowSplitCntEx++ 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 } 
															 | 
															
															 | 
															
																                 } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                for (let segPageIdx = 0; segPageIdx < rowSplitCnt; segPageIdx++) { 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                    pageStatus[JV.STATUS_SEGMENT_END] = (segPageIdx === (rowSplitCnt - 1)); 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                counterRowRec = 0; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                for (let segPageIdx = 0; segPageIdx < rowSplitCntEx; segPageIdx++) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    pageStatus[JV.STATUS_SEGMENT_END] = (segPageIdx === (rowSplitCntEx - 1)); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                     if (pageIdx > 0) pageStatus[JV.STATUS_REPORT_START] = false; 
															 | 
															
															 | 
															
																                     if (pageIdx > 0) pageStatus[JV.STATUS_REPORT_START] = false; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                     private_resetBandArea(); 
															 | 
															
															 | 
															
																                     private_resetBandArea(); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                     me.pageStatusLst.push(pageStatus.slice(0)); 
															 | 
															
															 | 
															
																                     me.pageStatusLst.push(pageStatus.slice(0)); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                     pageIdx++; 
															 | 
															
															 | 
															
																                     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); 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    if (followTabEx) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                        // 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    } else { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                        // 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    private_addPageValue(me.dispValueIdxLst, me.segments[segIdx], grpSeqInfo, counterRowRec, maxRowRec,me.page_seg_map, segIdx, pageIdx, grpPageInfo, false); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                     //备注: 考虑到分组数据是临时融入的,所以需要知道这一页的数据融入了多少条group数据,并且得考虑边界条件情况(group数据可能跨页!) 
															 | 
															
															 | 
															
																                     //备注: 考虑到分组数据是临时融入的,所以需要知道这一页的数据融入了多少条group数据,并且得考虑边界条件情况(group数据可能跨页!) 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    for (let dv of me.dispValueIdxLst[me.dispValueIdxLst.length - 1]) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                        if (dv[1] === JV.DISPLAY_VAL_TYPE_NORMAL) counterRowRec++; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 } 
															 | 
															
															 | 
															
																                 } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 pageStatus[JV.STATUS_SEGMENT_END] = false; 
															 | 
															
															 | 
															
																                 pageStatus[JV.STATUS_SEGMENT_END] = false; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 pageStatus[JV.STATUS_REPORT_START] = false; 
															 | 
															
															 | 
															
																                 pageStatus[JV.STATUS_REPORT_START] = false; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             } 
															 | 
															
															 | 
															
																             } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            // console.log(me.dispValueIdxLst); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             rst = Math.ceil(pageIdx / me.multiCols); 
															 | 
															
															 | 
															
																             rst = Math.ceil(pageIdx / me.multiCols); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         } 
															 | 
															
															 | 
															
																         } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         me.pagesAmt = rst; 
															 | 
															
															 | 
															
																         me.pagesAmt = rst; 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@@ -341,29 +552,66 @@ JpcFlowTabSrv.prototype.createNew = function(){ 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         let me = this, rst = []; 
															 | 
															
															 | 
															
																         let me = this, rst = []; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         let FLOW_NODE_STR = me.isEx?JV.NODE_FLOW_INFO_EX:JV.NODE_FLOW_INFO; 
															 | 
															
															 | 
															
																         let FLOW_NODE_STR = me.isEx?JV.NODE_FLOW_INFO_EX:JV.NODE_FLOW_INFO; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         let tab = rptTpl[FLOW_NODE_STR][JV.NODE_FLOW_CONTENT]; 
															 | 
															
															 | 
															
																         let tab = rptTpl[FLOW_NODE_STR][JV.NODE_FLOW_CONTENT]; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        let tabEx = (rptTpl[JV.NODE_FLOW_INFO_EX])?rptTpl[JV.NODE_FLOW_INFO_EX][JV.NODE_FLOW_CONTENT]:null; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         let band = bands[tab[JV.PROP_BAND_NAME]]; 
															 | 
															
															 | 
															
																         let band = bands[tab[JV.PROP_BAND_NAME]]; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         if (band) { 
															 | 
															
															 | 
															
																         if (band) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             let pageStatus = me.pageStatusLst[page - 1]; 
															 | 
															
															 | 
															
																             let pageStatus = me.pageStatusLst[page - 1]; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             if (pageStatus[band[JV.BAND_PROP_DISPLAY_TYPE]]) { 
															 | 
															
															 | 
															
																             if (pageStatus[band[JV.BAND_PROP_DISPLAY_TYPE]]) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 let tab_fields = tab[JV.PROP_FLOW_FIELDS]; 
															 | 
															
															 | 
															
																                 let tab_fields = tab[JV.PROP_FLOW_FIELDS]; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                let tab_fields_ex = tabEx?tabEx[JV.PROP_FLOW_FIELDS]:null; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 let data_details = me.isEx?dataObj[JV.DATA_DETAIL_DATA_EX]:dataObj[JV.DATA_DETAIL_DATA]; 
															 | 
															
															 | 
															
																                 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 contentValuesIdx = me.dispValueIdxLst[page - 1]; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                for (let i = 0; i < tab_fields.length; i++) { 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                    let tab_field = tab_fields[i]; 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                    let data_field = null; 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                    if (me.disp_fields_idx[i] !== JV.BLANK_FIELD_INDEX) { 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                        data_field = data_details[me.disp_fields_idx[i]]; 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                    } else { 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                        data_field = JE.F(tab_field[JV.PROP_FIELD_ID], $CURRENT_RPT); 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                        if (data_field) { 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                            data_field = data_field[JV.PROP_AD_HOC_DATA]; 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                //normal content 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                for (let rowIdx = 0; rowIdx < contentValuesIdx.length; rowIdx++) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    for (let i = 0; i < tab_fields.length; i++) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                        let tab_field = tab_fields[i]; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                        let data_field = null; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                        if (me.disp_fields_idx[i] !== JV.BLANK_FIELD_INDEX) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                            data_field = data_details[me.disp_fields_idx[i]]; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                        } else { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                            data_field = JE.F(tab_field[JV.PROP_FIELD_ID], $CURRENT_RPT); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                            if (data_field) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                                data_field = data_field[JV.PROP_AD_HOC_DATA]; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                            } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                         } 
															 | 
															
															 | 
															
																                         } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                    } 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                    if (!(tab_field[JV.PROP_HIDDEN])) { 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                        for (let rowIdx = 0; rowIdx < contentValuesIdx.length; rowIdx++) { 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                        if (!(tab_field[JV.PROP_HIDDEN])) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                             // 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)); 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                            if (contentValuesIdx[rowIdx][0] !== JV.TYPE_FOLLOW_MODE && contentValuesIdx[rowIdx][1] === JV.DISPLAY_VAL_TYPE_NORMAL) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                                rst.push(me.outputTabField(band, tab_field, data_field, contentValuesIdx[rowIdx][2], -1, contentValuesIdx.length, rowIdx, 1, 0, unitFactor, true, controls, multiColIdx)); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                            } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                        } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    if (contentValuesIdx[rowIdx][0] === JV.TYPE_FOLLOW_MODE) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                        for (let i = 0; i < tab_fields_ex.length; i++) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                            let tab_field = tab_fields_ex[i]; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                            let data_field = null; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                            if (me.disp_fields_idx[i] !== JV.BLANK_FIELD_INDEX) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                                data_field = data_details_ex[me.disp_fields_idx[i]]; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                            } else { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                                data_field = JE.F(tab_field[JV.PROP_FIELD_ID], $CURRENT_RPT); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                                if (data_field) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                                    data_field = data_field[JV.PROP_AD_HOC_DATA]; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                                } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                            } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                            if (!(tab_field[JV.PROP_HIDDEN])) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                                if (contentValuesIdx[rowIdx][0] === JV.TYPE_FOLLOW_MODE && contentValuesIdx[rowIdx][1] === JV.DISPLAY_VAL_TYPE_NORMAL) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                                    rst.push(me.outputTabField(band, tab_field, data_field, contentValuesIdx[rowIdx][2], -1, contentValuesIdx.length, rowIdx, 1, 0, unitFactor, true, controls, multiColIdx)); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                                } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                            } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                        } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                //grouping content 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                for (let rowIdx = 0; rowIdx < contentValuesIdx.length; rowIdx++) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    if (contentValuesIdx[rowIdx][1] === JV.DISPLAY_VAL_TYPE_GROUP) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                        for (let grpIdx = 0; grpIdx < rptTpl[FLOW_NODE_STR][JV.NODE_FLOW_GROUP][JV.PROP_GROUP_LINES].length; grpIdx++) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                            if (contentValuesIdx[rowIdx][3] === grpIdx) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                                let grp_line = rptTpl[FLOW_NODE_STR][JV.NODE_FLOW_GROUP][JV.PROP_GROUP_LINES][grpIdx]; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                                let lineRst = me.outputTabGrpLine(band, grp_line, page, contentValuesIdx[rowIdx], contentValuesIdx.length, rowIdx, 1, 0, unitFactor, true, controls, multiColIdx) 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                                rst = rst.concat(lineRst); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                            } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                         } 
															 | 
															
															 | 
															
																                         } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                     } 
															 | 
															
															 | 
															
																                     } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 } 
															 | 
															
															 | 
															
																                 } 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@@ -429,6 +677,31 @@ JpcFlowTabSrv.prototype.createNew = function(){ 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         rst[JV.PROP_AREA] = JpcAreaHelper.outputArea(tab_field[JV.PROP_AREA], band, unitFactor, rows, rowIdx, cols, colIdx, me.multiCols, multiColIdx, true, false); 
															 | 
															
															 | 
															
																         rst[JV.PROP_AREA] = JpcAreaHelper.outputArea(tab_field[JV.PROP_AREA], band, unitFactor, rows, rowIdx, cols, colIdx, me.multiCols, multiColIdx, true, false); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         return rst; 
															 | 
															
															 | 
															
																         return rst; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																     }; 
															 | 
															
															 | 
															
																     }; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+    JpcFlowTabResult.outputTabGrpLine = function (band, grp_line, page, grpValueIdx, rows, rowIdx, cols, colIdx, unitFactor, isRow, controls, multiColIdx) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        let me = this, rst = []; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        if (grp_line[JV.PROP_GROUP_SUM_KEYS]) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            let segIdx = JpcCommonHelper.getSegIdxByPageIdx(page, me.page_seg_map); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            let curSegGrpSum = me.group_sum_values[segIdx]; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            for (let sumFieldNode of grp_line[JV.PROP_GROUP_SUM_KEYS]) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                let value = curSegGrpSum[sumFieldNode[JV.PROP_SUM_KEY]][grpValueIdx[2]]; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                let sumFldRst = JpcTextHelper.outputDirectValue(sumFieldNode, value,  band, unitFactor, rows, rowIdx, cols, colIdx, me.multiCols, multiColIdx) 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                rst.push(sumFldRst); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        if (grp_line[JV.PROP_TEXTS]) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            for (let txt of grp_line[JV.PROP_TEXTS]) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                rst.push(JpcTextHelper.outputText(txt, band, unitFactor, rows, rowIdx, cols, colIdx, me.multiCols, multiColIdx)); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        if (grp_line[JV.PROP_DISCRETE_FIELDS]) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            // 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        if (grp_line[JV.PROP_PARAMS]) { 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            // 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        } 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        // console.log(rst); 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+        return rst; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+    }; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																  
															 | 
															
															 | 
															
																  
															 | 
														
													
												
													
														
															| 
															 | 
															
																     return JpcFlowTabResult; 
															 | 
															
															 | 
															
																     return JpcFlowTabResult; 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 }; 
															 | 
															
															 | 
															
																 }; 
															 |