Parcourir la source

customize config

TonyKang il y a 7 ans
Parent
commit
bebd267a5e

+ 31 - 13
modules/reports/controllers/rpt_tpl_controller.js

@@ -23,10 +23,10 @@ let callback = function(req, res, err, message, data){
 
 let mExport = {
     getCustomerCfg(req, res) {
-        let params = JSON.parse(req.body.params)
-            // userId = params.userId
+        let params = JSON.parse(req.body.params),
+            userId = params.userId
         ;
-        let userId = req.session.sessionUser.id;
+        if (req.session.sessionUser && req.session.sessionUser.id) userId = req.session.sessionUser.id;
         let userIds = [];
         userIds.push(userId);
         if (userId !== "-100") {
@@ -52,6 +52,24 @@ let mExport = {
             }
         })
     },
+    saveCustomerCfg: function (req, res) {
+        let params = JSON.parse(req.body.params),
+            userId = params.userId,
+            custCfg = params.custCfg;
+        ;
+        if (req.session.sessionUser && req.session.sessionUser.id) userId = req.session.sessionUser.id;
+        custCfg.userId = userId;
+        rptCustCfgFacade.saveCustomizeCfg(custCfg).then(function (rst) {
+            if (rst) {
+                //success
+                callback(req,res, false, "", "success!");
+            } else {
+                //failed
+                callback(req,res, true, "更新失败!", null);
+            }
+        })
+    },
+
     getDftTemplates(req, res) {
         let filter = {"userId": "-100", "$or": [{"isDeleted": null}, {"isDeleted": false} ]};
         TreeNodeModel.find(filter, '-_id', function(err, data){
@@ -76,9 +94,9 @@ let mExport = {
     getRptTplTree: function(req, res) {
         let params = JSON.parse(req.body.params),
             compilationId = params.compilationId,
-            // userId = params.userId,
+            userId = params.userId,
             engineerId = params.engineerId;
-        let userId = req.session.sessionUser.id;
+        if (req.session.sessionUser && req.session.sessionUser.id) userId = req.session.sessionUser.id;
         let userIds = [];
         userIds.push(userId);
         if (userId != "-100") {
@@ -163,10 +181,10 @@ let mExport = {
     updateTopNodeName: function (req, res) {
         let params = JSON.parse(req.body.params),
             compilationId = params.compilationId, engineerId = params.engineerId,
-            // userId = params.userId,
+            userId = params.userId,
             nodeName = params.nodeName
         ;
-        let userId = req.session.sessionUser.id;
+        if (req.session.sessionUser && req.session.sessionUser.id) userId = req.session.sessionUser.id;
         let filter = {"compilationId": compilationId, "engineerId": engineerId, "userId": userId, "$or": [{"isDeleted": null}, {"isDeleted": false}]};
         let updateStatement = {"$set": {"name": nodeName}};
         rttFacade.updateTreeInDetail(filter, updateStatement).then(function (rst) {
@@ -182,10 +200,10 @@ let mExport = {
     updateSubLevelOneNode: function (req, res) {
         let params = JSON.parse(req.body.params),
             compilationId = params.compilationId, engineerId = params.engineerId,
-            // userId = params.userId,
+            userId = params.userId,
             subNode = params.subNode
         ;
-        let userId = req.session.sessionUser.id;
+        if (req.session.sessionUser && req.session.sessionUser.id) userId = req.session.sessionUser.id;
         let filter = {"compilationId": compilationId, "engineerId": engineerId, "userId": userId, "items.ID": subNode.ID, "$or": [{"isDeleted": null}, {"isDeleted": false}]};
         let updateStatement = {$set: {"items.$": subNode}};
         rttFacade.updateTreeInDetail(filter, updateStatement).then(function (rst) {
@@ -203,10 +221,10 @@ let mExport = {
         let params = JSON.parse(req.body.params),
             compilationId = params.compilationId,
             engineerId = params.engineerId,
-            // userId = params.userId,
+            userId = params.userId,
             isPhysically = params.isPhysically
             ;
-        let userId = req.session.sessionUser.id;
+        if (req.session.sessionUser && req.session.sessionUser.id) userId = req.session.sessionUser.id;
         if (isPhysically) {
             rttFacade.removeTreePhycically(compilationId, engineerId, userId).then(function (rst) {
                 if (rst) {
@@ -268,10 +286,10 @@ let mExport = {
             grpKey = params.grpKey,
             compilationId = params.compilationId,
             engineerId = params.engineerId,
-            // userId = params.userId,
+            userId = params.userId,
             subNode = params.subNode
         ;
-        let userId = req.session.sessionUser.id;
+        if (req.session.sessionUser && req.session.sessionUser.id) userId = req.session.sessionUser.id;
         let filter = {"ID": rptDftTplId};
         RptTplModel.findOne(filter, '-_id').exec().then(function(dftTplRst) {
             if (dftTplRst) {

+ 7 - 1
modules/reports/facade/rpt_cust_cfg_facade.js

@@ -6,7 +6,8 @@ import mongoose from "mongoose";
 let rpt_customize_cfg_mdl = mongoose.model("rpt_customize_cfg");
 
 module.exports = {
-    getCustomizeCfg: getCustomizeCfg
+    getCustomizeCfg: getCustomizeCfg,
+    saveCustomizeCfg: saveCustomizeCfg
 };
 
 async function getCustomizeCfg(userIds) {
@@ -16,3 +17,8 @@ async function getCustomizeCfg(userIds) {
     }
     return await rpt_customize_cfg_mdl.find(filter, '-_id');
 }
+
+async function saveCustomizeCfg(custCfg) {
+    let filter = {"userId": custCfg.userId};
+    return await rpt_customize_cfg_mdl.update(filter, custCfg);
+}

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

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

+ 30 - 97
web/building_saas/report/html/rpt_content_format.html

@@ -13,15 +13,15 @@
                         表标题
                     </div>
                     <div class="col-3">
-                        <select class="form-control form-control-sm"><option>宋体</option></select>
+                        <input class="form-control input-sm" id="fontName_title" value="宋体" onchange="rptControlObj.changeFontMain('表标题', 'Name', this)" onkeyup="rptControlObj.changeFontMain('表标题', 'Name', this)">
                     </div>
                     <div class="col-3">
-                        <select class="form-control form-control-sm"><option>20</option></select>
+                        <input class="form-control input-sm" id="fontHeight_title" type="number" value="30" step="1" min="6" max="66" onchange="rptControlObj.changeFontMain('表标题', 'FontHeight', this)" onkeyup="rptControlObj.changeFontMain('表标题', 'FontHeight', this)">
                     </div>
                     <div class="col-3">
-                        <a href="" class="btn btn-sm btn-outline-secondary" title="加粗"><i class="fa fa-bold"></i></a>
-                        <a href="" class="btn btn-sm btn-outline-secondary" title="斜体"><i class="fa fa-italic"></i></a>
-                        <a href="" class="btn btn-sm btn-outline-secondary" title="下划线"><i class="fa fa-underline"></i></a>
+                        <a id="font_bold_title" class="btn btn-sm btn-outline-secondary" title="加粗" onclick="rptControlObj.changeFontAdhoc('表标题', 'FontBold', this)"><i class="fa fa-bold"></i></a>
+                        <a id="font_italic_title" class="btn btn-sm btn-outline-secondary" title="斜体" onclick="rptControlObj.changeFontAdhoc('表标题', 'FontItalic', this)"><i class="fa fa-italic"></i></a>
+                        <a id="font_underline_title" class="btn btn-sm btn-outline-secondary" title="下划线" onclick="rptControlObj.changeFontAdhoc('表标题', 'FontUnderline', this)"><i class="fa fa-underline"></i></a>
                     </div>
                 </div>
                 <div class="row mb-1">
@@ -29,15 +29,15 @@
                         表栏头
                     </div>
                     <div class="col-3">
-                        <select class="form-control form-control-sm"><option>宋体</option></select>
+                        <input class="form-control input-sm" id="fontName_column" value="宋体" onchange="rptControlObj.changeFontMain('表栏头', 'Name', this)" onkeyup="rptControlObj.changeFontMain('表栏头', 'Name', this)">
                     </div>
                     <div class="col-3">
-                        <select class="form-control form-control-sm"><option>20</option></select>
+                        <input class="form-control input-sm" id="fontHeight_column" type="number" value="10" step="1" min="6" max="66" onchange="rptControlObj.changeFontMain('表栏头', 'FontHeight', this)" onkeyup="rptControlObj.changeFontMain('表栏头', 'FontHeight', this)">
                     </div>
                     <div class="col-3">
-                        <a href="" class="btn btn-sm btn-outline-secondary active" title="加粗"><i class="fa fa-bold"></i></a>
-                        <a href="" class="btn btn-sm btn-outline-secondary" title="斜体"><i class="fa fa-italic"></i></a>
-                        <a href="" class="btn btn-sm btn-outline-secondary" title="下划线"><i class="fa fa-underline"></i></a>
+                        <a id="font_bold_column" class="btn btn-sm btn-outline-secondary active" title="加粗" onclick="rptControlObj.changeFontAdhoc('表栏头', 'FontBold', this)"><i class="fa fa-bold"></i></a>
+                        <a id="font_italic_column" class="btn btn-sm btn-outline-secondary" title="斜体" onclick="rptControlObj.changeFontAdhoc('表栏头', 'FontItalic', this)"><i class="fa fa-italic"></i></a>
+                        <a id="font_underline_column" class="btn btn-sm btn-outline-secondary" title="下划线" onclick="rptControlObj.changeFontAdhoc('表栏头', 'FontUnderline', this)"><i class="fa fa-underline"></i></a>
                     </div>
                 </div>
                 <div class="row mb-1">
@@ -45,15 +45,15 @@
                         表正文
                     </div>
                     <div class="col-3">
-                        <select class="form-control form-control-sm"><option>宋体</option></select>
+                        <input class="form-control input-sm" id="fontName_content" value="宋体" onchange="rptControlObj.changeFontMain('表正文', 'Name', this)" onkeyup="rptControlObj.changeFontMain('表正文', 'Name', this)">
                     </div>
                     <div class="col-3">
-                        <select class="form-control form-control-sm"><option>20</option></select>
+                        <input class="form-control input-sm" id="fontHeight_content" type="number" value="10" step="1" min="6" max="66" onchange="rptControlObj.changeFontMain('表正文', 'FontHeight', this)" onkeyup="rptControlObj.changeFontMain('表正文', 'FontHeight', this)">
                     </div>
                     <div class="col-3">
-                        <a href="" class="btn btn-sm btn-outline-secondary" title="加粗"><i class="fa fa-bold"></i></a>
-                        <a href="" class="btn btn-sm btn-outline-secondary active" title="斜体"><i class="fa fa-italic"></i></a>
-                        <a href="" class="btn btn-sm btn-outline-secondary" title="下划线"><i class="fa fa-underline"></i></a>
+                        <a id="font_bold_content" class="btn btn-sm btn-outline-secondary" title="加粗" onclick="rptControlObj.changeFontAdhoc('表正文', 'FontBold', this)"><i class="fa fa-bold"></i></a>
+                        <a id="font_italic_content" class="btn btn-sm btn-outline-secondary active" title="斜体" onclick="rptControlObj.changeFontAdhoc('表正文', 'FontItalic', this)"><i class="fa fa-italic"></i></a>
+                        <a id="font_underline_content" class="btn btn-sm btn-outline-secondary" title="下划线" onclick="rptControlObj.changeFontAdhoc('表正文', 'FontUnderline', this)"><i class="fa fa-underline"></i></a>
                     </div>
                 </div>
                 <div class="row mb-1">
@@ -61,15 +61,15 @@
                         表合计
                     </div>
                     <div class="col-3">
-                        <select class="form-control form-control-sm"><option>宋体</option></select>
+                        <input class="form-control input-sm" id="fontName_summary" value="宋体" onchange="rptControlObj.changeFontMain('表合计', 'Name', this)" onkeyup="rptControlObj.changeFontMain('表合计', 'Name', this)">
                     </div>
                     <div class="col-3">
-                        <select class="form-control form-control-sm"><option>20</option></select>
+                        <input class="form-control input-sm" id="fontHeight_summary" type="number" value="10" step="1" min="6" max="66" onchange="rptControlObj.changeFontMain('表合计', 'FontHeight', this)" onkeyup="rptControlObj.changeFontMain('表合计', 'FontHeight', this)">
                     </div>
                     <div class="col-3">
-                        <a href="" class="btn btn-sm btn-outline-secondary" title="加粗"><i class="fa fa-bold"></i></a>
-                        <a href="" class="btn btn-sm btn-outline-secondary" title="斜体"><i class="fa fa-italic"></i></a>
-                        <a href="" class="btn btn-sm btn-outline-secondary active" title="下划线"><i class="fa fa-underline"></i></a>
+                        <a id="font_bold_summary" class="btn btn-sm btn-outline-secondary" title="加粗" onclick="rptControlObj.changeFontAdhoc('表合计', 'FontBold', this)"><i class="fa fa-bold"></i></a>
+                        <a id="font_italic_summary" class="btn btn-sm btn-outline-secondary" title="斜体" onclick="rptControlObj.changeFontAdhoc('表合计', 'FontItalic', this)"><i class="fa fa-italic"></i></a>
+                        <a id="font_underline_summary" class="btn btn-sm btn-outline-secondary active" title="下划线" onclick="rptControlObj.changeFontAdhoc('表合计', 'FontUnderline', this)"><i class="fa fa-underline"></i></a>
                     </div>
                 </div>
                 <div class="row mb-1">
@@ -77,106 +77,39 @@
                         表眉表脚
                     </div>
                     <div class="col-3">
-                        <select class="form-control form-control-sm"><option>宋体</option></select>
+                        <input class="form-control input-sm" id="fontName_header_footer" value="宋体" onchange="rptControlObj.changeFontMain('表眉表脚', 'Name', this)" onkeyup="rptControlObj.changeFontMain('表眉表脚', 'Name', this)">
                     </div>
                     <div class="col-3">
-                        <select class="form-control form-control-sm"><option>20</option></select>
+                        <input class="form-control input-sm" id="fontHeight_header_footer" type="number" value="10" step="1" min="6" max="66" onchange="rptControlObj.changeFontMain('表眉表脚', 'FontHeight', this)" onkeyup="rptControlObj.changeFontMain('表眉表脚', 'FontHeight', this)">
                     </div>
                     <div class="col-3">
-                        <a href="" class="btn btn-sm btn-outline-secondary" title="加粗"><i class="fa fa-bold"></i></a>
-                        <a href="" class="btn btn-sm btn-outline-secondary" title="斜体"><i class="fa fa-italic"></i></a>
-                        <a href="" class="btn btn-sm btn-outline-secondary" title="下划线"><i class="fa fa-underline"></i></a>
+                        <a id="font_bold_header_footer" class="btn btn-sm btn-outline-secondary" title="加粗" onclick="rptControlObj.changeFontAdhoc('表眉表脚', 'FontBold', this)"><i class="fa fa-bold"></i></a>
+                        <a id="font_italic_header_footer" class="btn btn-sm btn-outline-secondary" title="斜体" onclick="rptControlObj.changeFontAdhoc('表眉表脚', 'FontItalic', this)"><i class="fa fa-italic"></i></a>
+                        <a id="font_underline_header_footer" class="btn btn-sm btn-outline-secondary" title="下划线" onclick="rptControlObj.changeFontAdhoc('表眉表脚', 'FontUnderline', this)"><i class="fa fa-underline"></i></a>
                     </div>
                 </div>
+                <div class="row mb-1"></div>
                 <div class="row mb-1">
-                    <div class="col-3">
-                        页眉页脚
-                    </div>
-                    <div class="col-3">
-                        <select class="form-control form-control-sm"><option>宋体</option></select>
-                    </div>
-                    <div class="col-3">
-                        <select class="form-control form-control-sm"><option>20</option></select>
-                    </div>
-                    <div class="col-3">
-                        <a href="" class="btn btn-sm btn-outline-secondary" title="加粗"><i class="fa fa-bold"></i></a>
-                        <a href="" class="btn btn-sm btn-outline-secondary" title="斜体"><i class="fa fa-italic"></i></a>
-                        <a href="" class="btn btn-sm btn-outline-secondary" title="下划线"><i class="fa fa-underline"></i></a>
-                    </div>
-                </div>
-                <div class="row mb-1">
-                    <div class="col-3">
-                        表格线粗
-                    </div>
-                    <div class="col-4">
-                        <select class="form-control form-control-sm"><option>1</option></select>
-                    </div>
-                </div>
-                <div class="row mb-1">
-                    <div class="col-3">
-                        边框线粗
-                    </div>
-                    <div class="col-4">
-                        <select class="form-control form-control-sm"><option>1</option></select>
-                    </div>
-                </div>
-                <div class="row mb-1">
-                    <div class="col-4">
-                        <div class="form-check">
-                            <label class="form-check-label">
-                                <input type="checkbox" class="form-check-input">
-                                报表边框横线
-                            </label>
-                        </div>
-                    </div>
                     <div class="col-4">
                         <div class="form-check">
                             <label class="form-check-label">
-                                <input type="checkbox" class="form-check-input">
+                                <input id="rpt_vertical_line" type="checkbox" class="form-check-input">
                                 报表边框竖线
                             </label>
                         </div>
                     </div>
-                </div>
-                <div class="row mb-1">
-                    <div class="col-4">
-                        <div class="form-check">
-                            <label class="form-check-label">
-                                <input type="checkbox" class="form-check-input">
-                                报表表格横线
-                            </label>
-                        </div>
-                    </div>
-                    <div class="col-4">
-                        <div class="form-check">
-                            <label class="form-check-label">
-                                <input type="checkbox" class="form-check-input">
-                                报表表格竖线
-                            </label>
-                        </div>
-                    </div>
-                </div>
-                <div class="row mb-1">
-                    <div class="col-4">
-                        <div class="form-check">
-                            <label class="form-check-label">
-                                <input type="checkbox" class="form-check-input">
-                                自动换行打印
-                            </label>
-                        </div>
-                    </div>
                     <div class="col-4">
                         <div class="form-check">
                             <label class="form-check-label">
-                                <input type="checkbox" class="form-check-input">
-                                内容窄体输出
+                                <input id="rpt_narrow" type="checkbox" class="form-check-input">
+                                金额窄体输出
                             </label>
                         </div>
                     </div>
                     <div class="col-4">
                         <div class="form-check">
                             <label class="form-check-label">
-                                <input type="checkbox" class="form-check-input">
+                                <input id="rpt_fill_zero" type="checkbox" class="form-check-input">
                                 小数补0
                             </label>
                         </div>

+ 15 - 44
web/building_saas/report/html/rpt_margins.html

@@ -2,62 +2,33 @@
     <div class="modal-dialog" role="document">
         <div class="modal-content">
             <div class="modal-header">
-                <h5 class="modal-title">纸张</h5>
+                <h5 class="modal-title">页边距(毫米)</h5>
                 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                     <span aria-hidden="true">&times;</span>
                 </button>
             </div>
             <div class="modal-body">
-                <div class="row mb-1">
-                    <div class="col-3">
-                        纸张大小
+                <div class="row" id="element_area_1">
+                    <div class="form-group col-md-3">
+                        <label>页边距-左</label>
+                        <input class="form-control input-sm" id="elementMargin_Left" type="number" value="10" step="1" min="0" max="100" onchange="rptControlObj.changeMargin('Left', this)" onkeyup="rptControlObj.changeMargin('Left', this)">
                     </div>
-                    <div class="col-3">
-                        <select class="form-control form-control-sm"><option>A4</option><option>A3</option></select>
+                    <div class="form-group col-md-3">
+                        <label>页边距-右</label>
+                        <input class="form-control input-sm" id="elementMargin_Right" type="number" value="10" step="1" min="0" max="100" onchange="rptControlObj.changeMargin('Right', this)" onkeyup="rptControlObj.changeMargin('Right', this)">
                     </div>
-                    <div class="col-3">
-                        纸张方向
+                    <div class="form-group col-md-3">
+                        <label>页边距-上</label>
+                        <input class="form-control input-sm" id="elementMargin_Top" type="number" value="10" step="1" min="0" max="100" onchange="rptControlObj.changeMargin('Top', this)" onkeyup="rptControlObj.changeMargin('Top', this)">
                     </div>
-                    <div class="col-3">
-                        <select class="form-control form-control-sm"><option>纵向</option><option>横向</option></select>
-                    </div>
-                </div>
-                <div class="row mb-1">
-                    <div class="col-3">
-                        缩放比例
-                    </div>
-                    <div class="col-3">
-                        <select class="form-control form-control-sm"><option>100%</option></select>
-                    </div>
-                </div>
-                <div class="row mb-1">
-                    <div class="col-3">
-                        页边距
-                    </div>
-                    <div class="input-group input-group-sm col-md-4">
-                        <label class="input-group-addon">上</label>
-                        <input type="number" class="form-control" value="12">
-                    </div>
-                    <div class="input-group input-group-sm col-md-4">
-                        <label class="input-group-addon">下</label>
-                        <input type="number" class="form-control" value="12">
-                    </div>
-                </div>
-                <div class="row mb-1">
-                    <div class="col-3">
-                    </div>
-                    <div class="input-group input-group-sm col-md-4">
-                        <label class="input-group-addon">左</label>
-                        <input type="number" class="form-control" value="12">
-                    </div>
-                    <div class="input-group input-group-sm col-md-4">
-                        <label class="input-group-addon">右</label>
-                        <input type="number" class="form-control" value="12">
+                    <div class="form-group col-md-3">
+                        <label>页边距-下</label>
+                        <input class="form-control input-sm" id="elementMargin_Bottom" type="number" value="10" step="1" min="0" max="100" onchange="rptControlObj.changeMargin('Bottom', this)" onkeyup="rptControlObj.changeMargin('Bottom', this)">
                     </div>
                 </div>
             </div>
             <div class="modal-footer">
-                <button type="button" class="btn btn-link float-left" data-dismiss="modal">恢复默认值</button>
+                <button type="button" class="btn btn-link float-left" data-dismiss="modal" onclick="rptControlObj.saveCustCfg()">存为默认值</button>
                 <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
                 <a href="" class="btn btn-primary">确定</a>
             </div>

+ 18 - 10
web/building_saas/report/js/jpc_output.js

@@ -43,7 +43,7 @@ let JpcCanvasOutput = {
                     break;
             }
         }
-        function private_setupAreaV(area, type, fontAngle, dftFontHeight, outputPoint) {
+        function private_setupAreaV(area, type, fontAngle, fontName, dftFontHeight, outputPoint) {
             let lType = type;
             if (type !== "top" && type !== "bottom" && type !== "center") lType = "top";
             switch (lType) {
@@ -59,14 +59,20 @@ let JpcCanvasOutput = {
                         outputPoint[0] = 1 * area[JV.IDX_LEFT] + JV.OUTPUT_OFFSET[JV.OFFSET_IDX_BOTTOM];
                     } else if (fontAngle === JV.ANTI_VERTICAL_ANGLE_INT) {
                         outputPoint[0] = 1 * area[JV.IDX_RIGHT] - JV.OUTPUT_OFFSET[JV.OFFSET_IDX_BOTTOM];
-                    } else outputPoint[1] = 1 * area[JV.IDX_BOTTOM] - JV.OUTPUT_OFFSET[JV.OFFSET_IDX_BOTTOM];
+                    } else {
+                        outputPoint[1] = 1 * area[JV.IDX_BOTTOM] - JV.OUTPUT_OFFSET[JV.OFFSET_IDX_BOTTOM];
+                        if (fontName === "宋体") outputPoint[1] = outputPoint[1] - 1;
+                    }
                     break;
                 case "center":
                     if (fontAngle === JV.VERTICAL_ANGLE_INT) {
                         outputPoint[0] = (1 * area[JV.IDX_LEFT] + 1 * area[JV.IDX_RIGHT] - dftFontHeight) / 2;
                     } else if (fontAngle === JV.ANTI_VERTICAL_ANGLE_INT) {
                         outputPoint[0] = (1 * area[JV.IDX_LEFT] + 1 * area[JV.IDX_RIGHT] + dftFontHeight) / 2;
-                    } else outputPoint[1] = (1 * area[JV.IDX_TOP] + 1 * area[JV.IDX_BOTTOM] + dftFontHeight) / 2;
+                    } else {
+                        outputPoint[1] = (1 * area[JV.IDX_TOP] + 1 * area[JV.IDX_BOTTOM] + dftFontHeight) / 2;
+                        if (fontName === "宋体") outputPoint[1] = outputPoint[1] - 1;
+                    }
                     break;
             }
         }
@@ -88,10 +94,10 @@ let JpcCanvasOutput = {
             }
             if (control) {
                 private_setupAreaH(area, control.Horizon, parseInt(font.FontAngle), dftFontHeight, output);
-                private_setupAreaV(area, control.Vertical, parseInt(font.FontAngle), dftFontHeight, output);
+                private_setupAreaV(area, control.Vertical, parseInt(font.FontAngle), font.Name, dftFontHeight, output);
             } else {
                 private_setupAreaH(area, "left", parseInt(font.FontAngle), dftFontHeight, output);
-                private_setupAreaV(area, "bottom", parseInt(font.FontAngle), dftFontHeight, output);
+                private_setupAreaV(area, "bottom", parseInt(font.FontAngle), font.Name, 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];
             if ( parseInt(font.FontAngle) !== 0) {
@@ -232,11 +238,13 @@ let JpcCanvasOutput = {
         }
         function getIniPageMergeBorder(mergedBand) {
             let rst = {};
-            rst[JV.PROP_LEFT] = mergedBand[JV.PROP_LEFT];
-            rst[JV.PROP_RIGHT] = mergedBand[JV.PROP_RIGHT];
-            rst[JV.PROP_TOP] = mergedBand[JV.PROP_TOP];
-            rst[JV.PROP_BOTTOM] = mergedBand[JV.PROP_BOTTOM];
-            rst[JV.PROP_STYLE] = mergedBand[JV.PROP_STYLE];
+            if (mergedBand) {
+                rst[JV.PROP_LEFT] = mergedBand[JV.PROP_LEFT];
+                rst[JV.PROP_RIGHT] = mergedBand[JV.PROP_RIGHT];
+                rst[JV.PROP_TOP] = mergedBand[JV.PROP_TOP];
+                rst[JV.PROP_BOTTOM] = mergedBand[JV.PROP_BOTTOM];
+                rst[JV.PROP_STYLE] = mergedBand[JV.PROP_STYLE];
+            }
             return rst;
         }
 

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

@@ -45,6 +45,33 @@ let zTreeOprObj = {
         CommonAjax.postEx("report_tpl_api/getCustomizeCfg", params, 20000, true, function(result){
                 if (result) {
                     me.reportPageCfg = result;
+                    $("#elementMargin_Left").get(0).value = result.margins.Left;
+                    $("#elementMargin_Right").get(0).value = result.margins.Right;
+                    $("#elementMargin_Top").get(0).value = result.margins.Top;
+                    $("#elementMargin_Bottom").get(0).value = result.margins.Bottom;
+
+                    for (let font of result.fonts) {
+                        let fontPropSuffix = "title";
+                        if (font.CfgDispName === "表标题") {
+                            fontPropSuffix = "title";
+                        } else if (font.CfgDispName === "列标题") {
+                            fontPropSuffix = "column";
+                        } else if (font.CfgDispName === "正文内容") {
+                            fontPropSuffix = "content";
+                        } else if (font.CfgDispName === "合计") {
+                            fontPropSuffix = "summary";
+                        } else if (font.CfgDispName === "表眉/表脚") {
+                            fontPropSuffix = "header_footer";
+                        }
+                        document.getElementById("fontName_" + fontPropSuffix).value = font.Name;
+                        document.getElementById("fontHeight_" + fontPropSuffix).value = font.FontHeight;
+                        document.getElementById("font_bold_" + fontPropSuffix).className = (font.FontBold === "T")?"btn btn-sm btn-outline-secondary active":"btn btn-sm btn-outline-secondary";
+                        document.getElementById("font_italic_" + fontPropSuffix).className = (font.FontItalic === "T")?"btn btn-sm btn-outline-secondary active":"btn btn-sm btn-outline-secondary";
+                        document.getElementById("font_underline_" + fontPropSuffix).className = (font.FontUnderline === "T")?"btn btn-sm btn-outline-secondary active":"btn btn-sm btn-outline-secondary";
+                    }
+                    document.getElementById("rpt_vertical_line").checked = result.showVerticalLine;
+                    document.getElementById("rpt_narrow").checked = result.isNarrow;
+                    document.getElementById("rpt_fill_zero").checked = result.fillZero;
                 } else {
                     me.reportPageCfg = null;
                 }
@@ -270,5 +297,38 @@ let rptControlObj = {
     nextPage: function(dom) {
         let canvas = document.getElementById("rptCanvas");
         zTreeOprObj.showPage(zTreeOprObj.currentPage + 1, canvas);
+    },
+    changeMargin: function(marginPropStr, marginDom) {
+        zTreeOprObj.reportPageCfg.margins[marginPropStr] = marginDom.value;
+    },
+    changeFontMain: function(CfgDispName, fontProperty, fontDom) {
+        for (let font of zTreeOprObj.reportPageCfg.fonts) {
+            if (font["CfgDispName"] === CfgDispName) {
+                font[fontProperty] = fontDom.value;
+                break;
+            }
+        }
+    },
+    changeFontAdhoc: function(CfgDispName, fontProperty, fontDom) {
+        for (let font of zTreeOprObj.reportPageCfg.fonts) {
+            if (font["CfgDispName"] === CfgDispName) {
+                if (font[fontProperty] === 'T') {
+                    font[fontProperty] = 'F';
+                    fontDom.className = "btn btn-sm btn-outline-secondary";
+                } else {
+                    font[fontProperty] = 'T';
+                    fontDom.className = "btn btn-sm btn-outline-secondary active";
+                }
+                break;
+            }
+        }
+    },
+    saveCustCfg: function() {
+        let params = {};
+        params.custCfg = zTreeOprObj.reportPageCfg;
+        CommonAjax.postEx("report_tpl_api/saveCustomerCfg", params, 20000, true, function(result){
+                alert("Save successfully!");
+            }, null, null
+        );
     }
 };