Browse Source

电子签名微调

TonyKang 5 years ago
parent
commit
1ea4687741

+ 2 - 1
app/public/report/js/jpc_output.js

@@ -407,7 +407,8 @@ let JpcCanvasOutput = {
         }
         function private_drawImage(cell, control, imageData) {
             let area = private_getProperSignatureArea(cell, control);
-            ctx.drawImage(imageData, area[0], area[1], area[2] - area[0], area[3] - area[1]);
+            ctx.drawImage(imageData, area[0] * JpcCanvasOutput.scaleFactor, area[1] * JpcCanvasOutput.scaleFactor,
+                (area[2] - area[0]) * JpcCanvasOutput.scaleFactor, (area[3] - area[1]) * JpcCanvasOutput.scaleFactor);
         }
         function getIniPageMergeBorder(mergedBand) {
             let rst = {};

+ 72 - 13
app/public/report/js/rpt_main.js

@@ -257,7 +257,7 @@ let zTreeOprObj = {
                     } else {
                         canvas.height = size[1] + 50;
                     }
-                    me.resetESignature(pageRst);
+                    // zTreeOprObj.resetESignature(zTreeOprObj.currentRptPageRst);
                     me.buildSelectableAccount();
                     me.showPage(1, canvas);
                 } else {
@@ -289,16 +289,31 @@ let zTreeOprObj = {
         }
         if (signature_cells.length > 0) {
             const elementsStrArr = [];
-            for (const sCell of signature_cells) {
+            const canvasWidth = 60;
+            const canvasHeight = 30;
+
+            for (let scIdx = 0; scIdx < signature_cells.length; scIdx++) {
+                const sCell = signature_cells[scIdx];
                 elementsStrArr.push('<div class="form-group row">');
                 elementsStrArr.push('<label for="staticEmail" class="col-sm-3 col-form-label pr-0">' + sCell.signature_name + '</label>');
                 elementsStrArr.push('<div class="col-sm-9">');
                 elementsStrArr.push('<ul class="list-group">');
                 elementsStrArr.push('<li class="list-group-item">');
                 if (sCell.path || sCell.pic) {
-                    //
+                    elementsStrArr.push('<p class=" d-flex justify-content-between m-0"><canvas id="signCanvas' + scIdx + '" width="' + canvasWidth + '" height="' + canvasHeight + '"></canvas><a onclick="zTreeOprObj.removeSignature(this)" class="text-danger"><i class="fa fa-remove" title="移除签名"></i></a></p>');
+                    let imgObj = new Image();
+                    if (sCell.path) {
+                        imgObj.src = sCell.path;
+                    } else {
+                        imgObj.src = sCell.pic;
+                    }
+                    imgObj.onload = function(){
+                        let canvasNode = document.getElementById('signCanvas' + scIdx);
+                        let ctx = canvasNode.getContext('2d');
+                        ctx.drawImage(this, 0, 0, canvasWidth, canvasHeight);
+                    }
                 } else {
-                    elementsStrArr.push('<a href="#add-sign" onclick="zTreeOprObj.currentSelectedESignAccDom = this; zTreeOprObj.currentSelectedESignAccName = \'' + sCell.signature_name + '\'" data-toggle="modal" data-target="#add-sign"><i class="fa fa-plus"></i> 添加签名</a>');
+                    elementsStrArr.push('<a href="#add-sign" onclick="zTreeOprObj.currentSelectedESignAccDom = this.parentNode; zTreeOprObj.currentSelectedESignAccName = \'' + sCell.signature_name + '\'" data-toggle="modal" data-target="#add-sign"><i class="fa fa-plus"></i> 添加签名</a>');
                 }
                 elementsStrArr.push('</li>');
                 elementsStrArr.push('</ul>');
@@ -358,7 +373,7 @@ let zTreeOprObj = {
                 if (page.signature_cells) {
                     for (const sCell of page.signature_cells) {
                         if (sCell.signature_name === zTreeOprObj.currentSelectedESignAccName) {
-                            sCell.path = dftSignSrc;
+                            sCell.pre_path = dftSignSrc;
                         }
                     }
                 }
@@ -371,22 +386,66 @@ let zTreeOprObj = {
                 }
             }
             // 2. 创建已选择签名相关 dom
-            // let newDomArr = [];
-            // 2.1 canvas
-            let canvasNode = document.createElement("CANVAS");
-            canvasNode.height = "30";
-            canvasNode.style = "width: 100%";
-            //newDomArr.push('<canvas height="30" style="width: 100%"></canvas>');
-            zTreeOprObj.currentSelectedESignAccDom.appendChild(canvasNode);
+            const canvasWidth = 60;
+            const canvasHeight = 30;
+            // 2.1 canvas / X
+            const elementsStrArr = [];
+            elementsStrArr.push('<p class=" d-flex justify-content-between m-0"><canvas id="signCanvas' + accIdx + '" width="' + canvasWidth + '" height="' + canvasHeight + '"></canvas><a onclick="zTreeOprObj.removeSignature(this)" class="text-danger"><i class="fa fa-remove" title="移除签名"></i></a></p>');
             let imgObj = new Image();
             imgObj.src = dftSignSrc;
             imgObj.onload = function(){
+                let canvasNode = document.getElementById('signCanvas' + accIdx);
                 let ctx = canvasNode.getContext('2d');
-                ctx.drawImage(this, 0, 0, 60, 30);
+                ctx.drawImage(this, 0, 0, canvasWidth, canvasHeight);
             }
+            //.appendChild(pNode);
+            $(zTreeOprObj.currentSelectedESignAccDom).append(elementsStrArr.join(' '));
+            //*/
             // 2.2 date-picker
         }
     },
+    removeSignature: function (dom) {
+        let accTxtName = $(dom.parentNode.parentNode.parentNode.parentNode.parentNode).find('label')[0].innerText;
+        let jDom = $(dom.parentNode.parentNode);
+        jDom.empty();
+        jDom.append('<a href="#add-sign" onclick="zTreeOprObj.currentSelectedESignAccDom = dom.parentNode; zTreeOprObj.currentSelectedESignAccName = \'' +
+            accTxtName + '\'" data-toggle="modal" data-target="#add-sign"><i class="fa fa-plus"></i> 添加签名</a>');
+        //要记得清空相关pre_path属性
+        for (const page of zTreeOprObj.currentRptPageRst.items) {
+            if (page.signature_cells) {
+                for (const sCell of page.signature_cells) {
+                    if (sCell.signature_name === accTxtName) {
+                        sCell.pre_path = '';
+                    }
+                }
+            }
+        }
+    },
+    removeSelectSignature: function () {
+        for (const page of zTreeOprObj.currentRptPageRst.items) {
+            if (page.signature_cells) {
+                for (const sCell of page.signature_cells) {
+                    if (sCell.hasOwnProperty('pre_path')) {
+                        delete sCell.pre_path;
+                    }
+                }
+            }
+        }
+        zTreeOprObj.showPage(zTreeOprObj.currentPage, zTreeOprObj.canvas);
+    },
+    setupAfterSelectSignature: function () {
+        for (const page of zTreeOprObj.currentRptPageRst.items) {
+            if (page.signature_cells) {
+                for (const sCell of page.signature_cells) {
+                    if (sCell.hasOwnProperty('pre_path')) {
+                        sCell.path = sCell.pre_path;
+                        delete sCell.pre_path;
+                    }
+                }
+            }
+        }
+        zTreeOprObj.showPage(zTreeOprObj.currentPage, zTreeOprObj.canvas);
+    },
     scaleReport: function (accScale) {
         let me = zTreeOprObj;
         let canvas = zTreeOprObj.canvas;

+ 1 - 1
app/view/report/index.ejs

@@ -99,7 +99,7 @@
                             </div>
                             <div class="panel">
                                 <div class="panel-body">
-                                    <button class="btn btn-outline-primary btn-sm" type="button" data-toggle="modal" data-target="#eSignature">
+                                    <button class="btn btn-outline-primary btn-sm" type="button" data-toggle="modal" data-target="#eSignature" onclick="zTreeOprObj.resetESignature(zTreeOprObj.currentRptPageRst)">
                                         <i class="fa fa-pencil"></i><br>
                                         电子签名
                                     </button>

+ 2 - 2
app/view/report/rpt_all_popup.ejs

@@ -201,8 +201,8 @@
             <div class="modal-body" id="eSignatureBodyDiv">
             </div>
             <div class="modal-footer">
-                <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
-                <a onclick="zTreeOprObj.showPage(zTreeOprObj.currentPage, zTreeOprObj.canvas)" class="btn btn-primary" data-dismiss="modal">确定</a>
+                <button type="button" class="btn btn-secondary" data-dismiss="modal" onclick="zTreeOprObj.removeSelectSignature()">取消</button>
+                <a onclick="zTreeOprObj.setupAfterSelectSignature()" class="btn btn-primary" data-dismiss="modal">确定</a>
             </div>
         </div>
     </div>