Jelajahi Sumber

紧密输出上对齐处理

Tony Kang 3 tahun lalu
induk
melakukan
2603823f71

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

@@ -352,7 +352,12 @@ let JpcCanvasOutput = {
                 const isCloseOutput = _chkIfCloseOutput(control, values.length, area, dftFontHeight);
                 let closeTopOffset = 0;
                 if (isCloseOutput) {
-                    closeTopOffset = (height - (dftFontHeight + 4) * values.length) / 2;
+                    closeTopOffset = (height - (dftFontHeight + 4) * values.length) / 2; // 默认居中对齐
+                    if (control[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_VERTICAL]] === 'top') {
+                        closeTopOffset = JV.OUTPUT_OFFSET[JV.OFFSET_IDX_TOP];
+                    } else if (control[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_VERTICAL]] === 'bottom') {
+                        closeTopOffset = height - (dftFontHeight + 4) * values.length - JV.OUTPUT_OFFSET[JV.OFFSET_IDX_BOTTOM];
+                    }
                 }
                 for (let i = 0; i < values.length; i++) {
                     // area[JV.IDX_TOP] = cell[JV.PROP_AREA][JV.PROP_TOP] + i * (ah / values.length) + me.offsetY + restTopH;

+ 6 - 1
app/public/report/js/rpt_jspdf.js

@@ -377,7 +377,12 @@ let JpcJsPDFHelper = {
                 const isCloseOutput = _chkIfCloseOutput(control, values.length, area, dftFontHeight);
                 let closeTopOffset = 0;
                 if (isCloseOutput) {
-                    closeTopOffset = (height - (dftFontHeight + 4) * values.length) / 2;
+                    closeTopOffset = (height - (dftFontHeight + 4) * values.length) / 2; // 默认居中对齐
+                    if (control[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_VERTICAL]] === 'top') {
+                        closeTopOffset = JV.OUTPUT_OFFSET[JV.OFFSET_IDX_TOP];
+                    } else if (control[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_VERTICAL]] === 'bottom') {
+                        closeTopOffset = height - (dftFontHeight + 4) * values.length - JV.OUTPUT_OFFSET[JV.OFFSET_IDX_BOTTOM];
+                    }
                 }
                 // if (control[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_CLOSE_OUTPUT]] === 'T') {
                 //     ah = (parseFloat(font[JV.FONT_PROPS[1]]) + JV.OUTPUT_OFFSET[JV.OFFSET_IDX_TOP] + JV.OUTPUT_OFFSET[JV.OFFSET_IDX_BOTTOM]) * values.length;

+ 8 - 2
app/public/report/js/rpt_print.js

@@ -491,7 +491,8 @@ function buildText(destRst, cell, font, control, offsetX, offsetY, adjustY, canv
             let innerDftFontHeight = (dftFontHeight * 3 / 4); //SVG的字体与canvas的字体大小的切换, 不用考虑取整
             if (control) {
                 if (control[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_VERTICAL]] === "top") {
-                    y = innerArea[JV.IDX_TOP] + JV.OUTPUT_OFFSET[JV.IDX_TOP];
+                    // y = innerArea[JV.IDX_TOP] + JV.OUTPUT_OFFSET[JV.IDX_TOP];
+                    y = innerArea[JV.IDX_TOP] + JV.OUTPUT_OFFSET[JV.IDX_TOP] + innerDftFontHeight + JV.OUTPUT_OFFSET[JV.IDX_TOP] + 2; // 向上对齐
                 } else if (control[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_VERTICAL]] === "bottom") {
                     y = innerArea[JV.IDX_BOTTOM] - JV.OUTPUT_OFFSET[JV.IDX_BOTTOM];
                 } else if (control[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_VERTICAL]] === "center") {
@@ -565,7 +566,12 @@ function buildText(destRst, cell, font, control, offsetX, offsetY, adjustY, canv
     const isCloseOutput = _chkIfCloseOutput(control, values.length, area, orgFontHeight);
     let closeTopOffset = 0;
     if (isCloseOutput) {
-        closeTopOffset = (height - (orgFontHeight + 4) * values.length) / 2;
+        closeTopOffset = (height - (orgFontHeight + 4) * values.length) / 2; // 默认居中对齐
+        if (control[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_VERTICAL]] === 'top') {
+            closeTopOffset = JV.OUTPUT_OFFSET[JV.OFFSET_IDX_TOP];
+        } else if (control[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_VERTICAL]] === 'bottom') {
+            closeTopOffset = height - (orgFontHeight + 4) * values.length - JV.OUTPUT_OFFSET[JV.OFFSET_IDX_BOTTOM];
+        }
     }
     for (let vidx = 0; vidx < values.length; vidx++) {
         // area[JV.IDX_TOP] = top + vidx * (ah / values.length) + restTopH;