DESKTOP-H1V7IUO\51019 4 år sedan
förälder
incheckning
09d4a707ef

BIN
dist/__pycache__/hello.cpython-39.pyc


BIN
dist/__pycache__/reader.cpython-39.pyc


+ 1 - 1
dist/client/index.html

@@ -1 +1 @@
-<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.ico"><title></title><link href="css/about.40acff09.css" rel="prefetch"><link href="js/about.b68feefd.js" rel="prefetch"><link href="css/chunk-vendors.a16c4353.css" rel="preload" as="style"><link href="css/index.69a1ba66.css" rel="preload" as="style"><link href="js/chunk-vendors.bf1c293c.js" rel="preload" as="script"><link href="js/index.457f80e1.js" rel="preload" as="script"><link href="css/chunk-vendors.a16c4353.css" rel="stylesheet"><link href="css/index.69a1ba66.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="js/chunk-vendors.bf1c293c.js"></script><script src="js/index.457f80e1.js"></script></body></html>
+<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.ico"><title></title><link href="css/about.40acff09.css" rel="prefetch"><link href="js/about.66781453.js" rel="prefetch"><link href="css/chunk-vendors.a16c4353.css" rel="preload" as="style"><link href="css/index.69a1ba66.css" rel="preload" as="style"><link href="js/chunk-vendors.5c595c4a.js" rel="preload" as="script"><link href="js/index.1b5fda29.js" rel="preload" as="script"><link href="css/chunk-vendors.a16c4353.css" rel="stylesheet"><link href="css/index.69a1ba66.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="https://webapi.amap.com/maps?v=1.4.15&key=0f249bdc0a6a5c56abe6c2698624443c"></script><script src="js/chunk-vendors.5c595c4a.js"></script><script src="js/index.1b5fda29.js"></script></body></html>

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
dist/client/js/about.66781453.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
dist/client/js/about.b68feefd.js


+ 0 - 0
dist/client/js/chunk-vendors.bf1c293c.js → dist/client/js/chunk-vendors.5c595c4a.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
dist/client/js/index.1b5fda29.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
dist/client/js/index.457f80e1.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
dist/client/js/subpage.2382ad18.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
dist/client/js/subpage.dfad6591.js


+ 1 - 1
dist/client/subpage.html

@@ -1 +1 @@
-<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.ico"><title>zynfcreader</title><link href="css/about.40acff09.css" rel="prefetch"><link href="js/about.b68feefd.js" rel="prefetch"><link href="css/chunk-vendors.a16c4353.css" rel="preload" as="style"><link href="css/subpage.69a1ba66.css" rel="preload" as="style"><link href="js/chunk-vendors.bf1c293c.js" rel="preload" as="script"><link href="js/subpage.dfad6591.js" rel="preload" as="script"><link href="css/chunk-vendors.a16c4353.css" rel="stylesheet"><link href="css/subpage.69a1ba66.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but zynfcreader doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="js/chunk-vendors.bf1c293c.js"></script><script src="js/subpage.dfad6591.js"></script></body></html>
+<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.ico"><title>zynfcreader</title><link href="css/about.40acff09.css" rel="prefetch"><link href="js/about.66781453.js" rel="prefetch"><link href="css/chunk-vendors.a16c4353.css" rel="preload" as="style"><link href="css/subpage.69a1ba66.css" rel="preload" as="style"><link href="js/chunk-vendors.5c595c4a.js" rel="preload" as="script"><link href="js/subpage.2382ad18.js" rel="preload" as="script"><link href="css/chunk-vendors.a16c4353.css" rel="stylesheet"><link href="css/subpage.69a1ba66.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but zynfcreader doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="https://webapi.amap.com/maps?v=1.4.15&key=0f249bdc0a6a5c56abe6c2698624443c"></script><script src="js/chunk-vendors.5c595c4a.js"></script><script src="js/subpage.2382ad18.js"></script></body></html>

+ 1 - 1
dist/hello.py

@@ -17,5 +17,5 @@ class Api:
 
 if __name__ == '__main__':
     api = Api()
-    window = webview.create_window('邦德威桌面端', url='./client/index.html',width=1500,height=900, js_api=api)
+    window = webview.create_window('邦德威', url='./client/index.html',width=1500,height=900, js_api=api)
     webview.start(debug=True)

+ 559 - 0
dist/logger.log

@@ -975,3 +975,562 @@ DEBUG:pywebview:[WinError 2] 系统
 DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
 DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
 DEBUG:pywebview:Using WinForms / EdgeHTML
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:Using WinForms / EdgeHTML
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.:  status words: 63 0
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:Using WinForms / EdgeHTML
+INFO:root:sending: FF CA 00 00 00
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: AA 24 B8 10 02 69 00 status words: 90 0
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:Using WinForms / EdgeHTML
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.:  status words: 63 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.:  status words: 63 0
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:Using WinForms / EdgeHTML
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 24 B8 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.:  status words: 63 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 24 B8 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.:  status words: 63 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.:  status words: 63 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 24 B8 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 24 B8 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 E6 B8 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 24 B8 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 E6 B8 49 10 02 69 status words: 90 0
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:Using WinForms / EdgeHTML
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 E6 B8 49 10 02 69 status words: 90 0
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:Using WinForms / EdgeHTML
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 E6 B8 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 24 B8 49 10 02 69 status words: 90 0
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:Using WinForms / EdgeHTML
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 24 B8 49 10 02 69 status words: 90 0
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:Using WinForms / EdgeHTML
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.:  status words: 63 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 E6 5A 49 10 02 69 status words: 90 0
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:Using WinForms / EdgeHTML
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:Using WinForms / EdgeHTML
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:Using WinForms / EdgeHTML
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:Using WinForms / EdgeHTML
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.:  status words: 63 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 E6 B8 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.:  status words: 63 0
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:Using WinForms / EdgeHTML
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.:  status words: 63 0
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:Using WinForms / EdgeHTML
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:Using WinForms / EdgeHTML
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.:  status words: 63 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.:  status words: 63 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.:  status words: 63 0
+INFO:root:sending: FF CA 00 00 00
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:Using WinForms / EdgeHTML
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.:  status words: 63 0
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:Using WinForms / EdgeHTML
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 E6 B8 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.:  status words: 63 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.:  status words: 63 0
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:Using WinForms / EdgeHTML
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 AF 81 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.:  status words: 63 0
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:Using WinForms / EdgeHTML
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.:  status words: 63 0
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:Using WinForms / EdgeHTML
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 AF 81 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 AF 81 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.:  status words: 63 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 E6 B8 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.:  status words: 63 0
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:Using WinForms / EdgeHTML
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 AF 81 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 AF 81 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 AF 81 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 AF 81 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.:  status words: 63 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 AF 81 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 AF 81 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 AF 81 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 AF 81 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 AF 81 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.:  status words: 63 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 E6 5A 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 E6 5A 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 E6 5A 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 E6 5A 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 E6 5A 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 E6 5A 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 E6 5A 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 E6 5A 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 E6 5A 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 E6 5A 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 E6 5A 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 E6 5A 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 E6 5A 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 E6 5A 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 E6 5A 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 E6 5A 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 E6 5A 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 E6 5A 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 E6 5A 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 E6 5A 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 E6 5A 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 24 B8 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 24 B8 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 24 B8 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 24 B8 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 24 B8 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 24 B8 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 24 B8 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 24 B8 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 24 B8 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 24 B8 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 24 B8 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 24 B8 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 24 B8 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 24 B8 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 24 B8 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 24 B8 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 24 B8 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 24 B8 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 24 B8 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 24 B8 49 10 02 69 status words: 90 0
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:Using WinForms / EdgeHTML
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 AF 81 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 AF 81 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 AF 81 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 AF 81 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 24 B8 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 24 B8 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 E6 5A 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 AF 81 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 2E AB 4A 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 2E AB 4A 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 2E AB 4A 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 2E AB 4A 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 2E AB 4A 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 2E AB 4A 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 24 B8 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 E6 B8 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 E6 B8 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 E6 B8 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 E6 B8 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 E6 5A 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 2E AB 4A 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 AF 81 49 10 02 69 status words: 90 0
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:Using WinForms / EdgeHTML
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 24 B8 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 E6 B8 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 E6 5A 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 E6 5A 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 E6 5A 49 10 02 69 status words: 90 0
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:Using WinForms / EdgeHTML
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 2E AB 4A 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 E6 5A 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 AF 81 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 AF 81 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 AF 81 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 AF 81 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 2E AB 4A 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 E6 5A 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:Using WinForms / EdgeHTML
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 AF 81 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 AF 81 49 10 02 69 status words: 90 0
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:Using WinForms / EdgeHTML
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.:  status words: 63 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 2E AB 4A 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 2E AB 4A 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 2E AB 4A 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 2E AB 4A 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.:  status words: 63 0
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:Using WinForms / EdgeHTML
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:Using WinForms / EdgeHTML
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:Using WinForms / EdgeHTML
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 AF 81 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.:  status words: 63 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 AF 81 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:Using WinForms / EdgeHTML
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 E6 5A 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 E6 5A 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 2E AB 4A 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 2E AB 4A 10 02 69 status words: 90 0
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:Using WinForms / EdgeHTML
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:Using WinForms / EdgeHTML
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 AF 81 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 AF 81 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 2E AB 4A 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 94 95 49 10 02 69 status words: 90 0
+INFO:root:sending: FF CA 00 00 00
+INFO:root:serial no.: 04 E6 5A 49 10 02 69 status words: 90 0
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:Using WinForms / EdgeHTML
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:Using WinForms / EdgeHTML
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:Using WinForms / EdgeHTML

+ 1 - 2
dist/reader.py

@@ -5,8 +5,7 @@ from smartcard.ATR import ATR
 import logging
 
 # 通过下面的方式进行简单配置输出方式与日志级别
-logging.basicConfig(filename='logger.log', level=logging.INFO)
-
+# logging.basicConfig(filename='E:\logger.log', level=logging.INFO)
 
 # 初始化读卡器
 def init():

+ 5 - 0
logger.log

@@ -8,3 +8,8 @@ DEBUG:pywebview:[WinError 2] 系统
 DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
 DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
 DEBUG:pywebview:Using WinForms / EdgeHTML
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:[WinError 2] 系统找不到指定的文件。
+DEBUG:pywebview:Using WinForms / EdgeHTML

+ 499 - 0
package-lock.json

@@ -1114,6 +1114,36 @@
         "to-fast-properties": "^2.0.0"
       }
     },
+    "@electron/get": {
+      "version": "1.13.1",
+      "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.13.1.tgz",
+      "integrity": "sha512-U5vkXDZ9DwXtkPqlB45tfYnnYBN8PePp1z/XDCupnSpdrxT8/ThCv9WCwPLf9oqiSGZTkH6dx2jDUPuoXpjkcA==",
+      "dev": true,
+      "requires": {
+        "debug": "^4.1.1",
+        "env-paths": "^2.2.0",
+        "fs-extra": "^8.1.0",
+        "global-agent": "^3.0.0",
+        "global-tunnel-ng": "^2.7.1",
+        "got": "^9.6.0",
+        "progress": "^2.0.3",
+        "semver": "^6.2.0",
+        "sumchecker": "^3.0.1"
+      },
+      "dependencies": {
+        "fs-extra": {
+          "version": "8.1.0",
+          "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+          "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
+          "dev": true,
+          "requires": {
+            "graceful-fs": "^4.2.0",
+            "jsonfile": "^4.0.0",
+            "universalify": "^0.1.0"
+          }
+        }
+      }
+    },
     "@hapi/address": {
       "version": "2.1.4",
       "resolved": "https://registry.npmmirror.com/@hapi/address/download/@hapi/address-2.1.4.tgz",
@@ -1180,6 +1210,12 @@
       "integrity": "sha1-K1o6s/kYzKSKjHVMCBaOPwPrphs=",
       "dev": true
     },
+    "@sindresorhus/is": {
+      "version": "0.14.0",
+      "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz",
+      "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==",
+      "dev": true
+    },
     "@soda/friendly-errors-webpack-plugin": {
       "version": "1.8.1",
       "resolved": "https://registry.npmmirror.com/@soda/friendly-errors-webpack-plugin/download/@soda/friendly-errors-webpack-plugin-1.8.1.tgz",
@@ -1249,6 +1285,15 @@
       "integrity": "sha1-pTUV2yXYA4N0OBtzryC7Ty5QjYc=",
       "dev": true
     },
+    "@szmarczak/http-timer": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz",
+      "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==",
+      "dev": true,
+      "requires": {
+        "defer-to-connect": "^1.0.1"
+      }
+    },
     "@types/body-parser": {
       "version": "1.19.2",
       "resolved": "https://registry.npmmirror.com/@types/body-parser/download/@types/body-parser-1.19.2.tgz?cache=0&sync_timestamp=1637265217498&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2F%40types%2Fbody-parser%2Fdownload%2F%40types%2Fbody-parser-1.19.2.tgz",
@@ -2666,6 +2711,13 @@
       "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
       "dev": true
     },
+    "boolean": {
+      "version": "3.1.4",
+      "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.1.4.tgz",
+      "integrity": "sha512-3hx0kwU3uzG6ReQ3pnaFQPSktpBw6RHN3/ivDKEuU8g1XSfafowyvDnadjv1xp8IZqhtSukxlwv9bF6FhX8m0w==",
+      "dev": true,
+      "optional": true
+    },
     "brace-expansion": {
       "version": "1.1.11",
       "resolved": "https://registry.npm.taobao.org/brace-expansion/download/brace-expansion-1.1.11.tgz?cache=0&sync_timestamp=1614010709807&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbrace-expansion%2Fdownload%2Fbrace-expansion-1.1.11.tgz",
@@ -2827,6 +2879,12 @@
         "isarray": "^1.0.0"
       }
     },
+    "buffer-crc32": {
+      "version": "0.2.13",
+      "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+      "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
+      "dev": true
+    },
     "buffer-from": {
       "version": "1.1.2",
       "resolved": "https://registry.nlark.com/buffer-from/download/buffer-from-1.1.2.tgz",
@@ -2917,6 +2975,44 @@
         "schema-utils": "^2.0.0"
       }
     },
+    "cacheable-request": {
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz",
+      "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==",
+      "dev": true,
+      "requires": {
+        "clone-response": "^1.0.2",
+        "get-stream": "^5.1.0",
+        "http-cache-semantics": "^4.0.0",
+        "keyv": "^3.0.0",
+        "lowercase-keys": "^2.0.0",
+        "normalize-url": "^4.1.0",
+        "responselike": "^1.0.2"
+      },
+      "dependencies": {
+        "get-stream": {
+          "version": "5.2.0",
+          "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+          "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+          "dev": true,
+          "requires": {
+            "pump": "^3.0.0"
+          }
+        },
+        "lowercase-keys": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
+          "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
+          "dev": true
+        },
+        "normalize-url": {
+          "version": "4.5.1",
+          "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz",
+          "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==",
+          "dev": true
+        }
+      }
+    },
     "call-bind": {
       "version": "1.0.2",
       "resolved": "https://registry.npm.taobao.org/call-bind/download/call-bind-1.0.2.tgz?cache=0&sync_timestamp=1610402896029&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcall-bind%2Fdownload%2Fcall-bind-1.0.2.tgz",
@@ -3312,6 +3408,15 @@
       "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
       "dev": true
     },
+    "clone-response": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz",
+      "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=",
+      "dev": true,
+      "requires": {
+        "mimic-response": "^1.0.0"
+      }
+    },
     "coa": {
       "version": "2.0.2",
       "resolved": "https://registry.npmmirror.com/coa/download/coa-2.0.2.tgz",
@@ -3460,6 +3565,17 @@
         "typedarray": "^0.0.6"
       }
     },
+    "config-chain": {
+      "version": "1.1.13",
+      "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz",
+      "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "ini": "^1.3.4",
+        "proto-list": "~1.2.1"
+      }
+    },
     "connect-history-api-fallback": {
       "version": "1.6.0",
       "resolved": "https://registry.npm.taobao.org/connect-history-api-fallback/download/connect-history-api-fallback-1.6.0.tgz",
@@ -4092,6 +4208,15 @@
       "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
       "dev": true
     },
+    "decompress-response": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
+      "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=",
+      "dev": true,
+      "requires": {
+        "mimic-response": "^1.0.0"
+      }
+    },
     "deep-equal": {
       "version": "1.1.1",
       "resolved": "https://registry.npm.taobao.org/deep-equal/download/deep-equal-1.1.1.tgz?cache=0&sync_timestamp=1606860101281&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdeep-equal%2Fdownload%2Fdeep-equal-1.1.1.tgz",
@@ -4241,6 +4366,12 @@
         "clone": "^1.0.2"
       }
     },
+    "defer-to-connect": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz",
+      "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==",
+      "dev": true
+    },
     "define-properties": {
       "version": "1.1.3",
       "resolved": "https://registry.npm.taobao.org/define-properties/download/define-properties-1.1.3.tgz",
@@ -4518,6 +4649,12 @@
       "integrity": "sha1-Or5DrvODX4rgd9E23c4PJ2sEAOY=",
       "dev": true
     },
+    "duplexer3": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
+      "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=",
+      "dev": true
+    },
     "duplexify": {
       "version": "3.7.1",
       "resolved": "https://registry.nlark.com/duplexify/download/duplexify-3.7.1.tgz?cache=0&sync_timestamp=1626860849590&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fduplexify%2Fdownload%2Fduplexify-3.7.1.tgz",
@@ -4558,6 +4695,25 @@
       "integrity": "sha1-SGYSh1c9zFPjZsehrlLDoSDuybo=",
       "dev": true
     },
+    "electron": {
+      "version": "16.0.5",
+      "resolved": "https://registry.npmjs.org/electron/-/electron-16.0.5.tgz",
+      "integrity": "sha512-TgQXWmEGQ3uH2P2JDq5GyJDEu/fimRgqp1iNisARtGreU1k3630PqWlR+4SPnSEHN9NuSv92ng6NWxtefeFzxg==",
+      "dev": true,
+      "requires": {
+        "@electron/get": "^1.13.0",
+        "@types/node": "^14.6.2",
+        "extract-zip": "^1.0.3"
+      },
+      "dependencies": {
+        "@types/node": {
+          "version": "14.18.2",
+          "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.2.tgz",
+          "integrity": "sha512-fqtSN5xn/bBzDxMT77C1rJg6CsH/R49E7qsGuvdPJa20HtV5zSTuLJPNfnlyVH3wauKnkHdLggTVkOW/xP9oQg==",
+          "dev": true
+        }
+      }
+    },
     "electron-to-chromium": {
       "version": "1.4.8",
       "resolved": "https://registry.npmmirror.com/electron-to-chromium/download/electron-to-chromium-1.4.8.tgz",
@@ -4655,6 +4811,12 @@
       "integrity": "sha1-CY3JDruD2N/6CJ1VJWs1HTTE2lU=",
       "dev": true
     },
+    "env-paths": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
+      "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
+      "dev": true
+    },
     "errno": {
       "version": "0.1.8",
       "resolved": "https://registry.npm.taobao.org/errno/download/errno-0.1.8.tgz",
@@ -4720,6 +4882,13 @@
         "is-symbol": "^1.0.2"
       }
     },
+    "es6-error": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz",
+      "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==",
+      "dev": true,
+      "optional": true
+    },
     "escalade": {
       "version": "3.1.1",
       "resolved": "https://registry.npm.taobao.org/escalade/download/escalade-3.1.1.tgz?cache=0&sync_timestamp=1602567261690&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fescalade%2Fdownload%2Fescalade-3.1.1.tgz",
@@ -5235,6 +5404,35 @@
         }
       }
     },
+    "extract-zip": {
+      "version": "1.7.0",
+      "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz",
+      "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==",
+      "dev": true,
+      "requires": {
+        "concat-stream": "^1.6.2",
+        "debug": "^2.6.9",
+        "mkdirp": "^0.5.4",
+        "yauzl": "^2.10.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "dev": true
+        }
+      }
+    },
     "extsprintf": {
       "version": "1.3.0",
       "resolved": "https://registry.npmmirror.com/extsprintf/download/extsprintf-1.3.0.tgz",
@@ -5303,6 +5501,15 @@
         "websocket-driver": ">=0.5.1"
       }
     },
+    "fd-slicer": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
+      "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=",
+      "dev": true,
+      "requires": {
+        "pend": "~1.2.0"
+      }
+    },
     "figgy-pudding": {
       "version": "3.5.2",
       "resolved": "https://registry.npm.taobao.org/figgy-pudding/download/figgy-pudding-3.5.2.tgz",
@@ -5650,12 +5857,79 @@
       "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=",
       "dev": true
     },
+    "global-agent": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz",
+      "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "boolean": "^3.0.1",
+        "es6-error": "^4.1.1",
+        "matcher": "^3.0.0",
+        "roarr": "^2.15.3",
+        "semver": "^7.3.2",
+        "serialize-error": "^7.0.1"
+      },
+      "dependencies": {
+        "lru-cache": {
+          "version": "6.0.0",
+          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+          "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "yallist": "^4.0.0"
+          }
+        },
+        "semver": {
+          "version": "7.3.5",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
+          "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "lru-cache": "^6.0.0"
+          }
+        },
+        "yallist": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+          "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+          "dev": true,
+          "optional": true
+        }
+      }
+    },
+    "global-tunnel-ng": {
+      "version": "2.7.1",
+      "resolved": "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz",
+      "integrity": "sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "encodeurl": "^1.0.2",
+        "lodash": "^4.17.10",
+        "npm-conf": "^1.1.3",
+        "tunnel": "^0.0.6"
+      }
+    },
     "globals": {
       "version": "11.12.0",
       "resolved": "https://registry.npmmirror.com/globals/download/globals-11.12.0.tgz?cache=0&sync_timestamp=1635390798667&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fglobals%2Fdownload%2Fglobals-11.12.0.tgz",
       "integrity": "sha1-q4eVM4hooLq9hSV1gBjCp+uVxC4=",
       "dev": true
     },
+    "globalthis": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.2.tgz",
+      "integrity": "sha512-ZQnSFO1la8P7auIOQECnm0sSuoMeaSq0EEdXMBFF2QJO4uNcwbyhSgG3MruWNbFTqCLmxVwGOl7LZ9kASvHdeQ==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "define-properties": "^1.1.3"
+      }
+    },
     "globby": {
       "version": "9.2.0",
       "resolved": "https://registry.nlark.com/globby/download/globby-9.2.0.tgz?cache=0&sync_timestamp=1629801109090&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fglobby%2Fdownload%2Fglobby-9.2.0.tgz",
@@ -5672,6 +5946,25 @@
         "slash": "^2.0.0"
       }
     },
+    "got": {
+      "version": "9.6.0",
+      "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz",
+      "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==",
+      "dev": true,
+      "requires": {
+        "@sindresorhus/is": "^0.14.0",
+        "@szmarczak/http-timer": "^1.1.2",
+        "cacheable-request": "^6.0.0",
+        "decompress-response": "^3.3.0",
+        "duplexer3": "^0.1.4",
+        "get-stream": "^4.1.0",
+        "lowercase-keys": "^1.0.1",
+        "mimic-response": "^1.0.1",
+        "p-cancelable": "^1.0.0",
+        "to-readable-stream": "^1.0.0",
+        "url-parse-lax": "^3.0.0"
+      }
+    },
     "graceful-fs": {
       "version": "4.2.8",
       "resolved": "https://registry.npmmirror.com/graceful-fs/download/graceful-fs-4.2.8.tgz",
@@ -6022,6 +6315,12 @@
         }
       }
     },
+    "http-cache-semantics": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz",
+      "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==",
+      "dev": true
+    },
     "http-deceiver": {
       "version": "1.2.7",
       "resolved": "https://registry.npm.taobao.org/http-deceiver/download/http-deceiver-1.2.7.tgz",
@@ -6305,6 +6604,13 @@
       "integrity": "sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w=",
       "dev": true
     },
+    "ini": {
+      "version": "1.3.8",
+      "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+      "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+      "dev": true,
+      "optional": true
+    },
     "inquirer": {
       "version": "7.3.3",
       "resolved": "https://registry.npmmirror.com/inquirer/download/inquirer-7.3.3.tgz?cache=0&sync_timestamp=1633472938029&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Finquirer%2Fdownload%2Finquirer-7.3.3.tgz",
@@ -6910,6 +7216,12 @@
       "integrity": "sha1-gFZNLkg9rPbo7yCWUKZ98/DCg6Q=",
       "dev": true
     },
+    "json-buffer": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
+      "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=",
+      "dev": true
+    },
     "json-parse-better-errors": {
       "version": "1.0.2",
       "resolved": "https://registry.npm.taobao.org/json-parse-better-errors/download/json-parse-better-errors-1.0.2.tgz",
@@ -6980,6 +7292,15 @@
         "verror": "1.10.0"
       }
     },
+    "keyv": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz",
+      "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==",
+      "dev": true,
+      "requires": {
+        "json-buffer": "3.0.0"
+      }
+    },
     "killable": {
       "version": "1.0.1",
       "resolved": "https://registry.npm.taobao.org/killable/download/killable-1.0.1.tgz",
@@ -7251,6 +7572,12 @@
       "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=",
       "dev": true
     },
+    "lowercase-keys": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
+      "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
+      "dev": true
+    },
     "lru-cache": {
       "version": "5.1.1",
       "resolved": "https://registry.npm.taobao.org/lru-cache/download/lru-cache-5.1.1.tgz",
@@ -7284,6 +7611,25 @@
         "object-visit": "^1.0.0"
       }
     },
+    "matcher": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz",
+      "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "escape-string-regexp": "^4.0.0"
+      },
+      "dependencies": {
+        "escape-string-regexp": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+          "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+          "dev": true,
+          "optional": true
+        }
+      }
+    },
     "md5.js": {
       "version": "1.3.5",
       "resolved": "https://registry.npm.taobao.org/md5.js/download/md5.js-1.3.5.tgz",
@@ -7424,6 +7770,12 @@
       "integrity": "sha1-ggyGo5M0ZA6ZUWkovQP8qIBX0CI=",
       "dev": true
     },
+    "mimic-response": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
+      "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
+      "dev": true
+    },
     "mini-css-extract-plugin": {
       "version": "0.9.0",
       "resolved": "https://registry.npmmirror.com/mini-css-extract-plugin/download/mini-css-extract-plugin-0.9.0.tgz",
@@ -7783,6 +8135,26 @@
       "resolved": "https://registry.npmjs.org/normalize-wheel/-/normalize-wheel-1.0.1.tgz",
       "integrity": "sha1-rsiGr/2wRQcNhWRH32Ls+GFG7EU="
     },
+    "npm-conf": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz",
+      "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "config-chain": "^1.1.11",
+        "pify": "^3.0.0"
+      },
+      "dependencies": {
+        "pify": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+          "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+          "dev": true,
+          "optional": true
+        }
+      }
+    },
     "npm-run-path": {
       "version": "2.0.2",
       "resolved": "https://registry.npmmirror.com/npm-run-path/download/npm-run-path-2.0.2.tgz",
@@ -8053,6 +8425,12 @@
       "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
       "dev": true
     },
+    "p-cancelable": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz",
+      "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==",
+      "dev": true
+    },
     "p-finally": {
       "version": "1.0.0",
       "resolved": "https://registry.npm.taobao.org/p-finally/download/p-finally-1.0.0.tgz?cache=0&sync_timestamp=1617947695861&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-finally%2Fdownload%2Fp-finally-1.0.0.tgz",
@@ -8284,6 +8662,12 @@
         "sha.js": "^2.4.8"
       }
     },
+    "pend": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+      "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
+      "dev": true
+    },
     "performance-now": {
       "version": "2.1.0",
       "resolved": "https://registry.npm.taobao.org/performance-now/download/performance-now-2.1.0.tgz",
@@ -8999,6 +9383,13 @@
       "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
       "dev": true
     },
+    "proto-list": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
+      "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=",
+      "dev": true,
+      "optional": true
+    },
     "proxy-addr": {
       "version": "2.0.7",
       "resolved": "https://registry.nlark.com/proxy-addr/download/proxy-addr-2.0.7.tgz",
@@ -9516,6 +9907,15 @@
       "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
       "dev": true
     },
+    "responselike": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
+      "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=",
+      "dev": true,
+      "requires": {
+        "lowercase-keys": "^1.0.0"
+      }
+    },
     "restore-cursor": {
       "version": "2.0.0",
       "resolved": "https://registry.nlark.com/restore-cursor/download/restore-cursor-2.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Frestore-cursor%2Fdownload%2Frestore-cursor-2.0.0.tgz",
@@ -9569,6 +9969,30 @@
         "inherits": "^2.0.1"
       }
     },
+    "roarr": {
+      "version": "2.15.4",
+      "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz",
+      "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "boolean": "^3.0.1",
+        "detect-node": "^2.0.4",
+        "globalthis": "^1.0.1",
+        "json-stringify-safe": "^5.0.1",
+        "semver-compare": "^1.0.0",
+        "sprintf-js": "^1.1.2"
+      },
+      "dependencies": {
+        "sprintf-js": {
+          "version": "1.1.2",
+          "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz",
+          "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==",
+          "dev": true,
+          "optional": true
+        }
+      }
+    },
     "run-async": {
       "version": "2.4.1",
       "resolved": "https://registry.npm.taobao.org/run-async/download/run-async-2.4.1.tgz?cache=0&sync_timestamp=1587966119578&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frun-async%2Fdownload%2Frun-async-2.4.1.tgz",
@@ -9650,6 +10074,13 @@
       "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=",
       "dev": true
     },
+    "semver-compare": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz",
+      "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=",
+      "dev": true,
+      "optional": true
+    },
     "send": {
       "version": "0.17.1",
       "resolved": "https://registry.npm.taobao.org/send/download/send-0.17.1.tgz",
@@ -9702,6 +10133,25 @@
         }
       }
     },
+    "serialize-error": {
+      "version": "7.0.1",
+      "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz",
+      "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "type-fest": "^0.13.1"
+      },
+      "dependencies": {
+        "type-fest": {
+          "version": "0.13.1",
+          "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz",
+          "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==",
+          "dev": true,
+          "optional": true
+        }
+      }
+    },
     "serialize-javascript": {
       "version": "4.0.0",
       "resolved": "https://registry.nlark.com/serialize-javascript/download/serialize-javascript-4.0.0.tgz",
@@ -10436,6 +10886,15 @@
         }
       }
     },
+    "sumchecker": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz",
+      "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==",
+      "dev": true,
+      "requires": {
+        "debug": "^4.1.0"
+      }
+    },
     "supports-color": {
       "version": "5.5.0",
       "resolved": "https://registry.npmmirror.com/supports-color/download/supports-color-5.5.0.tgz",
@@ -10767,6 +11226,12 @@
         }
       }
     },
+    "to-readable-stream": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz",
+      "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==",
+      "dev": true
+    },
     "to-regex": {
       "version": "3.0.2",
       "resolved": "https://registry.npm.taobao.org/to-regex/download/to-regex-3.0.2.tgz",
@@ -10835,6 +11300,13 @@
       "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
       "dev": true
     },
+    "tunnel": {
+      "version": "0.0.6",
+      "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
+      "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
+      "dev": true,
+      "optional": true
+    },
     "tunnel-agent": {
       "version": "0.6.0",
       "resolved": "https://registry.npm.taobao.org/tunnel-agent/download/tunnel-agent-0.6.0.tgz",
@@ -11110,6 +11582,23 @@
         "requires-port": "^1.0.0"
       }
     },
+    "url-parse-lax": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz",
+      "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=",
+      "dev": true,
+      "requires": {
+        "prepend-http": "^2.0.0"
+      },
+      "dependencies": {
+        "prepend-http": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
+          "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=",
+          "dev": true
+        }
+      }
+    },
     "use": {
       "version": "3.1.1",
       "resolved": "https://registry.npm.taobao.org/use/download/use-3.1.1.tgz",
@@ -12260,6 +12749,16 @@
       "integrity": "sha1-LrfcOwKJcY/ClfNidThFxBoMlO4=",
       "dev": true
     },
+    "yauzl": {
+      "version": "2.10.0",
+      "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
+      "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=",
+      "dev": true,
+      "requires": {
+        "buffer-crc32": "~0.2.3",
+        "fd-slicer": "~1.1.0"
+      }
+    },
     "yorkie": {
       "version": "2.0.0",
       "resolved": "https://registry.npmmirror.com/yorkie/download/yorkie-2.0.0.tgz",

+ 3 - 1
package.json

@@ -5,7 +5,8 @@
   "scripts": {
     "serve": "vue-cli-service serve",
     "build": "vue-cli-service build",
-    "lint": "vue-cli-service lint"
+    "lint": "vue-cli-service lint",
+    "electron:build": "electron-builder"
   },
   "dependencies": {
     "axios": "^0.24.0",
@@ -27,6 +28,7 @@
     "@vue/cli-plugin-eslint": "^4.5.0",
     "@vue/cli-service": "^4.5.0",
     "babel-eslint": "^10.1.0",
+    "electron": "^16.0.5",
     "eslint": "^6.7.2",
     "eslint-plugin-vue": "^6.2.2",
     "vue-template-compiler": "^2.6.11"

+ 1 - 0
public/index.html

@@ -13,5 +13,6 @@
     </noscript>
     <div id="app"></div>
     <!-- built files will be auto injected -->
+    <script src="https://webapi.amap.com/maps?v=1.4.15&key=0f249bdc0a6a5c56abe6c2698624443c"></script>
   </body>
 </html>

+ 102 - 46
src/components/cardHome.vue

@@ -8,7 +8,7 @@
       <span @click="logout">退出</span>
     </div>
     <div class="homediv">
-      <h1>邦德威桌面端</h1>
+      <h1>邦德威</h1>
     </div>
     <div class="result">
       <div>
@@ -21,8 +21,8 @@
               <div class="rp_top_tit">产品追溯报告</div>
             </div>
             <div class="rp_top_txt">
-              <div>报告编号 {{ chipData.code }}</div>
-              <div>报告日期 {{ chipData.datetime }}</div>
+              <div>报告编号 {{ chipData.code || "N/A"}}</div>
+              <div>报告日期 {{ chipData.datetime || 'N/A'}}</div>
             </div>
             <div class="rp_mid">
               <div class="rp_mid_tit">产品详情</div>
@@ -67,7 +67,7 @@
               <div class="pdf_rt1">
                 追溯结果: <span class="pdf_rt1_g">未见异常</span>
               </div>
-              <div class="pdf_rt2">未发现异常, 请核对内外包装与本报告</div>
+              <div class="pdf_rt2">未发现异常, 请核对内外包装与本报告</div>
               <div class="pdf_rt2">所载数据是否一致, 并按相关规定使用</div>
             </div>
             <div class="pdf_res_img">
@@ -113,7 +113,7 @@ export default {
         keyA: "",
         keyB: "",
       },
-      statusText: "读写器未就绪",
+      statusText: "程序未就绪",
       status: false,
       chipData: {},
       telephone: "",
@@ -126,10 +126,31 @@ export default {
     };
   },
   created() {
+    var that = this;
     const userinfo = JSON.parse(sessionStorage.getItem("userinfo"));
     this.tableData = JSON.parse(localStorage.getItem('tableData')) || [];
     this.telephone = userinfo.telephone;
-    this.recursiveFun();
+    var map = new AMap.Map('container', {
+      resizeEnable: true
+    });
+    AMap.plugin('AMap.Geolocation', function() {
+      var geolocation = new AMap.Geolocation({
+          enableHighAccuracy: true,//是否使用高精度定位,默认:true
+          timeout: 10000,          //超过10秒后停止定位,默认:5s
+          buttonPosition:'RB',    //定位按钮的停靠位置
+          buttonOffset: new AMap.Pixel(10, 20),//定位按钮与设置的停靠位置的偏移量,默认:Pixel(10, 20)
+          zoomToAccuracy: true,   //定位成功后是否自动调整地图视野到定位点
+
+      });
+      map.addControl(geolocation);
+      geolocation.getCurrentPosition(function(status,result){
+          if(status=='complete'){
+            that.onComplete(result)
+          }else{
+            that.onError(result)
+          }
+      });
+    });
   },
   methods: {
     logout() {
@@ -137,62 +158,97 @@ export default {
       localStorage.removeItem("userinfo");
       this.$router.push({ path: "/" });
     },
+    reset(){
+      this.recursiveFun()
+    },
     recursiveFun(){
       var that = this;
+      that.result = "";
+      that.pdfSrc = "";
       this.timeout = null;
-      this.timeout=setTimeout(() => {
-        this.getCodeInfo();
-        clearTimeout(that.timeout);
-      }, 500);
+      // this.timeout=setTimeout(() => {
+      //   that.getCodeInfo();
+      // }, 2000);
+      // clearTimeout(that.timeout);
+      that.getCodeInfo().then(res=>{
+        that.reset();
+      }).catch(err=>{
+        that.reset();
+      })
     },
     getCodeInfo() {
       var that = this;
-      that.result = "";
-      that.pdfSrc = "";
+      var latitude = that.latitude;
+      var longitude = that.longitude;
       // eslint-disable-next-line no-undef
-      pywebview.api.read_uid() //A9554912
-        .then(res => {
-          res = res.replace(/\s/g, "");
-          that.result = res;
-          chip(
-            qs.stringify({
-              chipNumber: res,
-              longitude: 0,
-              latitude: 0,
-              inoculators: "",
-              incs: "",
-              agin: true,
-              vaccinationCipher: "",
-            })
-          ).catch(err=>{
-            // alert('请求失败,请重试',err);
-            that.$message({
-              message: "请求失败,请重试!",
-              type: "success",
-            });
-            that.recursiveFun();
-          }).then(response => {
-            that.chipData = response.data;
+      return new Promise(function(resolve,reject){
+        pywebview.api.read_uid()
+          .then(res => {
+            res = res.replace(/\s/g, "");
+            that.result = res;
+            if(res){
+              chip(
+                qs.stringify({
+                  chipNumber: res,
+                  longitude:longitude || 0,
+                  latitude: latitude || 0,
+                  inoculators: "",
+                  incs: "",
+                  agin: true,
+                  vaccinationCipher: "",
+                })
+              ).then(response => {
+                that.chipData = response.data;
+                that.$message({
+                  message: "扫描成功",
+                  type: "success",
+                });
+                resolve();
+                that.setTableData({code:response.data.chipNumber,date:new Date().toLocaleString(),down:'http://121.229.41.37:8091/file/pdf/'+response.data.chipNumber+'_.pdf'});
+              }).catch(err=>{
+                that.result = '';
+                reject();
+                that.$message({
+                  message: "非官方标签!",
+                  type: "error",
+                });
+              })
+            }else{
+              that.result = '';
+              reject()
+            }
+          })
+          .catch((err) => {
+            that.result = '';
             that.$message({
-              message: "请求成功",
-              type: "success",
+              message: "扫描失败,请重试!",
+              type: "error",
             });
-            that.setTableData({code:response.data.chipNumber,date:new Date().toLocaleString(),down:'http://121.229.41.37:8091/file/pdf/'+response.data.chipNumber+'_.pdf'});
-            that.recursiveFun();
-          })
-        })
-        .catch(() => {
-          that.recursiveFun();
-        });
+            reject()
+          });
+      })
     },
     setTableData(params={}){
       this.tableData.push(params);
       localStorage.setItem('tableData',JSON.stringify(this.tableData));
+    },
+    //解析定位结果
+    onComplete(data) {
+      var {lat,lng} = data.position;
+      this.latitude = lat;
+      this.longitude = lng;
+
+    },
+    //解析定位错误信息
+    onError(data) {
+      this.latitude = 0;
+      this.longitude = 0;
     }
   },
   mounted() {
     var that = this;
-    that.status = this.isStatus; //04ADB549100269
+    that.status = this.isStatus; //04ADB549100269   A9554912
+    this.recursiveFun();
     // that.chipData = {
     //   approvalNumber: "202301017",
     //   batch: "123321",
@@ -227,7 +283,7 @@ export default {
     // };
     // chip(
     //   qs.stringify({
-    //     chipNumber: 'A9554912',
+    //     chipNumber: '',
     //     longitude: 0,
     //     latitude: 0,
     //     inoculators: "",

+ 2 - 0
src/components/signIn/SignIn.vue

@@ -23,6 +23,8 @@
                 label-width="100px"
                 class="demo-ruleForm"
               >
+                <!-- 防止浏览器自动填充密码 -->
+                <input type="password" clearable hidden autocomplete="new-password" style="display: none" />
                 <el-form-item prop="telephone">
                   <el-input
                     prefix-icon="el-icon-phone"

+ 1 - 1
src/main.js

@@ -14,7 +14,7 @@ window.addEventListener('pywebviewready', function () {
 Vue.prototype.removeEvent = function () {
   window.removeEventListener("pywebviewready", function () {
     Vue.prototype.isStatus = false;
-    alert('读写器已解除')
+    alert('程序已解除')
   });
 }
 Vue.use(Element);

+ 10 - 10
src/utils/request.js

@@ -78,22 +78,22 @@ service.interceptors.response.use(res => {
     })
     return Promise.reject(new Error(msg))
   } else if (code !== 200) {
-    Notification.error({
-      title: msg
-    })
+    // Notification.error({
+    //   title: msg
+    // })
     if(code == 102 || code == 401){
       router.push({
         path: "/",
       });
       localStorage.removeItem("token");
     }
-    return Promise.reject('error')
+    return Promise.reject('error');
   } else {
     return res.data
   }
 },
   error => {
-    console.log('err' + error)
+    const code = res.data.code;
     let { message } = error;
     if (message == "Network Error") {
       message = "后端接口异常";
@@ -104,11 +104,11 @@ service.interceptors.response.use(res => {
     else if (message.includes("Request failed with status code")) {
       message = "系统接口" + message.substr(message.length - 3) + "异常";
     }
-    Message({
-      message: error,
-      type: 'error',
-      duration: 5 * 1000
-    })
+    // Message({
+    //   message: error,
+    //   type: 'error',
+    //   duration: 5 * 1000
+    // })
     return Promise.reject(error)
   }
 )

Vissa filer visades inte eftersom för många filer har ändrats