From f3d4db769ba9b51b799d981511a710fd443d0e08 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期一, 21 四月 2025 12:18:03 +0800
Subject: [PATCH] Merge branch 'master' into positec

---
 src/views/interface/api/index.js |  116 +++++++++++++++++++++++----------------------------------
 1 files changed, 47 insertions(+), 69 deletions(-)

diff --git a/src/views/interface/api/index.js b/src/views/interface/api/index.js
index 59f4941..37b374b 100644
--- a/src/views/interface/api/index.js
+++ b/src/views/interface/api/index.js
@@ -1,25 +1,30 @@
 import axios from 'axios'
 import md5 from 'md5'
 import jsSHA from 'jssha'
-import { notification } from 'antd'
 
-window.GLOB.WebSql = null
+window.GLOB.IndexDB = null
 
-if (window.openDatabase) {
-  let service = window.GLOB.service ? '-' + window.GLOB.service.replace('/', '') : ''
+let service = window.GLOB.service ? '-' + window.GLOB.service.replace('/', '') : ''
+let db = `mk_inter${service}`
+
+if (window.indexedDB) {
   try {
-    window.GLOB.WebSql = openDatabase(`mkdb${service}`, '1', 'mk-pc-database', 50 * 1024 * 1024)
-    window.GLOB.WebSql.transaction(tx => {
-      tx.executeSql('CREATE TABLE IF NOT EXISTS INTERFACES (uuid varchar(50), createDate varchar(50), method varchar(50), interface text, params text, headers text, active varchar(50), raw text, formData text, CDefine1 varchar(50), CDefine2 varchar(50), CDefine3 varchar(50), CDefine4 varchar(50), CDefine5 text)', [], () => {
-
-      }, () => {
-        // eslint-disable-next-line
-        throw 'CREATE TABLE ERROR'
-      })
-    })
+    let request = window.indexedDB.open(db, 1)
+    request.onerror = () => {
+      console.warn('IndexedDB 鍒濆鍖栧け璐ワ紒')
+    }
+    request.onsuccess = () => {
+      window.GLOB.IndexDB = request.result
+    }
+    request.onupgradeneeded = (event) => {
+      window.GLOB.IndexDB = event.target.result
+      if (!window.GLOB.IndexDB.objectStoreNames.contains('interfaces')) {
+        window.GLOB.IndexDB.createObjectStore('interfaces', { keyPath: 'id' })
+      }
+    }
   } catch (e) {
-    console.warn('WebSql 鍒濆鍖栧け璐ワ紒')
-    window.GLOB.WebSql = null
+    console.warn('IndexedDB 鍒濆鍖栧け璐ワ紝鍘嗗彶璁板綍灏嗘棤娉曟煡璇㈡垨淇敼锛�')
+    window.GLOB.IndexDB = null
   }
 }
 
@@ -102,73 +107,46 @@
     return axios(config)
   }
 
-  writeInWebSql (data) {
-    if (!window.GLOB.WebSql) {
-      notification.warning({ top: 92, message: 'WebSql寮�鍚け璐ワ紒', duration: 5 })
-      return
-    }
-    return new Promise((resolve, reject) => {
-      window.GLOB.WebSql.transaction(tx => {
-        tx.executeSql(`INSERT INTO INTERFACES (uuid, createDate, method, interface, params, headers, active, raw, formData) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`, data, (tx, results) => {
-          resolve(results)
-        }, () => {
-          resolve()
-        })
-      })
-    })
+  writeInIndexDB (data) {
+    if (!window.GLOB.IndexDB) return
+
+    window.GLOB.IndexDB.transaction(['interfaces'], 'readwrite').objectStore('interfaces').add(data)
   }
 
   getInterfaces () {
-    if (!window.GLOB.WebSql) {
-      notification.warning({ top: 92, message: 'WebSql寮�鍚け璐ワ紒', duration: 5 })
-      return
-    }
+    if (!window.GLOB.IndexDB) return Promise.resolve()
+
     return new Promise((resolve, reject) => {
-      window.GLOB.WebSql.transaction(tx => {
-        tx.executeSql(`SELECT * FROM INTERFACES`, [], (tx, results) => {
-          // let paramItem = results.rows[0]
-          resolve(results)
-        }, () => {
-          window.GLOB.WebSql = null
-          reject()
-        })
-      })
+      let request = window.GLOB.IndexDB.transaction(['interfaces']).objectStore('interfaces').openCursor()
+      let list = []
+
+      request.onsuccess = (e) => {
+        let cursor = e.target.result
+        if (cursor) {
+          if (cursor.value) {
+            list.push(cursor.value)
+          }
+          cursor.continue()
+        } else {
+          resolve(list)
+        }
+      }
     })
   }
 
-  delInterface (uuid) {
-    if (!window.GLOB.WebSql) {
-      notification.warning({ top: 92, message: 'WebSql寮�鍚け璐ワ紒', duration: 5 })
-      return
-    }
-    return new Promise((resolve, reject) => {
-      window.GLOB.WebSql.transaction(tx => {
-        tx.executeSql(`DELETE FROM INTERFACES where uuid = '${uuid}'`, [], (tx, results) => {
-          resolve(results)
-        }, () => {
-          resolve()
-        })
-      })
-    })
+  delInterface (id) {
+    if (!window.GLOB.IndexDB) return
+
+    window.GLOB.IndexDB.transaction(['interfaces'], 'readwrite').objectStore('interfaces').delete(id)
   }
 
   /**
    * @description 娓呯┖鎺ュ彛璋冪敤璁板綍
    */
   clearInterfaces () {
-    if (!window.GLOB.WebSql) {
-      notification.warning({ top: 92, message: 'WebSql寮�鍚け璐ワ紒', duration: 5 })
-      return
-    }
-    return new Promise((resolve, reject) => {
-      window.GLOB.WebSql.transaction(tx => {
-        tx.executeSql(`DELETE FROM INTERFACES`, [], (tx, results) => {
-          resolve(results)
-        }, () => {
-          resolve()
-        })
-      })
-    })
+    if (!window.GLOB.IndexDB) return
+
+    window.GLOB.IndexDB.transaction(['interfaces'], 'readwrite').objectStore('interfaces').clear()
   }
 }
 

--
Gitblit v1.8.0