From d098e2e3a16837ad0a61c1a2df93b27c7d16bfd2 Mon Sep 17 00:00:00 2001
From: zhouwx <1175765986@qq.com>
Date: 星期五, 06 九月 2024 17:10:29 +0800
Subject: [PATCH] 批量导入

---
 src/views/hazardousChemicals/electronicWarehouse/components/viewQR.vue |   79 ++++++++++++++++++++++++++++++++++++---
 1 files changed, 72 insertions(+), 7 deletions(-)

diff --git a/src/views/hazardousChemicals/electronicWarehouse/components/viewQR.vue b/src/views/hazardousChemicals/electronicWarehouse/components/viewQR.vue
index a7dd3b3..a8f124d 100644
--- a/src/views/hazardousChemicals/electronicWarehouse/components/viewQR.vue
+++ b/src/views/hazardousChemicals/electronicWarehouse/components/viewQR.vue
@@ -7,12 +7,24 @@
         :close-on-press-escape="false"
         :close-on-click-modal="false"
     >
+      <div style="display: flex;flex-direction: column;align-items: flex-end">
+        <el-button type="primary" style="margin-bottom: 5px" @click="printCode">打印</el-button>
+      </div>
       <el-card style="max-width: 480px">
-        <div style="display: flex;flex-direction: column;align-items: center;font-size: 20px;font-weight: 600">
-          <span>{{title}}</span>
-          <vue-qr :size="150" :margin="0" :auto-color="true" :dot-scale="1" :text="state.form.code" style="margin: 10px 0 10px 0"></vue-qr>
-          <span>{{state.form.code}}</span>
+        <div :id="state.form.code">
+          <div style="display: flex;flex-direction: column;align-items: center;justify-content: center;">
+            <div style="font-size:14px;margin-bottom: 2px" id="codeTitle">{{title}}</div>
+            <vue-qr :size="100" :correctLevel="3" colorDark="black" :margin="0" :auto-color="true"  :text="state.form.code"></vue-qr>
+            <div style="font-size:10px;margin-top: 2px">{{state.form.code}}</div>
+          </div>
         </div>
+<!--        <div :id="state.form.code">-->
+<!--          <div style="display: flex;flex-direction: column;align-items: center;justify-content: center">-->
+<!--            <span style="font-size:14px;margin-bottom: 2px">{{title}}</span>-->
+<!--            <vue-qr :size="100" :correctLevel="3" colorDark="black" :margin="0" :auto-color="true"  :text="state.form.code" ></vue-qr>-->
+<!--            <span style="font-size:10px;margin-top: 2px">{{state.form.code}}</span>-->
+<!--          </div>-->
+<!--        </div>-->
       </el-card>
     </el-dialog>
   </div>
@@ -34,18 +46,71 @@
 
 const openDialog = async (type,value) => {
   if(type == 'pro'){
-    title.value = value.productBasic.name + ' ' + '—' + ' '+ value.productBasic.productSn
+    title.value = value.productBasic.name   + '—'  + value.productBasic.productSn
   }else {
-    title.value = value.hazmatBasic.name + ' ' + '—' + ' '+ value.hazmatBasic.productSn
+    title.value = value.hazmatBasic.name  + '—' + value.hazmatBasic.productSn
   }
 
-  state.form = value;
+  state.form = JSON.parse(JSON.stringify(value));
   dialogVisible.value = true;
 }
 const handleClose = () => {
   dialogVisible.value = false;
   emit("getList")
 }
+const printCode = () => {
+  let data = []
+  data = [state.form]
+  let qrCodes=''
+  for(let index in data){
+    console.log(index,'index')
+    qrCodes+=`<div class="my-list-col"><div class="centered-content changeFont">${document.getElementById(data[index].code).innerHTML}</div></div>`
+  }
+  const printContent=document.createElement('div')
+  printContent.innerHTML=qrCodes
+
+  //创建一个新的隐藏的iframe元素
+  const printFrame =document.createElement('iframe')
+  printFrame.style.display='none'
+  document.body.appendChild(printFrame)
+
+  const printDocument=printFrame.contentWindow.document
+  printDocument.open()
+  printDocument.write(`
+  <html>
+  <head>
+    <title>Print</title>
+    <style>
+      @media print {
+        .page-break { page-break-after:always;} /* 定义分页符格式*/
+        .centered-content { display: flex;justify-content: center; align-items: center;height: 90vh;} /* 居中对齐内容*/
+        @page { size:50mm 40mm;margin:0mm; }
+         .changeFont{font-size:12px;transform: scale(0.8);-webkit-transform: scale(0.85);}
+      }
+    </style>
+  </head>
+  <body style='margin:0;padding:0;'>${printContent.innerHTML}</body>
+  </html>
+  `)
+  printDocument.close()
+  let ct = document.getElementById('codeTitle').offsetWidth
+  console.log('ct',ct)
+  //在打印窗口中调用打印功能
+  // debugger
+  // if(ct >= 180) {
+
+  // }else {
+  //
+  //   printFrame.contentWindow.document.body.style.zoom = '100%'
+  // }
+
+
+  printFrame.contentWindow.print()
+  //移除隐藏的iframe元素
+  document.body.removeChild(printFrame)
+  // handleClose()
+}
+
 defineExpose({
   openDialog
 });

--
Gitblit v1.9.2