فهرست منبع

code sync for 内蒙古养护估算

TonyKang 4 سال پیش
والد
کامیت
1c6298885d

+ 19 - 0
modules/reports/controllers/rpt_tpl_controller.js

@@ -17,6 +17,7 @@ const rttFacade = require("../facade/rpt_tpl_tree_node_facade");
 const CompilationModel = require("../../users/models/compilation_model");
 const config = require("../../../config/config.js");
 const title = config[process.env.NODE_ENV].title?config[process.env.NODE_ENV].title:"纵横公路养护云造价";
+let Rpt_Cfg_Mdl = mongoose.model('rpt_cfg');
 
 //统一回调函数
 let callback = function(req, res, err, message, data){
@@ -24,6 +25,24 @@ let callback = function(req, res, err, message, data){
 };
 
 let mExport = {
+    getAvailablePageSize(req, res) {
+        let rst = [];
+        Rpt_Cfg_Mdl.findOne({userId: "Administrator"}, '-_id').lean().exec(function(err, cfgs){
+            if (cfgs) {
+                if (cfgs.hasOwnProperty('papers')) {
+                    // console.log(cfgs.papers);
+                    rst = rst.concat(cfgs.papers);
+                } else {
+                    rst.push('A4');
+                    rst.push('A3');
+                }
+            } else {
+                rst.push('A4');
+                rst.push('A3');
+            }
+            callback(req,res, false, "", rst);
+        })
+    },
     getCustomerCfg(req, res) {
         let params = JSON.parse(req.body.params),
             userId = params.userId,

+ 1 - 0
modules/reports/routes/rpt_tpl_router.js

@@ -31,6 +31,7 @@ module.exports = function (app) {
     rptTplRouter.post('/copyRptTpl', reportTplController.copyRptTpl);
     rptTplRouter.post('/getCompilationList', reportTplController.getCompilationList);
     rptTplRouter.post('/getCustomizeCfg', reportTplController.getCustomerCfg);
+    rptTplRouter.post('/getAvailablePageSize', reportTplController.getAvailablePageSize);
     rptTplRouter.post('/saveCustomerCfg', reportTplController.saveCustomerCfg);
 
     rptTplRouter.post('/getUserRptCfg', reportCfgController.getReportUserCfg);

+ 1 - 1
public/web/rpt_value_define.js

@@ -289,7 +289,7 @@ const JV = {
     SIZE_16K: [7.75, 10.75],
     SIZE_EXECUTIVE: [7.25, 10.5],
 
-    OUTPUT_OFFSET: [2,2,1,3],
+    OUTPUT_OFFSET: [1,1,1,1],
     OFFSET_IDX_LEFT: 0,
     OFFSET_IDX_RIGHT: 1,
     OFFSET_IDX_TOP: 2,

+ 1 - 1
web/building_saas/report/html/rpt_main.html

@@ -56,7 +56,7 @@
                                 </div>
                                 <div class="btn-group" role="group">
                                     <button id="btnRptPageSize" type="button" class="btn btn-outline-primary btn-sm dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">A4</button>
-                                    <div class="dropdown-menu" aria-labelledby="btnGroupDrop2">
+                                    <div class="dropdown-menu" aria-labelledby="btnGroupDrop2" id="divRptPageSize">
                                         <a class="dropdown-item" id="hrefRptPageSize" style="cursor:pointer" onclick="zTreeOprObj.changePageSize(this)">A3</a>
                                         <!-- 
                                         <a class="dropdown-item" id="hrefRptPageSize_A5" style="cursor:pointer" onclick="zTreeOprObj.changePageSize(this)">A5</a>

+ 14 - 1
web/building_saas/report/js/jpc_output.js

@@ -24,6 +24,11 @@ let JpcCanvasOutput = {
         let me = this;
         let ctx = canvas.getContext("2d");
         let floatReg = /^(-?\d+)(\.\d+)?$/;
+        let strReplaceReg1 = new RegExp('\n\r', 'gm'),
+            strReplaceReg2 = new RegExp('\r\n', 'gm'),
+            strReplaceReg3 = new RegExp('\n', 'gm'),
+            strReplaceReg4 = new RegExp('\r', 'gm')
+        ;
 
         function private_setupAreaH(area, type, fontAngle, dftFontHeight, outputPoint) {
             let lType = type;
@@ -253,6 +258,13 @@ let JpcCanvasOutput = {
             }
             ctx.restore();
         }
+        function _preHandleSpliter(orgVal) {
+            let rst = orgVal;
+            if (rst !== null && rst !== '') {
+                rst = rst.replace(strReplaceReg1, '|').replace(strReplaceReg2, '|').replace(strReplaceReg3, '|').replace(strReplaceReg4, '|');
+            }
+            return rst;
+        }
         function _splitValues(cell, control, orgValues, ctx2D) {
             //根据control的 自动折行 及 缩放优先 这俩属性 来分解cell value
             if (control[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_WRAP]] === 'T' && control[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_SHRINK_FIRST]] !== 'T') {
@@ -275,7 +287,8 @@ let JpcCanvasOutput = {
         }
         function private_drawCellText(cell, fonts, controls) {
             if (cell[JV.PROP_VALUE] !== null && cell[JV.PROP_VALUE] !== undefined) {
-                let values = ("" + cell[JV.PROP_VALUE]).split('|');
+                // let values = ("" + cell[JV.PROP_VALUE]).split('|');
+                let values = _preHandleSpliter("" + cell[JV.PROP_VALUE]).split('|');
                 let font = null;
                 if (typeof cell[JV.PROP_FONT] === "string") {
                     font = fonts[cell[JV.PROP_FONT]];

+ 15 - 1
web/building_saas/report/js/rpt_jspdf.js

@@ -34,6 +34,11 @@ let JpcJsPDFHelper = {
         let me = this;
         let offsetX= 0;
         let offsetY= 0;
+        let strReplaceReg1 = new RegExp('\n\r', 'gm'),
+            strReplaceReg2 = new RegExp('\r\n', 'gm'),
+            strReplaceReg3 = new RegExp('\n', 'gm'),
+            strReplaceReg4 = new RegExp('\r', 'gm')
+        ;
         let newName = pdfName;
         let pageObj = pageData;
         let paperSizeIdx = JV.PAGES_SIZE_STR.indexOf(paperSize);
@@ -126,6 +131,14 @@ let JpcJsPDFHelper = {
             }
         }
 
+        function _preHandleSpliter(orgVal) {
+            let rst = orgVal;
+            if (rst !== null && rst !== '') {
+                rst = rst.replace(strReplaceReg1, '|').replace(strReplaceReg2, '|').replace(strReplaceReg3, '|').replace(strReplaceReg4, '|');
+            }
+            return rst;
+        }
+
         function _splitValues(cell, control, orgValues, doc) {
             //根据control的 自动折行 及 缩放优先 这俩属性 来分解cell value
             if (control[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_WRAP]] === 'T' && control[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_SHRINK_FIRST]] !== 'T') {
@@ -149,7 +162,8 @@ let JpcJsPDFHelper = {
 
         function private_drawCellText(doc, ctx, cell, fonts, controls) {
             if (cell[JV.PROP_VALUE] !== undefined && cell[JV.PROP_VALUE] !== null) {
-                let values = ("" + cell[JV.PROP_VALUE]).split('|');
+                // let values = ("" + cell[JV.PROP_VALUE]).split('|');
+                let values = _preHandleSpliter("" + cell[JV.PROP_VALUE]).split('|');
                 // let font = fonts[cell[JV.PROP_FONT]];
                 let font = null;
                 if (typeof cell[JV.PROP_FONT] === "string") {

+ 23 - 0
web/building_saas/report/js/rpt_main.js

@@ -19,6 +19,7 @@ let rptTplObj = {
         let me = this;
         if (!me.hasInitialized) {
             zTreeOprObj.getCustomerCfg();
+            // zTreeOprObj.getAvailablePageSize();
             zTreeOprObj.getReportTemplateTree();
             zTreeOprObj.selectedPrjIDs = [];
             me.hasInitialized = true;
@@ -138,6 +139,28 @@ let zTreeOprObj = {
             me.refreshNodes();
         }, null, null);
     },
+    getAvailablePageSize: function() {
+        let me = zTreeOprObj, params = {};
+        params.engineerId = projectObj.project.projectInfo.property.engineering;
+        CommonAjax.postEx("report_tpl_api/getAvailablePageSize", params, 2000, true, function(result){
+                if (result) {
+                    // console.log(result);
+                    if (result.length > 0) {
+                        $('#btnRptPageSize')[0].innerHTML = result[0];
+                        let divDom = $('#divRptPageSize');
+                        divDom.empty();
+                        for (let pIdx = 1; pIdx < result.length; pIdx++) {
+                            //<a class="dropdown-item" id="hrefRptPageSize_A3" style="cursor:pointer" onclick="zTreeOprObj.changePageSize(this)">A3</a>
+                            let aDomStr = `<a class="dropdown-item" id="hrefRptPageSize_${result[pIdx]}" style="cursor:pointer" onclick="zTreeOprObj.changePageSize(this)">${result[pIdx]}</a>`;
+                            divDom.append(aDomStr);
+                        }
+                    }
+                } else {
+                    //
+                }
+            }, null, null
+        );
+    },
     getCustomerCfg: function() {
         let me = zTreeOprObj, params = {};
         params.engineerId = projectObj.project.projectInfo.property.engineering;

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

@@ -198,6 +198,20 @@ function _splitValues(cell, control, orgValues, ctx2D) {
     }
 }
 
+const strReplaceReg1 = new RegExp('\n\r', 'gm'),
+    strReplaceReg2 = new RegExp('\r\n', 'gm'),
+    strReplaceReg3 = new RegExp('\n', 'gm'),
+    strReplaceReg4 = new RegExp('\r', 'gm')
+;
+
+function _preHandleSpliter(orgVal) {
+    let rst = orgVal;
+    if (rst !== null && rst !== '') {
+        rst = rst.replace(strReplaceReg1, '|').replace(strReplaceReg2, '|').replace(strReplaceReg3, '|').replace(strReplaceReg4, '|');
+    }
+    return rst;
+}
+
 function buildText(destRst, cell, font, control, offsetX, offsetY, adjustY, canvas, isHtoV, HtoVStr) {
     let orgFontHeight = parseInt(font[JV.FONT_PROPS[JV.FONT_PROP_IDX_HEIGHT]]);
     let fontWeight = (font[JV.FONT_PROPS[JV.FONT_PROP_IDX_BOLD]] === 'T')?"bold":"normal";
@@ -216,7 +230,8 @@ function buildText(destRst, cell, font, control, offsetX, offsetY, adjustY, canv
     }
     let values = null;
     if (typeof value === "string") {
-        values = value.split("|");
+        // values = value.split("|");
+        values = _preHandleSpliter(value).split('|');
     } else {
         values = [value];
     }