|
@@ -16,6 +16,7 @@ const strUtil = require('../public/stringUtil');
|
|
const fontWidthMap = require('./helper/jpc_helper_font_width');
|
|
const fontWidthMap = require('./helper/jpc_helper_font_width');
|
|
const bc = require('../../lib/base_calc.js');
|
|
const bc = require('../../lib/base_calc.js');
|
|
const SEG_PAGE_SPLIT_STR = '`';
|
|
const SEG_PAGE_SPLIT_STR = '`';
|
|
|
|
+const PAGESIZE_THRESHOLD = 2000; // 报表页码的上限值
|
|
|
|
|
|
const JpcFlowTabSrv = function() {};
|
|
const JpcFlowTabSrv = function() {};
|
|
JpcFlowTabSrv.prototype.createNew = function() {
|
|
JpcFlowTabSrv.prototype.createNew = function() {
|
|
@@ -260,7 +261,7 @@ JpcFlowTabSrv.prototype.createNew = function() {
|
|
let sv = JpcFieldHelper.getValue(data_fields[di], me.segments[i][j]);
|
|
let sv = JpcFieldHelper.getValue(data_fields[di], me.segments[i][j]);
|
|
if (sv) {
|
|
if (sv) {
|
|
if (typeof sv === 'string') sv = parseFloat(sv);
|
|
if (typeof sv === 'string') sv = parseFloat(sv);
|
|
- rowGrandTotal[di] = bc.add(rowGrandTotal[di] ? rowGrandTotal[di] : 0, sv ? sv: 0);
|
|
|
|
|
|
+ rowGrandTotal[di] = bc.add(rowGrandTotal[di] ? rowGrandTotal[di] : 0, sv ? sv : 0);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -302,7 +303,7 @@ JpcFlowTabSrv.prototype.createNew = function() {
|
|
if (typeof sv === 'string') sv = parseFloat(sv);
|
|
if (typeof sv === 'string') sv = parseFloat(sv);
|
|
sumV = bc.add(sumV, sv ? sv : 0);
|
|
sumV = bc.add(sumV, sv ? sv : 0);
|
|
}
|
|
}
|
|
- //sumV += parseFloat(parseFloat(JpcFieldHelper.getValue(data_field, segDataIdx[si])).toFixed(precisionAmt));
|
|
|
|
|
|
+ // sumV += parseFloat(parseFloat(JpcFieldHelper.getValue(data_field, segDataIdx[si])).toFixed(precisionAmt));
|
|
}
|
|
}
|
|
// 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_sum_values[segIdx][me.group_sum_fields[j][JV.PROP_SUM_KEY]].push(sumV);
|
|
@@ -822,7 +823,7 @@ JpcFlowTabSrv.prototype.createNew = function() {
|
|
accAutoHeightAmt += adHocAutoHeightAmt;
|
|
accAutoHeightAmt += adHocAutoHeightAmt;
|
|
// 控制阈值,超过阈值则强制退出,防止死循环
|
|
// 控制阈值,超过阈值则强制退出,防止死循环
|
|
threshold++;
|
|
threshold++;
|
|
- if (threshold > 1000) {
|
|
|
|
|
|
+ if (threshold > PAGESIZE_THRESHOLD) {
|
|
console.log('Hey! There may be a dead loop here!!!');
|
|
console.log('Hey! There may be a dead loop here!!!');
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
@@ -1244,8 +1245,8 @@ JpcFlowTabSrv.prototype.createNew = function() {
|
|
if (contentValuesIdx[rowIdx][2] >= 0) {
|
|
if (contentValuesIdx[rowIdx][2] >= 0) {
|
|
const psv = JpcFieldHelper.getValue(page_sum_data_fields[di], contentValuesIdx[rowIdx][2]);
|
|
const psv = JpcFieldHelper.getValue(page_sum_data_fields[di], contentValuesIdx[rowIdx][2]);
|
|
if (psv) {
|
|
if (psv) {
|
|
- rowGrandTotal[di] = bc.add(rowGrandTotal[di] ? rowGrandTotal[di] : 0 , parseFloat(psv));
|
|
|
|
- //rowGrandTotal[di] = rowGrandTotal[di] + parseFloat(parseFloat(psv).toFixed(precisionAmt));
|
|
|
|
|
|
+ rowGrandTotal[di] = bc.add(rowGrandTotal[di] ? rowGrandTotal[di] : 0, parseFloat(psv));
|
|
|
|
+ // rowGrandTotal[di] = rowGrandTotal[di] + parseFloat(parseFloat(psv).toFixed(precisionAmt));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -1514,7 +1515,7 @@ function push_cell(pageCellObj, cell, cellIdx) {
|
|
pageCellObj[key] = [];
|
|
pageCellObj[key] = [];
|
|
}
|
|
}
|
|
const cellArr = pageCellObj[key];
|
|
const cellArr = pageCellObj[key];
|
|
- cellArr.push({ cellIdx: cellIdx, cell: cell });
|
|
|
|
|
|
+ cellArr.push({ cellIdx, cell });
|
|
}
|
|
}
|
|
|
|
|
|
function prepareAutoHeightCells(prepareObj, cellItem, cellIdx, cellsArr) {
|
|
function prepareAutoHeightCells(prepareObj, cellItem, cellIdx, cellsArr) {
|
|
@@ -1584,7 +1585,7 @@ function combineAutoHeightCells(prepareObj, page, controls) {
|
|
rst.push(sameColCells[i].cellIdx); // 记下Cell的位置,在函数外消除
|
|
rst.push(sameColCells[i].cellIdx); // 记下Cell的位置,在函数外消除
|
|
// 如果到了最后一条数据,得判断firstMergeCell是否满格(即数据是满的,有可能有些格数据也有折行但不是自动行高判断指标)
|
|
// 如果到了最后一条数据,得判断firstMergeCell是否满格(即数据是满的,有可能有些格数据也有折行但不是自动行高判断指标)
|
|
// 不满格的cell的Vertical强制设置为 'center'
|
|
// 不满格的cell的Vertical强制设置为 'center'
|
|
- if (i === sameColCells.length - 1 && validValueAmt !== fullValidValueAmt && (fullValidValueAmt / validValueAmt > 2.5) ) {
|
|
|
|
|
|
+ if (i === sameColCells.length - 1 && validValueAmt !== fullValidValueAmt && (fullValidValueAmt / validValueAmt > 2.5)) {
|
|
firstMergeCell[JV.PROP_CONTROL][JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_VERTICAL_EXCEL]] = 'center';
|
|
firstMergeCell[JV.PROP_CONTROL][JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_VERTICAL_EXCEL]] = 'center';
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|