From 2b83d4d511401b7011e51170d8d7d25c2ca45c51 Mon Sep 17 00:00:00 2001
From: chenyc <501753378@qq.com>
Date: 星期一, 21 四月 2025 16:31:14 +0800
Subject: [PATCH] 更新识别提示

---
 src/views/deviceWindoes2.vue |   44 ++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 42 insertions(+), 2 deletions(-)

diff --git a/src/views/deviceWindoes2.vue b/src/views/deviceWindoes2.vue
index 8ba1ec3..3f651df 100644
--- a/src/views/deviceWindoes2.vue
+++ b/src/views/deviceWindoes2.vue
@@ -760,12 +760,16 @@
           <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>
+        <div>
+          <input type="file" pattern="选取二维码" accept="image/*" @change="onFileChange"  />
+        </div>
       </span>
       <template #footer>
         <div class="dialog-footer">
@@ -782,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'
@@ -983,8 +988,10 @@
     ],
   });
   // 告警提示
-  const textbaojing = ref("");
-  const iscomfig = ref(false);
+  // 识别窗口
+  const video = ref<HTMLVideoElement | null>(null);
+  // 识别数据流
+  let stream: MediaStream | null = null;
   const centerDialogVisible = ref(false);
   const background = ref("");
   const txztText = ref("");
@@ -1176,6 +1183,39 @@
       ElMessage.warning('请先输入设备编号')
     }
   }
+  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 = async (e) => {
+      if (e.target && typeof e.target.result === 'string') {
+        try {
+          const codeReader = new BrowserMultiFormatReader();
+          const result = await codeReader.decodeFromImage(undefined, e.target.result);
+          deviceCode.value = result.text;
+          ElMessage.success('识别成功')
+        } catch (err) {
+          if (err instanceof NotFoundException) {
+            ElMessage.error("未找到二维码");
+          } else if (err instanceof ChecksumException) {
+            ElMessage.error("校验错误");
+          } else if (err instanceof FormatException) {
+            ElMessage.error("格式错误");
+          } else {
+            ElMessage.error("识别错误请重新识别");
+            console.error(err);
+          }
+        }
+      }
+    };
+
+    reader.readAsDataURL(file);
+  }
+  const shaoma=()=>{
+  }
   watch(
     () => deviceData.value.设备变化,
     () => {

--
Gitblit v1.8.0