From 2ea91b1a3a5dece7918ee6f9ca0d345e2be10d3c Mon Sep 17 00:00:00 2001
From: chenyc <501753378@qq.com>
Date: 星期一, 21 四月 2025 15:49:21 +0800
Subject: [PATCH] gx
---
src/views/deviceWindoes2.vue | 70 +++++++++++++++-------------------
1 files changed, 31 insertions(+), 39 deletions(-)
diff --git a/src/views/deviceWindoes2.vue b/src/views/deviceWindoes2.vue
index 1ed4985..73455ef 100644
--- a/src/views/deviceWindoes2.vue
+++ b/src/views/deviceWindoes2.vue
@@ -760,21 +760,21 @@
<el-space fill>
<el-alert type="warning" show-icon :closable="false">
<p>"请输入设备编号后才能使用不然无法定位到数据来源:</p>
+ <p>也可以选择二维码图片识别</p>
</el-alert>
<el-form-item label="设备编号">
<el-input v-model="deviceCode" />
</el-form-item>
</el-space>
</el-form>
- <video ref="video" width="300" height="300" autoplay></video>
- <input type="text" v-model="codeResult" placeholder="扫描结果将会显示在这里">
+ <div>
+ <input type="file" pattern="选取二维码" accept="image/*" @change="onFileChange" />
+ <input type="text" v-model="codeResult" placeholder="扫描结果将会显示在这里">
+ </div>
</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>
@@ -1186,45 +1186,37 @@
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 onFileChange=(event: Event) =>{
+ const inputElement = event.target as HTMLInputElement;
+ if (!inputElement.files || inputElement.files.length === 0) return;
- // 解析二维码
- const code = jsQR(imageData.data, imageData.width, imageData.height);
- if (code) {
- codeResult.value = code.data;
- }
+ const file = inputElement.files[0];
+ const reader = new FileReader();
- // 定期捕获帧
- 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();
+ reader.onload = function(e) {
+ if (e.target && typeof e.target.result === 'string') {
+ const img = document.createElement('img');
+ img.src = e.target.result;
+ img.onload = function() {
+ const canvas = document.createElement('canvas');
+ canvas.width = img.width;
+ canvas.height = img.height;
+ const ctx = canvas.getContext('2d');
+ if (ctx) {
+ ctx.drawImage(img, 0, 0);
+ const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
+ const code = jsQR(imageData.data, imageData.width, imageData.height);
+ if (code) {
+ codeResult.value = code.data;
+ }
+ }
+ };
}
- } catch (e) {
- console.error("无法访问摄像头", e);
- }
+ };
+
+ reader.readAsDataURL(file);
}
-}
const shaoma=()=>{
- startCamera()
}
watch(
() => deviceData.value.设备变化,
--
Gitblit v1.8.0