From c587f3499ca5eebf81374cf77ed1e0694f8c236b Mon Sep 17 00:00:00 2001
From: chenyc <501753378@qq.com>
Date: 星期一, 21 四月 2025 15:13:05 +0800
Subject: [PATCH] gx
---
src/views/deviceWindoes2.vue | 77 ++++++++++++++++++++++++++++++++------
1 files changed, 65 insertions(+), 12 deletions(-)
diff --git a/src/views/deviceWindoes2.vue b/src/views/deviceWindoes2.vue
index b5ca8fd..1ed4985 100644
--- a/src/views/deviceWindoes2.vue
+++ b/src/views/deviceWindoes2.vue
@@ -136,7 +136,7 @@
<span class="text-group_3">人工肾</span>
</div>
<div class="grid-container" style="height: calc(100% - 30px);width: 100%;font-size: 28px;">
- <div class="grid-container-text" style="color: #A78718;" v-for="(item,index) in deviceData.透析器列表" :key="index">
+ <div class="grid-container-text" style="color: #A78718;" v-for="(item,index) in deviceData.透析器列表" :style="{fontSize:deviceData.透析器列表.length>1?'22px':'28px'}" :key="index">
<div class="left-div">{{item.name}}</div>
<div class="right-div">{{item.数量}}{{item.单位}}</div>
</div>
@@ -149,7 +149,7 @@
<span class="text-group_3">一次性循环管路</span>
</div>
<div class="grid-container" style="height: calc(100% - 30px);width: 100%;font-size: 28px;">
- <div class="grid-container-text" style="color: #3AB859;" v-for="(item,index) in deviceData.管路列表" :key="index">
+ <div class="grid-container-text" style="color: #3AB859;" v-for="(item,index) in deviceData.管路列表" :style="{fontSize:deviceData.管路列表.length>1?'22px':'28px'}" :key="index">
<div class="left-div">{{item.name}}</div>
<div class="right-div">{{item.数量}}支</div>
</div>
@@ -179,7 +179,7 @@
<span class="text-group_3">透析液</span>
</div>
<div class="grid-container" style="height: calc(100% - 30px);width: 100%;font-size: 28px;">
- <div class="grid-container-text" style="color: #3AB859;" v-for="(item,index) in deviceData.透析液列表" :key="index">
+ <div class="grid-container-text" style="color: #3AB859;" :style="{fontSize:deviceData.透析液列表.length>1?'22px':'28px'}" v-for="(item,index) in deviceData.透析液列表" :key="index">
<div class="left-div">{{item.name}}</div>
<div class="right-div">{{item.数量}}{{item.单位}}</div>
</div>
@@ -491,8 +491,8 @@
/>
<span class="text-group_3">抗凝剂</span>
</div>
- <div class="grid-container" style="height: calc(100% - 30px);width: 100%;font-size: 28px;">
- <div class="grid-container-text" style="color: #A78718;" v-for="(item,index) in deviceData.抗凝剂列表" :key="index">
+ <div class="grid-container" style="height: calc(100% - 30px);width: 100%;">
+ <div class="grid-container-text" style="color: #A78718;" v-for="(item,index) in deviceData.抗凝剂列表" :style="{fontSize:deviceData.抗凝剂列表.length>1?'22px':'28px'}" :key="index">
<div class="left-div">{{item.name}}</div>
<div class="right-div">{{item.数量}}{{item.单位}}</div>
</div>
@@ -505,7 +505,7 @@
<span class="text-group_3">穿刺针</span>
</div>
<div class="grid-container" style="height: calc(100% - 30px);width: 100%;font-size: 25px;">
- <div class="grid-container-text" style="color: #A78718;" v-for="(item,index) in deviceData.穿刺针列表" :key="index">
+ <div class="grid-container-text" style="color: #A78718;" v-for="(item,index) in deviceData.穿刺针列表" :style="{fontSize:deviceData.穿刺针列表.length>1?'22px':'28px'}" :key="index">
<div class="left-div">{{item.name}}</div>
<div class="right-div">{{item.数量}}支</div>
</div>
@@ -523,7 +523,7 @@
<span class="text-group_3">一次性使用透析护理包</span>
</div>
<div class="grid-container" style="height: calc(100% - 30px);width: 100%;font-size: 28px;">
- <div class="grid-container-text" style="color: #1D77BD;" v-for="(item,index) in deviceData.护理包列表" :key="index">
+ <div class="grid-container-text" style="color: #1D77BD;" v-for="(item,index) in deviceData.护理包列表" :style="{fontSize:deviceData.护理包列表.length>1?'22px':'28px'}" :key="index">
<div class="left-div">{{item.name}}</div>
<div class="right-div">{{item.数量}}{{item.单位}}</div>
</div>
@@ -536,7 +536,7 @@
<span class="text-group_3">血管通路</span>
</div>
<div class="grid-container" style="height: calc(100% - 30px);width: 100%;font-size: 28px;">
- <div class="grid-container-text" style="color: #1D77BD;" v-for="(item,index) in deviceData.血管通路列表" :key="index">
+ <div class="grid-container-text" style="color: #1D77BD;" v-for="(item,index) in deviceData.血管通路列表" :style="{fontSize:deviceData.血管通路列表.length>1?'22px':'28px'}" :key="index">
<div class="left-div">{{item.类型}}</div>
<div class="right-div" style="width: 200px;">{{item.位置}}</div>
</div>
@@ -766,10 +766,15 @@
</el-form-item>
</el-space>
</el-form>
+ <video ref="video" width="300" height="300" autoplay></video>
+ <input type="text" v-model="codeResult" placeholder="扫描结果将会显示在这里">
</span>
<template #footer>
<div class="dialog-footer">
<el-button @click="centerDialogVisible = false">取消</el-button>
+ <el-button type="primary" @click="shaoma">
+ 扫码录入
+ </el-button>
<el-button type="primary" @click="saveSet">
确认
</el-button>
@@ -793,6 +798,7 @@
import cljd from '../img/cljd.png'
import tizhong from '../img/tizhong.png'
import {EventSourcePolyfill} from 'event-source-polyfill';
+ import jsQR from 'jsqr';
import { computed, getCurrentInstance, onBeforeMount, onMounted, ref, watch, watchEffect } from "vue";
import { Local } from '../utils/storage';
import * as echarts from "echarts";
@@ -983,8 +989,12 @@
],
});
// 告警提示
- const textbaojing = ref("");
- const iscomfig = ref(false);
+ // 识别窗口
+ const video = ref<HTMLVideoElement | null>(null);
+ // 识别文本
+ const codeResult = ref<string>('');
+ // 识别数据流
+ let stream: MediaStream | null = null;
const centerDialogVisible = ref(false);
const background = ref("");
const txztText = ref("");
@@ -1175,6 +1185,46 @@
}else{
ElMessage.warning('请先输入设备编号')
}
+ }
+ function captureFrame() {
+ if (!video.value) return;
+
+ const canvas = document.createElement('canvas');
+ const context = canvas.getContext('2d');
+ if (!context || !video.value) return;
+
+ canvas.width = video.value.videoWidth;
+ canvas.height = video.value.videoHeight;
+ context.drawImage(video.value, 0, 0, canvas.width, canvas.height);
+ const imageData = context.getImageData(0, 0, canvas.width, canvas.height);
+
+ // 解析二维码
+ const code = jsQR(imageData.data, imageData.width, imageData.height);
+ if (code) {
+ codeResult.value = code.data;
+ }
+
+ // 定期捕获帧
+ setTimeout(captureFrame, 500);
+ }
+ const startCamera=async()=> {
+ if (video.value) {
+ try {
+ stream = await navigator.mediaDevices.getUserMedia({ video: { facingMode: "environment" } });
+ if (video.value) {
+ video.value.srcObject = stream;
+ video.value.play();
+
+ // 开始捕获帧
+ captureFrame();
+ }
+ } catch (e) {
+ console.error("无法访问摄像头", e);
+ }
+ }
+}
+ const shaoma=()=>{
+ startCamera()
}
watch(
() => deviceData.value.设备变化,
@@ -1912,8 +1962,11 @@
}
.right-div {
- width: 120px; /* 固定宽度 */
- text-align: center; /* 可选:文本居中 */
+ width: 50px; /* 固定宽度 */
+ font-size: 16px;
+ display: flex;
+ justify-content: center; /* 水平居中 */
+ align-items: center; /* 垂直居中 */
}
--
Gitblit v1.8.0