TonyKang 5 лет назад
Родитель
Сommit
d3e450e122

+ 34 - 0
modules/reports/rpt_component/jpc_rte.js

@@ -83,6 +83,40 @@ let JE = {
             dataObj[field.DataNodeName][field.DataSeq][valIdx] = newValue;
         }
     },
+    getFieldValueArray: function(field, dataObj) {
+        let rst = null;
+        if (field.DataNodeName === 'NA') {
+            if (!field[JV.PROP_AD_HOC_DATA]) {
+                field[JV.PROP_AD_HOC_DATA] = [];
+            }
+            rst = field[JV.PROP_AD_HOC_DATA];
+        } else {
+            if (!field.DataNodeName) {
+                // that means this is a self-defined discrete field!
+                field.DataNodeName = JV.DATA_DISCRETE_DATA;
+                field.DataSeq = dataObj[JV.DATA_DISCRETE_DATA];
+                dataObj[JV.DATA_DISCRETE_DATA].push([]);
+            }
+            rst = dataObj[field.DataNodeName][field.DataSeq];
+        }
+        if (rst === null || rst === undefined) rst = [];
+        return rst;
+    },
+    setFieldValueArray: function(field, dataObj, newArr) {
+        if (newArr instanceof Array) {
+            if (field.DataNodeName === 'NA') {
+                field[JV.PROP_AD_HOC_DATA] = newArr;
+            } else {
+                if (!field.DataNodeName) {
+                    // that means this is a self-defined discrete field!
+                    field.DataNodeName = JV.DATA_DISCRETE_DATA;
+                    field.DataSeq = dataObj[JV.DATA_DISCRETE_DATA].length;
+                    dataObj[JV.DATA_DISCRETE_DATA].push([]);
+                }
+                dataObj[field.DataNodeName][field.DataSeq] = newArr;
+            }
+        }
+    },
     getFieldValue: function (field, dataObj, valIdx, newVal) {
         let rst = null;
         if (field.DataNodeName === "NA") {

+ 11 - 8
test/unit/reports/test_rpt_test_template.js

@@ -54,8 +54,9 @@ let demoPrjId = - 1;
 // let demoRptId = 1007; //qa 重庆2018 A01
 // let demoRptId = 475; //计日工
 // let demoRptId = 551; //表05
+// let demoRptId = 1104; //内蒙2017 表09
 
-let demoRptId = 1035;
+let demoRptId = 1104;
 
 let pagesize = "A4";
 
@@ -71,10 +72,10 @@ let userId_me = "5b6a60b1c4ba33000dd417c0"; //我的
 // demoPrjId = 2260; //QA:
 // demoPrjId = 5029; //
 // demoPrjId = 5029; //项目名称过长
-demoPrjId = 10807; //
+demoPrjId = 10430; //
 // demoPrjId = 4107; //UAT:
 //*/
-let userId_Dft = userId_me;
+let userId_Dft = userId_Leng;
 // let userId_Dft = "5a025c4c15074d134c2b9689";
 /*/
  let userId_Dft = "595328da1934dc327cad08eb";
@@ -89,9 +90,11 @@ import rpt_pdf_util from "../../../modules/reports/util/rpt_pdf_util";
 
 let fs = require('fs');
 //设置Date Format函数
-fs.readFile(__dirname.slice(0, __dirname.length - 18) + '/public/web/date_util.js', 'utf8', 'r', function (err, data) {
-    eval(data);
-});
+// fs.readFile(__dirname.slice(0, __dirname.length - 18) + '/public/web/date_util.js', 'utf8', 'r', function (err, data) {
+//     eval(data);
+// });
+//备注: 经过测试nodejs 8.9.3版本不支持eval的方式修改prototype,为兼容考虑,把方法调整到stringUtil文件里
+require('../../../public/stringUtil').setupDateFormat();
 
 test('测试 - 测试模板啦: ', function (t) {
     rptTplFacade.getRptTemplate(demoRptId).then(function(rptTpl) {
@@ -109,7 +112,7 @@ test('测试 - 测试模板啦: ', function (t) {
         rptTplDataFacade.prepareProjectData(userId_Dft, demoPrjId, filter, function (err, msg, rawDataObj) {
             if (!err) {
                 try {
-                    fsUtil.writeObjToFile(rawDataObj, "D:/GitHome/ConstructionCost/tmp/rptTplRawDataObject_测试模板.jsp");
+                    // fsUtil.writeObjToFile(rawDataObj, "D:/GitHome/ConstructionCost/tmp/rptTplRawDataObject_测试模板.jsp");
                     let tplData = rptDataUtil.assembleData(rawDataObj);
                     // fsUtil.writeObjToFile(rawDataObj, "D:/GitHome/ConstructionCost/tmp/rptTplRawDataAfterCacl_测试模板.jsp");
                     // fsUtil.writeObjToFile(tplData, "D:/GitHome/ConstructionCost/tmp/rptTplAssembledData_测试模板.jsp");
@@ -124,7 +127,7 @@ test('测试 - 测试模板啦: ', function (t) {
                     let customizeCfg = {"fillZero": true};
                     let pageRst = printCom.outputAsSimpleJSONPageArray(rptTpl, tplData, 1, maxPages, defProperties, customizeCfg);
                     if (pageRst) {
-                        fsUtil.writeObjToFile(pageRst, "D:/Temp/testBuiltPageResult_测试模板.jsp");
+                        // fsUtil.writeObjToFile(pageRst, "D:/Temp/testBuiltPageResult_测试模板.jsp");
                         // rpt_xl_util.exportExcel(pageRst, pagesize, "local_test_rpt_excel", true, null, null, function(uuidName){
                         //     console.log("excel uuid: " + uuidName);
                         // });