Commit 6680b76f authored by 孙谢炜's avatar 孙谢炜

新增轮播图与登录检测

parent c0ea6e29
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8" />
<link rel="icon" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>轮播图管理</title>
<style>
html,body,#app{
height: 100%;
}
</style>
</head>
<body>
<div id="app"></div>
<script type="module" src="src/carousel_manage.js"></script>
</body>
</html>
...@@ -10,10 +10,11 @@ ...@@ -10,10 +10,11 @@
"dependencies": { "dependencies": {
"@mdi/font": "7.0.96", "@mdi/font": "7.0.96",
"axios": "^1.6.8", "axios": "^1.6.8",
"crypto-js": "^4.2.0",
"dayjs": "^1.11.10", "dayjs": "^1.11.10",
"roboto-fontface": "*", "roboto-fontface": "*",
"vue": "^3.3.0", "vue": "^3.3.0",
"vuetify": "^3.5.9" "vuetify": "^3.6.5"
}, },
"devDependencies": { "devDependencies": {
"@vitejs/plugin-vue": "^4.5.0", "@vitejs/plugin-vue": "^4.5.0",
...@@ -26,18 +27,18 @@ ...@@ -26,18 +27,18 @@
} }
}, },
"node_modules/@antfu/utils": { "node_modules/@antfu/utils": {
"version": "0.7.7", "version": "0.7.8",
"resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.7.tgz", "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.8.tgz",
"integrity": "sha512-gFPqTG7otEJ8uP6wrhDv6mqwGWYZKNvAcCq6u9hOj0c+IKCEsY4L1oC9trPq2SaWIzAfHvqfBDxF591JkMf+kg==", "integrity": "sha512-rWQkqXRESdjXtc+7NRfK9lASQjpXJu1ayp7qi1d23zZorY+wBHVLHHoVcMsEnkqEBWTFqbztO7/QdJFzyEcLTg==",
"dev": true, "dev": true,
"funding": { "funding": {
"url": "https://github.com/sponsors/antfu" "url": "https://github.com/sponsors/antfu"
} }
}, },
"node_modules/@babel/parser": { "node_modules/@babel/parser": {
"version": "7.23.9", "version": "7.24.5",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz",
"integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==", "integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==",
"bin": { "bin": {
"parser": "bin/babel-parser.js" "parser": "bin/babel-parser.js"
}, },
...@@ -46,9 +47,9 @@ ...@@ -46,9 +47,9 @@
} }
}, },
"node_modules/@esbuild/aix-ppc64": { "node_modules/@esbuild/aix-ppc64": {
"version": "0.19.12", "version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz",
"integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==",
"cpu": [ "cpu": [
"ppc64" "ppc64"
], ],
...@@ -61,9 +62,9 @@ ...@@ -61,9 +62,9 @@
} }
}, },
"node_modules/@esbuild/android-arm": { "node_modules/@esbuild/android-arm": {
"version": "0.19.12", "version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz",
"integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==",
"cpu": [ "cpu": [
"arm" "arm"
], ],
...@@ -76,9 +77,9 @@ ...@@ -76,9 +77,9 @@
} }
}, },
"node_modules/@esbuild/android-arm64": { "node_modules/@esbuild/android-arm64": {
"version": "0.19.12", "version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz",
"integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
...@@ -91,9 +92,9 @@ ...@@ -91,9 +92,9 @@
} }
}, },
"node_modules/@esbuild/android-x64": { "node_modules/@esbuild/android-x64": {
"version": "0.19.12", "version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz",
"integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
...@@ -106,9 +107,9 @@ ...@@ -106,9 +107,9 @@
} }
}, },
"node_modules/@esbuild/darwin-arm64": { "node_modules/@esbuild/darwin-arm64": {
"version": "0.19.12", "version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz",
"integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
...@@ -121,9 +122,9 @@ ...@@ -121,9 +122,9 @@
} }
}, },
"node_modules/@esbuild/darwin-x64": { "node_modules/@esbuild/darwin-x64": {
"version": "0.19.12", "version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz",
"integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
...@@ -136,9 +137,9 @@ ...@@ -136,9 +137,9 @@
} }
}, },
"node_modules/@esbuild/freebsd-arm64": { "node_modules/@esbuild/freebsd-arm64": {
"version": "0.19.12", "version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz",
"integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
...@@ -151,9 +152,9 @@ ...@@ -151,9 +152,9 @@
} }
}, },
"node_modules/@esbuild/freebsd-x64": { "node_modules/@esbuild/freebsd-x64": {
"version": "0.19.12", "version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz",
"integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
...@@ -166,9 +167,9 @@ ...@@ -166,9 +167,9 @@
} }
}, },
"node_modules/@esbuild/linux-arm": { "node_modules/@esbuild/linux-arm": {
"version": "0.19.12", "version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz",
"integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==",
"cpu": [ "cpu": [
"arm" "arm"
], ],
...@@ -181,9 +182,9 @@ ...@@ -181,9 +182,9 @@
} }
}, },
"node_modules/@esbuild/linux-arm64": { "node_modules/@esbuild/linux-arm64": {
"version": "0.19.12", "version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz",
"integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
...@@ -196,9 +197,9 @@ ...@@ -196,9 +197,9 @@
} }
}, },
"node_modules/@esbuild/linux-ia32": { "node_modules/@esbuild/linux-ia32": {
"version": "0.19.12", "version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz",
"integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==",
"cpu": [ "cpu": [
"ia32" "ia32"
], ],
...@@ -211,9 +212,9 @@ ...@@ -211,9 +212,9 @@
} }
}, },
"node_modules/@esbuild/linux-loong64": { "node_modules/@esbuild/linux-loong64": {
"version": "0.19.12", "version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz",
"integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==",
"cpu": [ "cpu": [
"loong64" "loong64"
], ],
...@@ -226,9 +227,9 @@ ...@@ -226,9 +227,9 @@
} }
}, },
"node_modules/@esbuild/linux-mips64el": { "node_modules/@esbuild/linux-mips64el": {
"version": "0.19.12", "version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz",
"integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==",
"cpu": [ "cpu": [
"mips64el" "mips64el"
], ],
...@@ -241,9 +242,9 @@ ...@@ -241,9 +242,9 @@
} }
}, },
"node_modules/@esbuild/linux-ppc64": { "node_modules/@esbuild/linux-ppc64": {
"version": "0.19.12", "version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz",
"integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==",
"cpu": [ "cpu": [
"ppc64" "ppc64"
], ],
...@@ -256,9 +257,9 @@ ...@@ -256,9 +257,9 @@
} }
}, },
"node_modules/@esbuild/linux-riscv64": { "node_modules/@esbuild/linux-riscv64": {
"version": "0.19.12", "version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz",
"integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==",
"cpu": [ "cpu": [
"riscv64" "riscv64"
], ],
...@@ -271,9 +272,9 @@ ...@@ -271,9 +272,9 @@
} }
}, },
"node_modules/@esbuild/linux-s390x": { "node_modules/@esbuild/linux-s390x": {
"version": "0.19.12", "version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz",
"integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==",
"cpu": [ "cpu": [
"s390x" "s390x"
], ],
...@@ -286,9 +287,9 @@ ...@@ -286,9 +287,9 @@
} }
}, },
"node_modules/@esbuild/linux-x64": { "node_modules/@esbuild/linux-x64": {
"version": "0.19.12", "version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz",
"integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
...@@ -301,9 +302,9 @@ ...@@ -301,9 +302,9 @@
} }
}, },
"node_modules/@esbuild/netbsd-x64": { "node_modules/@esbuild/netbsd-x64": {
"version": "0.19.12", "version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz",
"integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
...@@ -316,9 +317,9 @@ ...@@ -316,9 +317,9 @@
} }
}, },
"node_modules/@esbuild/openbsd-x64": { "node_modules/@esbuild/openbsd-x64": {
"version": "0.19.12", "version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz",
"integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
...@@ -331,9 +332,9 @@ ...@@ -331,9 +332,9 @@
} }
}, },
"node_modules/@esbuild/sunos-x64": { "node_modules/@esbuild/sunos-x64": {
"version": "0.19.12", "version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz",
"integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
...@@ -346,9 +347,9 @@ ...@@ -346,9 +347,9 @@
} }
}, },
"node_modules/@esbuild/win32-arm64": { "node_modules/@esbuild/win32-arm64": {
"version": "0.19.12", "version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz",
"integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
...@@ -361,9 +362,9 @@ ...@@ -361,9 +362,9 @@
} }
}, },
"node_modules/@esbuild/win32-ia32": { "node_modules/@esbuild/win32-ia32": {
"version": "0.19.12", "version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz",
"integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==",
"cpu": [ "cpu": [
"ia32" "ia32"
], ],
...@@ -376,9 +377,9 @@ ...@@ -376,9 +377,9 @@
} }
}, },
"node_modules/@esbuild/win32-x64": { "node_modules/@esbuild/win32-x64": {
"version": "0.19.12", "version": "0.20.2",
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz",
"integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
...@@ -458,9 +459,9 @@ ...@@ -458,9 +459,9 @@
} }
}, },
"node_modules/@rollup/rollup-android-arm-eabi": { "node_modules/@rollup/rollup-android-arm-eabi": {
"version": "4.12.0", "version": "4.17.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.12.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.17.2.tgz",
"integrity": "sha512-+ac02NL/2TCKRrJu2wffk1kZ+RyqxVUlbjSagNgPm94frxtr+XDL12E5Ll1enWskLrtrZ2r8L3wED1orIibV/w==", "integrity": "sha512-NM0jFxY8bB8QLkoKxIQeObCaDlJKewVlIEkuyYKm5An1tdVZ966w2+MPQ2l8LBZLjR+SgyV+nRkTIunzOYBMLQ==",
"cpu": [ "cpu": [
"arm" "arm"
], ],
...@@ -470,9 +471,9 @@ ...@@ -470,9 +471,9 @@
] ]
}, },
"node_modules/@rollup/rollup-android-arm64": { "node_modules/@rollup/rollup-android-arm64": {
"version": "4.12.0", "version": "4.17.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.12.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.17.2.tgz",
"integrity": "sha512-OBqcX2BMe6nvjQ0Nyp7cC90cnumt8PXmO7Dp3gfAju/6YwG0Tj74z1vKrfRz7qAv23nBcYM8BCbhrsWqO7PzQQ==", "integrity": "sha512-yeX/Usk7daNIVwkq2uGoq2BYJKZY1JfyLTaHO/jaiSwi/lsf8fTFoQW/n6IdAsx5tx+iotu2zCJwz8MxI6D/Bw==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
...@@ -482,9 +483,9 @@ ...@@ -482,9 +483,9 @@
] ]
}, },
"node_modules/@rollup/rollup-darwin-arm64": { "node_modules/@rollup/rollup-darwin-arm64": {
"version": "4.12.0", "version": "4.17.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.12.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.17.2.tgz",
"integrity": "sha512-X64tZd8dRE/QTrBIEs63kaOBG0b5GVEd3ccoLtyf6IdXtHdh8h+I56C2yC3PtC9Ucnv0CpNFJLqKFVgCYe0lOQ==", "integrity": "sha512-kcMLpE6uCwls023+kknm71ug7MZOrtXo+y5p/tsg6jltpDtgQY1Eq5sGfHcQfb+lfuKwhBmEURDga9N0ol4YPw==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
...@@ -494,9 +495,9 @@ ...@@ -494,9 +495,9 @@
] ]
}, },
"node_modules/@rollup/rollup-darwin-x64": { "node_modules/@rollup/rollup-darwin-x64": {
"version": "4.12.0", "version": "4.17.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.12.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.17.2.tgz",
"integrity": "sha512-cc71KUZoVbUJmGP2cOuiZ9HSOP14AzBAThn3OU+9LcA1+IUqswJyR1cAJj3Mg55HbjZP6OLAIscbQsQLrpgTOg==", "integrity": "sha512-AtKwD0VEx0zWkL0ZjixEkp5tbNLzX+FCqGG1SvOu993HnSz4qDI6S4kGzubrEJAljpVkhRSlg5bzpV//E6ysTQ==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
...@@ -506,9 +507,21 @@ ...@@ -506,9 +507,21 @@
] ]
}, },
"node_modules/@rollup/rollup-linux-arm-gnueabihf": { "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
"version": "4.12.0", "version": "4.17.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.12.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.17.2.tgz",
"integrity": "sha512-a6w/Y3hyyO6GlpKL2xJ4IOh/7d+APaqLYdMf86xnczU3nurFTaVN9s9jOXQg97BE4nYm/7Ga51rjec5nfRdrvA==", "integrity": "sha512-3reX2fUHqN7sffBNqmEyMQVj/CKhIHZd4y631duy0hZqI8Qoqf6lTtmAKvJFYa6bhU95B1D0WgzHkmTg33In0A==",
"cpu": [
"arm"
],
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-arm-musleabihf": {
"version": "4.17.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.17.2.tgz",
"integrity": "sha512-uSqpsp91mheRgw96xtyAGP9FW5ChctTFEoXP0r5FAzj/3ZRv3Uxjtc7taRQSaQM/q85KEKjKsZuiZM3GyUivRg==",
"cpu": [ "cpu": [
"arm" "arm"
], ],
...@@ -518,9 +531,9 @@ ...@@ -518,9 +531,9 @@
] ]
}, },
"node_modules/@rollup/rollup-linux-arm64-gnu": { "node_modules/@rollup/rollup-linux-arm64-gnu": {
"version": "4.12.0", "version": "4.17.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.12.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.17.2.tgz",
"integrity": "sha512-0fZBq27b+D7Ar5CQMofVN8sggOVhEtzFUwOwPppQt0k+VR+7UHMZZY4y+64WJ06XOhBTKXtQB/Sv0NwQMXyNAA==", "integrity": "sha512-EMMPHkiCRtE8Wdk3Qhtciq6BndLtstqZIroHiiGzB3C5LDJmIZcSzVtLRbwuXuUft1Cnv+9fxuDtDxz3k3EW2A==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
...@@ -530,9 +543,9 @@ ...@@ -530,9 +543,9 @@
] ]
}, },
"node_modules/@rollup/rollup-linux-arm64-musl": { "node_modules/@rollup/rollup-linux-arm64-musl": {
"version": "4.12.0", "version": "4.17.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.12.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.17.2.tgz",
"integrity": "sha512-eTvzUS3hhhlgeAv6bfigekzWZjaEX9xP9HhxB0Dvrdbkk5w/b+1Sxct2ZuDxNJKzsRStSq1EaEkVSEe7A7ipgQ==", "integrity": "sha512-NMPylUUZ1i0z/xJUIx6VUhISZDRT+uTWpBcjdv0/zkp7b/bQDF+NfnfdzuTiB1G6HTodgoFa93hp0O1xl+/UbA==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
...@@ -541,10 +554,22 @@ ...@@ -541,10 +554,22 @@
"linux" "linux"
] ]
}, },
"node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
"version": "4.17.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.17.2.tgz",
"integrity": "sha512-T19My13y8uYXPw/L/k0JYaX1fJKFT/PWdXiHr8mTbXWxjVF1t+8Xl31DgBBvEKclw+1b00Chg0hxE2O7bTG7GQ==",
"cpu": [
"ppc64"
],
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-riscv64-gnu": { "node_modules/@rollup/rollup-linux-riscv64-gnu": {
"version": "4.12.0", "version": "4.17.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.12.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.17.2.tgz",
"integrity": "sha512-ix+qAB9qmrCRiaO71VFfY8rkiAZJL8zQRXveS27HS+pKdjwUfEhqo2+YF2oI+H/22Xsiski+qqwIBxVewLK7sw==", "integrity": "sha512-BOaNfthf3X3fOWAB+IJ9kxTgPmMqPPH5f5k2DcCsRrBIbWnaJCgX2ll77dV1TdSy9SaXTR5iDXRL8n7AnoP5cg==",
"cpu": [ "cpu": [
"riscv64" "riscv64"
], ],
...@@ -553,10 +578,22 @@ ...@@ -553,10 +578,22 @@
"linux" "linux"
] ]
}, },
"node_modules/@rollup/rollup-linux-s390x-gnu": {
"version": "4.17.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.17.2.tgz",
"integrity": "sha512-W0UP/x7bnn3xN2eYMql2T/+wpASLE5SjObXILTMPUBDB/Fg/FxC+gX4nvCfPBCbNhz51C+HcqQp2qQ4u25ok6g==",
"cpu": [
"s390x"
],
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-x64-gnu": { "node_modules/@rollup/rollup-linux-x64-gnu": {
"version": "4.12.0", "version": "4.17.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.12.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.17.2.tgz",
"integrity": "sha512-TenQhZVOtw/3qKOPa7d+QgkeM6xY0LtwzR8OplmyL5LrgTWIXpTQg2Q2ycBf8jm+SFW2Wt/DTn1gf7nFp3ssVA==", "integrity": "sha512-Hy7pLwByUOuyaFC6mAr7m+oMC+V7qyifzs/nW2OJfC8H4hbCzOX07Ov0VFk/zP3kBsELWNFi7rJtgbKYsav9QQ==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
...@@ -566,9 +603,9 @@ ...@@ -566,9 +603,9 @@
] ]
}, },
"node_modules/@rollup/rollup-linux-x64-musl": { "node_modules/@rollup/rollup-linux-x64-musl": {
"version": "4.12.0", "version": "4.17.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.12.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.17.2.tgz",
"integrity": "sha512-LfFdRhNnW0zdMvdCb5FNuWlls2WbbSridJvxOvYWgSBOYZtgBfW9UGNJG//rwMqTX1xQE9BAodvMH9tAusKDUw==", "integrity": "sha512-h1+yTWeYbRdAyJ/jMiVw0l6fOOm/0D1vNLui9iPuqgRGnXA0u21gAqOyB5iHjlM9MMfNOm9RHCQ7zLIzT0x11Q==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
...@@ -578,9 +615,9 @@ ...@@ -578,9 +615,9 @@
] ]
}, },
"node_modules/@rollup/rollup-win32-arm64-msvc": { "node_modules/@rollup/rollup-win32-arm64-msvc": {
"version": "4.12.0", "version": "4.17.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.12.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.17.2.tgz",
"integrity": "sha512-JPDxovheWNp6d7AHCgsUlkuCKvtu3RB55iNEkaQcf0ttsDU/JZF+iQnYcQJSk/7PtT4mjjVG8N1kpwnI9SLYaw==", "integrity": "sha512-tmdtXMfKAjy5+IQsVtDiCfqbynAQE/TQRpWdVataHmhMb9DCoJxp9vLcCBjEQWMiUYxO1QprH/HbY9ragCEFLA==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
...@@ -590,9 +627,9 @@ ...@@ -590,9 +627,9 @@
] ]
}, },
"node_modules/@rollup/rollup-win32-ia32-msvc": { "node_modules/@rollup/rollup-win32-ia32-msvc": {
"version": "4.12.0", "version": "4.17.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.12.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.17.2.tgz",
"integrity": "sha512-fjtuvMWRGJn1oZacG8IPnzIV6GF2/XG+h71FKn76OYFqySXInJtseAqdprVTDTyqPxQOG9Exak5/E9Z3+EJ8ZA==", "integrity": "sha512-7II/QCSTAHuE5vdZaQEwJq2ZACkBpQDOmQsE6D6XUbnBHW8IAhm4eTufL6msLJorzrHDFv3CF8oCA/hSIRuZeQ==",
"cpu": [ "cpu": [
"ia32" "ia32"
], ],
...@@ -602,9 +639,9 @@ ...@@ -602,9 +639,9 @@
] ]
}, },
"node_modules/@rollup/rollup-win32-x64-msvc": { "node_modules/@rollup/rollup-win32-x64-msvc": {
"version": "4.12.0", "version": "4.17.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.12.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.17.2.tgz",
"integrity": "sha512-ZYmr5mS2wd4Dew/JjT0Fqi2NPB/ZhZ2VvPp7SmvPZb4Y1CG/LRcS6tcRo2cYU7zLK5A7cdbhWnnWmUjoI4qapg==", "integrity": "sha512-TGGO7v7qOq4CYmSBVEYpI1Y5xDuCEnbVC5Vth8mOsW0gDSzxNrVERPc790IGHsrT2dQSimgMr9Ub3Y1Jci5/8w==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
...@@ -633,99 +670,99 @@ ...@@ -633,99 +670,99 @@
} }
}, },
"node_modules/@vue/compiler-core": { "node_modules/@vue/compiler-core": {
"version": "3.4.19", "version": "3.4.27",
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.19.tgz", "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.27.tgz",
"integrity": "sha512-gj81785z0JNzRcU0Mq98E56e4ltO1yf8k5PQ+tV/7YHnbZkrM0fyFyuttnN8ngJZjbpofWE/m4qjKBiLl8Ju4w==", "integrity": "sha512-E+RyqY24KnyDXsCuQrI+mlcdW3ALND6U7Gqa/+bVwbcpcR3BRRIckFoz7Qyd4TTlnugtwuI7YgjbvsLmxb+yvg==",
"dependencies": { "dependencies": {
"@babel/parser": "^7.23.9", "@babel/parser": "^7.24.4",
"@vue/shared": "3.4.19", "@vue/shared": "3.4.27",
"entities": "^4.5.0", "entities": "^4.5.0",
"estree-walker": "^2.0.2", "estree-walker": "^2.0.2",
"source-map-js": "^1.0.2" "source-map-js": "^1.2.0"
} }
}, },
"node_modules/@vue/compiler-dom": { "node_modules/@vue/compiler-dom": {
"version": "3.4.19", "version": "3.4.27",
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.19.tgz", "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.27.tgz",
"integrity": "sha512-vm6+cogWrshjqEHTzIDCp72DKtea8Ry/QVpQRYoyTIg9k7QZDX6D8+HGURjtmatfgM8xgCFtJJaOlCaRYRK3QA==", "integrity": "sha512-kUTvochG/oVgE1w5ViSr3KUBh9X7CWirebA3bezTbB5ZKBQZwR2Mwj9uoSKRMFcz4gSMzzLXBPD6KpCLb9nvWw==",
"dependencies": { "dependencies": {
"@vue/compiler-core": "3.4.19", "@vue/compiler-core": "3.4.27",
"@vue/shared": "3.4.19" "@vue/shared": "3.4.27"
} }
}, },
"node_modules/@vue/compiler-sfc": { "node_modules/@vue/compiler-sfc": {
"version": "3.4.19", "version": "3.4.27",
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.19.tgz", "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.27.tgz",
"integrity": "sha512-LQ3U4SN0DlvV0xhr1lUsgLCYlwQfUfetyPxkKYu7dkfvx7g3ojrGAkw0AERLOKYXuAGnqFsEuytkdcComei3Yg==", "integrity": "sha512-nDwntUEADssW8e0rrmE0+OrONwmRlegDA1pD6QhVeXxjIytV03yDqTey9SBDiALsvAd5U4ZrEKbMyVXhX6mCGA==",
"dependencies": { "dependencies": {
"@babel/parser": "^7.23.9", "@babel/parser": "^7.24.4",
"@vue/compiler-core": "3.4.19", "@vue/compiler-core": "3.4.27",
"@vue/compiler-dom": "3.4.19", "@vue/compiler-dom": "3.4.27",
"@vue/compiler-ssr": "3.4.19", "@vue/compiler-ssr": "3.4.27",
"@vue/shared": "3.4.19", "@vue/shared": "3.4.27",
"estree-walker": "^2.0.2", "estree-walker": "^2.0.2",
"magic-string": "^0.30.6", "magic-string": "^0.30.10",
"postcss": "^8.4.33", "postcss": "^8.4.38",
"source-map-js": "^1.0.2" "source-map-js": "^1.2.0"
} }
}, },
"node_modules/@vue/compiler-ssr": { "node_modules/@vue/compiler-ssr": {
"version": "3.4.19", "version": "3.4.27",
"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.19.tgz", "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.27.tgz",
"integrity": "sha512-P0PLKC4+u4OMJ8sinba/5Z/iDT84uMRRlrWzadgLA69opCpI1gG4N55qDSC+dedwq2fJtzmGald05LWR5TFfLw==", "integrity": "sha512-CVRzSJIltzMG5FcidsW0jKNQnNRYC8bT21VegyMMtHmhW3UOI7knmUehzswXLrExDLE6lQCZdrhD4ogI7c+vuw==",
"dependencies": { "dependencies": {
"@vue/compiler-dom": "3.4.19", "@vue/compiler-dom": "3.4.27",
"@vue/shared": "3.4.19" "@vue/shared": "3.4.27"
} }
}, },
"node_modules/@vue/reactivity": { "node_modules/@vue/reactivity": {
"version": "3.4.19", "version": "3.4.27",
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.19.tgz", "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.27.tgz",
"integrity": "sha512-+VcwrQvLZgEclGZRHx4O2XhyEEcKaBi50WbxdVItEezUf4fqRh838Ix6amWTdX0CNb/b6t3Gkz3eOebfcSt+UA==", "integrity": "sha512-kK0g4NknW6JX2yySLpsm2jlunZJl2/RJGZ0H9ddHdfBVHcNzxmQ0sS0b09ipmBoQpY8JM2KmUw+a6sO8Zo+zIA==",
"dependencies": { "dependencies": {
"@vue/shared": "3.4.19" "@vue/shared": "3.4.27"
} }
}, },
"node_modules/@vue/runtime-core": { "node_modules/@vue/runtime-core": {
"version": "3.4.19", "version": "3.4.27",
"resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.19.tgz", "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.27.tgz",
"integrity": "sha512-/Z3tFwOrerJB/oyutmJGoYbuoadphDcJAd5jOuJE86THNZji9pYjZroQ2NFsZkTxOq0GJbb+s2kxTYToDiyZzw==", "integrity": "sha512-7aYA9GEbOOdviqVvcuweTLe5Za4qBZkUY7SvET6vE8kyypxVgaT1ixHLg4urtOlrApdgcdgHoTZCUuTGap/5WA==",
"dependencies": { "dependencies": {
"@vue/reactivity": "3.4.19", "@vue/reactivity": "3.4.27",
"@vue/shared": "3.4.19" "@vue/shared": "3.4.27"
} }
}, },
"node_modules/@vue/runtime-dom": { "node_modules/@vue/runtime-dom": {
"version": "3.4.19", "version": "3.4.27",
"resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.19.tgz", "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.27.tgz",
"integrity": "sha512-IyZzIDqfNCF0OyZOauL+F4yzjMPN2rPd8nhqPP2N1lBn3kYqJpPHHru+83Rkvo2lHz5mW+rEeIMEF9qY3PB94g==", "integrity": "sha512-ScOmP70/3NPM+TW9hvVAz6VWWtZJqkbdf7w6ySsws+EsqtHvkhxaWLecrTorFxsawelM5Ys9FnDEMt6BPBDS0Q==",
"dependencies": { "dependencies": {
"@vue/runtime-core": "3.4.19", "@vue/runtime-core": "3.4.27",
"@vue/shared": "3.4.19", "@vue/shared": "3.4.27",
"csstype": "^3.1.3" "csstype": "^3.1.3"
} }
}, },
"node_modules/@vue/server-renderer": { "node_modules/@vue/server-renderer": {
"version": "3.4.19", "version": "3.4.27",
"resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.19.tgz", "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.27.tgz",
"integrity": "sha512-eAj2p0c429RZyyhtMRnttjcSToch+kTWxFPHlzGMkR28ZbF1PDlTcmGmlDxccBuqNd9iOQ7xPRPAGgPVj+YpQw==", "integrity": "sha512-dlAMEuvmeA3rJsOMJ2J1kXU7o7pOxgsNHVr9K8hB3ImIkSuBrIdy0vF66h8gf8Tuinf1TK3mPAz2+2sqyf3KzA==",
"dependencies": { "dependencies": {
"@vue/compiler-ssr": "3.4.19", "@vue/compiler-ssr": "3.4.27",
"@vue/shared": "3.4.19" "@vue/shared": "3.4.27"
}, },
"peerDependencies": { "peerDependencies": {
"vue": "3.4.19" "vue": "3.4.27"
} }
}, },
"node_modules/@vue/shared": { "node_modules/@vue/shared": {
"version": "3.4.19", "version": "3.4.27",
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.19.tgz", "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.27.tgz",
"integrity": "sha512-/KliRRHMF6LoiThEy+4c1Z4KB/gbPrGjWwJR+crg2otgrf/egKzRaCPvJ51S5oetgsgXLfc4Rm5ZgrKHZrtMSw==" "integrity": "sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA=="
}, },
"node_modules/@vuetify/loader-shared": { "node_modules/@vuetify/loader-shared": {
"version": "2.0.1", "version": "2.0.3",
"resolved": "https://registry.npmjs.org/@vuetify/loader-shared/-/loader-shared-2.0.1.tgz", "resolved": "https://registry.npmjs.org/@vuetify/loader-shared/-/loader-shared-2.0.3.tgz",
"integrity": "sha512-zy5/ohEO7RcJaWYu2Xiy8TBEOkTb42XvWvSAJwXAtY8OlwqyGhzzBp9OvMVjLGIuFXumBpXKlsaVIkeN0OWWSw==", "integrity": "sha512-Ss3GC7eJYkp2SF6xVzsT7FAruEmdihmn4OCk2+UocREerlXKWgOKKzTN5PN3ZVN5q05jHHrsNhTuWbhN61Bpdg==",
"devOptional": true, "devOptional": true,
"dependencies": { "dependencies": {
"upath": "^2.0.1" "upath": "^2.0.1"
...@@ -782,12 +819,15 @@ ...@@ -782,12 +819,15 @@
"dev": true "dev": true
}, },
"node_modules/binary-extensions": { "node_modules/binary-extensions": {
"version": "2.2.0", "version": "2.3.0",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
"integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
"devOptional": true, "devOptional": true,
"engines": { "engines": {
"node": ">=8" "node": ">=8"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
} }
}, },
"node_modules/brace-expansion": { "node_modules/brace-expansion": {
...@@ -878,15 +918,20 @@ ...@@ -878,15 +918,20 @@
"node": ">= 8" "node": ">= 8"
} }
}, },
"node_modules/crypto-js": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz",
"integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q=="
},
"node_modules/csstype": { "node_modules/csstype": {
"version": "3.1.3", "version": "3.1.3",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
}, },
"node_modules/dayjs": { "node_modules/dayjs": {
"version": "1.11.10", "version": "1.11.11",
"resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.11.tgz",
"integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==" "integrity": "sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg=="
}, },
"node_modules/debug": { "node_modules/debug": {
"version": "4.3.4", "version": "4.3.4",
...@@ -925,9 +970,9 @@ ...@@ -925,9 +970,9 @@
} }
}, },
"node_modules/esbuild": { "node_modules/esbuild": {
"version": "0.19.12", "version": "0.20.2",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz",
"integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==",
"devOptional": true, "devOptional": true,
"hasInstallScript": true, "hasInstallScript": true,
"bin": { "bin": {
...@@ -937,29 +982,29 @@ ...@@ -937,29 +982,29 @@
"node": ">=12" "node": ">=12"
}, },
"optionalDependencies": { "optionalDependencies": {
"@esbuild/aix-ppc64": "0.19.12", "@esbuild/aix-ppc64": "0.20.2",
"@esbuild/android-arm": "0.19.12", "@esbuild/android-arm": "0.20.2",
"@esbuild/android-arm64": "0.19.12", "@esbuild/android-arm64": "0.20.2",
"@esbuild/android-x64": "0.19.12", "@esbuild/android-x64": "0.20.2",
"@esbuild/darwin-arm64": "0.19.12", "@esbuild/darwin-arm64": "0.20.2",
"@esbuild/darwin-x64": "0.19.12", "@esbuild/darwin-x64": "0.20.2",
"@esbuild/freebsd-arm64": "0.19.12", "@esbuild/freebsd-arm64": "0.20.2",
"@esbuild/freebsd-x64": "0.19.12", "@esbuild/freebsd-x64": "0.20.2",
"@esbuild/linux-arm": "0.19.12", "@esbuild/linux-arm": "0.20.2",
"@esbuild/linux-arm64": "0.19.12", "@esbuild/linux-arm64": "0.20.2",
"@esbuild/linux-ia32": "0.19.12", "@esbuild/linux-ia32": "0.20.2",
"@esbuild/linux-loong64": "0.19.12", "@esbuild/linux-loong64": "0.20.2",
"@esbuild/linux-mips64el": "0.19.12", "@esbuild/linux-mips64el": "0.20.2",
"@esbuild/linux-ppc64": "0.19.12", "@esbuild/linux-ppc64": "0.20.2",
"@esbuild/linux-riscv64": "0.19.12", "@esbuild/linux-riscv64": "0.20.2",
"@esbuild/linux-s390x": "0.19.12", "@esbuild/linux-s390x": "0.20.2",
"@esbuild/linux-x64": "0.19.12", "@esbuild/linux-x64": "0.20.2",
"@esbuild/netbsd-x64": "0.19.12", "@esbuild/netbsd-x64": "0.20.2",
"@esbuild/openbsd-x64": "0.19.12", "@esbuild/openbsd-x64": "0.20.2",
"@esbuild/sunos-x64": "0.19.12", "@esbuild/sunos-x64": "0.20.2",
"@esbuild/win32-arm64": "0.19.12", "@esbuild/win32-arm64": "0.20.2",
"@esbuild/win32-ia32": "0.19.12", "@esbuild/win32-ia32": "0.20.2",
"@esbuild/win32-x64": "0.19.12" "@esbuild/win32-x64": "0.20.2"
} }
}, },
"node_modules/estree-walker": { "node_modules/estree-walker": {
...@@ -1071,9 +1116,9 @@ ...@@ -1071,9 +1116,9 @@
} }
}, },
"node_modules/hasown": { "node_modules/hasown": {
"version": "2.0.1", "version": "2.0.2",
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
"integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"function-bind": "^1.1.2" "function-bind": "^1.1.2"
...@@ -1161,14 +1206,11 @@ ...@@ -1161,14 +1206,11 @@
} }
}, },
"node_modules/magic-string": { "node_modules/magic-string": {
"version": "0.30.7", "version": "0.30.10",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.7.tgz", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz",
"integrity": "sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==", "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==",
"dependencies": { "dependencies": {
"@jridgewell/sourcemap-codec": "^1.4.15" "@jridgewell/sourcemap-codec": "^1.4.15"
},
"engines": {
"node": ">=12"
} }
}, },
"node_modules/merge2": { "node_modules/merge2": {
...@@ -1213,9 +1255,9 @@ ...@@ -1213,9 +1255,9 @@
} }
}, },
"node_modules/minimatch": { "node_modules/minimatch": {
"version": "9.0.3", "version": "9.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
"integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"brace-expansion": "^2.0.1" "brace-expansion": "^2.0.1"
...@@ -1292,9 +1334,9 @@ ...@@ -1292,9 +1334,9 @@
} }
}, },
"node_modules/postcss": { "node_modules/postcss": {
"version": "8.4.35", "version": "8.4.38",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz",
"integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==",
"funding": [ "funding": [
{ {
"type": "opencollective", "type": "opencollective",
...@@ -1312,7 +1354,7 @@ ...@@ -1312,7 +1354,7 @@
"dependencies": { "dependencies": {
"nanoid": "^3.3.7", "nanoid": "^3.3.7",
"picocolors": "^1.0.0", "picocolors": "^1.0.0",
"source-map-js": "^1.0.2" "source-map-js": "^1.2.0"
}, },
"engines": { "engines": {
"node": "^10 || ^12 || >=14" "node": "^10 || ^12 || >=14"
...@@ -1388,9 +1430,9 @@ ...@@ -1388,9 +1430,9 @@
"integrity": "sha512-OlwfYEgA2RdboZohpldlvJ1xngOins5d7ejqnIBWr9KaMxsnBqotpptRXTyfNRLnFpqzX6sTDt+X+a+6udnU8g==" "integrity": "sha512-OlwfYEgA2RdboZohpldlvJ1xngOins5d7ejqnIBWr9KaMxsnBqotpptRXTyfNRLnFpqzX6sTDt+X+a+6udnU8g=="
}, },
"node_modules/rollup": { "node_modules/rollup": {
"version": "4.12.0", "version": "4.17.2",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.12.0.tgz", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.17.2.tgz",
"integrity": "sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q==", "integrity": "sha512-/9ClTJPByC0U4zNLowV1tMBe8yMEAxewtR3cUNX5BoEpGH3dQEWpJLr6CLp0fPdYRF/fzVOgvDb1zXuakwF5kQ==",
"devOptional": true, "devOptional": true,
"dependencies": { "dependencies": {
"@types/estree": "1.0.5" "@types/estree": "1.0.5"
...@@ -1403,19 +1445,22 @@ ...@@ -1403,19 +1445,22 @@
"npm": ">=8.0.0" "npm": ">=8.0.0"
}, },
"optionalDependencies": { "optionalDependencies": {
"@rollup/rollup-android-arm-eabi": "4.12.0", "@rollup/rollup-android-arm-eabi": "4.17.2",
"@rollup/rollup-android-arm64": "4.12.0", "@rollup/rollup-android-arm64": "4.17.2",
"@rollup/rollup-darwin-arm64": "4.12.0", "@rollup/rollup-darwin-arm64": "4.17.2",
"@rollup/rollup-darwin-x64": "4.12.0", "@rollup/rollup-darwin-x64": "4.17.2",
"@rollup/rollup-linux-arm-gnueabihf": "4.12.0", "@rollup/rollup-linux-arm-gnueabihf": "4.17.2",
"@rollup/rollup-linux-arm64-gnu": "4.12.0", "@rollup/rollup-linux-arm-musleabihf": "4.17.2",
"@rollup/rollup-linux-arm64-musl": "4.12.0", "@rollup/rollup-linux-arm64-gnu": "4.17.2",
"@rollup/rollup-linux-riscv64-gnu": "4.12.0", "@rollup/rollup-linux-arm64-musl": "4.17.2",
"@rollup/rollup-linux-x64-gnu": "4.12.0", "@rollup/rollup-linux-powerpc64le-gnu": "4.17.2",
"@rollup/rollup-linux-x64-musl": "4.12.0", "@rollup/rollup-linux-riscv64-gnu": "4.17.2",
"@rollup/rollup-win32-arm64-msvc": "4.12.0", "@rollup/rollup-linux-s390x-gnu": "4.17.2",
"@rollup/rollup-win32-ia32-msvc": "4.12.0", "@rollup/rollup-linux-x64-gnu": "4.17.2",
"@rollup/rollup-win32-x64-msvc": "4.12.0", "@rollup/rollup-linux-x64-musl": "4.17.2",
"@rollup/rollup-win32-arm64-msvc": "4.17.2",
"@rollup/rollup-win32-ia32-msvc": "4.17.2",
"@rollup/rollup-win32-x64-msvc": "4.17.2",
"fsevents": "~2.3.2" "fsevents": "~2.3.2"
} }
}, },
...@@ -1443,9 +1488,9 @@ ...@@ -1443,9 +1488,9 @@
} }
}, },
"node_modules/sass": { "node_modules/sass": {
"version": "1.71.1", "version": "1.77.1",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.71.1.tgz", "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.1.tgz",
"integrity": "sha512-wovtnV2PxzteLlfNzbgm1tFXPLoZILYAMJtvoXXkD7/+1uP41eKkIt1ypWq5/q2uT94qHjXehEYfmjKOvjL9sg==", "integrity": "sha512-OMEyfirt9XEfyvocduUIOlUSkWOXS/LAt6oblR/ISXCTukyavjex+zQNm51pPCOiFKY1QpWvEH1EeCkgyV3I6w==",
"devOptional": true, "devOptional": true,
"dependencies": { "dependencies": {
"chokidar": ">=3.0.0 <4.0.0", "chokidar": ">=3.0.0 <4.0.0",
...@@ -1481,9 +1526,9 @@ ...@@ -1481,9 +1526,9 @@
} }
}, },
"node_modules/source-map-js": { "node_modules/source-map-js": {
"version": "1.0.2", "version": "1.2.0",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
"integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
"engines": { "engines": {
"node": ">=0.10.0" "node": ">=0.10.0"
} }
...@@ -1513,15 +1558,18 @@ ...@@ -1513,15 +1558,18 @@
} }
}, },
"node_modules/unplugin": { "node_modules/unplugin": {
"version": "1.7.1", "version": "1.10.1",
"resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.7.1.tgz", "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.10.1.tgz",
"integrity": "sha512-JqzORDAPxxs8ErLV4x+LL7bk5pk3YlcWqpSNsIkAZj972KzFZLClc/ekppahKkOczGkwIG6ElFgdOgOlK4tXZw==", "integrity": "sha512-d6Mhq8RJeGA8UfKCu54Um4lFA0eSaRa3XxdAJg8tIdxbu1ubW0hBCZUL7yI2uGyYCRndvbK8FLHzqy2XKfeMsg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"acorn": "^8.11.3", "acorn": "^8.11.3",
"chokidar": "^3.5.3", "chokidar": "^3.6.0",
"webpack-sources": "^3.2.3", "webpack-sources": "^3.2.3",
"webpack-virtual-modules": "^0.6.1" "webpack-virtual-modules": "^0.6.1"
},
"engines": {
"node": ">=14.0.0"
} }
}, },
"node_modules/unplugin-fonts": { "node_modules/unplugin-fonts": {
...@@ -1591,14 +1639,14 @@ ...@@ -1591,14 +1639,14 @@
} }
}, },
"node_modules/vite": { "node_modules/vite": {
"version": "5.1.4", "version": "5.2.11",
"resolved": "https://registry.npmjs.org/vite/-/vite-5.1.4.tgz", "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.11.tgz",
"integrity": "sha512-n+MPqzq+d9nMVTKyewqw6kSt+R3CkvF9QAKY8obiQn8g1fwTscKxyfaYnC632HtBXAQGc1Yjomphwn1dtwGAHg==", "integrity": "sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ==",
"devOptional": true, "devOptional": true,
"dependencies": { "dependencies": {
"esbuild": "^0.19.3", "esbuild": "^0.20.1",
"postcss": "^8.4.35", "postcss": "^8.4.38",
"rollup": "^4.2.0" "rollup": "^4.13.0"
}, },
"bin": { "bin": {
"vite": "bin/vite.js" "vite": "bin/vite.js"
...@@ -1646,12 +1694,12 @@ ...@@ -1646,12 +1694,12 @@
} }
}, },
"node_modules/vite-plugin-vuetify": { "node_modules/vite-plugin-vuetify": {
"version": "2.0.1", "version": "2.0.3",
"resolved": "https://registry.npmjs.org/vite-plugin-vuetify/-/vite-plugin-vuetify-2.0.1.tgz", "resolved": "https://registry.npmjs.org/vite-plugin-vuetify/-/vite-plugin-vuetify-2.0.3.tgz",
"integrity": "sha512-GlRVAruohE8b0FqmeYYh1cYg3n8THGOv066uMA44qLv9uhUxSLw55CS7fi2yU0wH363TJ2vq36zUsPTjRFrjGQ==", "integrity": "sha512-HbYajgGgb/noaVKNRhnnXIiQZrNXfNIeanUGAwXgOxL6h/KULS40Uf51Kyz8hNmdegF+DwjgXXI/8J1PNS83xw==",
"devOptional": true, "devOptional": true,
"dependencies": { "dependencies": {
"@vuetify/loader-shared": "^2.0.1", "@vuetify/loader-shared": "^2.0.3",
"debug": "^4.3.3", "debug": "^4.3.3",
"upath": "^2.0.1" "upath": "^2.0.1"
}, },
...@@ -1665,15 +1713,15 @@ ...@@ -1665,15 +1713,15 @@
} }
}, },
"node_modules/vue": { "node_modules/vue": {
"version": "3.4.19", "version": "3.4.27",
"resolved": "https://registry.npmjs.org/vue/-/vue-3.4.19.tgz", "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.27.tgz",
"integrity": "sha512-W/7Fc9KUkajFU8dBeDluM4sRGc/aa4YJnOYck8dkjgZoXtVsn3OeTGni66FV1l3+nvPA7VBFYtPioaGKUmEADw==", "integrity": "sha512-8s/56uK6r01r1icG/aEOHqyMVxd1bkYcSe9j8HcKtr/xTOFWvnzIVTehNW+5Yt89f+DLBe4A569pnZLS5HzAMA==",
"dependencies": { "dependencies": {
"@vue/compiler-dom": "3.4.19", "@vue/compiler-dom": "3.4.27",
"@vue/compiler-sfc": "3.4.19", "@vue/compiler-sfc": "3.4.27",
"@vue/runtime-dom": "3.4.19", "@vue/runtime-dom": "3.4.27",
"@vue/server-renderer": "3.4.19", "@vue/server-renderer": "3.4.27",
"@vue/shared": "3.4.19" "@vue/shared": "3.4.27"
}, },
"peerDependencies": { "peerDependencies": {
"typescript": "*" "typescript": "*"
...@@ -1685,9 +1733,9 @@ ...@@ -1685,9 +1733,9 @@
} }
}, },
"node_modules/vuetify": { "node_modules/vuetify": {
"version": "3.5.9", "version": "3.6.5",
"resolved": "https://registry.npmjs.org/vuetify/-/vuetify-3.5.9.tgz", "resolved": "https://registry.npmjs.org/vuetify/-/vuetify-3.6.5.tgz",
"integrity": "sha512-tA3N2uWZFNSZRFNnXN841x4rWozYXKC0fGW/mJIwcKkQiI0+gmVCETtjF8bnOS7L1s0buWzw94uYTlXQa5AQ4w==", "integrity": "sha512-YrHTM1vb7UllAtfH9tWfTo1wYMjyCSybu4WtXrfMRpMwAaZWgfrMmqD/4Tc+0KqDsDsYMXaYs0nJ6HtdMJZbyA==",
"engines": { "engines": {
"node": "^12.20 || >=14.13" "node": "^12.20 || >=14.13"
}, },
...@@ -1697,10 +1745,10 @@ ...@@ -1697,10 +1745,10 @@
}, },
"peerDependencies": { "peerDependencies": {
"typescript": ">=4.7", "typescript": ">=4.7",
"vite-plugin-vuetify": ">=1.0.0-alpha.12", "vite-plugin-vuetify": ">=1.0.0",
"vue": "^3.3.0", "vue": "^3.3.0",
"vue-i18n": "^9.0.0", "vue-i18n": "^9.0.0",
"webpack-plugin-vuetify": ">=2.0.0-alpha.11" "webpack-plugin-vuetify": ">=2.0.0"
}, },
"peerDependenciesMeta": { "peerDependenciesMeta": {
"typescript": { "typescript": {
......
...@@ -9,10 +9,11 @@ ...@@ -9,10 +9,11 @@
"dependencies": { "dependencies": {
"@mdi/font": "7.0.96", "@mdi/font": "7.0.96",
"axios": "^1.6.8", "axios": "^1.6.8",
"crypto-js": "^4.2.0",
"dayjs": "^1.11.10", "dayjs": "^1.11.10",
"roboto-fontface": "*", "roboto-fontface": "*",
"vue": "^3.3.0", "vue": "^3.3.0",
"vuetify": "^3.5.9" "vuetify": "^3.6.5"
}, },
"devDependencies": { "devDependencies": {
"@vitejs/plugin-vue": "^4.5.0", "@vitejs/plugin-vue": "^4.5.0",
......
/**
* main.js
*
* Bootstraps Vuetify and other plugins then mounts the App`
*/
// Plugins
import { registerPlugins } from '@/plugins'
// Components
import App from './carousel_manage.vue'
// Composables
import { createApp } from 'vue'
const app = createApp(App)
registerPlugins(app)
app.mount('#app')
<template>
<v-app>
<v-data-table :loading="loading" :headers="headers" :items="carousels" item-key="id" :search="search"
:items-per-page="5">
<template v-slot:top>
<v-toolbar flat>
<v-toolbar-title>轮播图管理</v-toolbar-title>
<v-divider class="mx-3" inset vertical></v-divider>
<v-spacer></v-spacer>
<v-text-field v-model="search" append-icon="mdi-magnify" label="搜索" single-line
hide-details></v-text-field>
</v-toolbar>
</template>
<template v-slot:item.carouselid="{ item }">
<p v-if="item.carouselid" style="width:50px">{{ item.carouselid }}</p>
</template>
<template v-slot:item.carousel="{ item }">
<div style="width:50px">
<img v-if="item.src" :src="item.src" class="carousel-size"></img>
</div>
</template>
<template v-slot:item.link="{ item }">
<span v-if="item.link" class="overflow-x-auto"
style="width:80px;white-space: nowrap;display: inline-block;">{{ item.link }}</span>
</template>
<template v-slot:item.actions="{ item }">
<v-icon @click="editCarousel(item)" style="width:50px">mdi-pencil</v-icon>
</template>
<template v-slot:item.delete="{ item }">
<v-icon color="red" @click="editDeleteCarousel(item)" style="width:50px">mdi-trash-can</v-icon>
</template>
</v-data-table>
<div><v-btn style="width: 100px;margin-right: 10px;" class="float-right" variant="text" color="indigo"
prepend-icon="mdi-file-upload" @click="upload_dialog = true" text="新增轮播图"></v-btn></div>
</v-app>
<v-dialog v-model="dialog" width="auto">
<v-card width="300px">
<v-card-title>
编辑轮播图
</v-card-title>
<v-card-text>
<v-file-input show-size accept="image/*" id="carouselInput" label="上传轮播图" variant="filled"
color="indigo" prepend-icon=""></v-file-input>
<v-text-field v-model="selectCarousel.link" variant="filled" color="indigo" label="链接"></v-text-field>
</v-card-text>
<template v-slot:actions>
<v-spacer></v-spacer>
<v-btn class="ms-auto" color="indigo" text="取消" @click="dialog = false"></v-btn>
<v-btn :loading="carouselLoading" class="ms-auto" color="indigo" text="确定"
@click="changeCarousel"></v-btn>
</template>
</v-card>
</v-dialog>
<v-dialog v-model="upload_dialog" width="auto">
<v-card width="300px">
<v-card-title>
新增轮播图
</v-card-title>
<v-card-text>
<v-file-input show-size accept="image/*" id="newCarouselInput" label="上传轮播图" variant="filled"
color="indigo" prepend-icon=""></v-file-input>
<v-text-field v-model="upUrl" variant="filled" color="indigo" label="链接"></v-text-field>
</v-card-text>
<template v-slot:actions>
<v-spacer></v-spacer>
<v-btn class="ms-auto" color="indigo" text="取消" @click="upload_dialog = false"></v-btn>
<v-btn :loading="carouselLoading" class="ms-auto" color="indigo" text="确定"
@click="uploadCarousel"></v-btn>
</template>
</v-card>
</v-dialog>
<v-dialog v-model="dialog1" width="auto">
<v-card width="300px">
<v-card-title>
{{ cardtitle }}
</v-card-title>
<v-card-text>
{{ cardtext }}
</v-card-text>
<template v-slot:actions>
<v-btn class="ms-auto" variant="flat" color="indigo" text="确认" @click="dialog1 = false"></v-btn>
</template>
</v-card>
</v-dialog>
<v-dialog v-model="delete_dialog" width="auto">
<v-card width="300px">
<v-card-title>
确认删除该轮播图?
</v-card-title>
<template v-slot:actions>
<v-spacer></v-spacer>
<v-btn class="ms-auto" color="indigo" text="取消" @click="delete_dialog = false"></v-btn>
<v-btn class="ms-auto" :loading="carouselLoading" color="indigo" text="确定"
@click="deleteCarousel"></v-btn>
</template>
</v-card>
</v-dialog>
</template>
<script setup>
import { ref } from 'vue';
import { reactive } from 'vue';
import axios from 'axios';
const search = ref('');
// const actions_text = ref('');
const headers = reactive([
{ title: 'ID', key: 'carouselid' },
{ title: '图片', key: 'carousel' },
{ title: '链接', key: 'link' },
{ title: '编辑', key: 'actions' },
{ title: '删除', key: 'delete' },
]);
const delete_dialog = ref(false);
const loading = ref(true);
const carouselLoading = ref(false);
const upload_dialog = ref(false);
const upUrl = ref('');
const carousels = ref(new Array());
const dialog = ref(false);
const selectCarousel = ref({
carouselid: 0,
src: '',
link: '',
});
const cardtitle = ref(null);
const cardtext = ref(null);
const dialog1 = ref(false);
function info(title, text) {
cardtitle.value = title;
cardtext.value = text;
dialog1.value = true;
}
function refresh() {
loading.value = true;
axios.get('/api/getCarousel')
.then(function (response) {
const data = response.data;
carousels.value.length = 0;
for (var i = 0; i < data.Carousels_info.length; i++) {
const carousel = ref({
carouselid: data.Carousels_info[i].carouselid,
src: data.Carousels_info[i].src,
link: data.Carousels_info[i].link,
})
carousels.value[i] = carousel;
}
})
.catch(function (error) {
console.log(error);
})
loading.value = false;
}
refresh();
function editCarousel(item) {
dialog.value = true;
selectCarousel.value = item;
}
function editDeleteCarousel(item) {
delete_dialog.value = true;
selectCarousel.value = item;
}
function changeCarousel() {
carouselLoading.value = true;
const fileInput = document.querySelector('#carouselInput');
const file = fileInput.files[0];
if (file) {
const formData = new FormData();
formData.append('carousel_files', file);
formData.append('carousel_link', selectCarousel.value.link);
formData.append('carousel_id', String(selectCarousel.value.carouselid));
formData.append('carousel_actions', '2');
axios.post('/api/upCarousel', formData, {
headers: {
'Content-Type': 'multipart/form-data'
}
}).then(response => {
refresh();
console.log('上传成功', response.data);
}).catch(error => {
info("轮播图需小于10MB", "");
console.error('上传失败', error);
});
}
if (!file) {
const formData = new FormData();
formData.append('carousel_id', String(selectCarousel.value.carouselid));
formData.append('carousel_link', selectCarousel.value.link);
formData.append('carousel_actions', '2');
axios.post('/api/upCarousel', formData, {
headers: {
'Content-Type': 'multipart/form-data'
}
}).then(response => {
refresh();
console.log('上传成功', response.data);
}).catch(error => {
console.error('上传失败', error);
});
}
// 使用FormData对象上传文件
// const formData = new FormData();
// formData.append('carousel_files', file);
// formData.append('carousel_link', selectCarousel.value.link);
// formData.append('carousel_id', String(selectCarousel.value.carouselid));
// formData.append('carousel_actions', '2');
// axios.post('/api/upCarousel', formData, {
// headers: {
// 'Content-Type': 'multipart/form-data'
// }
// }).then(response => {
// info("上传成功", "");
// refresh();
// console.log('上传成功', response.data);
// }).catch(error => {
// info("轮播图需小于10MB", "");
// console.error('上传失败', error);
// });
dialog.value = false;
carouselLoading.value = false;
}
function deleteCarousel() {
carouselLoading.value = true;
const delete_data = new FormData();
delete_data.append("carousel_id", String(selectCarousel.value.carouselid));
delete_data.append("carousel_actions", "1");
axios.post('/api/upCarousel', delete_data, {
headers: {
'Content-Type': 'multipart/form-data'
}
}).then(function (response) {
if (response.data.status === "SUCCESS") {
console.log("success");
}
refresh();
})
.catch(function (error) {
console.log(error);
}
);
delete_dialog.value = false;
carouselLoading.value = false;
}
function uploadCarousel() {
carouselLoading.value = true;
const newfileInput = document.querySelector('#newCarouselInput');
const newfile = newfileInput.files[0];
// 使用FormData对象上传文件
if (newfile) {
const newformData = new FormData();
newformData.append('carousel_files', newfile);
newformData.append('carousel_link', upUrl.value);
newformData.append('carousel_actions', '3');
axios.post('/api/upCarousel', newformData, {
headers: {
'Content-Type': 'multipart/form-data'
}
}).then(response => {
refresh();
console.log('上传成功', response.data);
}).catch(error => {
info("轮播图需小于10MB", "");
console.error('上传失败', error);
});
}
if (!newfile) {
info("轮播图不能为空", "");
}
upload_dialog.value = false;
carouselLoading.value = false;
}
</script>
<style>
.carousel-size {
object-fit: cover;
width: 100%;
height: 100%;
}
</style>
\ No newline at end of file
...@@ -80,16 +80,17 @@ ...@@ -80,16 +80,17 @@
</v-dialog> </v-dialog>
<div> <div>
<v-card v-if="exist_season" class="mx-auto my-2" href="/lauched_games.html" width="95%" rel="noopener" target="_blank" title="已提交比赛" <v-card v-if="exist_season" class="mx-auto my-2" href="/lauched_games.html" width="95%" rel="noopener"
append-icon="mdi-chevron-right"></v-card> target="_blank" title="已提交比赛" append-icon="mdi-chevron-right"></v-card>
<v-card v-if="exist_season" class="mx-auto my-2" href="/audit_games.html" width="95%" rel="noopener" target="_blank" title="待审核比赛"> <v-card v-if="exist_season" class="mx-auto my-2" href="/audit_games.html" width="95%" rel="noopener" target="_blank"
title="待审核比赛">
<template v-slot:append> <template v-slot:append>
<v-icon v-if="unaudit_number === 0">mdi-chevron-right</v-icon> <v-icon v-if="unaudit_number === 0">mdi-chevron-right</v-icon>
<v-badge v-if="unaudit_number !== 0" color="error" :content="unaudit_number" inline></v-badge> <v-badge v-if="unaudit_number !== 0" color="error" :content="unaudit_number" inline></v-badge>
</template> </template>
</v-card> </v-card>
<v-card v-if="exist_season" class="mx-auto my-2" href="/score_ranking.html" width="95%" rel="noopener" target="_blank" title="球员积分榜单" <v-card v-if="exist_season" class="mx-auto my-2" href="/score_ranking.html" width="95%" rel="noopener"
append-icon="mdi-chevron-right"></v-card> target="_blank" title="球员积分榜单" append-icon="mdi-chevron-right"></v-card>
<v-card class="mx-auto my-2" href="/my_recentgames.html" width="95%" rel="noopener" target="_blank" title="比赛列表" <v-card class="mx-auto my-2" href="/my_recentgames.html" width="95%" rel="noopener" target="_blank" title="比赛列表"
append-icon="mdi-chevron-right"></v-card> append-icon="mdi-chevron-right"></v-card>
</div> </div>
...@@ -161,31 +162,40 @@ watch(score2, (newVal, oldVal) => { ...@@ -161,31 +162,40 @@ watch(score2, (newVal, oldVal) => {
form.value.validate(); // 触发表单验证 form.value.validate(); // 触发表单验证
} }
}); });
function refresh() {
axios.get('/api/players',{ axios.get('/api/players', {
params:{ params: {
lim: 1000, lim: 1000,
}
})
.then(function (response) {
const data = response.data;
exist_season.value = data.ExistSeason;
for (var i = 0; i < data.Players.length; i++) {
arr.value[i] = data.Players[i].player_id.toString() + '-' + data.Players[i].player_real_name;
} }
}) })
.catch(function (error) { .then(function (response) {
console.log(error); const data = response.data;
}) exist_season.value = data.ExistSeason;
for (var i = 0; i < data.Players.length; i++) {
arr.value[i] = data.Players[i].player_id.toString() + '-' + data.Players[i].player_real_name;
}
})
.catch(function (error) {
console.log(error);
})
axios.get('/api/lauchedGames',) axios.get('/api/lauchedGames',)
.then(function (response) { .then(function (response) {
const data1 = response.data; const data1 = response.data;
unaudit_number.value = data1.Games.length; unaudit_number.value = data1.Games.length;
}) })
.catch(function (error) { .catch(function (error) {
console.log(error); console.log(error);
}) })
}
refresh();
const clickGame_model = defineModel();
watch(clickGame_model, (newVal, oldVal) => {
if (newVal !== oldVal) {
refresh();
}
});
function submit() { function submit() {
loading.value = true; loading.value = true;
......
...@@ -2,7 +2,8 @@ ...@@ -2,7 +2,8 @@
<v-card class="relative1" style="height: 200px;" elevation="5"> <v-card class="relative1" style="height: 200px;" elevation="5">
<v-carousel :show-arrows="false" style="height: 100%;width: 100%;" cycle interval="2000" hide-delimiter-background> <v-carousel :show-arrows="false" style="height: 100%;width: 100%;" cycle interval="2000" hide-delimiter-background>
<v-carousel-item v-for="(img, i) in imgs" :key="i" cover> <v-carousel-item v-for="(img, i) in imgs" :key="i" cover>
<img :src="img.src" class="tupian"> <a :href="img.link"><img :src="img.src" class="tupian"></a>
</v-carousel-item> </v-carousel-item>
</v-carousel> </v-carousel>
</v-card> </v-card>
...@@ -239,25 +240,26 @@ ...@@ -239,25 +240,26 @@
<script setup> <script setup>
import { ref } from 'vue'; import { ref, watch } from 'vue';
import { reactive } from 'vue'; import { reactive } from 'vue';
import axios from 'axios'; import axios from 'axios';
const imgs = reactive([ // const imgs = reactive([
{ // {
src: 'https://cdn.vuetifyjs.com/images/carousel/squirrel.jpg', // src: 'https://cdn.vuetifyjs.com/images/carousel/squirrel.jpg',
}, // },
{ // {
src: 'https://cdn.vuetifyjs.com/images/carousel/sky.jpg', // src: 'https://cdn.vuetifyjs.com/images/carousel/sky.jpg',
}, // },
{ // {
src: 'https://cdn.vuetifyjs.com/images/carousel/bird.jpg', // src: 'https://cdn.vuetifyjs.com/images/carousel/bird.jpg',
}, // },
{ // {
src: 'https://cdn.vuetifyjs.com/images/carousel/planet.jpg', // src: 'https://cdn.vuetifyjs.com/images/carousel/planet.jpg',
}, // },
] // ]
); // );
const imgs = ref(new Array());
const items = ref(new Array()); const items = ref(new Array());
const group1 = ref(new Array()); const group1 = ref(new Array());
const group2 = ref(new Array()); const group2 = ref(new Array());
...@@ -315,6 +317,21 @@ function formatYear(date) { ...@@ -315,6 +317,21 @@ function formatYear(date) {
} }
function refresh() { function refresh() {
axios.get('/api/getCarousel')
.then(function(response){
const data7 = response.data;
imgs.value.length = 0;
for(var i = 0; i < data7.Carousels_info.length; i++){
var carousel_img = {
src: data7.Carousels_info[i].src,
link: data7.Carousels_info[i].link,
}
imgs.value[i] = carousel_img;
}
})
.catch(function(error){
console.log(error);
})
axios.get('/api/mySeasonInfo',) axios.get('/api/mySeasonInfo',)
.then(function (response) { .then(function (response) {
const data4 = response.data; const data4 = response.data;
...@@ -450,6 +467,13 @@ function refresh() { ...@@ -450,6 +467,13 @@ function refresh() {
refresh(); refresh();
const clickHome_model = defineModel();
watch(clickHome_model, (newVal, oldVal) => {
if (newVal !== oldVal) {
refresh();
}
});
const cardtitle = ref(null); const cardtitle = ref(null);
const cardtext = ref(null); const cardtext = ref(null);
const dialog1 = ref(false); const dialog1 = ref(false);
......
...@@ -47,6 +47,7 @@ ...@@ -47,6 +47,7 @@
import { ref } from 'vue'; import { ref } from 'vue';
import { reactive } from 'vue'; import { reactive } from 'vue';
import axios from 'axios'; import axios from 'axios';
import CryptoJS from 'crypto-js';
const form = ref(null); const form = ref(null);
const rules = reactive({ const rules = reactive({
...@@ -75,11 +76,16 @@ function info(title, text) { ...@@ -75,11 +76,16 @@ function info(title, text) {
dialog.value = true; dialog.value = true;
} }
function md5Hash(password) {
return CryptoJS.MD5(password).toString();
}
function login() { function login() {
loading.value = true; loading.value = true;
const hashedPassword = md5Hash(password.value); // 使用MD5进行前端哈希处理
axios.post('/api/login', { axios.post('/api/login', {
usrname: usrname.value, usrname: usrname.value,
psword: password.value psword: hashedPassword,
}) })
.then(function (response) { .then(function (response) {
const data = response.data; const data = response.data;
......
...@@ -56,6 +56,14 @@ ...@@ -56,6 +56,14 @@
> >
<v-list-item-title class="text-h6">比赛管理</v-list-item-title> <v-list-item-title class="text-h6">比赛管理</v-list-item-title>
</v-list-item> </v-list-item>
<v-list-item
color="primary"
href="/carousel_manage.html"
height="60px"
appendIcon = "mdi-chevron-right"
>
<v-list-item-title class="text-h6">轮播图管理</v-list-item-title>
</v-list-item>
</v-list> </v-list>
</v-card> </v-card>
<!-- <div class="text-h4 headline"> <!-- <div class="text-h4 headline">
......
...@@ -30,6 +30,7 @@ ...@@ -30,6 +30,7 @@
import { ref } from 'vue'; import { ref } from 'vue';
import { reactive } from 'vue'; import { reactive } from 'vue';
import { watch } from 'vue'; import { watch } from 'vue';
import CryptoJS from 'crypto-js';
import axios from 'axios'; import axios from 'axios';
const usrname = ref(null); const usrname = ref(null);
...@@ -58,11 +59,16 @@ watch(password, (newVal, oldVal) => { ...@@ -58,11 +59,16 @@ watch(password, (newVal, oldVal) => {
} }
}); });
function md5Hash(password) {
return CryptoJS.MD5(password).toString();
}
function register() { function register() {
loading.value = true; loading.value = true;
const hashedPassword = md5Hash(password.value); // 使用MD5进行前端哈希处理
axios.post('/api/register', { axios.post('/api/register', {
usrname: usrname.value, usrname: usrname.value,
psword: password.value psword: hashedPassword,
}) })
.then(function (response) { .then(function (response) {
const data = response.data; const data = response.data;
......
...@@ -242,7 +242,7 @@ ...@@ -242,7 +242,7 @@
</template> </template>
<script setup> <script setup>
import { ref } from 'vue'; import { ref, watch } from 'vue';
import { reactive } from 'vue'; import { reactive } from 'vue';
import axios from 'axios'; import axios from 'axios';
...@@ -457,6 +457,12 @@ function refresh() { ...@@ -457,6 +457,12 @@ function refresh() {
refresh(); refresh();
const clickMy_model = defineModel();
watch(clickMy_model, (newVal, oldVal) => {
if (newVal !== oldVal) {
refresh();
}
});
function button1() { function button1() {
if (players_id !== 0) { if (players_id !== 0) {
......
...@@ -2,13 +2,13 @@ ...@@ -2,13 +2,13 @@
<div class="w-auto"> <div class="w-auto">
<v-window v-model="tab" class="h-screen w-auto"> <v-window v-model="tab" class="h-screen w-auto">
<v-window-item :key="1" :value="'tab-1'" class="h-screen w-100 bottom-navigation"> <v-window-item :key="1" :value="'tab-1'" class="h-screen w-100 bottom-navigation">
<Home></Home> <Home v-model="home_click"></Home>
</v-window-item> </v-window-item>
<v-window-item :key="2" :value="'tab-2'" class="h-screen w-100 bottom-navigation"> <v-window-item :key="2" :value="'tab-2'" class="h-screen w-100 bottom-navigation">
<Gamemanage></Gamemanage> <Gamemanage v-model="game_click"></Gamemanage>
</v-window-item> </v-window-item>
<v-window-item :key="3" :value="'tab-3'" class="h-screen w-100 bottom-navigation"> <v-window-item :key="3" :value="'tab-3'" class="h-screen w-100 bottom-navigation">
<Space></Space> <Space v-model="my_click"></Space>
</v-window-item> </v-window-item>
<v-window-item :key="4" :value="'tab-4'" class="h-screen w-100 bottom-navigation"> <v-window-item :key="4" :value="'tab-4'" class="h-screen w-100 bottom-navigation">
<Manage></Manage> <Manage></Manage>
...@@ -17,12 +17,12 @@ ...@@ -17,12 +17,12 @@
<v-layout class="tabs"> <v-layout class="tabs">
<v-bottom-navigation v-model="tab" color="indigo" align-tabs="center" stacked grow> <v-bottom-navigation v-model="tab" color="indigo" align-tabs="center" stacked grow>
<v-btn value="tab-1"> <v-btn value="tab-1" @click="homeClick">
<v-icon>mdi-home</v-icon> <v-icon>mdi-home</v-icon>
首页 首页
</v-btn> </v-btn>
<v-btn value="tab-2"> <v-btn value="tab-2" @click="gameClick">
<v-badge color="error" dot v-if="unaudit_number !== 0"> <v-badge color="error" dot v-if="unaudit_number !== 0">
<v-icon>mdi-table-tennis</v-icon> <v-icon>mdi-table-tennis</v-icon>
</v-badge> </v-badge>
...@@ -30,12 +30,12 @@ ...@@ -30,12 +30,12 @@
比赛 比赛
</v-btn> </v-btn>
<v-btn value="tab-3"> <v-btn value="tab-3" @click="myClick">
<v-icon>mdi-account</v-icon> <v-icon>mdi-account</v-icon>
我的 我的
</v-btn> </v-btn>
<v-btn v-if="is_su" value="tab-4"> <v-btn v-if="is_su" value="tab-4" @click="manageClick">
<v-icon>mdi-account-cog</v-icon> <v-icon>mdi-account-cog</v-icon>
管理 管理
</v-btn> </v-btn>
...@@ -53,28 +53,72 @@ import Home from './components/home.vue'; ...@@ -53,28 +53,72 @@ import Home from './components/home.vue';
import Manage from './components/manage.vue'; import Manage from './components/manage.vue';
import axios from 'axios'; import axios from 'axios';
const tab = ref(null); const tab = ref("tab-1");
const is_su = ref(false); const is_su = ref(false);
const is_member = ref(false);
const unaudit_number = ref(0); const unaudit_number = ref(0);
const home_click = ref(true);
const game_click = ref(true);
const my_click = ref(true);
axios.get('/api/currentUser') function refresh() {
.then(function (response) { axios.get('/api/currentUser')
const data = response.data; .then(function (response) {
is_su.value = data.is_su; const data = response.data;
}) if (data.status === "SUCCESS") {
.catch(function (error) { is_su.value = data.is_su;
console.log(error); is_member.value = data.is_member;
}) }
if (data.status === "LOGOUT") {
axios.get('/api/lauchedGames',) window.location.href = '/index.html';
.then(function (response) { }
const data1 = response.data; })
unaudit_number.value = data1.Games.length; // .then(function(response){
}) // const data2 = response.data;
.catch(function (error) { // if (data2.status === "LOGOUT"){
console.log(error); // window.location.href = '/index.html';
}) // }
// if (!is_member.value){
// window.location.href = '/index.html';
// }
// }
// )
.catch(function (error) {
console.log(error);
})
axios.get('/api/lauchedGames',)
.then(function (response) {
const data1 = response.data;
unaudit_number.value = data1.Games.length;
})
.catch(function (error) {
console.log(error);
})
}
refresh();
function homeClick() {
home_click.value = !home_click.value;
tab.value = "tab-1"
}
function gameClick() {
game_click.value = !game_click.value;
tab.value = "tab-2"
}
function myClick() {
my_click.value = !my_click.value;
tab.value = "tab-3"
}
function manageClick() {
tab.value = "tab-4"
}
</script> </script>
<style> <style>
......
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
color="indigo" text="重启赛季"></v-btn> color="indigo" text="重启赛季"></v-btn>
</template> </template>
</v-data-table> </v-data-table>
<div><v-btn style="width: 100px;" class="float-right" variant="text" color="indigo" <div><v-btn style="width: 100px;margin-right: 10px;" class="float-right" variant="text" color="indigo"
prepend-icon="mdi-scoreboard" @click="dialog = true" text="开启赛季"></v-btn></div> prepend-icon="mdi-scoreboard" @click="dialog = true" text="开启赛季"></v-btn></div>
</v-app> </v-app>
<v-dialog v-model="dialog" width="auto"> <v-dialog v-model="dialog" width="auto">
......
...@@ -67,6 +67,7 @@ export default defineConfig({ ...@@ -67,6 +67,7 @@ export default defineConfig({
player_manage: resolve(__dirname, 'player_manage.html'), player_manage: resolve(__dirname, 'player_manage.html'),
game_manage: resolve(__dirname, 'game_manage.html'), game_manage: resolve(__dirname, 'game_manage.html'),
past_seasons: resolve(__dirname, 'past_seasons.html'), past_seasons: resolve(__dirname, 'past_seasons.html'),
carousel_manage: resolve(__dirname, 'carousel_manage.html'),
} }
}, },
}, },
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment