From 34116d24841128af8e7de1729bd1d9d8bc319a60 Mon Sep 17 00:00:00 2001
From: chenyc <501753378@qq.com>
Date: 星期一, 21 四月 2025 16:24:44 +0800
Subject: [PATCH] 更新二维码文件识别
---
src/views/deviceWindoes2.vue | 40 ++++++++++++++++++----------------------
1 files changed, 18 insertions(+), 22 deletions(-)
diff --git a/src/views/deviceWindoes2.vue b/src/views/deviceWindoes2.vue
index 73455ef..0d2bdd2 100644
--- a/src/views/deviceWindoes2.vue
+++ b/src/views/deviceWindoes2.vue
@@ -760,7 +760,7 @@
<el-space fill>
<el-alert type="warning" show-icon :closable="false">
<p>"请输入设备编号后才能使用不然无法定位到数据来源:</p>
- <p>也可以选择二维码图片识别</p>
+ <p>也可以选择二维码图片文件识别</p>
</el-alert>
<el-form-item label="设备编号">
<el-input v-model="deviceCode" />
@@ -769,7 +769,6 @@
</el-form>
<div>
<input type="file" pattern="选取二维码" accept="image/*" @change="onFileChange" />
- <input type="text" v-model="codeResult" placeholder="扫描结果将会显示在这里">
</div>
</span>
<template #footer>
@@ -787,6 +786,7 @@
</template>
<script lang="ts" setup>
+ import { BrowserMultiFormatReader, NotFoundException, ChecksumException, FormatException } from '@zxing/library';
import TQS88 from "../img/TQS88.png";
import shezhi from '../img/shezhi.png'
import xinlv from '../img/xinlv.png'
@@ -798,7 +798,6 @@
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";
@@ -991,8 +990,6 @@
// 告警提示
// 识别窗口
const video = ref<HTMLVideoElement | null>(null);
- // 识别文本
- const codeResult = ref<string>('');
// 识别数据流
let stream: MediaStream | null = null;
const centerDialogVisible = ref(false);
@@ -1186,31 +1183,30 @@
ElMessage.warning('请先输入设备编号')
}
}
- const onFileChange=(event: Event) =>{
+ const onFileChange=async(event: Event)=> {
const inputElement = event.target as HTMLInputElement;
if (!inputElement.files || inputElement.files.length === 0) return;
const file = inputElement.files[0];
const reader = new FileReader();
- reader.onload = function(e) {
+ reader.onload = async (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;
- }
+ try {
+ const codeReader = new BrowserMultiFormatReader();
+ const result = await codeReader.decodeFromImage(undefined, e.target.result);
+ deviceCode.value = result.text;
+ } catch (err) {
+ if (err instanceof NotFoundException) {
+ console.error("未找到二维码");
+ } else if (err instanceof ChecksumException) {
+ console.error("校验错误");
+ } else if (err instanceof FormatException) {
+ console.error("格式错误");
+ } else {
+ console.error(err);
}
- };
+ }
}
};
--
Gitblit v1.8.0