diff options
| author | hdk1999 <[email protected]> | 2024-01-13 18:35:42 +0800 |
|---|---|---|
| committer | hdk1999 <[email protected]> | 2024-01-13 18:35:42 +0800 |
| commit | 3be76c1e6fdd26a6096c086fddfb9daeea5356c0 (patch) | |
| tree | fff2be81d5e8c6df3dcde85981f7511b762fe43f | |
| parent | 76d7971035d20cff2cfdc1366859f0c052416fbb (diff) | |
初步完成首页接口开发
| -rw-r--r-- | .env.development | 3 | ||||
| -rw-r--r-- | package.json | 2 | ||||
| -rw-r--r-- | pnpm-lock.yaml | 532 | ||||
| -rw-r--r-- | src/api/sys/index.ts | 42 | ||||
| -rw-r--r-- | src/api/sys/type/sysinfo.ts | 15 | ||||
| -rw-r--r-- | src/config/white-list.ts | 7 | ||||
| -rw-r--r-- | src/views/dashboard/components/Admin.vue | 71 | ||||
| -rw-r--r-- | src/views/login/index.vue | 9 | ||||
| -rw-r--r-- | vite.config.ts | 4 |
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 + version: 2.6.10(@antv/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected])([email protected]) 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 + /@antfu/[email protected]: resolution: {integrity: sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==} dependencies: @@ -181,6 +193,263 @@ packages: resolution: {integrity: sha512-gFPqTG7otEJ8uP6wrhDv6mqwGWYZKNvAcCq6u9hOj0c+IKCEsY4L1oC9trPq2SaWIzAfHvqfBDxF591JkMf+kg==} dev: true + /@antv/[email protected]: + resolution: {integrity: sha512-DVhcFSQ8YQnMNW34Mk8BSsfc61iC1sAnmcfYoXTAshYHuU50p/6b7x3QYaGctDNKWGvi1ub7mPcSY0bK+aN0qg==} + dependencies: + '@antv/util': 2.0.17 + tslib: 2.6.2 + dev: false + + /@antv/[email protected]: + resolution: {integrity: sha512-2shXUl504fKwt82T3GkuT4Uoc6p9qjCKnJ8gXGLSW4T1W37dqf9AV28aCfoVPHp2BUXpSsB+PAJX2rG/jLHsLQ==} + dependencies: + tslib: 2.6.2 + dev: false + + /@antv/[email protected]: + resolution: {integrity: sha512-4ddpsiHN9Pd4UIlWuKVK1C4IiZIdbwQvy9i7DUSI3xNJ89FPUFt8lxDYj8GzzfdllV0NkJTRxnG+FvLk0llidg==} + dev: false + + /@antv/[email protected]: + 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 + + /@antv/[email protected]: + 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 + + /@antv/[email protected]: + resolution: {integrity: sha512-KHMSfPfZ5XHM1PZnG42Q2gxXfOitYveNTA7L61lR6mhZ8Y/aExsYmHqaKBsSarU0z+6WLrl9C07PQJZaw0uljQ==} + dependencies: + '@antv/util': 2.0.17 + gl-matrix: 3.4.3 + dev: false + + /@antv/[email protected]: + 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 + + /@antv/[email protected]: + 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 + + /@antv/[email protected]: + 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 + + /@antv/[email protected]: + 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 + + /@antv/[email protected]: + 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 + + /@antv/[email protected](@antv/[email protected]): + 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 + + /@antv/[email protected](@antv/[email protected]): + 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 + + /@antv/[email protected](@antv/[email protected]): + 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 + + /@antv/[email protected]: + 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 + + /@antv/[email protected]: + resolution: {integrity: sha512-hhJOMThec51nU4Fe5p/viLlNIL71uDEgYFzKPajWjr2715SFG1HAgiP6AVylIeqBcAZ04u3Lw7usjl/TuI5RuQ==} + dev: false + + /@antv/[email protected]: + resolution: {integrity: sha512-RJVhEMCuu4vj+Dt25lXIiNdd7jaqm/fqWGYikiELha4S5tnzdJoTUaUvvpfWlxLx4B0RsS9XRwBs1bOKN71TKg==} + dependencies: + '@antv/util': 2.0.17 + dev: false + + /@antv/[email protected]([email protected]): + 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 + + /@antv/[email protected]: + resolution: {integrity: sha512-BAPyu6dUliHcQ7fm9hZSGKqkwcjEDVLVAstlHULLvcMZvANHeLXgHEgV7JqcAV/GIhIz8aZChIlzM1ZboiXpYQ==} + dependencies: + '@antv/util': 2.0.17 + gl-matrix: 3.4.3 + tslib: 2.6.2 + dev: false + + /@antv/[email protected]: + resolution: {integrity: sha512-W2R6Za3A6CmG51Y/4jZUM/tFgYSq7vTqJL1VD9dKrvwxS4sE0ZcXINtkp55CdyBwJ6Cwm8pfoRpnD4FnHahN0A==} + dependencies: + '@antv/util': 2.0.17 + gl-matrix: 3.4.3 + tslib: 2.6.2 + dev: false + + /@antv/[email protected]: + 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 + + /@antv/[email protected]: + 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 + + /@antv/[email protected]: + resolution: {integrity: sha512-o6I9hi5CIUvLGDhth0RxNSFDRwXeywmt6ExR4+RmVAzIi48ps6HUy+svxOCayvrPBN37uE6TAc2KDofRo0nK9Q==} + dependencies: + csstype: 3.1.3 + tslib: 2.6.2 + dev: false + + /@antv/[email protected]: + 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 + /@babel/[email protected]: 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 + /@babel/[email protected]: + resolution: {integrity: sha512-Y7KbAP984rn1VGMbGqKmBLio9V7y5Je9GvU4rQPCPinCyNfUcToxIXl06d59URp/F3LwinvODxab5N/G6qggkw==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.1 + dev: false + /@babel/[email protected]: 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 + /@rollup/[email protected]: resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} engines: {node: '>=14.0.0'} @@ -1026,6 +1321,10 @@ packages: engines: {node: '>=10.13.0'} dev: true + /@types/[email protected]: + resolution: {integrity: sha512-jhAJzaanK5LqyLQ50jJNIrB8fjL9gwWZTgYjevPvkDLMU+kTAZkYsobI59nYoeSrH1PucuyJEi247Pb90t6XUg==} + dev: false + /@types/[email protected]: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} dev: true @@ -1786,6 +2085,25 @@ packages: engines: {node: '>=12'} dev: true + /[email protected](@antv/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected])([email protected]): + 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 |
