Compare commits
74 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
1350b9d400 | |
|
|
7a4327bad1 | |
|
|
e5b1107bf6 | |
|
|
7cad818a1a | |
|
|
406d47e7c5 | |
|
|
d6363cd41c | |
|
|
bcecbd5052 | |
|
|
dc2f38da43 | |
|
|
5a6ff0a614 | |
|
|
74c9b741d2 | |
|
|
bb4b2d747a | |
|
|
76cb2b7890 | |
|
|
0f5b8e0422 | |
|
|
47de66b6ee | |
|
|
dd5246edaf | |
|
|
94f30e910a | |
|
|
7b0e03c086 | |
|
|
54b7f2c4f6 | |
|
|
9c4dc55bd2 | |
|
|
3b259b3a96 | |
|
|
20929efa5a | |
|
|
4b74d4da83 | |
|
|
b8aaa067d0 | |
|
|
f924e47ebe | |
|
|
27b1f3d316 | |
|
|
3908419a9d | |
|
|
e7b1714d51 | |
|
|
3d5ca333fa | |
|
|
1eb34fdad7 | |
|
|
afb3453c32 | |
|
|
b81ab54947 | |
|
|
32ddc75a35 | |
|
|
5a58833768 | |
|
|
d0fa7eb853 | |
|
|
9e575785df | |
|
|
a9c4c25aa2 | |
|
|
809e0fa8f4 | |
|
|
c3eccb95d2 | |
|
|
fbab7f8b21 | |
|
|
a855449dfe | |
|
|
fe457dced5 | |
|
|
dba9155b18 | |
|
|
7590502878 | |
|
|
c87bab1d3d | |
|
|
15c679001f | |
|
|
2dbe6aa5b9 | |
|
|
d6d8583ed0 | |
|
|
548d6fae3f | |
|
|
aedf2b903b | |
|
|
69401cb7f8 | |
|
|
c99d218b93 | |
|
|
cd3688d055 | |
|
|
2e1ba2b857 | |
|
|
a5bfac59b0 | |
|
|
c0f5728373 | |
|
|
ea2d42eae2 | |
|
|
af5849c9eb | |
|
|
15972ad88d | |
|
|
5976b851a2 | |
|
|
5a804b3840 | |
|
|
304d9f2bfc | |
|
|
764f9583df | |
|
|
6fb99e7536 | |
|
|
958c3c9f05 | |
|
|
d1ed7b3927 | |
|
|
b63f67218a | |
|
|
9d55ad2dfb | |
|
|
aa3ddeb0ed | |
|
|
b864ce1b0d | |
|
|
b6d0f52585 | |
|
|
d9829552a0 | |
|
|
376a6950a2 | |
|
|
08777777aa | |
|
|
f4964c4c0e |
|
|
@ -40,6 +40,7 @@
|
||||||
"vue-cropper": "^1.0.3",
|
"vue-cropper": "^1.0.3",
|
||||||
"vue-cropperjs": "^5.0.0",
|
"vue-cropperjs": "^5.0.0",
|
||||||
"vue-fuse": "^4.1.1",
|
"vue-fuse": "^4.1.1",
|
||||||
|
"vue-i18n": "^9.2.2",
|
||||||
"vue-mugen-scroll": "^0.2.6",
|
"vue-mugen-scroll": "^0.2.6",
|
||||||
"vue-qr": "^4.0.6",
|
"vue-qr": "^4.0.6",
|
||||||
"vue-router": "^4.1.6",
|
"vue-router": "^4.1.6",
|
||||||
|
|
@ -646,6 +647,71 @@
|
||||||
"integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
|
"integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"node_modules/@intlify/core-base": {
|
||||||
|
"version": "9.2.2",
|
||||||
|
"resolved": "https://r.cnpmjs.org/@intlify/core-base/-/core-base-9.2.2.tgz",
|
||||||
|
"integrity": "sha512-JjUpQtNfn+joMbrXvpR4hTF8iJQ2sEFzzK3KIESOx+f+uwIjgw20igOyaIdhfsVVBCds8ZM64MoeNSx+PHQMkA==",
|
||||||
|
"dependencies": {
|
||||||
|
"@intlify/devtools-if": "9.2.2",
|
||||||
|
"@intlify/message-compiler": "9.2.2",
|
||||||
|
"@intlify/shared": "9.2.2",
|
||||||
|
"@intlify/vue-devtools": "9.2.2"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 14"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@intlify/devtools-if": {
|
||||||
|
"version": "9.2.2",
|
||||||
|
"resolved": "https://r.cnpmjs.org/@intlify/devtools-if/-/devtools-if-9.2.2.tgz",
|
||||||
|
"integrity": "sha512-4ttr/FNO29w+kBbU7HZ/U0Lzuh2cRDhP8UlWOtV9ERcjHzuyXVZmjyleESK6eVP60tGC9QtQW9yZE+JeRhDHkg==",
|
||||||
|
"dependencies": {
|
||||||
|
"@intlify/shared": "9.2.2"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 14"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@intlify/message-compiler": {
|
||||||
|
"version": "9.2.2",
|
||||||
|
"resolved": "https://r.cnpmjs.org/@intlify/message-compiler/-/message-compiler-9.2.2.tgz",
|
||||||
|
"integrity": "sha512-IUrQW7byAKN2fMBe8z6sK6riG1pue95e5jfokn8hA5Q3Bqy4MBJ5lJAofUsawQJYHeoPJ7svMDyBaVJ4d0GTtA==",
|
||||||
|
"dependencies": {
|
||||||
|
"@intlify/shared": "9.2.2",
|
||||||
|
"source-map": "0.6.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 14"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@intlify/message-compiler/node_modules/source-map": {
|
||||||
|
"version": "0.6.1",
|
||||||
|
"resolved": "https://r2.cnpmjs.org/source-map/-/source-map-0.6.1.tgz",
|
||||||
|
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.10.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@intlify/shared": {
|
||||||
|
"version": "9.2.2",
|
||||||
|
"resolved": "https://r.cnpmjs.org/@intlify/shared/-/shared-9.2.2.tgz",
|
||||||
|
"integrity": "sha512-wRwTpsslgZS5HNyM7uDQYZtxnbI12aGiBZURX3BTR9RFIKKRWpllTsgzHWvj3HKm3Y2Sh5LPC1r0PDCKEhVn9Q==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 14"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@intlify/vue-devtools": {
|
||||||
|
"version": "9.2.2",
|
||||||
|
"resolved": "https://r.cnpmjs.org/@intlify/vue-devtools/-/vue-devtools-9.2.2.tgz",
|
||||||
|
"integrity": "sha512-+dUyqyCHWHb/UcvY1MlIpO87munedm3Gn6E9WWYdWrMuYLcoIoOEVDWSS8xSwtlPU+kA+MEQTP6Q1iI/ocusJg==",
|
||||||
|
"dependencies": {
|
||||||
|
"@intlify/core-base": "9.2.2",
|
||||||
|
"@intlify/shared": "9.2.2"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 14"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@jridgewell/resolve-uri": {
|
"node_modules/@jridgewell/resolve-uri": {
|
||||||
"version": "3.1.0",
|
"version": "3.1.0",
|
||||||
"resolved": "https://r.cnpmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
|
"resolved": "https://r.cnpmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
|
||||||
|
|
@ -3125,9 +3191,9 @@
|
||||||
"integrity": "sha512-bMX/nPADfY8Mgs70kG+SGJ4vo7GCOsQaFVhUHG738gzRG6OrKCp2ZbV63LE5jsgEh8tDqxvXvLeslel5HF6lrA=="
|
"integrity": "sha512-bMX/nPADfY8Mgs70kG+SGJ4vo7GCOsQaFVhUHG738gzRG6OrKCp2ZbV63LE5jsgEh8tDqxvXvLeslel5HF6lrA=="
|
||||||
},
|
},
|
||||||
"node_modules/element-plus": {
|
"node_modules/element-plus": {
|
||||||
"version": "2.2.30",
|
"version": "2.2.28",
|
||||||
"resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.2.30.tgz",
|
"resolved": "https://r.cnpmjs.org/element-plus/-/element-plus-2.2.28.tgz",
|
||||||
"integrity": "sha512-HYSnmf2VMGa0gmw03evxevodPy3WimbAd4sfenOAhNs7Wl8IdT+YJjQyGAQjgEjRvhmujN4O/CZqhuEffRyOZg==",
|
"integrity": "sha512-BsxF7iEaBydmRfw1Tt++EO9jRBjbtJr7ZRIrnEwz4J3Cwa1IzHCNCcx3ZwcYTlJq9CYFxv94JnbNr1EbkTou3A==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@ctrl/tinycolor": "^3.4.1",
|
"@ctrl/tinycolor": "^3.4.1",
|
||||||
"@element-plus/icons-vue": "^2.0.6",
|
"@element-plus/icons-vue": "^2.0.6",
|
||||||
|
|
@ -9136,6 +9202,23 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/vue-i18n": {
|
||||||
|
"version": "9.2.2",
|
||||||
|
"resolved": "https://r.cnpmjs.org/vue-i18n/-/vue-i18n-9.2.2.tgz",
|
||||||
|
"integrity": "sha512-yswpwtj89rTBhegUAv9Mu37LNznyu3NpyLQmozF3i1hYOhwpG8RjcjIFIIfnu+2MDZJGSZPXaKWvnQA71Yv9TQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"@intlify/core-base": "9.2.2",
|
||||||
|
"@intlify/shared": "9.2.2",
|
||||||
|
"@intlify/vue-devtools": "9.2.2",
|
||||||
|
"@vue/devtools-api": "^6.2.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 14"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"vue": "^3.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/vue-mugen-scroll": {
|
"node_modules/vue-mugen-scroll": {
|
||||||
"version": "0.2.6",
|
"version": "0.2.6",
|
||||||
"resolved": "https://registry.npmmirror.com/vue-mugen-scroll/-/vue-mugen-scroll-0.2.6.tgz",
|
"resolved": "https://registry.npmmirror.com/vue-mugen-scroll/-/vue-mugen-scroll-0.2.6.tgz",
|
||||||
|
|
@ -9961,6 +10044,55 @@
|
||||||
"integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
|
"integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"@intlify/core-base": {
|
||||||
|
"version": "9.2.2",
|
||||||
|
"resolved": "https://r.cnpmjs.org/@intlify/core-base/-/core-base-9.2.2.tgz",
|
||||||
|
"integrity": "sha512-JjUpQtNfn+joMbrXvpR4hTF8iJQ2sEFzzK3KIESOx+f+uwIjgw20igOyaIdhfsVVBCds8ZM64MoeNSx+PHQMkA==",
|
||||||
|
"requires": {
|
||||||
|
"@intlify/devtools-if": "9.2.2",
|
||||||
|
"@intlify/message-compiler": "9.2.2",
|
||||||
|
"@intlify/shared": "9.2.2",
|
||||||
|
"@intlify/vue-devtools": "9.2.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"@intlify/devtools-if": {
|
||||||
|
"version": "9.2.2",
|
||||||
|
"resolved": "https://r.cnpmjs.org/@intlify/devtools-if/-/devtools-if-9.2.2.tgz",
|
||||||
|
"integrity": "sha512-4ttr/FNO29w+kBbU7HZ/U0Lzuh2cRDhP8UlWOtV9ERcjHzuyXVZmjyleESK6eVP60tGC9QtQW9yZE+JeRhDHkg==",
|
||||||
|
"requires": {
|
||||||
|
"@intlify/shared": "9.2.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"@intlify/message-compiler": {
|
||||||
|
"version": "9.2.2",
|
||||||
|
"resolved": "https://r.cnpmjs.org/@intlify/message-compiler/-/message-compiler-9.2.2.tgz",
|
||||||
|
"integrity": "sha512-IUrQW7byAKN2fMBe8z6sK6riG1pue95e5jfokn8hA5Q3Bqy4MBJ5lJAofUsawQJYHeoPJ7svMDyBaVJ4d0GTtA==",
|
||||||
|
"requires": {
|
||||||
|
"@intlify/shared": "9.2.2",
|
||||||
|
"source-map": "0.6.1"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"source-map": {
|
||||||
|
"version": "0.6.1",
|
||||||
|
"resolved": "https://r2.cnpmjs.org/source-map/-/source-map-0.6.1.tgz",
|
||||||
|
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"@intlify/shared": {
|
||||||
|
"version": "9.2.2",
|
||||||
|
"resolved": "https://r.cnpmjs.org/@intlify/shared/-/shared-9.2.2.tgz",
|
||||||
|
"integrity": "sha512-wRwTpsslgZS5HNyM7uDQYZtxnbI12aGiBZURX3BTR9RFIKKRWpllTsgzHWvj3HKm3Y2Sh5LPC1r0PDCKEhVn9Q=="
|
||||||
|
},
|
||||||
|
"@intlify/vue-devtools": {
|
||||||
|
"version": "9.2.2",
|
||||||
|
"resolved": "https://r.cnpmjs.org/@intlify/vue-devtools/-/vue-devtools-9.2.2.tgz",
|
||||||
|
"integrity": "sha512-+dUyqyCHWHb/UcvY1MlIpO87munedm3Gn6E9WWYdWrMuYLcoIoOEVDWSS8xSwtlPU+kA+MEQTP6Q1iI/ocusJg==",
|
||||||
|
"requires": {
|
||||||
|
"@intlify/core-base": "9.2.2",
|
||||||
|
"@intlify/shared": "9.2.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
"@jridgewell/resolve-uri": {
|
"@jridgewell/resolve-uri": {
|
||||||
"version": "3.1.0",
|
"version": "3.1.0",
|
||||||
"resolved": "https://r.cnpmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
|
"resolved": "https://r.cnpmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
|
||||||
|
|
@ -11941,9 +12073,9 @@
|
||||||
"integrity": "sha512-bMX/nPADfY8Mgs70kG+SGJ4vo7GCOsQaFVhUHG738gzRG6OrKCp2ZbV63LE5jsgEh8tDqxvXvLeslel5HF6lrA=="
|
"integrity": "sha512-bMX/nPADfY8Mgs70kG+SGJ4vo7GCOsQaFVhUHG738gzRG6OrKCp2ZbV63LE5jsgEh8tDqxvXvLeslel5HF6lrA=="
|
||||||
},
|
},
|
||||||
"element-plus": {
|
"element-plus": {
|
||||||
"version": "2.2.30",
|
"version": "2.2.28",
|
||||||
"resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.2.30.tgz",
|
"resolved": "https://r.cnpmjs.org/element-plus/-/element-plus-2.2.28.tgz",
|
||||||
"integrity": "sha512-HYSnmf2VMGa0gmw03evxevodPy3WimbAd4sfenOAhNs7Wl8IdT+YJjQyGAQjgEjRvhmujN4O/CZqhuEffRyOZg==",
|
"integrity": "sha512-BsxF7iEaBydmRfw1Tt++EO9jRBjbtJr7ZRIrnEwz4J3Cwa1IzHCNCcx3ZwcYTlJq9CYFxv94JnbNr1EbkTou3A==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@ctrl/tinycolor": "^3.4.1",
|
"@ctrl/tinycolor": "^3.4.1",
|
||||||
"@element-plus/icons-vue": "^2.0.6",
|
"@element-plus/icons-vue": "^2.0.6",
|
||||||
|
|
@ -16616,6 +16748,17 @@
|
||||||
"vue-demi": "^0.11.4"
|
"vue-demi": "^0.11.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"vue-i18n": {
|
||||||
|
"version": "9.2.2",
|
||||||
|
"resolved": "https://r.cnpmjs.org/vue-i18n/-/vue-i18n-9.2.2.tgz",
|
||||||
|
"integrity": "sha512-yswpwtj89rTBhegUAv9Mu37LNznyu3NpyLQmozF3i1hYOhwpG8RjcjIFIIfnu+2MDZJGSZPXaKWvnQA71Yv9TQ==",
|
||||||
|
"requires": {
|
||||||
|
"@intlify/core-base": "9.2.2",
|
||||||
|
"@intlify/shared": "9.2.2",
|
||||||
|
"@intlify/vue-devtools": "9.2.2",
|
||||||
|
"@vue/devtools-api": "^6.2.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"vue-mugen-scroll": {
|
"vue-mugen-scroll": {
|
||||||
"version": "0.2.6",
|
"version": "0.2.6",
|
||||||
"resolved": "https://registry.npmmirror.com/vue-mugen-scroll/-/vue-mugen-scroll-0.2.6.tgz",
|
"resolved": "https://registry.npmmirror.com/vue-mugen-scroll/-/vue-mugen-scroll-0.2.6.tgz",
|
||||||
|
|
|
||||||
|
|
@ -47,6 +47,7 @@
|
||||||
"vue-cropper": "^1.0.3",
|
"vue-cropper": "^1.0.3",
|
||||||
"vue-cropperjs": "^5.0.0",
|
"vue-cropperjs": "^5.0.0",
|
||||||
"vue-fuse": "^4.1.1",
|
"vue-fuse": "^4.1.1",
|
||||||
|
"vue-i18n": "^9.2.2",
|
||||||
"vue-mugen-scroll": "^0.2.6",
|
"vue-mugen-scroll": "^0.2.6",
|
||||||
"vue-qr": "^4.0.6",
|
"vue-qr": "^4.0.6",
|
||||||
"vue-router": "^4.1.6",
|
"vue-router": "^4.1.6",
|
||||||
|
|
|
||||||
|
|
@ -30,8 +30,10 @@
|
||||||
}
|
}
|
||||||
.el-dropdown:focus {
|
.el-dropdown:focus {
|
||||||
border: none;
|
border: none;
|
||||||
|
outline: none!important;
|
||||||
}
|
}
|
||||||
.svg-icon:focus {
|
.svg-icon:focus {
|
||||||
border: none;
|
border: none!important;
|
||||||
|
outline: none!important;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ const service = axios.create({
|
||||||
// 默认请求地址,根据环境的不同可在.env 文件中进行修改
|
// 默认请求地址,根据环境的不同可在.env 文件中进行修改
|
||||||
baseURL: import.meta.env.VUE_APP_BASE_API,
|
baseURL: import.meta.env.VUE_APP_BASE_API,
|
||||||
// 设置接口访问超时时间
|
// 设置接口访问超时时间
|
||||||
|
|
||||||
timeout: 3000000, // request timeout,
|
timeout: 3000000, // request timeout,
|
||||||
// 跨域时候允许携带凭证
|
// 跨域时候允许携带凭证
|
||||||
withCredentials: true
|
withCredentials: true
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M84.742 36.8c2.398 7.2 5.595 12.8 11.19 18.4 4.795-4.8 7.992-11.2 10.39-18.4h-21.58zm-52.748 40h20.78l-10.39-28-10.39 28z"/><path d="M111.916 0H16.009C7.218 0 .025 7.2.025 16v96c0 8.8 7.193 16 15.984 16h95.907c8.791 0 15.984-7.2 15.984-16V16c0-8.8-6.394-16-15.984-16zM72.754 103.2c-1.598 1.6-3.197 1.6-4.795 1.6-.8 0-2.398 0-3.197-.8-.8-.8-1.599 0-1.599-.8s-.799-1.6-1.598-3.2c-.8-1.6-.8-2.4-1.599-4l-3.196-8.8H28.797L25.6 96c-1.598 3.2-2.398 5.6-3.197 7.2-.8 1.6-2.398 1.6-4.795 1.6-1.599 0-3.197-.8-4.796-1.6-1.598-1.6-2.397-2.4-2.397-4 0-.8 0-1.6.799-3.2.8-1.6.8-2.4 1.598-4l17.583-44.8c.8-1.6.8-3.2 1.599-4.8.799-1.6 1.598-3.2 2.397-4 .8-.8 1.599-2.4 3.197-3.2 1.599-.8 3.197-.8 4.796-.8 1.598 0 3.196 0 4.795.8 1.598.8 2.398 1.6 3.197 3.2.799.8 1.598 2.4 2.397 4 .8 1.6 1.599 3.2 2.398 5.6l17.583 44c1.598 3.2 2.398 5.6 2.398 7.2-.8.8-1.599 2.4-2.398 4zM116.711 72c-8.791-3.2-15.185-7.2-20.78-12-5.594 5.6-12.787 9.6-21.579 12l-2.397-4c8.791-2.4 15.984-5.6 21.579-11.2C87.939 51.2 83.144 44 81.545 36h-7.992v-3.2h21.58c-1.6-2.4-3.198-5.6-4.796-8l2.397-.8c1.599 2.4 3.997 5.6 5.595 8.8h19.98v4h-7.992c-2.397 8-6.393 15.2-11.189 20 5.595 4.8 11.988 8.8 20.78 11.2l-3.197 4z"/></svg>
|
||||||
|
After Width: | Height: | Size: 1.2 KiB |
|
|
@ -0,0 +1,15 @@
|
||||||
|
import { createI18n } from "vue-i18n";
|
||||||
|
import zh from "./modules/zh";
|
||||||
|
import en from "./modules/en";
|
||||||
|
|
||||||
|
const i18n = createI18n({
|
||||||
|
legacy: false, // 如果要支持 compositionAPI,此项必须设置为 false
|
||||||
|
locale: "zh", // 设置语言类型 通过切换locale的值来实现语言切换
|
||||||
|
globalInjection: true, // 全局注册$t方法
|
||||||
|
messages: {
|
||||||
|
zh,
|
||||||
|
en
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
export default i18n;
|
||||||
|
|
@ -0,0 +1,53 @@
|
||||||
|
export default {
|
||||||
|
home: {
|
||||||
|
nickName: "Nick name",
|
||||||
|
job: "Job",
|
||||||
|
company: "Company",
|
||||||
|
age: "Age",
|
||||||
|
sex: "Sex",
|
||||||
|
currentAddress: "Current address",
|
||||||
|
mail: "Mail",
|
||||||
|
WeChat: "WeChat",
|
||||||
|
technologyStack: "Technology stack",
|
||||||
|
PersonalityLabel: "Personality label",
|
||||||
|
favoriteSentence: "Favorite sentence",
|
||||||
|
happy: "Being happy is the most important",
|
||||||
|
male:'Man',
|
||||||
|
web:'Web',
|
||||||
|
Wolf:'Wolf',
|
||||||
|
trouble: "Afraid of trouble",
|
||||||
|
fitness: "Fitness",
|
||||||
|
sleep: "Sleep",
|
||||||
|
Marvel: "Marvel",
|
||||||
|
yearn: "Yearn",
|
||||||
|
impression:'If it helps you, please give me a star! Your encouragement is the motivation for me to continue to optimize~~'
|
||||||
|
},
|
||||||
|
route:{
|
||||||
|
home:'Home',
|
||||||
|
visualizationChart:'Visualization Chart',
|
||||||
|
superTable:'Super Table',
|
||||||
|
form:'Super Form',
|
||||||
|
dataScreen:'Data Screen',
|
||||||
|
chatBox:'Chat Box',
|
||||||
|
commonComponents:'Components',
|
||||||
|
functionPage:'Function Page',
|
||||||
|
nested: 'Nested Routes',
|
||||||
|
excel: 'Excel',
|
||||||
|
zip: 'Zip',
|
||||||
|
errorPages: 'Error Pages',
|
||||||
|
clipboardIndex: 'Clipboard',
|
||||||
|
systemManagement: 'System Management',
|
||||||
|
externalLink: 'External Link',
|
||||||
|
},
|
||||||
|
tagsView: {
|
||||||
|
refresh:'Refresh Current',
|
||||||
|
more: "More",
|
||||||
|
closeCurrent: "Close current",
|
||||||
|
closeOther: "Close other",
|
||||||
|
closeAll: "Close All"
|
||||||
|
},
|
||||||
|
header: {
|
||||||
|
changePassword: "Change Password",
|
||||||
|
logout: "Logout"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
@ -0,0 +1,53 @@
|
||||||
|
export default {
|
||||||
|
home: {
|
||||||
|
nickName: "昵称",
|
||||||
|
job: "职业",
|
||||||
|
company: "公司",
|
||||||
|
age: "年龄",
|
||||||
|
sex: "性别",
|
||||||
|
currentAddress: "现住址",
|
||||||
|
mail: "邮箱",
|
||||||
|
WeChat: "微信",
|
||||||
|
technologyStack: "技术栈",
|
||||||
|
PersonalityLabel: "个性标签",
|
||||||
|
favoriteSentence: "最喜欢的一句话",
|
||||||
|
happy: "开心最重要",
|
||||||
|
male:'男',
|
||||||
|
web:'前端',
|
||||||
|
Wolf:'小狼',
|
||||||
|
trouble: "怕麻烦",
|
||||||
|
fitness: "健身运动",
|
||||||
|
sleep: "睡觉",
|
||||||
|
Marvel: "漫威",
|
||||||
|
yearn: "向往",
|
||||||
|
impression: "如果对你有帮助的话,可以麻烦点一颗 star、fork、watch! 你的鼓励是我继续优化的动力~~",
|
||||||
|
},
|
||||||
|
route:{
|
||||||
|
home:'首页',
|
||||||
|
visualizationChart:'可视化图表',
|
||||||
|
superTable:'超级表格',
|
||||||
|
form:'超级表单',
|
||||||
|
dataScreen:'可视化大屏',
|
||||||
|
chatBox:'聊天框',
|
||||||
|
commonComponents:'常用组件',
|
||||||
|
functionPage:'功能页面',
|
||||||
|
nested: '路由嵌套',
|
||||||
|
excel: 'Excel&Zip',
|
||||||
|
zip: 'Zip',
|
||||||
|
errorPages: '错误页面',
|
||||||
|
clipboardIndex: '剪贴板',
|
||||||
|
systemManagement: '系统管理',
|
||||||
|
externalLink: '外部链接',
|
||||||
|
},
|
||||||
|
tagsView: {
|
||||||
|
refresh:'刷新当页',
|
||||||
|
more: "更多",
|
||||||
|
closeCurrent: "关闭当前",
|
||||||
|
closeOther: "关闭其它",
|
||||||
|
closeAll: "关闭所有"
|
||||||
|
},
|
||||||
|
header: {
|
||||||
|
changePassword: "修改密码",
|
||||||
|
logout: "退出登录"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="m-tool-right">
|
<div class="m-tool-right">
|
||||||
|
<Language class="item-children"/>
|
||||||
<GlobalComSize class="item-children"/>
|
<GlobalComSize class="item-children"/>
|
||||||
<HeaderSearch class="item-children"/>
|
<HeaderSearch class="item-children"/>
|
||||||
<Remind class="item-children"/>
|
<Remind class="item-children"/>
|
||||||
|
|
@ -10,6 +11,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
|
import Language from './components/Language.vue'
|
||||||
import GlobalComSize from './components/globalComSize.vue'
|
import GlobalComSize from './components/globalComSize.vue'
|
||||||
import HeaderSearch from './components/HeaderSearch.vue'
|
import HeaderSearch from './components/HeaderSearch.vue'
|
||||||
import Remind from './components/Remind.vue'
|
import Remind from './components/Remind.vue'
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,59 @@
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<el-dropdown trigger="hover" @command="setLanguage">
|
||||||
|
<svg-icon class-name="size-icon header-icon" icon-class="language" style="font-size: 22px;cursor: pointer"/>
|
||||||
|
<template #dropdown>
|
||||||
|
<el-dropdown-menu>
|
||||||
|
<el-dropdown-menu>
|
||||||
|
<el-dropdown-item :disabled="language && language === 'zh'" command="zh">简体中文</el-dropdown-item>
|
||||||
|
<el-dropdown-item :disabled="language === 'en'" command="en">English</el-dropdown-item>
|
||||||
|
</el-dropdown-menu>
|
||||||
|
</el-dropdown-menu>
|
||||||
|
</template>
|
||||||
|
</el-dropdown>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import {useSettingStore} from "@/store/modules/setting"
|
||||||
|
import { useI18n } from "vue-i18n";
|
||||||
|
import {computed, reactive} from "vue";
|
||||||
|
|
||||||
|
const SettingStore = useSettingStore()
|
||||||
|
const i18n = useI18n();
|
||||||
|
const language = computed(():string=>SettingStore.themeConfig.language)
|
||||||
|
|
||||||
|
const setLanguage = (val)=>{
|
||||||
|
i18n.locale.value = val;
|
||||||
|
SettingStore.setThemeConfig({key:'language', val})
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.m-setting {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: all 0.3s;
|
||||||
|
.item-info-pop {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.bell{
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
.item-child {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.transverseMenu {
|
||||||
|
.size-icon {
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
@ -6,13 +6,14 @@
|
||||||
<component :is="subItem?.meta?.icon"></component>
|
<component :is="subItem?.meta?.icon"></component>
|
||||||
</el-icon>
|
</el-icon>
|
||||||
<template #title>
|
<template #title>
|
||||||
<span>{{ subItem?.meta?.title }}</span>
|
<span>{{ generateTitle(subItem) }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-menu-item>
|
</el-menu-item>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref } from "vue";
|
import { ref } from "vue";
|
||||||
|
import { generateTitle } from '@/utils/i18n'
|
||||||
import { useRouter } from "vue-router";
|
import { useRouter } from "vue-router";
|
||||||
import { isExternal } from "@/utils/validate";
|
import { isExternal } from "@/utils/validate";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
<el-icon>
|
<el-icon>
|
||||||
<component :is="subItem?.meta?.icon"></component>
|
<component :is="subItem?.meta?.icon"></component>
|
||||||
</el-icon>
|
</el-icon>
|
||||||
<span>{{ subItem?.meta?.title }}</span>
|
<span>{{ generateTitle(subItem) }}</span>
|
||||||
</template>
|
</template>
|
||||||
<SubMenu :menuList="subItem.children" />
|
<SubMenu :menuList="subItem.children" />
|
||||||
</el-sub-menu>
|
</el-sub-menu>
|
||||||
|
|
@ -22,6 +22,7 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref } from "vue";
|
import { ref } from "vue";
|
||||||
import MenuItem from './MenuItem.vue'
|
import MenuItem from './MenuItem.vue'
|
||||||
|
import { generateTitle } from '@/utils/i18n'
|
||||||
|
|
||||||
let props = defineProps({
|
let props = defineProps({
|
||||||
menuList:{
|
menuList:{
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,15 @@
|
||||||
<template>
|
<template>
|
||||||
<el-dropdown trigger="hover">
|
<el-dropdown trigger="hover">
|
||||||
<el-button size="small" type="primary">
|
<el-button size="small" type="primary">
|
||||||
<span>更多</span>
|
<span>{{ $t("tagsView.more") }}</span>
|
||||||
<el-icon class="el-icon--right"><arrow-down /></el-icon>
|
<el-icon class="el-icon--right"><arrow-down /></el-icon>
|
||||||
</el-button>
|
</el-button>
|
||||||
<template #dropdown>
|
<template #dropdown>
|
||||||
<el-dropdown-menu>
|
<el-dropdown-menu>
|
||||||
<el-dropdown-item @click="refresh"><el-icon :size="14"><Refresh /></el-icon> 刷新当页</el-dropdown-item>
|
<el-dropdown-item @click="refresh"><el-icon :size="14"><Refresh /></el-icon> {{ $t("tagsView.refresh") }}</el-dropdown-item>
|
||||||
<el-dropdown-item @click="closeCurrentTab"><el-icon :size="14"><FolderRemove/></el-icon> 关闭当前</el-dropdown-item>
|
<el-dropdown-item @click="closeCurrentTab"><el-icon :size="14"><FolderRemove/></el-icon> {{ $t("tagsView.closeCurrent") }}</el-dropdown-item>
|
||||||
<el-dropdown-item @click="closeOtherTab"><el-icon :size="14"><Close /></el-icon>关闭其他</el-dropdown-item>
|
<el-dropdown-item @click="closeOtherTab"><el-icon :size="14"><Close /></el-icon>{{ $t("tagsView.closeOther") }}</el-dropdown-item>
|
||||||
<el-dropdown-item @click="closeAllTab"><el-icon :size="14"><FolderDelete /></el-icon>关闭所有</el-dropdown-item>
|
<el-dropdown-item @click="closeAllTab"><el-icon :size="14"><FolderDelete /></el-icon>{{ $t("tagsView.closeAll") }}</el-dropdown-item>
|
||||||
</el-dropdown-menu>
|
</el-dropdown-menu>
|
||||||
</template>
|
</template>
|
||||||
</el-dropdown>
|
</el-dropdown>
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,8 @@ import "@/styles/element-dark.scss";
|
||||||
// 引入阿里图标库
|
// 引入阿里图标库
|
||||||
import "@/assets/iconfont/iconfont.css";
|
import "@/assets/iconfont/iconfont.css";
|
||||||
import "@/assets/iconfont/iconfont.js";
|
import "@/assets/iconfont/iconfont.js";
|
||||||
|
// i18n
|
||||||
|
import I18n from "@/language/index";
|
||||||
|
|
||||||
const app = createApp(App)
|
const app = createApp(App)
|
||||||
registerElIcons(app)
|
registerElIcons(app)
|
||||||
|
|
@ -28,6 +30,7 @@ registerElIcons(app)
|
||||||
app.component('svg-icon',SvgIcon)
|
app.component('svg-icon',SvgIcon)
|
||||||
app.component('PageWrapLayout',PageWrapLayout)
|
app.component('PageWrapLayout',PageWrapLayout)
|
||||||
|
|
||||||
|
app.use(I18n)
|
||||||
app.use(pinia)
|
app.use(pinia)
|
||||||
app.use(router)
|
app.use(router)
|
||||||
app.use(ElementPlus).mount('#app')
|
app.use(ElementPlus).mount('#app')
|
||||||
|
|
|
||||||
|
|
@ -284,7 +284,7 @@ export const menuData =[
|
||||||
{
|
{
|
||||||
menuName:'菜单1',
|
menuName:'菜单1',
|
||||||
menuType:'菜单',
|
menuType:'菜单',
|
||||||
menuRouter:'/charts',
|
menuRouter:'/echarts',
|
||||||
identification:'menu1:view',
|
identification:'menu1:view',
|
||||||
parentId:1,
|
parentId:1,
|
||||||
level:2,
|
level:2,
|
||||||
|
|
@ -294,7 +294,7 @@ export const menuData =[
|
||||||
{
|
{
|
||||||
menuName:'按钮1',
|
menuName:'按钮1',
|
||||||
menuType:'按钮',
|
menuType:'按钮',
|
||||||
menuRouter:'/charts',
|
menuRouter:'/echarts',
|
||||||
identification:'menu1:view:btn1',
|
identification:'menu1:view:btn1',
|
||||||
parentId:10,
|
parentId:10,
|
||||||
id:20,
|
id:20,
|
||||||
|
|
@ -304,7 +304,7 @@ export const menuData =[
|
||||||
{
|
{
|
||||||
menuName:'按钮2',
|
menuName:'按钮2',
|
||||||
menuType:'按钮',
|
menuType:'按钮',
|
||||||
menuRouter:'/charts',
|
menuRouter:'/echarts',
|
||||||
identification:'menu1:view:btn2',
|
identification:'menu1:view:btn2',
|
||||||
parentId:10,
|
parentId:10,
|
||||||
id:21,
|
id:21,
|
||||||
|
|
@ -314,7 +314,7 @@ export const menuData =[
|
||||||
{
|
{
|
||||||
menuName:'按钮3',
|
menuName:'按钮3',
|
||||||
menuType:'按钮',
|
menuType:'按钮',
|
||||||
menuRouter:'/charts',
|
menuRouter:'/echarts',
|
||||||
identification:'menu1:view:btn2',
|
identification:'menu1:view:btn2',
|
||||||
parentId:10,
|
parentId:10,
|
||||||
id:22,
|
id:22,
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ const externalLink = [{
|
||||||
path: '/external-link',
|
path: '/external-link',
|
||||||
component: Layout,
|
component: Layout,
|
||||||
redirect: '/external-link/wechat',
|
redirect: '/external-link/wechat',
|
||||||
name: 'external-link',
|
name: 'externalLink',
|
||||||
meta: {
|
meta: {
|
||||||
title: '外部链接',
|
title: '外部链接',
|
||||||
icon: 'link'
|
icon: 'link'
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ const functionPageRouter = [{
|
||||||
path: '/function-page',
|
path: '/function-page',
|
||||||
component: Layout,
|
component: Layout,
|
||||||
redirect: '/function-page/404',
|
redirect: '/function-page/404',
|
||||||
name: 'function-page',
|
name: 'functionPage',
|
||||||
meta: {
|
meta: {
|
||||||
title: '功能页面',
|
title: '功能页面',
|
||||||
icon: 'ElementPlus'
|
icon: 'ElementPlus'
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ const systemRouter = [{
|
||||||
path: '/system',
|
path: '/system',
|
||||||
component: Layout,
|
component: Layout,
|
||||||
redirect: '/system/user',
|
redirect: '/system/user',
|
||||||
name: 'system',
|
name: 'systemManagement',
|
||||||
meta: {
|
meta: {
|
||||||
title: '系统管理',
|
title: '系统管理',
|
||||||
icon: 'Setting',
|
icon: 'Setting',
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ const tableRouter = [
|
||||||
path: '/table',
|
path: '/table',
|
||||||
component: Layout,
|
component: Layout,
|
||||||
redirect: '/table/comprehensive',
|
redirect: '/table/comprehensive',
|
||||||
name: 'table',
|
name: 'superTable',
|
||||||
meta: {
|
meta: {
|
||||||
title: '超级表格',
|
title: '超级表格',
|
||||||
icon: 'School',
|
icon: 'School',
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,8 @@ export const useSettingStore = defineStore({
|
||||||
primary:PRIMARY_COLOR,
|
primary:PRIMARY_COLOR,
|
||||||
// element组件大小
|
// element组件大小
|
||||||
globalComSize:'default',
|
globalComSize:'default',
|
||||||
|
// 中英文切换,默认中文
|
||||||
|
language:'zh',
|
||||||
// 是否只保持一个子菜单的展开
|
// 是否只保持一个子菜单的展开
|
||||||
uniqueOpened:true,
|
uniqueOpened:true,
|
||||||
// 固定header
|
// 固定header
|
||||||
|
|
|
||||||
|
|
@ -149,6 +149,9 @@ html.dark {
|
||||||
.footer-layout{
|
.footer-layout{
|
||||||
border-top:var(--zb-border-light);
|
border-top:var(--zb-border-light);
|
||||||
}
|
}
|
||||||
|
.app-echarts{
|
||||||
|
background: black!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -80,19 +80,34 @@
|
||||||
|
|
||||||
.is-active > .el-sub-menu__title {
|
.is-active > .el-sub-menu__title {
|
||||||
color: $subMenuActiveText !important;
|
color: $subMenuActiveText !important;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
.el-menu-item.is-active:before{
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 4px;
|
||||||
|
content: "";
|
||||||
|
background: var(--el-color-primary);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
& .nest-menu .el-sub-menu > .el-sub-menu__title,
|
& .nest-menu .el-sub-menu > .el-sub-menu__title,
|
||||||
& .el-sub-menu .el-menu-item {
|
& .el-sub-menu .el-menu-item {
|
||||||
min-width: $sideBarWidth !important;
|
min-width: $sideBarWidth !important;
|
||||||
background-color: $subMenuBg !important;
|
background-color: $subMenuBg !important;
|
||||||
|
|
||||||
&:hover {
|
}
|
||||||
background-color: $subMenuHover !important;
|
.el-menu-item:not(.is-active):hover {
|
||||||
}
|
background-color: $subMenuHover !important;
|
||||||
|
}
|
||||||
|
.el-menu-item.is-active{
|
||||||
|
background-color:$subMenuHover !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.hideSidebar {
|
.hideSidebar {
|
||||||
.sidebar-container {
|
.sidebar-container {
|
||||||
width: 60px !important;
|
width: 60px !important;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
// translate router.meta.title, be used in breadcrumb sidebar tagsview
|
||||||
|
import I18n from "@/language/index";
|
||||||
|
export function generateTitle(route) {
|
||||||
|
// 检查 key 是否存在
|
||||||
|
const hasKey = I18n.global.te('route.' + route.name)
|
||||||
|
if (hasKey) {
|
||||||
|
const translatedTitle = I18n.global.t('route.' + route.name)
|
||||||
|
return translatedTitle
|
||||||
|
}
|
||||||
|
return route?.meta?.title
|
||||||
|
}
|
||||||
|
|
@ -4,11 +4,11 @@
|
||||||
<el-col :xs="24" :sm="12" :lg="8">
|
<el-col :xs="24" :sm="12" :lg="8">
|
||||||
<el-card class="box-card" style="height: 100%">
|
<el-card class="box-card" style="height: 100%">
|
||||||
<el-image
|
<el-image
|
||||||
class="wechat"
|
class="wechat"
|
||||||
:src="weLogo"
|
:src="weLogo"
|
||||||
:preview-src-list="[weLogo]"
|
:preview-src-list="[weLogo]"
|
||||||
style="max-width: 200px"
|
style="max-width: 200px"
|
||||||
:data-resid="Date.now()"
|
:data-resid="Date.now()"
|
||||||
/>
|
/>
|
||||||
<div class="personal">
|
<div class="personal">
|
||||||
<div>
|
<div>
|
||||||
|
|
@ -17,31 +17,62 @@
|
||||||
<div class="name"></div>
|
<div class="name"></div>
|
||||||
<div class="description"></div>
|
<div class="description"></div>
|
||||||
<div class="list">
|
<div class="list">
|
||||||
<div>昵称:小狼</div>
|
<div
|
||||||
<div>职业:前端</div>
|
><span class="label">{{ $t('home.nickName') }}</span
|
||||||
<div>公司:小公司</div>
|
>:{{ $t('home.Wolf') }}</div
|
||||||
<div>年龄:~~</div>
|
>
|
||||||
<div>性别:男</div>
|
<div
|
||||||
<div>现住址:中国-浙江-杭州</div>
|
><span class="label">{{ $t('home.job') }}</span
|
||||||
<div>邮箱:1135957121@qq.com</div>
|
>:{{ $t('home.web') }}</div
|
||||||
<div>微信:19550102670(欢迎加微信入群)</div>
|
>
|
||||||
<div>技术栈:JavaScript、HTML、CSS、Vue、Node、React</div>
|
<div
|
||||||
|
><span class="label">{{ $t('home.company') }}</span
|
||||||
|
>:小公司</div
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
><span class="label">{{ $t('home.age') }}</span
|
||||||
|
>:~~</div
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
><span class="label">{{ $t('home.sex') }}</span
|
||||||
|
>:{{ $t('home.male') }}</div
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
><span class="label">{{ $t('home.currentAddress') }}</span
|
||||||
|
>:中国-浙江-杭州</div
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
><span class="label">{{ $t('home.mail') }}</span
|
||||||
|
>:1135957121@qq.com</div
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
><span class="label">{{ $t('home.WeChat') }}</span
|
||||||
|
>: 微信:19550102670(欢迎加微信入群)</div
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
><span class="label">{{ $t('home.technologyStack') }}</span
|
||||||
|
>:JavaScript、HTML、CSS、Vue、Node、React</div
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
<el-divider></el-divider>
|
<el-divider></el-divider>
|
||||||
<div style="margin-bottom: 15px"><h5>个性标签</h5></div>
|
<div style="margin-bottom: 15px"
|
||||||
|
><h5>{{ $t('home.PersonalityLabel') }}</h5></div
|
||||||
|
>
|
||||||
<div>
|
<div>
|
||||||
<el-tag style="margin-right: 10px">怕麻烦</el-tag>
|
<el-tag style="margin-right: 10px">{{ $t('home.trouble') }}</el-tag>
|
||||||
<el-tag style="margin-right: 10px">健身运动</el-tag>
|
<el-tag style="margin-right: 10px">{{ $t('home.fitness') }}</el-tag>
|
||||||
<el-tag style="margin-right: 10px">睡觉</el-tag>
|
<el-tag style="margin-right: 10px">{{ $t('home.sleep') }}</el-tag>
|
||||||
<el-tag style="margin-right: 10px">漫威</el-tag>
|
<el-tag style="margin-right: 10px">{{ $t('home.Marvel') }}</el-tag>
|
||||||
<el-tag>向往</el-tag>
|
<el-tag>向往</el-tag>
|
||||||
</div>
|
</div>
|
||||||
<el-divider></el-divider>
|
<el-divider></el-divider>
|
||||||
<div style="margin-bottom: 15px"><h5>最喜欢的一句话</h5></div>
|
<div style="margin-bottom: 15px"
|
||||||
<div>---------- 开心最重要</div>
|
><h5>{{ $t('home.favoriteSentence') }}</h5></div
|
||||||
|
>
|
||||||
|
<div>---------- {{ $t('home.happy') }}</div>
|
||||||
<el-divider></el-divider>
|
<el-divider></el-divider>
|
||||||
<div style="margin-bottom: 15px"
|
<div style="margin-bottom: 15px"
|
||||||
><h5>如果对你有帮助的话,可以麻烦点一颗 Star、Fork、Watch! 你的鼓励是我继续优化的动力~~</h5></div
|
><h5>{{ $t('home.impression') }}~~</h5></div
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
@ -52,18 +83,16 @@
|
||||||
<el-card style="margin-bottom: 10px">
|
<el-card style="margin-bottom: 10px">
|
||||||
<div class="grid-content">
|
<div class="grid-content">
|
||||||
<div class="left"
|
<div class="left"
|
||||||
><el-icon style="font-size: 24px; color: white"><user /></el-icon
|
><el-icon style="font-size: 24px; color: white"><user /></el-icon
|
||||||
></div>
|
></div>
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<div
|
<div class="h2" style="color: #2d8cf0">
|
||||||
class="h2"
|
<count-to
|
||||||
style="color: #2d8cf0"
|
|
||||||
><count-to
|
|
||||||
:start-val="0"
|
:start-val="0"
|
||||||
:end-val="5268"
|
:end-val="5268"
|
||||||
:duration="2000"
|
:duration="2000"
|
||||||
:autoplay="true"
|
:autoplay="true"
|
||||||
></count-to
|
></count-to
|
||||||
></div>
|
></div>
|
||||||
<div>用户访问量 </div>
|
<div>用户访问量 </div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -74,18 +103,16 @@
|
||||||
<el-card style="margin-bottom: 10px">
|
<el-card style="margin-bottom: 10px">
|
||||||
<div class="grid-content">
|
<div class="grid-content">
|
||||||
<div class="left" style="background: #64d572"
|
<div class="left" style="background: #64d572"
|
||||||
><el-icon style="font-size: 24px; color: white"><user /></el-icon
|
><el-icon style="font-size: 24px; color: white"><user /></el-icon
|
||||||
></div>
|
></div>
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<div
|
<div class="h2" style="color: #64d572">
|
||||||
class="h2"
|
<count-to
|
||||||
style="color: #64d572"
|
|
||||||
><count-to
|
|
||||||
:start-val="0"
|
:start-val="0"
|
||||||
:end-val="9599"
|
:end-val="9599"
|
||||||
:duration="2000"
|
:duration="2000"
|
||||||
:autoplay="true"
|
:autoplay="true"
|
||||||
></count-to
|
></count-to
|
||||||
></div>
|
></div>
|
||||||
<div>系统消息 </div>
|
<div>系统消息 </div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -96,18 +123,16 @@
|
||||||
<el-card style="margin-bottom: 10px">
|
<el-card style="margin-bottom: 10px">
|
||||||
<div class="grid-content">
|
<div class="grid-content">
|
||||||
<div class="left" style="background: #f25e43"
|
<div class="left" style="background: #f25e43"
|
||||||
><el-icon style="font-size: 24px; color: white"><user /></el-icon
|
><el-icon style="font-size: 24px; color: white"><user /></el-icon
|
||||||
></div>
|
></div>
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<div
|
<div class="h2" style="color: #f25e43"
|
||||||
class="h2"
|
><count-to
|
||||||
style="color: #f25e43"
|
|
||||||
><count-to
|
|
||||||
:start-val="0"
|
:start-val="0"
|
||||||
:end-val="595453"
|
:end-val="595453"
|
||||||
:duration="2000"
|
:duration="2000"
|
||||||
:autoplay="true"
|
:autoplay="true"
|
||||||
></count-to
|
></count-to
|
||||||
></div>
|
></div>
|
||||||
<div>数量 </div>
|
<div>数量 </div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -123,24 +148,24 @@
|
||||||
</template>
|
</template>
|
||||||
<div style="display: flex">
|
<div style="display: flex">
|
||||||
<el-card
|
<el-card
|
||||||
style="flex: 1; margin-right: 20px; cursor: pointer"
|
style="flex: 1; margin-right: 20px; cursor: pointer"
|
||||||
class="card-item"
|
class="card-item"
|
||||||
@click="goTo('https://ext.dcloud.net.cn/plugin?id=7511')"
|
@click="goTo('https://ext.dcloud.net.cn/plugin?id=7511')"
|
||||||
>
|
>
|
||||||
<div style="color: white; margin-bottom: 10px"><h3>zb-table</h3></div>
|
<div style="color: white; margin-bottom: 10px"><h3>zb-table</h3></div>
|
||||||
<div style="font-size: 12px; color: white"
|
<div style="font-size: 12px; color: white"
|
||||||
>uniapp 表格组件
|
>uniapp 表格组件
|
||||||
支持固定表头和首列、上拉加载更多、及固定多列,表格自适应内容,排序,多选checkbox、可点击删除,编辑、合计功能,兼容多端</div
|
支持固定表头和首列、上拉加载更多、及固定多列,表格自适应内容,排序,多选checkbox、可点击删除,编辑、合计功能,兼容多端</div
|
||||||
>
|
>
|
||||||
</el-card>
|
</el-card>
|
||||||
<el-card
|
<el-card
|
||||||
style="flex: 1; cursor: pointer"
|
style="flex: 1; cursor: pointer"
|
||||||
class="card-item"
|
class="card-item"
|
||||||
@click="goTo('https://github.com/zouzhibin/vue-admin-perfect')"
|
@click="goTo('https://github.com/zouzhibin/vue-admin-perfect')"
|
||||||
>
|
>
|
||||||
<div style="color: white; margin-bottom: 10px"><h3>vue-admin-perfect</h3></div>
|
<div style="color: white; margin-bottom: 10px"><h3>vue-admin-perfect</h3></div>
|
||||||
<div style="font-size: 12px; color: white"
|
<div style="font-size: 12px; color: white"
|
||||||
>系统基于vue3+vuex+ element-plus+ts后台管理系统</div
|
>系统基于vue3+vuex+ element-plus+ts后台管理系统</div
|
||||||
>
|
>
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -161,17 +186,14 @@
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { User } from '@element-plus/icons-vue'
|
import { User } from '@element-plus/icons-vue'
|
||||||
import { ref } from 'vue'
|
|
||||||
import AvatarLogo from '@/assets/image/avatar.png'
|
import AvatarLogo from '@/assets/image/avatar.png'
|
||||||
import weLogo from '@/assets/image/we.png'
|
|
||||||
import CountTo from '@/components/CountTo/index.vue'
|
import CountTo from '@/components/CountTo/index.vue'
|
||||||
import BarCharts from '@/views/echarts/simple/components/bar.vue'
|
import BarCharts from '@/views/echarts/simple/components/bar.vue'
|
||||||
|
import weLogo from '@/assets/image/we.png'
|
||||||
const goTo = (url) => {
|
const goTo = (url) => {
|
||||||
window.open(url, '_blank')
|
window.open(url, '_blank')
|
||||||
}
|
}</script>
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
@import "./index";
|
@import './index.scss';
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue