Bläddra i källkod

Merge branch 'master' of 172.16.32.165:lighter/vue-intergration-platform

lihong 1 år sedan
förälder
incheckning
18d150ba42
1 ändrade filer med 79 tillägg och 39 borttagningar
  1. 79 39
      src/components/inpatient/WristStrap.vue

+ 79 - 39
src/components/inpatient/WristStrap.vue

@@ -1,63 +1,103 @@
 <template>
-  <page-layer>
-    <template #header>
-      <el-button @click="horizontalPrint" type="primary">打印</el-button>
-    </template>
-    <template #main>
-      <div style="width: 800px; height: 50px; padding: 10px 0 10px 20px; background: silver;display: flex">
-        <div id="qrcode"></div>
-        <div style="width: 20px"></div>
-        <div>
-          <div id="person" style="font-size: 12px;font-weight: bold">姓名:一二三四五六七八九  /  性别:男  /  年龄:37</div>
-          <div id="department" style="font-size: 12px; margin-top: 5px;font-weight: bold">入院科室:呼吸内科</div>
-          <div id="contact" style="font-size: 12px; margin-top: 5px;font-weight: bold">紧急联系人:13698072587</div>
+  <div style="width:100%;height:100%;display: flex;align-items: center;justify-content: center">
+    <div style="display: flex">
+      <div>
+        <div style="width: 220px">
+          <el-select v-model="printer1" placeholder="请选择普通腕带打印机" style="width:100%">
+            <el-option v-for="item in printers" :key="item.code" :value="item.code" :label="item.name"></el-option>
+          </el-select>
+        </div>
+        <div style="margin-top: 4px">
+          <el-button @click="printNormalWristStrap" type="primary" style="width: 100%">打印普通腕带</el-button>
         </div>
       </div>
-    </template>
-  </page-layer>
+      <div style="width: 20px"></div>
+      <div>
+        <div style="width: 220px">
+          <el-select v-model="printer2" placeholder="请选择儿童腕带打印机" style="width:100%">
+            <el-option v-for="item in printers" :key="item.code" :value="item.code" :label="item.name"></el-option>
+          </el-select>
+        </div>
+        <div style="margin-top: 4px">
+          <el-button @click="printChildWristStrap" type="primary" style="width: 100%">打印儿童腕带</el-button>
+        </div>
+      </div>
+    </div>
+  </div>
 </template>
 
 <script setup>
-
 // 280mm * 30mm
-
 import { initLodop, getLodop } from '@/utils/c-lodop'
 import {onMounted} from "vue";
-import {qrcanvas} from "qrcanvas";
-import PageLayer from "@/layout/PageLayer.vue";
-
-const PRINTER_NAME = 'DASCOM DL-520Z'
-const inpatientNo = ref('0374562')
-
-const drawQrcoce = (inpatientNo) => {
-  const labelCanvas = qrcanvas({
-    data: inpatientNo,
-    size: '50',
-  })
-  document.getElementById('qrcode').appendChild(labelCanvas)
-}
+import {ElMessage} from "element-plus";
+
+let LODOP;
+const inpatientNo = ref('0420227')
+
+const printers = ref([])
+const printer1 = ref(null);
+const printer2 = ref(null);
 
-const horizontalPrint = () => {
-  let LODOP = getLodop()
+// SET_PRINT_PAGESIZE(intOrient, PageWidth,PageHeight,strPageName)
+// ADD_PRINT_HTM(Top,Left,Width,Height,strHtmlContent)
+const printNormalWristStrap = () => {
+  if (!printer1.value) {
+    ElMessage({
+      type: 'warning',
+      message: '请选择打印机!'
+    })
+    return
+  }
+  LODOP = getLodop();
   LODOP.PRINT_INIT('inpatient_info2')
-  LODOP.SET_PRINTER_INDEX(PRINTER_NAME)
+  LODOP.SET_PRINTER_INDEX(printer1.value)
   LODOP.SET_PRINT_PAGESIZE(2, 0, 0, '')
   LODOP.SET_PRINT_STYLE('FontSize', 9)
   LODOP.SET_PRINT_STYLE('Bold', 1)
-
   LODOP.ADD_PRINT_BARCODE('7mm', '30mm', '18.5mm', '18.5mm', 'QRCode', inpatientNo.value)
+  LODOP.ADD_PRINT_TEXT('8mm', '50mm', '220mm', '7mm', '姓名:陈晓莺 / 性别:女 / 年龄:56')
+  LODOP.ADD_PRINT_TEXT('14mm', '50mm', '220mm', '7mm', '入院科室:脊柱外科')
+  LODOP.ADD_PRINT_TEXT('20mm', '50mm', '220mm', '7mm', '紧急联系人:13908453983')
+  LODOP.PREVIEW()
+}
 
-  // ADD_PRINT_HTM(Top,Left,Width,Height,strHtmlContent)
-  LODOP.ADD_PRINT_TEXT('8mm', '50mm', '220mm', '7mm', document.getElementById('person').innerHTML)
-  LODOP.ADD_PRINT_TEXT('14mm', '50mm', '220mm', '7mm', document.getElementById('department').innerHTML)
-  LODOP.ADD_PRINT_TEXT('20mm', '50mm', '220mm', '7mm', document.getElementById('contact').innerHTML)
-
+const printChildWristStrap = () => {
+  if (!printer2.value) {
+    ElMessage({
+      type: 'warning',
+      message: '请选择打印机!'
+    })
+    return
+  }
+  LODOP = getLodop()
+  LODOP.PRINT_INIT('inpatient_info3')
+  LODOP.SET_PRINTER_INDEX(printer2.value)
+  LODOP.SET_PRINT_PAGESIZE(2, 0, 0, '')
+  LODOP.SET_PRINT_STYLE('FontSize', 5)
+  LODOP.SET_PRINT_STYLE('Bold', 1)
+  LODOP.ADD_PRINT_BARCODE('10mm', '27mm', '15mm', '15mm', 'QRCode', inpatientNo.value)
+  LODOP.ADD_PRINT_TEXT('11mm', '40mm', '50mm', '3mm', '姓名:陈晓莺 / 性别:女 / 年龄:12')
+  LODOP.ADD_PRINT_TEXT('15mm', '40mm', '50mm', '3mm', '入院科室:脊柱外科')
+  LODOP.ADD_PRINT_TEXT('18.5mm', '40mm', '50mm', '3mm', '紧急联系人:13908453983')
   LODOP.PREVIEW()
 }
 
+const getPrinters = () => {
+  LODOP = getLodop()
+  var count = LODOP.GET_PRINTER_COUNT();
+  for (var i = 0; i < count; i++) {
+    //根据设备序号获取设备名
+    var printerName = LODOP.GET_PRINTER_NAME(i);
+    printers.value.push({code: i, name: printerName})
+  }
+}
+
 onMounted(() => {
   initLodop()
-  drawQrcoce(inpatientNo.value)
+  setTimeout(() => {
+    getPrinters()
+  }, 500)
 })
 
 </script>