Переглянути джерело

计算式新增2个常用函数 + 增强代码强壮性

TonyKang 3 роки тому
батько
коміт
fc8e407f3a

+ 7 - 2
modules/reports/rpt_component/jpc_flow_tab.js

@@ -384,8 +384,13 @@ JpcFlowTabSrv.prototype.createNew = function(){
                         let value = JpcFieldHelper.getValue(data_field, theRecIdx);
                         let area = JpcAreaHelper.outputArea(tab_field[JV.PROP_AREA], band, 1, 1, 0, 1, 0, 1, 0, false, false);
                         if (value !== null && value !== undefined) {
-                            value = value.replace('\t', '');
-                            value = value.replace(reg1, '|').replace(reg2, '|').replace(reg3, '|').replace(reg4, '|');
+                            if (typeof value === "string") {
+                                value = value.replace('\t', '');
+                                value = value.replace(reg1, '|').replace(reg2, '|').replace(reg3, '|').replace(reg4, '|');
+                            } else {
+                                // console.log(`has other value: ${value}`);
+                                value = '' + value;
+                            }
                         } else {
                             value = '';
                         }

+ 28 - 1
modules/reports/rpt_component/jpc_rte.js

@@ -4,7 +4,7 @@
 let strUtil = require('../../../public/stringUtil');
 const scMathUtil = require('../../../public/scMathUtil').getUtil();
 let JV = require('./jpc_value_define');
-let JE = {
+const JE = {
     $STR_UTIL: strUtil,
     $SC_MATH_UTIL: scMathUtil,
     F: function(fID, $CURRENT_RPT) {
@@ -173,6 +173,33 @@ let JE = {
                 dataObj[field.DataNodeName][field.DataSeq][dataObj[field.DataNodeName][field.DataSeq].length] = newValue;
             }
         }
+    },
+    alignFieldDecimal: function(sourceID, destID) {
+        // 把source指标的精度align到dest
+        const me = JE;
+        let sourceField = null;
+        if (isNaN(parseInt(sourceID))) {
+            sourceField = sourceID;
+        } else {
+            sourceField = me.F(sourceID,$CURRENT_RPT);
+        }
+        let destField = null;
+        if (isNaN(parseInt(destID))) {
+            destField = destID;
+        } else {
+            destField = me.F(destID,$CURRENT_RPT);
+        }
+        if (sourceField[JV.PROP_PRECISION]) {
+            destField[JV.PROP_PRECISION] = sourceField[JV.PROP_PRECISION];
+            destField[JV.PROP_FIXED_PRECISION_AMT] = sourceField[JV.PROP_FIXED_PRECISION_AMT];
+        }
+    },
+    batchIniFields: function(IDArr) {
+        // 批处理查找指标
+        const me = JE;
+        for (let idxF = 0; idxF < IDArr.length; idxF++) {
+            IDArr[idxF] = me.F(IDArr[idxF],$CURRENT_RPT);
+        }
     }
 };
 

+ 1 - 1
web/building_saas/report/js/rpt_print.js

@@ -279,7 +279,7 @@ function buildText(destRst, cell, font, control, offsetX, offsetY, adjustY, canv
             let innerDftFontHeight = (dftFontHeight * 3 / 4); //SVG的字体与canvas的字体大小的切换, 不用考虑取整
             if (control) {
                 if (control[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_VERTICAL]] === "top") {
-                    y = innerArea[JV.IDX_TOP] + JV.OUTPUT_OFFSET[JV.IDX_TOP] + orgFontHeight;
+                    y = innerArea[JV.IDX_TOP] + JV.OUTPUT_OFFSET[JV.IDX_TOP];
                 } else if (control[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_VERTICAL]] === "bottom") {
                     y = innerArea[JV.IDX_BOTTOM] - JV.OUTPUT_OFFSET[JV.IDX_BOTTOM];
                 } else if (control[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_VERTICAL]] === "center") {