eight
2024-11-20 9e2c02c96954a07d35b4c9fa698a6bfa74e832e2
显示患者条码
已添加2个文件
已修改5个文件
94 ■■■■ 文件已修改
package.json 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pnpm-lock.yaml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/Barcode/index.ts 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/Barcode/src/Barcode.vue 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/store/modules/checkType.ts 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/ecg/doctor/components/DevInstallPanel.vue 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/ecg/doctor/components/DevReadyPanel.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
package.json
@@ -72,7 +72,8 @@
    "web-storage-cache": "^1.1.1",
    "xml-js": "^1.6.11",
    "vue3-scroll-seamless": "^1.0.6",
    "vue-plugin-hiprint": "^0.0.18"
    "vue-plugin-hiprint": "^0.0.18",
    "jsbarcode": "^3.11.6"
  },
  "devDependencies": {
    "@commitlint/cli": "^19.0.1",
pnpm-lock.yaml
@@ -80,6 +80,9 @@
  highlight.js:
    specifier: ^11.9.0
    version: 11.9.0
  jsbarcode:
    specifier: ^3.11.6
    version: 3.11.6
  jsencrypt:
    specifier: ^3.3.2
    version: 3.3.2
@@ -6578,6 +6581,10 @@
      argparse: 2.0.1
    dev: true
  /jsbarcode@3.11.6:
    resolution: {integrity: sha512-G5TKGyKY1zJo0ZQKFM1IIMfy0nF2rs92BLlCz+cU4/TazIc4ZH+X1GYeDRt7TKjrYqmPfTjwTBkU/QnQlsYiuA==}
    dev: false
  /jsencrypt@3.3.2:
    resolution: {integrity: sha512-arQR1R1ESGdAxY7ZheWr12wCaF2yF47v5qpB76TtV64H1pyGudk9Hvw8Y9tb/FiTIaaTRUyaSnm5T/Y53Ghm/A==}
    dev: false
src/components/Barcode/index.ts
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,3 @@
import Barcode from './src/Barcode.vue'
export { Barcode }
src/components/Barcode/src/Barcode.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,43 @@
<template>
<div>
  <svg class="barcode" />
</div>
</template>
<script lang="ts" setup>
import { ref, onMounted, nextTick } from 'vue'
import JsBarcode from 'jsbarcode'
defineOptions({ name: 'Barcode' })
const props = defineProps({
  // æ•°æ®
  // å½“前的值
  value: String
});
onMounted(() => {
  nextTick(() => {
    JsBarcode('.barcode', String(props.value), {
      format: "CODE39",//选择要使用的条形码类型
      width:1,//设置条之间的宽度
      height:40,//高度
      displayValue:true,//是否在条形码下方显示文字
//   text:"456",//覆盖显示的文本
//   fontOptions:"bold italic",//使文字加粗体或变斜体
//   font:"fantasy",//设置文本的字体
//   textAlign:"left",//设置文本的水平对齐方式
//   textPosition:"top",//设置文本的垂直位置
//   textMargin:5,//设置条形码和文本之间的间距
      fontSize:15,//设置文本的大小
//   background:"#eee",//设置条形码的背景
//   lineColor:"#2196f3",//设置条和文本的颜色。
      margin:15//设置条形码周围的空白边距
    });
  })
})
</script>
<style lang="scss" scoped>
</style>
src/store/modules/checkType.ts
@@ -8,15 +8,16 @@
export interface CheckTypeSimpleVO {
  value: number
  name: string
  displayBarcode: number
}
export interface CheckTypeState {
  checkTypeMap: Map<number, string>
  checkTypeMap: Map<number, CheckTypeSimpleVO>
  isSetCheckType: boolean
}
export const useCheckTypeStore = defineStore('checktype ', {
  state: (): CheckTypeState => ({
    checkTypeMap: new Map<number, string>(),
    checkTypeMap: new Map<number, CheckTypeSimpleVO>(),
    isSetCheckType: false
  }),
  getters: {
@@ -40,12 +41,12 @@
      } else {
        const res = await CheckTypeApi.getSimpleCheckTypeList()
        // è®¾ç½®æ•°æ®
        const checkTypeMap = new Map<number, string>()
        const checkTypeMap = new Map<number, CheckTypeSimpleVO>()
        res.forEach((simpleVO: CheckTypeSimpleVO) => {
          // èŽ·å¾— dictType å±‚级
          const enumValueObj = checkTypeMap[simpleVO.value]
          if (!enumValueObj) {
            checkTypeMap[simpleVO.value] = simpleVO.name
            checkTypeMap[simpleVO.value] = simpleVO
          }
        })
        this.checkTypeMap = checkTypeMap
@@ -57,7 +58,7 @@
      if (!this.isSetCheckType) {
        this.setCheckTypeMap()
      }
      return this.checkTypeMap[type]
      return this.checkTypeMap[type].name
    },
    getCheckTypeOptions() {
      if (!this.isSetCheckType) {
@@ -66,20 +67,26 @@
      return Object.keys(this.checkTypeMap).map((key) => {
        return {
          value: parseInt(key, 10),
          label: this.checkTypeMap[key]
          label: this.checkTypeMap[key].name
        }
      });
    },
    getCheckTypeDispBarCode(type: number) {
      if (!this.isSetCheckType) {
        this.setCheckTypeMap()
      }
      return this.checkTypeMap[type].displayBarcode
    },
    async resetCheckTypeInfo() {
      wsCache.delete(CACHE_KEY.CHECKTYPE_CACHE)
      const res = await CheckTypeApi.getSimpleCheckTypeList()
      // è®¾ç½®æ•°æ®
      const checkTypeMap = new Map<number, string>()
      const checkTypeMap = new Map<number, CheckTypeSimpleVO>()
      res.forEach((simpleVO: CheckTypeSimpleVO) => {
        // èŽ·å¾— dictType å±‚级
        const enumValueObj = checkTypeMap[simpleVO.value]
        if (!enumValueObj) {
          checkTypeMap[simpleVO.value] = simpleVO.name
          checkTypeMap[simpleVO.value] = simpleVO
        }
      })
      this.checkTypeMap = checkTypeMap
src/views/ecg/doctor/components/DevInstallPanel.vue
@@ -10,7 +10,8 @@
        <el-col :span="12">
          <el-form-item label="患者编号" prop="patId">
            <el-input v-model="formData.patId" placeholder="请输入患者编号" @input="getRentInfoByPatId" />
            <Qrcode v-if="formData.patId !== undefined && formData.patId !== ''" :text="formData.patId" logo="/logo.gif" width=100 />
<!--        <Qrcode v-if="formData.patId !== undefined && formData.patId !== ''" :text="formData.patId" logo="/logo.gif" width=100 />-->
            <Barcode v-if="!isStringEmpty(formData.patId) && 1 === checkTypeStore.getCheckTypeDispBarCode(formData.checkType)" :value="formData.patId" :width=100 />
          </el-form-item>
          <el-form-item label="患者名称" prop="patName">
            <el-input v-model="formData.patName" placeholder="请输入患者名称" />
@@ -119,6 +120,8 @@
import {DeviceApi} from "@/api/ecg/devmanage";
import {QueueVO} from "@/api/ecg/queue";
import {RoomBedVO} from "@/api/ecg/doctor";
import {Barcode} from "@/components/Barcode";
import {useCheckTypeStore} from "@/store/modules/checkType";
/** è®¾å¤‡è£…机 è¡¨å• */
defineComponent({ name: 'DevInstallPanel' })
@@ -132,6 +135,8 @@
const emit = defineEmits(['event_dev_install']) // å®šä¹‰ success äº‹ä»¶ï¼Œç”¨äºŽæ“ä½œæˆåŠŸåŽçš„å›žè°ƒ
const checkTypeStore = useCheckTypeStore()
const setPatient = (queueVO: QueueVO | undefined) => {
  resetForm()
  formData.value.patId = queueVO?.patId
src/views/ecg/doctor/components/DevReadyPanel.vue
@@ -12,7 +12,7 @@
    >
      <el-form-item label="患者编号" prop="patId">
        <el-input v-model="formData.patId" placeholder="请输入患者编号" @input="getRentInfoByPatId" />
        <Qrcode v-if="formData.patId !== undefined && formData.patId !== ''" :text="formData.patId" logo="/logo.gif" :width=100 />
        <Barcode v-if="!isStringEmpty(formData.patId) && 1 === checkTypeStore.getCheckTypeDispBarCode(formData.checkType)" :value="formData.patId" :width=100 />
      </el-form-item>
      <el-form-item label="患者名称" prop="patName">
        <el-input v-model="formData.patName" placeholder="请输入患者名称" />
@@ -126,6 +126,7 @@
<script setup lang="ts">
import {defineComponent, PropType} from "vue";
import {Barcode} from "@/components/Barcode";
import { DevRentApi, DevRentVO } from '@/api/ecg/devrent'
import {QueueVO} from "@/api/ecg/queue";
import {isStringEmpty} from "@/utils/stringUtil";
@@ -136,8 +137,7 @@
import {RoomBedVO} from "@/api/ecg/doctor";
import {hiprint} from "vue-plugin-hiprint";
import {AppointmentApi, AppointmentVO} from "@/api/ecg/appointment";
import { useCheckTypeStoreWithOut } from '@/store/modules/checkType'
import {PrefixInteger} from "@/utils/formatter";
import {useCheckTypeStore} from '@/store/modules/checkType'
import {calGender, getBookBeginTime} from "@/utils";
/** è®¾å¤‡é¢†ç”¨ è¡¨å• */
@@ -161,7 +161,7 @@
const autoPrint = ref<boolean>(true);
const checkTypeStore = useCheckTypeStoreWithOut()
const checkTypeStore = useCheckTypeStore()
const formData = ref<DevRentVO>({
  id: undefined,