Browse Source

调整二维码输出

TonyKang 3 years ago
parent
commit
68564078c1

+ 45 - 38
app/public/report/js/jpc_output.js

@@ -437,45 +437,52 @@ let JpcCanvasOutput = {
             // 约定默认长宽比例是2:1,图片分辨率是600*300
             const rst = [0, 0, 0, 0]; // left, top, right, bottom
             if (cell && cell[JV.PROP_AREA]) {
-                let width = cell[JV.PROP_AREA][JV.PROP_RIGHT] - cell[JV.PROP_AREA][JV.PROP_LEFT],
-                    height = cell[JV.PROP_AREA][JV.PROP_BOTTOM] - cell[JV.PROP_AREA][JV.PROP_TOP],
-                    centerPh = (cell[JV.PROP_AREA][JV.PROP_RIGHT] + cell[JV.PROP_AREA][JV.PROP_LEFT]) / 2,
-                    centerPv = (cell[JV.PROP_AREA][JV.PROP_BOTTOM] + cell[JV.PROP_AREA][JV.PROP_TOP]) / 2
-                    ;
-                if (width > height * 2) {
-                    width = height * 2;
+                if (cell.hasOwnProperty('isOrgShow') && cell.isOrgShow) {
+                    rst[JV.IDX_LEFT] = cell[JV.PROP_AREA][JV.PROP_LEFT];
+                    rst[JV.IDX_TOP] = cell[JV.PROP_AREA][JV.PROP_TOP];
+                    rst[JV.IDX_RIGHT] = cell[JV.PROP_AREA][JV.PROP_RIGHT];
+                    rst[JV.IDX_BOTTOM] = cell[JV.PROP_AREA][JV.PROP_BOTTOM];
                 } else {
-                    height = width / 2;
-                }
-                switch (control[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_HORIZON]]) {
-                    case 'left':
-                        rst[JV.IDX_LEFT] = cell[JV.PROP_AREA][JV.PROP_LEFT];
-                        rst[JV.IDX_RIGHT] = rst[0] + width;
-                        break;
-                    case 'right':
-                        rst[JV.IDX_RIGHT] = cell[JV.PROP_AREA][JV.PROP_RIGHT];
-                        rst[JV.IDX_LEFT] = rst[JV.IDX_RIGHT] - width;
-                        break;
-                    default:
-                        //center
-                        rst[JV.IDX_LEFT] = centerPh - width / 2;
-                        rst[JV.IDX_RIGHT] = centerPh + width / 2;
-                        break;
-                }
-                switch (control[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_VERTICAL]]) {
-                    case 'top':
-                        rst[JV.IDX_TOP] = cell[JV.PROP_AREA][JV.PROP_TOP];
-                        rst[JV.IDX_BOTTOM] = rst[JV.IDX_TOP] + height;
-                        break;
-                    case 'bottom':
-                        rst[JV.IDX_BOTTOM] = cell[JV.PROP_AREA][JV.PROP_BOTTOM];
-                        rst[JV.IDX_TOP] = rst[JV.IDX_BOTTOM] - height;
-                        break;
-                    default:
-                        //center
-                        rst[JV.IDX_TOP] = centerPv - height / 2;
-                        rst[JV.IDX_BOTTOM] = centerPv + height / 2;
-                        break;
+                    let width = cell[JV.PROP_AREA][JV.PROP_RIGHT] - cell[JV.PROP_AREA][JV.PROP_LEFT],
+                        height = cell[JV.PROP_AREA][JV.PROP_BOTTOM] - cell[JV.PROP_AREA][JV.PROP_TOP],
+                        centerPh = (cell[JV.PROP_AREA][JV.PROP_RIGHT] + cell[JV.PROP_AREA][JV.PROP_LEFT]) / 2,
+                        centerPv = (cell[JV.PROP_AREA][JV.PROP_BOTTOM] + cell[JV.PROP_AREA][JV.PROP_TOP]) / 2
+                    ;
+                    if (width > height * 2) {
+                        width = height * 2;
+                    } else {
+                        height = width / 2;
+                    }
+                    switch (control[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_HORIZON]]) {
+                        case 'left':
+                            rst[JV.IDX_LEFT] = cell[JV.PROP_AREA][JV.PROP_LEFT];
+                            rst[JV.IDX_RIGHT] = rst[0] + width;
+                            break;
+                        case 'right':
+                            rst[JV.IDX_RIGHT] = cell[JV.PROP_AREA][JV.PROP_RIGHT];
+                            rst[JV.IDX_LEFT] = rst[JV.IDX_RIGHT] - width;
+                            break;
+                        default:
+                            //center
+                            rst[JV.IDX_LEFT] = centerPh - width / 2;
+                            rst[JV.IDX_RIGHT] = centerPh + width / 2;
+                            break;
+                    }
+                    switch (control[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_VERTICAL]]) {
+                        case 'top':
+                            rst[JV.IDX_TOP] = cell[JV.PROP_AREA][JV.PROP_TOP];
+                            rst[JV.IDX_BOTTOM] = rst[JV.IDX_TOP] + height;
+                            break;
+                        case 'bottom':
+                            rst[JV.IDX_BOTTOM] = cell[JV.PROP_AREA][JV.PROP_BOTTOM];
+                            rst[JV.IDX_TOP] = rst[JV.IDX_BOTTOM] - height;
+                            break;
+                        default:
+                            //center
+                            rst[JV.IDX_TOP] = centerPv - height / 2;
+                            rst[JV.IDX_BOTTOM] = centerPv + height / 2;
+                            break;
+                    }
                 }
             }
             rst[0] = rst[0] + JpcCanvasOutput.offsetX;

+ 33 - 26
app/public/report/js/rpt_jspdf.js

@@ -182,33 +182,40 @@ let JpcJsPDFHelper = {
             // 约定默认长宽比例是2:1,图片分辨率是600*300
             const rst = [0, 0, 0, 0]; // left, top, right, bottom
             if (cell && cell[JV.PROP_AREA]) {
-                let width = cell[JV.PROP_AREA][JV.PROP_RIGHT] - cell[JV.PROP_AREA][JV.PROP_LEFT],
-                    height = cell[JV.PROP_AREA][JV.PROP_BOTTOM] - cell[JV.PROP_AREA][JV.PROP_TOP];
-                if (width > height * 2) {
-                    width = height * 2;
+                if (cell.hasOwnProperty('isOrgShow') && cell.isOrgShow) {
+                    rst[JV.IDX_LEFT] = cell[JV.PROP_AREA][JV.PROP_LEFT];
+                    rst[JV.IDX_TOP] = cell[JV.PROP_AREA][JV.PROP_TOP];
+                    rst[JV.IDX_RIGHT] = cell[JV.PROP_AREA][JV.PROP_RIGHT];
+                    rst[JV.IDX_BOTTOM] = cell[JV.PROP_AREA][JV.PROP_BOTTOM];
                 } else {
-                    height = width / 2;
-                }
-                switch (control[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_HORIZON]]) {
-                    case 'left':
-                        rst[0] = cell[JV.PROP_AREA][JV.PROP_LEFT];
-                        rst[1] = cell[JV.PROP_AREA][JV.PROP_TOP];
-                        rst[2] = rst[0] + width;
-                        rst[3] = rst[1] + height;
-                        break;
-                    case 'right':
-                        rst[2] = cell[JV.PROP_AREA][JV.PROP_RIGHT];
-                        rst[3] = cell[JV.PROP_AREA][JV.PROP_BOTTOM];
-                        rst[0] = rst[2] - width;
-                        rst[1] = rst[3] - height;
-                        break;
-                    default:
-                        //center
-                        rst[0] = (cell[JV.PROP_AREA][JV.PROP_LEFT] + cell[JV.PROP_AREA][JV.PROP_RIGHT] - width) / 2;
-                        rst[1] = cell[JV.PROP_AREA][JV.PROP_TOP];
-                        rst[2] = rst[0] + width;
-                        rst[3] = rst[1] + height;
-                        break;
+                    let width = cell[JV.PROP_AREA][JV.PROP_RIGHT] - cell[JV.PROP_AREA][JV.PROP_LEFT],
+                        height = cell[JV.PROP_AREA][JV.PROP_BOTTOM] - cell[JV.PROP_AREA][JV.PROP_TOP];
+                    if (width > height * 2) {
+                        width = height * 2;
+                    } else {
+                        height = width / 2;
+                    }
+                    switch (control[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_HORIZON]]) {
+                        case 'left':
+                            rst[0] = cell[JV.PROP_AREA][JV.PROP_LEFT];
+                            rst[1] = cell[JV.PROP_AREA][JV.PROP_TOP];
+                            rst[2] = rst[0] + width;
+                            rst[3] = rst[1] + height;
+                            break;
+                        case 'right':
+                            rst[2] = cell[JV.PROP_AREA][JV.PROP_RIGHT];
+                            rst[3] = cell[JV.PROP_AREA][JV.PROP_BOTTOM];
+                            rst[0] = rst[2] - width;
+                            rst[1] = rst[3] - height;
+                            break;
+                        default:
+                            //center
+                            rst[0] = (cell[JV.PROP_AREA][JV.PROP_LEFT] + cell[JV.PROP_AREA][JV.PROP_RIGHT] - width) / 2;
+                            rst[1] = cell[JV.PROP_AREA][JV.PROP_TOP];
+                            rst[2] = rst[0] + width;
+                            rst[3] = rst[1] + height;
+                            break;
+                    }
                 }
             }
             rst[0] = rst[0] + offsetX;

+ 34 - 26
app/reports/util/rpt_excel_util.js

@@ -426,33 +426,41 @@ function getProperSignatureArea(cell, control) {
     // 约定默认长宽比例是2:1,图片分辨率是600*300
     const rst = [0, 0, 0, 0]; // left, top, right, bottom
     if (cell && cell[JV.PROP_AREA]) {
-        let width = cell[JV.PROP_AREA][JV.PROP_RIGHT] - cell[JV.PROP_AREA][JV.PROP_LEFT],
-            height = cell[JV.PROP_AREA][JV.PROP_BOTTOM] - cell[JV.PROP_AREA][JV.PROP_TOP];
-        if (width > height * 2) {
-            width = height * 2;
+        if (cell.hasOwnProperty('isOrgShow') && cell.isOrgShow) {
+            // 例外的约定,按原始类型处理
+            rst[JV.IDX_LEFT] = cell[JV.PROP_AREA][JV.PROP_LEFT];
+            rst[JV.IDX_TOP] = cell[JV.PROP_AREA][JV.PROP_TOP];
+            rst[JV.IDX_RIGHT] = cell[JV.PROP_AREA][JV.PROP_RIGHT];
+            rst[JV.IDX_BOTTOM] = cell[JV.PROP_AREA][JV.PROP_BOTTOM];
         } else {
-            height = width / 2;
-        }
-        switch (control[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_HORIZON]]) {
-            case 'left':
-                rst[0] = cell[JV.PROP_AREA][JV.PROP_LEFT];
-                rst[1] = cell[JV.PROP_AREA][JV.PROP_TOP];
-                rst[2] = rst[0] + width;
-                rst[3] = rst[1] + height;
-                break;
-            case 'right':
-                rst[2] = cell[JV.PROP_AREA][JV.PROP_RIGHT];
-                rst[3] = cell[JV.PROP_AREA][JV.PROP_BOTTOM];
-                rst[0] = rst[2] - width;
-                rst[1] = rst[3] - height;
-                break;
-            default:
-                // center
-                rst[0] = (cell[JV.PROP_AREA][JV.PROP_LEFT] + cell[JV.PROP_AREA][JV.PROP_RIGHT] - width) / 2;
-                rst[1] = cell[JV.PROP_AREA][JV.PROP_TOP];
-                rst[2] = rst[0] + width;
-                rst[3] = rst[1] + height;
-                break;
+            let width = cell[JV.PROP_AREA][JV.PROP_RIGHT] - cell[JV.PROP_AREA][JV.PROP_LEFT],
+                height = cell[JV.PROP_AREA][JV.PROP_BOTTOM] - cell[JV.PROP_AREA][JV.PROP_TOP];
+            if (width > height * 2) {
+                width = height * 2;
+            } else {
+                height = width / 2;
+            }
+            switch (control[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_HORIZON]]) {
+                case 'left':
+                    rst[0] = cell[JV.PROP_AREA][JV.PROP_LEFT];
+                    rst[1] = cell[JV.PROP_AREA][JV.PROP_TOP];
+                    rst[2] = rst[0] + width;
+                    rst[3] = rst[1] + height;
+                    break;
+                case 'right':
+                    rst[2] = cell[JV.PROP_AREA][JV.PROP_RIGHT];
+                    rst[3] = cell[JV.PROP_AREA][JV.PROP_BOTTOM];
+                    rst[0] = rst[2] - width;
+                    rst[1] = rst[3] - height;
+                    break;
+                default:
+                    // center
+                    rst[0] = (cell[JV.PROP_AREA][JV.PROP_LEFT] + cell[JV.PROP_AREA][JV.PROP_RIGHT] - width) / 2;
+                    rst[1] = cell[JV.PROP_AREA][JV.PROP_TOP];
+                    rst[2] = rst[0] + width;
+                    rst[3] = rst[1] + height;
+                    break;
+            }
         }
     }
     // rst[0] = rst[0] + JpcCanvasOutput.offsetX;

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

@@ -51,11 +51,11 @@
                                         <i class="fa fa-print"></i><br>
                                         打印 <span id="checkCountPrint" class="badge badge-primary">0</span>
                                     </button>
-                                    <!--
                                     <button class="btn btn-outline-primary btn-sm" type="button" onclick="rptPrintHelper.individualPreview()">
                                         <i class="fa fa-print"></i><br>
                                         现场收方 <span id="checkCountPrint" class="badge badge-primary">0</span>
                                     </button>
+                                    <!--
                                     -->
                                 </div>
                             </div>

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

@@ -182,7 +182,7 @@
                 let offset = 86;
                 let left = maxRight - offset;
                 let bottom = minTop + offset;
-                let signCell = {area: {Left: left, Right: maxRight, Top: minTop, Bottom: bottom}, control: 'Column', path: qrCodePath, pic: null, signature_name: 'dummy_pic', style: 'Default_Normal'};
+                let signCell = {area: {Left: left, Right: maxRight, Top: minTop, Bottom: bottom}, control: 'Column', path: qrCodePath, pic: null, signature_name: 'dummy_pic', style: 'Default_None', isOrgShow: true};
                 pageItem.signature_cells.push(signCell);
                 //注:这里不用async方式,只有一个二维图,一瞬间就能下载完
                 _getBlob(qrCodePath).then(blob => {