Bläddra i källkod

增加试剂耗材条码标签打印

cyy 2 dagar sedan
förälder
incheckning
fde2c342c8

+ 19 - 14
src/business/platform/data/templaterender/templates/list.vue

@@ -1027,12 +1027,12 @@ export default {
         if (event.key === 'Enter' || event.keyCode === 13) {
         if (event.key === 'Enter' || event.keyCode === 13) {
           // 检查焦点是否在可编辑元素中
           // 检查焦点是否在可编辑元素中
           const activeElement = document.activeElement
           const activeElement = document.activeElement
-          const isInEditableElement = 
+          const isInEditableElement =
             activeElement.tagName === 'INPUT' ||
             activeElement.tagName === 'INPUT' ||
             activeElement.tagName === 'TEXTAREA' ||
             activeElement.tagName === 'TEXTAREA' ||
             activeElement.tagName === 'SELECT' ||
             activeElement.tagName === 'SELECT' ||
             activeElement.contentEditable === 'true'
             activeElement.contentEditable === 'true'
-          
+
           // 如果焦点在可编辑元素中,让原生事件处理(如搜索表单的handleEnter)
           // 如果焦点在可编辑元素中,让原生事件处理(如搜索表单的handleEnter)
           // 如果焦点不在可编辑元素中,则触发查询
           // 如果焦点不在可编辑元素中,则触发查询
           if (!isInEditableElement) {
           if (!isInEditableElement) {
@@ -1042,11 +1042,11 @@ export default {
           }
           }
         }
         }
       }
       }
-      
+
       this.globalEnterHandler = handleGlobalEnter
       this.globalEnterHandler = handleGlobalEnter
       document.addEventListener('keydown', this.globalEnterHandler)
       document.addEventListener('keydown', this.globalEnterHandler)
     },
     },
-    
+
     /**
     /**
      * 移除全局回车键监听
      * 移除全局回车键监听
      */
      */
@@ -1056,24 +1056,26 @@ export default {
         this.globalEnterHandler = null
         this.globalEnterHandler = null
       }
       }
     },
     },
-    
+
     /**
     /**
      * 处理全局回车键事件
      * 处理全局回车键事件
      */
      */
     handleGlobalEnter() {
     handleGlobalEnter() {
       // 检查是否启用键盘回车查询功能(通过t_ipcc的setting里的内容)
       // 检查是否启用键盘回车查询功能(通过t_ipcc的setting里的内容)
-      const keyboardEnterEnabled = this.setting?.system?.keyboardEnterForsearch === true
-      
+      const keyboardEnterEnabled =
+        this.setting?.system?.keyboardEnterForsearch === true
+
       if (!keyboardEnterEnabled) {
       if (!keyboardEnterEnabled) {
         return // 未启用键盘回车查询功能,直接返回
         return // 未启用键盘回车查询功能,直接返回
       }
       }
-      
+
       // 检查是否有查询按钮权限
       // 检查是否有查询按钮权限
-      const hasSearchButton = this.listConfig.toolbars && 
-        this.listConfig.toolbars.some(button => 
-          button.button_type === 'search' || button.key === 'search'
+      const hasSearchButton =
+        this.listConfig.toolbars &&
+        this.listConfig.toolbars.some(
+          (button) => button.button_type === 'search' || button.key === 'search'
         )
         )
-      
+
       if (hasSearchButton) {
       if (hasSearchButton) {
         // 模拟点击查询按钮
         // 模拟点击查询按钮
         // 数据模板列表查询数据前先清除已选中数据,(弹框除外)
         // 数据模板列表查询数据前先清除已选中数据,(弹框除外)
@@ -1084,7 +1086,7 @@ export default {
         this.search()
         this.search()
       }
       }
     },
     },
-    
+
     /**
     /**
      * 处理分页事件
      * 处理分页事件
      */
      */
@@ -1153,7 +1155,10 @@ export default {
     scanOff(val) {
     scanOff(val) {
       this.scanVisible = false
       this.scanVisible = false
       this.scanName = ''
       this.scanName = ''
-      this.search()
+      // false:打印类弹窗关闭,无需刷新;其它业务刷新当前页(不重置到第一页)
+      if (val !== 'noRefresh') {
+        this.search()
+      }
     },
     },
     resetSearchForm() {
     resetSearchForm() {
       if (this.$refs['searchForm']) {
       if (this.$refs['searchForm']) {

+ 209 - 0
src/views/system/jbdScan/goods/tag.vue

@@ -0,0 +1,209 @@
+<template>
+  <div class="bg">
+    <el-dialog
+      width="21cm"
+      height="10cm"
+      :modal-append-to-body="true"
+      :append-to-body="true"
+      title="样品标签"
+      :visible.sync="dialogVisible"
+      @close="close"
+    >
+      <!-- 表单是否显示 -->
+      <div style="height: 500px">
+        <div ref="qrcode" id="box">
+          <vue-easy-print tableShow ref="easyPrint" :onePageRow="onePageRow">
+            <div v-for="(item1, index1) in list" :key="index1">
+              <div v-for="(item2, index2) in parseInt(item1.num)" :key="index2">
+                <div class="All" style="font-family: sans-serif">
+                  <div class="tagBox">
+                    <div class="lh">
+                      <div>名称:</div>
+                      <div>{{ item1.name || '/' }}</div>
+                    </div>
+                    <div class="la">
+                      <div class="lh">
+                        <div>批号:</div>
+                        <div>{{ item1.serial || '/' }}</div>
+                      </div>
+                    </div>
+                    <div class="lh">
+                      <div>规格:</div>
+                      <div>{{ item1.type || '/' }}</div>
+                    </div>
+                    <div class="la">
+                      <div class="lh">
+                        <div>存储条件:</div>
+                        <div>{{ item1.condition || '/' }}</div>
+                      </div>
+                    </div>
+                    <div class="lh">
+                      <div>数量:</div>
+                      <div>{{ index2 + 1 }}/{{ item1.num }}支</div>
+                    </div>
+                    <div class="lh">
+                      <div>有效期至:</div>
+                      <div>{{ item1.time || '/' }}</div>
+                    </div>
+                    <div class="lh">
+                      <div>供应商/生产商:</div>
+                      <div>{{ item1.businesses || '/' }}</div>
+                    </div>
+
+                    <div class="ewm">
+                      <vue-barcode
+                        :value="item1.serial"
+                        :width="1.5"
+                        :height="15"
+                        :margin="0"
+                        :displayValue="false"
+                      ></vue-barcode>
+                    </div>
+                  </div>
+                </div>
+              </div>
+            </div>
+          </vue-easy-print>
+        </div>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="printDemo">打印标签</el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import VueBarcode from 'vue-barcode'
+import vueEasyPrint from 'vue-easy-print'
+
+export default {
+  components: {
+    VueBarcode,
+    vueEasyPrint
+  },
+  props: {
+    obj: {
+      default: [],
+      type: Array
+    },
+    onePageRow: {
+      type: Number,
+      default: 3
+    },
+    blankLines: {
+      type: Boolean,
+      default: true
+    },
+    scanVisible: {
+      type: Boolean,
+      default: false
+    }
+  },
+  data() {
+    return {
+      dialogVisible: false,
+      value: '',
+      id: '',
+      list: [],
+      visible: true
+    }
+  },
+  watch: {
+    obj() {
+      this.getInit()
+    },
+    scanVisible: {
+      handler(val) {
+        this.dialogVisible = val
+      },
+      immediate: true
+    }
+  },
+  created() {
+    this.getInit()
+  },
+  methods: {
+    close() {
+      this.dialogVisible = false
+      // 必须通知父组件把 scanVisible 置为 false,否则再次打开时值未变无法重新挂载
+      this.$emit('scanOff', 'noRefresh')
+    },
+    printDemo() {
+      this.$refs.easyPrint.print()
+    },
+    getInit() {
+      let list = []
+      this.obj.forEach((item) => {
+        let o = {
+          name: item.ming_cheng_,
+          serial: item.pi_hao_,
+          type: item.gui_ge_,
+          num: item.shu_liang_,
+          condition: item.cun_chu_tiao_jian,
+          time: item.xiao_qi_,
+          businesses: item.s_c_chang_jia_
+        }
+        list.push(o)
+      })
+      if (list.length == 0) {
+        this.$message({
+          message: '该样品信息有误,请联系开发人员!',
+          type: 'error'
+        })
+        this.close()
+      }
+      this.list = list
+    },
+
+    /* 关闭*/
+    remRedar() {
+      this.close()
+    },
+    dateFormat() {
+      // 获取当前时间
+      var date = new Date()
+      var year = date.getFullYear()
+      var month =
+        date.getMonth() + 1 < 10
+          ? '0' + (date.getMonth() + 1)
+          : date.getMonth() + 1
+      var day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate()
+      return year + '-' + month + '-' + day
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.bg {
+  // height: auto;
+}
+
+.tagBox {
+  width: 231px; // 300  240
+  position: relative;
+  border: 1px solid #000000;
+  padding: 2px;
+  display: inline-block;
+  margin: 10px 10px;
+  border-radius: 4px;
+  background-color: #fff;
+}
+.ewm {
+  display: flex;
+  justify-content: center;
+}
+
+.la {
+  display: flex;
+  align-items: center;
+}
+
+.lh {
+  // line-height: auto;
+  font-size: 14px; //16
+  display: flex;
+  align-items: center;
+}
+</style>

+ 3 - 1
src/views/system/jbdScan/scan.vue

@@ -22,6 +22,7 @@ import neishenzhuangtai from './goods/neishenzhuangtai'
 import fengxiangkongzhi from './goods/fengxiangkongzhi'
 import fengxiangkongzhi from './goods/fengxiangkongzhi'
 import guanshenzhuangtai from './goods/guanshenzhuangtai'
 import guanshenzhuangtai from './goods/guanshenzhuangtai'
 import renkeshenbao from './goods/renkeshenbao'
 import renkeshenbao from './goods/renkeshenbao'
+import tag from './goods/tag'
 
 
 export default {
 export default {
   components: {
   components: {
@@ -34,7 +35,8 @@ export default {
     neishenzhuangtai,
     neishenzhuangtai,
     fengxiangkongzhi,
     fengxiangkongzhi,
     guanshenzhuangtai,
     guanshenzhuangtai,
-    renkeshenbao
+    renkeshenbao,
+    tag
   },
   },
   props: {
   props: {
     currentScan: String,
     currentScan: String,