From 0a144cc1dd664851638a6a01d030dd6a1585c25a Mon Sep 17 00:00:00 2001
From: yaowanxin <3588231647@qq.com>
Date: 星期五, 25 七月 2025 14:55:34 +0800
Subject: [PATCH] 增添数据库表字段

---
 src/views/CNAS/resourceDemand/device/component/acquisitionConfig.vue |   14 +++-
 src/utils/connect.js                                                 |   96 ++++++++++++++++++++++++++++++++
 src/views/business/inspectionTask/inspection.vue                     |   11 +++
 3 files changed, 117 insertions(+), 4 deletions(-)

diff --git a/src/utils/connect.js b/src/utils/connect.js
new file mode 100644
index 0000000..39edfd6
--- /dev/null
+++ b/src/utils/connect.js
@@ -0,0 +1,96 @@
+// 鏂板锛氬瓨鍌ㄥ叏灞�涓插彛鍜岃鍙栧櫒瀹炰緥
+    let port = null;
+    let reader = null;
+    let accumulatedData = ""; // 绉诲埌鍏ㄥ眬锛屼究浜庡叧闂椂閲嶇疆
+
+    async function connect() {
+      if ("serial" in navigator) {
+        try {
+          port = await navigator.serial.requestPort(); // 淇敼涓哄叏灞�鍙橀噺
+          await port.open({ baudRate: 9600 });
+
+          reader = port.readable.getReader(); // 淇敼涓哄叏灞�鍙橀噺
+          const decoder = new TextDecoder();
+          accumulatedData = ""; // 閲嶇疆绱Н鏁版嵁
+
+          console.log("涓插彛杩炴帴鎴愬姛锛屽紑濮嬫帴鏀舵暟鎹�...");
+
+          while (true) {
+            const { value, done } = await reader.read();
+            if (done) break;
+
+            const decodedChunk = decoder.decode(value, { stream: true });
+            accumulatedData += decodedChunk;
+            console.log("鎺ユ敹鍒版暟鎹潡:", decodedChunk);
+
+            processAccumulatedData(accumulatedData);
+          }
+        } catch (error) {
+          console.error("涓插彛閿欒:", error);
+        }
+      }
+
+      function processAccumulatedData(data) {
+        if (data.includes("\n")) {
+          const messages = data.split("\n");
+
+          for (let i = 0; i < messages.length - 1; i++) {
+            const completeMessage = messages[i];
+            console.log("瀹屾暣娑堟伅:", completeMessage);
+            handleMessage(completeMessage);
+          }
+
+          accumulatedData = messages[messages.length - 1];
+        }
+
+        // 鍏朵粬娑堟伅鎷嗗垎绀轰緥淇濇寔涓嶅彉
+        /*
+  while (accumulatedData.length >= 32) {
+    const message = accumulatedData.substring(0, 32);
+    accumulatedData = accumulatedData.substring(32);
+    handleMessage(message);
+  }
+  */
+
+        /*
+  let startIndex = 0;
+  while (true) {
+    const start = accumulatedData.indexOf(0xAA, startIndex);
+    if (start === -1) break;
+    
+    const end = accumulatedData.indexOf(0x55, start + 1);
+    if (end === -1) break;
+    
+    const message = accumulatedData.substring(start, end + 1);
+    accumulatedData = accumulatedData.substring(end + 1);
+    handleMessage(message);
+    startIndex = start;
+  }
+  */
+      }
+    }
+
+    // 鏂板锛氬叧闂繛鎺ュ嚱鏁�
+    async function disconnect() {
+      if (!port || !reader) {
+        console.log("鏈缓绔嬭繛鎺ワ紝鏃犻渶鍏抽棴");
+        return;
+      }
+
+      try {
+        // 鍏堝彇娑堣鍙栧櫒
+        await reader.cancel();
+        // 鍐嶅叧闂覆鍙�
+        await port.close();
+        console.log("涓插彛杩炴帴宸插叧闂�");
+
+        // 閲嶇疆鍏ㄥ眬鍙橀噺
+        port = null;
+        reader = null;
+        accumulatedData = "";
+      } catch (error) {
+        console.error("鍏抽棴杩炴帴澶辫触:", error);
+      }
+    }
+
+    export { connect, disconnect };
\ No newline at end of file
diff --git a/src/views/CNAS/resourceDemand/device/component/acquisitionConfig.vue b/src/views/CNAS/resourceDemand/device/component/acquisitionConfig.vue
index 23a9e18..a8fa850 100644
--- a/src/views/CNAS/resourceDemand/device/component/acquisitionConfig.vue
+++ b/src/views/CNAS/resourceDemand/device/component/acquisitionConfig.vue
@@ -158,6 +158,10 @@
         <div class="search_label">鏁版嵁搴撳瘑鐮侊細</div>
         <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="configForm.dbPassword"></el-input>
       </div>
+      <div v-if="configForm.fileType === '.mysql'" class="search_thing" style="margin-bottom: 14px;">
+        <div class="search_label"><span style="color:red;margin-right: 4px;">*</span>鏁版嵁搴撹〃锛�</div>
+        <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="configForm.dbTable"></el-input>
+      </div>
       <span slot="footer" class="dialog-footer">
         <el-row>
           <el-button @click="dialogVisible4 = false">鍙� 娑�</el-button>
@@ -244,7 +248,8 @@
         dbFileName: "",
         fiberOpticRibbon: "",
         dbUserName: "",
-        dbPassword: ""
+        dbPassword: "",
+        dbTable: ""
       },
       domains: [
         {
@@ -266,6 +271,7 @@
         { label: "excel", value: ".xlsx" },
         { label: "excel", value: ".xls" },
         { label: "txt", value: ".txt" },
+        { label: "mysql", value: ".mysql" },
         { label: "png", value: ".png" }
       ],
       spanList: [],
@@ -417,7 +423,8 @@
         this.$set(this.configForm, "dbFileName", res.data.dbFileName);
         this.$set(this.configForm, "fiberOpticRibbon", res.data.fiberOpticRibbon);
         this.$set(this.configForm, "dbUserName", res.data.dbUserName);
-        this.$set(this.configForm, "dbPassword", res.data.dbPassword)
+        this.$set(this.configForm, "dbPassword", res.data.dbPassword);
+        this.$set(this.configForm, "dbTable", res.data.dbTable);
       })
     },
     // 鎻愪氦鏂囦欢閰嶇疆
@@ -433,7 +440,8 @@
         dbFileName: this.configForm.dbFileName,
         fiberOpticRibbon: this.configForm.fiberOpticRibbon,
         dbUserName: this.configForm.dbUserName,
-        dbPassword: this.configForm.dbPassword
+        dbPassword: this.configForm.dbPassword,
+        dbTable: this.configForm.dbTable
       });
       this.upLoad4 = true;
       saveDeviceFileConfiguration({ deviceId: this.deviceId, ...obj }).then(res => {
diff --git a/src/views/business/inspectionTask/inspection.vue b/src/views/business/inspectionTask/inspection.vue
index f26bb54..b441fb0 100644
--- a/src/views/business/inspectionTask/inspection.vue
+++ b/src/views/business/inspectionTask/inspection.vue
@@ -141,7 +141,7 @@
           <el-button :loading="dataAcquisitionLoading" v-if="state == 1" size="small" type="primary"
             @click="getDataAcquisitionDevice">鏁版嵁閲囬泦</el-button>
           <el-button :type="dataAcquisitionEidtAble ? '' : 'primary'" v-if="state == 1" size="small"
-            @click="dataAcquisitionEidtAble = !dataAcquisitionEidtAble">{{ dataAcquisitionEidtAble ? "鍏抽棴缂栬緫" : "缂栬緫鏁伴噰"
+            @click="dataAcquisitionEidtAble = !dataAcquisitionEidtAble,disconnect()">{{ dataAcquisitionEidtAble ? "鍏抽棴缂栬緫" : "缂栬緫鏁伴噰"
             }}</el-button>
         </div>
       </div>
@@ -536,6 +536,8 @@
 import AddUnPass from "../unpass/components/addUnPass.vue";
 import InspectionWord from "./components/InspectionWord.vue";
 import PurchaseVerification from "../unpass/components/PurchaseVerification.vue";
+import { connect,disconnect } from "@/utils/connect.js";
+
 import {
   doInsOrder,
   getCableTag,
@@ -818,6 +820,7 @@
     this.startWorker();
     // this.getList0() // 浠诲姟鍒囨崲
     this.scrollInit();
+    disconnect()
   },
   activated() {
     this.getTypeDicts(); // 鑾峰彇绱ф�ョ▼搴︿笅鎷夋閫夐」
@@ -897,6 +900,7 @@
   beforeDestroy() {
     // 鍦ㄧ粍浠堕攢姣佸墠纭繚鍋滄 Worker锛岄伩鍏嶅唴瀛樻硠婕�
     this.stopWorker();
+    disconnect()
   },
   methods: {
     // 鏂囦欢绠$悊--寮�濮�
@@ -1128,6 +1132,8 @@
     },
     // 鏁版嵁閲囬泦
     getDataAcquisitionDevice() {
+      // connect()
+      // return
       let itemIds = [];
       this.currentSample.insProduct.forEach((item) => {
         if (item.inspectionItemType === "1") {
@@ -2914,6 +2920,9 @@
       this.$router.go(-1)
     }
   },
+  destroyed() {
+    disconnect()
+  },
 };
 </script>
 <style scoped>

--
Gitblit v1.9.3