summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhdk1999 <[email protected]>2024-01-13 18:35:42 +0800
committerhdk1999 <[email protected]>2024-01-13 18:35:42 +0800
commit3be76c1e6fdd26a6096c086fddfb9daeea5356c0 (patch)
treefff2be81d5e8c6df3dcde85981f7511b762fe43f
parent76d7971035d20cff2cfdc1366859f0c052416fbb (diff)
初步完成首页接口开发
-rw-r--r--.env.development3
-rw-r--r--package.json2
-rw-r--r--pnpm-lock.yaml532
-rw-r--r--src/api/sys/index.ts42
-rw-r--r--src/api/sys/type/sysinfo.ts15
-rw-r--r--src/config/white-list.ts7
-rw-r--r--src/views/dashboard/components/Admin.vue71
-rw-r--r--src/views/login/index.vue9
-rw-r--r--vite.config.ts4
9 files changed, 662 insertions, 23 deletions
diff --git a/.env.development b/.env.development
index 12bc1e2..5613beb 100644
--- a/.env.development
+++ b/.env.development
@@ -1,7 +1,8 @@
# 开发环境自定义的环境变量(命名必须以 VITE_ 开头)
## 后端接口公共路径(如果解决跨域问题采用反向代理就只需写公共路径)
-VITE_BASE_API = '/api/v1'
+## VITE_BASE_API = '/api/v1'
+VITE_BASE_API="/api"
## 路由模式 hash 或 html5
VITE_ROUTER_HISTORY = 'hash'
diff --git a/package.json b/package.json
index 74a524b..f29594e 100644
--- a/package.json
+++ b/package.json
@@ -25,7 +25,9 @@
"test": "vitest"
},
"dependencies": {
+ "@antv/graphin": "^2.7.27",
"@element-plus/icons-vue": "2.3.1",
+ "antv-graphin-vue": "^2.6.10",
"axios": "1.6.4",
"dayjs": "1.11.10",
"echarts": "^5.4.3",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index cf0591e..68fd12c 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -5,9 +5,15 @@ settings:
excludeLinksFromLockfile: false
dependencies:
+ '@antv/graphin':
+ specifier: ^2.7.27
'@element-plus/icons-vue':
specifier: 2.3.1
version: 2.3.1([email protected])
+ antv-graphin-vue:
+ specifier: ^2.6.10
axios:
specifier: 1.6.4
version: 1.6.4
@@ -170,6 +176,12 @@ packages:
'@jridgewell/trace-mapping': 0.3.20
dev: true
+ /@ant-design/[email protected]:
+ resolution: {integrity: sha512-3mnuX2prnWOWvpFTS2WH2LoouWlOgtnIpc6IarWN6GOzzLF8dW/U8UctuvIPhoboETehZfJ61XP+CGakBEPJ3Q==}
+ dependencies:
+ tinycolor2: 1.6.0
+ dev: false
+
resolution: {integrity: sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==}
dependencies:
@@ -181,6 +193,263 @@ packages:
resolution: {integrity: sha512-gFPqTG7otEJ8uP6wrhDv6mqwGWYZKNvAcCq6u9hOj0c+IKCEsY4L1oC9trPq2SaWIzAfHvqfBDxF591JkMf+kg==}
dev: true
+ resolution: {integrity: sha512-DVhcFSQ8YQnMNW34Mk8BSsfc61iC1sAnmcfYoXTAshYHuU50p/6b7x3QYaGctDNKWGvi1ub7mPcSY0bK+aN0qg==}
+ dependencies:
+ '@antv/util': 2.0.17
+ tslib: 2.6.2
+ dev: false
+
+ resolution: {integrity: sha512-2shXUl504fKwt82T3GkuT4Uoc6p9qjCKnJ8gXGLSW4T1W37dqf9AV28aCfoVPHp2BUXpSsB+PAJX2rG/jLHsLQ==}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ resolution: {integrity: sha512-4ddpsiHN9Pd4UIlWuKVK1C4IiZIdbwQvy9i7DUSI3xNJ89FPUFt8lxDYj8GzzfdllV0NkJTRxnG+FvLk0llidg==}
+ dev: false
+
+ resolution: {integrity: sha512-QOtq50QpnKez9J75/Z8j2yZ7QDQdk8R8mVQJiHtaEO5eI7DM4ZbrsWff/Ew26JYmPWdq7nbRuARMAD4PX9uuLA==}
+ dependencies:
+ '@antv/event-emitter': 0.1.3
+ '@antv/g-math': 0.1.9
+ '@antv/matrix-util': 3.1.0-beta.3
+ '@antv/path-util': 2.0.15
+ '@antv/util': 2.0.17
+ '@types/d3-timer': 2.0.3
+ d3-ease: 1.0.7
+ d3-interpolate: 3.0.1
+ d3-timer: 1.0.10
+ detect-browser: 5.3.0
+ tslib: 2.6.2
+ dev: false
+
+ resolution: {integrity: sha512-IUGLEMIMAUYgaBMT8h3FTmYQYz7sjQkKWwh6Psqx+UPK86fySa+G8fMRrh1EqAL07jVB+GRnn6Ym+3FoFUgeFg==}
+ dependencies:
+ '@antv/g-base': 0.5.15
+ '@antv/g-math': 0.1.9
+ '@antv/matrix-util': 3.1.0-beta.3
+ '@antv/path-util': 2.0.15
+ '@antv/util': 2.0.17
+ gl-matrix: 3.4.3
+ tslib: 2.6.2
+ dev: false
+
+ resolution: {integrity: sha512-KHMSfPfZ5XHM1PZnG42Q2gxXfOitYveNTA7L61lR6mhZ8Y/aExsYmHqaKBsSarU0z+6WLrl9C07PQJZaw0uljQ==}
+ dependencies:
+ '@antv/util': 2.0.17
+ gl-matrix: 3.4.3
+ dev: false
+
+ resolution: {integrity: sha512-jUbWoPgr4YNsOat2Y/rGAouNQYGpw4R0cvlN0YafwOyacFFYy2zC8RslNd6KkPhhR3XHNSqJOuCYZj/YmLUwYw==}
+ dependencies:
+ '@antv/g-base': 0.5.15
+ '@antv/g-math': 0.1.9
+ '@antv/util': 2.0.17
+ detect-browser: 5.3.0
+ tslib: 2.6.2
+ dev: false
+
+ resolution: {integrity: sha512-xUMmop7f3Rs34zFYKXLqHhDR1CQTeDl/7vI7Sn3X/73BqJc3X3HIIRvm83Fg2CjVACaOzw4WeLRXNaOCp9fz9w==}
+ dependencies:
+ eventemitter3: 4.0.7
+ gl-matrix: 3.4.3
+ lodash: 4.17.21
+ probe.gl: 3.6.0
+ dev: false
+
+ resolution: {integrity: sha512-lx8Y93IW2cnJvdoDRKyMmTdYqSC1pOmF0nyG3PGGyA0NI9vBYVgO0KTF6hkyWjdTWVq7XDZyf/h8CJridLh3lg==}
+ dependencies:
+ '@antv/g-webgpu-core': 0.7.2
+ gl-matrix: 3.4.3
+ lodash: 4.17.21
+ regl: 1.7.0
+ dev: false
+
+ resolution: {integrity: sha512-kw+oYGsdvj5qeUfy5DPb/jztZBV+2fmqBd3Vv8NlKatfBmv8AirYX/CCW74AUSdWm99rEiLyxFB1VdRZ6b/wnQ==}
+ dependencies:
+ '@antv/g-webgpu-core': 0.7.2
+ '@antv/g-webgpu-engine': 0.7.2
+ gl-matrix: 3.4.3
+ gl-vec2: 1.3.0
+ lodash: 4.17.21
+ dev: false
+
+ resolution: {integrity: sha512-rgI3dArAD8uoSz2+skS4ctN4x/Of33ivTIKaEYYvClxgkLZWVz9zvocy+5AWcVPBHZsAXkZcdh9zndIoWY/33A==}
+ dependencies:
+ '@antv/algorithm': 0.1.26
+ '@antv/dom-util': 2.0.4
+ '@antv/event-emitter': 0.1.3
+ '@antv/g-base': 0.5.15
+ '@antv/g-math': 0.1.9
+ '@antv/matrix-util': 3.1.0-beta.3
+ '@antv/path-util': 2.0.15
+ '@antv/util': 2.0.17
+ ml-matrix: 6.11.0
+ tslib: 2.6.2
+ dev: false
+
+ resolution: {integrity: sha512-61FXkt9LY+6EOUtSam1iFTOW2AM59sPVcV1BuPj4dXiD0dluLE+R7d8B/94g1tKDw9tsjhfUQGC7hTXscJRJFw==}
+ peerDependencies:
+ '@antv/g6': 4.8.24
+ dependencies:
+ '@antv/g-base': 0.5.15
+ '@antv/g6': 4.8.24
+ '@antv/g6-core': 0.8.24
+ '@antv/util': 2.0.17
+ tslib: 2.6.2
+ dev: false
+
+ resolution: {integrity: sha512-nf0y1lrp8J5DotqRryXd2S/J30COW8spVcLF9gUqywGqQAHfE00Ywkqr+PZBnsfCZXsXCi9o0+CE9NrkWs4SBQ==}
+ dependencies:
+ '@ant-design/colors': 4.0.5
+ '@antv/algorithm': 0.1.26
+ '@antv/dom-util': 2.0.4
+ '@antv/event-emitter': 0.1.3
+ '@antv/g-base': 0.5.15
+ '@antv/g-canvas': 0.5.14
+ '@antv/g-math': 0.1.9
+ '@antv/g-svg': 0.5.7
+ '@antv/g6-core': 0.8.24
+ '@antv/g6-element': 0.8.24(@antv/[email protected])
+ '@antv/g6-plugin': 0.8.24(@antv/[email protected])
+ '@antv/hierarchy': 0.6.11
+ '@antv/layout': 0.3.25([email protected])
+ '@antv/matrix-util': 3.1.0-beta.3
+ '@antv/path-util': 2.0.15
+ '@antv/util': 2.0.17
+ color: 3.2.1
+ d3-force: 2.1.1
+ dagre: 0.8.5
+ insert-css: 2.0.0
+ ml-matrix: 6.11.0
+ tslib: 2.6.2
+ transitivePeerDependencies:
+ - '@antv/g6'
+ dev: false
+
+ resolution: {integrity: sha512-ZIOnwLTC7SM2bFiJZ3vYFWnkyOCWKqnU96i/fBh1qAoY5slDS3hatenZWEXUtOcqaKw1h+5A5f72MRXqBBVn0g==}
+ peerDependencies:
+ '@antv/g6': 4.8.24
+ dependencies:
+ '@antv/dom-util': 2.0.4
+ '@antv/g-base': 0.5.15
+ '@antv/g-canvas': 0.5.14
+ '@antv/g-svg': 0.5.7
+ '@antv/g6': 4.8.24
+ '@antv/g6-core': 0.8.24
+ '@antv/g6-element': 0.8.24(@antv/[email protected])
+ '@antv/matrix-util': 3.1.0-beta.3
+ '@antv/path-util': 2.0.15
+ '@antv/scale': 0.3.18
+ '@antv/util': 2.0.17
+ insert-css: 2.0.0
+ dev: false
+
+ resolution: {integrity: sha512-bgj7sZ+z45JmOngIpYpwmSIg7SboMLZBoAlX0+RoAETZB3/xvZO0MXT3lCSyAhIgm5Sb68pekKi7OStuo04NyQ==}
+ dependencies:
+ '@antv/g6-pc': 0.8.24(@antv/[email protected])
+ dev: false
+
+ resolution: {integrity: sha512-cqsLl3xpZ5mPgTq5UufcqJDlxzKZSLk9/JWXmoQYpvDC4cpzDjBZeVlaDfhT8iToB5aR15CEIu6j+XsQDMqUsA==}
+ peerDependencies:
+ lodash-es: '>=4.17.21'
+ react: '>=16.9.0'
+ react-dom: '>=16.9.0'
+ dependencies:
+ '@antv/g6': 4.8.24
+ d3-quadtree: 3.0.1
+ lodash-es: 4.17.21
+ react: 18.2.0
+ react-dom: 18.2.0([email protected])
+ dev: false
+
+ resolution: {integrity: sha512-hhJOMThec51nU4Fe5p/viLlNIL71uDEgYFzKPajWjr2715SFG1HAgiP6AVylIeqBcAZ04u3Lw7usjl/TuI5RuQ==}
+ dev: false
+
+ resolution: {integrity: sha512-RJVhEMCuu4vj+Dt25lXIiNdd7jaqm/fqWGYikiELha4S5tnzdJoTUaUvvpfWlxLx4B0RsS9XRwBs1bOKN71TKg==}
+ dependencies:
+ '@antv/util': 2.0.17
+ dev: false
+
+ resolution: {integrity: sha512-d29Aw1PXoAavMRZy7iTB9L5rMBeChFEX0BJ9ELP4TI35ySdCu07YbmPo9ju9OH/6sG2/NB3o85Ayxrre3iwX/g==}
+ dependencies:
+ '@antv/g-webgpu': 0.7.2
+ '@antv/graphlib': 1.2.0
+ '@antv/util': 3.3.5
+ d3-force: 2.1.1
+ d3-quadtree: 2.0.0
+ dagre-compound: 0.0.11([email protected])
+ ml-matrix: 6.5.0
+ transitivePeerDependencies:
+ - dagre
+ dev: false
+
+ resolution: {integrity: sha512-BAPyu6dUliHcQ7fm9hZSGKqkwcjEDVLVAstlHULLvcMZvANHeLXgHEgV7JqcAV/GIhIz8aZChIlzM1ZboiXpYQ==}
+ dependencies:
+ '@antv/util': 2.0.17
+ gl-matrix: 3.4.3
+ tslib: 2.6.2
+ dev: false
+
+ resolution: {integrity: sha512-W2R6Za3A6CmG51Y/4jZUM/tFgYSq7vTqJL1VD9dKrvwxS4sE0ZcXINtkp55CdyBwJ6Cwm8pfoRpnD4FnHahN0A==}
+ dependencies:
+ '@antv/util': 2.0.17
+ gl-matrix: 3.4.3
+ tslib: 2.6.2
+ dev: false
+
+ resolution: {integrity: sha512-R2VLZ5C8PLPtr3VciNyxtjKqJ0XlANzpFb5sE9GE61UQqSRuSVSzIakMxjEPrpqbgc+s+y8i+fmc89Snu7qbNw==}
+ dependencies:
+ '@antv/matrix-util': 3.0.4
+ '@antv/util': 2.0.17
+ tslib: 2.6.2
+ dev: false
+
+ resolution: {integrity: sha512-GHwE6Lo7S/Q5fgaLPaCsW+CH+3zl4aXpnN1skOiEY0Ue9/u+s2EySv6aDXYkAqs//i0uilMDD/0/4n8caX9U9w==}
+ dependencies:
+ '@antv/util': 2.0.17
+ fecha: 4.2.3
+ tslib: 2.6.2
+ dev: false
+
+ resolution: {integrity: sha512-o6I9hi5CIUvLGDhth0RxNSFDRwXeywmt6ExR4+RmVAzIi48ps6HUy+svxOCayvrPBN37uE6TAc2KDofRo0nK9Q==}
+ dependencies:
+ csstype: 3.1.3
+ tslib: 2.6.2
+ dev: false
+
+ resolution: {integrity: sha512-bVv1loamL/MgUEN9dNt7VKAsghO4Wgb+kzr8B9TgkM5tHgKk++xiTwi3pejIdgU8DDkzcyaRsO+VTOXJt8jLng==}
+ dependencies:
+ fast-deep-equal: 3.1.3
+ flru: 1.0.2
+ gl-matrix: 3.4.3
+ tslib: 2.6.2
+ dev: false
+
resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==}
engines: {node: '>=6.9.0'}
@@ -455,6 +724,13 @@ packages:
'@babel/plugin-transform-typescript': 7.23.6(@babel/[email protected])
dev: true
+ resolution: {integrity: sha512-Y7KbAP984rn1VGMbGqKmBLio9V7y5Je9GvU4rQPCPinCyNfUcToxIXl06d59URp/F3LwinvODxab5N/G6qggkw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ regenerator-runtime: 0.14.1
+ dev: false
+
resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==}
engines: {node: '>=6.9.0'}
@@ -890,6 +1166,25 @@ packages:
resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==}
dev: true
+ /@probe.gl/[email protected]:
+ resolution: {integrity: sha512-4tTZYUg/8BICC3Yyb9rOeoKeijKbZHRXBEKObrfPmX4sQmYB15ZOUpoVBhAyJkOYVAM8EkPci6Uw5dLCwx2BEQ==}
+ dependencies:
+ '@babel/runtime': 7.23.8
+ dev: false
+
+ /@probe.gl/[email protected]:
+ resolution: {integrity: sha512-hjpyenpEvOdowgZ1qMeCJxfRD4JkKdlXz0RC14m42Un62NtOT+GpWyKA4LssT0+xyLULCByRAtG2fzZorpIAcA==}
+ dependencies:
+ '@babel/runtime': 7.23.8
+ '@probe.gl/env': 3.6.0
+ dev: false
+
+ /@probe.gl/[email protected]:
+ resolution: {integrity: sha512-JdALQXB44OP4kUBN/UrQgzbJe4qokbVF4Y8lkIA8iVCFnjVowWIgkD/z/0QO65yELT54tTrtepw1jScjKB+rhQ==}
+ dependencies:
+ '@babel/runtime': 7.23.8
+ dev: false
+
resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==}
engines: {node: '>=14.0.0'}
@@ -1026,6 +1321,10 @@ packages:
engines: {node: '>=10.13.0'}
dev: true
+ resolution: {integrity: sha512-jhAJzaanK5LqyLQ50jJNIrB8fjL9gwWZTgYjevPvkDLMU+kTAZkYsobI59nYoeSrH1PucuyJEi247Pb90t6XUg==}
+ dev: false
+
resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
dev: true
@@ -1786,6 +2085,25 @@ packages:
engines: {node: '>=12'}
dev: true
+ resolution: {integrity: sha512-eU18XtlGA4yBvyxlQgEMn3E5HWnjJSQqcgS8unHm26nspTWSsxb4BskuyDDRqDOWrZgjqa3HA/iU174Jr7NRvQ==}
+ peerDependencies:
+ '@antv/g6': ^4.3.4
+ core-js: ^3.6.5
+ lodash: ^4.17.21
+ vue: ^3.2.31
+ dependencies:
+ '@antv/g6': 4.8.24
+ core-js: 3.35.0
+ lodash: 4.17.21
+ vue: 3.4.5([email protected])
+ transitivePeerDependencies:
+ - lodash-es
+ - react
+ - react-dom
+ dev: false
+
resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
engines: {node: '>= 8'}
@@ -2081,7 +2399,6 @@ packages:
resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
dependencies:
color-name: 1.1.3
- dev: true
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
@@ -2092,11 +2409,23 @@ packages:
resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
- dev: true
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
- dev: true
+
+ resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}
+ dependencies:
+ color-name: 1.1.4
+ simple-swizzle: 0.2.2
+ dev: false
+
+ resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==}
+ dependencies:
+ color-convert: 1.9.3
+ color-string: 1.9.1
+ dev: false
resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==}
@@ -2257,6 +2586,67 @@ packages:
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
+ resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==}
+ engines: {node: '>=12'}
+ dev: false
+
+ resolution: {integrity: sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==}
+ dev: false
+
+ resolution: {integrity: sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ==}
+ dev: false
+
+ resolution: {integrity: sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew==}
+ dependencies:
+ d3-dispatch: 2.0.0
+ d3-quadtree: 2.0.0
+ d3-timer: 2.0.0
+ dev: false
+
+ resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==}
+ engines: {node: '>=12'}
+ dependencies:
+ d3-color: 3.1.0
+ dev: false
+
+ resolution: {integrity: sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw==}
+ dev: false
+
+ resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==}
+ engines: {node: '>=12'}
+ dev: false
+
+ resolution: {integrity: sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==}
+ dev: false
+
+ resolution: {integrity: sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==}
+ dev: false
+
+ resolution: {integrity: sha512-UrSgRP9LtOZCYb9e5doolZXpc7xayyszgyOs7uakTK4n4KsLegLVTRRtq01GpQd/iZjYw5fWMapx9ed+c80MAQ==}
+ engines: {node: '>=6.0.0'}
+ peerDependencies:
+ dagre: ^0.8.5
+ dependencies:
+ dagre: 0.8.5
+ dev: false
+
+ resolution: {integrity: sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==}
+ dependencies:
+ graphlib: 2.1.8
+ lodash: 4.17.21
+ dev: false
+
resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==}
engines: {node: '>=18'}
@@ -2350,6 +2740,10 @@ packages:
resolution: {integrity: sha512-65AlobnZMiCET00KaFFjUefxDX0khFA/E4myqZ7a6Sq1yZtR8+FVIvilVX66vF2uobSumxooYZChiRPCKNqhmg==}
dev: true
+ resolution: {integrity: sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==}
+ dev: false
+
resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -2726,6 +3120,10 @@ packages:
engines: {node: '>= 0.6'}
dev: true
+ resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==}
+ dev: false
+
resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==}
dev: true
@@ -2808,7 +3206,6 @@ packages:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
- dev: true
resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==}
@@ -2839,6 +3236,10 @@ packages:
reusify: 1.0.4
dev: true
+ resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==}
+ dev: false
+
resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
engines: {node: ^10.12.0 || >=12.0.0}
@@ -2884,6 +3285,11 @@ packages:
resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==}
dev: true
+ resolution: {integrity: sha512-kWyh8ADvHBFz6ua5xYOPnUroZTT/bwWfrCeL0Wj1dzG4/YOmOcfJ99W8dOVyyynJN35rZ9aCOtHChqQovV7yog==}
+ engines: {node: '>=6'}
+ dev: false
+
resolution: {integrity: sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==}
engines: {node: '>=4.0'}
@@ -2976,6 +3382,14 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
+ resolution: {integrity: sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==}
+ dev: false
+
+ resolution: {integrity: sha512-YiqaAuNsheWmUV0Sa8k94kBB0D6RWjwZztyO+trEYS8KzJ6OQB/4686gdrf59wld4hHFIvaxynO3nRxpk1Ij/A==}
+ dev: false
+
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
engines: {node: '>= 6'}
@@ -3045,6 +3459,12 @@ packages:
resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
dev: true
+ resolution: {integrity: sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==}
+ dependencies:
+ lodash: 4.17.21
+ dev: false
+
resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==}
engines: {node: '>=10'}
@@ -3226,6 +3646,10 @@ packages:
resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
dev: true
+ resolution: {integrity: sha512-xGq5ISgcUP5cvGkS2MMFLtPDBtrtQPSFfC6gA6U8wHKqfjTIMZLZNxOItQnoSjdOzlXOLU/yD32RKC4SvjNbtA==}
+ dev: false
+
resolution: {integrity: sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==}
engines: {node: '>= 0.10'}
@@ -3233,6 +3657,14 @@ packages:
hasown: 2.0.0
dev: true
+ resolution: {integrity: sha512-UtilS7hLRu++wb/WBAw9bNuP1Eg04Ivn1vERJck8zJthEvXCBEBpGR/33u/xLKWEQf95803oalHrVDptcAvFdQ==}
+ dev: false
+
+ resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
+ dev: false
+
resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
engines: {node: '>=8'}
@@ -3412,7 +3844,6 @@ packages:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
- dev: true
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
@@ -3641,6 +4072,13 @@ packages:
wrap-ansi: 9.0.0
dev: true
+ resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
+ hasBin: true
+ dependencies:
+ js-tokens: 4.0.0
+ dev: false
+
resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==}
dependencies:
@@ -3805,6 +4243,39 @@ packages:
is-extendable: 1.0.1
dev: true
+ resolution: {integrity: sha512-BlEeg80jI0tW6WaPyGxf5Sa4sqvcyY6lbSn5Vcv44lp1I2GR6AWojfUvLnGTNsIXrZ8uqWmo8VcG1WpkI2ONMQ==}
+ dependencies:
+ is-any-array: 2.0.1
+ dev: false
+
+ resolution: {integrity: sha512-VcZ5f3VZ1iihtrGvgfh/q0XlMobG6GQ8FsNyQXD3T+IlstDv85g8kfV0xUG1QPRO/t21aukaJowDzMTc7j5V6Q==}
+ dependencies:
+ is-any-array: 2.0.1
+ dev: false
+
+ resolution: {integrity: sha512-48NGChTouvEo9KBctDfHC3udWnQKNKEWN0ziELvY3KG25GR5cA8K8wNVzracsqSW1QEkAXjTNx+ycgAv06/1mQ==}
+ dependencies:
+ is-any-array: 2.0.1
+ ml-array-max: 1.2.4
+ ml-array-min: 1.2.3
+ dev: false
+
+ resolution: {integrity: sha512-7jr9NmFRkaUxbKslfRu3aZOjJd2LkSitCGv+QH9PF0eJoEG7jIpjXra1Vw8/kgao8+kHCSsJONG6vfWmXQ+/Eg==}
+ dependencies:
+ is-any-array: 2.0.1
+ ml-array-rescale: 1.3.7
+ dev: false
+
+ resolution: {integrity: sha512-sms732Dge+rs5dU4mnjE0oqLWm1WujvR2fr38LgUHRG2cjXjWlO3WJupLYaSz3++2iYr0UrGDK72OAivr3J8dg==}
+ dependencies:
+ ml-array-rescale: 1.3.7
+ dev: false
+
resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==}
dependencies:
@@ -4220,6 +4691,15 @@ packages:
react-is: 18.2.0
dev: true
+ resolution: {integrity: sha512-19JydJWI7+DtR4feV+pu4Mn1I5TAc0xojuxVgZdXIyfmTLfUaFnk4OloWK1bKbPtkgGKLr2lnbnCXmpZEcEp9g==}
+ dependencies:
+ '@babel/runtime': 7.23.8
+ '@probe.gl/env': 3.6.0
+ '@probe.gl/log': 3.6.0
+ '@probe.gl/stats': 3.6.0
+ dev: false
+
resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==}
dev: true
@@ -4253,10 +4733,27 @@ packages:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
dev: true
+ resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==}
+ peerDependencies:
+ react: ^18.2.0
+ dependencies:
+ loose-envify: 1.4.0
+ react: 18.2.0
+ scheduler: 0.23.0
+ dev: false
+
resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==}
dev: true
+ resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ loose-envify: 1.4.0
+ dev: false
+
resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
engines: {node: '>= 6'}
@@ -4273,6 +4770,10 @@ packages:
picomatch: 2.3.1
dev: true
+ resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
+ dev: false
+
resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==}
engines: {node: '>=0.10.0'}
@@ -4281,6 +4782,10 @@ packages:
safe-regex: 1.1.0
dev: true
+ resolution: {integrity: sha512-bEAtp/qrtKucxXSJkD4ebopFZYP0q1+3Vb2WECWv/T8yQEgKxDxJ7ztO285tAMaYZVR6mM1GgI6CCn8FROtL1w==}
+ dev: false
+
resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==}
engines: {node: '>=0.10.0'}
@@ -4400,6 +4905,12 @@ packages:
xmlchars: 2.2.0
dev: true
+ resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==}
+ dependencies:
+ loose-envify: 1.4.0
+ dev: false
+
resolution: {integrity: sha512-AQdy8s4WhNvUZ6P8F6PB21tSPIYKniic+Ogx0AacBMjKP1GUHN2E9URxQHtCusiwxudnCKkdy4GrHXPPJSkCCw==}
engines: {node: ^14.13.1 || >=16.0.0}
@@ -4453,6 +4964,12 @@ packages:
engines: {node: '>=14'}
dev: true
+ resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==}
+ dependencies:
+ is-arrayish: 0.3.2
+ dev: false
+
resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==}
engines: {node: '>= 10'}
@@ -4756,6 +5273,10 @@ packages:
resolution: {integrity: sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==}
dev: true
+ resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==}
+ dev: false
+
resolution: {integrity: sha512-zBTCK0cCgRROxvs9c0CGK838sPkeokNGdQVUUwHAbynHFlmyJYj825f/oRs528HaIJ97lo0pLIlDUzwN+IorWg==}
engines: {node: '>=14.0.0'}
@@ -4844,7 +5365,6 @@ packages:
resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
- dev: true
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
diff --git a/src/api/sys/index.ts b/src/api/sys/index.ts
new file mode 100644
index 0000000..ddbbefd
--- /dev/null
+++ b/src/api/sys/index.ts
@@ -0,0 +1,42 @@
+import { request } from "@/utils/service"
+import type * as Sys from "./type/sysinfo"
+
+// 获取系统已运行天数
+export function getstartday() {
+ return request<Sys.SysStartDayResponseData>({
+ url: "sys/startday",
+ method: "get"
+ })
+}
+
+// 获取当前已收集IPv6 DNS服务
+export function getv6dnscount() {
+ return request<Sys.SysV6ResponseData>({
+ url: "sys/v6dns",
+ method: "get"
+ })
+}
+
+// 获取当前已识别的双栈服务数量
+export function getdualcount() {
+ return request<Sys.SysDualResponseData>({
+ url: "sys/dual",
+ method: "get"
+ })
+}
+
+// 获取系统收集的v6dns随时间的变化趋势
+export function getdatecount() {
+ const datelist: string[] = []
+ const countlist: number[] = []
+ return request<Sys.SysDataCountResponseData>({
+ url: "sys/dcount",
+ method: "get"
+ }).then((res) => {
+ for (const d of res.data.list) {
+ datelist.push(d.date)
+ countlist.push(d.count)
+ }
+ return { date: datelist, count: countlist }
+ })
+}
diff --git a/src/api/sys/type/sysinfo.ts b/src/api/sys/type/sysinfo.ts
new file mode 100644
index 0000000..19b203f
--- /dev/null
+++ b/src/api/sys/type/sysinfo.ts
@@ -0,0 +1,15 @@
+export interface SysCountData {
+ date: string
+ count: number
+}
+
+// 运行时间响应
+export type SysStartDayResponseData = ApiResponseData<{ count: number }>
+// IPv6服务总数响应
+export type SysV6ResponseData = ApiResponseData<{ count: number }>
+// 双栈服务总数响应
+export type SysDualResponseData = ApiResponseData<{ count: number }>
+// 从开始运行到目前收集到的服务数量变化趋势
+export type SysDataCountResponseData = ApiResponseData<{
+ list: SysCountData[]
+}>
diff --git a/src/config/white-list.ts b/src/config/white-list.ts
index df47b23..53d3517 100644
--- a/src/config/white-list.ts
+++ b/src/config/white-list.ts
@@ -1,7 +1,9 @@
import { type RouteLocationNormalized } from "vue-router"
/** 免登录白名单(匹配路由 path) */
-const whiteListByPath: string[] = ["/login"]
+// 和loginapi搭配
+// const whiteListByPath: string[] = ["/login"]
+const whiteListByPath: string[] = ["/login", "/dashboard"]
/** 免登录白名单(匹配路由 name) */
const whiteListByName: string[] = []
@@ -10,6 +12,9 @@ const whiteListByName: string[] = []
const isWhiteList = (to: RouteLocationNormalized) => {
// path 和 name 任意一个匹配上即可
return whiteListByPath.indexOf(to.path) !== -1 || whiteListByName.indexOf(to.name as any) !== -1
+ // console.log("whitelist")
+ // console.log(whiteListByPath.indexOf(to.path) !== -1 || whiteListByName.indexOf(to.name as any) !== -1)
+ // return true
}
export default isWhiteList
diff --git a/src/views/dashboard/components/Admin.vue b/src/views/dashboard/components/Admin.vue
index 28ba504..d521cd8 100644
--- a/src/views/dashboard/components/Admin.vue
+++ b/src/views/dashboard/components/Admin.vue
@@ -1,17 +1,46 @@
<script lang="ts" setup>
-import { ref } from "vue"
+import { ref, onMounted, reactive, toRefs } from "vue"
import { use } from "echarts/core"
import { LineChart } from "echarts/charts"
import { TitleComponent, TooltipComponent, LegendComponent, GridComponent } from "echarts/components"
import { SVGRenderer } from "echarts/renderers"
import VChart from "vue-echarts"
+import * as sys from "@/api/sys"
+// 系统运行时间数据
+const workday = ref(0)
+sys.getstartday().then((r) => {
+ workday.value = r.data.count
+})
+
+// v6dns
+const v6dnscount = ref(0)
+sys.getv6dnscount().then((r) => {
+ v6dnscount.value = r.data.count
+})
+
+// dual
+const dualcount = ref(0)
+sys.getdualcount().then((r) => {
+ dualcount.value = r.data.count
+})
+
+// 折线图数据获取
use([TitleComponent, TooltipComponent, LegendComponent, GridComponent, LineChart, SVGRenderer])
+// 初始值
+const lchartdate = ref(["1"])
+const lchartcount = ref([1])
+// 赋值
+sys.getdatecount().then((res) => {
+ lchartdate.value = res.date
+ lchartcount.value = res.count
+})
+
const option = ref({
xAxis: {
type: "category",
- data: ["2023年1月1日", "2023年1月2日", "2023年1月5日"]
+ data: lchartdate
},
yAxis: {
type: "value"
@@ -21,11 +50,27 @@ const option = ref({
},
series: [
{
- data: [120, 200, 15000],
+ data: lchartcount,
type: "line"
}
]
})
+
+// 当前时间
+const state = reactive({
+ nowTime: new Date().toLocaleString()
+})
+
+function getnowTime(nowTime: any): any {
+ setInterval(() => {
+ const date = new Date()
+ nowTime.value = date.toLocaleString()
+ }, 1000)
+}
+onMounted(() => {
+ getnowTime(nowTime)
+})
+const { nowTime } = toRefs(state)
</script>
<template>
@@ -37,7 +82,7 @@ const option = ref({
<Monitor style="width: 4em; height: 4em; margin-right: 8px" color="#FFFFFF" />
<div class="card-title">系统已稳定运行</div>
<div class="icenter count-num">
- <count-to :start-val="1000" suffix="天" />
+ <count-to :start-val="workday == 0 ? 0 : workday - 20" :end-val="workday == 0 ? 0 : workday" suffix="天" />
</div>
</el-card>
</el-col>
@@ -46,16 +91,24 @@ const option = ref({
<ZoomIn style="width: 4em; height: 4em; margin-right: 8px" color="#FFFFFF" />
<div class="card-title">已发现IPv6 DNS服务</div>
<div class="icenter count-num">
- <count-to :start-val="1000" suffix="个" />
+ <count-to
+ :start-val="v6dnscount == 0 ? 0 : v6dnscount - 1000"
+ :end-val="v6dnscount == 0 ? 0 : v6dnscount"
+ suffix="个"
+ />
</div>
</el-card>
</el-col>
<el-col :span="8" class="icenter">
<el-card class="box-card" shadow="hover" body-style="background: linear-gradient(135deg, #292a3a, #536976);">
<Coin style="width: 4em; height: 4em; margin-right: 8px" color="#FFFFFF" />
- <div class="card-title">已得到关联</div>
+ <div class="card-title">已识别双栈DNS服务</div>
<div class="icenter count-num">
- <count-to :start-val="1000" suffix="条" />
+ <count-to
+ :start-val="dualcount == 0 ? 0 : dualcount - 1000"
+ :end-val="dualcount == 0 ? 0 : dualcount"
+ suffix="个"
+ />
</div>
</el-card>
</el-col>
@@ -67,12 +120,12 @@ const option = ref({
<template #header>
<div class="fig-title">
<Coin style="width: 2em; height: 2em; margin-right: 8px" />
- <div style="font-size: 24px; font-weight: 900">数据增长趋势</div>
+ <div style="font-size: 24px; font-weight: 900">IPv6 DNS服务数量增长趋势</div>
</div>
</template>
<!-- 折线图展示数据增长过程,间隔为天 -->
<v-chart class="chart" :option="option" autoresize />
- <template #footer>Footer content</template>
+ <template #footer>数据截止到{{ nowTime }}</template>
</el-card>
</el-col>
</el-row>
diff --git a/src/views/login/index.vue b/src/views/login/index.vue
index bb99c4e..e1143b8 100644
--- a/src/views/login/index.vue
+++ b/src/views/login/index.vue
@@ -3,7 +3,7 @@ import { reactive, ref } from "vue"
import { useRouter } from "vue-router"
import { useUserStore } from "@/store/modules/user"
import { type FormInstance, type FormRules } from "element-plus"
-import { User, Lock } from "@element-plus/icons-vue"
+import { User, Lock, Key } from "@element-plus/icons-vue"
import { getLoginCodeApi } from "@/api/login"
import { type LoginRequestData } from "@/api/login/types/login"
import ThemeSwitch from "@/components/ThemeSwitch/index.vue"
@@ -40,6 +40,7 @@ const handleLogin = () => {
useUserStore()
.login(loginFormData)
.then(() => {
+ console.log("ok")
router.push({ path: "/" })
})
.catch(() => {
@@ -66,7 +67,7 @@ const createCode = () => {
}
/** 初始化验证码 */
-// createCode()
+createCode()
</script>
<template>
@@ -100,7 +101,7 @@ const createCode = () => {
/>
</el-form-item>
<!-- 废弃验证码功能 -->
- <!-- <el-form-item prop="code">
+ <el-form-item prop="code">
<el-input
v-model.trim="loginFormData.code"
placeholder="验证码"
@@ -125,7 +126,7 @@ const createCode = () => {
</el-image>
</template>
</el-input>
- </el-form-item> -->
+ </el-form-item>
<el-button :loading="loading" type="primary" size="large" @click.prevent="handleLogin">登 录</el-button>
</el-form>
</div>
diff --git a/vite.config.ts b/vite.config.ts
index e36de31..a6502f4 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -34,8 +34,8 @@ export default (configEnv: ConfigEnv): UserConfigExport => {
strictPort: false,
/** 接口代理 */
proxy: {
- "/api/v1": {
- target: "https://www.fastmock.site/mock/761e2dda2b8890ab86c928a74e8f6538",
+ "/api/": {
+ target: "https://www.fastmock.site/mock/81555d9faad5db0bc8fc646b6c25c4ad",
ws: true,
/** 是否允许跨域 */
changeOrigin: true