Jelajahi Sumber

BUG#2550/2551/2552/2553/2554

TonyKang 6 tahun lalu
induk
melakukan
1bc8a346bf

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

@@ -1115,6 +1115,7 @@ JpcFlowTabSrv.prototype.createNew = function(){
                 }
                 me.pageSumValLst.push(rowGrandTotal);
                 //grouping content
+                let grpCntIdx = 0;
                 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++) {
@@ -1130,10 +1131,11 @@ JpcFlowTabSrv.prototype.createNew = function(){
                                         }
                                     }
                                 }
-                                let lineRst = me.outputTabGrpLine(band, grp_line, page, contentValuesIdx[rowIdx], contentValuesIdx.length, rowIdx, 1, 0, unitFactor, true, controls, multiColIdx);
+                                let lineRst = me.outputTabGrpLine(band, grp_line, page, contentValuesIdx[rowIdx], contentValuesIdx.length, rowIdx, 1, 0, unitFactor, true, controls, multiColIdx, grpCntIdx, $CURRENT_RPT);
                                 rst = rst.concat(lineRst);
                             }
                         }
+                        grpCntIdx++;
                     }
                 }
             }
@@ -1295,7 +1297,7 @@ JpcFlowTabSrv.prototype.createNew = function(){
             return rst;
         }
     };
-    JpcFlowTabResult.outputTabGrpLine = function (band, grp_line, page, grpValueIdx, rows, rowIdx, cols, colIdx, unitFactor, isRow, controls, multiColIdx) {
+    JpcFlowTabResult.outputTabGrpLine = function (band, grp_line, page, grpValueIdx, rows, rowIdx, cols, colIdx, unitFactor, isRow, controls, multiColIdx, grpCntIdx, $CURRENT_RPT) {
         let me = this, rst = [];
         if (grp_line[JV.PROP_GROUP_SUM_KEYS]) {
             let segIdx = JpcCommonHelper.getSegIdxByPageIdx(page, me.page_seg_map);
@@ -1309,7 +1311,10 @@ JpcFlowTabSrv.prototype.createNew = function(){
         }
         if (grp_line[JV.PROP_TEXTS]) {
             for (let txt of grp_line[JV.PROP_TEXTS]) {
+                me.checkGrpTxtOutEvent(JV.RUN_TYPE_BEFORE_GROUP_TEXT_OUT, txt, grpCntIdx, $CURRENT_RPT);
                 rst.push(JpcTextHelper.outputText(txt, band, unitFactor, rows, rowIdx, cols, colIdx, me.multiCols, multiColIdx));
+                // me.combinePageCells(rst, verticalCombinePos, horizonCombinePos);
+                // 可能会有一个After,但意义不大,用不着
             }
         }
         if (grp_line[JV.PROP_DISCRETE_FIELDS]) {
@@ -1321,6 +1326,24 @@ JpcFlowTabSrv.prototype.createNew = function(){
         // console.log(rst);
         return rst;
     };
+    JpcFlowTabResult.checkGrpTxtOutEvent = function ($RUN_TYPE, $TEXT, $TIMES, $CURRENT_RPT) {
+        if ($CURRENT_RPT.formulas) {
+            for (let execFmlIdx = 0; execFmlIdx < $CURRENT_RPT.formulas.length; execFmlIdx++) {
+                if ($CURRENT_RPT.formulas[execFmlIdx][JV.PROP_RUN_TYPE] === $RUN_TYPE) {
+                    let expression = $CURRENT_RPT.formulas[execFmlIdx][JV.PROP_EXPRESSION];
+                    if (expression) {
+                        let $ME = $CURRENT_RPT.formulas[execFmlIdx];
+                        try {
+                            eval(expression);
+                        } catch (ex) {
+                            console.log(ex);
+                        }
+                    }
+                }
+            }
+        }
+    };
+
     JpcFlowTabResult.commonTabRestOutput = function(dataObj, page, segIdx, bands, band, unitFactor, tab, multiColIdx){
         let me = this, rst = [];
         if (tab[JV.PROP_TEXT]) {

+ 2 - 0
public/web/rpt_value_define.js

@@ -210,6 +210,8 @@ const JV = {
     RUN_TYPE_BEFORE_COMBINE: "before_combine",
     RUN_TYPE_AFTER_COMBINE: "after_combine",
 
+    RUN_TYPE_BEFORE_GROUP_TEXT_OUT: "before_group_text_output",
+
     PAGE_STATUS: ["EveryPage","FirstPage", "LastPage", "SegmentStart", "SegmentEnd", "Group", "CrossRowEnd", "CrossColEnd"],
 
     CONTROL_PROPS: ["Shrink", "ShowZero", "Horizon", "Vertical", "Wrap", "VerticalForExcel", "ShrinkFirst", "CloseOutput"],

+ 33 - 0
test/unit/reports/rpt_cfg.js

@@ -414,6 +414,39 @@ module.exports = {
             "Wrap" : "false"
         },
         {
+            "ID" : "NewContent_Left",
+            "CfgDispName" : "正文内容(新)",
+            "Shrink" : "T",
+            "ShowZero" : "F",
+            "Horizon" : "left",
+            "Vertical" : "center",
+            "Wrap" : "F",
+            "ShrinkFirst" : "F",
+            "CloseOutput" : "T"
+        },
+        {
+            "ID" : "NewContent_Right",
+            "CfgDispName" : "正文内容(新)_右",
+            "Shrink" : "T",
+            "ShowZero" : "F",
+            "Horizon" : "right",
+            "Vertical" : "center",
+            "Wrap" : "F",
+            "ShrinkFirst" : "F",
+            "CloseOutput" : "T"
+        },
+        {
+            "ID" : "NewContent_Center",
+            "CfgDispName" : "正文内容(新)_中",
+            "Shrink" : "T",
+            "ShowZero" : "F",
+            "Horizon" : "center",
+            "Vertical" : "center",
+            "Wrap" : "F",
+            "ShrinkFirst" : "F",
+            "CloseOutput" : "T"
+        },
+        {
             "ID" : "Currency",
             "CfgDispName" : "金额型",
             "Shrink" : "T",

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

@@ -35,7 +35,7 @@ let demoPrjId = - 1;
 // let demoRptId = 450; //09
 // let demoRptId = 704; //05
 // let demoRptId = 626; //06
-let demoRptId = 743; //09-1
+// let demoRptId = 743; //09-1
 // let demoRptId = 452; //04
 // let demoRptId = 612; //09-3
 // let demoRptId = 530; //封2
@@ -54,6 +54,9 @@ let demoRptId = 743; //09-1
 // let demoRptId = 1007; //qa 重庆2018 A01
 // let demoRptId = 475; //计日工
 // let demoRptId = 551; //表05
+
+let demoRptId = 510;
+
 let pagesize = "A4";
 
 //288: 11-2表(新)
@@ -68,7 +71,7 @@ let userId_me = "5b6a60b1c4ba33000dd417c0"; //我的
 // demoPrjId = 2260; //QA:
 // demoPrjId = 5029; //
 // demoPrjId = 5029; //项目名称过长
-demoPrjId = 8522; //
+demoPrjId = 7542; //
 // demoPrjId = 4107; //UAT:
 //*/
 let userId_Dft = userId_Leng;
@@ -106,9 +109,9 @@ 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(rawDataObj, "D:/GitHome/ConstructionCost/tmp/rptTplRawDataAfterCacl_测试模板.jsp");
                     // fsUtil.writeObjToFile(tplData, "D:/GitHome/ConstructionCost/tmp/rptTplAssembledData_测试模板.jsp");
                     //it's time to build the report!!!
                     let printCom = JpcEx.createNew();
@@ -121,7 +124,7 @@ test('测试 - 测试模板啦: ', function (t) {
                     let customizeCfg = {"fillZero": true};
                     let pageRst = printCom.outputAsSimpleJSONPageArray(rptTpl, tplData, 1, maxPages, defProperties, customizeCfg);
                     if (pageRst) {
-                        // fsUtil.writeObjToFile(pageRst, "D:/GitHome/ConstructionCost/tmp/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);
                         // });