From f8c3c53f9e29541f8c0e3fcbf682c301fd17e06a Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期一, 23 十一月 2020 17:49:23 +0800
Subject: [PATCH] 2020-11-23

---
 src/views/billprint/index.jsx |  118 +++++++++++++++++++++++++++--------------------------------
 1 files changed, 54 insertions(+), 64 deletions(-)

diff --git a/src/views/billprint/index.jsx b/src/views/billprint/index.jsx
index eda3914..0800086 100644
--- a/src/views/billprint/index.jsx
+++ b/src/views/billprint/index.jsx
@@ -107,29 +107,39 @@
         }
 
         config.style = config.style || {}
-        config.zoom = 1
+        config.pageSize = ['A4', 'A3', 'A5'].includes(config.pageSize) ? config.pageSize : 'A4'
+        config.pageLayout = config.pageLayout !== 'horizontal' ? 'vertical' : 'horizontal'
+        config.pagePadding = config.pagePadding !== 'without' ? 'default' : 'without'
 
-        if (config.pageSize === 'A3') {
-          if (config.pageLayout === 'horizontal') {
-            config.zoom = 1.35
-            config.style.height = 845
-          } else {
-            config.style.height = 1695
-          }
-        } else if (config.pageSize === 'A5') {
-          config.zoom = 0.7
-          if (config.pageLayout === 'horizontal') {
-            config.style.height = 840
-          } else {
-            config.style.height = 1700
-          }
-        } else {
-          if (config.pageLayout === 'horizontal') {
-            config.style.height = 845
-          } else {
-            config.style.height = 1680
+        let pageParam = {
+          A4: {
+            vertical: 1000,
+            horizontal: 1200,
+            verticaldefault: 1.45789,
+            verticalwithout: 1.41428,
+            horizontaldefault: 0.685,
+            horizontalwithout: 0.705,
+          },
+          A3: {
+            vertical: 1200,
+            horizontal: 1600,
+            verticaldefault: 1.44404,
+            verticalwithout: 1.41414,
+            horizontaldefault: 0.6923,
+            horizontalwithout: 0.707,
+          },
+          A5: {
+            vertical: 700,
+            horizontal: 1000,
+            verticaldefault: 1.482,
+            verticalwithout: 1.417,
+            horizontaldefault: 0.6736,
+            horizontalwithout: 0.7047,
           }
         }
+
+        config.width = pageParam[config.pageSize][config.pageLayout]
+        config.style.height = Math.floor(config.width * pageParam[config.pageSize][config.pageLayout + config.pagePadding])
 
         let params = []
         let _pars = []
@@ -457,55 +467,35 @@
 
   print = () => {
     const { config } = this.state
-
     let jubuData = document.getElementById('bill-print').innerHTML
-    window.document.body.innerHTML = jubuData
-    document.getElementsByTagName('body')[0].style.width = '1200px'
-    document.getElementsByTagName('body')[0].style.margin = '0 auto'
-    document.getElementsByTagName('body')[0].style.zoom = config.zoom
-
+    
     try {
-      if (window.ActiveXObject) {
-        let hkeyRoot
-        let hkeyPath
-        let hkeyKey
-        // eslint-disable-next-line
-        let RegWsh = new ActiveXObject('WScript.Shell')
+      let iframe = document.createElement('IFRAME')
+      let linkList = document.getElementsByTagName('link')     // 鑾峰彇鐖剁獥鍙ink鏍囩瀵硅薄鍒楄〃
+      let styleList = document.getElementsByTagName('style')   // 鑾峰彇鐖剁獥鍙tyle鏍囩瀵硅薄鍒楄〃
 
-        hkeyRoot = 'HKEY_CURRENT_USER'
-        hkeyPath = '\\Software\\Microsoft\\Internet Explorer\\PageSetup\\'
-
-        // 璁剧疆椤电湁/鑴氱殑瀛椾綋鏍峰紡
-        hkeyKey = 'font'
-        RegWsh.RegWrite(hkeyRoot + hkeyPath + hkeyKey, 'font-size: 12px; font-family: 榛戜綋; line-height: 24px')
-
-        // 璁剧疆椤电湁
-        hkeyKey = 'header'
-        RegWsh.RegWrite(hkeyRoot + hkeyPath + hkeyKey, '鎵撳嵃缂栧彿')
-
-        // 璁剧疆椤佃剼
-        hkeyKey = 'footer'
-        RegWsh.RegWrite(hkeyRoot + hkeyPath + hkeyKey, '&b绗� &p 椤�/鍏� &P 椤�')
-
-        // 璁剧疆椤佃竟璺�(0.6 瑕佷箻浠� 2.5涓哄疄闄呮墦鍗扮殑灏哄)
-        hkeyKey = 'margin_bottom'
-        RegWsh.RegWrite(hkeyRoot + hkeyPath + hkeyKey, '0.6')
-
-        hkeyKey = 'margin_left'
-        RegWsh.RegWrite(hkeyRoot + hkeyPath + hkeyKey, '0.6')
-
-        hkeyKey = 'margin_right'
-        RegWsh.RegWrite(hkeyRoot + hkeyPath + hkeyKey, '0.6')
-
-        hkeyKey = 'margin_top'
-        RegWsh.RegWrite(hkeyRoot + hkeyPath + hkeyKey, '0.6')
-
-        window.print()
-      } else {
-        window.print()
+      document.body.appendChild(iframe)
+      let doc = iframe.contentWindow.document
+      
+      doc.open()
+      doc.write(`<!DOCTYPE html><html lang="en"><head>`)
+      for (let i = 0;i < linkList.length;i++) {
+        if (linkList[i].type === 'text/css') {
+          doc.write(`<LINK rel="stylesheet" type="text/css" href="${linkList[i].href}">`)
+        }
       }
+      doc.write(`<style>body{width: ${config.width}px!important;}</style>`)
+      for (let i = 0;i < styleList.length;i++) {
+        doc.write('<style>' + styleList[i].innerHTML + '</style>')
+      }
+      doc.write(`</head><body>`)
+      doc.write(jubuData)
+      doc.write(`</body></html>`)
+      doc.close()
+      iframe.contentWindow.focus()
+      iframe.contentWindow.print()
 
-      document.getElementsByTagName('body')[0].style.zoom = 1
+      document.body.removeChild(iframe)
 
       setTimeout(() => {
         window.close()

--
Gitblit v1.8.0