Ver código fonte

巡回卡打印跨页

zengfanwei 1 mês atrás
pai
commit
2548cb97b5

+ 49 - 30
src/views/hospitalization/nurse-module/PrintInfusionCard.vue

@@ -211,7 +211,7 @@ const execPrint = () => {
     let prntContent = document.getElementById("infusion_list").innerHTML
     // console.log("prntContent",prntContent)
     let printHTML = ""
-    const prntStyle = `<style>td{border: 1px solid black;
+    const printStyle = `<style>td{border: 1px solid black;
     font-size: 12px;padding: 2px;}</style>`
     if (patientInfusionInfos.value.length == 1) {
       let id = queryParams.cardType === 'INFUSION_CARD'
@@ -219,34 +219,53 @@ const execPrint = () => {
       printHTML = document.getElementById(id).innerHTML
       LODOP.PRINT_INIT('infusionCard')
       LODOP.SET_PRINT_PAGESIZE(1, '210mm', '297mm', '')
-      LODOP.ADD_PRINT_HTML('0mm', '0mm', '210mm', '297mm', prntStyle + '<body style:"display: flex;justify-content: center;align-items: center;">' + printHTML + '</body>')
+      LODOP.ADD_PRINT_HTML('0mm', '0mm', '210mm', '297mm', printStyle + '<body style:"display: flex;justify-content: center;align-items: center;">' + printHTML + '</body>')
       LODOP.SET_PRINT_STYLE('ItemType', 3)
       LODOP.PREVIEW();
     } else {
+      LODOP.PRINT_INIT('infusionCard')
+      LODOP.SET_PRINT_PAGESIZE(1, '210mm', '297mm', '')
+      let PAGE_MAX_HEIGHT = 1050
+      let pageHeightNow = 0
+      let currentPageHTML = '';
       for (let i = 0; i < patientInfusionInfos.value.length; i++) {
         let info = patientInfusionInfos.value[i]
-        let id = queryParams.cardType === 'INFUSION_CARD'
-          ? info.patInfo.patNo : info.patInfo.patNo + '-' + i
-        let printCount = queryParams.cardType === 'INFUSION_CARD'
-          ? 3 : 6
-        // console.log("printCount",printCount)
-        if (i !== 0 && ((i + 1) % printCount == 0 || i == patientInfusionInfos.value.length - 1)) {
-          // console.log("printIndex",i)
-          printHTML = document.getElementById(id).innerHTML + printHTML
-          let printFinal = prntStyle + '<body><div style:"width:600px;display: flex;justify-content: center;align-items: center;flex-wrap: wrap;">' + printHTML + '</div></body>';
-          console.log("printFinal", printFinal)
-          LODOP.PRINT_INIT('infusionCard')
-          LODOP.SET_PRINT_PAGESIZE(1, '210mm', '297mm', '')
-          // LODOP.ADD_PRINT_HTML('0mm', '0mm', '210mm', '297mm',prntStyle + '<body style:"width:800px;display: flex;justify-content: center;align-items: center;flex-wrap: wrap;">' + printHTML + '</body>' )
-          LODOP.ADD_PRINT_HTML('0mm', '0mm', '210mm', '297mm', printFinal)
-          LODOP.SET_PRINT_STYLE('ItemType', 3)
-          // LODOP.PREVIEW();  
-          LODOP.PRINT()
-          printHTML = ""
+        let printTarget = document.getElementById(info.patInfo.patNo)
+        console.log('printTarget', printTarget)
+        if (pageHeightNow + printTarget.offsetHeight > PAGE_MAX_HEIGHT) {
+          LODOP.ADD_PRINT_HTML('0mm', '0mm', '210mm', '297mm', printStyle + currentPageHTML);
+          LODOP.NewPage(); // 开启新页
+          // 新页初始化:当前行作为新页的第一行
+          currentPageHTML = printTarget.innerHTML;
+          pageHeightNow = printTarget.offsetHeight;
         } else {
-          printHTML += document.getElementById(id).innerHTML
+          pageHeightNow += printTarget.offsetHeight
+          currentPageHTML += printTarget.innerHTML
         }
+        // let info = patientInfusionInfos.value[i]
+        // let id = queryParams.cardType === 'INFUSION_CARD'
+        //   ? info.patInfo.patNo : info.patInfo.patNo + '-' + i
+        // let printCount = queryParams.cardType === 'INFUSION_CARD'
+        //   ? 3 : 6
+        // // console.log("printCount",printCount)
+        // if (i !== 0 && ((i + 1) % printCount == 0 || i == patientInfusionInfos.value.length - 1)) {
+        //   // console.log("printIndex",i)
+        //   printHTML = document.getElementById(id).innerHTML + printHTML
+        //   let printFinal = printStyle + '<body><div style:"width:600px;display: flex;justify-content: center;align-items: center;flex-wrap: wrap;">' + printHTML + '</div></body>';
+        //   console.log("printFinal", printFinal)
+
+        //   // LODOP.ADD_PRINT_HTML('0mm', '0mm', '210mm', '297mm',printStyle + '<body style:"width:800px;display: flex;justify-content: center;align-items: center;flex-wrap: wrap;">' + printHTML + '</body>' )
+        //   LODOP.ADD_PRINT_HTML('0mm', '0mm', '210mm', '297mm', printFinal)
+        //   LODOP.SET_PRINT_STYLE('ItemType', 3)
+        //   LODOP.PREVIEW();
+        //   // LODOP.PRINT()
+        //   printHTML = ""
+        // } else {
+        //   printHTML += document.getElementById(id).innerHTML
+        // }
       }
+      LODOP.ADD_PRINT_HTML('0mm', '0mm', '210mm', '297mm', printStyle + currentPageHTML);
+      LODOP.PREVIEW()
     }
     updatePrintState()
   } else {
@@ -257,13 +276,13 @@ const execPrint = () => {
       LODOP.PRINT_INIT('infusionCard');
       LODOP.SET_PRINT_PAGESIZE(1, '210mm', '297mm', '');
 
-      const prntStyle = `<style>
+      const printStyle = `<style>
   .card-container { display: inline-block;  } /* 一行3个,预留间距 */
   td { border: 1px solid black; font-size: 12px; padding: 2px; }
 </style>`;
 
       const PAGE_MAX_HEIGHT = 1100; // 页面最大高度阈值(px)
-      let currentPageHTML = prntStyle; // 当前页内容
+      let currentPageHTML = printStyle; // 当前页内容
       let currentPageTotalHeight = 0; // 当前页累计高度(px)
       let currentRowElements = []; // 当前行的元素
       let currentRowMaxHeight = 0; // 当前行最高元素高度(px)
@@ -291,7 +310,7 @@ const execPrint = () => {
             LODOP.NewPage(); // 开启新页
 
             // 新页初始化:当前行作为新页的第一行
-            currentPageHTML = prntStyle;
+            currentPageHTML = printStyle;
             currentPageTotalHeight = currentRowMaxHeight;
           } else {
             // 不需要分页,累加当前行高度
@@ -318,7 +337,7 @@ const execPrint = () => {
         if (totalHeightAfterAdd > PAGE_MAX_HEIGHT) {
           LODOP.ADD_PRINT_HTML('0mm', '0mm', '210mm', '297mm', currentPageHTML);
           LODOP.NewPage();
-          currentPageHTML = prntStyle;
+          currentPageHTML = printStyle;
           currentPageTotalHeight = currentRowMaxHeight;
         } else {
           currentPageTotalHeight = totalHeightAfterAdd;
@@ -345,7 +364,7 @@ const execPrint = () => {
       // let rowCount = 0;
       // let isWarp = false;
       // let isRowHeightNew = true
-      // const prntStyle = `<style>td{border: 1px solid black;
+      // const printStyle = `<style>td{border: 1px solid black;
       //   font-size: 12px;padding: 2px;}</style>`
       // patientInfusionInfos.value.forEach((item, index) => {
       //   let printTarget = document.getElementById(item.patInfo.patNo + '-' + index);
@@ -365,7 +384,7 @@ const execPrint = () => {
       //       // 此时超出一页
       //       // LODOP.PRINT()
       //       rowCount = 0
-      //       LODOP.ADD_PRINT_HTML('0mm', '0mm', '210mm', '297mm', prntStyle + printHTML)
+      //       LODOP.ADD_PRINT_HTML('0mm', '0mm', '210mm', '297mm', printStyle + printHTML)
       //       LODOP.NewPage(); // 关键:开启新页
       //       printHTML = printTarget.outerHTML;
       //       pageHeightNow = pageHeighInRow;
@@ -391,13 +410,13 @@ const execPrint = () => {
       //   }
       // });
       // if (printHTML) {
-      //   LODOP.ADD_PRINT_HTML('0mm', '0mm', '210mm', '297mm', prntStyle + printHTML);
+      //   LODOP.ADD_PRINT_HTML('0mm', '0mm', '210mm', '297mm', printStyle + printHTML);
       // }
       // let prntContent1 = document.getElementById("print-test").innerHTML
       // let flexStyles = getStyleText('.print-bottle-card-area');
-      // // const prntStyle = `<style>${flexStyles}td{border: 1px solid black;
+      // // const printStyle = `<style>${flexStyles}td{border: 1px solid black;
       // // font-size: 12px;padding: 2px;}</style>`
-      // // let printFinal = prntStyle + prntContent1
+      // // let printFinal = printStyle + prntContent1
       // // console.log("prntContent1", prntContent1)
       // // LODOP.ADD_PRINT_HTML('0mm', '0mm', '210mm', '297mm', printFinal)
       // // LODOP.SET_PRINT_STYLE('ItemType', 3)