TonyKang il y a 6 ans
Parent
commit
bd13d99f9f

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

@@ -911,7 +911,7 @@ JpcFlowTabSrv.prototype.createNew = function(){
                     for (let i = 0; i < tab_fields.length; i++) {
                         let tab_field = tab_fields[i];
                         if (!(tab_field[JV.PROP_HIDDEN])) {
-                            rst.push(me.outputTabField(band, tab_field, null, -1, -1, maxRec, rowIdx, 1, 0, unitFactor, true, controls, 0));
+                            rst.push(me.outputTabField(band, tab_field, null, -1, -1, maxRec, rowIdx, 1, 0, unitFactor, false, controls, 0));
                         }
                     }
                 }
@@ -981,11 +981,11 @@ JpcFlowTabSrv.prototype.createNew = function(){
                         }
                         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));
+                                rst.push(me.outputTabField(band, tab_field, data_field, contentValuesIdx[rowIdx][2], -1, contentValuesIdx.length, rowIdx, 1, 0, unitFactor, false, controls, multiColIdx));
                             } else if (contentValuesIdx[rowIdx][1] === JV.DISPLAY_VAL_TYPE_AUTO_HEIGHT) {
                                 if (contentValuesIdx[rowIdx][4] === 1) {
                                     //等效于普通输出
-                                    rst.push(me.outputTabField(band, tab_field, data_field, contentValuesIdx[rowIdx][2], -1, contentValuesIdx.length, rowIdx, 1, 0, unitFactor, true, controls, multiColIdx));
+                                    rst.push(me.outputTabField(band, tab_field, data_field, contentValuesIdx[rowIdx][2], -1, contentValuesIdx.length, rowIdx, 1, 0, unitFactor, false, controls, multiColIdx));
                                 } else {
                                     //这里需要做些style调整(中间的那些横杠线去掉)
                                     let cellItem = me.outputAutoHeightTabField(band, tab_field, data_field, contentValuesIdx[rowIdx], contentValuesIdx.length, rowIdx, 1, 0, unitFactor, true, controls, multiColIdx);
@@ -1038,7 +1038,7 @@ JpcFlowTabSrv.prototype.createNew = function(){
                             }
                             if (!(tab_fieldex[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_fieldex, data_fieldex, contentValuesIdx[rowIdx][2], -1, contentValuesIdx.length, rowIdx, 1, 0, unitFactor, true, controls, multiColIdx));
+                                    rst.push(me.outputTabField(band, tab_fieldex, data_fieldex, contentValuesIdx[rowIdx][2], -1, contentValuesIdx.length, rowIdx, 1, 0, unitFactor, false, controls, multiColIdx));
                                 }
                             }
                         }
@@ -1164,7 +1164,7 @@ JpcFlowTabSrv.prototype.createNew = function(){
                     }
                     //备注:考虑到有时候会出现没有数据可合计的scenario,得有容错处理
                     let cellItem = JpcCommonOutputHelper.createCommonOutput(tab_fields[i], sumVal, controls);
-                    cellItem[JV.PROP_AREA] = JpcAreaHelper.outputArea(tab_fields[i][JV.PROP_AREA], band, unitFactor, 1, 0, 1, 0, me.multiCols, 0, true, false);
+                    cellItem[JV.PROP_AREA] = JpcAreaHelper.outputArea(tab_fields[i][JV.PROP_AREA], band, unitFactor, 1, 0, 1, 0, me.multiCols, 0, false, false);
                     rst.push(cellItem);
                 }
                 rst = rst.concat(me.commonTabRestOutput(dataObj, page, segIdx, bands, band, unitFactor, tab, 0));
@@ -1194,7 +1194,7 @@ JpcFlowTabSrv.prototype.createNew = function(){
                         }
                     }
                     let cellItem = JpcCommonOutputHelper.createCommonOutput(tab_fields[i], me.pageSumValLst[page - 1][i], controls);
-                    cellItem[JV.PROP_AREA] = JpcAreaHelper.outputArea(tab_fields[i][JV.PROP_AREA], band, unitFactor, 1, 0, 1, 0, me.multiCols, 0, true, false);
+                    cellItem[JV.PROP_AREA] = JpcAreaHelper.outputArea(tab_fields[i][JV.PROP_AREA], band, unitFactor, 1, 0, 1, 0, me.multiCols, 0, false, false);
                     rst.push(cellItem);
                 }
                 rst = rst.concat(me.commonTabRestOutput(dataObj, page, segIdx, bands, band, unitFactor, tab, 0));
@@ -1205,7 +1205,7 @@ JpcFlowTabSrv.prototype.createNew = function(){
     JpcFlowTabResult.outputTabField = function (band, tab_field, data_field, valueIdx, serialIdx, rows, rowIdx, cols, colIdx, unitFactor, isRow, controls, multiColIdx) {
         let me = this,
             rst = JpcCommonOutputHelper.createCommonOutput(tab_field, JpcFieldHelper.getValue(data_field, valueIdx), controls);
-        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, isRow, false);
         return rst;
     };
     JpcFlowTabResult.outputAutoHeightTabField = function (band, tab_field, data_field, contentValInfo, rows, rowIdx, cols, colIdx, unitFactor, isRow, controls, multiColIdx) {

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

@@ -64,7 +64,7 @@ let JE = {
         }
     },
     getFieldValue: function (field, dataObj, valIdx, newVal) {
-        let rst = newVal;
+        let rst = null;
         if (field.DataNodeName === "NA") {
             if (!field[JV.PROP_AD_HOC_DATA]) {
                 field[JV.PROP_AD_HOC_DATA] = [];
@@ -91,6 +91,7 @@ let JE = {
                 }
             }
         }
+        if (rst === null || rst === undefined) rst = newVal;
         return rst;
     },
     removeFieldValue: function (field, dataObj, valIdx) {

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

@@ -40,7 +40,9 @@ let demoPrjId = - 1;
 // let demoRptId = 36; //5.1
 // let demoRptId = 49; //5.5
 // let demoRptId = 66; //5.4
-let demoRptId = 67; //21-2
+// let demoRptId = 67; //21-2
+// let demoRptId = 31; //21-1
+let demoRptId = 37; //5.2.1 计日工劳务
 
 let pagesize = "A4";
 //288: 11-2表(新)
@@ -56,8 +58,9 @@ let userId_Leng = "5c3ffa9aa0a92732f41216e0"; //小冷User Id (养护的)
 // demoPrjId = 313; //PROD:
 // demoPrjId = 455; //PROD:
 // demoPrjId = 776; //PROD:
-demoPrjId = 671; //PROD:
-// demoPrjId = 815; //PROD:
+// demoPrjId = 671; //PROD:
+// demoPrjId = 653; //PROD:
+demoPrjId = 756; //PROD:
 // demoPrjId = 4107; //UAT:
 //*/
 let userId_Dft = userId_Leng;
@@ -87,13 +90,14 @@ test('测试 - 测试模板啦: ', function (t) {
         // filter.push('ration');  //临时用
         // filter.push('ration_coe'); //临时用2
         // filter.push('projectGLJ'); //临时用3
-        console.log(filter);
+        filter.push('calc_program'); //临时用4
+        // console.log(filter);
         //正常应该根据报表模板定义的数据类型来请求数据
         rptTplDataFacade.prepareProjectData(userId_Dft, demoPrjId, filter, function (err, msg, rawDataObj) {
             if (!err) {
                 try {
                     let dt = new Date();
-                    // fsUtil.writeObjToFile(rawDataObj, "D:/GitHome/YangHuCost/tmp/rptTplRawDataObject_测试模板.jsp");
+                    fsUtil.writeObjToFile(rawDataObj, "D:/GitHome/YangHuCost/tmp/rptTplRawDataObject_测试模板.jsp");
                     let tplData = rptDataUtil.assembleData(rawDataObj);
                     // fsUtil.writeObjToFile(rawDataObj, "D:/GitHome/YangHuCost/tmp/rptTplRawDataAfterCacl_测试模板.jsp");
                     // fsUtil.writeObjToFile(tplData, "D:/GitHome/YangHuCost/tmp/rptTplAssembledData_测试模板.jsp");

+ 8 - 4
web/building_saas/report/js/jpc_output.js

@@ -139,9 +139,12 @@ let JpcCanvasOutput = {
                 }
             };
             inner_setupControl(area, dftFontHeight, output);
-            let w = area[JV.IDX_RIGHT] - JV.OUTPUT_OFFSET[JV.OFFSET_IDX_RIGHT] - area[JV.IDX_LEFT] - JV.OUTPUT_OFFSET[JV.OFFSET_IDX_RIGHT];
+            let validAreaTxtWidth = area[JV.IDX_RIGHT] - JV.OUTPUT_OFFSET[JV.OFFSET_IDX_RIGHT] - area[JV.IDX_LEFT] - JV.OUTPUT_OFFSET[JV.OFFSET_IDX_LEFT];
+            //let validAreaTxtHeight = area[JV.IDX_BOTTOM] - JV.OUTPUT_OFFSET[JV.OFFSET_IDX_BOTTOM] - area[JV.IDX_TOP] - JV.OUTPUT_OFFSET[JV.OFFSET_IDX_TOP];
+            let validTxtLines = Math.floor((area[JV.IDX_BOTTOM] - area[JV.IDX_TOP]) / (dftFontHeight + JV.OUTPUT_OFFSET[JV.OFFSET_IDX_BOTTOM] + JV.OUTPUT_OFFSET[JV.OFFSET_IDX_TOP] + 4));
             if ( parseInt(font.FontAngle) !== 0) {
-                w = area[JV.IDX_BOTTOM] - JV.OUTPUT_OFFSET[JV.OFFSET_IDX_BOTTOM] - area[JV.IDX_TOP] - JV.OUTPUT_OFFSET[JV.OFFSET_IDX_TOP];
+                validAreaTxtWidth = area[JV.IDX_BOTTOM] - JV.OUTPUT_OFFSET[JV.OFFSET_IDX_BOTTOM] - area[JV.IDX_TOP] - JV.OUTPUT_OFFSET[JV.OFFSET_IDX_TOP];
+                validTxtLines = Math.floor((area[JV.IDX_RIGHT] - area[JV.IDX_LEFT]) / (dftFontHeight + JV.OUTPUT_OFFSET[JV.OFFSET_IDX_RIGHT] + JV.OUTPUT_OFFSET[JV.OFFSET_IDX_LEFT] + 4));
             }
 
             function private_drawUnderline() {
@@ -194,13 +197,14 @@ let JpcCanvasOutput = {
             } else if (font.FontAngle === JV.ANTI_VERTICAL_ANGLE) {
                 ctx.rotate(-Math.PI/2);
             }
-            if (w >= ctx.measureText(val).width || (control && control.Shrink !== 'T') ) {
+            if (validAreaTxtWidth >= ctx.measureText(val).width ||
+                (control && control.Shrink !== 'T' && validTxtLines < private_splitString(val, validAreaTxtWidth, ctx)) ) {
                 ctx.fillText(val, 0, 0);
             } else {
                 while (true) {
                     let lines = Math.floor((area[JV.IDX_BOTTOM] - area[JV.IDX_TOP]) / (dftFontHeight + JV.OUTPUT_OFFSET[JV.OFFSET_IDX_BOTTOM] + JV.OUTPUT_OFFSET[JV.OFFSET_IDX_TOP] + 4));
                     lines = (lines === 0)?1:lines;
-                    let actLines = private_splitString(val, w, ctx);
+                    let actLines = private_splitString(val, validAreaTxtWidth, ctx);
                     if (actLines.length > lines && dftFontHeight >= 6) {
                         dftFontHeight--;
                         ctx.font = "" + dftFontHeight + "px " + font[JV.PROP_NAME];