From b5b941ea3bf47ed36bf21ca072eb792fc3386c12 Mon Sep 17 00:00:00 2001
From: chenhaozhe <cgz@hz-kingdee.com>
Date: 星期一, 15 十二月 2025 09:55:21 +0800
Subject: [PATCH] 网页打印 纸张大小配置为 根据 模板设置的默认尺寸大小

---
 .env.staging                              |    2 
 src/views/component/printList/barcode.vue |   93 ++++++++++++++++++++++++++++------------------
 2 files changed, 57 insertions(+), 38 deletions(-)

diff --git a/.env.staging b/.env.staging
index 1a84e05..ceed279 100644
--- a/.env.staging
+++ b/.env.staging
@@ -9,7 +9,7 @@
 ENV = 'staging'
 
 # 鏅轰簯杩堟�滾-MOM绠$悊绯荤粺/娴嬭瘯鐜
-VUE_APP_BASE_API = 'http://192.168.0.51:81/API/'
+VUE_APP_BASE_API = 'http://localhost:81/API/'
 
 # 璺敱鎳掑姞杞�
 VUE_CLI_BABEL_TRANSPILE_MODULES = true
diff --git a/src/views/component/printList/barcode.vue b/src/views/component/printList/barcode.vue
index a640440..03101c2 100644
--- a/src/views/component/printList/barcode.vue
+++ b/src/views/component/printList/barcode.vue
@@ -1,13 +1,15 @@
 <template>
-  <div>
-    <button @click="getTemp">鎵撳嵃</button>
-    <div id="report_holder"> </div>
+  <div style="padding: 10px">
+    <el-button type="primary" @click="getTemp">鎵撳嵃</el-button>
+    <!-- <el-button type="primary" @click="getTempMeta">鑾峰彇鍏冩暟鎹�</el-button> -->
+    <div id="report_holder"></div>
   </div>
 </template>
 
 <script>
-import PrintJS from 'print-js'
+import PrintJS from "print-js";
 import axios from "axios";
+import { watch } from "vue";
 export default {
   name: "HBarPlanPrintWeb",
   data() {
@@ -16,7 +18,7 @@
       handleMessage: this.$route.query,
       pageSize: {
         width: 0,
-        height: 0
+        height: 0,
       },
       reportViewer: null,
       baseUrl: process.env.VUE_APP_BASE_API,
@@ -24,17 +26,27 @@
         recordset: [],
       },
       grfPath: "",
-
-    }
+    };
   },
   async mounted() {
     // 鑾峰彇 鎵撳嵃鐨勬暟鎹�
-    await this.getPrintData()
-
+    await this.getPrintData();
+    // 鑾峰彇鎵撳嵃绾稿紶澶у皬
     rubylong.grhtml5.barcodeURL = this.baseUrl + "/Utility/Barcode.ashx";
-    this.reportViewer = rubylong.grhtml5.insertReportViewer("report_holder", this.grfPath,  this.json_data.recordset,
+    this.reportViewer = rubylong.grhtml5.insertReportViewer(
+      "report_holder",
+      this.grfPath,
+      this.json_data
     );
     this.reportViewer.start();
+  },
+  watch: {
+    // 鐩戝惉reportViewer鏄惁宸茬粡鏋勫缓瀹屾垚锛屾瀯寤哄畬鎴愬悗 鑾峰彇grf鏂囦欢鐨勬墦鍗伴〉闈㈠ぇ灏�
+    'reportViewer.generated'(newVal, oldVal) {
+      if(newVal == true) {
+        this.getTempMeta()
+      }
+    },
   },
   methods: {
     getUrlVars_JSON() {
@@ -45,6 +57,7 @@
       return datajson;
     },
     async getPrintData() {
+      // 鍦ㄥぇ鎵归噺鎵撳嵃鐨勬椂鍊� url闀垮害鍙兘瓒単et鍏佽鐨勯暱搴� 鍚庣闇�鎸夐渶姹� 鏀规垚POST璇锋眰
       let OpenTmp = decodeURIComponent(this.$route.query.OpenTmp);
       let sql = "";
       if (this.$route.query.Type == "Kf_SellOutBillList") {
@@ -78,51 +91,59 @@
               GROUP BY CEILING(CAST(t.row_num AS FLOAT) / 2)
               ORDER BY orderid;`;
       }
-      try{
-        let res =  await axios.get(this.baseURL + "/CommonModel/searchMethod", {
+      try {
+        let res = await axios.get(this.baseUrl + "/CommonModel/searchMethod", {
           params: {
             sql: sql,
             user: sessionStorage["HUserName"],
             ModRightNameCheck: "",
             // , "HSubID": data[i].hsubid
           },
-        })
+        });
         // 灏� 娓叉煋鏁版嵁 鍜� 妯℃澘鍔犺浇鍒版湰鍦�
         let result = res.data;
-          this.json_data.recordset = result.data;
-          this.grfPath = "./static/grf/" + OpenTmp + ".grf"
-          console.log(this.json_data);
-      }catch(err) {
+        this.json_data.recordset = result.data;
+        this.grfPath = "./static/grf/" + OpenTmp + ".grf";
+        console.log(this.json_data);
+      } catch (err) {
         this.$modal.msgError("鎺ュ彛璇锋眰澶辫触!" + err);
       }
-
+    },
+    getTempMeta() {
+      let grfMeta = JSON.parse(this.reportViewer.reportText);
+      console.log("grfMeta", grfMeta)
+      this.pageSize.width = grfMeta.Printer.Width * 10 + "mm";
+      this.pageSize.height = grfMeta.Printer.Height * 10 + "mm";
+      console.log("pageSize: ",this.pageSize)
     },
     getTemp() {
       // 瀵规瘡涓鎵撳嵃鐨勫璞℃坊鍔犲垎椤�
-      let docs = document.querySelectorAll('[_grrecno]')
-      this.pageSize.width = docs[0].offsetWidth
-      this.pageSize.height = docs[0].offsetHeight
+      let docs = document.querySelectorAll("[_grrecno]");
+      // this.pageSize.width = docs[0].offsetWidth;
+      // this.pageSize.height = docs[0].offsetHeight;
       docs.forEach((elem, index) => {
-        elem.classList.add('printable')
-      })
-      let styles = document.querySelectorAll('[id^="_gridcss"]')
-      this.styleList.push(...styles)
+        elem.classList.add("printable");
+      });
+      let styles = document.querySelectorAll('[id^="_gridcss"]');
+      this.styleList.push(...styles);
 
-      this.execPrint()
+      this.execPrint();
     },
     execPrint() {
       PrintJS({
-        printable: 'report_holder',
+        printable: "report_holder",
         scanStyles: false,
-        type: 'html',
-        style: this.styleList[0].innerText + ` @media print {
+        type: "html",
+        style:
+          this.styleList[0].innerText +
+          ` @media print {
             .printable {
               page-break-inside: avoid;
               page-break-after: always;
             }
 
             @page {
-              size: ${this.pageSize.width + 1}px ${this.pageSize.height + 1}px;
+              size: ${this.pageSize.width} ${this.pageSize.height};
               margin: 0;
               padding: 0;
             }
@@ -132,12 +153,10 @@
               padding: 0;
             }
         `,
-      })
-
-
-    }
-  }
-}
+      });
+    },
+  },
+};
 </script>
 
-<style></style>
\ No newline at end of file
+<style></style>

--
Gitblit v1.9.1