Merge branch 'feature/ldb_build' of ai-team/lingji-work-fe into master
@ -4,7 +4,7 @@
|
|||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<link rel="icon" href="/favicon.ico" />
|
<link rel="icon" href="/favicon.ico" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<title>Vite App</title>
|
<title>灵机AI营销平台</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="app"></div>
|
<div id="app"></div>
|
||||||
|
|||||||
387
package-lock.json
generated
@ -19,6 +19,7 @@
|
|||||||
"mitt": "^3.0.0",
|
"mitt": "^3.0.0",
|
||||||
"normalize.css": "^8.0.1",
|
"normalize.css": "^8.0.1",
|
||||||
"pinia": "^2.0.29",
|
"pinia": "^2.0.29",
|
||||||
|
"sass": "^1.89.2",
|
||||||
"swiper": "^11.2.8",
|
"swiper": "^11.2.8",
|
||||||
"vue": "^3.2.45",
|
"vue": "^3.2.45",
|
||||||
"vue-echarts": "^7.0.3",
|
"vue-echarts": "^7.0.3",
|
||||||
@ -1449,6 +1450,302 @@
|
|||||||
"node": "^14.18.0 || ^16.10.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
|
"node": "^14.18.0 || ^16.10.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@parcel/watcher": {
|
||||||
|
"version": "2.5.1",
|
||||||
|
"resolved": "https://registry.npmmirror.com/@parcel/watcher/-/watcher-2.5.1.tgz",
|
||||||
|
"integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==",
|
||||||
|
"hasInstallScript": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"dependencies": {
|
||||||
|
"detect-libc": "^1.0.3",
|
||||||
|
"is-glob": "^4.0.3",
|
||||||
|
"micromatch": "^4.0.5",
|
||||||
|
"node-addon-api": "^7.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 10.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/parcel"
|
||||||
|
},
|
||||||
|
"optionalDependencies": {
|
||||||
|
"@parcel/watcher-android-arm64": "2.5.1",
|
||||||
|
"@parcel/watcher-darwin-arm64": "2.5.1",
|
||||||
|
"@parcel/watcher-darwin-x64": "2.5.1",
|
||||||
|
"@parcel/watcher-freebsd-x64": "2.5.1",
|
||||||
|
"@parcel/watcher-linux-arm-glibc": "2.5.1",
|
||||||
|
"@parcel/watcher-linux-arm-musl": "2.5.1",
|
||||||
|
"@parcel/watcher-linux-arm64-glibc": "2.5.1",
|
||||||
|
"@parcel/watcher-linux-arm64-musl": "2.5.1",
|
||||||
|
"@parcel/watcher-linux-x64-glibc": "2.5.1",
|
||||||
|
"@parcel/watcher-linux-x64-musl": "2.5.1",
|
||||||
|
"@parcel/watcher-win32-arm64": "2.5.1",
|
||||||
|
"@parcel/watcher-win32-ia32": "2.5.1",
|
||||||
|
"@parcel/watcher-win32-x64": "2.5.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@parcel/watcher-android-arm64": {
|
||||||
|
"version": "2.5.1",
|
||||||
|
"resolved": "https://registry.npmmirror.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz",
|
||||||
|
"integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"android"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 10.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/parcel"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@parcel/watcher-darwin-arm64": {
|
||||||
|
"version": "2.5.1",
|
||||||
|
"resolved": "https://registry.npmmirror.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz",
|
||||||
|
"integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"darwin"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 10.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/parcel"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@parcel/watcher-darwin-x64": {
|
||||||
|
"version": "2.5.1",
|
||||||
|
"resolved": "https://registry.npmmirror.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz",
|
||||||
|
"integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"darwin"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 10.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/parcel"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@parcel/watcher-freebsd-x64": {
|
||||||
|
"version": "2.5.1",
|
||||||
|
"resolved": "https://registry.npmmirror.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz",
|
||||||
|
"integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"freebsd"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 10.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/parcel"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@parcel/watcher-linux-arm-glibc": {
|
||||||
|
"version": "2.5.1",
|
||||||
|
"resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz",
|
||||||
|
"integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==",
|
||||||
|
"cpu": [
|
||||||
|
"arm"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 10.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/parcel"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@parcel/watcher-linux-arm-musl": {
|
||||||
|
"version": "2.5.1",
|
||||||
|
"resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz",
|
||||||
|
"integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==",
|
||||||
|
"cpu": [
|
||||||
|
"arm"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 10.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/parcel"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@parcel/watcher-linux-arm64-glibc": {
|
||||||
|
"version": "2.5.1",
|
||||||
|
"resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz",
|
||||||
|
"integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 10.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/parcel"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@parcel/watcher-linux-arm64-musl": {
|
||||||
|
"version": "2.5.1",
|
||||||
|
"resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz",
|
||||||
|
"integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 10.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/parcel"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@parcel/watcher-linux-x64-glibc": {
|
||||||
|
"version": "2.5.1",
|
||||||
|
"resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz",
|
||||||
|
"integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 10.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/parcel"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@parcel/watcher-linux-x64-musl": {
|
||||||
|
"version": "2.5.1",
|
||||||
|
"resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz",
|
||||||
|
"integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 10.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/parcel"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@parcel/watcher-win32-arm64": {
|
||||||
|
"version": "2.5.1",
|
||||||
|
"resolved": "https://registry.npmmirror.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz",
|
||||||
|
"integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"win32"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 10.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/parcel"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@parcel/watcher-win32-ia32": {
|
||||||
|
"version": "2.5.1",
|
||||||
|
"resolved": "https://registry.npmmirror.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz",
|
||||||
|
"integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==",
|
||||||
|
"cpu": [
|
||||||
|
"ia32"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"win32"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 10.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/parcel"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@parcel/watcher-win32-x64": {
|
||||||
|
"version": "2.5.1",
|
||||||
|
"resolved": "https://registry.npmmirror.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz",
|
||||||
|
"integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"win32"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 10.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/parcel"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@polka/url": {
|
"node_modules/@polka/url": {
|
||||||
"version": "1.0.0-next.21",
|
"version": "1.0.0-next.21",
|
||||||
"resolved": "https://registry.npmmirror.com/@polka/url/-/url-1.0.0-next.21.tgz",
|
"resolved": "https://registry.npmmirror.com/@polka/url/-/url-1.0.0-next.21.tgz",
|
||||||
@ -2800,7 +3097,7 @@
|
|||||||
"version": "3.0.2",
|
"version": "3.0.2",
|
||||||
"resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz",
|
"resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz",
|
||||||
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
|
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
|
||||||
"dev": true,
|
"devOptional": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"fill-range": "^7.0.1"
|
"fill-range": "^7.0.1"
|
||||||
},
|
},
|
||||||
@ -3303,6 +3600,19 @@
|
|||||||
"npm": "1.2.8000 || >= 1.4.16"
|
"npm": "1.2.8000 || >= 1.4.16"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/detect-libc": {
|
||||||
|
"version": "1.0.3",
|
||||||
|
"resolved": "https://registry.npmmirror.com/detect-libc/-/detect-libc-1.0.3.tgz",
|
||||||
|
"integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==",
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"optional": true,
|
||||||
|
"bin": {
|
||||||
|
"detect-libc": "bin/detect-libc.js"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.10"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/digest-header": {
|
"node_modules/digest-header": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/digest-header/-/digest-header-1.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/digest-header/-/digest-header-1.0.0.tgz",
|
||||||
@ -4225,7 +4535,7 @@
|
|||||||
"version": "7.0.1",
|
"version": "7.0.1",
|
||||||
"resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz",
|
"resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz",
|
||||||
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
|
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
|
||||||
"dev": true,
|
"devOptional": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"to-regex-range": "^5.0.1"
|
"to-regex-range": "^5.0.1"
|
||||||
},
|
},
|
||||||
@ -4912,6 +5222,12 @@
|
|||||||
"node": ">=0.10.0"
|
"node": ">=0.10.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/immutable": {
|
||||||
|
"version": "5.1.3",
|
||||||
|
"resolved": "https://registry.npmmirror.com/immutable/-/immutable-5.1.3.tgz",
|
||||||
|
"integrity": "sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
"node_modules/import-fresh": {
|
"node_modules/import-fresh": {
|
||||||
"version": "3.3.0",
|
"version": "3.3.0",
|
||||||
"resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz",
|
"resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz",
|
||||||
@ -5085,7 +5401,7 @@
|
|||||||
"version": "2.1.1",
|
"version": "2.1.1",
|
||||||
"resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz",
|
"resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz",
|
||||||
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
|
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
|
||||||
"dev": true,
|
"devOptional": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=0.10.0"
|
"node": ">=0.10.0"
|
||||||
}
|
}
|
||||||
@ -5103,7 +5419,7 @@
|
|||||||
"version": "4.0.3",
|
"version": "4.0.3",
|
||||||
"resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz",
|
"resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz",
|
||||||
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
|
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
|
||||||
"dev": true,
|
"devOptional": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"is-extglob": "^2.1.1"
|
"is-extglob": "^2.1.1"
|
||||||
},
|
},
|
||||||
@ -5124,7 +5440,7 @@
|
|||||||
"version": "7.0.0",
|
"version": "7.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz",
|
||||||
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
|
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
|
||||||
"dev": true,
|
"devOptional": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=0.12.0"
|
"node": ">=0.12.0"
|
||||||
}
|
}
|
||||||
@ -5893,7 +6209,7 @@
|
|||||||
"version": "4.0.5",
|
"version": "4.0.5",
|
||||||
"resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz",
|
"resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz",
|
||||||
"integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
|
"integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
|
||||||
"dev": true,
|
"devOptional": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"braces": "^3.0.2",
|
"braces": "^3.0.2",
|
||||||
"picomatch": "^2.3.1"
|
"picomatch": "^2.3.1"
|
||||||
@ -6169,6 +6485,13 @@
|
|||||||
"integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
|
"integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"node_modules/node-addon-api": {
|
||||||
|
"version": "7.1.1",
|
||||||
|
"resolved": "https://registry.npmmirror.com/node-addon-api/-/node-addon-api-7.1.1.tgz",
|
||||||
|
"integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==",
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
"node_modules/node-fetch-native": {
|
"node_modules/node-fetch-native": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmmirror.com/node-fetch-native/-/node-fetch-native-1.0.2.tgz",
|
"resolved": "https://registry.npmmirror.com/node-fetch-native/-/node-fetch-native-1.0.2.tgz",
|
||||||
@ -6663,7 +6986,7 @@
|
|||||||
"version": "2.3.1",
|
"version": "2.3.1",
|
||||||
"resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz",
|
"resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz",
|
||||||
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
|
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
|
||||||
"dev": true,
|
"devOptional": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=8.6"
|
"node": ">=8.6"
|
||||||
}
|
}
|
||||||
@ -7206,6 +7529,54 @@
|
|||||||
"resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz",
|
"resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz",
|
||||||
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
|
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
|
||||||
},
|
},
|
||||||
|
"node_modules/sass": {
|
||||||
|
"version": "1.89.2",
|
||||||
|
"resolved": "https://registry.npmmirror.com/sass/-/sass-1.89.2.tgz",
|
||||||
|
"integrity": "sha512-xCmtksBKd/jdJ9Bt9p7nPKiuqrlBMBuuGkQlkhZjjQk3Ty48lv93k5Dq6OPkKt4XwxDJ7tvlfrTa1MPA9bf+QA==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"chokidar": "^4.0.0",
|
||||||
|
"immutable": "^5.0.2",
|
||||||
|
"source-map-js": ">=0.6.2 <2.0.0"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"sass": "sass.js"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14.0.0"
|
||||||
|
},
|
||||||
|
"optionalDependencies": {
|
||||||
|
"@parcel/watcher": "^2.4.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/sass/node_modules/chokidar": {
|
||||||
|
"version": "4.0.3",
|
||||||
|
"resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-4.0.3.tgz",
|
||||||
|
"integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"readdirp": "^4.0.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 14.16.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://paulmillr.com/funding/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/sass/node_modules/readdirp": {
|
||||||
|
"version": "4.1.2",
|
||||||
|
"resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-4.1.2.tgz",
|
||||||
|
"integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==",
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 14.18.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "individual",
|
||||||
|
"url": "https://paulmillr.com/funding/"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/sax": {
|
"node_modules/sax": {
|
||||||
"version": "1.2.4",
|
"version": "1.2.4",
|
||||||
"resolved": "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz",
|
"resolved": "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz",
|
||||||
@ -7765,7 +8136,7 @@
|
|||||||
"version": "5.0.1",
|
"version": "5.0.1",
|
||||||
"resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz",
|
"resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz",
|
||||||
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
|
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
|
||||||
"dev": true,
|
"devOptional": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"is-number": "^7.0.0"
|
"is-number": "^7.0.0"
|
||||||
},
|
},
|
||||||
|
|||||||
@ -6,6 +6,7 @@
|
|||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
"build": "run-p build-only",
|
"build": "run-p build-only",
|
||||||
"build:test": "vite build --mode test && tar -czvf dist-test.tar.gz dist",
|
"build:test": "vite build --mode test && tar -czvf dist-test.tar.gz dist",
|
||||||
|
"build:production": "vite build --mode production && tar -czvf dist.tar.gz dist",
|
||||||
"build-only": "vite build -- mode development",
|
"build-only": "vite build -- mode development",
|
||||||
"test": "vite build --mode test",
|
"test": "vite build --mode test",
|
||||||
"type-check": "vue-tsc --noEmit",
|
"type-check": "vue-tsc --noEmit",
|
||||||
@ -23,6 +24,9 @@
|
|||||||
"mitt": "^3.0.0",
|
"mitt": "^3.0.0",
|
||||||
"normalize.css": "^8.0.1",
|
"normalize.css": "^8.0.1",
|
||||||
"pinia": "^2.0.29",
|
"pinia": "^2.0.29",
|
||||||
|
|
||||||
|
"sass": "^1.89.2",
|
||||||
|
|
||||||
"swiper": "^11.2.8",
|
"swiper": "^11.2.8",
|
||||||
"vue": "^3.2.45",
|
"vue": "^3.2.45",
|
||||||
"vue-echarts": "^7.0.3",
|
"vue-echarts": "^7.0.3",
|
||||||
|
|||||||
204
pnpm-lock.yaml
generated
@ -26,6 +26,9 @@ importers:
|
|||||||
dayjs:
|
dayjs:
|
||||||
specifier: ^1.11.7
|
specifier: ^1.11.7
|
||||||
version: 1.11.7
|
version: 1.11.7
|
||||||
|
echarts:
|
||||||
|
specifier: ^5.6.0
|
||||||
|
version: 5.6.0
|
||||||
lodash-es:
|
lodash-es:
|
||||||
specifier: ^4.17.21
|
specifier: ^4.17.21
|
||||||
version: 4.17.21
|
version: 4.17.21
|
||||||
@ -38,9 +41,15 @@ importers:
|
|||||||
pinia:
|
pinia:
|
||||||
specifier: ^2.0.29
|
specifier: ^2.0.29
|
||||||
version: 2.0.29(typescript@4.9.5)(vue@3.2.45)
|
version: 2.0.29(typescript@4.9.5)(vue@3.2.45)
|
||||||
|
swiper:
|
||||||
|
specifier: ^11.2.8
|
||||||
|
version: 11.2.8
|
||||||
vue:
|
vue:
|
||||||
specifier: ^3.2.45
|
specifier: ^3.2.45
|
||||||
version: 3.2.45
|
version: 3.2.45
|
||||||
|
vue-echarts:
|
||||||
|
specifier: ^7.0.3
|
||||||
|
version: 7.0.3(@vue/runtime-core@3.2.45)(echarts@5.6.0)(vue@3.2.45)
|
||||||
vue-router:
|
vue-router:
|
||||||
specifier: ^4.1.6
|
specifier: ^4.1.6
|
||||||
version: 4.1.6(vue@3.2.45)
|
version: 4.1.6(vue@3.2.45)
|
||||||
@ -62,7 +71,7 @@ importers:
|
|||||||
version: 18.11.18
|
version: 18.11.18
|
||||||
'@typescript-eslint/eslint-plugin':
|
'@typescript-eslint/eslint-plugin':
|
||||||
specifier: ^5.50.0
|
specifier: ^5.50.0
|
||||||
version: 5.50.0(@typescript-eslint/parser@5.50.0)(eslint@8.33.0)(typescript@4.9.5)
|
version: 5.50.0(@typescript-eslint/parser@5.50.0(eslint@8.33.0)(typescript@4.9.5))(eslint@8.33.0)(typescript@4.9.5)
|
||||||
'@typescript-eslint/parser':
|
'@typescript-eslint/parser':
|
||||||
specifier: ^5.50.0
|
specifier: ^5.50.0
|
||||||
version: 5.50.0(eslint@8.33.0)(typescript@4.9.5)
|
version: 5.50.0(eslint@8.33.0)(typescript@4.9.5)
|
||||||
@ -71,16 +80,16 @@ importers:
|
|||||||
version: 0.49.2
|
version: 0.49.2
|
||||||
'@vitejs/plugin-vue':
|
'@vitejs/plugin-vue':
|
||||||
specifier: ^4.0.0
|
specifier: ^4.0.0
|
||||||
version: 4.0.0(vite@4.0.4)(vue@3.2.45)
|
version: 4.0.0(vite@4.0.4(@types/node@18.11.18)(less@4.1.3))(vue@3.2.45)
|
||||||
'@vitejs/plugin-vue-jsx':
|
'@vitejs/plugin-vue-jsx':
|
||||||
specifier: ^3.0.0
|
specifier: ^3.0.0
|
||||||
version: 3.0.0(vite@4.0.4)(vue@3.2.45)
|
version: 3.0.0(vite@4.0.4(@types/node@18.11.18)(less@4.1.3))(vue@3.2.45)
|
||||||
'@vue/eslint-config-prettier':
|
'@vue/eslint-config-prettier':
|
||||||
specifier: ^7.0.0
|
specifier: ^7.0.0
|
||||||
version: 7.0.0(eslint@8.33.0)(prettier@2.8.3)
|
version: 7.0.0(eslint@8.33.0)(prettier@2.8.3)
|
||||||
'@vue/eslint-config-typescript':
|
'@vue/eslint-config-typescript':
|
||||||
specifier: ^11.0.2
|
specifier: ^11.0.2
|
||||||
version: 11.0.2(eslint-plugin-vue@9.9.0)(eslint@8.33.0)(typescript@4.9.5)
|
version: 11.0.2(eslint-plugin-vue@9.9.0(eslint@8.33.0))(eslint@8.33.0)(typescript@4.9.5)
|
||||||
'@vue/tsconfig':
|
'@vue/tsconfig':
|
||||||
specifier: ^0.1.3
|
specifier: ^0.1.3
|
||||||
version: 0.1.3(@types/node@18.11.18)
|
version: 0.1.3(@types/node@18.11.18)
|
||||||
@ -89,7 +98,7 @@ importers:
|
|||||||
version: 8.33.0
|
version: 8.33.0
|
||||||
eslint-config-alloy:
|
eslint-config-alloy:
|
||||||
specifier: ^4.9.0
|
specifier: ^4.9.0
|
||||||
version: 4.9.0(@babel/eslint-parser@7.19.1)(@typescript-eslint/eslint-plugin@5.50.0)(@typescript-eslint/parser@5.50.0)(eslint-plugin-vue@9.9.0)(eslint@8.33.0)(typescript@4.9.5)(vue-eslint-parser@9.1.0)
|
version: 4.9.0(@babel/eslint-parser@7.19.1(@babel/core@7.20.12)(eslint@8.33.0))(@typescript-eslint/eslint-plugin@5.50.0(@typescript-eslint/parser@5.50.0(eslint@8.33.0)(typescript@4.9.5))(eslint@8.33.0)(typescript@4.9.5))(@typescript-eslint/parser@5.50.0(eslint@8.33.0)(typescript@4.9.5))(eslint-plugin-vue@9.9.0(eslint@8.33.0))(eslint@8.33.0)(typescript@4.9.5)(vue-eslint-parser@9.1.0(eslint@8.33.0))
|
||||||
eslint-plugin-vue:
|
eslint-plugin-vue:
|
||||||
specifier: ^9.9.0
|
specifier: ^9.9.0
|
||||||
version: 9.9.0(eslint@8.33.0)
|
version: 9.9.0(eslint@8.33.0)
|
||||||
@ -119,34 +128,34 @@ importers:
|
|||||||
version: 2.8.3
|
version: 2.8.3
|
||||||
rollup-plugin-visualizer:
|
rollup-plugin-visualizer:
|
||||||
specifier: ^5.9.0
|
specifier: ^5.9.0
|
||||||
version: 5.12.0
|
version: 5.12.0(rollup@3.12.0)
|
||||||
typescript:
|
typescript:
|
||||||
specifier: ~4.9.5
|
specifier: ~4.9.5
|
||||||
version: 4.9.5
|
version: 4.9.5
|
||||||
unocss:
|
unocss:
|
||||||
specifier: ^0.49.2
|
specifier: ^0.49.2
|
||||||
version: 0.49.2(vite@4.0.4)
|
version: 0.49.2(rollup@3.12.0)(vite@4.0.4(@types/node@18.11.18)(less@4.1.3))
|
||||||
unplugin-auto-import:
|
unplugin-auto-import:
|
||||||
specifier: ^0.13.0
|
specifier: ^0.13.0
|
||||||
version: 0.13.0(@vueuse/core@9.12.0)
|
version: 0.13.0(@vueuse/core@9.12.0(vue@3.2.45))(rollup@3.12.0)
|
||||||
unplugin-icons:
|
unplugin-icons:
|
||||||
specifier: ^0.15.2
|
specifier: ^0.15.2
|
||||||
version: 0.15.2
|
version: 0.15.2(@vue/compiler-sfc@3.4.27)(vue-template-compiler@2.7.14)
|
||||||
unplugin-vue-components:
|
unplugin-vue-components:
|
||||||
specifier: ^0.23.0
|
specifier: ^0.23.0
|
||||||
version: 0.23.0(vue@3.2.45)
|
version: 0.23.0(@babel/parser@7.24.6)(rollup@3.12.0)(vue@3.2.45)
|
||||||
unplugin-vue-define-options:
|
unplugin-vue-define-options:
|
||||||
specifier: ^1.2.4
|
specifier: ^1.2.4
|
||||||
version: 1.4.5(vue@3.2.45)
|
version: 1.4.5(rollup@3.12.0)(vue@3.2.45)
|
||||||
vite:
|
vite:
|
||||||
specifier: ^4.0.4
|
specifier: ^4.0.4
|
||||||
version: 4.0.4(@types/node@18.11.18)(less@4.1.3)
|
version: 4.0.4(@types/node@18.11.18)(less@4.1.3)
|
||||||
vite-plugin-compression:
|
vite-plugin-compression:
|
||||||
specifier: ^0.5.1
|
specifier: ^0.5.1
|
||||||
version: 0.5.1(vite@4.0.4)
|
version: 0.5.1(vite@4.0.4(@types/node@18.11.18)(less@4.1.3))
|
||||||
vite-plugin-progress:
|
vite-plugin-progress:
|
||||||
specifier: ^0.0.6
|
specifier: ^0.0.6
|
||||||
version: 0.0.6(vite@4.0.4)
|
version: 0.0.6(vite@4.0.4(@types/node@18.11.18)(less@4.1.3))
|
||||||
vue-eslint-parser:
|
vue-eslint-parser:
|
||||||
specifier: ^9.1.0
|
specifier: ^9.1.0
|
||||||
version: 9.1.0(eslint@8.33.0)
|
version: 9.1.0(eslint@8.33.0)
|
||||||
@ -1217,6 +1226,9 @@ packages:
|
|||||||
eastasianwidth@0.2.0:
|
eastasianwidth@0.2.0:
|
||||||
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
|
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
|
||||||
|
|
||||||
|
echarts@5.6.0:
|
||||||
|
resolution: {integrity: sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA==}
|
||||||
|
|
||||||
ee-first@1.1.1:
|
ee-first@1.1.1:
|
||||||
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
|
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
|
||||||
|
|
||||||
@ -2655,6 +2667,10 @@ packages:
|
|||||||
svg-tags@1.0.0:
|
svg-tags@1.0.0:
|
||||||
resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==}
|
resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==}
|
||||||
|
|
||||||
|
swiper@11.2.8:
|
||||||
|
resolution: {integrity: sha512-S5FVf6zWynPWooi7pJ7lZhSUe2snTzqLuUzbd5h5PHUOhzgvW0bLKBd2wv0ixn6/5o9vwc/IkQT74CRcLJQzeg==}
|
||||||
|
engines: {node: '>= 4.7.0'}
|
||||||
|
|
||||||
tapable@1.1.3:
|
tapable@1.1.3:
|
||||||
resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==}
|
resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
@ -2694,6 +2710,9 @@ packages:
|
|||||||
tslib@1.14.1:
|
tslib@1.14.1:
|
||||||
resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
|
resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
|
||||||
|
|
||||||
|
tslib@2.3.0:
|
||||||
|
resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==}
|
||||||
|
|
||||||
tslib@2.5.0:
|
tslib@2.5.0:
|
||||||
resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==}
|
resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==}
|
||||||
|
|
||||||
@ -2887,6 +2906,16 @@ packages:
|
|||||||
'@vue/composition-api':
|
'@vue/composition-api':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
vue-echarts@7.0.3:
|
||||||
|
resolution: {integrity: sha512-/jSxNwOsw5+dYAUcwSfkLwKPuzTQ0Cepz1LxCOpj2QcHrrmUa/Ql0eQqMmc1rTPQVrh2JQ29n2dhq75ZcHvRDw==}
|
||||||
|
peerDependencies:
|
||||||
|
'@vue/runtime-core': ^3.0.0
|
||||||
|
echarts: ^5.5.1
|
||||||
|
vue: ^2.7.0 || ^3.1.1
|
||||||
|
peerDependenciesMeta:
|
||||||
|
'@vue/runtime-core':
|
||||||
|
optional: true
|
||||||
|
|
||||||
vue-eslint-parser@9.1.0:
|
vue-eslint-parser@9.1.0:
|
||||||
resolution: {integrity: sha512-NGn/iQy8/Wb7RrRa4aRkokyCZfOUWk19OP5HP6JEozQFX5AoS/t+Z0ZN7FY4LlmWc4FNI922V7cvX28zctN8dQ==}
|
resolution: {integrity: sha512-NGn/iQy8/Wb7RrRa4aRkokyCZfOUWk19OP5HP6JEozQFX5AoS/t+Z0ZN7FY4LlmWc4FNI922V7cvX28zctN8dQ==}
|
||||||
engines: {node: ^14.17.0 || >=16.0.0}
|
engines: {node: ^14.17.0 || >=16.0.0}
|
||||||
@ -2997,6 +3026,9 @@ packages:
|
|||||||
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
|
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
|
|
||||||
|
zrender@5.6.1:
|
||||||
|
resolution: {integrity: sha512-OFXkDJKcrlx5su2XbzJvj/34Q3m6PvyCZkVPHGYpcCJ52ek4U/ymZyfuV1nKE23AyBJ51E/6Yr0mhZ7xGTO4ag==}
|
||||||
|
|
||||||
snapshots:
|
snapshots:
|
||||||
|
|
||||||
'@ampproject/remapping@2.2.0':
|
'@ampproject/remapping@2.2.0':
|
||||||
@ -3388,9 +3420,9 @@ snapshots:
|
|||||||
'@nodelib/fs.scandir': 2.1.5
|
'@nodelib/fs.scandir': 2.1.5
|
||||||
fastq: 1.15.0
|
fastq: 1.15.0
|
||||||
|
|
||||||
'@nuxt/kit@3.1.1':
|
'@nuxt/kit@3.1.1(rollup@3.12.0)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@nuxt/schema': 3.1.1
|
'@nuxt/schema': 3.1.1(rollup@3.12.0)
|
||||||
c12: 1.1.0
|
c12: 1.1.0
|
||||||
consola: 2.15.3
|
consola: 2.15.3
|
||||||
defu: 6.1.2
|
defu: 6.1.2
|
||||||
@ -3406,13 +3438,13 @@ snapshots:
|
|||||||
scule: 1.0.0
|
scule: 1.0.0
|
||||||
semver: 7.3.8
|
semver: 7.3.8
|
||||||
unctx: 2.1.1
|
unctx: 2.1.1
|
||||||
unimport: 2.1.0
|
unimport: 2.1.0(rollup@3.12.0)
|
||||||
untyped: 1.2.2
|
untyped: 1.2.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- rollup
|
- rollup
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@nuxt/schema@3.1.1':
|
'@nuxt/schema@3.1.1(rollup@3.12.0)':
|
||||||
dependencies:
|
dependencies:
|
||||||
c12: 1.1.0
|
c12: 1.1.0
|
||||||
create-require: 1.1.1
|
create-require: 1.1.1
|
||||||
@ -3425,7 +3457,7 @@ snapshots:
|
|||||||
scule: 1.0.0
|
scule: 1.0.0
|
||||||
std-env: 3.3.1
|
std-env: 3.3.1
|
||||||
ufo: 1.0.1
|
ufo: 1.0.1
|
||||||
unimport: 2.1.0
|
unimport: 2.1.0(rollup@3.12.0)
|
||||||
untyped: 1.2.2
|
untyped: 1.2.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- rollup
|
- rollup
|
||||||
@ -3433,17 +3465,21 @@ snapshots:
|
|||||||
|
|
||||||
'@polka/url@1.0.0-next.21': {}
|
'@polka/url@1.0.0-next.21': {}
|
||||||
|
|
||||||
'@rollup/pluginutils@5.0.2':
|
'@rollup/pluginutils@5.0.2(rollup@3.12.0)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/estree': 1.0.0
|
'@types/estree': 1.0.0
|
||||||
estree-walker: 2.0.2
|
estree-walker: 2.0.2
|
||||||
picomatch: 2.3.1
|
picomatch: 2.3.1
|
||||||
|
optionalDependencies:
|
||||||
|
rollup: 3.12.0
|
||||||
|
|
||||||
'@rollup/pluginutils@5.1.0':
|
'@rollup/pluginutils@5.1.0(rollup@3.12.0)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/estree': 1.0.0
|
'@types/estree': 1.0.0
|
||||||
estree-walker: 2.0.2
|
estree-walker: 2.0.2
|
||||||
picomatch: 2.3.1
|
picomatch: 2.3.1
|
||||||
|
optionalDependencies:
|
||||||
|
rollup: 3.12.0
|
||||||
|
|
||||||
'@rushstack/eslint-patch@1.2.0': {}
|
'@rushstack/eslint-patch@1.2.0': {}
|
||||||
|
|
||||||
@ -3463,7 +3499,7 @@ snapshots:
|
|||||||
|
|
||||||
'@types/web-bluetooth@0.0.16': {}
|
'@types/web-bluetooth@0.0.16': {}
|
||||||
|
|
||||||
'@typescript-eslint/eslint-plugin@5.50.0(@typescript-eslint/parser@5.50.0)(eslint@8.33.0)(typescript@4.9.5)':
|
'@typescript-eslint/eslint-plugin@5.50.0(@typescript-eslint/parser@5.50.0(eslint@8.33.0)(typescript@4.9.5))(eslint@8.33.0)(typescript@4.9.5)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/parser': 5.50.0(eslint@8.33.0)(typescript@4.9.5)
|
'@typescript-eslint/parser': 5.50.0(eslint@8.33.0)(typescript@4.9.5)
|
||||||
'@typescript-eslint/scope-manager': 5.50.0
|
'@typescript-eslint/scope-manager': 5.50.0
|
||||||
@ -3477,6 +3513,7 @@ snapshots:
|
|||||||
regexpp: 3.2.0
|
regexpp: 3.2.0
|
||||||
semver: 7.3.8
|
semver: 7.3.8
|
||||||
tsutils: 3.21.0(typescript@4.9.5)
|
tsutils: 3.21.0(typescript@4.9.5)
|
||||||
|
optionalDependencies:
|
||||||
typescript: 4.9.5
|
typescript: 4.9.5
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
@ -3488,6 +3525,7 @@ snapshots:
|
|||||||
'@typescript-eslint/typescript-estree': 5.50.0(typescript@4.9.5)
|
'@typescript-eslint/typescript-estree': 5.50.0(typescript@4.9.5)
|
||||||
debug: 4.3.4
|
debug: 4.3.4
|
||||||
eslint: 8.33.0
|
eslint: 8.33.0
|
||||||
|
optionalDependencies:
|
||||||
typescript: 4.9.5
|
typescript: 4.9.5
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
@ -3504,6 +3542,7 @@ snapshots:
|
|||||||
debug: 4.3.4
|
debug: 4.3.4
|
||||||
eslint: 8.33.0
|
eslint: 8.33.0
|
||||||
tsutils: 3.21.0(typescript@4.9.5)
|
tsutils: 3.21.0(typescript@4.9.5)
|
||||||
|
optionalDependencies:
|
||||||
typescript: 4.9.5
|
typescript: 4.9.5
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
@ -3519,6 +3558,7 @@ snapshots:
|
|||||||
is-glob: 4.0.3
|
is-glob: 4.0.3
|
||||||
semver: 7.3.8
|
semver: 7.3.8
|
||||||
tsutils: 3.21.0(typescript@4.9.5)
|
tsutils: 3.21.0(typescript@4.9.5)
|
||||||
|
optionalDependencies:
|
||||||
typescript: 4.9.5
|
typescript: 4.9.5
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
@ -3543,19 +3583,19 @@ snapshots:
|
|||||||
'@typescript-eslint/types': 5.50.0
|
'@typescript-eslint/types': 5.50.0
|
||||||
eslint-visitor-keys: 3.3.0
|
eslint-visitor-keys: 3.3.0
|
||||||
|
|
||||||
'@unocss/astro@0.49.2(vite@4.0.4)':
|
'@unocss/astro@0.49.2(rollup@3.12.0)(vite@4.0.4(@types/node@18.11.18)(less@4.1.3))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@unocss/core': 0.49.2
|
'@unocss/core': 0.49.2
|
||||||
'@unocss/reset': 0.49.2
|
'@unocss/reset': 0.49.2
|
||||||
'@unocss/vite': 0.49.2(vite@4.0.4)
|
'@unocss/vite': 0.49.2(rollup@3.12.0)(vite@4.0.4(@types/node@18.11.18)(less@4.1.3))
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- rollup
|
- rollup
|
||||||
- vite
|
- vite
|
||||||
|
|
||||||
'@unocss/cli@0.49.2':
|
'@unocss/cli@0.49.2(rollup@3.12.0)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@ampproject/remapping': 2.2.0
|
'@ampproject/remapping': 2.2.0
|
||||||
'@rollup/pluginutils': 5.0.2
|
'@rollup/pluginutils': 5.0.2(rollup@3.12.0)
|
||||||
'@unocss/config': 0.49.2
|
'@unocss/config': 0.49.2
|
||||||
'@unocss/core': 0.49.2
|
'@unocss/core': 0.49.2
|
||||||
'@unocss/preset-uno': 0.49.2
|
'@unocss/preset-uno': 0.49.2
|
||||||
@ -3647,10 +3687,10 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@unocss/core': 0.49.2
|
'@unocss/core': 0.49.2
|
||||||
|
|
||||||
'@unocss/vite@0.49.2(vite@4.0.4)':
|
'@unocss/vite@0.49.2(rollup@3.12.0)(vite@4.0.4(@types/node@18.11.18)(less@4.1.3))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@ampproject/remapping': 2.2.0
|
'@ampproject/remapping': 2.2.0
|
||||||
'@rollup/pluginutils': 5.0.2
|
'@rollup/pluginutils': 5.0.2(rollup@3.12.0)
|
||||||
'@unocss/config': 0.49.2
|
'@unocss/config': 0.49.2
|
||||||
'@unocss/core': 0.49.2
|
'@unocss/core': 0.49.2
|
||||||
'@unocss/inspector': 0.49.2
|
'@unocss/inspector': 0.49.2
|
||||||
@ -3663,7 +3703,7 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- rollup
|
- rollup
|
||||||
|
|
||||||
'@vitejs/plugin-vue-jsx@3.0.0(vite@4.0.4)(vue@3.2.45)':
|
'@vitejs/plugin-vue-jsx@3.0.0(vite@4.0.4(@types/node@18.11.18)(less@4.1.3))(vue@3.2.45)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/core': 7.20.12
|
'@babel/core': 7.20.12
|
||||||
'@babel/plugin-transform-typescript': 7.20.13(@babel/core@7.20.12)
|
'@babel/plugin-transform-typescript': 7.20.13(@babel/core@7.20.12)
|
||||||
@ -3673,7 +3713,7 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@vitejs/plugin-vue@4.0.0(vite@4.0.4)(vue@3.2.45)':
|
'@vitejs/plugin-vue@4.0.0(vite@4.0.4(@types/node@18.11.18)(less@4.1.3))(vue@3.2.45)':
|
||||||
dependencies:
|
dependencies:
|
||||||
vite: 4.0.4(@types/node@18.11.18)(less@4.1.3)
|
vite: 4.0.4(@types/node@18.11.18)(less@4.1.3)
|
||||||
vue: 3.2.45
|
vue: 3.2.45
|
||||||
@ -3707,14 +3747,15 @@ snapshots:
|
|||||||
'@volar/typescript': 1.0.24
|
'@volar/typescript': 1.0.24
|
||||||
'@volar/vue-language-core': 1.0.24
|
'@volar/vue-language-core': 1.0.24
|
||||||
|
|
||||||
'@vue-macros/common@1.10.4(vue@3.2.45)':
|
'@vue-macros/common@1.10.4(rollup@3.12.0)(vue@3.2.45)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/types': 7.24.6
|
'@babel/types': 7.24.6
|
||||||
'@rollup/pluginutils': 5.1.0
|
'@rollup/pluginutils': 5.1.0(rollup@3.12.0)
|
||||||
'@vue/compiler-sfc': 3.4.27
|
'@vue/compiler-sfc': 3.4.27
|
||||||
ast-kit: 0.12.2
|
ast-kit: 0.12.2
|
||||||
local-pkg: 0.5.0
|
local-pkg: 0.5.0
|
||||||
magic-string-ast: 0.6.1
|
magic-string-ast: 0.6.1
|
||||||
|
optionalDependencies:
|
||||||
vue: 3.2.45
|
vue: 3.2.45
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- rollup
|
- rollup
|
||||||
@ -3802,17 +3843,18 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
eslint: 8.33.0
|
eslint: 8.33.0
|
||||||
eslint-config-prettier: 8.6.0(eslint@8.33.0)
|
eslint-config-prettier: 8.6.0(eslint@8.33.0)
|
||||||
eslint-plugin-prettier: 4.2.1(eslint-config-prettier@8.6.0)(eslint@8.33.0)(prettier@2.8.3)
|
eslint-plugin-prettier: 4.2.1(eslint-config-prettier@8.6.0(eslint@8.33.0))(eslint@8.33.0)(prettier@2.8.3)
|
||||||
prettier: 2.8.3
|
prettier: 2.8.3
|
||||||
|
|
||||||
'@vue/eslint-config-typescript@11.0.2(eslint-plugin-vue@9.9.0)(eslint@8.33.0)(typescript@4.9.5)':
|
'@vue/eslint-config-typescript@11.0.2(eslint-plugin-vue@9.9.0(eslint@8.33.0))(eslint@8.33.0)(typescript@4.9.5)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/eslint-plugin': 5.50.0(@typescript-eslint/parser@5.50.0)(eslint@8.33.0)(typescript@4.9.5)
|
'@typescript-eslint/eslint-plugin': 5.50.0(@typescript-eslint/parser@5.50.0(eslint@8.33.0)(typescript@4.9.5))(eslint@8.33.0)(typescript@4.9.5)
|
||||||
'@typescript-eslint/parser': 5.50.0(eslint@8.33.0)(typescript@4.9.5)
|
'@typescript-eslint/parser': 5.50.0(eslint@8.33.0)(typescript@4.9.5)
|
||||||
eslint: 8.33.0
|
eslint: 8.33.0
|
||||||
eslint-plugin-vue: 9.9.0(eslint@8.33.0)
|
eslint-plugin-vue: 9.9.0(eslint@8.33.0)
|
||||||
typescript: 4.9.5
|
|
||||||
vue-eslint-parser: 9.1.0(eslint@8.33.0)
|
vue-eslint-parser: 9.1.0(eslint@8.33.0)
|
||||||
|
optionalDependencies:
|
||||||
|
typescript: 4.9.5
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
@ -3850,7 +3892,7 @@ snapshots:
|
|||||||
'@vue/shared@3.4.27': {}
|
'@vue/shared@3.4.27': {}
|
||||||
|
|
||||||
'@vue/tsconfig@0.1.3(@types/node@18.11.18)':
|
'@vue/tsconfig@0.1.3(@types/node@18.11.18)':
|
||||||
dependencies:
|
optionalDependencies:
|
||||||
'@types/node': 18.11.18
|
'@types/node': 18.11.18
|
||||||
|
|
||||||
'@vueuse/core@9.12.0(vue@3.2.45)':
|
'@vueuse/core@9.12.0(vue@3.2.45)':
|
||||||
@ -4256,6 +4298,11 @@ snapshots:
|
|||||||
|
|
||||||
eastasianwidth@0.2.0: {}
|
eastasianwidth@0.2.0: {}
|
||||||
|
|
||||||
|
echarts@5.6.0:
|
||||||
|
dependencies:
|
||||||
|
tslib: 2.3.0
|
||||||
|
zrender: 5.6.1
|
||||||
|
|
||||||
ee-first@1.1.1: {}
|
ee-first@1.1.1: {}
|
||||||
|
|
||||||
electron-to-chromium@1.4.284: {}
|
electron-to-chromium@1.4.284: {}
|
||||||
@ -4375,12 +4422,13 @@ snapshots:
|
|||||||
|
|
||||||
escape-string-regexp@5.0.0: {}
|
escape-string-regexp@5.0.0: {}
|
||||||
|
|
||||||
eslint-config-alloy@4.9.0(@babel/eslint-parser@7.19.1)(@typescript-eslint/eslint-plugin@5.50.0)(@typescript-eslint/parser@5.50.0)(eslint-plugin-vue@9.9.0)(eslint@8.33.0)(typescript@4.9.5)(vue-eslint-parser@9.1.0):
|
eslint-config-alloy@4.9.0(@babel/eslint-parser@7.19.1(@babel/core@7.20.12)(eslint@8.33.0))(@typescript-eslint/eslint-plugin@5.50.0(@typescript-eslint/parser@5.50.0(eslint@8.33.0)(typescript@4.9.5))(eslint@8.33.0)(typescript@4.9.5))(@typescript-eslint/parser@5.50.0(eslint@8.33.0)(typescript@4.9.5))(eslint-plugin-vue@9.9.0(eslint@8.33.0))(eslint@8.33.0)(typescript@4.9.5)(vue-eslint-parser@9.1.0(eslint@8.33.0)):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/eslint-parser': 7.19.1(@babel/core@7.20.12)(eslint@8.33.0)
|
|
||||||
'@typescript-eslint/eslint-plugin': 5.50.0(@typescript-eslint/parser@5.50.0)(eslint@8.33.0)(typescript@4.9.5)
|
|
||||||
'@typescript-eslint/parser': 5.50.0(eslint@8.33.0)(typescript@4.9.5)
|
|
||||||
eslint: 8.33.0
|
eslint: 8.33.0
|
||||||
|
optionalDependencies:
|
||||||
|
'@babel/eslint-parser': 7.19.1(@babel/core@7.20.12)(eslint@8.33.0)
|
||||||
|
'@typescript-eslint/eslint-plugin': 5.50.0(@typescript-eslint/parser@5.50.0(eslint@8.33.0)(typescript@4.9.5))(eslint@8.33.0)(typescript@4.9.5)
|
||||||
|
'@typescript-eslint/parser': 5.50.0(eslint@8.33.0)(typescript@4.9.5)
|
||||||
eslint-plugin-vue: 9.9.0(eslint@8.33.0)
|
eslint-plugin-vue: 9.9.0(eslint@8.33.0)
|
||||||
typescript: 4.9.5
|
typescript: 4.9.5
|
||||||
vue-eslint-parser: 9.1.0(eslint@8.33.0)
|
vue-eslint-parser: 9.1.0(eslint@8.33.0)
|
||||||
@ -4389,12 +4437,13 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
eslint: 8.33.0
|
eslint: 8.33.0
|
||||||
|
|
||||||
eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.6.0)(eslint@8.33.0)(prettier@2.8.3):
|
eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.6.0(eslint@8.33.0))(eslint@8.33.0)(prettier@2.8.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
eslint: 8.33.0
|
eslint: 8.33.0
|
||||||
eslint-config-prettier: 8.6.0(eslint@8.33.0)
|
|
||||||
prettier: 2.8.3
|
prettier: 2.8.3
|
||||||
prettier-linter-helpers: 1.0.0
|
prettier-linter-helpers: 1.0.0
|
||||||
|
optionalDependencies:
|
||||||
|
eslint-config-prettier: 8.6.0(eslint@8.33.0)
|
||||||
|
|
||||||
eslint-plugin-vue@9.9.0(eslint@8.33.0):
|
eslint-plugin-vue@9.9.0(eslint@8.33.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -5370,9 +5419,10 @@ snapshots:
|
|||||||
pinia@2.0.29(typescript@4.9.5)(vue@3.2.45):
|
pinia@2.0.29(typescript@4.9.5)(vue@3.2.45):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@vue/devtools-api': 6.5.0
|
'@vue/devtools-api': 6.5.0
|
||||||
typescript: 4.9.5
|
|
||||||
vue: 3.2.45
|
vue: 3.2.45
|
||||||
vue-demi: 0.13.11(vue@3.2.45)
|
vue-demi: 0.13.11(vue@3.2.45)
|
||||||
|
optionalDependencies:
|
||||||
|
typescript: 4.9.5
|
||||||
|
|
||||||
pkg-types@1.0.1:
|
pkg-types@1.0.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -5501,12 +5551,14 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
glob: 7.2.3
|
glob: 7.2.3
|
||||||
|
|
||||||
rollup-plugin-visualizer@5.12.0:
|
rollup-plugin-visualizer@5.12.0(rollup@3.12.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
open: 8.4.2
|
open: 8.4.2
|
||||||
picomatch: 2.3.1
|
picomatch: 2.3.1
|
||||||
source-map: 0.7.4
|
source-map: 0.7.4
|
||||||
yargs: 17.7.2
|
yargs: 17.7.2
|
||||||
|
optionalDependencies:
|
||||||
|
rollup: 3.12.0
|
||||||
|
|
||||||
rollup@3.12.0:
|
rollup@3.12.0:
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
@ -5727,6 +5779,8 @@ snapshots:
|
|||||||
|
|
||||||
svg-tags@1.0.0: {}
|
svg-tags@1.0.0: {}
|
||||||
|
|
||||||
|
swiper@11.2.8: {}
|
||||||
|
|
||||||
tapable@1.1.3: {}
|
tapable@1.1.3: {}
|
||||||
|
|
||||||
tar@6.1.13:
|
tar@6.1.13:
|
||||||
@ -5762,6 +5816,8 @@ snapshots:
|
|||||||
|
|
||||||
tslib@1.14.1: {}
|
tslib@1.14.1: {}
|
||||||
|
|
||||||
|
tslib@2.3.0: {}
|
||||||
|
|
||||||
tslib@2.5.0: {}
|
tslib@2.5.0: {}
|
||||||
|
|
||||||
tsutils@3.21.0(typescript@4.9.5):
|
tsutils@3.21.0(typescript@4.9.5):
|
||||||
@ -5817,9 +5873,9 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
extend-shallow: 2.0.1
|
extend-shallow: 2.0.1
|
||||||
|
|
||||||
unimport@2.1.0:
|
unimport@2.1.0(rollup@3.12.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@rollup/pluginutils': 5.0.2
|
'@rollup/pluginutils': 5.0.2(rollup@3.12.0)
|
||||||
escape-string-regexp: 5.0.0
|
escape-string-regexp: 5.0.0
|
||||||
fast-glob: 3.2.12
|
fast-glob: 3.2.12
|
||||||
local-pkg: 0.4.3
|
local-pkg: 0.4.3
|
||||||
@ -5835,10 +5891,10 @@ snapshots:
|
|||||||
|
|
||||||
universalify@2.0.1: {}
|
universalify@2.0.1: {}
|
||||||
|
|
||||||
unocss@0.49.2(vite@4.0.4):
|
unocss@0.49.2(rollup@3.12.0)(vite@4.0.4(@types/node@18.11.18)(less@4.1.3)):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@unocss/astro': 0.49.2(vite@4.0.4)
|
'@unocss/astro': 0.49.2(rollup@3.12.0)(vite@4.0.4(@types/node@18.11.18)(less@4.1.3))
|
||||||
'@unocss/cli': 0.49.2
|
'@unocss/cli': 0.49.2(rollup@3.12.0)
|
||||||
'@unocss/core': 0.49.2
|
'@unocss/core': 0.49.2
|
||||||
'@unocss/preset-attributify': 0.49.2
|
'@unocss/preset-attributify': 0.49.2
|
||||||
'@unocss/preset-icons': 0.49.2
|
'@unocss/preset-icons': 0.49.2
|
||||||
@ -5853,25 +5909,26 @@ snapshots:
|
|||||||
'@unocss/transformer-compile-class': 0.49.2
|
'@unocss/transformer-compile-class': 0.49.2
|
||||||
'@unocss/transformer-directives': 0.49.2
|
'@unocss/transformer-directives': 0.49.2
|
||||||
'@unocss/transformer-variant-group': 0.49.2
|
'@unocss/transformer-variant-group': 0.49.2
|
||||||
'@unocss/vite': 0.49.2(vite@4.0.4)
|
'@unocss/vite': 0.49.2(rollup@3.12.0)(vite@4.0.4(@types/node@18.11.18)(less@4.1.3))
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- rollup
|
- rollup
|
||||||
- supports-color
|
- supports-color
|
||||||
- vite
|
- vite
|
||||||
|
|
||||||
unplugin-auto-import@0.13.0(@vueuse/core@9.12.0):
|
unplugin-auto-import@0.13.0(@vueuse/core@9.12.0(vue@3.2.45))(rollup@3.12.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@antfu/utils': 0.7.2
|
'@antfu/utils': 0.7.2
|
||||||
'@rollup/pluginutils': 5.0.2
|
'@rollup/pluginutils': 5.0.2(rollup@3.12.0)
|
||||||
'@vueuse/core': 9.12.0(vue@3.2.45)
|
|
||||||
local-pkg: 0.4.3
|
local-pkg: 0.4.3
|
||||||
magic-string: 0.27.0
|
magic-string: 0.27.0
|
||||||
unimport: 2.1.0
|
unimport: 2.1.0(rollup@3.12.0)
|
||||||
unplugin: 1.0.1
|
unplugin: 1.0.1
|
||||||
|
optionalDependencies:
|
||||||
|
'@vueuse/core': 9.12.0(vue@3.2.45)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- rollup
|
- rollup
|
||||||
|
|
||||||
unplugin-icons@0.15.2:
|
unplugin-icons@0.15.2(@vue/compiler-sfc@3.4.27)(vue-template-compiler@2.7.14):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@antfu/install-pkg': 0.1.1
|
'@antfu/install-pkg': 0.1.1
|
||||||
'@antfu/utils': 0.7.2
|
'@antfu/utils': 0.7.2
|
||||||
@ -5880,14 +5937,17 @@ snapshots:
|
|||||||
kolorist: 1.6.0
|
kolorist: 1.6.0
|
||||||
local-pkg: 0.4.3
|
local-pkg: 0.4.3
|
||||||
unplugin: 1.0.1
|
unplugin: 1.0.1
|
||||||
|
optionalDependencies:
|
||||||
|
'@vue/compiler-sfc': 3.4.27
|
||||||
|
vue-template-compiler: 2.7.14
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
unplugin-vue-components@0.23.0(vue@3.2.45):
|
unplugin-vue-components@0.23.0(@babel/parser@7.24.6)(rollup@3.12.0)(vue@3.2.45):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@antfu/utils': 0.7.2
|
'@antfu/utils': 0.7.2
|
||||||
'@nuxt/kit': 3.1.1
|
'@nuxt/kit': 3.1.1(rollup@3.12.0)
|
||||||
'@rollup/pluginutils': 5.0.2
|
'@rollup/pluginutils': 5.0.2(rollup@3.12.0)
|
||||||
chokidar: 3.5.3
|
chokidar: 3.5.3
|
||||||
debug: 4.3.4
|
debug: 4.3.4
|
||||||
fast-glob: 3.2.12
|
fast-glob: 3.2.12
|
||||||
@ -5897,13 +5957,15 @@ snapshots:
|
|||||||
resolve: 1.22.1
|
resolve: 1.22.1
|
||||||
unplugin: 1.0.1
|
unplugin: 1.0.1
|
||||||
vue: 3.2.45
|
vue: 3.2.45
|
||||||
|
optionalDependencies:
|
||||||
|
'@babel/parser': 7.24.6
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- rollup
|
- rollup
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
unplugin-vue-define-options@1.4.5(vue@3.2.45):
|
unplugin-vue-define-options@1.4.5(rollup@3.12.0)(vue@3.2.45):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@vue-macros/common': 1.10.4(vue@3.2.45)
|
'@vue-macros/common': 1.10.4(rollup@3.12.0)(vue@3.2.45)
|
||||||
ast-walker-scope: 0.6.1
|
ast-walker-scope: 0.6.1
|
||||||
unplugin: 1.10.1
|
unplugin: 1.10.1
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
@ -5977,7 +6039,7 @@ snapshots:
|
|||||||
spdx-correct: 3.1.1
|
spdx-correct: 3.1.1
|
||||||
spdx-expression-parse: 3.0.1
|
spdx-expression-parse: 3.0.1
|
||||||
|
|
||||||
vite-plugin-compression@0.5.1(vite@4.0.4):
|
vite-plugin-compression@0.5.1(vite@4.0.4(@types/node@18.11.18)(less@4.1.3)):
|
||||||
dependencies:
|
dependencies:
|
||||||
chalk: 4.1.2
|
chalk: 4.1.2
|
||||||
debug: 4.3.4
|
debug: 4.3.4
|
||||||
@ -5986,7 +6048,7 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
vite-plugin-progress@0.0.6(vite@4.0.4):
|
vite-plugin-progress@0.0.6(vite@4.0.4(@types/node@18.11.18)(less@4.1.3)):
|
||||||
dependencies:
|
dependencies:
|
||||||
picocolors: 1.0.0
|
picocolors: 1.0.0
|
||||||
progress: 2.0.3
|
progress: 2.0.3
|
||||||
@ -5995,19 +6057,29 @@ snapshots:
|
|||||||
|
|
||||||
vite@4.0.4(@types/node@18.11.18)(less@4.1.3):
|
vite@4.0.4(@types/node@18.11.18)(less@4.1.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 18.11.18
|
|
||||||
esbuild: 0.16.17
|
esbuild: 0.16.17
|
||||||
less: 4.1.3
|
|
||||||
postcss: 8.4.21
|
postcss: 8.4.21
|
||||||
resolve: 1.22.1
|
resolve: 1.22.1
|
||||||
rollup: 3.12.0
|
rollup: 3.12.0
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
|
'@types/node': 18.11.18
|
||||||
fsevents: 2.3.2
|
fsevents: 2.3.2
|
||||||
|
less: 4.1.3
|
||||||
|
|
||||||
vue-demi@0.13.11(vue@3.2.45):
|
vue-demi@0.13.11(vue@3.2.45):
|
||||||
dependencies:
|
dependencies:
|
||||||
vue: 3.2.45
|
vue: 3.2.45
|
||||||
|
|
||||||
|
vue-echarts@7.0.3(@vue/runtime-core@3.2.45)(echarts@5.6.0)(vue@3.2.45):
|
||||||
|
dependencies:
|
||||||
|
echarts: 5.6.0
|
||||||
|
vue: 3.2.45
|
||||||
|
vue-demi: 0.13.11(vue@3.2.45)
|
||||||
|
optionalDependencies:
|
||||||
|
'@vue/runtime-core': 3.2.45
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- '@vue/composition-api'
|
||||||
|
|
||||||
vue-eslint-parser@9.1.0(eslint@8.33.0):
|
vue-eslint-parser@9.1.0(eslint@8.33.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
debug: 4.3.4
|
debug: 4.3.4
|
||||||
@ -6128,3 +6200,7 @@ snapshots:
|
|||||||
yargs-parser: 21.1.1
|
yargs-parser: 21.1.1
|
||||||
|
|
||||||
yocto-queue@0.1.0: {}
|
yocto-queue@0.1.0: {}
|
||||||
|
|
||||||
|
zrender@5.6.1:
|
||||||
|
dependencies:
|
||||||
|
tslib: 2.3.0
|
||||||
|
|||||||
@ -1,8 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<a-config-provider :locale="zhCN" size="small" :theme="redTheme">
|
<a-config-provider :locale="zhCN" size="small" :theme="redTheme">
|
||||||
<LayoutBasic>
|
<router-view v-if="$route.path === '/login'" />
|
||||||
<router-view />
|
<LayoutBasic v-else />
|
||||||
</LayoutBasic>
|
|
||||||
</a-config-provider>
|
</a-config-provider>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|||||||
@ -29,7 +29,6 @@ export const fetchindustryTerms = (params: any) => {
|
|||||||
return Http.get('/v1/industry-terms/list', params);
|
return Http.get('/v1/industry-terms/list', params);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// 导出一个函数fetchKeywordTrendsList,用于获取行业话题列表
|
// 导出一个函数fetchKeywordTrendsList,用于获取行业话题列表
|
||||||
export const fetchKeywordTrendsList = (params: any) => {
|
export const fetchKeywordTrendsList = (params: any) => {
|
||||||
// 使用Http.get方法,发送GET请求,获取行业话题列表
|
// 使用Http.get方法,发送GET请求,获取行业话题列表
|
||||||
@ -47,21 +46,24 @@ export const fetchNewKeywordList = (params: any) => {
|
|||||||
return Http.get('/v1/industry-new-keywords/list', params);
|
return Http.get('/v1/industry-new-keywords/list', params);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const fetchNewKeywordDetail = (params: any) => {
|
||||||
|
// 使用Http.get方法,发送GET请求,获取行业话题列表
|
||||||
|
return Http.get('/v1/industry-new-keywords/' + params, {});
|
||||||
|
};
|
||||||
|
fetchIndustryTopicDetail;
|
||||||
|
|
||||||
// 导出一个函数fetchUserPainPointsList,用于获取用户痛点列表
|
// 导出一个函数fetchUserPainPointsList,用于获取用户痛点列表
|
||||||
export const fetchUserPainPointsList = (params: any) => {
|
export const fetchUserPainPointsList = (params: any) => {
|
||||||
// 使用Http.get方法,发送GET请求,获取行业话题列表
|
// 使用Http.get方法,发送GET请求,获取行业话题列表
|
||||||
return Http.get('/v1/user-pain-points/list', params);
|
return Http.get('/v1/user-pain-points/list', params);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// 导出一个函数fetchUserPainPointsDetail,用于获取用户痛点详情
|
// 导出一个函数fetchUserPainPointsDetail,用于获取用户痛点详情
|
||||||
export const fetchUserPainPointsDetail = (params: any) => {
|
export const fetchUserPainPointsDetail = (params: any) => {
|
||||||
// 使用Http.get方法,发送GET请求,获取行业话题列表
|
// 使用Http.get方法,发送GET请求,获取行业话题列表
|
||||||
return Http.get('/v1/user-pain-points/' + params, {});
|
return Http.get('/v1/user-pain-points/' + params, {});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 导出一个函数fetchFocusBrandsList,用于获取行业话题列表
|
// 导出一个函数fetchFocusBrandsList,用于获取行业话题列表
|
||||||
export const fetchFocusBrandsList = (params: any) => {
|
export const fetchFocusBrandsList = (params: any) => {
|
||||||
// 使用Http.get方法,发送GET请求,获取行业话题列表
|
// 使用Http.get方法,发送GET请求,获取行业话题列表
|
||||||
|
|||||||
48
src/api/all/login.ts
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
import Http from '@/api';
|
||||||
|
|
||||||
|
|
||||||
|
// 导出一个函数,用于获取登录验证码
|
||||||
|
export const fetchLoginCaptCha = (params = {}) => {
|
||||||
|
|
||||||
|
return Http.post('/v1/sms/login-captcha', params);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// 导出一个函数,用于获取验证码
|
||||||
|
export const fetchAuthorizationsCaptcha = (params = {}) => {
|
||||||
|
// 使用Http.post方法,发送POST请求,请求地址为'/v1/authorizations/captcha',请求参数为params
|
||||||
|
return Http.post('/v1/authorizations/captcha', params);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// 导出一个函数,用于获取授权信息
|
||||||
|
export const fetchAuthorizations = (params = {}) => {
|
||||||
|
// 使用Http.put方法,向服务器发送PUT请求,获取授权信息
|
||||||
|
return Http.put('/v1/authorizations', params);
|
||||||
|
};
|
||||||
|
|
||||||
|
// 导出一个名为fetchLogOut的函数,用于注销用户
|
||||||
|
export const fetchLogOut = (params = {}) => {
|
||||||
|
// 使用Http.put方法,向'/v1/authorizations'接口发送put请求,参数为params
|
||||||
|
return Http.put('/v1/authorizations', params);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// 导出一个名为fetchProfileInfo的函数,用于获取用户信息
|
||||||
|
export const fetchProfileInfo = (params = {}) => {
|
||||||
|
// 使用Http.put方法,向/v1/me接口发送put请求,并将params作为参数传递
|
||||||
|
return Http.put('/v1/me', params);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// 导出一个函数,用于获取编辑手机号的验证码
|
||||||
|
export const fetchEditPhoneCaptcha = (params = {}) => {
|
||||||
|
// 使用Http.put方法,向服务器发送PUT请求,获取编辑手机号的验证码
|
||||||
|
return Http.put('/v1/sms/update-mobile-captcha', params);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
export const fetchBindPhone = (params = {}) => {
|
||||||
|
return Http.put('/v1/me/mobile', params);
|
||||||
|
};
|
||||||
|
|
||||||
4
src/assets/avatar.svg
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<rect width="32" height="32" rx="16" fill="#6D4CFE"/>
|
||||||
|
<path d="M11.548 19.866H15.762V21H10.288V11.284H11.548V19.866ZM22.1423 11.284V12.404H19.3143V21H18.0543V12.404H15.2123V11.284H22.1423Z" fill="white"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 308 B |
3
src/assets/change.svg
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M13.4562 5.04795L11.0374 2.62919L10.2124 3.45415L12.1333 5.375H2.45825V6.54167H12.8374C13.617 6.54167 14.0074 5.59917 13.4562 5.04795ZM2.54368 10.9521L4.96244 13.3708L5.7874 12.5459L3.86654 10.625L13.5416 10.625V9.45834L3.1624 9.45833C2.38286 9.45833 1.99246 10.4008 2.54368 10.9521Z" fill="#737478"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 454 B |
3
src/assets/exit.svg
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M2.45825 2.45833L10.0416 2.45833L10.0416 3.62499L3.62492 3.62499L3.62492 12.375L10.0416 12.375L10.0416 13.5417L2.45825 13.5417L2.45825 2.45833ZM10.7249 4.9421L13.7831 8.0003L10.7249 11.0585L9.89992 10.2336L11.5501 8.58333L5.91667 8.58333L5.91667 7.41666L11.5495 7.41666L9.89992 5.76706L10.7249 4.9421Z" fill="#737478"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 472 B |
18
src/assets/img/BG.svg
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
<svg width="1440" height="900" viewBox="0 0 1440 900" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M0.376709 754.931V675.062L328.791 898.88H185.872L0.376709 754.931Z" fill="#DBD7FA"/>
|
||||||
|
<path d="M624.902 227.517L-4.76837e-07 487.669V677.075L289.419 899.489H855.552L1320.23 677.075L624.902 227.517Z" fill="#E8E6FB"/>
|
||||||
|
<path d="M115.645 151.925L0.00012207 111.11V0H503.394L115.645 151.925Z" fill="url(#paint0_linear_376_534)"/>
|
||||||
|
<path d="M1440 0H1070.26L1440 160.682V0Z" fill="url(#paint1_linear_376_534)"/>
|
||||||
|
<defs>
|
||||||
|
<linearGradient id="paint0_linear_376_534" x1="195.316" y1="35.0894" x2="195.316" y2="170.063" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#E8E6FB"/>
|
||||||
|
<stop offset="0.485577" stop-color="#E8E6FB"/>
|
||||||
|
<stop offset="1" stop-color="#D3CEFD"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="paint1_linear_376_534" x1="1214.37" y1="-5.68643e-07" x2="1222.66" y2="160.682" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#E8E6FB"/>
|
||||||
|
<stop offset="0.485577" stop-color="#E8E6FB"/>
|
||||||
|
<stop offset="1" stop-color="#D3CEFD"/>
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.0 KiB |
181
src/assets/img/Frame.svg
Normal file
@ -0,0 +1,181 @@
|
|||||||
|
<svg width="480" height="480" viewBox="0 0 480 480" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M295.017 246.203L263.208 274.726C261.17 276.553 261.528 279.84 263.91 281.186L372.696 342.646C374.245 343.521 376.187 343.268 377.459 342.024L411.336 308.913C413.289 307.004 412.796 303.741 410.366 302.494L299.513 245.622C298.039 244.866 296.251 245.097 295.017 246.203Z" fill="#C7BCFC"/>
|
||||||
|
<path d="M296.584 245.816L264.933 273.829C262.871 275.653 263.226 278.967 265.628 280.313L371.534 339.697C373.077 340.562 375.006 340.311 376.275 339.079L409.814 306.545C411.783 304.634 411.288 301.353 408.843 300.109L301.049 245.247C299.585 244.501 297.814 244.727 296.584 245.816Z" fill="#F7F8FA"/>
|
||||||
|
<path d="M373.028 304.505L296.231 261.905V278.324C296.231 278.684 296.424 279.016 296.738 279.194L371.535 321.638C372.201 322.016 373.028 321.535 373.028 320.768V304.505Z" fill="#D5CDFF"/>
|
||||||
|
<path d="M453.177 141.06L254.252 32.3813C248.921 29.4687 242.417 33.3318 242.417 39.4066V211.251C242.417 213.971 243.798 216.504 246.085 217.977L445.009 346.104C450.333 349.533 457.341 345.711 457.341 339.378V148.081C457.341 145.155 455.744 142.463 453.177 141.06Z" fill="#C7BCFC"/>
|
||||||
|
<path d="M446.733 146.534L248.762 35.059C243.429 32.0561 236.837 35.9097 236.837 42.0299V225.642C236.837 228.545 238.409 231.22 240.944 232.632L437.82 342.267C443.134 345.226 449.676 341.408 449.712 335.326L450.808 153.553C450.826 150.647 449.266 147.96 446.733 146.534Z" fill="#573DCB"/>
|
||||||
|
<path d="M446.733 146.534L248.762 35.059C243.429 32.0561 236.837 35.9097 236.837 42.0299V225.642C236.837 228.545 238.409 231.22 240.944 232.632L437.82 342.267C443.134 345.226 449.676 341.408 449.712 335.326L450.808 153.553C450.826 150.647 449.266 147.96 446.733 146.534Z" fill="url(#paint0_linear_301_536)"/>
|
||||||
|
<path d="M435.744 155.108L254.792 53.6824C252.126 52.1879 248.837 54.115 248.837 57.1717V218.534C248.837 219.963 249.599 221.284 250.838 221.999L431.79 326.384C434.456 327.922 437.789 325.997 437.789 322.919V158.597C437.789 157.15 437.007 155.815 435.744 155.108Z" fill="#F7F8FA"/>
|
||||||
|
<rect x="260.179" y="75.0746" width="120.66" height="6.43" rx="3.215" transform="rotate(28.95 260.179 75.0746)" fill="#E4E0FA"/>
|
||||||
|
<rect x="260.179" y="90.3346" width="123.66" height="6.43" rx="3.215" transform="rotate(28.95 260.179 90.3346)" fill="#E4E0FA"/>
|
||||||
|
<rect x="260.179" y="105.059" width="126.66" height="6.43" rx="3.215" transform="rotate(28.95 260.179 105.059)" fill="#E4E0FA"/>
|
||||||
|
<mask id="path-11-inside-1_301_536" fill="white">
|
||||||
|
<path d="M390.266 146.904C401.894 141.682 417.099 150.314 424.227 166.184C431.356 182.055 427.709 199.156 416.082 204.379C404.454 209.601 389.25 200.969 382.121 185.098C374.992 169.226 378.639 152.127 390.266 146.904ZM414.558 170.528C410.162 160.74 401.501 155.094 395.214 157.918C388.926 160.742 387.393 170.967 391.79 180.755C396.186 190.543 404.847 196.188 411.135 193.364C417.422 190.54 418.955 180.316 414.558 170.528Z"/>
|
||||||
|
</mask>
|
||||||
|
<path d="M390.266 146.904C401.894 141.682 417.099 150.314 424.227 166.184C431.356 182.055 427.709 199.156 416.082 204.379C404.454 209.601 389.25 200.969 382.121 185.098C374.992 169.226 378.639 152.127 390.266 146.904ZM414.558 170.528C410.162 160.74 401.501 155.094 395.214 157.918C388.926 160.742 387.393 170.967 391.79 180.755C396.186 190.543 404.847 196.188 411.135 193.364C417.422 190.54 418.955 180.316 414.558 170.528Z" fill="#A794FE"/>
|
||||||
|
<path d="M390.266 146.904L390.184 146.722L390.184 146.722L390.266 146.904ZM424.227 166.184L424.41 166.102V166.102L424.227 166.184ZM416.082 204.379L416.164 204.561L416.082 204.379ZM382.121 185.098L381.938 185.179H381.938L382.121 185.098ZM414.558 170.528L414.741 170.446V170.446L414.558 170.528ZM395.214 157.918L395.132 157.735L395.132 157.735L395.214 157.918ZM391.79 180.755L391.607 180.837H391.607L391.79 180.755ZM411.135 193.364L411.217 193.547H411.217L411.135 193.364ZM390.266 146.904L390.348 147.087C396.09 144.508 402.73 145.342 408.835 148.808C414.94 152.274 420.496 158.366 424.045 166.266L424.227 166.184L424.41 166.102C420.83 158.132 415.219 151.972 409.033 148.46C402.846 144.948 396.07 144.078 390.184 146.722L390.266 146.904ZM424.227 166.184L424.045 166.266C427.594 174.167 428.457 182.367 426.993 189.233C425.528 196.099 421.741 201.617 416 204.196L416.082 204.379L416.164 204.561C422.05 201.917 425.9 196.274 427.384 189.316C428.868 182.359 427.99 174.073 424.41 166.102L424.227 166.184ZM416.082 204.379L416 204.196C410.258 206.775 403.618 205.941 397.513 202.474C391.408 199.008 385.852 192.916 382.303 185.016L382.121 185.098L381.938 185.179C385.518 193.15 391.129 199.31 397.316 202.822C403.502 206.334 410.278 207.205 416.164 204.561L416.082 204.379ZM382.121 185.098L382.303 185.016C378.755 177.115 377.891 168.915 379.356 162.049C380.82 155.183 384.607 149.666 390.348 147.087L390.266 146.904L390.184 146.722C384.299 149.365 380.448 155.009 378.965 161.966C377.481 168.923 378.359 177.209 381.938 185.179L382.121 185.098ZM414.558 170.528L414.741 170.446C412.529 165.523 409.242 161.632 405.704 159.326C402.169 157.022 398.359 156.286 395.132 157.735L395.214 157.918L395.296 158.1C398.356 156.726 402.02 157.402 405.486 159.661C408.95 161.919 412.191 165.746 414.376 170.61L414.558 170.528ZM395.214 157.918L395.132 157.735C391.905 159.185 389.923 162.522 389.298 166.695C388.672 170.871 389.396 175.913 391.607 180.837L391.79 180.755L391.972 180.673C389.787 175.808 389.08 170.844 389.693 166.754C390.307 162.662 392.235 159.475 395.296 158.1L395.214 157.918ZM391.79 180.755L391.607 180.837C393.819 185.76 397.107 189.651 400.644 191.956C404.179 194.261 407.99 194.996 411.217 193.547L411.135 193.364L411.053 193.182C407.992 194.556 404.329 193.881 400.862 191.621C397.398 189.363 394.157 185.537 391.972 180.673L391.79 180.755ZM411.135 193.364L411.217 193.547C414.443 192.097 416.425 188.76 417.05 184.587C417.677 180.411 416.952 175.37 414.741 170.446L414.558 170.528L414.376 170.61C416.561 175.474 417.268 180.439 416.655 184.528C416.041 188.62 414.113 191.807 411.053 193.182L411.135 193.364Z" fill="#917DED" mask="url(#path-11-inside-1_301_536)"/>
|
||||||
|
<g filter="url(#filter0_d_301_536)">
|
||||||
|
<mask id="path-13-inside-2_301_536" fill="white">
|
||||||
|
<path d="M390.391 163.317C388.583 167.893 388.943 174.415 391.79 180.754C393.239 183.98 395.151 186.755 397.288 188.926L391.616 198.405C387.833 194.957 384.519 190.438 382.12 185.098C377.706 175.271 377.425 164.973 380.611 157.315L390.391 163.317Z"/>
|
||||||
|
</mask>
|
||||||
|
<path d="M390.391 163.317C388.583 167.893 388.943 174.415 391.79 180.754C393.239 183.98 395.151 186.755 397.288 188.926L391.616 198.405C387.833 194.957 384.519 190.438 382.12 185.098C377.706 175.271 377.425 164.973 380.611 157.315L390.391 163.317Z" fill="#D3BFF0"/>
|
||||||
|
<path d="M390.391 163.317L390.577 163.39L390.639 163.234L390.496 163.146L390.391 163.317ZM391.79 180.754L391.608 180.836L391.608 180.836L391.79 180.754ZM397.288 188.926L397.46 189.029L397.539 188.896L397.431 188.786L397.288 188.926ZM391.616 198.405L391.481 198.553L391.662 198.718L391.787 198.508L391.616 198.405ZM382.12 185.098L381.938 185.18L381.938 185.18L382.12 185.098ZM380.611 157.315L380.715 157.144L380.516 157.022L380.426 157.238L380.611 157.315ZM390.391 163.317L390.205 163.243C388.372 167.882 388.745 174.462 391.608 180.836L391.79 180.754L391.973 180.672C389.141 174.368 388.794 167.903 390.577 163.39L390.391 163.317ZM391.79 180.754L391.608 180.836C393.066 184.082 394.991 186.877 397.146 189.066L397.288 188.926L397.431 188.786C395.311 186.633 393.412 183.877 391.973 180.672L391.79 180.754ZM397.288 188.926L397.117 188.823L391.444 198.303L391.616 198.405L391.787 198.508L397.46 189.029L397.288 188.926ZM391.616 198.405L391.75 198.258C387.988 194.828 384.691 190.332 382.303 185.016L382.12 185.098L381.938 185.18C384.347 190.544 387.677 195.085 391.481 198.553L391.616 198.405ZM382.12 185.098L382.303 185.016C377.907 175.23 377.635 164.99 380.795 157.391L380.611 157.315L380.426 157.238C377.216 164.955 377.505 175.311 381.938 185.18L382.12 185.098ZM380.611 157.315L380.506 157.485L390.286 163.487L390.391 163.317L390.496 163.146L380.715 157.144L380.611 157.315Z" fill="#B89CE0" mask="url(#path-13-inside-2_301_536)"/>
|
||||||
|
</g>
|
||||||
|
<path d="M253.091 151.919L248.885 154.422C248.855 154.44 248.837 154.472 248.837 154.507V193.758C248.837 193.795 248.857 193.829 248.891 193.847L437.434 291.455C437.501 291.489 437.58 291.441 437.58 291.366V223.907C437.58 223.806 437.449 223.769 437.396 223.854L429.311 236.85C429.304 236.862 429.294 236.872 429.282 236.88L421.326 242.235C421.312 242.245 421.3 242.258 421.293 242.273L416.555 251.67C416.516 251.749 416.401 251.742 416.372 251.659L413.027 242.259C413.025 242.253 413.022 242.247 413.019 242.241L405.04 228.674C405.032 228.661 405.022 228.651 405.01 228.642L397.718 223.635C397.662 223.597 397.585 223.624 397.566 223.69L391.413 244.773C391.385 244.867 391.252 244.87 391.222 244.776L385.938 228.778C385.917 228.716 385.843 228.69 385.788 228.725L378.559 233.414C378.512 233.444 378.449 233.43 378.419 233.382L361.707 206.129C361.669 206.067 361.58 206.065 361.539 206.125L354.594 216.319C354.549 216.386 354.448 216.374 354.419 216.299L348.233 200.403C348.217 200.362 348.175 200.336 348.13 200.34L330.879 202.023C330.827 202.028 330.78 201.993 330.771 201.942L325.684 174.193C325.669 174.111 325.567 174.082 325.512 174.144L316.113 184.562C316.052 184.63 315.939 184.587 315.939 184.495V154.605C315.939 154.533 315.864 154.484 315.798 154.514L309.757 157.238C309.703 157.262 309.641 157.235 309.621 157.18L302.873 137.658C302.846 137.578 302.738 137.566 302.694 137.638L294.094 151.671C294.045 151.75 293.924 151.726 293.91 151.634L291.672 137.482C291.669 137.466 291.663 137.451 291.653 137.438L287.757 132.193C287.715 132.137 287.63 132.14 287.592 132.199L284.289 137.387C284.263 137.428 284.211 137.444 284.166 137.426L277.425 134.64C277.403 134.63 277.385 134.614 277.374 134.592L274.917 129.718C274.879 129.642 274.77 129.646 274.736 129.724L271.505 137.201C271.468 137.288 271.343 137.28 271.317 137.189L269.209 129.871C269.181 129.774 269.043 129.775 269.017 129.873L262.071 155.501C262.044 155.6 261.903 155.599 261.877 155.5L258.048 140.578C258.024 140.485 257.896 140.476 257.859 140.565L253.132 151.871C253.124 151.891 253.11 151.908 253.091 151.919Z" fill="#E4E0FA"/>
|
||||||
|
<path d="M344.307 261.943L337.301 257.069C337.234 257.023 337.144 257.07 337.144 257.151V271.63C337.144 271.664 337.161 271.696 337.19 271.715L344.196 276.132C344.263 276.174 344.35 276.126 344.35 276.047V262.025C344.35 261.992 344.334 261.961 344.307 261.943Z" fill="#D9D9D9"/>
|
||||||
|
<path d="M353.379 259.656L346.373 256.282C346.307 256.25 346.23 256.298 346.23 256.372V277.032C346.23 277.068 346.249 277.101 346.28 277.119L353.286 281.114C353.353 281.152 353.436 281.104 353.436 281.027V259.746C353.436 259.708 353.414 259.673 353.379 259.656Z" fill="#795EF3"/>
|
||||||
|
<path d="M362.468 270.849L355.462 267.208C355.395 267.174 355.316 267.222 355.316 267.297V282.245C355.316 282.28 355.335 282.313 355.366 282.331L362.463 286.413C362.53 286.451 362.614 286.402 362.613 286.325L362.522 270.937C362.522 270.9 362.501 270.866 362.468 270.849Z" fill="#B7A8FF"/>
|
||||||
|
<path d="M386.105 284.116L379.099 279.242C379.033 279.196 378.942 279.243 378.942 279.324V295.809C378.942 295.844 378.961 295.877 378.992 295.895L385.998 299.963C386.064 300.002 386.148 299.953 386.148 299.876V284.198C386.148 284.165 386.132 284.134 386.105 284.116Z" fill="#D2C9FF"/>
|
||||||
|
<path d="M395.186 276.59L388.18 272.244C388.114 272.203 388.028 272.25 388.028 272.329V301.213C388.028 301.249 388.047 301.282 388.078 301.3L395.084 305.295C395.151 305.333 395.234 305.285 395.234 305.208V276.675C395.234 276.641 395.216 276.609 395.186 276.59Z" fill="#795EF3"/>
|
||||||
|
<path d="M404.266 286.445L397.26 282.804C397.193 282.77 397.114 282.818 397.114 282.893V306.426C397.114 306.461 397.133 306.495 397.164 306.512L404.262 310.594C404.329 310.632 404.412 310.584 404.412 310.507L404.32 286.533C404.32 286.496 404.299 286.462 404.266 286.445Z" fill="#B7A8FF"/>
|
||||||
|
<path d="M345.169 210.902L260.392 163.107C257.726 161.603 254.428 163.53 254.428 166.591V237.719C254.428 239.171 255.215 240.509 256.483 241.215L341.793 288.665C344.471 290.155 347.76 288.204 347.737 285.139L347.205 214.356C347.194 212.924 346.417 211.606 345.169 210.902Z" fill="#8D75F6"/>
|
||||||
|
<g opacity="0.4">
|
||||||
|
<rect x="261.994" y="171.69" width="90.66" height="1.33" rx="0.665" transform="rotate(28.95 261.994 171.69)" fill="#F0EDFF"/>
|
||||||
|
<rect x="261.205" y="180.362" width="88.66" height="1.33" rx="0.665" transform="rotate(27.4554 261.205 180.362)" fill="#F0EDFF"/>
|
||||||
|
<rect x="260.903" y="187.74" width="88.66" height="1.33" rx="0.665" transform="rotate(27.4554 260.903 187.74)" fill="#F0EDFF"/>
|
||||||
|
<rect x="262.207" y="196.53" width="85.66" height="1.33" rx="0.665" transform="rotate(27.4554 262.207 196.53)" fill="#F0EDFF"/>
|
||||||
|
<rect x="318.891" y="235.603" width="20.66" height="1.33" rx="0.665" transform="rotate(27.4554 318.891 235.603)" fill="#F0EDFF"/>
|
||||||
|
<rect x="319.886" y="249.48" width="20.66" height="1.33" rx="0.665" transform="rotate(27.4554 319.886 249.48)" fill="#F0EDFF"/>
|
||||||
|
<rect x="319.182" y="261.942" width="20.66" height="1.33" rx="0.665" transform="rotate(27.4554 319.182 261.942)" fill="#F0EDFF"/>
|
||||||
|
<rect x="320.405" y="241.941" width="15.66" height="1.33" rx="0.665" transform="rotate(27.4554 320.405 241.941)" fill="#F0EDFF"/>
|
||||||
|
<rect x="321.4" y="255.818" width="15.66" height="1.33" rx="0.665" transform="rotate(27.4554 321.4 255.818)" fill="#F0EDFF"/>
|
||||||
|
<rect x="320.695" y="268.28" width="15.66" height="1.33" rx="0.665" transform="rotate(27.4554 320.695 268.28)" fill="#F0EDFF"/>
|
||||||
|
</g>
|
||||||
|
<path d="M271.258 214.06C274.305 212.175 278.484 212.577 282.86 214.948C287.222 217.312 291.679 221.587 295.17 227.228C298.661 232.869 300.498 238.766 300.668 243.725C300.837 248.7 299.333 252.619 296.286 254.504C293.238 256.39 289.061 255.987 284.684 253.616C280.322 251.252 275.864 246.976 272.373 241.335C268.883 235.694 267.046 229.797 266.877 224.839C266.707 219.864 268.211 215.946 271.258 214.06Z" stroke="#CEC3FF"/>
|
||||||
|
<path d="M274.273 218.933C276.55 217.524 279.693 217.812 283.019 219.614C286.33 221.409 289.722 224.66 292.38 228.955C295.038 233.251 296.434 237.736 296.562 241.5C296.691 245.281 295.547 248.223 293.27 249.632C290.994 251.041 287.85 250.752 284.524 248.949C281.213 247.155 277.822 243.904 275.164 239.609C272.506 235.314 271.109 230.828 270.981 227.064C270.852 223.283 271.997 220.342 274.273 218.933Z" stroke="#CEC3FF"/>
|
||||||
|
<path d="M278.165 225.222C279.447 224.428 281.255 224.57 283.224 225.637C285.18 226.697 287.196 228.625 288.779 231.184C290.363 233.743 291.189 236.407 291.265 238.63C291.341 240.869 290.661 242.55 289.379 243.343C288.097 244.136 286.289 243.995 284.32 242.927C282.364 241.868 280.349 239.94 278.765 237.381C277.181 234.822 276.355 232.158 276.28 229.935C276.203 227.696 276.883 226.015 278.165 225.222Z" stroke="#CEC3FF"/>
|
||||||
|
<path d="M281.141 230.03C281.663 229.707 282.448 229.737 283.381 230.242C284.3 230.74 285.263 231.657 286.025 232.888C286.787 234.119 287.177 235.39 287.213 236.435C287.249 237.495 286.925 238.211 286.403 238.534C285.882 238.857 285.096 238.828 284.163 238.322C283.244 237.824 282.281 236.908 281.519 235.677C280.757 234.446 280.366 233.174 280.331 232.13C280.295 231.069 280.619 230.353 281.141 230.03Z" fill="#E6E0FF" stroke="#E6E0FF"/>
|
||||||
|
<path d="M237.416 281.767L106.071 356.66C103.374 358.198 103.381 362.088 106.083 363.617L226.292 431.615C227.498 432.297 228.972 432.307 230.187 431.639L364.687 357.771C367.44 356.259 367.456 352.308 364.714 350.774L241.351 281.751C240.127 281.066 238.634 281.072 237.416 281.767Z" fill="#D8D2E8"/>
|
||||||
|
<path d="M237.466 281.708L105.949 354.603C103.209 356.122 103.2 360.059 105.933 361.591L226.648 429.226C227.857 429.904 229.331 429.907 230.544 429.235L364.306 355.044C367.071 353.51 367.048 349.526 364.265 348.025L241.304 281.686C240.105 281.039 238.658 281.047 237.466 281.708Z" fill="#EFECF4"/>
|
||||||
|
<path d="M237.381 273.787L106.071 348.66C103.374 350.198 103.381 354.088 106.083 355.617L226.299 423.619C227.501 424.299 228.97 424.311 230.183 423.65L362.889 351.315C365.628 349.822 365.68 345.908 362.981 344.342L241.369 273.802C240.137 273.087 238.618 273.082 237.381 273.787Z" fill="white"/>
|
||||||
|
<path d="M237.414 273.737L105.949 346.602C103.209 348.122 103.2 352.059 105.933 353.591L226.667 421.237C227.866 421.909 229.326 421.918 230.533 421.262L362.301 349.623C365.056 348.125 365.094 344.183 362.368 342.632L241.332 273.759C240.119 273.069 238.635 273.06 237.414 273.737Z" fill="url(#paint1_linear_301_536)"/>
|
||||||
|
<path d="M235.663 280.241L117.347 345.557C114.595 347.076 114.59 351.031 117.339 352.556L228.888 414.465C230.083 415.129 231.534 415.136 232.735 414.485L352.542 349.543C355.323 348.035 355.337 344.049 352.566 342.523L239.526 280.239C238.324 279.577 236.865 279.577 235.663 280.241Z" stroke="#C0A2FD" stroke-width="1.2"/>
|
||||||
|
<path d="M181.365 320.154L181.365 314.247L202.327 325.863V332.089L181.365 320.154Z" fill="#C4B9DC"/>
|
||||||
|
<path d="M221.692 320.041L221.692 314.134L202.328 325.333V332.089L221.692 320.041Z" fill="#AFA0D8"/>
|
||||||
|
<path d="M181.361 319.432L181.361 313.525L202.323 325.141V331.367L181.361 319.432Z" fill="url(#paint2_linear_301_536)"/>
|
||||||
|
<path d="M221.688 319.319L221.688 313.412L202.324 324.611V331.367L221.688 319.319Z" fill="url(#paint3_linear_301_536)"/>
|
||||||
|
<path d="M181.483 313.334L202.24 301.594C202.303 301.558 202.381 301.559 202.443 301.597L221.604 313.338C221.731 313.416 221.731 313.6 221.604 313.679L202.444 325.513C202.381 325.552 202.303 325.553 202.239 325.517L181.482 313.682C181.347 313.605 181.348 313.411 181.483 313.334Z" fill="#EEEAFB"/>
|
||||||
|
<path d="M183.893 313.34L202.144 303.017C202.207 302.982 202.285 302.983 202.347 303.021L219.193 313.343C219.32 313.421 219.321 313.606 219.194 313.684L202.347 324.089C202.285 324.128 202.207 324.129 202.143 324.093L183.893 313.688C183.758 313.611 183.758 313.416 183.893 313.34Z" stroke="#DFD8EB" stroke-width="0.4"/>
|
||||||
|
<path d="M204.135 313.375L201.515 311.893C201.451 311.858 201.374 311.859 201.312 311.897L198.893 313.379C198.766 313.457 198.765 313.641 198.892 313.72L201.311 315.214C201.373 315.252 201.452 315.253 201.515 315.217L204.136 313.723C204.27 313.646 204.27 313.452 204.135 313.375Z" fill="#D9D1EB"/>
|
||||||
|
<path d="M296.625 348.576L296.854 342.673L317.35 355.093L317.109 361.314L296.625 348.576Z" fill="#C4B9DC"/>
|
||||||
|
<path d="M336.925 350.026L337.154 344.123L317.371 354.563L317.109 361.314L336.925 350.026Z" fill="#AFA0D8"/>
|
||||||
|
<path d="M296.648 347.854L296.877 341.951L317.374 354.371L317.132 360.593L296.648 347.854Z" fill="url(#paint4_linear_301_536)"/>
|
||||||
|
<path d="M336.949 349.304L337.178 343.401L317.395 353.841L317.133 360.593L336.949 349.304Z" fill="url(#paint5_linear_301_536)"/>
|
||||||
|
<path d="M297.006 341.766L318.203 330.839C318.268 330.805 318.345 330.81 318.406 330.85L337.097 343.324C337.221 343.407 337.214 343.591 337.085 343.665L317.48 354.748C317.416 354.784 317.338 354.782 317.275 354.743L296.992 342.113C296.861 342.031 296.868 341.837 297.006 341.766Z" fill="#EEEAFB"/>
|
||||||
|
<path d="M299.415 341.865L318.052 332.257C318.116 332.224 318.194 332.228 318.254 332.269L334.688 343.236C334.812 343.319 334.805 343.503 334.676 343.577L317.438 353.321C317.375 353.357 317.296 353.356 317.234 353.317L299.401 342.212C299.269 342.13 299.277 341.936 299.415 341.865Z" stroke="#DFD8EB" stroke-width="0.4"/>
|
||||||
|
<path d="M319.64 342.685L317.079 341.102C317.017 341.064 316.94 341.062 316.876 341.098L314.402 342.485C314.272 342.558 314.264 342.742 314.388 342.826L316.747 344.412C316.808 344.453 316.886 344.457 316.951 344.424L319.627 343.032C319.765 342.961 319.772 342.766 319.64 342.685Z" fill="#D9D1EB"/>
|
||||||
|
<path d="M233.802 206.027C229.421 208.881 230.151 215.459 231.064 218.392C231.244 219.031 232.972 221.545 233.802 222.375C235.123 223.695 235.296 222.541 237.703 222.375C240.109 222.209 244.341 217.479 247.246 215.487C250.151 213.495 248.408 206.027 247.744 205.28C247.213 204.682 244.812 205.031 243.678 205.28C241.354 204.948 236.126 204.632 233.802 206.027Z" fill="#5340AA"/>
|
||||||
|
<path d="M248.538 210.221C248.247 209.813 245.912 209.579 245.212 210.221C244.453 211.388 247.079 213.781 247.079 214.131C247.079 214.481 246.321 214.189 244.92 213.314C241.886 212.672 240.078 216.932 240.078 219.149C240.078 221.366 235.468 222.592 234.768 222.825C234.067 223.058 233.659 225.101 233.659 226.384C234.639 227.411 238.852 229.836 240.836 230.206V225.101C241.478 225.684 245.212 225.684 247.079 225.451C248.947 225.217 248.538 219.616 249.297 219.149C250.055 218.682 249.705 216.465 249.297 215.823C249.53 215.181 248.83 210.63 248.538 210.221Z" fill="#F6D1D2"/>
|
||||||
|
<path d="M241.569 213.907C243.366 212.238 246.063 213.425 247.186 214.228C246.705 214.549 246.705 215.619 246.758 216.743C246.812 217.866 246.009 219.578 245.528 219.899C245.474 219.257 244.672 216.582 242.906 216.743C241.141 216.903 241.997 220.167 241.997 221.237C241.087 222.146 236.968 222.2 236.058 222.2C237.128 221.986 239.75 220.274 239.91 219.899C240.071 219.525 239.322 215.994 241.569 213.907Z" fill="#BFB6EE"/>
|
||||||
|
<path d="M252.192 250.83L257.613 247.247C258.448 248.699 260.474 251.657 261.897 251.878C263.677 252.155 268.382 247.608 269.054 247.331C269.726 247.055 277.655 239.544 278.011 239.07C278.367 238.595 278.734 237.488 279.374 237.802C280.014 238.116 280.215 238.395 280.679 238.474C281.142 238.553 282.854 236.221 283.684 235.548C284.514 234.876 285.544 236.038 285.177 236.589C284.809 237.14 283.155 238.426 283.155 239.07C283.711 239.308 284.753 238.989 284.919 239.542C285.137 240.268 284.347 241.908 283.982 242.377C283.339 243.204 281.41 245.134 280.215 245.869C279.021 246.604 266.066 258.548 261.196 259.007C257.301 259.375 253.57 253.709 252.192 250.83Z" fill="#F6D1D2"/>
|
||||||
|
<path d="M223.942 327.477C223.438 328.037 222.263 326.917 221.703 327.477C221.703 327.925 220.975 332.795 222.991 333.243C225.006 333.691 226.349 332.067 227.077 331.675C227.805 331.284 233.515 325.462 234.186 325.07C234.858 324.678 236.146 321.655 235.138 321.263C234.13 320.871 232.955 321.207 231.947 321.263C230.94 321.319 228.586 323.268 228.418 324.388C228.25 325.507 224.446 326.917 223.942 327.477Z" fill="#593F95"/>
|
||||||
|
<path d="M222.563 329.067C221.98 328.568 222.321 325.18 222.563 323.549C224.056 323.549 227.114 323.695 227.405 324.278C227.769 325.007 227.249 326.725 227.041 327.818C226.832 328.911 223.292 329.692 222.563 329.067Z" fill="#F6D1D2"/>
|
||||||
|
<path d="M235.618 340.345C232.788 340.399 233.768 335.992 233.876 335.502C234.584 334.686 238.338 334.142 239.318 333.652C240.297 333.162 249.113 333.108 250.473 333.162C251.833 333.217 250.364 335.502 249.113 336.318C247.263 338.985 238.447 340.291 235.618 340.345Z" fill="#593F95"/>
|
||||||
|
<path d="M234.928 336.341C234.298 335.841 234.666 332.454 234.928 330.823C236.541 330.823 239.846 330.969 240.161 331.552C240.555 332.281 239.992 333.998 239.767 335.092C239.542 336.185 235.716 336.966 234.928 336.341Z" fill="#F6D1D2"/>
|
||||||
|
<path d="M221.224 250.485C220.435 248.442 221.343 242.584 221.896 239.91H224.36C224.57 242.15 224.943 247.205 224.764 249.5C224.54 252.368 221.896 251.382 221.224 250.485Z" fill="#F6D1D2"/>
|
||||||
|
<path d="M222.37 290.381C219.508 280.698 221.888 267.215 223.435 261.683C230.895 263.383 245.876 266.966 246.119 267.697C246.424 268.61 246.5 281.703 246.576 284.748C246.652 287.793 244.293 311.238 243.075 314.359C241.857 317.48 241.552 330.953 241.248 331.638C240.943 332.323 235.539 331.638 234.168 331.638C232.798 331.638 234.321 322.808 234.549 321.514C234.777 320.22 235.863 299.961 235.539 297.917C235.299 296.404 233.94 287.488 233.331 286.194C233.331 287.184 231.504 303.93 231.352 305.301C231.2 306.671 229.449 324.788 228.992 325.397C228.536 326.005 223.131 324.711 221.761 324.179C220.391 323.646 221.685 320.449 221.761 319.687L221.765 319.645C221.895 318.355 223.946 297.964 222.37 290.381Z" fill="#967AF1"/>
|
||||||
|
<path d="M230.674 224.225C226.595 222.103 222.516 231.228 220.986 236.055C220.78 236.685 220.424 239.079 220.475 240.376C220.527 241.673 223.589 242.14 224.523 242.711C224.886 244.164 223.537 253.661 223.589 254.854C223.641 256.048 221.825 263.728 222.696 265.146C227.12 270.897 237.548 272.255 239.053 272.201C240.557 272.147 246.414 272.04 246.414 270.052C245.608 267.58 246.897 249.365 246.897 247.431C247.166 248.613 249.853 251.837 251.196 252.965C253.388 253.094 257.16 248.864 258.772 246.733C258.7 246.5 258.243 245.609 256.987 243.908C254.132 236.463 243.321 228.916 240.465 228.916C237.61 228.916 235.774 226.876 230.674 224.225Z" fill="#C0B3FE"/>
|
||||||
|
<ellipse cx="412.194" cy="376.2" rx="24.9192" ry="15.554" fill="#A9A1C7"/>
|
||||||
|
<ellipse cx="412.194" cy="374.7" rx="24.9192" ry="14.054" fill="#D6D1F6"/>
|
||||||
|
<path d="M405.071 283.785C404.217 282.029 404.715 277.436 405.071 275.36C407.777 274.553 413.081 280.047 415.395 282.895V291.38C415.395 292.234 411.598 292.329 409.699 292.27V287.108C408.691 287.405 406.139 285.981 405.071 283.785Z" fill="#F6D1D2"/>
|
||||||
|
<path d="M424.972 310.534C427.704 306.602 425.277 299.224 423.833 297.474L420.223 314.617C420.667 314.895 422.239 314.467 424.972 310.534Z" fill="#F6D1D2"/>
|
||||||
|
<path d="M410.54 271.098C407.455 268.773 405.141 270.194 404.37 272.131C404.137 272.617 403.708 275.717 405.12 276.051C406.819 276.452 410.139 280.776 410.162 281.416C410.183 281.984 409.922 284.551 411.003 285.757C411.867 286.722 413.684 285.797 414.484 285.215C415.304 285.958 417.413 287.172 419.283 286.076C422.368 284.01 421.854 278.587 419.925 274.713C417.997 270.839 411.955 271.098 410.54 271.098Z" fill="#7962FD"/>
|
||||||
|
<path d="M390.215 291.637C390.897 292.745 393.88 304.337 395.074 305.445C395.074 304.762 398.824 298.967 398.909 298.285C398.995 297.603 395.074 289.677 393.966 288.228C393.079 287.069 391.096 283.654 390.215 282.091C389.818 281.892 388.92 281.614 388.511 282.091C387.999 282.687 387.232 281.58 386.295 281.494C385.357 281.409 382.545 281.068 382.545 282.091C382.545 283.114 387.403 286.608 388.511 287.205C389.619 287.801 389.534 290.529 390.215 291.637Z" fill="#F6D1D2"/>
|
||||||
|
<path d="M404.586 375.82C402.929 374.716 398.746 374.952 398.036 375.82C397.326 376.925 398.036 377.478 398.746 378.74C399.457 380.003 408.374 382.844 410.978 382.844C413.582 382.844 413.661 380.003 413.424 379.135C413.187 378.267 406.243 376.925 404.586 375.82Z" fill="#593F95"/>
|
||||||
|
<path d="M422.017 363.473C420.939 362.084 417.392 361.182 416.563 361.741C415.67 362.503 416.111 363.166 416.357 364.441C416.603 365.715 423.253 370.517 425.421 371.205C427.589 371.894 428.74 369.17 428.78 368.361C428.82 367.552 423.095 364.861 422.017 363.473Z" fill="#593F95"/>
|
||||||
|
<path d="M403.589 351.316C403.399 348.75 403.194 336.313 403.115 330.415C410.319 328.198 424.579 323.129 424.769 323.984C425.006 325.053 426.629 346.685 426.629 350.247C428.41 353.81 429.241 368.536 428.529 368.773C427.816 369.011 424.61 368.298 421.641 366.992C418.672 365.686 419.741 356.423 419.147 355.591C418.553 354.76 417.484 340.984 416.891 340.984C411.546 346.091 414.04 378.512 413.328 379.58C412.473 379.77 407.35 378.076 404.896 377.205C404.54 369.644 403.78 353.881 403.589 351.316Z" fill="#7F62FF"/>
|
||||||
|
<path d="M394.908 305.846C393.87 302.559 397.648 298.349 399.666 296.655C401.504 296.655 400.747 297.736 401.72 297.736C402.694 294.709 407.72 291.445 409.667 290.58C412.154 291.121 413.615 290.492 415.886 288.87C418.156 287.248 423.887 290.6 424.86 293.519C425.834 296.439 424.86 304.44 423.887 305.846C422.914 307.252 423.887 318.065 423.887 320.011C424.86 321.958 424.86 324.445 424.86 325.201C424.86 325.958 422.698 328.337 415.886 332.23C410.436 335.344 405.109 332.446 403.126 330.608C403.054 327.256 402.953 319.427 403.126 314.929C403.342 309.306 402.369 307.468 400.747 307.468C399.125 307.468 397.179 308.333 394.908 305.846Z" fill="#AB87FF"/>
|
||||||
|
<ellipse cx="399.41" cy="412.97" rx="20.4594" ry="11.7531" fill="#A6A1C8"/>
|
||||||
|
<ellipse cx="399.41" cy="412.023" rx="20.4594" ry="10.8061" fill="#DBD6F3"/>
|
||||||
|
<ellipse cx="399.527" cy="412.023" rx="19.1257" ry="9.95435" fill="#F0ECFD"/>
|
||||||
|
<ellipse cx="399.527" cy="412.023" rx="18.1737" ry="9.02164" fill="#D8D1F6"/>
|
||||||
|
<ellipse cx="350.618" cy="440.981" rx="22.8113" ry="13.1041" fill="#EEB965"/>
|
||||||
|
<ellipse cx="350.618" cy="439.925" rx="22.8113" ry="12.0483" fill="#FBE59F"/>
|
||||||
|
<ellipse cx="350.749" cy="439.925" rx="21.3243" ry="11.0986" fill="#FFF7CB"/>
|
||||||
|
<ellipse cx="350.749" cy="439.925" rx="20.2629" ry="10.0587" fill="#FEE59E"/>
|
||||||
|
<ellipse cx="339.249" cy="406.455" rx="25.2106" ry="14.8862" fill="#EEB965"/>
|
||||||
|
<ellipse cx="339.249" cy="405.548" rx="25.2106" ry="13.9791" fill="#FBE59F"/>
|
||||||
|
<ellipse cx="339.393" cy="405.548" rx="23.5672" ry="12.8772" fill="#FFF7CB"/>
|
||||||
|
<ellipse cx="339.393" cy="405.548" rx="22.3941" ry="11.6707" fill="#FEE59E"/>
|
||||||
|
<path d="M182.068 210.122L169.401 202.437V248.263L182.068 260.218V210.122Z" fill="#D3D0FF"/>
|
||||||
|
<path d="M182.068 210.121L200.284 201.726V247.552L182.068 260.216V210.121Z" fill="#B5AEFE"/>
|
||||||
|
<path d="M182.163 211.229L169.178 202.165L182.163 193.1L198.088 202.165L182.163 211.229Z" fill="#5E6DD1"/>
|
||||||
|
<path d="M198.145 241.83C197.961 241.645 198.223 237.241 198.377 235.062C199.264 235.062 200.201 236.232 201.269 236.392C203.642 236.75 209.416 240.241 209.83 241.83C209.976 242.389 198.377 242.061 198.145 241.83Z" fill="#483685"/>
|
||||||
|
<path d="M202.895 236.166C202.71 235.981 202.972 231.577 203.126 229.398C204.013 229.398 204.95 230.568 206.018 230.729C208.391 231.086 214.165 234.577 214.579 236.166C214.725 236.726 203.126 236.397 202.895 236.166Z" fill="#483685"/>
|
||||||
|
<path d="M198.543 237.316C197.831 236.714 198.143 233.884 198.12 232.629L202.035 230.81C202.469 232.522 203.268 236.33 202.501 237.316C201.542 238.549 199.433 238.069 198.543 237.316Z" fill="#FFC2C9"/>
|
||||||
|
<path d="M203.292 231.652C202.58 231.05 202.892 228.221 202.869 226.965L206.785 225.147C207.218 226.859 208.017 230.666 207.25 231.652C206.291 232.885 204.182 232.406 203.292 231.652Z" fill="#FFC2C9"/>
|
||||||
|
<path d="M183.73 203.342C179.354 200.992 179.901 194.188 180.722 191.08C185.68 192.194 194.611 193.531 194.954 193.577C195.382 193.634 203.459 196.462 206.886 200.153C209.443 202.908 210.081 212.604 210.081 213.862C210.081 216.436 209.626 227.606 209.443 228.121C209.259 228.636 204.429 228.464 203.653 228.121C202.876 227.778 203.347 226.291 203.347 221.074C202.39 208.301 200.825 209.345 198.91 207.557C196.996 205.769 189.2 206.28 183.73 203.342Z" fill="#4A3685"/>
|
||||||
|
<path d="M174.843 204.209C170.467 201.692 171.014 194.408 171.834 191.08C176.793 192.273 186.796 194.669 187.139 194.718C187.567 194.78 196.2 199.494 200.915 201.76C205.63 204.025 204.527 213.944 204.527 215.291C204.527 216.638 204.711 233.904 204.527 234.455C204.344 235.006 197.67 234.823 196.893 234.455C196.117 234.088 196.587 232.496 196.587 226.91C195.63 213.235 191.938 210.636 190.023 208.722C188.108 206.807 180.313 207.354 174.843 204.209Z" fill="#604EA2"/>
|
||||||
|
<path d="M190.388 159.069C187.323 155.336 183.423 156.952 182.643 156.952C180.655 156.636 176.469 156.005 175.622 156.005C174.563 156.005 170.774 158.234 169.214 159.905C167.654 161.577 166.484 167.483 165.035 177.179C163.876 184.935 169.158 188.694 171.944 189.604C171.982 189.864 171.677 190.794 171.944 192.176C175.176 197.915 185.039 197.127 190.778 196.235C195.369 195.522 199.266 189.846 200.64 187.097C201.681 181.246 203.349 169.612 201.699 169.879C199.638 170.214 196.907 168.932 195.458 168.152C194.01 167.372 193.453 162.803 190.388 159.069Z" fill="#88D9FD"/>
|
||||||
|
<path d="M187.101 152.996C188.438 151.614 188.549 146.514 188.438 144.136C188.413 143.412 187.546 142.576 186.376 141.963C185.206 141.35 176.291 144.136 174.396 144.861C172.502 145.585 172.725 152.104 174.786 156.729C176.848 161.354 181.64 161.354 183.311 160.518C184.983 159.682 184.426 155.113 184.649 154.612C184.872 154.11 185.429 154.723 187.101 152.996Z" fill="#FFC2C9"/>
|
||||||
|
<path d="M178.246 147.182C180.48 147.051 183.884 144.5 185.307 143.241C186.689 142.569 188.215 145.808 188.661 145.808C188.939 143.412 188.048 139.233 185.93 139.233C183.813 139.233 183.311 137.227 180.024 137.283C176.736 137.338 175.845 139.734 173.895 140.793C171.944 141.852 169.326 145.529 170.161 149.04C170.997 152.55 169.66 157.732 167.208 161.298C164.757 164.864 165.592 168.542 166.094 168.542C166.372 164.92 173.115 158.846 174.953 157.342C176.792 155.838 177.907 151.547 176.792 150.767C174.396 149.764 174.285 147.591 175.232 146.309C176.179 145.028 177.628 148.204 177.907 148.204C177.635 147.58 178.02 147.263 178.246 147.182Z" fill="#483D8D"/>
|
||||||
|
<path d="M197.017 174.091L177.433 185.611L191.718 194.711L207.96 187.339L197.017 174.091Z" fill="#B8AAFD"/>
|
||||||
|
<path d="M191.7 194.397V174.56C191.7 174.484 191.742 174.415 191.81 174.381L217.43 161.571C217.566 161.503 217.726 161.607 217.719 161.759L216.817 182.84C216.814 182.914 216.77 182.981 216.702 183.013L191.984 194.578C191.852 194.64 191.7 194.543 191.7 194.397Z" fill="#7A60FE"/>
|
||||||
|
<path d="M186.393 184.911C182.41 185.409 176.082 183.417 175.584 183.275C175.584 185.243 175.641 189.277 175.868 189.675C176.722 190.173 180.49 189.746 182.837 189.888C185.184 190.031 191.655 188.964 193.575 188.68C195.495 188.395 195.424 187.4 195.424 186.617C197.984 185.835 197.557 184.911 197.557 184.768C196.704 185.11 196.49 184.342 196.49 183.915C197.984 182.919 196.562 181.711 195.85 182.137C195.21 182.991 194.357 183.275 193.93 183.275C193.504 183.275 193.646 181.782 192.864 182.137C192.082 182.493 190.375 184.413 186.393 184.911Z" fill="#FFC2C9"/>
|
||||||
|
<path d="M177.024 182.506C171.963 182.098 171.718 175.405 171.473 174.262C169.759 174.262 166.211 174.45 165.297 175.234C165.074 177.462 163.963 181.935 166.331 185.282C168.698 188.629 176.478 191.867 177.376 191.622C178.274 191.377 177.024 183.405 177.024 182.506Z" fill="url(#paint6_linear_301_536)"/>
|
||||||
|
<path d="M218.335 172.383C218.046 171.804 216.792 172.286 216.31 172.286C215.538 172.19 215.538 174.146 215.056 174.427C214.574 174.708 214.477 175.275 213.899 175.758C213.471 176.114 214.33 176.444 214.919 176.593C215.001 176.614 215.061 176.682 215.085 176.763C215.293 177.443 216.357 177.783 217.081 177.783C217.853 177.783 219.01 176.915 219.01 175.275C219.01 173.636 218.624 172.961 218.335 172.383Z" fill="#FFC2C9"/>
|
||||||
|
<path d="M22.6585 291.6C23.5666 290.832 24.0735 284.712 24.2135 281.748L108.395 325.229C107.856 328.267 106.661 334.637 106.19 335.813C105.72 336.989 102.662 337.283 101.192 337.283L32.6993 298.061C29.5561 296.227 23.1475 292.368 22.6585 291.6Z" fill="#D9D0FF"/>
|
||||||
|
<path d="M24.1937 280.925L134.226 219.83C134.286 219.797 134.359 219.797 134.419 219.83L216.293 264.683C216.357 264.718 216.397 264.785 216.397 264.858V274.458C216.397 275.187 216.019 275.848 215.38 276.199C186.253 292.234 129.791 323.382 129.095 324.031C128.216 324.852 104.989 338.166 103.522 338.401C102.055 338.636 23.1675 293.003 22.8156 292.71C22.4636 292.417 22.7569 290.774 23.1675 290.774C23.4607 291.068 98.6526 334.296 103.346 336.486C107.414 336.799 107.414 329.603 107.414 327.412C107.414 325.667 52.1402 296.036 24.1889 281.272C24.0485 281.198 24.0548 281.002 24.1937 280.925Z" fill="url(#paint7_linear_301_536)"/>
|
||||||
|
<path d="M216.326 264.981L107.741 327.332V333.483L104.135 338.573L215.307 275.947C215.936 275.592 216.326 274.926 216.326 274.204V264.981Z" fill="url(#paint8_linear_301_536)"/>
|
||||||
|
<path d="M150.899 284.991C150.899 297.636 141.462 307.887 119.528 307.887C91.8713 307.887 88.1563 297.636 88.1563 284.991C88.1563 272.347 102.202 262.096 119.528 262.096C136.853 262.096 150.899 272.347 150.899 284.991Z" fill="#1F4EA7"/>
|
||||||
|
<ellipse cx="119.204" cy="282.666" rx="30.325" ry="20.5698" fill="#EA7C0D"/>
|
||||||
|
<ellipse cx="119.204" cy="280.788" rx="30.325" ry="18.6917" fill="#FFD341"/>
|
||||||
|
<ellipse cx="119.205" cy="280.788" rx="26.703" ry="15.8297" fill="#F6F7F7"/>
|
||||||
|
<path d="M91.8839 272.737L91.8839 255.078L106.029 263.907L91.8839 272.737Z" stroke="#C9F0FF" stroke-width="3"/>
|
||||||
|
<path d="M118.041 239.21C107.415 240.049 99.2501 246.438 99.8058 253.48C100.712 261.965 102.766 279.389 103.731 281.211C104.937 283.489 110.537 289.451 120.709 288.63C130.444 287.844 136.421 282.417 137.355 276.255C138.103 271.325 137.355 256.816 137.355 250.266C136.8 243.223 128.668 238.372 118.041 239.21Z" fill="url(#paint9_linear_301_536)"/>
|
||||||
|
<ellipse cx="118.429" cy="251.3" rx="17.4308" ry="10.4784" transform="rotate(-7.56173 118.429 251.3)" fill="#7FBDFF"/>
|
||||||
|
<path d="M117.227 248.343C125.373 247.262 132.515 250.44 133.179 255.441C133.185 255.486 133.188 255.532 133.193 255.577C130.392 258.575 125.538 260.927 119.808 261.688C113.091 262.58 106.963 261.048 103.657 258.062C104.083 253.531 109.787 249.331 117.227 248.343Z" fill="#FEB05B"/>
|
||||||
|
<defs>
|
||||||
|
<filter id="filter0_d_301_536" x="378.476" y="157.315" width="22.8124" height="45.0908" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
|
||||||
|
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
|
||||||
|
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
|
||||||
|
<feOffset dx="2" dy="2"/>
|
||||||
|
<feGaussianBlur stdDeviation="1"/>
|
||||||
|
<feComposite in2="hardAlpha" operator="out"/>
|
||||||
|
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0"/>
|
||||||
|
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_301_536"/>
|
||||||
|
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_301_536" result="shape"/>
|
||||||
|
</filter>
|
||||||
|
<linearGradient id="paint0_linear_301_536" x1="250.919" y1="23.0442" x2="450.837" y2="348.844" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#A793FF"/>
|
||||||
|
<stop offset="0.293978" stop-color="#5F43DA"/>
|
||||||
|
<stop offset="1" stop-color="#5F43DA"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="paint1_linear_301_536" x1="281.898" y1="300.174" x2="194.758" y2="399.238" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#DFD6EC"/>
|
||||||
|
<stop offset="1" stop-color="#EBE5F2"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="paint2_linear_301_536" x1="181.854" y1="316.941" x2="201.738" y2="328.653" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#DDD6F0"/>
|
||||||
|
<stop offset="1" stop-color="#DBD3ED"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="paint3_linear_301_536" x1="222.792" y1="316.412" x2="202.908" y2="328.123" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#C0AED5"/>
|
||||||
|
<stop offset="1" stop-color="#CAB9E3"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="paint4_linear_301_536" x1="297.238" y1="345.384" x2="316.653" y2="357.858" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#DDD6F0"/>
|
||||||
|
<stop offset="1" stop-color="#DBD3ED"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="paint5_linear_301_536" x1="338.165" y1="346.442" x2="317.842" y2="357.374" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#C0AED5"/>
|
||||||
|
<stop offset="1" stop-color="#CAB9E3"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="paint6_linear_301_536" x1="165.519" y1="177.357" x2="177.7" y2="190.277" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#88D9FD"/>
|
||||||
|
<stop offset="1" stop-color="#3AB5EC"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="paint7_linear_301_536" x1="119.528" y1="219.777" x2="119.528" y2="338.402" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#877AFF"/>
|
||||||
|
<stop offset="1" stop-color="#575DFF"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="paint8_linear_301_536" x1="160.23" y1="264.981" x2="160.23" y2="338.573" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#4B42EE"/>
|
||||||
|
<stop offset="1" stop-color="#5555FB"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="paint9_linear_301_536" x1="117.584" y1="239.246" x2="121.488" y2="288.717" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset="0.351816" stop-color="#C9F0FF"/>
|
||||||
|
<stop offset="1" stop-color="#93D9F0"/>
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 38 KiB |
3
src/assets/img/LOGO.svg
Normal file
|
After Width: | Height: | Size: 5.4 KiB |
3
src/assets/option.svg
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M3.04159 2.45834C2.71942 2.45834 2.45825 2.7195 2.45825 3.04167V6.83334C2.45825 7.1555 2.71942 7.41667 3.04159 7.41667H6.83325C7.15542 7.41667 7.41659 7.1555 7.41659 6.83334V3.04167C7.41659 2.7195 7.15542 2.45834 6.83325 2.45834H3.04159ZM3.62492 6.25V3.625H6.24992V6.25H3.62492ZM9.16659 2.45834C8.84442 2.45834 8.58325 2.7195 8.58325 3.04167V6.83334C8.58325 7.1555 8.84442 7.41667 9.16659 7.41667H12.9583C13.2804 7.41667 13.5416 7.1555 13.5416 6.83334V3.04167C13.5416 2.7195 13.2804 2.45834 12.9583 2.45834H9.16659ZM9.74992 6.25V3.625H12.3749V6.25H9.74992ZM2.45825 9.16667C2.45825 8.8445 2.71942 8.58334 3.04159 8.58334H6.83325C7.15542 8.58334 7.41659 8.8445 7.41659 9.16667V12.9583C7.41659 13.2805 7.15542 13.5417 6.83325 13.5417H3.04159C2.71942 13.5417 2.45825 13.2805 2.45825 12.9583V9.16667ZM3.62492 9.75V12.375H6.24992V9.75H3.62492ZM9.16659 8.58334C8.84442 8.58334 8.58325 8.8445 8.58325 9.16667V12.9583C8.58325 13.2805 8.84442 13.5417 9.16659 13.5417H12.9583C13.2804 13.5417 13.5416 13.2805 13.5416 12.9583V9.16667C13.5416 8.8445 13.2804 8.58334 12.9583 8.58334H9.16659ZM9.74992 12.375V9.75H12.3749V12.375H9.74992Z" fill="#737478"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.3 KiB |
@ -3,6 +3,10 @@ import { useAppStore } from '@/stores';
|
|||||||
import { IconExport, IconFile, IconCaretDown } from '@arco-design/web-vue/es/icon';
|
import { IconExport, IconFile, IconCaretDown } from '@arco-design/web-vue/es/icon';
|
||||||
import { fetchMenusTree } from '@/api/all';
|
import { fetchMenusTree } from '@/api/all';
|
||||||
const lists = ref([]);
|
const lists = ref([]);
|
||||||
|
const router = useRouter();
|
||||||
|
const clickExit = () => {
|
||||||
|
router.replace('/login');
|
||||||
|
};
|
||||||
const getMenus = async () => {
|
const getMenus = async () => {
|
||||||
const res = await fetchMenusTree();
|
const res = await fetchMenusTree();
|
||||||
lists.value = res;
|
lists.value = res;
|
||||||
@ -12,12 +16,6 @@ onMounted(() => {
|
|||||||
});
|
});
|
||||||
const appStore = useAppStore();
|
const appStore = useAppStore();
|
||||||
|
|
||||||
const { isFullscreen, toggle: toggleFullScreen } = useFullscreen();
|
|
||||||
const avatar = computed(
|
|
||||||
() => '//p3-armor.byteimg.com/tos-cn-i-49unhts6dw/dfdba5317c0c20ce20e64fac803d52bc.svg~tplv-49unhts6dw-image.image',
|
|
||||||
);
|
|
||||||
const topMenu = computed(() => appStore.topMenu && appStore.menu);
|
|
||||||
const toggleDrawerMenu = inject('toggleDrawerMenu') as () => void;
|
|
||||||
|
|
||||||
function setServerMenu() {
|
function setServerMenu() {
|
||||||
appStore.fetchServerMenuConfig();
|
appStore.fetchServerMenuConfig();
|
||||||
@ -25,6 +23,29 @@ function setServerMenu() {
|
|||||||
}
|
}
|
||||||
const handleSelect = (index: any) => {
|
const handleSelect = (index: any) => {
|
||||||
console.log(index);
|
console.log(index);
|
||||||
|
if (index == 0) {
|
||||||
|
router.push('/workplace');
|
||||||
|
} else {
|
||||||
|
router.push('/dataEngine/dataEngine/hotTranslation');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleDopdownClick = (index: any, ind: any) => {
|
||||||
|
let children = lists.value[index].children;
|
||||||
|
let indPath = children[ind];
|
||||||
|
if (indPath.name == '行业热门话题洞察') {
|
||||||
|
router.push('/dataEngine/dataEngine/hotTranslation');
|
||||||
|
} else if (indPath.name == '行业词云') {
|
||||||
|
router.push('/dataEngine/dataEngine/hotCloud');
|
||||||
|
} else if (indPath.name == '行业关键词动向') {
|
||||||
|
router.push('/dataEngine/dataEngine/keyWord');
|
||||||
|
} else if (indPath.name == '用户痛点观察') {
|
||||||
|
router.push('/dataEngine/dataEngine/userPainPoints');
|
||||||
|
} else if (indPath.name == '重点品牌动向') {
|
||||||
|
router.push('/dataEngine/dataEngine/keyBrandMovement');
|
||||||
|
} else if (indPath.name == '用户画像') {
|
||||||
|
router.push('/dataEngine/dataEngine/userPersona');
|
||||||
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@ -32,20 +53,22 @@ const handleSelect = (index: any) => {
|
|||||||
<div class="navbar">
|
<div class="navbar">
|
||||||
<div class="left-side">
|
<div class="left-side">
|
||||||
<a-space>
|
<a-space>
|
||||||
<img src="@/assets/LOGO.svg" alt="" />
|
<img src="@/assets/logo.svg" alt="" />
|
||||||
</a-space>
|
</a-space>
|
||||||
</div>
|
</div>
|
||||||
<div class="center-side">
|
<div class="center-side">
|
||||||
<div class="menu-demo">
|
<div class="menu-demo">
|
||||||
<a-menu mode="horizontal" :default-selected-keys="['1']">
|
<a-menu mode="horizontal" :default-selected-keys="['1']">
|
||||||
<a-menu-item :key="'1'">
|
<a-menu-item :key="'1'" @click="handleSelect(0)">
|
||||||
<view>工作台</view>
|
<view>工作台</view>
|
||||||
</a-menu-item>
|
</a-menu-item>
|
||||||
<a-menu-item v-for="(item, index) in lists" :key="index + 2">
|
<a-menu-item v-for="(item, index) in lists" :key="index + 2">
|
||||||
<a-dropdown @select="handleSelect" :popup-max-height="false">
|
<a-dropdown :popup-max-height="false">
|
||||||
<a-button>{{ item.name }}<icon-caret-down /></a-button>
|
<a-button>{{ item.name }}<icon-caret-down /></a-button>
|
||||||
<template #content>
|
<template #content>
|
||||||
<a-doption v-for="(child, index) in item.children" :key="index">{{ child.name }}</a-doption>
|
<a-doption v-for="(child, ind) in item.children" :key="ind" @click="handleDopdownClick(index, ind)">{{
|
||||||
|
child.name
|
||||||
|
}}</a-doption>
|
||||||
</template>
|
</template>
|
||||||
</a-dropdown>
|
</a-dropdown>
|
||||||
</a-menu-item>
|
</a-menu-item>
|
||||||
@ -56,8 +79,33 @@ const handleSelect = (index: any) => {
|
|||||||
<li>
|
<li>
|
||||||
<a-dropdown trigger="click">
|
<a-dropdown trigger="click">
|
||||||
<a-avatar class="cursor-pointer" :size="32">
|
<a-avatar class="cursor-pointer" :size="32">
|
||||||
<img alt="avatar" :src="avatar" />
|
<img alt="avatar" src="@/assets/avatar.svg" />
|
||||||
</a-avatar>
|
</a-avatar>
|
||||||
|
<template #content>
|
||||||
|
<div style="padding: 14px">
|
||||||
|
<a-doption>
|
||||||
|
<a-space @click="setServerMenu">
|
||||||
|
<img src="@/assets/option.svg" style="width: 16px; height: 16px" />
|
||||||
|
<span style="width: 140px; font-size: 12px">管理中心</span>
|
||||||
|
<icon-right />
|
||||||
|
</a-space>
|
||||||
|
</a-doption>
|
||||||
|
<a-doption>
|
||||||
|
<a-space>
|
||||||
|
<img src="@/assets/change.svg" style="width: 16px; height: 16px" />
|
||||||
|
<span style="width: 140px; font-size: 12px">切换企业账号</span>
|
||||||
|
<icon-right />
|
||||||
|
</a-space>
|
||||||
|
</a-doption>
|
||||||
|
<a-doption>
|
||||||
|
<a-space @click="clickExit">
|
||||||
|
<img src="@/assets/exit.svg" style="width: 16px; height: 16px" />
|
||||||
|
<span style="width: 140px; font-size: 12px">退出登录</span>
|
||||||
|
<icon-right />
|
||||||
|
</a-space>
|
||||||
|
</a-doption>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
</a-dropdown>
|
</a-dropdown>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
@ -22,6 +22,12 @@ const paddingStyle = computed(() => {
|
|||||||
const paddingTop = navbar.value ? { paddingTop: navbarHeight } : {};
|
const paddingTop = navbar.value ? { paddingTop: navbarHeight } : {};
|
||||||
return { ...paddingLeft, ...paddingTop };
|
return { ...paddingLeft, ...paddingTop };
|
||||||
});
|
});
|
||||||
|
const showSidebar = ref(false);
|
||||||
|
const route = useRoute();
|
||||||
|
// onMounted(() => {
|
||||||
|
// showSidebar.value = route.meta.requiresSidebar == true;
|
||||||
|
// });
|
||||||
|
|
||||||
const setCollapsed = (val: boolean) => {
|
const setCollapsed = (val: boolean) => {
|
||||||
appStore.updateSettings({ menuCollapse: val });
|
appStore.updateSettings({ menuCollapse: val });
|
||||||
};
|
};
|
||||||
|
|||||||
@ -19,14 +19,25 @@ const router = createRouter({
|
|||||||
history: createWebHistory(import.meta.env.BASE_URL),
|
history: createWebHistory(import.meta.env.BASE_URL),
|
||||||
routes: [
|
routes: [
|
||||||
{
|
{
|
||||||
path: '/',
|
path: '/login',
|
||||||
|
name: 'login',
|
||||||
|
component: () => import('@/views/components/login'),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/workplace',
|
||||||
name: 'workplace',
|
name: 'workplace',
|
||||||
component: () => import('@/views/components/workplace'),
|
component: () => import('@/views/components/workplace'),
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: '/',
|
||||||
|
name: 'dataEngine',
|
||||||
|
redirect: '/dataEngine/dataEngine/hotTranslation',
|
||||||
|
children: [...appRoutes, REDIRECT_MAIN, NOT_FOUND_ROUTE],
|
||||||
|
},
|
||||||
{
|
{
|
||||||
path: '/dataEngine',
|
path: '/dataEngine',
|
||||||
name: 'dataEngine',
|
name: 'dataEngine',
|
||||||
redirect: '@/views/components/dataEngine',
|
redirect: '/dataEngine/dataEngine/hotTranslation',
|
||||||
children: [...appRoutes, REDIRECT_MAIN, NOT_FOUND_ROUTE],
|
children: [...appRoutes, REDIRECT_MAIN, NOT_FOUND_ROUTE],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@ -9,6 +9,7 @@ const COMPONENTS: AppRouteRecordRaw = {
|
|||||||
icon: IconBookmark,
|
icon: IconBookmark,
|
||||||
requiresAuth: true,
|
requiresAuth: true,
|
||||||
roles: ['*'],
|
roles: ['*'],
|
||||||
|
requiresSidebar: true,
|
||||||
},
|
},
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
|
|||||||
@ -41,12 +41,13 @@
|
|||||||
--arco-primary-1: #f5f2ff !important; /* 浅色背景 */
|
--arco-primary-1: #f5f2ff !important; /* 浅色背景 */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.arco-checkbox-checked .arco-checkbox-icon {
|
||||||
|
background-color: #573dcb !important;
|
||||||
|
}
|
||||||
/* 强制所有组件使用主色 */
|
/* 强制所有组件使用主色 */
|
||||||
.arco-btn-primary,
|
.arco-btn-primary,
|
||||||
.arco-menu-selected,
|
.arco-menu-selected,
|
||||||
.arco-switch-checked,
|
.arco-switch-checked,
|
||||||
.arco-radio-checked,
|
|
||||||
.arco-checkbox-checked,
|
|
||||||
.arco-slider-button,
|
.arco-slider-button,
|
||||||
.arco-tabs-header-item-active,
|
.arco-tabs-header-item-active,
|
||||||
.arco-alert-info,
|
.arco-alert-info,
|
||||||
@ -98,8 +99,6 @@
|
|||||||
|
|
||||||
/* 强制所有组件使用主色 */
|
/* 强制所有组件使用主色 */
|
||||||
.arco-switch,
|
.arco-switch,
|
||||||
.arco-radio-checked,
|
|
||||||
.arco-checkbox-checked,
|
|
||||||
.arco-slider-button,
|
.arco-slider-button,
|
||||||
.arco-link {
|
.arco-link {
|
||||||
--color-primary-6: var(--arco-primary-6) !important;
|
--color-primary-6: var(--arco-primary-6) !important;
|
||||||
|
|||||||
3
src/views/components/dashboard/index.vue
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<template>
|
||||||
|
<LayoutBasic> </LayoutBasic>
|
||||||
|
</template>
|
||||||
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<view>
|
<view>
|
||||||
<topHeader ref="topHeaderRef"></topHeader>
|
<topHeader ref="topHeaderRef" @search="search"></topHeader>
|
||||||
<a-space direction="vertical" style="background-color: #fff; width: 100%; padding: 24px; margin: 24px 0">
|
<a-space direction="vertical" style="background-color: #fff; width: 100%; padding: 24px; margin: 24px 0">
|
||||||
<a-space align="center">
|
<a-space align="center">
|
||||||
<span>行业词云</span>
|
<span>行业词云</span>
|
||||||
@ -65,12 +65,29 @@ const topHeaderRef = ref();
|
|||||||
const selectedIndustry = computed(() => topHeaderRef.value?.selectedIndustry);
|
const selectedIndustry = computed(() => topHeaderRef.value?.selectedIndustry);
|
||||||
const selectedSubCategory = computed(() => topHeaderRef.value?.selectedSubCategory);
|
const selectedSubCategory = computed(() => topHeaderRef.value?.selectedSubCategory);
|
||||||
const selectedTimePeriod = computed(() => topHeaderRef.value?.selectedTimePeriod);
|
const selectedTimePeriod = computed(() => topHeaderRef.value?.selectedTimePeriod);
|
||||||
|
// 监听筛选条件变化
|
||||||
|
watch([selectedTimePeriod, selectedSubCategory], () => {
|
||||||
|
getIndustryTerms();
|
||||||
|
});
|
||||||
|
const search = () => {
|
||||||
|
getIndustryTerms();
|
||||||
|
};
|
||||||
|
watch(selectedIndustry, () => {
|
||||||
|
selectedSubCategory.value = 0;
|
||||||
|
getIndustryTerms();
|
||||||
|
});
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
getIndustryTerms();
|
||||||
|
});
|
||||||
const getIndustryTerms = async () => {
|
const getIndustryTerms = async () => {
|
||||||
const params = {
|
const params = {
|
||||||
industry_id: selectedIndustry.value,
|
industry_id: selectedIndustry.value,
|
||||||
time_dimension: selectedTimePeriod.value,
|
time_dimension: selectedTimePeriod.value,
|
||||||
};
|
};
|
||||||
|
if (selectedSubCategory.value != 0) {
|
||||||
|
params['industry_id'] = selectedSubCategory.value;
|
||||||
|
}
|
||||||
const res = await fetchindustryTerms(params);
|
const res = await fetchindustryTerms(params);
|
||||||
// 这里需要根据API返回的数据结构处理成tagRows需要的格式
|
// 这里需要根据API返回的数据结构处理成tagRows需要的格式
|
||||||
tagRows.value = processTagData(res);
|
tagRows.value = processTagData(res);
|
||||||
@ -107,7 +124,7 @@ const getPadding = (rowIndex, tagIndex) => {
|
|||||||
|
|
||||||
// 处理API返回数据为tagRows格式
|
// 处理API返回数据为tagRows格式
|
||||||
const processTagData = (apiData) => {
|
const processTagData = (apiData) => {
|
||||||
const totalGroups = 7; // 总组数
|
const totalGroups = 4; // 总组数
|
||||||
const middleIndex = Math.floor(totalGroups / 2); // 中间位置(索引3)
|
const middleIndex = Math.floor(totalGroups / 2); // 中间位置(索引3)
|
||||||
const chunkSize = Math.ceil(apiData.length / totalGroups); // 每组大小
|
const chunkSize = Math.ceil(apiData.length / totalGroups); // 每组大小
|
||||||
const arr = [];
|
const arr = [];
|
||||||
@ -133,15 +150,6 @@ const processTagData = (apiData) => {
|
|||||||
|
|
||||||
return arr.filter(Boolean); // 移除可能的空项
|
return arr.filter(Boolean); // 移除可能的空项
|
||||||
};
|
};
|
||||||
|
|
||||||
// 监听筛选条件变化
|
|
||||||
watch([selectedIndustry, selectedTimePeriod], () => {
|
|
||||||
getIndustryTerms();
|
|
||||||
});
|
|
||||||
|
|
||||||
onMounted(() => {
|
|
||||||
getIndustryTerms();
|
|
||||||
});
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<view>
|
<view>
|
||||||
<topHeader ref="topHeaderRef"></topHeader>
|
<topHeader ref="topHeaderRef" @search="search"></topHeader>
|
||||||
<!-- tabel -->
|
<!-- tabel -->
|
||||||
<a-space direction="vertical" style="background-color: #fff; width: 100%; padding: 24px; margin-bottom: 24px">
|
<a-space direction="vertical" style="background-color: #fff; width: 100%; padding: 24px; margin-bottom: 24px">
|
||||||
<a-space align="center">
|
<a-space align="center">
|
||||||
@ -112,7 +112,7 @@
|
|||||||
<span style="margin-right: 16px; width: 60px; font-size: 12px">原始来源 </span>
|
<span style="margin-right: 16px; width: 60px; font-size: 12px">原始来源 </span>
|
||||||
<a-space direction="vertical" style="margin-left: 15px">
|
<a-space direction="vertical" style="margin-left: 15px">
|
||||||
<a-space v-for="item in topicInfo.industry_topic_sources" :key="item">
|
<a-space v-for="item in topicInfo.industry_topic_sources" :key="item">
|
||||||
<a-link style="background-color: initial" :href="item.link">{{ item.title }}</a-link>
|
<a-link style="background-color: initial" :href="item.link" target="_blank">{{ item.title }}</a-link>
|
||||||
<img src="@/assets/img/hottranslation/xhs.png" style="width: 16px; height: 16px" />
|
<img src="@/assets/img/hottranslation/xhs.png" style="width: 16px; height: 16px" />
|
||||||
</a-space>
|
</a-space>
|
||||||
</a-space>
|
</a-space>
|
||||||
@ -151,11 +151,18 @@ const topHeaderRef = ref();
|
|||||||
const selectedIndustry = computed(() => topHeaderRef.value?.selectedIndustry);
|
const selectedIndustry = computed(() => topHeaderRef.value?.selectedIndustry);
|
||||||
const selectedSubCategory = computed(() => topHeaderRef.value?.selectedSubCategory);
|
const selectedSubCategory = computed(() => topHeaderRef.value?.selectedSubCategory);
|
||||||
const selectedTimePeriod = computed(() => topHeaderRef.value?.selectedTimePeriod);
|
const selectedTimePeriod = computed(() => topHeaderRef.value?.selectedTimePeriod);
|
||||||
|
const search = () => {
|
||||||
|
getIndustryTopics();
|
||||||
|
};
|
||||||
// 监听筛选条件变化
|
// 监听筛选条件变化
|
||||||
watch([selectedIndustry, selectedTimePeriod], () => {
|
watch([selectedIndustry, selectedTimePeriod, selectedSubCategory], () => {
|
||||||
getIndustryTopics();
|
getIndustryTopics();
|
||||||
});
|
});
|
||||||
|
watch(selectedIndustry, () => {
|
||||||
|
selectedSubCategory.value = 0;
|
||||||
|
getIndustryTopics();
|
||||||
|
});
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getIndustriesTree();
|
getIndustriesTree();
|
||||||
});
|
});
|
||||||
@ -173,8 +180,10 @@ const getIndustryTopics = async () => {
|
|||||||
industry_id: selectedIndustry.value,
|
industry_id: selectedIndustry.value,
|
||||||
time_dimension: selectedTimePeriod.value,
|
time_dimension: selectedTimePeriod.value,
|
||||||
};
|
};
|
||||||
|
if (selectedSubCategory.value != 0) {
|
||||||
|
parms['industry_id'] = selectedSubCategory.value;
|
||||||
|
}
|
||||||
const res = await fetchIndustryTopics(parms);
|
const res = await fetchIndustryTopics(parms);
|
||||||
console.log(res);
|
|
||||||
dataList.value = res;
|
dataList.value = res;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
3
src/views/components/dataEngine/index.vue
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<template>
|
||||||
|
<LayoutBasic> </LayoutBasic>
|
||||||
|
</template>
|
||||||
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<view>
|
<view>
|
||||||
<topHeader ref="topHeaderRef"></topHeader>
|
<topHeader ref="topHeaderRef" @click="search"></topHeader>
|
||||||
<!-- 重点品牌列表 -->
|
<!-- 重点品牌列表 -->
|
||||||
<a-space direction="vertical" style="background-color: #fff; width: 100%; padding: 24px; margin: 24px 0">
|
<a-space direction="vertical" style="background-color: #fff; width: 100%; padding: 24px; margin: 24px 0">
|
||||||
<a-space align="center">
|
<a-space align="center">
|
||||||
@ -107,11 +107,18 @@ const selectedTimePeriod = computed(() => topHeaderRef.value?.selectedTimePeriod
|
|||||||
const dataList = ref([]);
|
const dataList = ref([]);
|
||||||
const otherList = ref([]);
|
const otherList = ref([]);
|
||||||
|
|
||||||
|
const search = () => {
|
||||||
|
getFocusBrandsList();
|
||||||
|
getEventDynamicsList();
|
||||||
|
};
|
||||||
const getFocusBrandsList = async () => {
|
const getFocusBrandsList = async () => {
|
||||||
const params = {
|
const params = {
|
||||||
industry_id: selectedIndustry.value,
|
industry_id: selectedIndustry.value,
|
||||||
time_dimension: selectedTimePeriod.value,
|
time_dimension: selectedTimePeriod.value,
|
||||||
};
|
};
|
||||||
|
if (selectedSubCategory.value != 0) {
|
||||||
|
params['industry_id'] = selectedSubCategory.value;
|
||||||
|
}
|
||||||
const res = await fetchFocusBrandsList(params);
|
const res = await fetchFocusBrandsList(params);
|
||||||
// 这里需要根据API返回的数据结构处理成tagRows需要的格式
|
// 这里需要根据API返回的数据结构处理成tagRows需要的格式
|
||||||
dataList.value = res;
|
dataList.value = res;
|
||||||
@ -122,6 +129,9 @@ const getEventDynamicsList = async () => {
|
|||||||
industry_id: selectedIndustry.value,
|
industry_id: selectedIndustry.value,
|
||||||
time_dimension: selectedTimePeriod.value,
|
time_dimension: selectedTimePeriod.value,
|
||||||
};
|
};
|
||||||
|
if (selectedSubCategory.value != 0) {
|
||||||
|
params['industry_id'] = selectedSubCategory.value;
|
||||||
|
}
|
||||||
const res = await fetchEventDynamicsList(params);
|
const res = await fetchEventDynamicsList(params);
|
||||||
// 这里需要根据API返回的数据结构处理成tagRows需要的格式
|
// 这里需要根据API返回的数据结构处理成tagRows需要的格式
|
||||||
otherList.value = res;
|
otherList.value = res;
|
||||||
@ -132,10 +142,15 @@ onMounted(() => {
|
|||||||
getEventDynamicsList();
|
getEventDynamicsList();
|
||||||
});
|
});
|
||||||
// 监听筛选条件变化
|
// 监听筛选条件变化
|
||||||
watch([selectedIndustry, selectedTimePeriod], () => {
|
watch([selectedTimePeriod, selectedSubCategory], () => {
|
||||||
getFocusBrandsList();
|
getFocusBrandsList();
|
||||||
getEventDynamicsList();
|
getEventDynamicsList();
|
||||||
});
|
});
|
||||||
|
watch(selectedIndustry, () => {
|
||||||
|
selectedSubCategory.value = 0;
|
||||||
|
getFocusBrandsList();
|
||||||
|
getEventDynamicsList;
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<view>
|
<view>
|
||||||
<topHeader ref="topHeaderRef"></topHeader>
|
<topHeader ref="topHeaderRef" @search="search"></topHeader>
|
||||||
<!-- 关键词热度榜 -->
|
<!-- 关键词热度榜 -->
|
||||||
<a-space direction="vertical" style="background-color: #fff; width: 100%; padding: 24px; margin: 24px 0">
|
<a-space direction="vertical" style="background-color: #fff; width: 100%; padding: 24px; margin: 24px 0">
|
||||||
<a-space align="center">
|
<a-space align="center">
|
||||||
@ -51,7 +51,12 @@
|
|||||||
style="font-size: 14px"
|
style="font-size: 14px"
|
||||||
:value="record.trend * 100"
|
:value="record.trend * 100"
|
||||||
:value-style="{ color: '#25C883' }"
|
:value-style="{ color: '#25C883' }"
|
||||||
></a-statistic>
|
>
|
||||||
|
<template #prefix>
|
||||||
|
<icon-arrow-fall />
|
||||||
|
</template>
|
||||||
|
<template #suffix>%</template>
|
||||||
|
</a-statistic>
|
||||||
</template>
|
</template>
|
||||||
</a-table-column>
|
</a-table-column>
|
||||||
<a-table-column title="情感倾向" data-index="sentiment">
|
<a-table-column title="情感倾向" data-index="sentiment">
|
||||||
@ -170,9 +175,9 @@
|
|||||||
<template #cell="{ record }">
|
<template #cell="{ record }">
|
||||||
<a-statistic
|
<a-statistic
|
||||||
style="font-size: 14px"
|
style="font-size: 14px"
|
||||||
v-if="record.trend > 0"
|
|
||||||
:value="record.trend * 100"
|
:value="record.trend * 100"
|
||||||
:value-style="{ color: '#F64B31' }"
|
:value-style="{ color: '#F64B31' }"
|
||||||
|
v-if="record.trend > 0"
|
||||||
>
|
>
|
||||||
<template #prefix>
|
<template #prefix>
|
||||||
<icon-arrow-rise />
|
<icon-arrow-rise />
|
||||||
@ -184,18 +189,92 @@
|
|||||||
style="font-size: 14px"
|
style="font-size: 14px"
|
||||||
:value="record.trend * 100"
|
:value="record.trend * 100"
|
||||||
:value-style="{ color: '#25C883' }"
|
:value-style="{ color: '#25C883' }"
|
||||||
></a-statistic>
|
>
|
||||||
|
<template #prefix>
|
||||||
|
<icon-arrow-fall />
|
||||||
|
</template>
|
||||||
|
<template #suffix>%</template>
|
||||||
|
</a-statistic>
|
||||||
|
</template>
|
||||||
|
</a-table-column>
|
||||||
|
<a-table-column title="操作" data-index="optional">
|
||||||
|
<template #cell="{ record }">
|
||||||
|
<a-button type="outline" @click="gotoDetail(record)">详情</a-button>
|
||||||
</template>
|
</template>
|
||||||
</a-table-column>
|
</a-table-column>
|
||||||
</template>
|
</template>
|
||||||
</a-table>
|
</a-table>
|
||||||
</a-space>
|
</a-space>
|
||||||
|
<!-- modal -->
|
||||||
|
<a-modal :visible="visible" @ok="handleOk" @cancel="handleCancel" unmountOnClose>
|
||||||
|
<template #title>
|
||||||
|
<span style="text-align: left; width: 100%">新兴关键词</span>
|
||||||
|
</template>
|
||||||
|
<div>
|
||||||
|
<a-space direction="vertical">
|
||||||
|
<a-space>
|
||||||
|
<span style="margin-right: 16px">关键词</span>
|
||||||
|
<span>{{ topicInfo.name }}</span>
|
||||||
|
</a-space>
|
||||||
|
<a-space>
|
||||||
|
<span style="margin-right: 16px">最大规模出现</span>
|
||||||
|
<span>{{ formatTimestamp(topicInfo.first_appeared_at) }}</span>
|
||||||
|
</a-space>
|
||||||
|
<a-space>
|
||||||
|
<span style="margin-right: 16px">变化幅度</span>
|
||||||
|
<div>
|
||||||
|
<a-statistic
|
||||||
|
v-if="topicInfo?.trend > 0"
|
||||||
|
style="font-size: 14px"
|
||||||
|
:value="topicInfo.trend * 100"
|
||||||
|
:value-style="{ color: '#F64B31' }"
|
||||||
|
>
|
||||||
|
<template #prefix>
|
||||||
|
<IconArrowRise />
|
||||||
|
</template>
|
||||||
|
<template #suffix>%</template>
|
||||||
|
</a-statistic>
|
||||||
|
<a-statistic
|
||||||
|
v-else
|
||||||
|
style="font-size: 14px"
|
||||||
|
:value="topicInfo?.trend * 100 || 0"
|
||||||
|
:value-style="{ color: '#25C883' }"
|
||||||
|
>
|
||||||
|
<template #prefix>
|
||||||
|
<IconArrowFall />
|
||||||
|
</template>
|
||||||
|
<template #suffix>%</template>
|
||||||
|
</a-statistic>
|
||||||
|
</div>
|
||||||
|
</a-space>
|
||||||
|
<a-space>
|
||||||
|
<span style="margin-right: 16px">热度指数</span>
|
||||||
|
<img v-for="i in topicInfo.hot" :key="i" :src="starImages[i - 1]" style="width: 16px; height: 16px" />
|
||||||
|
</a-space>
|
||||||
|
|
||||||
|
<a-space direction="top">
|
||||||
|
<span style="margin-right: 16px; width: 60px; font-size: 12px">原始来源 </span>
|
||||||
|
<a-space direction="vertical" style="margin-left: 15px">
|
||||||
|
<a-space v-for="item in topicInfo.industry_new_keyword_sources" :key="item">
|
||||||
|
<a-link style="background-color: initial" :href="item.link" target="_blank">{{ item.title }}</a-link>
|
||||||
|
<img src="@/assets/img/hottranslation/xhs.png" style="width: 16px; height: 16px" />
|
||||||
|
</a-space>
|
||||||
|
</a-space>
|
||||||
|
</a-space>
|
||||||
|
</a-space>
|
||||||
|
</div>
|
||||||
|
</a-modal>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import topHeader from './topHeader.vue';
|
import topHeader from './topHeader.vue';
|
||||||
import { fetchKeywordTrendsList, fetchIndustryEmotions, fetchNewKeywordList } from '@/api/all/index';
|
import {
|
||||||
|
fetchKeywordTrendsList,
|
||||||
|
fetchIndustryEmotions,
|
||||||
|
fetchNewKeywordList,
|
||||||
|
fetchNewKeywordDetail,
|
||||||
|
} from '@/api/all/index';
|
||||||
import { ref, onMounted, onBeforeUnmount, watchEffect, computed } from 'vue';
|
import { ref, onMounted, onBeforeUnmount, watchEffect, computed } from 'vue';
|
||||||
import * as echarts from 'echarts';
|
import * as echarts from 'echarts';
|
||||||
import star1 from '@/assets/img/hottranslation/star-fill1.png';
|
import star1 from '@/assets/img/hottranslation/star-fill1.png';
|
||||||
@ -220,12 +299,18 @@ const dataList = ref([]);
|
|||||||
const rowData = ref([]);
|
const rowData = ref([]);
|
||||||
const keywordList = ref([]);
|
const keywordList = ref([]);
|
||||||
const fellingRate = ref([]);
|
const fellingRate = ref([]);
|
||||||
|
const visible = ref(false);
|
||||||
|
const topicInfo = ref({});
|
||||||
const getIndustryEmotions = async () => {
|
const getIndustryEmotions = async () => {
|
||||||
const params = {
|
const params = {
|
||||||
industry_id: selectedIndustry.value,
|
industry_id: selectedIndustry.value,
|
||||||
time_dimension: selectedTimePeriod.value,
|
time_dimension: selectedTimePeriod.value,
|
||||||
};
|
};
|
||||||
|
if (selectedSubCategory.value != 0) {
|
||||||
|
params['industry_id'] = selectedSubCategory.value;
|
||||||
|
}
|
||||||
const res = await fetchIndustryEmotions(params);
|
const res = await fetchIndustryEmotions(params);
|
||||||
|
fellingRate.value = [];
|
||||||
fellingRate.value.push(res['good_felling_rate']);
|
fellingRate.value.push(res['good_felling_rate']);
|
||||||
fellingRate.value.push(res['bad_felling_rate']);
|
fellingRate.value.push(res['bad_felling_rate']);
|
||||||
|
|
||||||
@ -235,6 +320,14 @@ const getIndustryEmotions = async () => {
|
|||||||
console.log('行业情绪', items);
|
console.log('行业情绪', items);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 详情
|
||||||
|
const gotoDetail = async (record) => {
|
||||||
|
console.log(record);
|
||||||
|
const res = await fetchNewKeywordDetail(record.id);
|
||||||
|
console.log(res);
|
||||||
|
visible.value = true;
|
||||||
|
topicInfo.value = res;
|
||||||
|
};
|
||||||
const groupedData = () => {
|
const groupedData = () => {
|
||||||
const groups = {
|
const groups = {
|
||||||
negative: { name: '负面', items: [], color: '#F64B31' },
|
negative: { name: '负面', items: [], color: '#F64B31' },
|
||||||
@ -249,12 +342,23 @@ const groupedData = () => {
|
|||||||
|
|
||||||
return groups;
|
return groups;
|
||||||
};
|
};
|
||||||
|
// 弹窗的取消
|
||||||
|
const handleCancel = () => {
|
||||||
|
visible.value = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
// 弹窗的确定
|
||||||
|
const handleOk = () => {
|
||||||
|
visible.value = false;
|
||||||
|
};
|
||||||
const getKeywordTrendsList = async () => {
|
const getKeywordTrendsList = async () => {
|
||||||
const params = {
|
const params = {
|
||||||
industry_id: selectedIndustry.value,
|
industry_id: selectedIndustry.value,
|
||||||
time_dimension: selectedTimePeriod.value,
|
time_dimension: selectedTimePeriod.value,
|
||||||
};
|
};
|
||||||
|
if (selectedSubCategory.value != 0) {
|
||||||
|
params['industry_id'] = selectedSubCategory.value;
|
||||||
|
}
|
||||||
const res = await fetchKeywordTrendsList(params);
|
const res = await fetchKeywordTrendsList(params);
|
||||||
console.log('关键词热度榜', res);
|
console.log('关键词热度榜', res);
|
||||||
// 这里需要根据API返回的数据结构处理成tagRows需要的格式
|
// 这里需要根据API返回的数据结构处理成tagRows需要的格式
|
||||||
@ -276,6 +380,9 @@ const getNewKeywordList = async () => {
|
|||||||
industry_id: selectedIndustry.value,
|
industry_id: selectedIndustry.value,
|
||||||
time_dimension: selectedTimePeriod.value,
|
time_dimension: selectedTimePeriod.value,
|
||||||
};
|
};
|
||||||
|
if (selectedSubCategory.value != 0) {
|
||||||
|
params['industry_id'] = selectedSubCategory.value;
|
||||||
|
}
|
||||||
const res = await fetchNewKeywordList(params);
|
const res = await fetchNewKeywordList(params);
|
||||||
// 这里需要根据API返回的数据结构处理成tagRows需要的格式
|
// 这里需要根据API返回的数据结构处理成tagRows需要的格式
|
||||||
keywordList.value = res;
|
keywordList.value = res;
|
||||||
@ -307,8 +414,21 @@ const drawChart = () => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const search = () => {
|
||||||
|
getKeywordTrendsList();
|
||||||
|
getIndustryEmotions();
|
||||||
|
getNewKeywordList();
|
||||||
|
};
|
||||||
|
|
||||||
// 监听筛选条件变化
|
// 监听筛选条件变化
|
||||||
watch([selectedIndustry, selectedTimePeriod], () => {
|
watch([selectedTimePeriod, selectedSubCategory], () => {
|
||||||
|
getKeywordTrendsList();
|
||||||
|
getIndustryEmotions();
|
||||||
|
getNewKeywordList();
|
||||||
|
});
|
||||||
|
|
||||||
|
watch([selectedIndustry], () => {
|
||||||
|
selectedSubCategory.value = 0;
|
||||||
getKeywordTrendsList();
|
getKeywordTrendsList();
|
||||||
getIndustryEmotions();
|
getIndustryEmotions();
|
||||||
getNewKeywordList();
|
getNewKeywordList();
|
||||||
@ -319,22 +439,6 @@ onMounted(() => {
|
|||||||
getIndustryEmotions();
|
getIndustryEmotions();
|
||||||
getNewKeywordList();
|
getNewKeywordList();
|
||||||
});
|
});
|
||||||
|
|
||||||
// const chartData = computed(() => {
|
|
||||||
// const result = [
|
|
||||||
// { name: '正面', value: 0, color: '#25C883' },
|
|
||||||
// { name: '中性', value: 0, color: '#FFAA16' },
|
|
||||||
// { name: '负面', value: 0, color: '#F64B31' },
|
|
||||||
// ];
|
|
||||||
|
|
||||||
// rawData.value.forEach((item) => {
|
|
||||||
// if (item.felling === 2) result[0].value++;
|
|
||||||
// else if (item.felling === 1) result[1].value++;
|
|
||||||
// else result[2].value++;
|
|
||||||
// });
|
|
||||||
|
|
||||||
// return result.filter((item) => item.value > 0); // 过滤空数据
|
|
||||||
// });
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|||||||
@ -33,17 +33,17 @@
|
|||||||
<a-tag
|
<a-tag
|
||||||
size="Medium"
|
size="Medium"
|
||||||
v-for="item in subCategories"
|
v-for="item in subCategories"
|
||||||
:key="item.value"
|
:key="item.id"
|
||||||
:checkable="true"
|
:checkable="true"
|
||||||
:checked="selectedSubCategory == item.value"
|
:checked="selectedSubCategory == item.id"
|
||||||
@check="handleSubCategoryCheck(item.value)"
|
@check="handleSubCategoryCheck(item.id)"
|
||||||
style="padding: 4px 16px; border-radius: 30px; height: 28px"
|
style="padding: 4px 16px; border-radius: 30px; height: 28px"
|
||||||
:style="
|
:style="
|
||||||
selectedSubCategory == item.value
|
selectedSubCategory == item.id
|
||||||
? 'color: #6d4cfe; background-color: #f0edff'
|
? 'color: #6d4cfe; background-color: #f0edff'
|
||||||
: 'color: #3C4043; background-color: #F7F8FA'
|
: 'color: #3C4043; background-color: #F7F8FA'
|
||||||
"
|
"
|
||||||
>{{ item.label }}</a-tag
|
>{{ item.name }}</a-tag
|
||||||
>
|
>
|
||||||
</a-space>
|
</a-space>
|
||||||
</a-space>
|
</a-space>
|
||||||
@ -77,32 +77,36 @@
|
|||||||
<!-- Use the default slot to avoid extra spaces -->
|
<!-- Use the default slot to avoid extra spaces -->
|
||||||
<template #default>搜索</template>
|
<template #default>搜索</template>
|
||||||
</a-button>
|
</a-button>
|
||||||
<a-button type="primary" style="background-color: #fff; color: #000">
|
<div
|
||||||
<template #icon>
|
@click="handleReset"
|
||||||
<icon-refresh />
|
style="
|
||||||
</template>
|
width: 92px;
|
||||||
<!-- Use the default slot to avoid extra spaces -->
|
height: 32px;
|
||||||
<template #default>重置</template>
|
font-size: 14px;
|
||||||
</a-button>
|
color: #3c4043;
|
||||||
|
border: 1px solid #d7d7d9;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 32px;
|
||||||
|
border-radius: 4px;
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<icon-refresh></icon-refresh>
|
||||||
|
<span>重置</span>
|
||||||
|
</div>
|
||||||
</a-space>
|
</a-space>
|
||||||
</a-space>
|
</a-space>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup lang="ts">
|
||||||
import { ref, computed } from 'vue';
|
import { ref, computed } from 'vue';
|
||||||
import { fetchIndustriesTree, fetchIndustryTopics, fetchIndustryTopicDetail } from '@/api/all/index';
|
import { fetchIndustriesTree } from '@/api/all/index';
|
||||||
import star1 from '@/assets/img/hottranslation/star-fill1.png';
|
|
||||||
import star2 from '@/assets/img/hottranslation/star-fill2.png';
|
|
||||||
import star3 from '@/assets/img/hottranslation/star-fill3.png';
|
|
||||||
import star4 from '@/assets/img/hottranslation/star-fill4.png';
|
|
||||||
import star5 from '@/assets/img/hottranslation/star-fill5.png';
|
|
||||||
const starImages = [star1, star2, star3, star4, star5];
|
|
||||||
// 行业大类
|
// 行业大类
|
||||||
const industriesTree = ref([]);
|
const industriesTree = ref([]);
|
||||||
// 数据状态
|
// 数据状态
|
||||||
const selectedIndustry = ref();
|
const selectedIndustry = ref();
|
||||||
const selectedSubCategory = ref('all');
|
const selectedSubCategory = ref(0);
|
||||||
const selectedTimePeriod = ref('7');
|
const selectedTimePeriod = ref('7');
|
||||||
|
|
||||||
// 暴露这些状态给父组件
|
// 暴露这些状态给父组件
|
||||||
@ -111,20 +115,8 @@ defineExpose({
|
|||||||
selectedSubCategory,
|
selectedSubCategory,
|
||||||
selectedTimePeriod,
|
selectedTimePeriod,
|
||||||
});
|
});
|
||||||
// 行业热门话题洞察
|
|
||||||
const dataList = ref([]);
|
|
||||||
// 显示详情
|
|
||||||
const visible = ref(false);
|
|
||||||
const topicInfo = ref({});
|
|
||||||
// 二级类目选项
|
// 二级类目选项
|
||||||
const subCategories = [
|
const subCategories = ref([]);
|
||||||
{ value: 'all', label: '全部' },
|
|
||||||
{ value: 'airline', label: '航司' },
|
|
||||||
{ value: 'hotel', label: '酒店' },
|
|
||||||
{ value: 'entertainment', label: '玩乐' },
|
|
||||||
{ value: 'cruise', label: '游轮' },
|
|
||||||
];
|
|
||||||
|
|
||||||
// 时间周期选项
|
// 时间周期选项
|
||||||
const timePeriods = [
|
const timePeriods = [
|
||||||
{
|
{
|
||||||
@ -141,6 +133,28 @@ const timePeriods = [
|
|||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
const handleIndustryCheck = (id) => {
|
||||||
|
selectedIndustry.value = id;
|
||||||
|
console.log(industriesTree.value);
|
||||||
|
for (let i = 0; i < industriesTree.value.length; i++) {
|
||||||
|
if (industriesTree.value[i].id == id) {
|
||||||
|
subCategories.value = [];
|
||||||
|
subCategories.value = [...industriesTree.value[i].children];
|
||||||
|
subCategories.value.unshift({ id: 0, name: '全部' });
|
||||||
|
selectedSubCategory.value = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleSubCategoryCheck = (id) => {
|
||||||
|
selectedSubCategory.value = id;
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleTimePeriodCheck = (value) => {
|
||||||
|
selectedTimePeriod.value = value;
|
||||||
|
};
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getIndustriesTree();
|
getIndustriesTree();
|
||||||
});
|
});
|
||||||
@ -149,52 +163,21 @@ const getIndustriesTree = async () => {
|
|||||||
const res = await fetchIndustriesTree();
|
const res = await fetchIndustriesTree();
|
||||||
industriesTree.value = res;
|
industriesTree.value = res;
|
||||||
selectedIndustry.value = res[0].id;
|
selectedIndustry.value = res[0].id;
|
||||||
getIndustryTopics();
|
selectedSubCategory.value = 0;
|
||||||
|
subCategories.value = [...industriesTree.value[0].children];
|
||||||
|
subCategories.value.unshift({ id: 0, name: '全部' });
|
||||||
};
|
};
|
||||||
|
const emit = defineEmits<{
|
||||||
// 行业热门话题
|
(e: 'search'): void;
|
||||||
const getIndustryTopics = async () => {
|
}>();
|
||||||
let parms = {
|
|
||||||
industry_id: selectedIndustry.value,
|
|
||||||
time_dimension: selectedTimePeriod.value,
|
|
||||||
};
|
|
||||||
const res = await fetchIndustryTopics(parms);
|
|
||||||
dataList.value = res;
|
|
||||||
};
|
|
||||||
const handleIndustryCheck = (value) => {
|
|
||||||
selectedIndustry.value = value;
|
|
||||||
};
|
|
||||||
|
|
||||||
const handleSubCategoryCheck = (value) => {
|
|
||||||
selectedSubCategory.value = value;
|
|
||||||
};
|
|
||||||
|
|
||||||
const handleTimePeriodCheck = (value) => {
|
|
||||||
selectedTimePeriod.value = value;
|
|
||||||
};
|
|
||||||
|
|
||||||
// 详情
|
|
||||||
const gotoDetail = async (record) => {
|
|
||||||
console.log(record);
|
|
||||||
const res = await fetchIndustryTopicDetail(record.id);
|
|
||||||
console.log(res);
|
|
||||||
visible.value = true;
|
|
||||||
topicInfo.value = res;
|
|
||||||
};
|
|
||||||
|
|
||||||
// 搜索
|
// 搜索
|
||||||
const handleSearch = () => {
|
const handleSearch = () => {
|
||||||
getIndustryTopics();
|
emit('search');
|
||||||
};
|
};
|
||||||
|
const handleReset = () => {
|
||||||
// 弹窗的取消
|
selectedIndustry.value = industriesTree.value[0].id;
|
||||||
const handleCancel = () => {
|
selectedSubCategory.value = 0;
|
||||||
visible.value = false;
|
selectedTimePeriod.value = '7';
|
||||||
};
|
|
||||||
|
|
||||||
// 弹窗的确定
|
|
||||||
const handleBeforeOk = () => {
|
|
||||||
visible.value = false;
|
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<view>
|
<view>
|
||||||
<topHeader ref="topHeaderRef"></topHeader>
|
<topHeader ref="topHeaderRef" @search="search"></topHeader>
|
||||||
|
|
||||||
<!-- 用户痛点观察 -->
|
<!-- 用户痛点观察 -->
|
||||||
<a-space direction="vertical" style="background-color: #fff; width: 100%; padding: 24px; margin: 24px 0">
|
<a-space direction="vertical" style="background-color: #fff; width: 100%; padding: 24px; margin: 24px 0">
|
||||||
@ -98,7 +98,7 @@
|
|||||||
<span style="margin-right: 16px; width: 60px; font-size: 12px">原始来源 </span>
|
<span style="margin-right: 16px; width: 60px; font-size: 12px">原始来源 </span>
|
||||||
<a-space direction="vertical" style="margin-left: 15px">
|
<a-space direction="vertical" style="margin-left: 15px">
|
||||||
<a-space v-for="item in topicInfo.user_pain_point_sources" :key="item">
|
<a-space v-for="item in topicInfo.user_pain_point_sources" :key="item">
|
||||||
<a-link style="background-color: initial" :href="item.link">{{ item.title }}</a-link>
|
<a-link style="background-color: initial" :href="item.link" target="_blank">{{ item.title }}</a-link>
|
||||||
<img src="@/assets/img/hottranslation/xhs.png" style="width: 16px; height: 16px" />
|
<img src="@/assets/img/hottranslation/xhs.png" style="width: 16px; height: 16px" />
|
||||||
</a-space>
|
</a-space>
|
||||||
</a-space>
|
</a-space>
|
||||||
@ -140,6 +140,9 @@ const getUserPainPointsList = async () => {
|
|||||||
industry_id: selectedIndustry.value,
|
industry_id: selectedIndustry.value,
|
||||||
time_dimension: selectedTimePeriod.value,
|
time_dimension: selectedTimePeriod.value,
|
||||||
};
|
};
|
||||||
|
if (selectedSubCategory.value != 0) {
|
||||||
|
params['industry_id'] = selectedSubCategory.value;
|
||||||
|
}
|
||||||
const res = await fetchUserPainPointsList(params);
|
const res = await fetchUserPainPointsList(params);
|
||||||
console.log('关键词热度榜', res);
|
console.log('关键词热度榜', res);
|
||||||
// 这里需要根据API返回的数据结构处理成tagRows需要的格式
|
// 这里需要根据API返回的数据结构处理成tagRows需要的格式
|
||||||
@ -155,13 +158,16 @@ const handleOk = () => {
|
|||||||
visible.value = false;
|
visible.value = false;
|
||||||
};
|
};
|
||||||
// 监听筛选条件变化
|
// 监听筛选条件变化
|
||||||
watch([selectedIndustry, selectedTimePeriod], () => {
|
watch([selectedIndustry, selectedTimePeriod, selectedSubCategory], () => {
|
||||||
getUserPainPointsList();
|
getUserPainPointsList();
|
||||||
});
|
});
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getUserPainPointsList();
|
getUserPainPointsList();
|
||||||
});
|
});
|
||||||
|
const search = () => {
|
||||||
|
getUserPainPointsList();
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<view>
|
<view>
|
||||||
<topHeader ref="topHeaderRef"></topHeader>
|
<topHeader ref="topHeaderRef" @search="search"></topHeader>
|
||||||
<a-space style="width: 100%; display: flex">
|
<a-space style="width: 100%; display: flex">
|
||||||
<a-space direction="vertical" style="background-color: #fff; padding: 24px; flex: 1">
|
<a-space direction="vertical" style="background-color: #fff; padding: 24px; flex: 1">
|
||||||
<a-space align="center">
|
<a-space align="center">
|
||||||
@ -153,19 +153,29 @@ const genderValueData = ref([]);
|
|||||||
const ageValueData = ref([]);
|
const ageValueData = ref([]);
|
||||||
const geoList = ref([]);
|
const geoList = ref([]);
|
||||||
// 监听筛选条件变化
|
// 监听筛选条件变化
|
||||||
watch([selectedIndustry, selectedTimePeriod], () => {
|
watch([selectedIndustry, selectedTimePeriod, selectedSubCategory], () => {
|
||||||
getAgeDistributionsList();
|
getAgeDistributionsList();
|
||||||
getGeoDistributionsList();
|
getGeoDistributionsList();
|
||||||
getGenderDistributionsList();
|
getGenderDistributionsList();
|
||||||
drawChinaMap();
|
drawChinaMap();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const search = () => {
|
||||||
|
getAgeDistributionsList();
|
||||||
|
getGeoDistributionsList();
|
||||||
|
getGenderDistributionsList();
|
||||||
|
drawChinaMap();
|
||||||
|
};
|
||||||
|
|
||||||
// 获取年龄分布列表
|
// 获取年龄分布列表
|
||||||
const getAgeDistributionsList = async () => {
|
const getAgeDistributionsList = async () => {
|
||||||
const params = {
|
const params = {
|
||||||
industry_id: selectedIndustry.value,
|
industry_id: selectedIndustry.value,
|
||||||
time_dimension: selectedTimePeriod.value,
|
time_dimension: selectedTimePeriod.value,
|
||||||
};
|
};
|
||||||
|
if (selectedSubCategory.value != 0) {
|
||||||
|
parms['industry_id'] = selectedSubCategory.value;
|
||||||
|
}
|
||||||
const res = await fetchAgeDistributionsList(params);
|
const res = await fetchAgeDistributionsList(params);
|
||||||
console.log('年龄分布:', res);
|
console.log('年龄分布:', res);
|
||||||
ageValueData.value = res;
|
ageValueData.value = res;
|
||||||
@ -179,6 +189,9 @@ const getGeoDistributionsList = async () => {
|
|||||||
industry_id: selectedIndustry.value,
|
industry_id: selectedIndustry.value,
|
||||||
time_dimension: selectedTimePeriod.value,
|
time_dimension: selectedTimePeriod.value,
|
||||||
};
|
};
|
||||||
|
if (selectedSubCategory.value != 0) {
|
||||||
|
parms['industry_id'] = selectedSubCategory.value;
|
||||||
|
}
|
||||||
const res = await fetchGeoDistributionsList(params);
|
const res = await fetchGeoDistributionsList(params);
|
||||||
console.log('地理分布:', res);
|
console.log('地理分布:', res);
|
||||||
geoList.value = res;
|
geoList.value = res;
|
||||||
@ -189,6 +202,9 @@ const getGenderDistributionsList = async () => {
|
|||||||
industry_id: selectedIndustry.value,
|
industry_id: selectedIndustry.value,
|
||||||
time_dimension: selectedTimePeriod.value,
|
time_dimension: selectedTimePeriod.value,
|
||||||
};
|
};
|
||||||
|
if (selectedSubCategory.value != 0) {
|
||||||
|
parms['industry_id'] = selectedSubCategory.value;
|
||||||
|
}
|
||||||
const res = await fetchGenderDistributionsList(params);
|
const res = await fetchGenderDistributionsList(params);
|
||||||
genderData.value = [];
|
genderData.value = [];
|
||||||
genderData.value = [...res];
|
genderData.value = [...res];
|
||||||
|
|||||||
768
src/views/components/login/PuzzleVerification.vue
Normal file
@ -0,0 +1,768 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div
|
||||||
|
v-show="show"
|
||||||
|
:class="['vue-puzzle-vcode', { show_: show }]"
|
||||||
|
@mousedown="onCloseMouseDown"
|
||||||
|
@mouseup="onCloseMouseUp"
|
||||||
|
@touchstart="onCloseMouseDown"
|
||||||
|
@touchend="onCloseMouseUp"
|
||||||
|
>
|
||||||
|
<div class="vue-auth-box_" @mousedown.stop @touchstart.stop>
|
||||||
|
<div style="margin-bottom: 10px; fonst-size: 16px; color: #211f24">输入图形验证码</div>
|
||||||
|
<div class="auth-body_" :style="`height: ${canvasHeight}px`">
|
||||||
|
<!-- 主图,有缺口 -->
|
||||||
|
<canvas
|
||||||
|
style="border-radius: 10px"
|
||||||
|
ref="canvas1"
|
||||||
|
:width="canvasWidth"
|
||||||
|
:height="canvasHeight"
|
||||||
|
:style="`width:${canvasWidth}px;height:${canvasHeight}px`"
|
||||||
|
/>
|
||||||
|
<!-- 成功后显示的完整图 -->
|
||||||
|
<canvas
|
||||||
|
ref="canvas3"
|
||||||
|
:class="['auth-canvas3_', { show: isSuccess }]"
|
||||||
|
:width="canvasWidth"
|
||||||
|
:height="canvasHeight"
|
||||||
|
:style="`width:${canvasWidth}px;height:${canvasHeight}px`"
|
||||||
|
/>
|
||||||
|
<!-- 小图 -->
|
||||||
|
<canvas
|
||||||
|
:width="puzzleBaseSize"
|
||||||
|
class="auth-canvas2_"
|
||||||
|
:height="canvasHeight"
|
||||||
|
ref="canvas2"
|
||||||
|
:style="`width:${puzzleBaseSize}px;height:${canvasHeight}px;transform:translateX(${
|
||||||
|
styleWidth -
|
||||||
|
sliderBaseSize -
|
||||||
|
(puzzleBaseSize - sliderBaseSize) * ((styleWidth - sliderBaseSize) / (canvasWidth - sliderBaseSize))
|
||||||
|
}px)`"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<div :class="['info-box_', { show: infoBoxShow }, { fail: infoBoxFail }]">
|
||||||
|
{{ infoText }}
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
:class="['flash_', { show: !isSuccess }]"
|
||||||
|
:style="`transform: translateX(${
|
||||||
|
isSuccess ? `${canvasWidth + canvasHeight * 0.578}px` : `-${canvasHeight * 0.578}px`
|
||||||
|
}) skew(-30deg, 0);`"
|
||||||
|
></div>
|
||||||
|
<img
|
||||||
|
class="reset_"
|
||||||
|
@click="reset"
|
||||||
|
src="https://zahour-sensor.oss-cn-beijing.aliyuncs.com/applet/zayn/%E5%88%B7%E6%96%B0.png"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="auth-control_">
|
||||||
|
<div class="range-box" :style="`height:${sliderBaseSize}px`">
|
||||||
|
<div class="range-text">{{ sliderText }}</div>
|
||||||
|
<div class="range-slider" ref="rangeSlider" :style="`width:${styleWidth}px`">
|
||||||
|
<div
|
||||||
|
:class="['range-btn', { isDown: mouseDown }]"
|
||||||
|
:style="`width:${sliderBaseSize}px`"
|
||||||
|
@mousedown="onRangeMouseDown($event)"
|
||||||
|
@touchstart="onRangeMouseDown($event)"
|
||||||
|
>
|
||||||
|
<!-- 按钮内部样式 -->
|
||||||
|
<div></div>
|
||||||
|
<div></div>
|
||||||
|
<div></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { ref, computed, onMounted, onBeforeUnmount, watch } from 'vue';
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
canvasWidth: { type: Number, default: 350 }, // 主canvas的宽
|
||||||
|
canvasHeight: { type: Number, default: 200 }, // 主canvas的高
|
||||||
|
// 是否出现,由父级控制
|
||||||
|
show: { type: Boolean, default: true },
|
||||||
|
puzzleScale: { type: Number, default: 1 }, // 拼图块的大小缩放比例
|
||||||
|
sliderSize: { type: Number, default: 50 }, // 滑块的大小
|
||||||
|
range: { type: Number, default: 10 }, // 允许的偏差值
|
||||||
|
// 所有的背景图片
|
||||||
|
imgs: {
|
||||||
|
type: Array,
|
||||||
|
},
|
||||||
|
successText: {
|
||||||
|
type: String,
|
||||||
|
default: '验证通过!',
|
||||||
|
},
|
||||||
|
failText: {
|
||||||
|
type: String,
|
||||||
|
default: '验证失败,请重试',
|
||||||
|
},
|
||||||
|
sliderText: {
|
||||||
|
type: String,
|
||||||
|
default: '向右滑动填充拼图',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const verSuccess = ref(false);
|
||||||
|
const mouseDown = ref(false); // 鼠标是否在按钮上按下
|
||||||
|
const startWidth = ref(50); // 鼠标点下去时父级的width
|
||||||
|
const startX = ref(0); // 鼠标按下时的X
|
||||||
|
const newX = ref(0); // 鼠标当前的偏移X
|
||||||
|
const pinX = ref(0); // 拼图的起始X
|
||||||
|
const pinY = ref(0); // 拼图的起始Y
|
||||||
|
const loading = ref(false); // 是否正在加在中,主要是等图片onload
|
||||||
|
const isCanSlide = ref(false); // 是否可以拉动滑动条
|
||||||
|
const error = ref(false); // 图片加在失败会出现这个,提示用户手动刷新
|
||||||
|
const infoBoxShow = ref(false); // 提示信息是否出现
|
||||||
|
const infoText = ref(''); // 提示等信息
|
||||||
|
const infoBoxFail = ref(false); // 是否验证失败
|
||||||
|
const timer1 = ref(null); // setTimout1
|
||||||
|
const closeDown = ref(false); // 为了解决Mac上的click BUG
|
||||||
|
const isSuccess = ref(false); // 验证成功
|
||||||
|
const imgIndex = ref(-1); // 用于自定义图片时不会随机到重复的图片
|
||||||
|
const isSubmting = ref(false); // 是否正在判定,主要用于判定中不能点击重置按钮
|
||||||
|
|
||||||
|
const canvas1 = ref(null);
|
||||||
|
const canvas2 = ref(null);
|
||||||
|
const canvas3 = ref(null);
|
||||||
|
const rangeSlider = ref(null);
|
||||||
|
|
||||||
|
// 计算属性
|
||||||
|
const styleWidth = computed(() => {
|
||||||
|
const w = startWidth.value + newX.value - startX.value;
|
||||||
|
return w < sliderBaseSize.value ? sliderBaseSize.value : w > props.canvasWidth ? props.canvasWidth : w;
|
||||||
|
});
|
||||||
|
|
||||||
|
const puzzleBaseSize = computed(() => {
|
||||||
|
return Math.round(Math.max(Math.min(props.puzzleScale, 2), 0.2) * 52.5 + 6);
|
||||||
|
});
|
||||||
|
|
||||||
|
const sliderBaseSize = computed(() => {
|
||||||
|
return Math.max(Math.min(Math.round(props.sliderSize), Math.round(props.canvasWidth * 0.5)), 10);
|
||||||
|
});
|
||||||
|
|
||||||
|
// 生命周期
|
||||||
|
onMounted(() => {
|
||||||
|
document.addEventListener('mousemove', onRangeMouseMove, { passive: false });
|
||||||
|
document.addEventListener('mouseup', onRangeMouseUp, { passive: false });
|
||||||
|
document.addEventListener('touchmove', onRangeMouseMove, { passive: false });
|
||||||
|
document.addEventListener('touchend', onRangeMouseUp, { passive: false });
|
||||||
|
if (props.show) {
|
||||||
|
document.body.classList.add('vue-puzzle-overflow');
|
||||||
|
reset();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
onBeforeUnmount(() => {
|
||||||
|
clearTimeout(timer1.value);
|
||||||
|
document.removeEventListener('mousemove', onRangeMouseMove, { passive: false });
|
||||||
|
document.removeEventListener('mouseup', onRangeMouseUp, { passive: false });
|
||||||
|
document.removeEventListener('touchmove', onRangeMouseMove, { passive: false });
|
||||||
|
document.removeEventListener('touchend', onRangeMouseUp, { passive: false });
|
||||||
|
});
|
||||||
|
|
||||||
|
// 监听
|
||||||
|
watch(
|
||||||
|
() => props.show,
|
||||||
|
(newV) => {
|
||||||
|
if (newV) {
|
||||||
|
document.body.classList.add('vue-puzzle-overflow');
|
||||||
|
reset();
|
||||||
|
} else {
|
||||||
|
isSubmting.value = false;
|
||||||
|
isSuccess.value = false;
|
||||||
|
infoBoxShow.value = false;
|
||||||
|
document.body.classList.remove('vue-puzzle-overflow');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
// 方法
|
||||||
|
function onClose() {
|
||||||
|
if (!mouseDown.value && !isSubmting.value) {
|
||||||
|
clearTimeout(timer1.value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onCloseMouseDown() {
|
||||||
|
closeDown.value = true;
|
||||||
|
init(true);
|
||||||
|
//给父组件传一个状态
|
||||||
|
emit('submit', 'F');
|
||||||
|
}
|
||||||
|
|
||||||
|
function onCloseMouseUp() {
|
||||||
|
if (closeDown.value) {
|
||||||
|
onClose();
|
||||||
|
}
|
||||||
|
closeDown.value = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function onRangeMouseDown(e) {
|
||||||
|
if (isCanSlide.value) {
|
||||||
|
mouseDown.value = true;
|
||||||
|
startWidth.value = rangeSlider.value.clientWidth;
|
||||||
|
newX.value = e.clientX || e.changedTouches[0].clientX;
|
||||||
|
startX.value = e.clientX || e.changedTouches[0].clientX;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onRangeMouseMove(e) {
|
||||||
|
if (mouseDown.value) {
|
||||||
|
newX.value = e.clientX || e.changedTouches[0].clientX;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onRangeMouseUp() {
|
||||||
|
if (mouseDown.value) {
|
||||||
|
mouseDown.value = false;
|
||||||
|
submit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function init(withCanvas) {
|
||||||
|
if (loading.value && !withCanvas) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
loading.value = true;
|
||||||
|
isCanSlide.value = false;
|
||||||
|
const c = canvas1.value;
|
||||||
|
const c2 = canvas2.value;
|
||||||
|
const c3 = canvas3.value;
|
||||||
|
const ctx = c.getContext('2d', { willReadFrequently: true });
|
||||||
|
const ctx2 = c2.getContext('2d', { willReadFrequently: true });
|
||||||
|
const ctx3 = c3.getContext('2d', { willReadFrequently: true });
|
||||||
|
const isFirefox = navigator.userAgent.indexOf('Firefox') >= 0 && navigator.userAgent.indexOf('Windows') >= 0; // 是windows版火狐
|
||||||
|
const img = document.createElement('img');
|
||||||
|
ctx.fillStyle = 'rgba(255,255,255,1)';
|
||||||
|
ctx3.fillStyle = 'rgba(255,255,255,1)';
|
||||||
|
ctx.clearRect(0, 0, props.canvasWidth, props.canvasHeight);
|
||||||
|
ctx2.clearRect(0, 0, props.canvasWidth, props.canvasHeight);
|
||||||
|
|
||||||
|
pinX.value = getRandom(puzzleBaseSize.value, props.canvasWidth - puzzleBaseSize.value - 20); // 留20的边距
|
||||||
|
pinY.value = getRandom(20, props.canvasHeight - puzzleBaseSize.value - 20); // 主图高度 - 拼图块自身高度 - 20边距
|
||||||
|
img.crossOrigin = 'anonymous'; // 匿名,想要获取跨域的图片
|
||||||
|
img.onload = () => {
|
||||||
|
const [x, y, w, h] = makeImgSize(img);
|
||||||
|
ctx.save();
|
||||||
|
paintBrick(ctx);
|
||||||
|
ctx.closePath();
|
||||||
|
if (!isFirefox) {
|
||||||
|
ctx.shadowOffsetX = 0;
|
||||||
|
ctx.shadowOffsetY = 0;
|
||||||
|
ctx.shadowColor = '#000';
|
||||||
|
ctx.shadowBlur = 0;
|
||||||
|
ctx.fill();
|
||||||
|
ctx.clip();
|
||||||
|
} else {
|
||||||
|
ctx.clip();
|
||||||
|
ctx.save();
|
||||||
|
ctx.shadowOffsetX = 0;
|
||||||
|
ctx.shadowOffsetY = 0;
|
||||||
|
ctx.shadowColor = '#000';
|
||||||
|
ctx.shadowBlur = 0;
|
||||||
|
ctx.fill();
|
||||||
|
ctx.restore();
|
||||||
|
}
|
||||||
|
|
||||||
|
ctx.drawImage(img, x, y, w, h);
|
||||||
|
ctx3.fillRect(0, 0, props.canvasWidth, props.canvasHeight);
|
||||||
|
ctx3.drawImage(img, x, y, w, h);
|
||||||
|
|
||||||
|
ctx.globalCompositeOperation = 'source-atop';
|
||||||
|
paintBrick(ctx);
|
||||||
|
|
||||||
|
ctx.arc(
|
||||||
|
pinX.value + Math.ceil(puzzleBaseSize.value / 2),
|
||||||
|
pinY.value + Math.ceil(puzzleBaseSize.value / 2),
|
||||||
|
puzzleBaseSize.value * 1.2,
|
||||||
|
0,
|
||||||
|
Math.PI * 2,
|
||||||
|
true,
|
||||||
|
);
|
||||||
|
ctx.closePath();
|
||||||
|
ctx.shadowColor = 'rgba(255, 255, 255, .8)';
|
||||||
|
ctx.shadowOffsetX = -1;
|
||||||
|
ctx.shadowOffsetY = -1;
|
||||||
|
ctx.shadowBlur = Math.min(Math.ceil(8 * props.puzzleScale), 12);
|
||||||
|
ctx.fillStyle = '#ffffaa';
|
||||||
|
ctx.fill();
|
||||||
|
|
||||||
|
const imgData = ctx.getImageData(
|
||||||
|
pinX.value - 3, // 为了阴影 是从-3px开始截取,判定的时候要+3px
|
||||||
|
pinY.value - 20,
|
||||||
|
pinX.value + puzzleBaseSize.value + 5,
|
||||||
|
pinY.value + puzzleBaseSize.value + 5,
|
||||||
|
);
|
||||||
|
ctx2.putImageData(imgData, 0, pinY.value - 20);
|
||||||
|
|
||||||
|
ctx.restore();
|
||||||
|
ctx.clearRect(0, 0, props.canvasWidth, props.canvasHeight);
|
||||||
|
|
||||||
|
ctx.save();
|
||||||
|
paintBrick(ctx);
|
||||||
|
ctx.globalAlpha = 1;
|
||||||
|
ctx.fillStyle = '#ffffff';
|
||||||
|
ctx.fill();
|
||||||
|
ctx.restore();
|
||||||
|
|
||||||
|
ctx.save();
|
||||||
|
ctx.globalCompositeOperation = 'source-atop';
|
||||||
|
paintBrick(ctx);
|
||||||
|
ctx.arc(
|
||||||
|
pinX.value + Math.ceil(puzzleBaseSize.value / 2),
|
||||||
|
pinY.value + Math.ceil(puzzleBaseSize.value / 2),
|
||||||
|
puzzleBaseSize.value * 1.2,
|
||||||
|
0,
|
||||||
|
Math.PI * 2,
|
||||||
|
true,
|
||||||
|
);
|
||||||
|
ctx.shadowColor = '#ffffff';
|
||||||
|
ctx.shadowOffsetX = 2;
|
||||||
|
ctx.shadowOffsetY = 2;
|
||||||
|
ctx.shadowBlur = 16;
|
||||||
|
ctx.fill();
|
||||||
|
ctx.restore();
|
||||||
|
|
||||||
|
ctx.save();
|
||||||
|
ctx.globalCompositeOperation = 'destination-over';
|
||||||
|
ctx.drawImage(img, x, y, w, h);
|
||||||
|
ctx.restore();
|
||||||
|
|
||||||
|
loading.value = false;
|
||||||
|
isCanSlide.value = true;
|
||||||
|
};
|
||||||
|
img.onerror = () => {
|
||||||
|
init(true); // 如果图片加载错误就重新来,并强制用canvas随机作图
|
||||||
|
};
|
||||||
|
|
||||||
|
if (!withCanvas && props.imgs && props.imgs.length) {
|
||||||
|
let randomNum = getRandom(0, props.imgs.length - 1);
|
||||||
|
if (randomNum === imgIndex.value) {
|
||||||
|
if (randomNum === props.imgs.length - 1) {
|
||||||
|
randomNum = 0;
|
||||||
|
} else {
|
||||||
|
randomNum++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
imgIndex.value = randomNum;
|
||||||
|
img.src = props.imgs[randomNum];
|
||||||
|
} else {
|
||||||
|
img.src = makeImgWithCanvas();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getRandom(min, max) {
|
||||||
|
return Math.ceil(Math.random() * (max - min) + min);
|
||||||
|
}
|
||||||
|
|
||||||
|
function makeImgSize(img) {
|
||||||
|
const imgScale = img.width / img.height;
|
||||||
|
const canvasScale = props.canvasWidth / props.canvasHeight;
|
||||||
|
let x = 0,
|
||||||
|
y = 0,
|
||||||
|
w = 0,
|
||||||
|
h = 0;
|
||||||
|
if (imgScale > canvasScale) {
|
||||||
|
h = props.canvasHeight;
|
||||||
|
w = imgScale * h;
|
||||||
|
y = 0;
|
||||||
|
x = (props.canvasWidth - w) / 2;
|
||||||
|
} else {
|
||||||
|
w = props.canvasWidth;
|
||||||
|
h = w / imgScale;
|
||||||
|
x = 0;
|
||||||
|
y = (props.canvasHeight - h) / 2;
|
||||||
|
}
|
||||||
|
return [x, y, w, h];
|
||||||
|
}
|
||||||
|
|
||||||
|
function paintBrick(ctx) {
|
||||||
|
const moveL = Math.ceil(15 * props.puzzleScale); // 直线移动的基础距离
|
||||||
|
ctx.beginPath();
|
||||||
|
ctx.moveTo(pinX.value, pinY.value);
|
||||||
|
ctx.lineTo(pinX.value + moveL, pinY.value);
|
||||||
|
ctx.arcTo(
|
||||||
|
pinX.value + moveL,
|
||||||
|
pinY.value - moveL / 2,
|
||||||
|
pinX.value + moveL + moveL / 2,
|
||||||
|
pinY.value - moveL / 2,
|
||||||
|
moveL / 2,
|
||||||
|
);
|
||||||
|
ctx.arcTo(pinX.value + moveL + moveL, pinY.value - moveL / 2, pinX.value + moveL + moveL, pinY.value, moveL / 2);
|
||||||
|
ctx.lineTo(pinX.value + moveL + moveL + moveL, pinY.value);
|
||||||
|
ctx.lineTo(pinX.value + moveL + moveL + moveL, pinY.value + moveL);
|
||||||
|
ctx.arcTo(
|
||||||
|
pinX.value + moveL + moveL + moveL + moveL / 2,
|
||||||
|
pinY.value + moveL,
|
||||||
|
pinX.value + moveL + moveL + moveL + moveL / 2,
|
||||||
|
pinY.value + moveL + moveL / 2,
|
||||||
|
moveL / 2,
|
||||||
|
);
|
||||||
|
ctx.arcTo(
|
||||||
|
pinX.value + moveL + moveL + moveL + moveL / 2,
|
||||||
|
pinY.value + moveL + moveL,
|
||||||
|
pinX.value + moveL + moveL + moveL,
|
||||||
|
pinY.value + moveL + moveL,
|
||||||
|
moveL / 2,
|
||||||
|
);
|
||||||
|
ctx.lineTo(pinX.value + moveL + moveL + moveL, pinY.value + moveL + moveL + moveL);
|
||||||
|
ctx.lineTo(pinX.value, pinY.value + moveL + moveL + moveL);
|
||||||
|
ctx.lineTo(pinX.value, pinY.value + moveL + moveL);
|
||||||
|
|
||||||
|
ctx.arcTo(
|
||||||
|
pinX.value + moveL / 2,
|
||||||
|
pinY.value + moveL + moveL,
|
||||||
|
pinX.value + moveL / 2,
|
||||||
|
pinY.value + moveL + moveL / 2,
|
||||||
|
moveL / 2,
|
||||||
|
);
|
||||||
|
ctx.arcTo(pinX.value + moveL / 2, pinY.value + moveL, pinX.value, pinY.value + moveL, moveL / 2);
|
||||||
|
ctx.lineTo(pinX.value, pinY.value);
|
||||||
|
}
|
||||||
|
|
||||||
|
function makeImgWithCanvas() {
|
||||||
|
const canvas = document.createElement('canvas');
|
||||||
|
const ctx = canvas.getContext('2d', { willReadFrequently: true });
|
||||||
|
canvas.width = props.canvasWidth;
|
||||||
|
canvas.height = props.canvasHeight;
|
||||||
|
ctx.fillStyle = `rgb(${getRandom(100, 255)},${getRandom(100, 255)},${getRandom(100, 255)})`;
|
||||||
|
ctx.fillRect(0, 0, props.canvasWidth, props.canvasHeight);
|
||||||
|
for (let i = 0; i < 12; i++) {
|
||||||
|
ctx.fillStyle = `rgb(${getRandom(100, 255)},${getRandom(100, 255)},${getRandom(100, 255)})`;
|
||||||
|
ctx.strokeStyle = `rgb(${getRandom(100, 255)},${getRandom(100, 255)},${getRandom(100, 255)})`;
|
||||||
|
|
||||||
|
if (getRandom(0, 2) > 1) {
|
||||||
|
ctx.save();
|
||||||
|
ctx.rotate((getRandom(-90, 90) * Math.PI) / 180);
|
||||||
|
ctx.fillRect(
|
||||||
|
getRandom(-20, canvas.width - 20),
|
||||||
|
getRandom(-20, canvas.height - 20),
|
||||||
|
getRandom(10, canvas.width / 2 + 10),
|
||||||
|
getRandom(10, canvas.height / 2 + 10),
|
||||||
|
);
|
||||||
|
ctx.restore();
|
||||||
|
} else {
|
||||||
|
ctx.beginPath();
|
||||||
|
const ran = getRandom(-Math.PI, Math.PI);
|
||||||
|
ctx.arc(
|
||||||
|
getRandom(0, canvas.width),
|
||||||
|
getRandom(0, canvas.height),
|
||||||
|
getRandom(10, canvas.height / 2 + 10),
|
||||||
|
ran,
|
||||||
|
ran + Math.PI * 1.5,
|
||||||
|
);
|
||||||
|
ctx.closePath();
|
||||||
|
ctx.fill();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return canvas.toDataURL('image/png');
|
||||||
|
}
|
||||||
|
|
||||||
|
function submit() {
|
||||||
|
isSubmting.value = true;
|
||||||
|
|
||||||
|
console.log('pinX.value:', pinX.value);
|
||||||
|
console.log('styleWidth.value:', styleWidth.value);
|
||||||
|
console.log('sliderBaseSize.value:', sliderBaseSize.value);
|
||||||
|
console.log('puzzleBaseSize.value:', puzzleBaseSize.value);
|
||||||
|
console.log('props.canvasWidth:', props.canvasWidth);
|
||||||
|
|
||||||
|
const x = Math.abs(
|
||||||
|
pinX.value -
|
||||||
|
(styleWidth.value - sliderBaseSize.value) +
|
||||||
|
(puzzleBaseSize.value - sliderBaseSize.value) *
|
||||||
|
((styleWidth.value - sliderBaseSize.value) / (props.canvasWidth - sliderBaseSize.value)) -
|
||||||
|
3,
|
||||||
|
);
|
||||||
|
|
||||||
|
console.log('x:', x);
|
||||||
|
|
||||||
|
if (x < props.range) {
|
||||||
|
infoText.value = props.successText;
|
||||||
|
infoBoxFail.value = false;
|
||||||
|
infoBoxShow.value = true;
|
||||||
|
isCanSlide.value = false;
|
||||||
|
isSuccess.value = false;
|
||||||
|
clearTimeout(timer1.value);
|
||||||
|
timer1.value = setTimeout(() => {
|
||||||
|
isSubmting.value = false;
|
||||||
|
verSuccess.value = true;
|
||||||
|
emit('submit', 'F', verSuccess.value);
|
||||||
|
reset();
|
||||||
|
}, 800);
|
||||||
|
} else {
|
||||||
|
infoText.value = props.failText;
|
||||||
|
infoBoxFail.value = true;
|
||||||
|
infoBoxShow.value = true;
|
||||||
|
isCanSlide.value = false;
|
||||||
|
clearTimeout(timer1.value);
|
||||||
|
timer1.value = setTimeout(() => {
|
||||||
|
isSubmting.value = false;
|
||||||
|
reset();
|
||||||
|
}, 800);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function resetState() {
|
||||||
|
infoBoxFail.value = false;
|
||||||
|
infoBoxShow.value = false;
|
||||||
|
isCanSlide.value = false;
|
||||||
|
isSuccess.value = false;
|
||||||
|
startWidth.value = sliderBaseSize.value; // 鼠标点下去时父级的width
|
||||||
|
startX.value = 0; // 鼠标按下时的X
|
||||||
|
newX.value = 0; // 鼠标当前的偏移X
|
||||||
|
}
|
||||||
|
|
||||||
|
function reset() {
|
||||||
|
if (isSubmting.value) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
resetState();
|
||||||
|
init();
|
||||||
|
}
|
||||||
|
|
||||||
|
const emit = defineEmits(['submit']);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.vue-puzzle-vcode {
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
bottom: 0;
|
||||||
|
right: 0;
|
||||||
|
background-color: rgba(0, 0, 0, 0.3);
|
||||||
|
z-index: 999;
|
||||||
|
opacity: 1;
|
||||||
|
pointer-events: none;
|
||||||
|
transition: opacity 200ms;
|
||||||
|
|
||||||
|
&.show_ {
|
||||||
|
opacity: 1;
|
||||||
|
pointer-events: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.vue-auth-box_ {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
padding: 20px;
|
||||||
|
background: #fff;
|
||||||
|
user-select: none;
|
||||||
|
border-radius: 8px;
|
||||||
|
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
|
||||||
|
|
||||||
|
.auth-body_ {
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
border-radius: 3px;
|
||||||
|
|
||||||
|
.info-box_ {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 24px;
|
||||||
|
line-height: 24px;
|
||||||
|
text-align: center;
|
||||||
|
overflow: hidden;
|
||||||
|
font-size: 13px;
|
||||||
|
background-color: #83ce3f;
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateY(24px);
|
||||||
|
transition: all 200ms;
|
||||||
|
color: #fff;
|
||||||
|
z-index: 10;
|
||||||
|
|
||||||
|
&.show {
|
||||||
|
opacity: 0.95;
|
||||||
|
transform: translateY(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.fail {
|
||||||
|
background-color: #ce594b;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.auth-canvas2_ {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 60px;
|
||||||
|
height: 100%;
|
||||||
|
z-index: 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.auth-canvas3_ {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
opacity: 0;
|
||||||
|
transition: opacity 600ms;
|
||||||
|
z-index: 3;
|
||||||
|
|
||||||
|
&.show {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.flash_ {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 30px;
|
||||||
|
height: 100%;
|
||||||
|
background-color: rgba(255, 255, 255, 0.1);
|
||||||
|
z-index: 3;
|
||||||
|
|
||||||
|
&.show {
|
||||||
|
transition: transform 600ms;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.reset_ {
|
||||||
|
position: absolute;
|
||||||
|
top: 12px;
|
||||||
|
right: 12px;
|
||||||
|
width: 25px;
|
||||||
|
height: auto;
|
||||||
|
z-index: 12;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: transform 200ms;
|
||||||
|
transform: rotate(0deg);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
transform: rotate(-90deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.auth-control_ {
|
||||||
|
.range-box {
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
background-color: #f7f8fa;
|
||||||
|
margin-top: 20px;
|
||||||
|
border-radius: 3px;
|
||||||
|
height: 48px;
|
||||||
|
// box-shadow: inset -2px -2px 4px rgba(50, 130, 251, 0.1), inset 2px 2px 4px rgba(34, 73, 132, 0.2);
|
||||||
|
border-radius: 4px;
|
||||||
|
|
||||||
|
.range-text {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
font-size: 14px;
|
||||||
|
color: #b7bcd1;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
text-align: center;
|
||||||
|
width: 100%;
|
||||||
|
background: -webkit-gradient(
|
||||||
|
linear,
|
||||||
|
left top,
|
||||||
|
right top,
|
||||||
|
color-stop(0, #4d4d4d),
|
||||||
|
color-stop(0.4, #4d4d4d),
|
||||||
|
color-stop(0.5, white),
|
||||||
|
color-stop(0.6, #4d4d4d),
|
||||||
|
color-stop(1, #4d4d4d)
|
||||||
|
);
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
-webkit-animation: animate 1.5s infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes animate {
|
||||||
|
from {
|
||||||
|
background-position: -100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
to {
|
||||||
|
background-position: 100px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes animate {
|
||||||
|
from {
|
||||||
|
background-position: -100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
to {
|
||||||
|
background-position: 100px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.range-slider {
|
||||||
|
position: absolute;
|
||||||
|
height: 100%;
|
||||||
|
width: 50px;
|
||||||
|
border-radius: 3px;
|
||||||
|
|
||||||
|
.range-btn {
|
||||||
|
position: absolute;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
right: 0;
|
||||||
|
width: 50px;
|
||||||
|
height: 100%;
|
||||||
|
background-color: #fff;
|
||||||
|
border-radius: 3px;
|
||||||
|
cursor: pointer;
|
||||||
|
box-shadow: inset 0px -2px 4px rgba(0, 36, 90, 0.2), inset 0px 2px 4px rgba(194, 219, 255, 0.8);
|
||||||
|
border-radius: 50%;
|
||||||
|
|
||||||
|
& > div {
|
||||||
|
width: 0;
|
||||||
|
height: 40%;
|
||||||
|
transition: all 200ms;
|
||||||
|
|
||||||
|
&:nth-child(2) {
|
||||||
|
margin: 0 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
border: solid 1px #6aa0ff;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover,
|
||||||
|
&.isDown {
|
||||||
|
& > div:first-child {
|
||||||
|
border: solid 4px transparent;
|
||||||
|
height: 0;
|
||||||
|
border-right-color: #6aa0ff;
|
||||||
|
}
|
||||||
|
|
||||||
|
& > div:nth-child(2) {
|
||||||
|
border-width: 3px;
|
||||||
|
height: 0;
|
||||||
|
border-radius: 3px;
|
||||||
|
margin: 0 6px;
|
||||||
|
border-right-color: #6aa0ff;
|
||||||
|
}
|
||||||
|
|
||||||
|
& > div:nth-child(3) {
|
||||||
|
border: solid 4px transparent;
|
||||||
|
height: 0;
|
||||||
|
border-left-color: #6aa0ff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.vue-puzzle-overflow {
|
||||||
|
overflow: hidden !important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -1,3 +1,409 @@
|
|||||||
<template>
|
<template>
|
||||||
<view>login页面</view>
|
<div class="content">
|
||||||
|
<img src="@/assets/img/Frame.svg" alt="" style="width: 480px; height: 480px; margin-right: 160px" />
|
||||||
|
<a-space
|
||||||
|
direction="vertical"
|
||||||
|
size="large"
|
||||||
|
style="width: 400px; height: 480px; background-color: #fff; border-radius: 8px; margin-top: 40px"
|
||||||
|
align="center"
|
||||||
|
>
|
||||||
|
<img src="@/assets/img/LOGO.svg" alt="" style="width: 155px; height: 37px; margin-top: 49px" />
|
||||||
|
<span style="font-size: 16px; color: #737478">AI营销工具</span>
|
||||||
|
<a-form
|
||||||
|
ref="formRef"
|
||||||
|
:model="loginForm"
|
||||||
|
:rules="formRules"
|
||||||
|
auto-label-width
|
||||||
|
style="width: 320px; margin-top: 20px"
|
||||||
|
>
|
||||||
|
<a-form-item field="username" hide-label>
|
||||||
|
<a-input
|
||||||
|
v-model="loginForm.username"
|
||||||
|
placeholder="输入手机号"
|
||||||
|
class="form-input"
|
||||||
|
style="margin-top: 48px; border-radius: 8px"
|
||||||
|
clearable
|
||||||
|
@blur="validateField('username')"
|
||||||
|
@input="clearError('username')"
|
||||||
|
allow-clear
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item field="code" hide-label>
|
||||||
|
<div
|
||||||
|
class="form-input"
|
||||||
|
style="display: flex; justify-content: space-between; align-items: center; border-radius: 8px"
|
||||||
|
>
|
||||||
|
<a-input
|
||||||
|
v-model="loginForm.code"
|
||||||
|
placeholder="验证码"
|
||||||
|
style="background-color: #fff; border: none"
|
||||||
|
@blur="validateField('code')"
|
||||||
|
@input="clearError('code')"
|
||||||
|
allow-clear
|
||||||
|
maxlength="6"
|
||||||
|
/>
|
||||||
|
<span
|
||||||
|
style="
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 400;
|
||||||
|
text-align: center;
|
||||||
|
margin-right: 16px;
|
||||||
|
width: 120px;
|
||||||
|
text-align: right;
|
||||||
|
"
|
||||||
|
:style="{
|
||||||
|
color: countdown > 0 || hasGetCode ? '#6D4CFE' : '#211F24',
|
||||||
|
cursor: countdown > 0 ? 'not-allowed' : 'pointer',
|
||||||
|
}"
|
||||||
|
@click="getCode"
|
||||||
|
>{{ countdown > 0 ? `${countdown}s` : hasGetCode ? '重新发送' : '发送验证码' }}</span
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item hide-label>
|
||||||
|
<div
|
||||||
|
type="primary"
|
||||||
|
style="
|
||||||
|
width: 480px;
|
||||||
|
height: 48px;
|
||||||
|
font-size: 16px;
|
||||||
|
border-radius: 8px;
|
||||||
|
color: #fff;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 48px;
|
||||||
|
"
|
||||||
|
:style="{ backgroundColor: isFormValid && hasCheck ? '#6D4CFE' : '#C5B7FF' }"
|
||||||
|
@click="handleSubmit"
|
||||||
|
:disabled="!isFormValid || !hasCheck"
|
||||||
|
>
|
||||||
|
{{ isLogin ? '登录' : '注册并开通企业账号' }}
|
||||||
|
</div>
|
||||||
|
</a-form-item>
|
||||||
|
</a-form>
|
||||||
|
<a-space style="margin-top: 16px; color: #737478; font-size: 12px">
|
||||||
|
<a-checkbox v-model="hasCheck" style="margin-right: 0px; font-size: 12px"
|
||||||
|
>{{ isLogin ? '登录' : '注册' }}即代表同意</a-checkbox
|
||||||
|
>
|
||||||
|
<a-link href="link" class="form-link" target="_blank">用户协议</a-link>
|
||||||
|
<span>和</span>
|
||||||
|
<a-link href="link" class="form-link" target="_blank">隐私政策</a-link>
|
||||||
|
</a-space>
|
||||||
|
</a-space>
|
||||||
|
</div>
|
||||||
|
<PuzzleVerification
|
||||||
|
:show="isVerificationVisible"
|
||||||
|
@submit="handleVerificationSubmit"
|
||||||
|
@cancel="isVerificationVisible = false"
|
||||||
|
/>
|
||||||
|
<a-modal :visible="visible" @ok="handleOk" @cancel="handleCancel" unmountOnClose hide-cancel>
|
||||||
|
<template #title>
|
||||||
|
<span style="text-align: left; width: 100%">选择账号</span>
|
||||||
|
</template>
|
||||||
|
<div class="account-bind-container">
|
||||||
|
<a-card :bordered="false" class="bind-card">
|
||||||
|
<div class="bind-header">
|
||||||
|
<a-typography-text class="phone-number">{{ phoneNumber }} 已在以下企业绑定了账号</a-typography-text>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<a-list :bordered="false" :split="false" class="account-list">
|
||||||
|
<a-list-item
|
||||||
|
v-for="(account, index) in accounts"
|
||||||
|
:key="index"
|
||||||
|
class="account-item"
|
||||||
|
:class="{ selected: selectedAccount === index }"
|
||||||
|
@click="selectAccount(index)"
|
||||||
|
>
|
||||||
|
<a-list-item-meta>
|
||||||
|
<template #title>
|
||||||
|
<div style="display: flex; align-items: center; gap: 12px">
|
||||||
|
<a-checkbox :model-value="selectedAccount == index" />
|
||||||
|
<a-typography-text>{{ account.name }}</a-typography-text>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</a-list-item-meta>
|
||||||
|
</a-list-item>
|
||||||
|
</a-list>
|
||||||
|
</a-card>
|
||||||
|
</div>
|
||||||
|
</a-modal>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import PuzzleVerification from './PuzzleVerification.vue';
|
||||||
|
import { fetchLoginCaptCha } from '@/api/all/login';
|
||||||
|
import { ref, reactive, onUnmounted, computed } from 'vue';
|
||||||
|
import { Message } from '@arco-design/web-vue';
|
||||||
|
import router from '@/router';
|
||||||
|
const $message = Message;
|
||||||
|
|
||||||
|
const formRef = ref();
|
||||||
|
const countdown = ref(0);
|
||||||
|
let timer = ref();
|
||||||
|
const isLogin = ref(false);
|
||||||
|
const isVerificationVisible = ref(false);
|
||||||
|
const visible = ref(false);
|
||||||
|
const hasGetCode = ref(false);
|
||||||
|
const submitting = ref(false);
|
||||||
|
const hasCheck = ref(false);
|
||||||
|
const phoneNumber = ref('13616544933');
|
||||||
|
const selectedAccount = ref(0);
|
||||||
|
|
||||||
|
const accounts = ref([{ name: '灵机用户291094' }, { name: '灵机用户291094' }]);
|
||||||
|
|
||||||
|
const loginForm = reactive({
|
||||||
|
username: '',
|
||||||
|
code: '',
|
||||||
|
});
|
||||||
|
|
||||||
|
// 表单校验规则
|
||||||
|
const formRules = {
|
||||||
|
username: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '请填写手机号',
|
||||||
|
trigger: ['blur', 'change'],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
validator: (value: string, callback: (error?: string) => void) => {
|
||||||
|
if (!/^1[3-9]\d{9}$/.test(value)) {
|
||||||
|
callback('手机号格式不正确');
|
||||||
|
} else {
|
||||||
|
callback();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
trigger: ['blur', 'change'],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
code: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '请填写验证码',
|
||||||
|
trigger: ['blur', 'change'],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
validator: (value: string, callback: (error?: string) => void) => {
|
||||||
|
if (!/^\d{6}$/.test(value)) {
|
||||||
|
callback('验证码必须是6位数字');
|
||||||
|
} else {
|
||||||
|
callback();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
trigger: ['blur', 'change'],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
// 表单是否有效
|
||||||
|
const isFormValid = computed(() => {
|
||||||
|
return (
|
||||||
|
loginForm.username.trim() !== '' &&
|
||||||
|
/^1[3-9]\d{9}$/.test(loginForm.username) &&
|
||||||
|
loginForm.code.trim() !== '' &&
|
||||||
|
/^\d{6}$/.test(loginForm.code)
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
const selectAccount = (index: any) => {
|
||||||
|
selectedAccount.value = index;
|
||||||
|
};
|
||||||
|
|
||||||
|
const validateField = (field: string) => {
|
||||||
|
formRef.value.validateField(field);
|
||||||
|
};
|
||||||
|
|
||||||
|
const clearError = (field: string) => {
|
||||||
|
formRef.value.clearValidate(field);
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleOk = () => {
|
||||||
|
visible.value = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleCancel = () => {
|
||||||
|
visible.value = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
const getCode = async () => {
|
||||||
|
if (countdown.value > 0) return;
|
||||||
|
|
||||||
|
// 先重置验证状态
|
||||||
|
formRef.value.clearValidate('username');
|
||||||
|
|
||||||
|
// 验证手机号字段
|
||||||
|
try {
|
||||||
|
const result = await formRef.value.validateField('username');
|
||||||
|
// 只有当验证通过时才会显示滑块验证
|
||||||
|
if (result === true || result === undefined) {
|
||||||
|
isVerificationVisible.value = true;
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
// 验证失败,错误信息会自动显示
|
||||||
|
console.log('手机号验证失败:', error);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 验证码验证通过后
|
||||||
|
const handleVerificationSubmit = async () => {
|
||||||
|
isVerificationVisible.value = false;
|
||||||
|
startCountdown();
|
||||||
|
|
||||||
|
try {
|
||||||
|
await fetchLoginCaptCha({ mobile: loginForm.username });
|
||||||
|
$message.success('验证码发送成功');
|
||||||
|
} catch (error) {
|
||||||
|
$message.error('验证码发送失败');
|
||||||
|
// 重置倒计时
|
||||||
|
countdown.value = 0;
|
||||||
|
clearInterval(timer.value);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 提交表单
|
||||||
|
const handleSubmit = async () => {
|
||||||
|
try {
|
||||||
|
// 校验所有字段
|
||||||
|
await formRef.value.validate();
|
||||||
|
|
||||||
|
if (!hasCheck.value) {
|
||||||
|
$message.error('请先勾选同意用户协议');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
submitting.value = true;
|
||||||
|
// 调用登录/注册API
|
||||||
|
await new Promise((resolve) => setTimeout(resolve, 1000));
|
||||||
|
|
||||||
|
// 处理登录成功逻辑
|
||||||
|
$message.success(isLogin.value ? '登录成功' : '注册成功');
|
||||||
|
router.replace({ path: '/dataEngine', replace: true });
|
||||||
|
} catch (error) {
|
||||||
|
// 错误信息会显示在输入框下方
|
||||||
|
} finally {
|
||||||
|
submitting.value = false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 开始倒计时
|
||||||
|
const startCountdown = () => {
|
||||||
|
countdown.value = 60;
|
||||||
|
hasGetCode.value = true;
|
||||||
|
timer.value = setInterval(() => {
|
||||||
|
countdown.value--;
|
||||||
|
if (countdown.value <= 0) {
|
||||||
|
clearInterval(timer.value as number);
|
||||||
|
timer.value = null;
|
||||||
|
}
|
||||||
|
}, 1000);
|
||||||
|
};
|
||||||
|
|
||||||
|
onUnmounted(() => {
|
||||||
|
if (timer.value) {
|
||||||
|
clearInterval(timer.value);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.content {
|
||||||
|
background-image: url('@/assets/img/BG.svg');
|
||||||
|
width: 100vw;
|
||||||
|
height: 100vh;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
background-size: cover;
|
||||||
|
background-position: center;
|
||||||
|
background-color: #f0edff;
|
||||||
|
}
|
||||||
|
.form-input {
|
||||||
|
border: 1px solid #d7d7d9;
|
||||||
|
background-color: #fff;
|
||||||
|
border-radius: 4px;
|
||||||
|
width: 320px;
|
||||||
|
height: 48px;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #333333;
|
||||||
|
}
|
||||||
|
.form-link {
|
||||||
|
color: #211f24;
|
||||||
|
font-size: 12px;
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
:deep(.arco-space-item) {
|
||||||
|
margin: 0px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.account-bind-container {
|
||||||
|
width: 100%;
|
||||||
|
max-width: 400px;
|
||||||
|
margin: 0 auto;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bind-card {
|
||||||
|
background-color: var(--color-bg-2);
|
||||||
|
width: 100%;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: start;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bind-header {
|
||||||
|
margin-bottom: 8px;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.phone-number {
|
||||||
|
font-size: 14px;
|
||||||
|
color: var(--color-text-4);
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.account-list {
|
||||||
|
margin-top: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.account-item {
|
||||||
|
padding: 12px 16px;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
background-color: var(--color-bg-2);
|
||||||
|
border-radius: 4px;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: all 0.2s ease;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.account-item {
|
||||||
|
padding: 12px 16px;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
background-color: var(--color-bg-2);
|
||||||
|
border-radius: 4px;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: all 0.2s ease;
|
||||||
|
border: 1px solid var(--color-border-2);
|
||||||
|
box-shadow: 0 2px 4px 0 #b1b2b5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.account-item.selected {
|
||||||
|
border-color: #6d4cfe;
|
||||||
|
background-color: rgba(109, 76, 254, 0.1);
|
||||||
|
box-shadow: 0 2px 4px 0 rgba(109, 76, 254, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.arco-list-item-main) {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.arco-list-item-actions) {
|
||||||
|
margin-left: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.arco-checkbox) {
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.arco-checkbox-checked .arco-checkbox-mask) {
|
||||||
|
background-color: #6d4cfe;
|
||||||
|
border-color: #6d4cfe;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|||||||
@ -10,11 +10,13 @@
|
|||||||
@refresh="getProductList"
|
@refresh="getProductList"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
<a-empty v-if="products.length === 0" />
|
||||||
</Container>
|
</Container>
|
||||||
<Container title="成功案例" class="body mt-24px">
|
<Container title="成功案例" class="body mt-24px">
|
||||||
<div class="flex flex-wrap">
|
<div class="flex flex-wrap">
|
||||||
<Case v-for="item in cases" :key="item.id" class="mt-20px ml-20px" :data="item"></Case>
|
<Case v-for="item in cases" :key="item.id" class="mt-20px ml-20px" :data="item"></Case>
|
||||||
</div>
|
</div>
|
||||||
|
<a-empty v-if="cases.length === 0" />
|
||||||
</Container>
|
</Container>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
74
yarn.lock
@ -492,6 +492,35 @@
|
|||||||
unimport "^2.2.4"
|
unimport "^2.2.4"
|
||||||
untyped "^1.2.2"
|
untyped "^1.2.2"
|
||||||
|
|
||||||
|
"@parcel/watcher-darwin-arm64@2.5.1":
|
||||||
|
version "2.5.1"
|
||||||
|
resolved "https://registry.npmmirror.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz"
|
||||||
|
integrity sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==
|
||||||
|
|
||||||
|
"@parcel/watcher@^2.4.1":
|
||||||
|
version "2.5.1"
|
||||||
|
resolved "https://registry.npmmirror.com/@parcel/watcher/-/watcher-2.5.1.tgz"
|
||||||
|
integrity sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==
|
||||||
|
dependencies:
|
||||||
|
detect-libc "^1.0.3"
|
||||||
|
is-glob "^4.0.3"
|
||||||
|
micromatch "^4.0.5"
|
||||||
|
node-addon-api "^7.0.0"
|
||||||
|
optionalDependencies:
|
||||||
|
"@parcel/watcher-android-arm64" "2.5.1"
|
||||||
|
"@parcel/watcher-darwin-arm64" "2.5.1"
|
||||||
|
"@parcel/watcher-darwin-x64" "2.5.1"
|
||||||
|
"@parcel/watcher-freebsd-x64" "2.5.1"
|
||||||
|
"@parcel/watcher-linux-arm-glibc" "2.5.1"
|
||||||
|
"@parcel/watcher-linux-arm-musl" "2.5.1"
|
||||||
|
"@parcel/watcher-linux-arm64-glibc" "2.5.1"
|
||||||
|
"@parcel/watcher-linux-arm64-musl" "2.5.1"
|
||||||
|
"@parcel/watcher-linux-x64-glibc" "2.5.1"
|
||||||
|
"@parcel/watcher-linux-x64-musl" "2.5.1"
|
||||||
|
"@parcel/watcher-win32-arm64" "2.5.1"
|
||||||
|
"@parcel/watcher-win32-ia32" "2.5.1"
|
||||||
|
"@parcel/watcher-win32-x64" "2.5.1"
|
||||||
|
|
||||||
"@polka/url@^1.0.0-next.20":
|
"@polka/url@^1.0.0-next.20":
|
||||||
version "1.0.0-next.21"
|
version "1.0.0-next.21"
|
||||||
resolved "https://registry.npmmirror.com/@polka/url/-/url-1.0.0-next.21.tgz"
|
resolved "https://registry.npmmirror.com/@polka/url/-/url-1.0.0-next.21.tgz"
|
||||||
@ -1381,6 +1410,13 @@ chokidar@^3.5.3:
|
|||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
fsevents "~2.3.2"
|
fsevents "~2.3.2"
|
||||||
|
|
||||||
|
chokidar@^4.0.0:
|
||||||
|
version "4.0.3"
|
||||||
|
resolved "https://registry.npmmirror.com/chokidar/-/chokidar-4.0.3.tgz"
|
||||||
|
integrity sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==
|
||||||
|
dependencies:
|
||||||
|
readdirp "^4.0.1"
|
||||||
|
|
||||||
chownr@^2.0.0:
|
chownr@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.npmmirror.com/chownr/-/chownr-2.0.0.tgz"
|
resolved "https://registry.npmmirror.com/chownr/-/chownr-2.0.0.tgz"
|
||||||
@ -1701,6 +1737,11 @@ destroy@^1.0.4:
|
|||||||
resolved "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz"
|
resolved "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz"
|
||||||
integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==
|
integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==
|
||||||
|
|
||||||
|
detect-libc@^1.0.3:
|
||||||
|
version "1.0.3"
|
||||||
|
resolved "https://registry.npmmirror.com/detect-libc/-/detect-libc-1.0.3.tgz"
|
||||||
|
integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==
|
||||||
|
|
||||||
digest-header@^1.0.0:
|
digest-header@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.npmmirror.com/digest-header/-/digest-header-1.0.0.tgz"
|
resolved "https://registry.npmmirror.com/digest-header/-/digest-header-1.0.0.tgz"
|
||||||
@ -2602,6 +2643,11 @@ image-size@~0.5.0:
|
|||||||
resolved "https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz"
|
resolved "https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz"
|
||||||
integrity sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==
|
integrity sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==
|
||||||
|
|
||||||
|
immutable@^5.0.2:
|
||||||
|
version "5.1.3"
|
||||||
|
resolved "https://registry.npmmirror.com/immutable/-/immutable-5.1.3.tgz"
|
||||||
|
integrity sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==
|
||||||
|
|
||||||
import-fresh@^3.0.0, import-fresh@^3.2.1:
|
import-fresh@^3.0.0, import-fresh@^3.2.1:
|
||||||
version "3.3.0"
|
version "3.3.0"
|
||||||
resolved "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz"
|
resolved "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz"
|
||||||
@ -3387,6 +3433,11 @@ nice-try@^1.0.4:
|
|||||||
resolved "https://registry.npmmirror.com/nice-try/-/nice-try-1.0.5.tgz"
|
resolved "https://registry.npmmirror.com/nice-try/-/nice-try-1.0.5.tgz"
|
||||||
integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
|
integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
|
||||||
|
|
||||||
|
node-addon-api@^7.0.0:
|
||||||
|
version "7.1.1"
|
||||||
|
resolved "https://registry.npmmirror.com/node-addon-api/-/node-addon-api-7.1.1.tgz"
|
||||||
|
integrity sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==
|
||||||
|
|
||||||
node-fetch-native@^1.0.2:
|
node-fetch-native@^1.0.2:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.npmmirror.com/node-fetch-native/-/node-fetch-native-1.0.2.tgz"
|
resolved "https://registry.npmmirror.com/node-fetch-native/-/node-fetch-native-1.0.2.tgz"
|
||||||
@ -3912,6 +3963,11 @@ readable-stream@1.1.x:
|
|||||||
isarray "0.0.1"
|
isarray "0.0.1"
|
||||||
string_decoder "~0.10.x"
|
string_decoder "~0.10.x"
|
||||||
|
|
||||||
|
readdirp@^4.0.1:
|
||||||
|
version "4.1.2"
|
||||||
|
resolved "https://registry.npmmirror.com/readdirp/-/readdirp-4.1.2.tgz"
|
||||||
|
integrity sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==
|
||||||
|
|
||||||
readdirp@~3.6.0:
|
readdirp@~3.6.0:
|
||||||
version "3.6.0"
|
version "3.6.0"
|
||||||
resolved "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz"
|
resolved "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz"
|
||||||
@ -4039,6 +4095,17 @@ safe-regex-test@^1.0.0:
|
|||||||
resolved "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz"
|
resolved "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz"
|
||||||
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
|
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
|
||||||
|
|
||||||
|
sass@*, sass@^1.89.2:
|
||||||
|
version "1.89.2"
|
||||||
|
resolved "https://registry.npmmirror.com/sass/-/sass-1.89.2.tgz"
|
||||||
|
integrity sha512-xCmtksBKd/jdJ9Bt9p7nPKiuqrlBMBuuGkQlkhZjjQk3Ty48lv93k5Dq6OPkKt4XwxDJ7tvlfrTa1MPA9bf+QA==
|
||||||
|
dependencies:
|
||||||
|
chokidar "^4.0.0"
|
||||||
|
immutable "^5.0.2"
|
||||||
|
source-map-js ">=0.6.2 <2.0.0"
|
||||||
|
optionalDependencies:
|
||||||
|
"@parcel/watcher" "^2.4.1"
|
||||||
|
|
||||||
sax@^1.2.4, sax@>=0.6.0:
|
sax@^1.2.4, sax@>=0.6.0:
|
||||||
version "1.2.4"
|
version "1.2.4"
|
||||||
resolved "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz"
|
resolved "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz"
|
||||||
@ -4223,7 +4290,7 @@ socks@^2.3.3:
|
|||||||
ip "^2.0.0"
|
ip "^2.0.0"
|
||||||
smart-buffer "^4.2.0"
|
smart-buffer "^4.2.0"
|
||||||
|
|
||||||
source-map-js@^1.0.1, source-map-js@^1.0.2:
|
source-map-js@^1.0.1, source-map-js@^1.0.2, "source-map-js@>=0.6.2 <2.0.0":
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz"
|
resolved "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz"
|
||||||
integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
|
integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
|
||||||
@ -4445,6 +4512,11 @@ svg-tags@^1.0.0:
|
|||||||
resolved "https://registry.npmmirror.com/svg-tags/-/svg-tags-1.0.0.tgz"
|
resolved "https://registry.npmmirror.com/svg-tags/-/svg-tags-1.0.0.tgz"
|
||||||
integrity sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==
|
integrity sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==
|
||||||
|
|
||||||
|
swiper@^11.2.8:
|
||||||
|
version "11.2.8"
|
||||||
|
resolved "https://registry.npmjs.org/swiper/-/swiper-11.2.8.tgz"
|
||||||
|
integrity sha512-S5FVf6zWynPWooi7pJ7lZhSUe2snTzqLuUzbd5h5PHUOhzgvW0bLKBd2wv0ixn6/5o9vwc/IkQT74CRcLJQzeg==
|
||||||
|
|
||||||
tapable@^1.0.0:
|
tapable@^1.0.0:
|
||||||
version "1.1.3"
|
version "1.1.3"
|
||||||
resolved "https://registry.npmmirror.com/tapable/-/tapable-1.1.3.tgz"
|
resolved "https://registry.npmmirror.com/tapable/-/tapable-1.1.3.tgz"
|
||||||
|
|||||||