提交 033f8e72 编写于 作者: W will5451

Auto Commit

上级 79c5bd79
# Logs # Compiled class file
logs *.class
*.log
npm-debug.log* # Log file
yarn-debug.log* *.log
yarn-error.log*
pnpm-debug.log* # BlueJ files
lerna-debug.log* *.ctxt
package-lock.json
# Mobile Tools for Java (J2ME)
node_modules .mtj.tmp/
.DS_Store
dist # Package Files #
dist-ssr *.jar
coverage *.war
*.local *.nar
*.ear
/cypress/videos/ *.zip
/cypress/screenshots/ *.tar.gz
*.rar
# Editor directories and files
.vscode/* # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
!.vscode/extensions.json hs_err_pid*
.idea node_modules
*.suo .idea/
*.ntvs*
*.njsproj
*.sln
*.sw?
run = "npm i && npm run dev"
language = "node" language = "node"
[deployment]
build = "npm i && npm run build"
run = "npm run preview"
[env]
PATH = "/root/${PROJECT_DIR}/.config/npm/node_global/bin:/root/${PROJECT_DIR}/node_modules/.bin:${PATH}"
XDG_CONFIG_HOME = "/root/.config"
npm_config_prefix = "/root/${PROJECT_DIR}/.config/npm/node_global"
[debugger] [debugger]
program = "main.js" program = "main.js"
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
# koi-vue3-screen
#### Description
vue3版本数据大屏模板
#### Software Architecture
Software architecture description
#### Installation
1. xxxx
2. xxxx
3. xxxx
#### Instructions
1. xxxx
2. xxxx
3. xxxx
#### Contribution
1. Fork the repository
2. Create Feat_xxx branch
3. Commit your code
4. Create Pull Request
#### Gitee Feature
1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md
2. Gitee blog [blog.gitee.com](https://blog.gitee.com)
3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore)
4. The most valuable open source project [GVP](https://gitee.com/gvp)
5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help)
6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
# VueJS-with-Vite
Vue.js 是基于 JavaScript 构建用户界面的库。该模板使用 Vite 来提供应用程序服务。 ## 介绍
vue3版本数据大屏模板
## 软件架构
软件架构说明:使用Vue3+Ts+Vite+DataV+ElementPlus+SASS
## 项目截图
<table>
<tr>
<td><img src="./example.png"/></td>
</tr>
</table>
## 安装教程
1. 下载依赖包:npm install
2. 启动项目:npm run dev
3. Axios配置:路径src/axios/index.ts,api文件夹里面有接口调用示例。
## 使用说明
响应式自适应不同分辨率的屏幕,通过百分比+ElementPlus的布局方式进行配置
详细文档看vue2码云地址的详细说明,vue3码云文档不在进行详细介绍
## 交流
<table>
<tr>
<td><img src="./wechat.png"/></td>
</tr>
</table>
## 推荐的IDE设置
[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin).
## 自定义配置
请参阅 [[Vite配置参考](https://vitejs.dev/config/).
## 项目设置
```sh
npm install
```
### 在开发环境中启动和热更新
```sh
npm run dev
```
### 编译用于生产环境
```sh
npm run build
```
...@@ -2,12 +2,23 @@ ...@@ -2,12 +2,23 @@
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<link rel="icon" href="/favicon.ico" /> <link rel="icon" type="image/svg+xml" href="/vite.svg" />
<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>可视化外网安全态势</title>
</head> </head>
<body> <body>
<div id="app"></div> <div id="app"></div>
<script type="module" src="/src/main.js"></script> <script type="module" src="/src/main.ts"></script>
</body> </body>
<style>
html,
body,
#app {
padding: 0px;
margin: 0px;
height: 100%;
box-sizing: border-box;
}
</style>
</html> </html>
{ pkgs }: {
deps = [
pkgs.nodejs-16_x
pkgs.yarn
];
}
\ No newline at end of file
{
"name": "koi-vite-screen",
"version": "0.0.0",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "koi-vite-screen",
"version": "0.0.0",
"dependencies": {
"@element-plus/icons-vue": "^2.1.0",
"@kjgl77/datav-vue3": "^1.4.2",
"animate.css": "^4.1.1",
"axios": "^1.3.4",
"echarts": "^5.4.1",
"echarts-map": "^3.0.1",
"element-plus": "^2.2.36",
"live2d-widget": "^3.1.4",
"pinia": "^2.0.33",
"pinia-plugin-persist": "^1.0.0",
"vue": "^3.2.45",
"vue-router": "^4.1.6"
},
"devDependencies": {
"@types/node": "^18.15.3",
"@vitejs/plugin-vue": "^4.0.0",
"sass": "^1.58.3",
"typescript": "^4.9.3",
"vite": "^4.1.0",
"vue-tsc": "^1.0.24"
}
},
"node_modules/@babel/parser": {
"version": "7.21.2",
"resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.21.2.tgz",
"integrity": "sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==",
"bin": {
"parser": "bin/babel-parser.js"
},
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/@babel/runtime": {
"version": "7.21.0",
"resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.21.0.tgz",
"integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==",
"dependencies": {
"regenerator-runtime": "^0.13.11"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@ctrl/tinycolor": {
"version": "3.6.0",
"resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.6.0.tgz",
"integrity": "sha512-/Z3l6pXthq0JvMYdUFyX9j0MaCltlIn6mfh9jLyQwg5aPKxkyNa0PTHtU1AlFXLNk55ZuAeJRcpvq+tmLfKmaQ==",
"engines": {
"node": ">=10"
}
},
"node_modules/@element-plus/icons-vue": {
"version": "2.1.0",
"resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.1.0.tgz",
"integrity": "sha512-PSBn3elNoanENc1vnCfh+3WA9fimRC7n+fWkf3rE5jvv+aBohNHABC/KAR5KWPecxWxDTVT1ERpRbOMRcOV/vA==",
"peerDependencies": {
"vue": "^3.2.0"
}
},
"node_modules/@esbuild/android-arm": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.16.17.tgz",
"integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==",
"cpu": [
"arm"
],
"dev": true,
"optional": true,
"os": [
"android"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/android-arm64": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz",
"integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==",
"cpu": [
"arm64"
],
"dev": true,
"optional": true,
"os": [
"android"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/android-x64": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.16.17.tgz",
"integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==",
"cpu": [
"x64"
],
"dev": true,
"optional": true,
"os": [
"android"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/darwin-arm64": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz",
"integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==",
"cpu": [
"arm64"
],
"dev": true,
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/darwin-x64": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz",
"integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==",
"cpu": [
"x64"
],
"dev": true,
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/freebsd-arm64": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz",
"integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==",
"cpu": [
"arm64"
],
"dev": true,
"optional": true,
"os": [
"freebsd"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/freebsd-x64": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz",
"integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==",
"cpu": [
"x64"
],
"dev": true,
"optional": true,
"os": [
"freebsd"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/linux-arm": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz",
"integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==",
"cpu": [
"arm"
],
"dev": true,
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/linux-arm64": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz",
"integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==",
"cpu": [
"arm64"
],
"dev": true,
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/linux-ia32": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz",
"integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==",
"cpu": [
"ia32"
],
"dev": true,
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/linux-loong64": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz",
"integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==",
"cpu": [
"loong64"
],
"dev": true,
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/linux-mips64el": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz",
"integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==",
"cpu": [
"mips64el"
],
"dev": true,
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/linux-ppc64": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz",
"integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==",
"cpu": [
"ppc64"
],
"dev": true,
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/linux-riscv64": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz",
"integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==",
"cpu": [
"riscv64"
],
"dev": true,
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/linux-s390x": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz",
"integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==",
"cpu": [
"s390x"
],
"dev": true,
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/linux-x64": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz",
"integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==",
"cpu": [
"x64"
],
"dev": true,
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/netbsd-x64": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz",
"integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==",
"cpu": [
"x64"
],
"dev": true,
"optional": true,
"os": [
"netbsd"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/openbsd-x64": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz",
"integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==",
"cpu": [
"x64"
],
"dev": true,
"optional": true,
"os": [
"openbsd"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/sunos-x64": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz",
"integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==",
"cpu": [
"x64"
],
"dev": true,
"optional": true,
"os": [
"sunos"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/win32-arm64": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz",
"integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==",
"cpu": [
"arm64"
],
"dev": true,
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/win32-ia32": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz",
"integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==",
"cpu": [
"ia32"
],
"dev": true,
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/win32-x64": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz",
"integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==",
"cpu": [
"x64"
],
"dev": true,
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@floating-ui/core": {
"version": "1.2.2",
"resolved": "https://registry.npmmirror.com/@floating-ui/core/-/core-1.2.2.tgz",
"integrity": "sha512-FaO9KVLFnxknZaGWGmNtjD2CVFuc0u4yeGEofoyXO2wgRA7fLtkngT6UB0vtWQWuhH3iMTZZ/Y89CMeyGfn8pA=="
},
"node_modules/@floating-ui/dom": {
"version": "1.2.3",
"resolved": "https://registry.npmmirror.com/@floating-ui/dom/-/dom-1.2.3.tgz",
"integrity": "sha512-lK9cZUrHSJLMVAdCvDqs6Ug8gr0wmqksYiaoj/bxj2gweRQkSuhg2/V6Jswz2KiQ0RAULbqw1oQDJIMpQ5GfGA==",
"dependencies": {
"@floating-ui/core": "^1.2.2"
}
},
"node_modules/@jiaminghi/bezier-curve": {
"version": "0.0.9",
"resolved": "https://registry.npmmirror.com/@jiaminghi/bezier-curve/-/bezier-curve-0.0.9.tgz",
"integrity": "sha512-u9xJPOEl6Dri2E9FfmJoGxYQY7vYJkURNX04Vj64tdi535tPrpkuf9Sm0lNr3QTKdHQh0DdNRsaa62FLQNQEEw==",
"dependencies": {
"@babel/runtime": "^7.5.5"
}
},
"node_modules/@jiaminghi/c-render": {
"version": "0.4.3",
"resolved": "https://registry.npmmirror.com/@jiaminghi/c-render/-/c-render-0.4.3.tgz",
"integrity": "sha512-FJfzj5hGj7MLqqqI2D7vEzHKbQ1Ynnn7PJKgzsjXaZpJzTqs2Yw5OSeZnm6l7Qj7jyPAP53lFvEQNH4o4j6s+Q==",
"dependencies": {
"@babel/runtime": "^7.5.5",
"@jiaminghi/bezier-curve": "*",
"@jiaminghi/color": "*",
"@jiaminghi/transition": "*"
}
},
"node_modules/@jiaminghi/charts": {
"version": "0.2.18",
"resolved": "https://registry.npmmirror.com/@jiaminghi/charts/-/charts-0.2.18.tgz",
"integrity": "sha512-K+HXaOOeWG9OOY1VG6M4mBreeeIAPhb9X+khG651AbnwEwL6G2UtcAQ8GWCq6GzhczcLwwhIhuaHqRygwHC0sA==",
"dependencies": {
"@babel/runtime": "^7.5.5",
"@jiaminghi/c-render": "^0.4.3"
}
},
"node_modules/@jiaminghi/color": {
"version": "1.1.3",
"resolved": "https://registry.npmmirror.com/@jiaminghi/color/-/color-1.1.3.tgz",
"integrity": "sha512-ZY3hdorgODk4OSTbxyXBPxAxHPIVf9rPlKJyK1C1db46a50J0reFKpAvfZG8zMG3lvM60IR7Qawgcu4ZDO3+Hg=="
},
"node_modules/@jiaminghi/transition": {
"version": "1.1.11",
"resolved": "https://registry.npmmirror.com/@jiaminghi/transition/-/transition-1.1.11.tgz",
"integrity": "sha512-owBggipoHMikDHHDW5Gc7RZYlVuvxHADiU4bxfjBVkHDAmmck+fCkm46n2JzC3j33hWvP9nSCAeh37t6stgWeg==",
"dependencies": {
"@babel/runtime": "^7.5.5"
}
},
"node_modules/@kjgl77/datav-vue3": {
"version": "1.4.2",
"resolved": "https://registry.npmmirror.com/@kjgl77/datav-vue3/-/datav-vue3-1.4.2.tgz",
"integrity": "sha512-2bwQtvPpRNSmWAUS/e81SLZdOabCdiF3wGkvLjkOa/n4grygNk0f8l7AwpaP0bUlc4ougPgFRIAy/wzkyNocoA==",
"dependencies": {
"@jiaminghi/c-render": "^0.4.3",
"@jiaminghi/charts": "^0.2.18",
"@jiaminghi/color": "^1.1.3",
"@vueuse/core": "^9.1.0",
"lodash-es": "^4.17.21"
}
},
"node_modules/@popperjs/core": {
"name": "@sxzz/popperjs-es",
"version": "2.11.7",
"resolved": "https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz",
"integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ=="
},
"node_modules/@types/lodash": {
"version": "4.14.191",
"resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.14.191.tgz",
"integrity": "sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ=="
},
"node_modules/@types/lodash-es": {
"version": "4.17.6",
"resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.6.tgz",
"integrity": "sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==",
"dependencies": {
"@types/lodash": "*"
}
},
"node_modules/@types/node": {
"version": "18.15.3",
"resolved": "https://registry.npmmirror.com/@types/node/-/node-18.15.3.tgz",
"integrity": "sha512-p6ua9zBxz5otCmbpb5D3U4B5Nanw6Pk3PPyX05xnxbB/fRv71N7CPmORg7uAD5P70T0xmx1pzAx/FUfa5X+3cw==",
"dev": true
},
"node_modules/@types/web-bluetooth": {
"version": "0.0.16",
"resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz",
"integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ=="
},
"node_modules/@vitejs/plugin-vue": {
"version": "4.0.0",
"resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-4.0.0.tgz",
"integrity": "sha512-e0X4jErIxAB5oLtDqbHvHpJe/uWNkdpYV83AOG2xo2tEVSzCzewgJMtREZM30wXnM5ls90hxiOtAuVU6H5JgbA==",
"dev": true,
"engines": {
"node": "^14.18.0 || >=16.0.0"
},
"peerDependencies": {
"vite": "^4.0.0",
"vue": "^3.2.25"
}
},
"node_modules/@volar/language-core": {
"version": "1.3.0-alpha.0",
"resolved": "https://registry.npmmirror.com/@volar/language-core/-/language-core-1.3.0-alpha.0.tgz",
"integrity": "sha512-W3uMzecHPcbwddPu4SJpUcPakRBK/y/BP+U0U6NiPpUX1tONLC4yCawt+QBJqtgJ+sfD6ztf5PyvPL3hQRqfOA==",
"dev": true,
"dependencies": {
"@volar/source-map": "1.3.0-alpha.0"
}
},
"node_modules/@volar/source-map": {
"version": "1.3.0-alpha.0",
"resolved": "https://registry.npmmirror.com/@volar/source-map/-/source-map-1.3.0-alpha.0.tgz",
"integrity": "sha512-jSdizxWFvDTvkPYZnO6ew3sBZUnS0abKCbuopkc0JrIlFbznWC/fPH3iPFIMS8/IIkRxq1Jh9VVG60SmtsdaMQ==",
"dev": true,
"dependencies": {
"muggle-string": "^0.2.2"
}
},
"node_modules/@volar/typescript": {
"version": "1.3.0-alpha.0",
"resolved": "https://registry.npmmirror.com/@volar/typescript/-/typescript-1.3.0-alpha.0.tgz",
"integrity": "sha512-5UItyW2cdH2mBLu4RrECRNJRgtvvzKrSCn2y3v/D61QwIDkGx4aeil6x8RFuUL5TFtV6QvVHXnsOHxNgd+sCow==",
"dev": true,
"dependencies": {
"@volar/language-core": "1.3.0-alpha.0"
}
},
"node_modules/@volar/vue-language-core": {
"version": "1.2.0",
"resolved": "https://registry.npmmirror.com/@volar/vue-language-core/-/vue-language-core-1.2.0.tgz",
"integrity": "sha512-w7yEiaITh2WzKe6u8ZdeLKCUz43wdmY/OqAmsB/PGDvvhTcVhCJ6f0W/RprZL1IhqH8wALoWiwEh/Wer7ZviMQ==",
"dev": true,
"dependencies": {
"@volar/language-core": "1.3.0-alpha.0",
"@volar/source-map": "1.3.0-alpha.0",
"@vue/compiler-dom": "^3.2.47",
"@vue/compiler-sfc": "^3.2.47",
"@vue/reactivity": "^3.2.47",
"@vue/shared": "^3.2.47",
"minimatch": "^6.1.6",
"muggle-string": "^0.2.2",
"vue-template-compiler": "^2.7.14"
}
},
"node_modules/@volar/vue-typescript": {
"version": "1.2.0",
"resolved": "https://registry.npmmirror.com/@volar/vue-typescript/-/vue-typescript-1.2.0.tgz",
"integrity": "sha512-zjmRi9y3J1EkG+pfuHp8IbHmibihrKK485cfzsHjiuvJMGrpkWvlO5WVEk8oslMxxeGC5XwBFE9AOlvh378EPA==",
"dev": true,
"dependencies": {
"@volar/typescript": "1.3.0-alpha.0",
"@volar/vue-language-core": "1.2.0"
}
},
"node_modules/@vue/compiler-core": {
"version": "3.2.47",
"resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.47.tgz",
"integrity": "sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==",
"dependencies": {
"@babel/parser": "^7.16.4",
"@vue/shared": "3.2.47",
"estree-walker": "^2.0.2",
"source-map": "^0.6.1"
}
},
"node_modules/@vue/compiler-dom": {
"version": "3.2.47",
"resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.47.tgz",
"integrity": "sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==",
"dependencies": {
"@vue/compiler-core": "3.2.47",
"@vue/shared": "3.2.47"
}
},
"node_modules/@vue/compiler-sfc": {
"version": "3.2.47",
"resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.2.47.tgz",
"integrity": "sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==",
"dependencies": {
"@babel/parser": "^7.16.4",
"@vue/compiler-core": "3.2.47",
"@vue/compiler-dom": "3.2.47",
"@vue/compiler-ssr": "3.2.47",
"@vue/reactivity-transform": "3.2.47",
"@vue/shared": "3.2.47",
"estree-walker": "^2.0.2",
"magic-string": "^0.25.7",
"postcss": "^8.1.10",
"source-map": "^0.6.1"
}
},
"node_modules/@vue/compiler-ssr": {
"version": "3.2.47",
"resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.47.tgz",
"integrity": "sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==",
"dependencies": {
"@vue/compiler-dom": "3.2.47",
"@vue/shared": "3.2.47"
}
},
"node_modules/@vue/devtools-api": {
"version": "6.5.0",
"resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.5.0.tgz",
"integrity": "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q=="
},
"node_modules/@vue/reactivity": {
"version": "3.2.47",
"resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.47.tgz",
"integrity": "sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==",
"dependencies": {
"@vue/shared": "3.2.47"
}
},
"node_modules/@vue/reactivity-transform": {
"version": "3.2.47",
"resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.2.47.tgz",
"integrity": "sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==",
"dependencies": {
"@babel/parser": "^7.16.4",
"@vue/compiler-core": "3.2.47",
"@vue/shared": "3.2.47",
"estree-walker": "^2.0.2",
"magic-string": "^0.25.7"
}
},
"node_modules/@vue/runtime-core": {
"version": "3.2.47",
"resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.47.tgz",
"integrity": "sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA==",
"dependencies": {
"@vue/reactivity": "3.2.47",
"@vue/shared": "3.2.47"
}
},
"node_modules/@vue/runtime-dom": {
"version": "3.2.47",
"resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.47.tgz",
"integrity": "sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA==",
"dependencies": {
"@vue/runtime-core": "3.2.47",
"@vue/shared": "3.2.47",
"csstype": "^2.6.8"
}
},
"node_modules/@vue/server-renderer": {
"version": "3.2.47",
"resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.47.tgz",
"integrity": "sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==",
"dependencies": {
"@vue/compiler-ssr": "3.2.47",
"@vue/shared": "3.2.47"
},
"peerDependencies": {
"vue": "3.2.47"
}
},
"node_modules/@vue/shared": {
"version": "3.2.47",
"resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.47.tgz",
"integrity": "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ=="
},
"node_modules/@vueuse/core": {
"version": "9.13.0",
"resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-9.13.0.tgz",
"integrity": "sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==",
"dependencies": {
"@types/web-bluetooth": "^0.0.16",
"@vueuse/metadata": "9.13.0",
"@vueuse/shared": "9.13.0",
"vue-demi": "*"
}
},
"node_modules/@vueuse/core/node_modules/vue-demi": {
"version": "0.13.11",
"resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.11.tgz",
"integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==",
"hasInstallScript": true,
"bin": {
"vue-demi-fix": "bin/vue-demi-fix.js",
"vue-demi-switch": "bin/vue-demi-switch.js"
},
"engines": {
"node": ">=12"
},
"peerDependencies": {
"@vue/composition-api": "^1.0.0-rc.1",
"vue": "^3.0.0-0 || ^2.6.0"
},
"peerDependenciesMeta": {
"@vue/composition-api": {
"optional": true
}
}
},
"node_modules/@vueuse/metadata": {
"version": "9.13.0",
"resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-9.13.0.tgz",
"integrity": "sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ=="
},
"node_modules/@vueuse/shared": {
"version": "9.13.0",
"resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-9.13.0.tgz",
"integrity": "sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==",
"dependencies": {
"vue-demi": "*"
}
},
"node_modules/@vueuse/shared/node_modules/vue-demi": {
"version": "0.13.11",
"resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.11.tgz",
"integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==",
"hasInstallScript": true,
"bin": {
"vue-demi-fix": "bin/vue-demi-fix.js",
"vue-demi-switch": "bin/vue-demi-switch.js"
},
"engines": {
"node": ">=12"
},
"peerDependencies": {
"@vue/composition-api": "^1.0.0-rc.1",
"vue": "^3.0.0-0 || ^2.6.0"
},
"peerDependenciesMeta": {
"@vue/composition-api": {
"optional": true
}
}
},
"node_modules/animate.css": {
"version": "4.1.1",
"resolved": "https://registry.npmmirror.com/animate.css/-/animate.css-4.1.1.tgz",
"integrity": "sha512-+mRmCTv6SbCmtYJCN4faJMNFVNN5EuCTTprDTAo7YzIGji2KADmakjVA3+8mVDkZ2Bf09vayB35lSQIex2+QaQ=="
},
"node_modules/ansi-escapes": {
"version": "1.4.0",
"resolved": "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz",
"integrity": "sha512-wiXutNjDUlNEDWHcYH3jtZUhd3c4/VojassD8zHdHCY13xbZy2XbW+NKQwA0tWGBVzDA9qEzYwfoSsWmviidhw==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/ansi-regex": {
"version": "2.1.1",
"resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz",
"integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/ansi-styles": {
"version": "2.2.1",
"resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-2.2.1.tgz",
"integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/anymatch": {
"version": "3.1.3",
"resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz",
"integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
"dev": true,
"dependencies": {
"normalize-path": "^3.0.0",
"picomatch": "^2.0.4"
},
"engines": {
"node": ">= 8"
}
},
"node_modules/async-validator": {
"version": "4.2.5",
"resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz",
"integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg=="
},
"node_modules/asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
},
"node_modules/axios": {
"version": "1.3.4",
"resolved": "https://registry.npmmirror.com/axios/-/axios-1.3.4.tgz",
"integrity": "sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==",
"dependencies": {
"follow-redirects": "^1.15.0",
"form-data": "^4.0.0",
"proxy-from-env": "^1.1.0"
}
},
"node_modules/babel-polyfill": {
"version": "6.23.0",
"resolved": "https://registry.npmmirror.com/babel-polyfill/-/babel-polyfill-6.23.0.tgz",
"integrity": "sha512-0l7mVU+LrQ2X/ZTUq63T5i3VyR2aTgcRTFmBcD6djQ/Fek6q1A9t5u0F4jZVYHzp78jwWAzGfLpAY1b4/I3lfg==",
"dependencies": {
"babel-runtime": "^6.22.0",
"core-js": "^2.4.0",
"regenerator-runtime": "^0.10.0"
}
},
"node_modules/babel-polyfill/node_modules/regenerator-runtime": {
"version": "0.10.5",
"resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz",
"integrity": "sha512-02YopEIhAgiBHWeoTiA8aitHDt8z6w+rQqNuIftlM+ZtvSl/brTouaU7DW6GO/cHtvxJvS4Hwv2ibKdxIRi24w=="
},
"node_modules/babel-runtime": {
"version": "6.26.0",
"resolved": "https://registry.npmmirror.com/babel-runtime/-/babel-runtime-6.26.0.tgz",
"integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==",
"dependencies": {
"core-js": "^2.4.0",
"regenerator-runtime": "^0.11.0"
}
},
"node_modules/babel-runtime/node_modules/regenerator-runtime": {
"version": "0.11.1",
"resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
"integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
},
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
"dev": true
},
"node_modules/binary-extensions": {
"version": "2.2.0",
"resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz",
"integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
"dev": true,
"engines": {
"node": ">=8"
}
},
"node_modules/brace-expansion": {
"version": "2.0.1",
"resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz",
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
"dev": true,
"dependencies": {
"balanced-match": "^1.0.0"
}
},
"node_modules/braces": {
"version": "3.0.2",
"resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz",
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
"dev": true,
"dependencies": {
"fill-range": "^7.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/chalk": {
"version": "1.1.3",
"resolved": "https://registry.npmmirror.com/chalk/-/chalk-1.1.3.tgz",
"integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
"dependencies": {
"ansi-styles": "^2.2.1",
"escape-string-regexp": "^1.0.2",
"has-ansi": "^2.0.0",
"strip-ansi": "^3.0.0",
"supports-color": "^2.0.0"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/chardet": {
"version": "0.4.2",
"resolved": "https://registry.npmmirror.com/chardet/-/chardet-0.4.2.tgz",
"integrity": "sha512-j/Toj7f1z98Hh2cYo2BVr85EpIRWqUi7rtRSGxh/cqUjqrnJe9l9UE7IUGd2vQ2p+kSHLkSzObQPZPLUC6TQwg=="
},
"node_modules/chokidar": {
"version": "3.5.3",
"resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz",
"integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
"dev": true,
"dependencies": {
"anymatch": "~3.1.2",
"braces": "~3.0.2",
"glob-parent": "~5.1.2",
"is-binary-path": "~2.1.0",
"is-glob": "~4.0.1",
"normalize-path": "~3.0.0",
"readdirp": "~3.6.0"
},
"engines": {
"node": ">= 8.10.0"
},
"optionalDependencies": {
"fsevents": "~2.3.2"
}
},
"node_modules/cli-cursor": {
"version": "2.1.0",
"resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-2.1.0.tgz",
"integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==",
"dependencies": {
"restore-cursor": "^2.0.0"
},
"engines": {
"node": ">=4"
}
},
"node_modules/cli-width": {
"version": "2.2.1",
"resolved": "https://registry.npmmirror.com/cli-width/-/cli-width-2.2.1.tgz",
"integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw=="
},
"node_modules/combined-stream": {
"version": "1.0.8",
"resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz",
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
"dependencies": {
"delayed-stream": "~1.0.0"
},
"engines": {
"node": ">= 0.8"
}
},
"node_modules/core-js": {
"version": "2.6.12",
"resolved": "https://registry.npmmirror.com/core-js/-/core-js-2.6.12.tgz",
"integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==",
"deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.",
"hasInstallScript": true
},
"node_modules/csstype": {
"version": "2.6.21",
"resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz",
"integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w=="
},
"node_modules/dayjs": {
"version": "1.11.7",
"resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.7.tgz",
"integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ=="
},
"node_modules/de-indent": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz",
"integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==",
"dev": true
},
"node_modules/delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
"engines": {
"node": ">=0.4.0"
}
},
"node_modules/echarts": {
"version": "5.4.1",
"resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.4.1.tgz",
"integrity": "sha512-9ltS3M2JB0w2EhcYjCdmtrJ+6haZcW6acBolMGIuf01Hql1yrIV01L1aRj7jsaaIULJslEP9Z3vKlEmnJaWJVQ==",
"dependencies": {
"tslib": "2.3.0",
"zrender": "5.4.1"
}
},
"node_modules/echarts-map": {
"version": "3.0.1",
"resolved": "https://registry.npmmirror.com/echarts-map/-/echarts-map-3.0.1.tgz",
"integrity": "sha512-ZsfP4U75v9p2sdSCP4Fqhh8O43EglFwjeV/FbaIfeDn6G1MEvbp3CF0XRNAVhwoTfBK0zILuGcpcwcWq6z8CYw==",
"dependencies": {
"echarts": "~3.0.1"
}
},
"node_modules/echarts-map/node_modules/echarts": {
"version": "3.0.1",
"resolved": "https://registry.npmmirror.com/echarts/-/echarts-3.0.1.tgz",
"integrity": "sha512-8Hvaa+hOUAYaFAgQjRISWN/2LKZ4g66nE33dHNjG8wT3S/SU7m2ENJ2+96mEkLQN5m9VvQKhmjCMqiky3J/png==",
"deprecated": "deprecated",
"dependencies": {
"zrenderjs": "~3.0.2"
}
},
"node_modules/element-plus": {
"version": "2.2.36",
"resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.2.36.tgz",
"integrity": "sha512-9DzLqOVuw8P5Ck8Uqd9XdnDYVg2Z3iosZ1gtk2xDCWNqeoACpldP5gxa/Hbfgp4QeA3xC+f3g+UeoKKu79l28g==",
"dependencies": {
"@ctrl/tinycolor": "^3.4.1",
"@element-plus/icons-vue": "^2.0.6",
"@floating-ui/dom": "^1.0.1",
"@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7",
"@types/lodash": "^4.14.182",
"@types/lodash-es": "^4.17.6",
"@vueuse/core": "^9.1.0",
"async-validator": "^4.2.5",
"dayjs": "^1.11.3",
"escape-html": "^1.0.3",
"lodash": "^4.17.21",
"lodash-es": "^4.17.21",
"lodash-unified": "^1.0.2",
"memoize-one": "^6.0.0",
"normalize-wheel-es": "^1.2.0"
},
"peerDependencies": {
"vue": "^3.2.0"
}
},
"node_modules/encoding": {
"version": "0.1.13",
"resolved": "https://registry.npmmirror.com/encoding/-/encoding-0.1.13.tgz",
"integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
"dependencies": {
"iconv-lite": "^0.6.2"
}
},
"node_modules/encoding/node_modules/iconv-lite": {
"version": "0.6.3",
"resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz",
"integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3.0.0"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/esbuild": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.16.17.tgz",
"integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==",
"dev": true,
"hasInstallScript": true,
"bin": {
"esbuild": "bin/esbuild"
},
"engines": {
"node": ">=12"
},
"optionalDependencies": {
"@esbuild/android-arm": "0.16.17",
"@esbuild/android-arm64": "0.16.17",
"@esbuild/android-x64": "0.16.17",
"@esbuild/darwin-arm64": "0.16.17",
"@esbuild/darwin-x64": "0.16.17",
"@esbuild/freebsd-arm64": "0.16.17",
"@esbuild/freebsd-x64": "0.16.17",
"@esbuild/linux-arm": "0.16.17",
"@esbuild/linux-arm64": "0.16.17",
"@esbuild/linux-ia32": "0.16.17",
"@esbuild/linux-loong64": "0.16.17",
"@esbuild/linux-mips64el": "0.16.17",
"@esbuild/linux-ppc64": "0.16.17",
"@esbuild/linux-riscv64": "0.16.17",
"@esbuild/linux-s390x": "0.16.17",
"@esbuild/linux-x64": "0.16.17",
"@esbuild/netbsd-x64": "0.16.17",
"@esbuild/openbsd-x64": "0.16.17",
"@esbuild/sunos-x64": "0.16.17",
"@esbuild/win32-arm64": "0.16.17",
"@esbuild/win32-ia32": "0.16.17",
"@esbuild/win32-x64": "0.16.17"
}
},
"node_modules/escape-html": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz",
"integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
},
"node_modules/escape-string-regexp": {
"version": "1.0.5",
"resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
"integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
"engines": {
"node": ">=0.8.0"
}
},
"node_modules/estree-walker": {
"version": "2.0.2",
"resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
},
"node_modules/external-editor": {
"version": "2.2.0",
"resolved": "https://registry.npmmirror.com/external-editor/-/external-editor-2.2.0.tgz",
"integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==",
"dependencies": {
"chardet": "^0.4.0",
"iconv-lite": "^0.4.17",
"tmp": "^0.0.33"
},
"engines": {
"node": ">=0.12"
}
},
"node_modules/figures": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/figures/-/figures-2.0.0.tgz",
"integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==",
"dependencies": {
"escape-string-regexp": "^1.0.5"
},
"engines": {
"node": ">=4"
}
},
"node_modules/fill-range": {
"version": "7.0.1",
"resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz",
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
"dev": true,
"dependencies": {
"to-regex-range": "^5.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/follow-redirects": {
"version": "1.15.2",
"resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.2.tgz",
"integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==",
"engines": {
"node": ">=4.0"
},
"peerDependenciesMeta": {
"debug": {
"optional": true
}
}
},
"node_modules/form-data": {
"version": "4.0.0",
"resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz",
"integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
"dependencies": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
"mime-types": "^2.1.12"
},
"engines": {
"node": ">= 6"
}
},
"node_modules/fsevents": {
"version": "2.3.2",
"resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz",
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
"dev": true,
"hasInstallScript": true,
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
"node_modules/function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz",
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
"dev": true
},
"node_modules/glob-parent": {
"version": "5.1.2",
"resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz",
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
"dev": true,
"dependencies": {
"is-glob": "^4.0.1"
},
"engines": {
"node": ">= 6"
}
},
"node_modules/has": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/has/-/has-1.0.3.tgz",
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
"dev": true,
"dependencies": {
"function-bind": "^1.1.1"
},
"engines": {
"node": ">= 0.4.0"
}
},
"node_modules/has-ansi": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/has-ansi/-/has-ansi-2.0.0.tgz",
"integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==",
"dependencies": {
"ansi-regex": "^2.0.0"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/he": {
"version": "1.2.0",
"resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz",
"integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
"dev": true,
"bin": {
"he": "bin/he"
}
},
"node_modules/iconv-lite": {
"version": "0.4.24",
"resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz",
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/immutable": {
"version": "4.2.4",
"resolved": "https://registry.npmmirror.com/immutable/-/immutable-4.2.4.tgz",
"integrity": "sha512-WDxL3Hheb1JkRN3sQkyujNlL/xRjAo3rJtaU5xeufUauG66JdMr32bLj4gF+vWl84DIA3Zxw7tiAjneYzRRw+w==",
"dev": true
},
"node_modules/inquirer": {
"version": "3.0.6",
"resolved": "https://registry.npmmirror.com/inquirer/-/inquirer-3.0.6.tgz",
"integrity": "sha512-thluxTGBXUGb8DuQcvH9/CM/CrcGyB5xUpWc9x6Slqcq1z/hRr2a6KxUpX4ddRfmbe0hg3E4jTvo5833aWz3BA==",
"dependencies": {
"ansi-escapes": "^1.1.0",
"chalk": "^1.0.0",
"cli-cursor": "^2.1.0",
"cli-width": "^2.0.0",
"external-editor": "^2.0.1",
"figures": "^2.0.0",
"lodash": "^4.3.0",
"mute-stream": "0.0.7",
"run-async": "^2.2.0",
"rx": "^4.1.0",
"string-width": "^2.0.0",
"strip-ansi": "^3.0.0",
"through": "^2.3.6"
}
},
"node_modules/is-binary-path": {
"version": "2.1.0",
"resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz",
"integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
"dev": true,
"dependencies": {
"binary-extensions": "^2.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/is-core-module": {
"version": "2.11.0",
"resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.11.0.tgz",
"integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
"dev": true,
"dependencies": {
"has": "^1.0.3"
}
},
"node_modules/is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz",
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/is-fullwidth-code-point": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
"integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
"engines": {
"node": ">=4"
}
},
"node_modules/is-glob": {
"version": "4.0.3",
"resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz",
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
"dev": true,
"dependencies": {
"is-extglob": "^2.1.1"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/is-number": {
"version": "7.0.0",
"resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz",
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
"dev": true,
"engines": {
"node": ">=0.12.0"
}
},
"node_modules/is-stream": {
"version": "1.1.0",
"resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-1.1.0.tgz",
"integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/live2d-widget": {
"version": "3.1.4",
"resolved": "https://registry.npmmirror.com/live2d-widget/-/live2d-widget-3.1.4.tgz",
"integrity": "sha512-KseUqwiGZLb1SArr+lDaXl8AjXSFI/x/Z+BbDIyPHwElGAktCvhFYw/SDkrI4LL5bnVuGMLKMg6crMTa23KGDQ==",
"hasInstallScript": true,
"dependencies": {
"opencollective": "^1.0.3",
"opencollective-postinstall": "^2.0.1"
}
},
"node_modules/lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
"node_modules/lodash-es": {
"version": "4.17.21",
"resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz",
"integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
},
"node_modules/lodash-unified": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.3.tgz",
"integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==",
"peerDependencies": {
"@types/lodash-es": "*",
"lodash": "*",
"lodash-es": "*"
}
},
"node_modules/magic-string": {
"version": "0.25.9",
"resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz",
"integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
"dependencies": {
"sourcemap-codec": "^1.4.8"
}
},
"node_modules/memoize-one": {
"version": "6.0.0",
"resolved": "https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz",
"integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw=="
},
"node_modules/mime-db": {
"version": "1.52.0",
"resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz",
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/mime-types": {
"version": "2.1.35",
"resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz",
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
"dependencies": {
"mime-db": "1.52.0"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/mimic-fn": {
"version": "1.2.0",
"resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-1.2.0.tgz",
"integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
"engines": {
"node": ">=4"
}
},
"node_modules/minimatch": {
"version": "6.2.0",
"resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-6.2.0.tgz",
"integrity": "sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==",
"dev": true,
"dependencies": {
"brace-expansion": "^2.0.1"
},
"engines": {
"node": ">=10"
}
},
"node_modules/minimist": {
"version": "1.2.0",
"resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.0.tgz",
"integrity": "sha512-7Wl+Jz+IGWuSdgsQEJ4JunV0si/iMhg42MnQQG6h1R6TNeVenp4U9x5CC5v/gYqz/fENLQITAWXidNtVL0NNbw=="
},
"node_modules/muggle-string": {
"version": "0.2.2",
"resolved": "https://registry.npmmirror.com/muggle-string/-/muggle-string-0.2.2.tgz",
"integrity": "sha512-YVE1mIJ4VpUMqZObFndk9CJu6DBJR/GB13p3tXuNbwD4XExaI5EOuRl6BHeIDxIqXZVxSfAC+y6U1Z/IxCfKUg==",
"dev": true
},
"node_modules/mute-stream": {
"version": "0.0.7",
"resolved": "https://registry.npmmirror.com/mute-stream/-/mute-stream-0.0.7.tgz",
"integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ=="
},
"node_modules/nanoid": {
"version": "3.3.4",
"resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.4.tgz",
"integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
"bin": {
"nanoid": "bin/nanoid.cjs"
},
"engines": {
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
"node_modules/node-fetch": {
"version": "1.6.3",
"resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-1.6.3.tgz",
"integrity": "sha512-BDxbhLHXFFFvilHjh9xihcDyPkXQ+kjblxnl82zAX41xUYSNvuRpFRznmldR9+OKu+p+ULZ7hNoyunlLB5ecUA==",
"dependencies": {
"encoding": "^0.1.11",
"is-stream": "^1.0.1"
}
},
"node_modules/normalize-path": {
"version": "3.0.0",
"resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz",
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/normalize-wheel-es": {
"version": "1.2.0",
"resolved": "https://registry.npmmirror.com/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz",
"integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw=="
},
"node_modules/object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/onetime": {
"version": "2.0.1",
"resolved": "https://registry.npmmirror.com/onetime/-/onetime-2.0.1.tgz",
"integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==",
"dependencies": {
"mimic-fn": "^1.0.0"
},
"engines": {
"node": ">=4"
}
},
"node_modules/opencollective": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/opencollective/-/opencollective-1.0.3.tgz",
"integrity": "sha512-YBRI0Qa8+Ui0/STV1qYuPrJm889PT3oCPHMVoL+8Y3nwCffj7PSrB2NlGgrhgBKDujxTjxknHWJ/FiqOsYcIDw==",
"dependencies": {
"babel-polyfill": "6.23.0",
"chalk": "1.1.3",
"inquirer": "3.0.6",
"minimist": "1.2.0",
"node-fetch": "1.6.3",
"opn": "4.0.2"
},
"bin": {
"oc": "dist/bin/opencollective.js",
"opencollective": "dist/bin/opencollective.js"
}
},
"node_modules/opencollective-postinstall": {
"version": "2.0.3",
"resolved": "https://registry.npmmirror.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz",
"integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==",
"bin": {
"opencollective-postinstall": "index.js"
}
},
"node_modules/opn": {
"version": "4.0.2",
"resolved": "https://registry.npmmirror.com/opn/-/opn-4.0.2.tgz",
"integrity": "sha512-iPBWbPP4OEOzR1xfhpGLDh+ypKBOygunZhM9jBtA7FS5sKjEiMZw0EFb82hnDOmTZX90ZWLoZKUza4cVt8MexA==",
"dependencies": {
"object-assign": "^4.0.1",
"pinkie-promise": "^2.0.0"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/os-tmpdir": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
"integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/path-parse": {
"version": "1.0.7",
"resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz",
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
"dev": true
},
"node_modules/picocolors": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz",
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
},
"node_modules/picomatch": {
"version": "2.3.1",
"resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz",
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
"dev": true,
"engines": {
"node": ">=8.6"
}
},
"node_modules/pinia": {
"version": "2.0.33",
"resolved": "https://registry.npmmirror.com/pinia/-/pinia-2.0.33.tgz",
"integrity": "sha512-HOj1yVV2itw6rNIrR2f7+MirGNxhORjrULL8GWgRwXsGSvEqIQ+SE0MYt6cwtpegzCda3i+rVTZM+AM7CG+kRg==",
"dependencies": {
"@vue/devtools-api": "^6.5.0",
"vue-demi": "*"
},
"peerDependencies": {
"@vue/composition-api": "^1.4.0",
"typescript": ">=4.4.4",
"vue": "^2.6.14 || ^3.2.0"
},
"peerDependenciesMeta": {
"@vue/composition-api": {
"optional": true
},
"typescript": {
"optional": true
}
}
},
"node_modules/pinia-plugin-persist": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/pinia-plugin-persist/-/pinia-plugin-persist-1.0.0.tgz",
"integrity": "sha512-M4hBBd8fz/GgNmUPaaUsC29y1M09lqbXrMAHcusVoU8xlQi1TqgkWnnhvMikZwr7Le/hVyMx8KUcumGGrR6GVw==",
"dependencies": {
"vue-demi": "^0.12.1"
},
"peerDependencies": {
"@vue/composition-api": "^1.0.0",
"pinia": "^2.0.0",
"vue": "^2.0.0 || >=3.0.0"
},
"peerDependenciesMeta": {
"@vue/composition-api": {
"optional": true
}
}
},
"node_modules/pinia-plugin-persist/node_modules/vue-demi": {
"version": "0.12.5",
"resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.12.5.tgz",
"integrity": "sha512-BREuTgTYlUr0zw0EZn3hnhC3I6gPWv+Kwh4MCih6QcAeaTlaIX0DwOVN0wHej7hSvDPecz4jygy/idsgKfW58Q==",
"hasInstallScript": true,
"bin": {
"vue-demi-fix": "bin/vue-demi-fix.js",
"vue-demi-switch": "bin/vue-demi-switch.js"
},
"engines": {
"node": ">=12"
},
"peerDependencies": {
"@vue/composition-api": "^1.0.0-rc.1",
"vue": "^3.0.0-0 || ^2.6.0"
},
"peerDependenciesMeta": {
"@vue/composition-api": {
"optional": true
}
}
},
"node_modules/pinia/node_modules/vue-demi": {
"version": "0.13.11",
"resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.11.tgz",
"integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==",
"hasInstallScript": true,
"bin": {
"vue-demi-fix": "bin/vue-demi-fix.js",
"vue-demi-switch": "bin/vue-demi-switch.js"
},
"engines": {
"node": ">=12"
},
"peerDependencies": {
"@vue/composition-api": "^1.0.0-rc.1",
"vue": "^3.0.0-0 || ^2.6.0"
},
"peerDependenciesMeta": {
"@vue/composition-api": {
"optional": true
}
}
},
"node_modules/pinkie": {
"version": "2.0.4",
"resolved": "https://registry.npmmirror.com/pinkie/-/pinkie-2.0.4.tgz",
"integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/pinkie-promise": {
"version": "2.0.1",
"resolved": "https://registry.npmmirror.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
"integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==",
"dependencies": {
"pinkie": "^2.0.0"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/postcss": {
"version": "8.4.21",
"resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.21.tgz",
"integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==",
"dependencies": {
"nanoid": "^3.3.4",
"picocolors": "^1.0.0",
"source-map-js": "^1.0.2"
},
"engines": {
"node": "^10 || ^12 || >=14"
}
},
"node_modules/proxy-from-env": {
"version": "1.1.0",
"resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
},
"node_modules/readdirp": {
"version": "3.6.0",
"resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz",
"integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
"dev": true,
"dependencies": {
"picomatch": "^2.2.1"
},
"engines": {
"node": ">=8.10.0"
}
},
"node_modules/regenerator-runtime": {
"version": "0.13.11",
"resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
"integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
},
"node_modules/resolve": {
"version": "1.22.1",
"resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.1.tgz",
"integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
"dev": true,
"dependencies": {
"is-core-module": "^2.9.0",
"path-parse": "^1.0.7",
"supports-preserve-symlinks-flag": "^1.0.0"
},
"bin": {
"resolve": "bin/resolve"
}
},
"node_modules/restore-cursor": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-2.0.0.tgz",
"integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==",
"dependencies": {
"onetime": "^2.0.0",
"signal-exit": "^3.0.2"
},
"engines": {
"node": ">=4"
}
},
"node_modules/rollup": {
"version": "3.18.0",
"resolved": "https://registry.npmmirror.com/rollup/-/rollup-3.18.0.tgz",
"integrity": "sha512-J8C6VfEBjkvYPESMQYxKHxNOh4A5a3FlP+0BETGo34HEcE4eTlgCrO2+eWzlu2a/sHs2QUkZco+wscH7jhhgWg==",
"dev": true,
"bin": {
"rollup": "dist/bin/rollup"
},
"engines": {
"node": ">=14.18.0",
"npm": ">=8.0.0"
},
"optionalDependencies": {
"fsevents": "~2.3.2"
}
},
"node_modules/run-async": {
"version": "2.4.1",
"resolved": "https://registry.npmmirror.com/run-async/-/run-async-2.4.1.tgz",
"integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
"engines": {
"node": ">=0.12.0"
}
},
"node_modules/rx": {
"version": "4.1.0",
"resolved": "https://registry.npmmirror.com/rx/-/rx-4.1.0.tgz",
"integrity": "sha512-CiaiuN6gapkdl+cZUr67W6I8jquN4lkak3vtIsIWCl4XIPP8ffsoyN6/+PuGXnQy8Cu8W2y9Xxh31Rq4M6wUug=="
},
"node_modules/safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"node_modules/sass": {
"version": "1.58.3",
"resolved": "https://registry.npmmirror.com/sass/-/sass-1.58.3.tgz",
"integrity": "sha512-Q7RaEtYf6BflYrQ+buPudKR26/lH+10EmO9bBqbmPh/KeLqv8bjpTNqxe71ocONqXq+jYiCbpPUmQMS+JJPk4A==",
"dev": true,
"dependencies": {
"chokidar": ">=3.0.0 <4.0.0",
"immutable": "^4.0.0",
"source-map-js": ">=0.6.2 <2.0.0"
},
"bin": {
"sass": "sass.js"
},
"engines": {
"node": ">=12.0.0"
}
},
"node_modules/signal-exit": {
"version": "3.0.7",
"resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz",
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
},
"node_modules/source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/source-map-js": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz",
"integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/sourcemap-codec": {
"version": "1.4.8",
"resolved": "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
"integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
"deprecated": "Please use @jridgewell/sourcemap-codec instead"
},
"node_modules/string-width": {
"version": "2.1.1",
"resolved": "https://registry.npmmirror.com/string-width/-/string-width-2.1.1.tgz",
"integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
"dependencies": {
"is-fullwidth-code-point": "^2.0.0",
"strip-ansi": "^4.0.0"
},
"engines": {
"node": ">=4"
}
},
"node_modules/string-width/node_modules/ansi-regex": {
"version": "3.0.1",
"resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-3.0.1.tgz",
"integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==",
"engines": {
"node": ">=4"
}
},
"node_modules/string-width/node_modules/strip-ansi": {
"version": "4.0.0",
"resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-4.0.0.tgz",
"integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==",
"dependencies": {
"ansi-regex": "^3.0.0"
},
"engines": {
"node": ">=4"
}
},
"node_modules/strip-ansi": {
"version": "3.0.1",
"resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
"dependencies": {
"ansi-regex": "^2.0.0"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/supports-color": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-2.0.0.tgz",
"integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
"engines": {
"node": ">=0.8.0"
}
},
"node_modules/supports-preserve-symlinks-flag": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
"integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
"dev": true,
"engines": {
"node": ">= 0.4"
}
},
"node_modules/through": {
"version": "2.3.8",
"resolved": "https://registry.npmmirror.com/through/-/through-2.3.8.tgz",
"integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg=="
},
"node_modules/tmp": {
"version": "0.0.33",
"resolved": "https://registry.npmmirror.com/tmp/-/tmp-0.0.33.tgz",
"integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
"dependencies": {
"os-tmpdir": "~1.0.2"
},
"engines": {
"node": ">=0.6.0"
}
},
"node_modules/to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz",
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
"dev": true,
"dependencies": {
"is-number": "^7.0.0"
},
"engines": {
"node": ">=8.0"
}
},
"node_modules/tslib": {
"version": "2.3.0",
"resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz",
"integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
},
"node_modules/typescript": {
"version": "4.9.5",
"resolved": "https://registry.npmmirror.com/typescript/-/typescript-4.9.5.tgz",
"integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
},
"engines": {
"node": ">=4.2.0"
}
},
"node_modules/vite": {
"version": "4.1.4",
"resolved": "https://registry.npmmirror.com/vite/-/vite-4.1.4.tgz",
"integrity": "sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==",
"dev": true,
"dependencies": {
"esbuild": "^0.16.14",
"postcss": "^8.4.21",
"resolve": "^1.22.1",
"rollup": "^3.10.0"
},
"bin": {
"vite": "bin/vite.js"
},
"engines": {
"node": "^14.18.0 || >=16.0.0"
},
"optionalDependencies": {
"fsevents": "~2.3.2"
},
"peerDependencies": {
"@types/node": ">= 14",
"less": "*",
"sass": "*",
"stylus": "*",
"sugarss": "*",
"terser": "^5.4.0"
},
"peerDependenciesMeta": {
"@types/node": {
"optional": true
},
"less": {
"optional": true
},
"sass": {
"optional": true
},
"stylus": {
"optional": true
},
"sugarss": {
"optional": true
},
"terser": {
"optional": true
}
}
},
"node_modules/vue": {
"version": "3.2.47",
"resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.47.tgz",
"integrity": "sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==",
"dependencies": {
"@vue/compiler-dom": "3.2.47",
"@vue/compiler-sfc": "3.2.47",
"@vue/runtime-dom": "3.2.47",
"@vue/server-renderer": "3.2.47",
"@vue/shared": "3.2.47"
}
},
"node_modules/vue-router": {
"version": "4.1.6",
"resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.1.6.tgz",
"integrity": "sha512-DYWYwsG6xNPmLq/FmZn8Ip+qrhFEzA14EI12MsMgVxvHFDYvlr4NXpVF5hrRH1wVcDP8fGi5F4rxuJSl8/r+EQ==",
"dependencies": {
"@vue/devtools-api": "^6.4.5"
},
"peerDependencies": {
"vue": "^3.2.0"
}
},
"node_modules/vue-template-compiler": {
"version": "2.7.14",
"resolved": "https://registry.npmmirror.com/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz",
"integrity": "sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==",
"dev": true,
"dependencies": {
"de-indent": "^1.0.2",
"he": "^1.2.0"
}
},
"node_modules/vue-tsc": {
"version": "1.2.0",
"resolved": "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-1.2.0.tgz",
"integrity": "sha512-rIlzqdrhyPYyLG9zxsVRa+JEseeS9s8F2BbVVVWRRsTZvJO2BbhLEb2HW3MY+DFma0378tnIqs+vfTzbcQtRFw==",
"dev": true,
"dependencies": {
"@volar/vue-language-core": "1.2.0",
"@volar/vue-typescript": "1.2.0"
},
"bin": {
"vue-tsc": "bin/vue-tsc.js"
},
"peerDependencies": {
"typescript": "*"
}
},
"node_modules/zrender": {
"version": "5.4.1",
"resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.4.1.tgz",
"integrity": "sha512-M4Z05BHWtajY2241EmMPHglDQAJ1UyHQcYsxDNzD9XLSkPDqMq4bB28v9Pb4mvHnVQ0GxyTklZ/69xCFP6RXBA==",
"dependencies": {
"tslib": "2.3.0"
}
},
"node_modules/zrenderjs": {
"version": "3.0.3",
"resolved": "https://registry.npmmirror.com/zrenderjs/-/zrenderjs-3.0.3.tgz",
"integrity": "sha512-+WsvUsqButmQXmdFENN4AJFbiNMf+9j0xKupRQoAxuxiFHU4y142X/i3O/Q6GGJ4YwXh8YbBNsWxkbCAxB3C/A=="
}
},
"dependencies": {
"@babel/parser": {
"version": "7.21.2",
"resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.21.2.tgz",
"integrity": "sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ=="
},
"@babel/runtime": {
"version": "7.21.0",
"resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.21.0.tgz",
"integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==",
"requires": {
"regenerator-runtime": "^0.13.11"
}
},
"@ctrl/tinycolor": {
"version": "3.6.0",
"resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.6.0.tgz",
"integrity": "sha512-/Z3l6pXthq0JvMYdUFyX9j0MaCltlIn6mfh9jLyQwg5aPKxkyNa0PTHtU1AlFXLNk55ZuAeJRcpvq+tmLfKmaQ=="
},
"@element-plus/icons-vue": {
"version": "2.1.0",
"resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.1.0.tgz",
"integrity": "sha512-PSBn3elNoanENc1vnCfh+3WA9fimRC7n+fWkf3rE5jvv+aBohNHABC/KAR5KWPecxWxDTVT1ERpRbOMRcOV/vA=="
},
"@esbuild/android-arm": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.16.17.tgz",
"integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==",
"dev": true,
"optional": true
},
"@esbuild/android-arm64": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz",
"integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==",
"dev": true,
"optional": true
},
"@esbuild/android-x64": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.16.17.tgz",
"integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==",
"dev": true,
"optional": true
},
"@esbuild/darwin-arm64": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz",
"integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==",
"dev": true,
"optional": true
},
"@esbuild/darwin-x64": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz",
"integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==",
"dev": true,
"optional": true
},
"@esbuild/freebsd-arm64": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz",
"integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==",
"dev": true,
"optional": true
},
"@esbuild/freebsd-x64": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz",
"integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==",
"dev": true,
"optional": true
},
"@esbuild/linux-arm": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz",
"integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==",
"dev": true,
"optional": true
},
"@esbuild/linux-arm64": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz",
"integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==",
"dev": true,
"optional": true
},
"@esbuild/linux-ia32": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz",
"integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==",
"dev": true,
"optional": true
},
"@esbuild/linux-loong64": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz",
"integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==",
"dev": true,
"optional": true
},
"@esbuild/linux-mips64el": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz",
"integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==",
"dev": true,
"optional": true
},
"@esbuild/linux-ppc64": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz",
"integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==",
"dev": true,
"optional": true
},
"@esbuild/linux-riscv64": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz",
"integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==",
"dev": true,
"optional": true
},
"@esbuild/linux-s390x": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz",
"integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==",
"dev": true,
"optional": true
},
"@esbuild/linux-x64": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz",
"integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==",
"dev": true,
"optional": true
},
"@esbuild/netbsd-x64": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz",
"integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==",
"dev": true,
"optional": true
},
"@esbuild/openbsd-x64": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz",
"integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==",
"dev": true,
"optional": true
},
"@esbuild/sunos-x64": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz",
"integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==",
"dev": true,
"optional": true
},
"@esbuild/win32-arm64": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz",
"integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==",
"dev": true,
"optional": true
},
"@esbuild/win32-ia32": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz",
"integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==",
"dev": true,
"optional": true
},
"@esbuild/win32-x64": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz",
"integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==",
"dev": true,
"optional": true
},
"@floating-ui/core": {
"version": "1.2.2",
"resolved": "https://registry.npmmirror.com/@floating-ui/core/-/core-1.2.2.tgz",
"integrity": "sha512-FaO9KVLFnxknZaGWGmNtjD2CVFuc0u4yeGEofoyXO2wgRA7fLtkngT6UB0vtWQWuhH3iMTZZ/Y89CMeyGfn8pA=="
},
"@floating-ui/dom": {
"version": "1.2.3",
"resolved": "https://registry.npmmirror.com/@floating-ui/dom/-/dom-1.2.3.tgz",
"integrity": "sha512-lK9cZUrHSJLMVAdCvDqs6Ug8gr0wmqksYiaoj/bxj2gweRQkSuhg2/V6Jswz2KiQ0RAULbqw1oQDJIMpQ5GfGA==",
"requires": {
"@floating-ui/core": "^1.2.2"
}
},
"@jiaminghi/bezier-curve": {
"version": "0.0.9",
"resolved": "https://registry.npmmirror.com/@jiaminghi/bezier-curve/-/bezier-curve-0.0.9.tgz",
"integrity": "sha512-u9xJPOEl6Dri2E9FfmJoGxYQY7vYJkURNX04Vj64tdi535tPrpkuf9Sm0lNr3QTKdHQh0DdNRsaa62FLQNQEEw==",
"requires": {
"@babel/runtime": "^7.5.5"
}
},
"@jiaminghi/c-render": {
"version": "0.4.3",
"resolved": "https://registry.npmmirror.com/@jiaminghi/c-render/-/c-render-0.4.3.tgz",
"integrity": "sha512-FJfzj5hGj7MLqqqI2D7vEzHKbQ1Ynnn7PJKgzsjXaZpJzTqs2Yw5OSeZnm6l7Qj7jyPAP53lFvEQNH4o4j6s+Q==",
"requires": {
"@babel/runtime": "^7.5.5",
"@jiaminghi/bezier-curve": "*",
"@jiaminghi/color": "*",
"@jiaminghi/transition": "*"
}
},
"@jiaminghi/charts": {
"version": "0.2.18",
"resolved": "https://registry.npmmirror.com/@jiaminghi/charts/-/charts-0.2.18.tgz",
"integrity": "sha512-K+HXaOOeWG9OOY1VG6M4mBreeeIAPhb9X+khG651AbnwEwL6G2UtcAQ8GWCq6GzhczcLwwhIhuaHqRygwHC0sA==",
"requires": {
"@babel/runtime": "^7.5.5",
"@jiaminghi/c-render": "^0.4.3"
}
},
"@jiaminghi/color": {
"version": "1.1.3",
"resolved": "https://registry.npmmirror.com/@jiaminghi/color/-/color-1.1.3.tgz",
"integrity": "sha512-ZY3hdorgODk4OSTbxyXBPxAxHPIVf9rPlKJyK1C1db46a50J0reFKpAvfZG8zMG3lvM60IR7Qawgcu4ZDO3+Hg=="
},
"@jiaminghi/transition": {
"version": "1.1.11",
"resolved": "https://registry.npmmirror.com/@jiaminghi/transition/-/transition-1.1.11.tgz",
"integrity": "sha512-owBggipoHMikDHHDW5Gc7RZYlVuvxHADiU4bxfjBVkHDAmmck+fCkm46n2JzC3j33hWvP9nSCAeh37t6stgWeg==",
"requires": {
"@babel/runtime": "^7.5.5"
}
},
"@kjgl77/datav-vue3": {
"version": "1.4.2",
"resolved": "https://registry.npmmirror.com/@kjgl77/datav-vue3/-/datav-vue3-1.4.2.tgz",
"integrity": "sha512-2bwQtvPpRNSmWAUS/e81SLZdOabCdiF3wGkvLjkOa/n4grygNk0f8l7AwpaP0bUlc4ougPgFRIAy/wzkyNocoA==",
"requires": {
"@jiaminghi/c-render": "^0.4.3",
"@jiaminghi/charts": "^0.2.18",
"@jiaminghi/color": "^1.1.3",
"@vueuse/core": "^9.1.0",
"lodash-es": "^4.17.21"
}
},
"@popperjs/core": {
"version": "npm:@sxzz/popperjs-es@2.11.7",
"resolved": "https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz",
"integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ=="
},
"@types/lodash": {
"version": "4.14.191",
"resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.14.191.tgz",
"integrity": "sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ=="
},
"@types/lodash-es": {
"version": "4.17.6",
"resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.6.tgz",
"integrity": "sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==",
"requires": {
"@types/lodash": "*"
}
},
"@types/node": {
"version": "18.15.3",
"resolved": "https://registry.npmmirror.com/@types/node/-/node-18.15.3.tgz",
"integrity": "sha512-p6ua9zBxz5otCmbpb5D3U4B5Nanw6Pk3PPyX05xnxbB/fRv71N7CPmORg7uAD5P70T0xmx1pzAx/FUfa5X+3cw==",
"dev": true
},
"@types/web-bluetooth": {
"version": "0.0.16",
"resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz",
"integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ=="
},
"@vitejs/plugin-vue": {
"version": "4.0.0",
"resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-4.0.0.tgz",
"integrity": "sha512-e0X4jErIxAB5oLtDqbHvHpJe/uWNkdpYV83AOG2xo2tEVSzCzewgJMtREZM30wXnM5ls90hxiOtAuVU6H5JgbA==",
"dev": true
},
"@volar/language-core": {
"version": "1.3.0-alpha.0",
"resolved": "https://registry.npmmirror.com/@volar/language-core/-/language-core-1.3.0-alpha.0.tgz",
"integrity": "sha512-W3uMzecHPcbwddPu4SJpUcPakRBK/y/BP+U0U6NiPpUX1tONLC4yCawt+QBJqtgJ+sfD6ztf5PyvPL3hQRqfOA==",
"dev": true,
"requires": {
"@volar/source-map": "1.3.0-alpha.0"
}
},
"@volar/source-map": {
"version": "1.3.0-alpha.0",
"resolved": "https://registry.npmmirror.com/@volar/source-map/-/source-map-1.3.0-alpha.0.tgz",
"integrity": "sha512-jSdizxWFvDTvkPYZnO6ew3sBZUnS0abKCbuopkc0JrIlFbznWC/fPH3iPFIMS8/IIkRxq1Jh9VVG60SmtsdaMQ==",
"dev": true,
"requires": {
"muggle-string": "^0.2.2"
}
},
"@volar/typescript": {
"version": "1.3.0-alpha.0",
"resolved": "https://registry.npmmirror.com/@volar/typescript/-/typescript-1.3.0-alpha.0.tgz",
"integrity": "sha512-5UItyW2cdH2mBLu4RrECRNJRgtvvzKrSCn2y3v/D61QwIDkGx4aeil6x8RFuUL5TFtV6QvVHXnsOHxNgd+sCow==",
"dev": true,
"requires": {
"@volar/language-core": "1.3.0-alpha.0"
}
},
"@volar/vue-language-core": {
"version": "1.2.0",
"resolved": "https://registry.npmmirror.com/@volar/vue-language-core/-/vue-language-core-1.2.0.tgz",
"integrity": "sha512-w7yEiaITh2WzKe6u8ZdeLKCUz43wdmY/OqAmsB/PGDvvhTcVhCJ6f0W/RprZL1IhqH8wALoWiwEh/Wer7ZviMQ==",
"dev": true,
"requires": {
"@volar/language-core": "1.3.0-alpha.0",
"@volar/source-map": "1.3.0-alpha.0",
"@vue/compiler-dom": "^3.2.47",
"@vue/compiler-sfc": "^3.2.47",
"@vue/reactivity": "^3.2.47",
"@vue/shared": "^3.2.47",
"minimatch": "^6.1.6",
"muggle-string": "^0.2.2",
"vue-template-compiler": "^2.7.14"
}
},
"@volar/vue-typescript": {
"version": "1.2.0",
"resolved": "https://registry.npmmirror.com/@volar/vue-typescript/-/vue-typescript-1.2.0.tgz",
"integrity": "sha512-zjmRi9y3J1EkG+pfuHp8IbHmibihrKK485cfzsHjiuvJMGrpkWvlO5WVEk8oslMxxeGC5XwBFE9AOlvh378EPA==",
"dev": true,
"requires": {
"@volar/typescript": "1.3.0-alpha.0",
"@volar/vue-language-core": "1.2.0"
}
},
"@vue/compiler-core": {
"version": "3.2.47",
"resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.47.tgz",
"integrity": "sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==",
"requires": {
"@babel/parser": "^7.16.4",
"@vue/shared": "3.2.47",
"estree-walker": "^2.0.2",
"source-map": "^0.6.1"
}
},
"@vue/compiler-dom": {
"version": "3.2.47",
"resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.47.tgz",
"integrity": "sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==",
"requires": {
"@vue/compiler-core": "3.2.47",
"@vue/shared": "3.2.47"
}
},
"@vue/compiler-sfc": {
"version": "3.2.47",
"resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.2.47.tgz",
"integrity": "sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==",
"requires": {
"@babel/parser": "^7.16.4",
"@vue/compiler-core": "3.2.47",
"@vue/compiler-dom": "3.2.47",
"@vue/compiler-ssr": "3.2.47",
"@vue/reactivity-transform": "3.2.47",
"@vue/shared": "3.2.47",
"estree-walker": "^2.0.2",
"magic-string": "^0.25.7",
"postcss": "^8.1.10",
"source-map": "^0.6.1"
}
},
"@vue/compiler-ssr": {
"version": "3.2.47",
"resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.47.tgz",
"integrity": "sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==",
"requires": {
"@vue/compiler-dom": "3.2.47",
"@vue/shared": "3.2.47"
}
},
"@vue/devtools-api": {
"version": "6.5.0",
"resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.5.0.tgz",
"integrity": "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q=="
},
"@vue/reactivity": {
"version": "3.2.47",
"resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.47.tgz",
"integrity": "sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==",
"requires": {
"@vue/shared": "3.2.47"
}
},
"@vue/reactivity-transform": {
"version": "3.2.47",
"resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.2.47.tgz",
"integrity": "sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==",
"requires": {
"@babel/parser": "^7.16.4",
"@vue/compiler-core": "3.2.47",
"@vue/shared": "3.2.47",
"estree-walker": "^2.0.2",
"magic-string": "^0.25.7"
}
},
"@vue/runtime-core": {
"version": "3.2.47",
"resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.47.tgz",
"integrity": "sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA==",
"requires": {
"@vue/reactivity": "3.2.47",
"@vue/shared": "3.2.47"
}
},
"@vue/runtime-dom": {
"version": "3.2.47",
"resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.47.tgz",
"integrity": "sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA==",
"requires": {
"@vue/runtime-core": "3.2.47",
"@vue/shared": "3.2.47",
"csstype": "^2.6.8"
}
},
"@vue/server-renderer": {
"version": "3.2.47",
"resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.47.tgz",
"integrity": "sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==",
"requires": {
"@vue/compiler-ssr": "3.2.47",
"@vue/shared": "3.2.47"
}
},
"@vue/shared": {
"version": "3.2.47",
"resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.47.tgz",
"integrity": "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ=="
},
"@vueuse/core": {
"version": "9.13.0",
"resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-9.13.0.tgz",
"integrity": "sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==",
"requires": {
"@types/web-bluetooth": "^0.0.16",
"@vueuse/metadata": "9.13.0",
"@vueuse/shared": "9.13.0",
"vue-demi": "*"
},
"dependencies": {
"vue-demi": {
"version": "0.13.11",
"resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.11.tgz",
"integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A=="
}
}
},
"@vueuse/metadata": {
"version": "9.13.0",
"resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-9.13.0.tgz",
"integrity": "sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ=="
},
"@vueuse/shared": {
"version": "9.13.0",
"resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-9.13.0.tgz",
"integrity": "sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==",
"requires": {
"vue-demi": "*"
},
"dependencies": {
"vue-demi": {
"version": "0.13.11",
"resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.11.tgz",
"integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A=="
}
}
},
"animate.css": {
"version": "4.1.1",
"resolved": "https://registry.npmmirror.com/animate.css/-/animate.css-4.1.1.tgz",
"integrity": "sha512-+mRmCTv6SbCmtYJCN4faJMNFVNN5EuCTTprDTAo7YzIGji2KADmakjVA3+8mVDkZ2Bf09vayB35lSQIex2+QaQ=="
},
"ansi-escapes": {
"version": "1.4.0",
"resolved": "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz",
"integrity": "sha512-wiXutNjDUlNEDWHcYH3jtZUhd3c4/VojassD8zHdHCY13xbZy2XbW+NKQwA0tWGBVzDA9qEzYwfoSsWmviidhw=="
},
"ansi-regex": {
"version": "2.1.1",
"resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz",
"integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA=="
},
"ansi-styles": {
"version": "2.2.1",
"resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-2.2.1.tgz",
"integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA=="
},
"anymatch": {
"version": "3.1.3",
"resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz",
"integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
"dev": true,
"requires": {
"normalize-path": "^3.0.0",
"picomatch": "^2.0.4"
}
},
"async-validator": {
"version": "4.2.5",
"resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz",
"integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg=="
},
"asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
},
"axios": {
"version": "1.3.4",
"resolved": "https://registry.npmmirror.com/axios/-/axios-1.3.4.tgz",
"integrity": "sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==",
"requires": {
"follow-redirects": "^1.15.0",
"form-data": "^4.0.0",
"proxy-from-env": "^1.1.0"
}
},
"babel-polyfill": {
"version": "6.23.0",
"resolved": "https://registry.npmmirror.com/babel-polyfill/-/babel-polyfill-6.23.0.tgz",
"integrity": "sha512-0l7mVU+LrQ2X/ZTUq63T5i3VyR2aTgcRTFmBcD6djQ/Fek6q1A9t5u0F4jZVYHzp78jwWAzGfLpAY1b4/I3lfg==",
"requires": {
"babel-runtime": "^6.22.0",
"core-js": "^2.4.0",
"regenerator-runtime": "^0.10.0"
},
"dependencies": {
"regenerator-runtime": {
"version": "0.10.5",
"resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz",
"integrity": "sha512-02YopEIhAgiBHWeoTiA8aitHDt8z6w+rQqNuIftlM+ZtvSl/brTouaU7DW6GO/cHtvxJvS4Hwv2ibKdxIRi24w=="
}
}
},
"babel-runtime": {
"version": "6.26.0",
"resolved": "https://registry.npmmirror.com/babel-runtime/-/babel-runtime-6.26.0.tgz",
"integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==",
"requires": {
"core-js": "^2.4.0",
"regenerator-runtime": "^0.11.0"
},
"dependencies": {
"regenerator-runtime": {
"version": "0.11.1",
"resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
"integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
}
}
},
"balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
"dev": true
},
"binary-extensions": {
"version": "2.2.0",
"resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz",
"integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
"dev": true
},
"brace-expansion": {
"version": "2.0.1",
"resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz",
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
"dev": true,
"requires": {
"balanced-match": "^1.0.0"
}
},
"braces": {
"version": "3.0.2",
"resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz",
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
"dev": true,
"requires": {
"fill-range": "^7.0.1"
}
},
"chalk": {
"version": "1.1.3",
"resolved": "https://registry.npmmirror.com/chalk/-/chalk-1.1.3.tgz",
"integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
"requires": {
"ansi-styles": "^2.2.1",
"escape-string-regexp": "^1.0.2",
"has-ansi": "^2.0.0",
"strip-ansi": "^3.0.0",
"supports-color": "^2.0.0"
}
},
"chardet": {
"version": "0.4.2",
"resolved": "https://registry.npmmirror.com/chardet/-/chardet-0.4.2.tgz",
"integrity": "sha512-j/Toj7f1z98Hh2cYo2BVr85EpIRWqUi7rtRSGxh/cqUjqrnJe9l9UE7IUGd2vQ2p+kSHLkSzObQPZPLUC6TQwg=="
},
"chokidar": {
"version": "3.5.3",
"resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz",
"integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
"dev": true,
"requires": {
"anymatch": "~3.1.2",
"braces": "~3.0.2",
"fsevents": "~2.3.2",
"glob-parent": "~5.1.2",
"is-binary-path": "~2.1.0",
"is-glob": "~4.0.1",
"normalize-path": "~3.0.0",
"readdirp": "~3.6.0"
}
},
"cli-cursor": {
"version": "2.1.0",
"resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-2.1.0.tgz",
"integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==",
"requires": {
"restore-cursor": "^2.0.0"
}
},
"cli-width": {
"version": "2.2.1",
"resolved": "https://registry.npmmirror.com/cli-width/-/cli-width-2.2.1.tgz",
"integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw=="
},
"combined-stream": {
"version": "1.0.8",
"resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz",
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
"requires": {
"delayed-stream": "~1.0.0"
}
},
"core-js": {
"version": "2.6.12",
"resolved": "https://registry.npmmirror.com/core-js/-/core-js-2.6.12.tgz",
"integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ=="
},
"csstype": {
"version": "2.6.21",
"resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz",
"integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w=="
},
"dayjs": {
"version": "1.11.7",
"resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.7.tgz",
"integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ=="
},
"de-indent": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz",
"integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==",
"dev": true
},
"delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
},
"echarts": {
"version": "5.4.1",
"resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.4.1.tgz",
"integrity": "sha512-9ltS3M2JB0w2EhcYjCdmtrJ+6haZcW6acBolMGIuf01Hql1yrIV01L1aRj7jsaaIULJslEP9Z3vKlEmnJaWJVQ==",
"requires": {
"tslib": "2.3.0",
"zrender": "5.4.1"
}
},
"echarts-map": {
"version": "3.0.1",
"resolved": "https://registry.npmmirror.com/echarts-map/-/echarts-map-3.0.1.tgz",
"integrity": "sha512-ZsfP4U75v9p2sdSCP4Fqhh8O43EglFwjeV/FbaIfeDn6G1MEvbp3CF0XRNAVhwoTfBK0zILuGcpcwcWq6z8CYw==",
"requires": {
"echarts": "~3.0.1"
},
"dependencies": {
"echarts": {
"version": "3.0.1",
"resolved": "https://registry.npmmirror.com/echarts/-/echarts-3.0.1.tgz",
"integrity": "sha512-8Hvaa+hOUAYaFAgQjRISWN/2LKZ4g66nE33dHNjG8wT3S/SU7m2ENJ2+96mEkLQN5m9VvQKhmjCMqiky3J/png==",
"requires": {
"zrenderjs": "~3.0.2"
}
}
}
},
"element-plus": {
"version": "2.2.36",
"resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.2.36.tgz",
"integrity": "sha512-9DzLqOVuw8P5Ck8Uqd9XdnDYVg2Z3iosZ1gtk2xDCWNqeoACpldP5gxa/Hbfgp4QeA3xC+f3g+UeoKKu79l28g==",
"requires": {
"@ctrl/tinycolor": "^3.4.1",
"@element-plus/icons-vue": "^2.0.6",
"@floating-ui/dom": "^1.0.1",
"@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7",
"@types/lodash": "^4.14.182",
"@types/lodash-es": "^4.17.6",
"@vueuse/core": "^9.1.0",
"async-validator": "^4.2.5",
"dayjs": "^1.11.3",
"escape-html": "^1.0.3",
"lodash": "^4.17.21",
"lodash-es": "^4.17.21",
"lodash-unified": "^1.0.2",
"memoize-one": "^6.0.0",
"normalize-wheel-es": "^1.2.0"
}
},
"encoding": {
"version": "0.1.13",
"resolved": "https://registry.npmmirror.com/encoding/-/encoding-0.1.13.tgz",
"integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
"requires": {
"iconv-lite": "^0.6.2"
},
"dependencies": {
"iconv-lite": {
"version": "0.6.3",
"resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz",
"integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
"requires": {
"safer-buffer": ">= 2.1.2 < 3.0.0"
}
}
}
},
"esbuild": {
"version": "0.16.17",
"resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.16.17.tgz",
"integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==",
"dev": true,
"requires": {
"@esbuild/android-arm": "0.16.17",
"@esbuild/android-arm64": "0.16.17",
"@esbuild/android-x64": "0.16.17",
"@esbuild/darwin-arm64": "0.16.17",
"@esbuild/darwin-x64": "0.16.17",
"@esbuild/freebsd-arm64": "0.16.17",
"@esbuild/freebsd-x64": "0.16.17",
"@esbuild/linux-arm": "0.16.17",
"@esbuild/linux-arm64": "0.16.17",
"@esbuild/linux-ia32": "0.16.17",
"@esbuild/linux-loong64": "0.16.17",
"@esbuild/linux-mips64el": "0.16.17",
"@esbuild/linux-ppc64": "0.16.17",
"@esbuild/linux-riscv64": "0.16.17",
"@esbuild/linux-s390x": "0.16.17",
"@esbuild/linux-x64": "0.16.17",
"@esbuild/netbsd-x64": "0.16.17",
"@esbuild/openbsd-x64": "0.16.17",
"@esbuild/sunos-x64": "0.16.17",
"@esbuild/win32-arm64": "0.16.17",
"@esbuild/win32-ia32": "0.16.17",
"@esbuild/win32-x64": "0.16.17"
}
},
"escape-html": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz",
"integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
},
"escape-string-regexp": {
"version": "1.0.5",
"resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
"integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg=="
},
"estree-walker": {
"version": "2.0.2",
"resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
},
"external-editor": {
"version": "2.2.0",
"resolved": "https://registry.npmmirror.com/external-editor/-/external-editor-2.2.0.tgz",
"integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==",
"requires": {
"chardet": "^0.4.0",
"iconv-lite": "^0.4.17",
"tmp": "^0.0.33"
}
},
"figures": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/figures/-/figures-2.0.0.tgz",
"integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==",
"requires": {
"escape-string-regexp": "^1.0.5"
}
},
"fill-range": {
"version": "7.0.1",
"resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz",
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
"dev": true,
"requires": {
"to-regex-range": "^5.0.1"
}
},
"follow-redirects": {
"version": "1.15.2",
"resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.2.tgz",
"integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA=="
},
"form-data": {
"version": "4.0.0",
"resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz",
"integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
"requires": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
"mime-types": "^2.1.12"
}
},
"fsevents": {
"version": "2.3.2",
"resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz",
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
"dev": true,
"optional": true
},
"function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz",
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
"dev": true
},
"glob-parent": {
"version": "5.1.2",
"resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz",
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
"dev": true,
"requires": {
"is-glob": "^4.0.1"
}
},
"has": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/has/-/has-1.0.3.tgz",
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
"dev": true,
"requires": {
"function-bind": "^1.1.1"
}
},
"has-ansi": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/has-ansi/-/has-ansi-2.0.0.tgz",
"integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==",
"requires": {
"ansi-regex": "^2.0.0"
}
},
"he": {
"version": "1.2.0",
"resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz",
"integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
"dev": true
},
"iconv-lite": {
"version": "0.4.24",
"resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz",
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
"requires": {
"safer-buffer": ">= 2.1.2 < 3"
}
},
"immutable": {
"version": "4.2.4",
"resolved": "https://registry.npmmirror.com/immutable/-/immutable-4.2.4.tgz",
"integrity": "sha512-WDxL3Hheb1JkRN3sQkyujNlL/xRjAo3rJtaU5xeufUauG66JdMr32bLj4gF+vWl84DIA3Zxw7tiAjneYzRRw+w==",
"dev": true
},
"inquirer": {
"version": "3.0.6",
"resolved": "https://registry.npmmirror.com/inquirer/-/inquirer-3.0.6.tgz",
"integrity": "sha512-thluxTGBXUGb8DuQcvH9/CM/CrcGyB5xUpWc9x6Slqcq1z/hRr2a6KxUpX4ddRfmbe0hg3E4jTvo5833aWz3BA==",
"requires": {
"ansi-escapes": "^1.1.0",
"chalk": "^1.0.0",
"cli-cursor": "^2.1.0",
"cli-width": "^2.0.0",
"external-editor": "^2.0.1",
"figures": "^2.0.0",
"lodash": "^4.3.0",
"mute-stream": "0.0.7",
"run-async": "^2.2.0",
"rx": "^4.1.0",
"string-width": "^2.0.0",
"strip-ansi": "^3.0.0",
"through": "^2.3.6"
}
},
"is-binary-path": {
"version": "2.1.0",
"resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz",
"integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
"dev": true,
"requires": {
"binary-extensions": "^2.0.0"
}
},
"is-core-module": {
"version": "2.11.0",
"resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.11.0.tgz",
"integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
"dev": true,
"requires": {
"has": "^1.0.3"
}
},
"is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz",
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
"dev": true
},
"is-fullwidth-code-point": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
"integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w=="
},
"is-glob": {
"version": "4.0.3",
"resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz",
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
"dev": true,
"requires": {
"is-extglob": "^2.1.1"
}
},
"is-number": {
"version": "7.0.0",
"resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz",
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
"dev": true
},
"is-stream": {
"version": "1.1.0",
"resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-1.1.0.tgz",
"integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ=="
},
"live2d-widget": {
"version": "3.1.4",
"resolved": "https://registry.npmmirror.com/live2d-widget/-/live2d-widget-3.1.4.tgz",
"integrity": "sha512-KseUqwiGZLb1SArr+lDaXl8AjXSFI/x/Z+BbDIyPHwElGAktCvhFYw/SDkrI4LL5bnVuGMLKMg6crMTa23KGDQ==",
"requires": {
"opencollective": "^1.0.3",
"opencollective-postinstall": "^2.0.1"
}
},
"lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
"lodash-es": {
"version": "4.17.21",
"resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz",
"integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
},
"lodash-unified": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.3.tgz",
"integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ=="
},
"magic-string": {
"version": "0.25.9",
"resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz",
"integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
"requires": {
"sourcemap-codec": "^1.4.8"
}
},
"memoize-one": {
"version": "6.0.0",
"resolved": "https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz",
"integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw=="
},
"mime-db": {
"version": "1.52.0",
"resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz",
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
},
"mime-types": {
"version": "2.1.35",
"resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz",
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
"requires": {
"mime-db": "1.52.0"
}
},
"mimic-fn": {
"version": "1.2.0",
"resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-1.2.0.tgz",
"integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ=="
},
"minimatch": {
"version": "6.2.0",
"resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-6.2.0.tgz",
"integrity": "sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==",
"dev": true,
"requires": {
"brace-expansion": "^2.0.1"
}
},
"minimist": {
"version": "1.2.0",
"resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.0.tgz",
"integrity": "sha512-7Wl+Jz+IGWuSdgsQEJ4JunV0si/iMhg42MnQQG6h1R6TNeVenp4U9x5CC5v/gYqz/fENLQITAWXidNtVL0NNbw=="
},
"muggle-string": {
"version": "0.2.2",
"resolved": "https://registry.npmmirror.com/muggle-string/-/muggle-string-0.2.2.tgz",
"integrity": "sha512-YVE1mIJ4VpUMqZObFndk9CJu6DBJR/GB13p3tXuNbwD4XExaI5EOuRl6BHeIDxIqXZVxSfAC+y6U1Z/IxCfKUg==",
"dev": true
},
"mute-stream": {
"version": "0.0.7",
"resolved": "https://registry.npmmirror.com/mute-stream/-/mute-stream-0.0.7.tgz",
"integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ=="
},
"nanoid": {
"version": "3.3.4",
"resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.4.tgz",
"integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw=="
},
"node-fetch": {
"version": "1.6.3",
"resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-1.6.3.tgz",
"integrity": "sha512-BDxbhLHXFFFvilHjh9xihcDyPkXQ+kjblxnl82zAX41xUYSNvuRpFRznmldR9+OKu+p+ULZ7hNoyunlLB5ecUA==",
"requires": {
"encoding": "^0.1.11",
"is-stream": "^1.0.1"
}
},
"normalize-path": {
"version": "3.0.0",
"resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz",
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
"dev": true
},
"normalize-wheel-es": {
"version": "1.2.0",
"resolved": "https://registry.npmmirror.com/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz",
"integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw=="
},
"object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="
},
"onetime": {
"version": "2.0.1",
"resolved": "https://registry.npmmirror.com/onetime/-/onetime-2.0.1.tgz",
"integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==",
"requires": {
"mimic-fn": "^1.0.0"
}
},
"opencollective": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/opencollective/-/opencollective-1.0.3.tgz",
"integrity": "sha512-YBRI0Qa8+Ui0/STV1qYuPrJm889PT3oCPHMVoL+8Y3nwCffj7PSrB2NlGgrhgBKDujxTjxknHWJ/FiqOsYcIDw==",
"requires": {
"babel-polyfill": "6.23.0",
"chalk": "1.1.3",
"inquirer": "3.0.6",
"minimist": "1.2.0",
"node-fetch": "1.6.3",
"opn": "4.0.2"
}
},
"opencollective-postinstall": {
"version": "2.0.3",
"resolved": "https://registry.npmmirror.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz",
"integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q=="
},
"opn": {
"version": "4.0.2",
"resolved": "https://registry.npmmirror.com/opn/-/opn-4.0.2.tgz",
"integrity": "sha512-iPBWbPP4OEOzR1xfhpGLDh+ypKBOygunZhM9jBtA7FS5sKjEiMZw0EFb82hnDOmTZX90ZWLoZKUza4cVt8MexA==",
"requires": {
"object-assign": "^4.0.1",
"pinkie-promise": "^2.0.0"
}
},
"os-tmpdir": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
"integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g=="
},
"path-parse": {
"version": "1.0.7",
"resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz",
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
"dev": true
},
"picocolors": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz",
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
},
"picomatch": {
"version": "2.3.1",
"resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz",
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
"dev": true
},
"pinia": {
"version": "2.0.33",
"resolved": "https://registry.npmmirror.com/pinia/-/pinia-2.0.33.tgz",
"integrity": "sha512-HOj1yVV2itw6rNIrR2f7+MirGNxhORjrULL8GWgRwXsGSvEqIQ+SE0MYt6cwtpegzCda3i+rVTZM+AM7CG+kRg==",
"requires": {
"@vue/devtools-api": "^6.5.0",
"vue-demi": "*"
},
"dependencies": {
"vue-demi": {
"version": "0.13.11",
"resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.11.tgz",
"integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A=="
}
}
},
"pinia-plugin-persist": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/pinia-plugin-persist/-/pinia-plugin-persist-1.0.0.tgz",
"integrity": "sha512-M4hBBd8fz/GgNmUPaaUsC29y1M09lqbXrMAHcusVoU8xlQi1TqgkWnnhvMikZwr7Le/hVyMx8KUcumGGrR6GVw==",
"requires": {
"vue-demi": "^0.12.1"
},
"dependencies": {
"vue-demi": {
"version": "0.12.5",
"resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.12.5.tgz",
"integrity": "sha512-BREuTgTYlUr0zw0EZn3hnhC3I6gPWv+Kwh4MCih6QcAeaTlaIX0DwOVN0wHej7hSvDPecz4jygy/idsgKfW58Q=="
}
}
},
"pinkie": {
"version": "2.0.4",
"resolved": "https://registry.npmmirror.com/pinkie/-/pinkie-2.0.4.tgz",
"integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg=="
},
"pinkie-promise": {
"version": "2.0.1",
"resolved": "https://registry.npmmirror.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
"integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==",
"requires": {
"pinkie": "^2.0.0"
}
},
"postcss": {
"version": "8.4.21",
"resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.21.tgz",
"integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==",
"requires": {
"nanoid": "^3.3.4",
"picocolors": "^1.0.0",
"source-map-js": "^1.0.2"
}
},
"proxy-from-env": {
"version": "1.1.0",
"resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
},
"readdirp": {
"version": "3.6.0",
"resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz",
"integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
"dev": true,
"requires": {
"picomatch": "^2.2.1"
}
},
"regenerator-runtime": {
"version": "0.13.11",
"resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
"integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
},
"resolve": {
"version": "1.22.1",
"resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.1.tgz",
"integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
"dev": true,
"requires": {
"is-core-module": "^2.9.0",
"path-parse": "^1.0.7",
"supports-preserve-symlinks-flag": "^1.0.0"
}
},
"restore-cursor": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-2.0.0.tgz",
"integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==",
"requires": {
"onetime": "^2.0.0",
"signal-exit": "^3.0.2"
}
},
"rollup": {
"version": "3.18.0",
"resolved": "https://registry.npmmirror.com/rollup/-/rollup-3.18.0.tgz",
"integrity": "sha512-J8C6VfEBjkvYPESMQYxKHxNOh4A5a3FlP+0BETGo34HEcE4eTlgCrO2+eWzlu2a/sHs2QUkZco+wscH7jhhgWg==",
"dev": true,
"requires": {
"fsevents": "~2.3.2"
}
},
"run-async": {
"version": "2.4.1",
"resolved": "https://registry.npmmirror.com/run-async/-/run-async-2.4.1.tgz",
"integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ=="
},
"rx": {
"version": "4.1.0",
"resolved": "https://registry.npmmirror.com/rx/-/rx-4.1.0.tgz",
"integrity": "sha512-CiaiuN6gapkdl+cZUr67W6I8jquN4lkak3vtIsIWCl4XIPP8ffsoyN6/+PuGXnQy8Cu8W2y9Xxh31Rq4M6wUug=="
},
"safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"sass": {
"version": "1.58.3",
"resolved": "https://registry.npmmirror.com/sass/-/sass-1.58.3.tgz",
"integrity": "sha512-Q7RaEtYf6BflYrQ+buPudKR26/lH+10EmO9bBqbmPh/KeLqv8bjpTNqxe71ocONqXq+jYiCbpPUmQMS+JJPk4A==",
"dev": true,
"requires": {
"chokidar": ">=3.0.0 <4.0.0",
"immutable": "^4.0.0",
"source-map-js": ">=0.6.2 <2.0.0"
}
},
"signal-exit": {
"version": "3.0.7",
"resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz",
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
},
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
},
"source-map-js": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz",
"integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw=="
},
"sourcemap-codec": {
"version": "1.4.8",
"resolved": "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
"integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA=="
},
"string-width": {
"version": "2.1.1",
"resolved": "https://registry.npmmirror.com/string-width/-/string-width-2.1.1.tgz",
"integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
"requires": {
"is-fullwidth-code-point": "^2.0.0",
"strip-ansi": "^4.0.0"
},
"dependencies": {
"ansi-regex": {
"version": "3.0.1",
"resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-3.0.1.tgz",
"integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw=="
},
"strip-ansi": {
"version": "4.0.0",
"resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-4.0.0.tgz",
"integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==",
"requires": {
"ansi-regex": "^3.0.0"
}
}
}
},
"strip-ansi": {
"version": "3.0.1",
"resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
"requires": {
"ansi-regex": "^2.0.0"
}
},
"supports-color": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-2.0.0.tgz",
"integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g=="
},
"supports-preserve-symlinks-flag": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
"integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
"dev": true
},
"through": {
"version": "2.3.8",
"resolved": "https://registry.npmmirror.com/through/-/through-2.3.8.tgz",
"integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg=="
},
"tmp": {
"version": "0.0.33",
"resolved": "https://registry.npmmirror.com/tmp/-/tmp-0.0.33.tgz",
"integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
"requires": {
"os-tmpdir": "~1.0.2"
}
},
"to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz",
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
"dev": true,
"requires": {
"is-number": "^7.0.0"
}
},
"tslib": {
"version": "2.3.0",
"resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz",
"integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
},
"typescript": {
"version": "4.9.5",
"resolved": "https://registry.npmmirror.com/typescript/-/typescript-4.9.5.tgz",
"integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
"dev": true
},
"vite": {
"version": "4.1.4",
"resolved": "https://registry.npmmirror.com/vite/-/vite-4.1.4.tgz",
"integrity": "sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==",
"dev": true,
"requires": {
"esbuild": "^0.16.14",
"fsevents": "~2.3.2",
"postcss": "^8.4.21",
"resolve": "^1.22.1",
"rollup": "^3.10.0"
}
},
"vue": {
"version": "3.2.47",
"resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.47.tgz",
"integrity": "sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==",
"requires": {
"@vue/compiler-dom": "3.2.47",
"@vue/compiler-sfc": "3.2.47",
"@vue/runtime-dom": "3.2.47",
"@vue/server-renderer": "3.2.47",
"@vue/shared": "3.2.47"
}
},
"vue-router": {
"version": "4.1.6",
"resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.1.6.tgz",
"integrity": "sha512-DYWYwsG6xNPmLq/FmZn8Ip+qrhFEzA14EI12MsMgVxvHFDYvlr4NXpVF5hrRH1wVcDP8fGi5F4rxuJSl8/r+EQ==",
"requires": {
"@vue/devtools-api": "^6.4.5"
}
},
"vue-template-compiler": {
"version": "2.7.14",
"resolved": "https://registry.npmmirror.com/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz",
"integrity": "sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==",
"dev": true,
"requires": {
"de-indent": "^1.0.2",
"he": "^1.2.0"
}
},
"vue-tsc": {
"version": "1.2.0",
"resolved": "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-1.2.0.tgz",
"integrity": "sha512-rIlzqdrhyPYyLG9zxsVRa+JEseeS9s8F2BbVVVWRRsTZvJO2BbhLEb2HW3MY+DFma0378tnIqs+vfTzbcQtRFw==",
"dev": true,
"requires": {
"@volar/vue-language-core": "1.2.0",
"@volar/vue-typescript": "1.2.0"
}
},
"zrender": {
"version": "5.4.1",
"resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.4.1.tgz",
"integrity": "sha512-M4Z05BHWtajY2241EmMPHglDQAJ1UyHQcYsxDNzD9XLSkPDqMq4bB28v9Pb4mvHnVQ0GxyTklZ/69xCFP6RXBA==",
"requires": {
"tslib": "2.3.0"
}
},
"zrenderjs": {
"version": "3.0.3",
"resolved": "https://registry.npmmirror.com/zrenderjs/-/zrenderjs-3.0.3.tgz",
"integrity": "sha512-+WsvUsqButmQXmdFENN4AJFbiNMf+9j0xKupRQoAxuxiFHU4y142X/i3O/Q6GGJ4YwXh8YbBNsWxkbCAxB3C/A=="
}
}
}
{ {
"name": "vuejs-with-vite", "name": "koi-vite-screen",
"private": true,
"version": "0.0.0", "version": "0.0.0",
"type": "module",
"scripts": { "scripts": {
"dev": "vite", "dev": "vite",
"build": "vite build", "build": "vue-tsc && vite build",
"preview": "vite preview --port 4173" "preview": "vite preview"
}, },
"dependencies": { "dependencies": {
"guess": "^1.0.2", "@element-plus/icons-vue": "^2.1.0",
"vue": "^3.2.37" "@kjgl77/datav-vue3": "^1.4.2",
"animate.css": "^4.1.1",
"axios": "^1.3.4",
"echarts": "^5.4.1",
"echarts-map": "^3.0.1",
"element-plus": "^2.2.36",
"live2d-widget": "^3.1.4",
"pinia": "^2.0.33",
"pinia-plugin-persist": "^1.0.0",
"vue": "^3.2.45",
"vue-router": "^4.1.6"
}, },
"devDependencies": { "devDependencies": {
"@vitejs/plugin-vue": "^3.0.1", "@types/node": "^18.15.3",
"vite": "^5.0.1" "@vitejs/plugin-vue": "^4.0.0",
"sass": "^1.58.3",
"typescript": "^4.9.3",
"vite": "^4.1.0",
"vue-tsc": "^1.0.24"
} }
} }
文件已添加
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
\ No newline at end of file
<script setup>
import HelloWorld from './components/HelloWorld.vue'
import TheWelcome from './components/TheWelcome.vue'
</script>
<template> <template>
<header> <router-view></router-view>
<img alt="Vue logo" class="logo" src="./assets/logo.svg" width="125" height="125" />
<div class="wrapper">
<HelloWorld msg="You did it!" />
</div>
</header>
<main>
<TheWelcome />
</main>
</template> </template>
<style scoped> <script setup lang="ts">
header {
line-height: 1.5;
}
.logo {
display: block;
margin: 0 auto 2rem;
}
@media (min-width: 1024px) { </script>
header {
display: flex;
place-items: center;
padding-right: calc(var(--section-gap) / 2);
}
.logo {
margin: 0 2rem 0 0;
}
header .wrapper { <style scoped lang="scss">
display: flex;
place-items: flex-start;
flex-wrap: wrap;
}
}
</style> </style>
import http from '@/axios/index'
//查询
export const getSelectApi = ()=>{
return http.get("/api/xxxxxx")
}
export const getModuleData = (url)=>{
return http.get(url)
}
//新增
export const addApi = (params: any) => {
return http.post("/api/xxxxxx",params)
}
//编辑
export const editApi = (params: any)=>{
return http.put("/api/xxxxxx",params)
}
//删除
export const deleteApi = (xxx :string)=>{
return http.delete(`/api/xxxxxx/${xxx}`)
}
/* color palette from <https://github.com/vuejs/theme> */
:root {
--vt-c-white: #ffffff;
--vt-c-white-soft: #f8f8f8;
--vt-c-white-mute: #f2f2f2;
--vt-c-black: #181818;
--vt-c-black-soft: #222222;
--vt-c-black-mute: #282828;
--vt-c-indigo: #2c3e50;
--vt-c-divider-light-1: rgba(60, 60, 60, 0.29);
--vt-c-divider-light-2: rgba(60, 60, 60, 0.12);
--vt-c-divider-dark-1: rgba(84, 84, 84, 0.65);
--vt-c-divider-dark-2: rgba(84, 84, 84, 0.48);
--vt-c-text-light-1: var(--vt-c-indigo);
--vt-c-text-light-2: rgba(60, 60, 60, 0.66);
--vt-c-text-dark-1: var(--vt-c-white);
--vt-c-text-dark-2: rgba(235, 235, 235, 0.64);
}
/* semantic color variables for this project */
:root {
--color-background: var(--vt-c-white);
--color-background-soft: var(--vt-c-white-soft);
--color-background-mute: var(--vt-c-white-mute);
--color-border: var(--vt-c-divider-light-2);
--color-border-hover: var(--vt-c-divider-light-1);
--color-heading: var(--vt-c-text-light-1);
--color-text: var(--vt-c-text-light-1);
--section-gap: 160px;
}
@media (prefers-color-scheme: dark) {
:root {
--color-background: var(--vt-c-black);
--color-background-soft: var(--vt-c-black-soft);
--color-background-mute: var(--vt-c-black-mute);
--color-border: var(--vt-c-divider-dark-2);
--color-border-hover: var(--vt-c-divider-dark-1);
--color-heading: var(--vt-c-text-dark-1);
--color-text: var(--vt-c-text-dark-2);
}
}
*,
*::before,
*::after {
box-sizing: border-box;
margin: 0;
position: relative;
font-weight: normal;
}
body {
min-height: 100vh;
color: var(--color-text);
background: var(--color-background);
transition: color 0.5s, background-color 0.5s;
line-height: 1.6;
font-family: Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu,
Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
font-size: 15px;
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
因为 它太大了无法显示 image diff 。你可以改为 查看blob
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 261.76 226.69" xmlns:v="https://vecta.io/nano"><path d="M161.096.001l-30.225 52.351L100.647.001H-.005l130.877 226.688L261.749.001z" fill="#41b883"/><path d="M161.096.001l-30.225 52.351L100.647.001H52.346l78.526 136.01L209.398.001z" fill="#34495e"/></svg>
\ No newline at end of file
@import "./base.css";
#app {
max-width: 1280px;
margin: 0 auto;
padding: 2rem;
font-weight: normal;
}
a,
.green {
text-decoration: none;
color: hsla(160, 100%, 37%, 1);
transition: 0.4s;
}
@media (hover: hover) {
a:hover {
background-color: hsla(160, 100%, 37%, 0.2);
}
}
@media (min-width: 1024px) {
body {
display: flex;
place-items: center;
}
#app {
display: grid;
grid-template-columns: 1fr 1fr;
padding: 0 2rem;
}
}
{"type":"FeatureCollection","features":[{"id":"410100","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@bEV@JANAZBLA`UJOPGN@‚NPH`DR@ZEHCVST]POLCtE`D|LRHvXPD\\GvATHNJHHDNRVrlFHFFFDJDLATMZO^ALDRAVHVLTDR@PGTMTGZQHAP@^J\\FBCDIJMZM@IAOC[MGUIQCOAAUKGAOB]D_AaEMGAEFIRUxkNMHKAECCMCMGIKIMKGCEFeHIZSDE@GCWFiAEMGECBEHYASHIAEIIAG@EJGGEG@EBANCDO@CCEMAQCU@S_YCEEKKgIwAM@QAESQGCG@IFGJIHYLUNGBW_UMIGBOBARCDCDMAWAAKEICECSAKCM@OFO@KAO@GCCABbCFEBIBAACEEMGCKAE@KDEPCBE@K@COQSCKKOKYDSAIFQBIFG@G@ECEEMAEBCFCDCBCB@BCAYBC@GAACAIDI@SAECYBCIA@I@GBK@MFEFODGFMFICGEGA@CDCCASQGAACeASDEDKBEAEEDC@AMCCGOAEEEADK@CAC[CACJCBCAKGECBGFGDQDGAKIKCCAKBKJKDENGBK@ADGJGJAHCB[NO@[LOBS@ICGGIESDSFIDMHONDLABMNE@IEIAWJG@ECEGGMC@OHI@KJIAABAD[PE@KEWBA@DHABIFFHAB@DHPBFBDGFM@SCGBMFEEE@EBOD@DHN@DOFGFKBGPODMCQ@CC@EACGACEAEHKBCCGKMBGCMHOACKAIBC@KASDICGBAAAOOKe@QDI@WIAE@MGEOQAAIAQBEACIIIAGCC@IIII@BGACECKAGKGEKCEFGBCFG@kKQGOASDQDMVM@EB@BFDEJA@EGEAUAM@GBSRIAABABIPEDS@UGKBuBMHcMK@MBGAICC@OFQBCBCFI@SAGCGBYF_IEHFHBNJDNDBBOHUREHG@K@EBQLE@ICKIGCK@ABAD@R@BIBM@IDGAK@AFALCDEBQEQEE@AHGJDFBP@JABEDIBAHBDDFJBJFAHFNALINDFJFJXDZCLFdAVGLBH\\FHAJ@HDPLBAx_DCBEVALDJCVAXBL@FCLEND`@RBROFAHHXL@BEH@FHXFFCVFH@PDHHDLBPFJ@JCH@\\BJFJJcFQJKBo@ICU@_DM@OLGNCPUTKNAFDF_CEDEHAD@DJRBF@FCPEDE@CFNFBFBHFJCJYVCDLPADGNCRAPDF\\JHBNJJDF@JDNCJA^UPATTJPHBXABBHPFHCBKBmXGJGRDFJFARDJCJCDKFWDGGCAMDqAIBMFIAMGYBEDAHA\\DTDFFDVLVM`AFFT`NFLdDDFBdAZIp_J@XLlVTJFFHPHBPAXERK^YRGXAVDND~FPFHNXBRGTMLQF@JBb\\THRJPLXLJJBFDPRdDP@\\F^HLTLND\\B`CZKZIL@PBJDTLRPVXRPdNfJXCPGDM@M@KjGxEfDhNbDX@REXQVKRQRO"],"encodeOffsets":[[116319,35773]]},"properties":{"cp":[113.565412,34.657975],"name":"郑州","childNum":1}},{"id":"410200","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@LKJCXM”H²CTBPJTN`dJFL@N@NGTIdYPG”U|Q`DXDjNtNVA\\EP@`GJCNANCPAHBNFFDBFHBb]\\C^MJ@JF\\@TDHB\\VHLBFALCJGHIFYV[TCF@JDHDHJJPNTDXRZZNJPJ\\LLEDCvMDBHACCBATA@DCBK@BFGBBFJAHRD@@AB@@JC@@BHACHP@@CNA@GBA@GAECBCOB@@ABA@CVM^EFEFQDEJIFCHDPVRLNFhBXCv@JQFELGFAH@FDLP^HVRXLX@`@RBLFX@JIBMEQFCZCJIFKFCAQNAXJTKbKHLFDNDH@DEBK@KCEA@CBCEGDQcIFAAC@ACA@GULA@CXAAIVCDPP@BBZAVEDCEYQSAEBsFKFCTEPUBK@GCCYSSIQEOAwH]GIEQ[IIKCEBONMJK@QCKEKKGKKIOAO@WF_@m@WCsWI@EBCDEBOE[@GAEEOCKGECECGA[DaTaNYTEDG@EAAMEAyAGAECCKDENC@MJCPAVEBEAGIIGIQKAEXEHCBEBK@SDCHCH@\\PLDbBHATK^IJIBG@ECESGaAMCMGEK@EFELIBE@EIOH[AGGM@GPaDUFM@KBKN_BICeESAEBIFUAEAEQUMKOGIAIEUEMIGGAQK[@OHOJIPOJMDOAG_kEQAOBGBIJCDIJQBUBAJALCJIVSBCF@E]CGCAOBgJmTIBKBCAEGKSEACAyE[EQGGECCGYACIEWGUIA@EBCDGRGFIFQDu@EDKHE@c@IHOPQE[DKLWPEBMB_EUBYRWFMRCF@PKNGBEGC@[@EDEHIREFCBiDqNGOCWCIGGBGDAHCXCNELEBGOMISKIME[AEAACGUGGQ@KEKA]B]FWHGHWXGBu@URI@IAEAGGG]AEYYoAM@MFKAOMCGAUAEEAm@WCAACOCEKAMAMEA@M@@DEBCFCBS@EDCJDH@DADKFADBBHDBDGHIRGDM@@L@@GBG@SICHEBEIEAUFCCAMEAgHY@ABAHKL@LAHGDKEE@@LBFDF@BGDW@ABCJCDC@KAAFFJCD_JWBALABGEE@YAIKCAI@AFAHKDFZADGBBJABQFFD@HADBZADA@ADCDED@JFNDF@F@HEHAJERBJCTLZLPDLRTDPL@F@DAFOLCF@LBHDFNDFBBJAFADEAaDBHDP@LBP@PEJARHR@FDJDLFBBBXCNCDQDABAPJHVNX`HAVMZKJGHIJEH@HDTRBF@RBNJxLhFLDF`Z@TDVBRFNDDP@DCBMFAH@HFIH@FBHJJBFGJBTGZAFFDNHBFEjDX@HCFYTGJEfDFLHJNJLNHNDDDBFGLMNwlQVEJBFFFND\\D`B^CPAHBVLXzDTNŠBZ"],"encodeOffsets":[[116963,35758]]},"properties":{"cp":[114.541447,34.597049],"name":"开封","childNum":1}},{"id":"410300","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@AGE@IAA@AHAB@D@BD@FAH@FC"],["@@@GGOBABCLED@HFD@PED@hBNDNANCFDJALEXI|MVMHIRUTeJGhG^Q`YJELAJDRXLJNDD@XSPIREVC\\BLC\\ILGTA`KHIDAj@VFV@jEREpUHCHKFATFPCHEFAF@VBDDEBBLOJCFDBD@NIB@ADAD@DFHADIDGRCBK@GAIQA@QDIA@BBFDBDRHLB@JELFDAROFAD@VNL@JDFLLFLTD@BC@OLEDYBEJG„KhA@mHA@KAGIG@C@_DUH@\\GfKRIhEdYzMXDNFNJTDPG\\DJDZEJM[OCECYBUDIHCV@NHJBNEJArBNCDBHHXCLEDCDICIBQIECEHQHInWLADAEGGOAAWBGAIOSSOB]VIBMDICE@ICMIGA[ICEBODQHMBCKODCZUDIEIAGAEMEDEF@FCDO@EAEIQ@CBCFGFC`DCEBELMVSDOHMPKN@`CV@JDp@LARIdEIIIE[AG@IDI@OEKAGCCG@OEGDUEEGW@EFG@AWKGGEBQPQA_@MCKFEDK@WAUBIDKCUBAFCDw`ABOKGCI@GB[EAGHKBUEcDKASIYACIECEJMBKEMBGIEIACEAC@GPCDC@IAOCEHIBGB@H@NFRFFADCBKBEL@HBNCOISQCAI@IDKBI@KEE@eJQ@YQSCQ@WGAFFTSPuG_MEMCEi[SQAKCOaQBIHMdSDOGKOQKMHSNKdqFU@QDIFEbIJGFKI[O_KsBSCMMGQCOGCI@QEI…aKIBGLCT@JCDCHCJIJCECEAMBGAICECAEDEFA@IEIOWA_BIOSSG]GQGAILQZKlIJE@MOWik[@[BUGYSKSmsUI[@aZihGDI@YKwKOIKMQKOCO@KIKEAEHIBCAAEESEGEAG@CFEJEGu@EEESMAA@MBGwEQCYQaMKJAXSNSCQMIUEUU]UQ_MYGOAUGCIBOHMPGFUJK@KIGG@SHOBMEOLYXMDMCSQEUBKBBD@BGD@BBFHBBFCBGBAIAGIsEcE}OaEQ@IBGFEHUT]PWFQ@MC[AUFEDCJ@PBNA\\GZGLUHIBuRSJwVWLSBSCqSWROTirYLYH]@[CUFYHuASLOFOCQQWKU@]XOF_FYHULWPYNQFUAcG[AOFG@GAMEEAI@EBEDORQDSHSAIDEHMVA\\BZAFgbMXCF[L@BBRADCDOFIHBNBDD@DEAEJCFFNDHABDNJBFAHOX@HFNDFPLFBN@TGF@PDNFF@D@BABKDAJAXBBBBHDRFLFFRPHLHF`NNPJHDFGRDPAVCNELMNAF@fDNHHDJBLFNLJLDBBBDQ^]@CDCDKFe@EBGFCFAFDPENEFIDE@E@UMABAB@JAFSAE@IDMHCDCNSPIREBWAGBCDGPALCFEByVMNUN@FFDJBRAHBDBJXBHBJKLAFDRAZDLJJFXM\\QNILCJEVCDIHeDABCF@DFP@NJJ@NDFHHJF^@dHDDBBCTBLRD\\VBDAJDRJXDDJ@dKpKJ@BD@FEZ@F@Df`LHJAFUDEDAHA\\AhBJBXNFANMLARBTRHDhN„`LLlRLJJPFFTRND`BFAHEHANBD@PPTNDHFDP@BCHKJAHBBDBHDD`EVKrMdKTENKHCRAD@BD@DWXGVAHKN@FD@^@LBHFLRDDRHRFPHTF\\GJBDRDDDBH@VAFDHFNRTPJFHDPAFBDDBD@HAL@BBB\\CdBPCHCFEHM^aDANFJAncHCJBFFCNBDLPBRLHJL\\HFFBJRD@BAFGJCLDLDFLHBFBF@DEFADDDVADFBFAFGTAFDFFF\\HFJ@DCHKHMN@HLBPADBDDHR@JCFNBFHDBHACFDJAHAFAFCAEDQHCFAH@DBBLBBDCHIHYPIHEJOFCFAF@FDFLJ@DEDM@]KQAQB@DDLAHOLSLSRSB[BIHEBI@CBADDTCLBDLRNJRHRDNFLNRPPAN@dL\\NDDBB@HCFCBEBQ@GBGFIL@FBBFDND^B@BEFAF\\L@DqR_PWRAHBD`PFH@V@HDBZLDAFCXDbGFBFDNBFC@EFIJELCDEDIAA"]],"encodeOffsets":[[[114719,35618]],[[114728,35887]]]},"properties":{"cp":[112.134468,34.263041],"name":"洛阳","childNum":2}},{"id":"410400","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@IGCIIOAKACAKAYDGNGfGTKDOGSAIDKRYFAFMXUBGGOFCBC@KLAJIJ@HUHEHCTCV@‚NXKJSP@LFBNANJHNDHAN]BAH@VDBABSDEL@DCVC`UNAHCHKIEKIAIBGHCFGN[J@LDBVFFLBXERBVCLEHIJeBUJMNQA‡CQMGOESOIaGKW_ISDS\\eDGJEDGBE@GGMAWJ[DEF@DAAEGCM@QO@ABATEPIRCFCTGNGNCLFF@NCHCDEDIB[XBxJ^LH@FCNBVHPBHBDDDADGFEDAR@FBLFD@DABOFQFEF@HCBGGKEKBIPKAGEIAWBWLYLOn[JCFEBGEKGGaMICm]AA@EABCACEC@@DGA@EA@AFWGBCBB@AA@@ACAD@BEC@BAB@AAAABIB@@AF@L@BEAC@CE@@CE@@CB@BEG@@DE@B@B@@BC@@ACB@CA@D@ACF@@AHA@AEA@ACB@AG@@AA@@CC@BEGKC[B@@EC@@CAA@CA@@CC@@AC@@IFO@BBIKAGHEHA@C@ECCB@@KBAFE@@EE@AIO@@AC@ABS@A@EH@IDOHCAE@EWiBgAEIEAA@WBCDA^AXINCH@HDFKJGFDBF@HBDDBFBX@NKBMDAJDZ@P@REL@HFHJ\\@JCF@D@JJNBPJJ@PEHJBBXGLBFCFBDABQDCDAG]EIAEEMECECcGOMCIIG@CFG@ECK@aIIOMCEEQGQK{Kg@INuNSBELYDAHDX@HC@EQWISQSECICEB[\\EDCGGCMAY@[JCC@MAEMSCAMHQTSBQRG@MGGEA@OBQCYDKAEBOFMB[G[BIA_MCECEAKGSIDGJAHLNERBFHNAF@DWTGHCDHAH@FDJV@TNhHFHDHH@LEX@REPITMXAHBFXHNDDD@FGFAD@DDDHHBDANGHIFQBIDMD[BqTG@oUE@CDILKDMBMCK@IPABO@ABGLKDOCGRGEC@EBADAFBXYNCFCJIDEJQTAJGJOHQDQCW@[OKAODADABATA@cNQA[FS@aIOGI@CDCJCR@TDRHJJHFH@DGF@JAXGJAHHT@JGHIBADAB@PABKAG@BPGLoREA@CAAIDEFAJCBKDKLGAK@QLIDCHAFGLAHgCI@IB[PKBAIACEAQ@UHAECCUECQ@EBGAGOMEAW@UCGDCFCB]OSEWOEAC@C@IHAD@FABCBSAGFEJ]LIFM@IBCEC@WDO@IH_JGDEDAJGBUEWOaDGDCFAF@NABKHSDC@GCY]QKMKECK@ABCJMIQCEBGJEBDL@HABOJINOLGJKXGBYESDKBEBIHUZIDQRGDKNM@IC_Q_BAAQIK@CBEJEFK@UCG@EBQTMHCDCVGHSFMHQLeAE@IHGHAH@NBBTNFF@FHvIFEF@HBDDDXHFFBBADGJBFDDHBLJP@PDRLLNPJxLZLJ@HCjgbY\\@VJntLTZTVH\\A\\@jlPX@NIFkJYLKRBJRH^HTHPTAJB`PXFJ@JEBCFBFFDJDHBNALDIFIJGDCDIDS@KDAHLJ†bFJ@RDJPHRDNHDNATLtP`J\\ELIHaJEFCJ@REVcrMLGTLNPRHLCPcTGNAJbRDPBLTRj\\DFFN`NvHTOESBEXHR@TDZRR@fIF@LFJ@LAJCJ@DB^XFDJ@H@BC@QBCBAL@XPLBRKFAL@H@FGVQNEBAAAMCICAMEGFG`JZEHAHDTBJ@DEDARAPED@JDHBNAL@dNNGvALAVHT@FCJOBABAJBTQHAN@VBFBFHB@FIEC@AFAN@NU"],"encodeOffsets":[[115797,35089]]},"properties":{"cp":[112.957718,33.835241],"name":"平顶山","childNum":1}},{"id":"410500","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@D@BAEG@APEHDCJBFPDJAHMDCFAPAJJD@DEGI@CX@PEFEFMLBJKJAH@PDLBfIH@DB@DEDKDCF@PDDVFjDLCBCDKTMPe@EFAhJDD@NDHAFBBHDF@XEHBBD@FDD@BGDQ@EHBFBDNFH@NIFKDGAGJGJKHWXGBFEJ@JDFPBBD@DCDKBADBJEDE@CEC@E@CBGTBHHBJA\\OHINEFDBBBFAHBBHDL@JEFK@MCGIKBIB@BDTBNCLJJADCBOFCGGAAEBCCGC@ADCACI@MADCHBBECEDC@AD@DBBCRO@EDGBCNGHAP@BA@ADABBD@BFH@BFABD@@BJEVA@CBDHAJDHCB@@BD@AB@DJCCBBBAB@BF@@@AB@BFAADB@BEDAB@@BJB@CD@@CJC@AB@@CDBHCBCBBDAFAD@@C@@DJD@B@AEJ@JC@CAGCECAB@@AB@AGBCEEABAEB@BB@@@AB@@DBBBAA@DCFBACD@DBD@HJFARA@ADAFBHPABAHDHB@DFAFFJH@BCP@@EPOHOHAJDFDFFDHHDVIFEHCTCNE@CRCDBR@ADBDJDNCDCJ@BPL@TA@ED@@MB@BAFA@AD@@CB@@GB@@E@@@GNEBFHA@GRADANANALDVBHMBMHI\\El@PCLEPULKNIRETA\\@dGROFGJCAADA@@DABB@@@CB@@DTA@EH@@EHA@CF@@AF@@@JA@G@@@GBAF@BCEA@CC@CBCMFAFCFDBABDJA@DB@@BFBFEBBB@@ABJDB@CBB@DH@@CJ@@EFABDHA@BF@@FLB@DB@@JFBBBN@@DLA@BB@@BnA@CH@@DTADPJ@BFH@AETA@AD@AEPABHF@@FDB@BH@JNNA@CNCACDA@AD@ACDACC@AD@ACLC@ALAAEFAAKNABHL@BJH@J@@AH@ACJA@DL@@DD@@CFAAAH@@CL@JC@AJABDDA@FF@BFHABDFA@AD@@DJA@CXABRC@BBA@DNF@H@ABF@BDPABFDA@IF@BDNAB@@@B@BBB@@CB@A@AE^@@BJA@@DAC@KmHEFKRIDGDK@GI]Mm@CbMXINCTAJAbMBA@AD@AME@@CEGEAAMDAAIH@DHAGFFB@ACBCHE@EGM@CLW@I@EGICIEI@KOcBIHOBK@EM]AQMQCSMIMGUACCCE@EBMASDAPAFAFGAOG]QQ[UEMK@CKCAUAGAGGCG@EB]LMPGJKP[@EII@EPSBoEEKACCACAKAAMCQAEAGQOQAIBAFCJIAQBGDEJE\\QJCšILEHMF]BYDMBgCUEEUESKEGCM@E@AHCJAfFJ@BCEIAKAWKUBEBCLETCFCHge_EKYYMFIBMBM@cFUFOAUE[@GBI@SK[WQIOKKEAE@GAEGCqC_DKAIEE@WFU@GAM@MCWACEACBCFCBIEU@QGMKIOGY@[BWJ_BKCUE[OUEmKMKOQEWIOECWI[EQISOEGCQCA[PQDIBUEECIKBAEAE@GDAD@FDHCNSBIJcEECCGEDAB@FBDFBJ@DFBFJF@DEFS@@BBBCJCFANFHBDJDJDFD@BAJCDCJOJ@HBDLBJCB@RVBD@FCHEDQFBJEFDDLCJHJBLDFFAJDHILWNCD@HDNNLFFBF@JENCNALCD@NCBKHCJAFNT\\THHBF@RAHAHSNQTGTOREJ@FHRFJHDFBPJFFFJHFRFNH\\NjNLFHJGPBHHBVADBBB@NKNBHDHFBD@jGFAP@RCP\\H@JCXFL@DBDFVRlJFDFVHFnJNAREN@HDDBFNDXFJJFHLLDRBFJNDN@HDD@HHJNL^T^BHBX@NCFMDaVOFUR[@iKC@IFIHIFmFQFKHONENDJAD]FAFENKLGAOGIBABFH@BCDGAEAGGGOECI@ODgHcFSCM@O@KMCAcDCAGICIOAUDUAODWGmBSB]EKEKIKGICmKOAGCQSU_IUCACFGTQ`Kd[tG\\BJ@DJPFHJFDH@JBFJDZDNDJDLJBDAFSNAFBNHLDTHDRDFDDJAJPFJLFH@F@BGDM@MGECGKG@AJBP@NANC@WCKAQDKDWTSHKJCFAXADEDiLIDELERGNGHIDOBq_[IMKGGASMWBIHGBC@CAAOCOBIKCAGDM@CCEMAEA@C@]LMDQ@I@CA@EBOAK@GDEPEBQZINKPCJCTKDCACOM@kEQCAOAICQMSGeAKKAE@CDELKJSBANEFCAISSEIAKBAD@\\LD@LIDAF@HDLHJBLBNC@C@CIQAMAGIGFOAMKKOOWBUWQGMM_CCAAEE_UGKGKIGCOBG@ILGHQFMBAACECKBECKCECAEAW@MGGBOJGBW@aKOAgGYA]DUJETFTP^BZ@ZIVSLiri€ALCDCBIAG@CBADEDEACCSEEFELHL@BEDEBEBmAk@MZKLGJETXLRA\\ATEZENBNODENBZJHLBhGVGNBPLBFBHINIHIJ\\FHHGJqFSJBPNNNHVFDF@D@DIDADFF@HAJIN@VGHG@CF@BJ@APCHEACBCHCDMH@BFDJ@JBD@@EFAB@DFD@@A@CBATBHAPDDFB@BEB@FFH@BHC@C@CDEA@JADAB@BHHADMBABADEBG@MCAAA@ELBFIBAB[FGFIL@BFBTCBB@FPCpLDBBB@BADURADHDDF@@FEDBDDNCEL@FGLMDOBCAMKA@CDDF@FBDDDJBTHTNDH@JCFAH@FDHBBF@FBBFLBBFAJGTA\\EJHJDBRBDBBJLNJNCNKTBN@NDR"],"encodeOffsets":[[116462,37237]]},"properties":{"cp":[114.352482,36.103442],"name":"安阳","childNum":1}},{"id":"410600","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@FDFR@lPN@D_TODMLYJAROFCF@HBLAP@FDBJ@R@NC^KD@B@BFFNDDN@HCDBJLPAPDBB@DADGHAJNXBTHHNL\\Jr`PAJCLMDGFQFKJCjKFCBCBWDELITGXSLCRCLBXDD@BM@MAOBIH@HLFDNHN@HC@A@EEGIKOEBICIECQCGCCSGKAMBETMBEACKIICMCYCICAE@ICGIEEGIO@CAIH[\\sLcR_HSDEDBJVV`RTHDPBnLJDLHLJLF^FTAnAXHPCVBVCPBDJHJDBdCDBLNP@N@TDdEhGPCJ@FDHPHHFBHBDC@AEGBAJAPHHBLKFMBE^EBCCIFMPMLGREnEJEJGJED@jL\\@VQPEbUNCDE@MAWAGS]K]IMGGC@GCM@MCEIQAKCGKIEEICWEMCAGCM@QFMBmIGEEUECkIUQCECAK@WEIDG@O[QDO@EBiHIACGAGLM@MAACAUBGAAGHOGIKEiM[MMGQEGEEIEEOIEAGCEIGQ@EFIPQFMqgiOIBE@ucK@K@KDIHQPIDQ@GDIFEFAJBFFJAPBBTHFFBJ[@_H‡VSBKJIFOAICG@ODQ@EDUFULOHeZIDuDIDGDEDAXAFEHWREFCJH`@FCN@F@DLLBHGXCTObWNGDUBCF@LEFSFWLE@F`BFDB`DNNRHVXTAFBVVDDBNEPJHBHBNJR@D@DMDKAIAKGGCE@CBKJC@[KC@ABBLFJTTBJEDMFABITKLCF@DBFLLfBTHRNJDN@"],"encodeOffsets":[[116807,36734]]},"properties":{"cp":[114.325444,35.678236],"name":"鹤壁","childNum":1}},{"id":"410700","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@l@nBFAFAFC@AGKFKFETFDDFBFCBCDAH@JBDADCBKjjqTKJU@YAYO]ESFSVI^CZBxJbLX@HAPIHANHX@FBDBDFDLAFDLDFBBNAREHGJKH@NCJFLJLHVHF@XKTEFE@KDEVAHCXMPaDSHWAGKK@C@EDM@EG[@GJKXQFGBEBWFCRGvCJCfYPGVKVEFCR@PCH@JDPBJELITAˆU`G\\@AIEESGAABOEIAEBIFEJEHCR@JCROJGLCL@L@vdF@JAjPrhBERSTMBGBG@QAEGG[SMSBEDILGDA@MDCBKDMFM@IAEEEMKCM@GDCXMJKCGBIEEKCIAIGKDCCFEAIREFCDG@EACQUA@IDKACEBEPIDIDCBG@CECGAKEGKBMDEDIAA@AP@D@FE@CIEAECEK@CCAGHEDHFDdFJITADMCG@EBCHCF@FBABJLFDVFJAPC`OBBDRFHTPRJ\\FXJFDJPFXPRNLnLVF\\PVFLD`AXINAf@FBLFLJHN@RFVAJEDADBDDFXBNDN@HBV@XEF@JFLB`CrDHDBF@HBFLFPLRJ\\XTLJ@HA\\@VFPBdGVCN@XCNERUHSDGDCZEŠ[EgO@GCkiEI[_IOCMEI]EMCEC@mDwACECe@eE]EMEOGKGKKQYAGBIh[XUPSFM@M@GMO_QsKGEKQMYJKVGdADEBGAGEGQMWKKCKFeQSMYYWQSCOMMQCG@IDE\\SZUJEJMDOAEGK[UGA[CS@IEI@]N[Da^GAAEECMEGAOBMDMBID_HO@[FUBsMiMWC_C{R“VOHcZSJMHM@K@IE_cSMOISA±D“GWNIDKLYNINCJAD[E]IO@GBYRSHSNOHQ@SCUKUGQBKC]BYPSNKBICECEEEGqkQUCMGGMISGuB[HOCuWQG{K_CsFKDOPS^UTGDYFQ@_COGMM@OHIP_VKBYAMBIBU@aFDP@ZBNFLT^FFJLDBLFVFNFFH@BABG@KFEFAFBDF@VBDFBBCL@V@DY\\IFCJINK`O^EZGRKVEBOAQGGAIBA@AD@FBFAFGDQBIBGFONAHARIRCPGPAH@^@HNRLDNLBF@FETKTSTET@HAXG@ELA@Q@WCGB@BClAFGDCJDV@FKFOPHFCHCD@JFBNAFDFHCLILIHKNCJ@NGTUfibQHQNKDIJGDCDADA\\GLGFHRDDFDV@ZRDAHENDLKDAJBTHHANHPBNDTFLI^@DH@FSTJPFPCH@LDPNPTPNLFNJ@HDBBALHJDTFBLBDDAFELARKTBJAFBBPHFAFQBCBEDCPBBMBEFE\\ChBLCLBBB@jAJEDADALJHAFORULUFAB@FNHFNAJSbGRANLVHJFV@JINAPKEE@ED@FDFNDFBV@BFCBGBIHOA@B@FFHADGBCD@HFH\\EPBbPLAJKNCRHJHDL"],"encodeOffsets":[[116385,36697]]},"properties":{"cp":[113.883991,35.302616],"name":"新乡","childNum":1}},{"id":"410800","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@HEHKB[BCDCHCJILCRMRGjaVeHS@MDILMJGJKDKEGECMBEA@IDCDGGEPOLE@ECUDIHCBEDk@AHAXDR@B@FKH@BW@GFSTSLSFS@EAEMKKCMQ@G@]BGHODOJQBQBGPMHEJARAHCBEAE@EBCB@JAHBRHPBFALUHQFYP]L_JMDIJEZ[@C@UDKAACEUAE@ACBEFELEH@BA@AEGMEUEKECAIKEES]EKAM@YCOQPQRULWRQFW@aCgMeCwFiH@L@NCNOHWDeIcMQOUWQOSKICOAK@YJYL_D[AMCSKGKE]@[COQcCOAEIIWKOKQISGa[IAE@KRSNQHWAGMOE}EMCUCWBQH]ZQLWFOBGAGOEESIkUWKI@o`YJcBEACCKcMES_EEK@SBUNINYFIC[COHMAEAMIMEWCyNcZgFQJeL[HG@CV@`@DJHBH@LGB@ngBƒLIHAFCZKF@PADC@RXHD^AHBLBJJFDVCjBJFDJFFXCTLDFN`FHVNZLVFJFPRBbPJDFDLDNHL@XTLFFBF@FCTAJDTEFB\\@DCDD`FTAJCHML@JBDJAH@LHFHHPJHBDBFCF@HJFRBNNLFDDDLHD`EN@REHDBABIBAVGb@DFRDRCJA`NBDHFHHHV@DEH@HDFXBHDRHLDD@LGLAFAJDHN@B@JELAFC@ABBJAlDDNJBDGRJF@DBBJ@NGD@TCPFVD`KNELDHGFAPOVEJALFJ@ZKDCH@LFJ@DDBF@BEJ@DPDD@D@APBLCDBDBFF@DAB@BRAFD@DGBBDDCDBDJFBAHB@@CB@BFDDBBFD@BD@BE@DDABAAEGCDEFFBABBDAB@BCBCBDDCFBBBBFC@ELHPEBCBAFF@BCBFD@BGBAF@HJADBEF@DDBBHALBJ@DC@@BBBZ@LCHBLDHDPDHAD@DEJ@DARQRBDC@CBCFAVBNCZKJABBBDEJIJ@JDLHDFH@JFBFGFKRD@HCHYJ]B@DBDbTNCJODCnAFDHNFDN@LBZ^"],"encodeOffsets":[[116105,36347]]},"properties":{"cp":[113.138266,35.10904],"name":"焦作","childNum":1}},{"id":"410900","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@BQA]CEAE@GCGAAAICGAGIK@AAOE@@ABA@EG@@BEBGSB@@CF@@KGB@ECBAAA@BBC@AEGA@EGBAGD@BID@@DBB@ED@B_CS@SIEoIoYEECCAQCECA_BKCCAKcG_FGPKFGBIEm@GEGCUCAAOC@@AWF@CG@AKHA@AB@AANACYC@@@AIE@DEBEGOI_@WAGBCv_DANR`TVLRLDDfzZ\\XRtZRFfV|J`HˆpLDRBRDXC\\AJER@FFFLHFRHVDHFLHDVHJABD@PJfJ^GlFTBH@NF@PXTI@CDBBFFbVbJRCT@D@RKPCL@HDDFHNvVF@^KL@HDZTZJ`JtHHDn\\ZXz‚LDŠJBACADIGA@ADAAABAAOC@ACC@@AA@BOIABGC@BIB@DKI@AGC@AEA@@AV@KGMB@BEB@CB@@GFC@MAEA@AOEKUFOgESCmCMAAGCO@‡N_@wKOBCCA@GC@@QCBHW@EEGECIAWAYECAEID@@IZA@GHMKE@_EB@ECB@IA@@DA@@IAWGAB^E@@GI@CYEC@HeA@MQ@UFCME@@CQB@FM@yLOUAIW@BKe@AKCBGWOBCKD@EOUFCS@OQ@@KFA@[E@@GC@@SyEQC[KOASAAAC@@AW@kACMECmRA@AAEKGCgHI@CCAICAYB[OWQW[Y_Qi[cMG[WCGCQEUCEMIQSGQM@@QYDAUE@@FOFAUE@EEMBBK^GCIIDGUJaFM@OAC¥aUMSQI@MKGC@ADI@C_YgYKCM@SDK@WEOJcBeCaEUE@SEAAOI@@fA@CA@[Q@GDGFCF@DCDEBACCEC@CCBEDGBI@IOSIOCA‘BSEEKCWCc‰\\YFCDCHGTQVZZFLf`GhEDSDKFADAFLV@RDRFJABCBkEIBGD@HDNFHTLVFFFDVAhCNAZE^GNKF™JID[RIFCFAHBRIJEDABBJPRHRFBRBNDBBBLBDDDLBFFApOT@FJJ@FO\\ILOHKNA^@FDHHHHBVBDBDLL@FN\\VRRH^BPEHEBOBCBBTAN@FDFDDVBNHNJDTNRBRN^@FALGPAJPd@LFJDJHJ@F@JKX@DHN@FGFADBDA@EEBHCGG@BJCBBNFBFH@DF@BNC@@BABaNIBSBMDmTXDDLJDFHFBJ@FHDBH@TFNG^ARHˆ„ZTBJETJhCR@FBFX\\FFFBH@|OH@DBBDBTH`DHFFHDJDfANCHCFGAKBAFCVCPDH@BDBADBFBBFD@@DFA@FD@@FDB@BC@@FB@BBFB@E@BBAL@K@FAE@@C@EPBFATKPCVIPIV]HYDGV]FCJE\\EFCBE@IESCG@ILQJIJCLAJATHPED@LFbRHHFLDXDNDBZ@DBFLD@@FBDB@BDA@BDGF@BB@D@BHBDB@DLD@CGDA@CB@@CACFAECCC@CDB@CB@@CF@DAFAJBFDPRFBZAFBBD@XBLFDHBLABABWBCFGREJA"],["@@GEGAMJCH@FDDHBJFLDDABCDEBCAACCEI"]],"encodeOffsets":[[[118256,37017]],[[118278,36761]]]},"properties":{"cp":[115.221299,35.668234],"name":"濮阳","childNum":2}},{"id":"411000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@REBAAIHABCEYLCBGBEJ@DBJLZBF@HFBABKXA`IDCEIBELBD@DCDIBAX@HC@ACEAE@KF@LFHCBG@KLKBGBAZ@hGFBBNDDVEFBFJFADGTJH@HA@@@KN@HCJQHGACGCAABCLEBC@CCGDIFCL@LADEFA@CP@NFXBFHDPFDTBn@FBBFBVDHPNF@FBNEN@pBVIHEJMJU@KEcAY\\›@IEQEIKICEAICCOEACPƒBQBCJ@FCDGH]LeDIDA\\CDCBCCODWCEEA@KHQAEMAEMFwD…DGJIH@BCKQJKCEBEEABC@CACUA@Q@AT@DG@AD@B@@GPABKCC@GDE@ECCKGACEM@YEK[IEGKCM@QHmHEDCBCRCBE@MEWBGBKJKJA@GEA@CFMDECMA@LCBA@@ECCA@EDECI@ACCBEFCHBJHHIPIVGPCDMHILQJMFCDAFDHHJPNBFETBN@DEHBFBJCFEJADG@CFMA@AE@BKE@@FI@BDHA@JJDEHS@KAABEJ@FAFCFIHG@OEKDCBAFBBAJAFHBCFEVMFSH_B[AQGm@_KSCSIaQEEISCE@BG@@HUABCEADEO@IBCJMAKBIG@DE@@BKBBMC@BACAFOC@@CFBBECA@GHBN]WC@YDB@WCKMIKAiFC^B@@DGB@AE@BACI@BG@AAA@@@I@@CBEA@CBCAC@CDCBAEA@MDKCKHWC@ADA@CF@@CH@@CGA@CM@@ED@@EGAAF[A@DUA@AD@BCC@@CE@AC@AF@@CAAC@@AG@@AG@@DAOCCH@HEAI@EDC`KZCBCBcOa@W@EAKEBAKKB@IA@ACEABGEEA@@EB@@EB@@ILBBGNB@AD@AAJA@EF@@EFBBMA@@EE@@IC@@AG@@AG@DCI@E@CAACDIAEQMIAGBENIPC@EAACEMAMCCA@gD]LqGENEBCABMAEGEGAOJIDG@]OATXXu@ABAJFLHLAHGDE@EFERAPCBC@KEEAQ@CBEFCHCBCCGAOAUGMAEDG@]KwIWAA\\CJCFGDMDE@KEMDMHSHEDQDOJSFAB@BRPN@HDBFCBE@CFI\\BXHN@HAFCHIFCH[fCTJTX`HLJbTPPFNHDRBˆMRINAVIfGJKFUDQAWFKAEEAUKCI@M\\EHGDAHBJLJJFGLGDMB_VUDCDK@CFATABUCG@ABM^GBMCIGBMAMKEO@ITWLMU@SDCBKHGVI@IJKB@LADEDHPAHWVENEBQZCLBJHTCPSLeHMHCHBZBLBDBLJPDJFFDB`GF@PBRHLBZHNBDEHAFELDJHFJLBFDBDAHJ@JJ@JDDBHJJDJFBRAJBBBPRHF@NBFXJJ@RCf@PLBPBBHAJDTCLBD@JALBBDGPDNAHLNDHCHCDAHDFLH@FDDDBNANDPCHOLAHEPE@CGM@CPCLAFFNEDAXDN@FABCACAEGO@CBAEGJEBACGB@XALFF@\\OBCBAJBLIJ@PGD@HNFHFDH@XIJBJFF@NMBACKPMNG^INAJ@RLFDN@VA\\KP@`OBGHIHIBCL@HAFMD@TMD@HAJBRNHBRCHCHEF@FDBLADIDBD\\DBD@DCLFBFFPBDHND@BCDFFFBLAFCTCfBBDHBTRDBCD@DHBHFJDNEHEPCFENEL@HAJ@B@DJZAFDTBJ@JC"],["@@D]]HDJE@BDB@D@@CHB@BA@DJJA"]],"encodeOffsets":[[[116619,35152]],[[116557,34704]]]},"properties":{"cp":[113.726063,34.112956],"name":"许昌","childNum":2}},{"id":"411100","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@ACF@CI^G`CJALBNJDL@XCA@ZXDM^GA@HDBAFEA@DD@EPDBABD@ANLA@AF@@CJHLANBDIJAP@CFFBADVB@GH@@ADFJTFFbRTJTD`Ln@RH\\B`ATGNEFUDEGABEBIAABEDALCPFH@JGDEBE@EFIBALBT@FGIC@IGBACJ@@EF@ALF@@BPBBEH@HMDEAIAEFG@CAMFSAEOMGICGBEDCNERINMJELSJUJOEECGGDE@MEKAC]DEFEDG@YDGIDI@kEY@AA@IDCHAB@@MFG@MGKQKAC@ICGBSJU@IBOJ@PDJ@@GBMDEEaBEJBH@ZCX@HB@DCJBHJJJFFCHGH@LNJ@FD@BAHBHTRPDTCJLVBZHNFDIAMDEPS@CBaFMBgBGDCTOBCBG@WAAKEMCAE@C\\oDQDCVCBABCASEW@MCGQS@EFOGO@EBEFGBWcUGAW@GAaOKA[F]IAAE]BGCIADi`@DBDPFBB@HCFEDGBYEQJADFJMFGBS@ADAB@FBBAHF@BD@DEHBHMAOGAAQ@ABCD@BBD@DAFNDNBDD@DEHUGBAOCA@AJADIACB[PcHCDGJKDOAIKEAEASBEACUACCAODC@AA@IAGG@AKCEKECIAACAW@AA@GQEI@SQA@SBKFGFMF@DEBWBaAiBK@ICOSUKYAQSKAEGEQGCyBGG¥@E@ACE[G@UDGAAAEQCBCD@PABI@EDKAUHCAGIOFI@OIMAIIC@E@ID[@GIGEK@QFO@Y@ICCBANGFCDMBM@GCCQECIHELGCG@MDUHWBGBCBA\\BBJFBFAhXj@FBFGDCP@JFGB@T@BAD@@BP@BJF@@FF@BELA@@DAFDD@B@FGHGLBAJ@AEP@JD@@BD@@DB@@DBB@DD@@FA@D\\HLAFD@@DB@@BH@@BDA@BFB@BGB@BE@BDC@B@@DDA@BD@@AA@A@F@@CH@AFA@@DF@@DF@@DBDAFK@E@@BA@AJBBBBA@ABD@AFC@DB@BB@@BAAADXHBEB@@FHB@CD@DFDBBA@FBBn^JDbNHHFLAHEFIDm\\KPKZAXBXFJBHMJv@WWBS^PH@JCPIHBHFBFANDBFAFMrH^KhCB@DDBNFNBDFBD@JOFMHAJBJFHHBFCJBDDBF@J@CDH@@BH@@BD@@JF@@FB@ANEA@FE@@FIBBBC@@BMAAHKA@JA@@FA@@FB@FFAHFBBDB@@JLABLFABL@F@XPbAdADYD_LCD@FBJGFG@DDBP@CH@@BH@@BD@BB@DE@@BBDF@@DD@ADC@@BVB@C\\BBEHB@FC@@FN@@DHB@DG@@DE@@DCB@BXDLGLDNCB@BFDADCD@DBDAB@AF@DJ@@@"],["@@IBABF@@BH@@EA@"],["@@B@@AGA@BCB@BJ@@A"]],"encodeOffsets":[[[116544,34700]],[[116557,34704]],[[116550,34700]]]},"properties":{"cp":[113.926405,33.575855],"name":"漯河","childNum":3}},{"id":"411200","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@YKCA@G@UEG_OACBGXQ`OrQ@C[KBEFE@A]AMCECAA@EJKHEHAR@FADADE@GAACC[McKM@OBQOKMMEQCQGMIKQACDKCSBCDAJ@FAJG\\ATATQTKPKBGCK@CRARB^LN@FC@CKICE@EBEDEPEFIJGZOJGDGACKAAA@CBGDERGFCDBDM@EC@EDQB@EBABGB@JBF@DADEGBCAEGMADE@IGQCCCAOBKA@GNMLGDG@CEI[GEECEBEHSBEAECEUBCCBCFE@CAEAEKGCECKN[ACOAAIEE[GIKKGAQKOACDMEEIAGDmdIBMECB]bGNEFGDODcA[DAA@ABK@GACCCEAOBGCIESOMQGEECUBG@CACCCQIA[HSEOGQEQGCCKQGEKA]@C@@ELMBGHUXW@CACC@QBGDMLSFcLqNUL_FCCAGACGAIBGLADO@ECCGSMOOC@MAGBGFEB_AMCSQEEIOKIkQKKƒ_gMGCSQQAKBMNEBWMIAgA[BGBCBCFEVIBKGe_@C@EFY@EACI@oLcLI@CCIWCQBIAC[UQCAKDSAACCcG]@QMCE@MII@MEO@CDEBAfCJGDCFUDIJKRMN[EWIICKBYCQBELKAIAGIWCAGAQBIAEC@EVMNMzUFADEBKHODCHAXBFAJQTODMDCNGJCF@TBBE@IBABAVNF@F@JCFEFMCOBEDEHEFAf@LEDCDC^@R]ACAAKCKIEMAKCIGGCM@eBENMFKDMBUCOHQCEIGMO_MGEGKQOEEEKCQAGAAWAIBCBALABC@E@MEOCE@SHM@EAOKCEEM@GPWBGAEMIACGBMCEEIDBFCFC@ACAMJGPEDCBCAQ@A\\KDENWhaBEAYB[EBIBUCCBKHC@K@IGIQMICCK[MUAWD[AEBQAGAEEIKGESCOACWEiFECGGM@A@@KBGLOLEHEBEBO@CEGIKSKAEBWU]GKI[CCSEKIMEACCACBSFKAGEGIGEEAYAWEQBWRCLIZOJEHYRKNIJEBGBSCGHOP}PG@MLOBOAKBip]JIHGLALEFIFEL@FLRALHHBFADIFIPGNAH@\\ADQHGRENAFQBCBGJBLCDCLOBQCIBMFICMB_TCRADIHKVABGBSBKBMBMNMDGLI@GAQKIAQFE@IEEFGBQDAFBP@NYFAHCHOJCFFXDDRFTHV@LBBDAFGLFJDBJBNLVJ^BHBDDLR@BGJAJ@H@DeFGDBRAZW\\AF@FEHGBEFBFFB@BIJCHIDGACEDE@EGC_@G@GACDDHBT@BKDCBPDCFFB@FIBJF@FCB@DDBDHBABABB@PCbEPBJFFFBPFRJJVHBJJBD@BEFADTNJLDJBJCDGLCBQFGJ[AG@OFQA@HFNAB]DMAIFK@ADEHBDALCJCDIBGDO@UFQGE@CBMLMJIHcFGF[FQBKDCD@BJP@BADMNANCDKFDXJFPARDJFDFJNJDBBDHFJBD@FDFRGF@X@DBBFAHFNAVEJSJEFAPAFEPGHANEJ@HDRBFABEBK@GEIGEAWFYJkXAD@DBHMHBDEDDBCD@FDHEFAFGD@FCF@JMJELEDAFCFBD@BC@BBCBABCB@BGBAD@JCFCP@DELBH@JFLFHHDBHDFH@TL\\JFB@DANIEWAUBKDGD@FHLHXJZzURCRBJFPN`dLDNBPA^MZOj[VKPCNDVHŠ`bH˜B‚EjAFBpzPLJLBJFDJDN@fIdYPMNIZBZNTFpBZL`h\\pJZ@`CTBFFHJBV@VINKX[DCJ@JD–tdR^L`J¬JHFDDJfNXNTLLNLJDH@HCTQJCXBRALAHEJKDCFAJ@RDFDTjFHLFF@NE\\QPEJDXNTHNBLFTPJBJADAFIJENCN@HATCHCDBHARFLLLHF@HARFFDBDFHBBXCDAZQH@LAJ@NFV@JBJLBHNBPNJFLBPDN@LAJC@EDCLEHBHHNHDD@DHFDHBLD\\DHXNN@FBDDHX@N@FFBFAJRLJNPPDNAH@\\PHF@FCHCH@NCHEHON@FDDFBdBPTD@P@NJHBFAnBBF@HLJPBXCLFHH@LFDF@VENBNJFNDRCZ@DFFLF˜LFDhMFBTPJBDARKJCLJFHDFJBfAPCNENO"],["@@AICBBHD@"]],"encodeOffsets":[[[114661,35912]],[[114721,35618]]]},"properties":{"cp":[111.194099,34.597338],"name":"三门峡","childNum":2}},{"id":"411300","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@ACABANDBFECG"],["@@CACCG@ACGAIBBDNJDFFBBFFDHCBCCE@ACE"],["@@CAI@CBCHPDB@@CFEAA"],["@@CAGKI@CDCNCBE@OIKHGBQEOJEC@CJI@AGEC@CBCFK@EKII@IEKACEGICMI@_AEECIAKDGHGDGBIAAA@CBGVEDE@EYBGCGLEAGDBKHMKCCCC@G@IDEACIIGGCBEBCHAFMDSECICEAEHATFZG@GCC@EFOBIECGOI]K[QMIICGDCAIKKC{gKCE@INKDWBCFCNMLWHUGUBMF]d[FCHBH`T@FCFMHKF]DKFEL@PCFIBSNKL[LmbEFGPCNCBKBIHGDE@KCaQ[@IEQO@GBKG[@MKGKDIAiCGJEXGNS@UCKEE@gVELKNEFWBIFEBEACEMEGAWAKKKUF_@KGKUEMDS\\KFM@‰FQC[YSCCJB\\CHKBSCs]]GaIgWGGIBGMBEIGICQBKBMJMFBLCRIASGKQY@OHMBIDAB@FADEBGBiAMD]XSDQJW@sFCBCFMFCDGCQLGBECACFGAGIOOMQLC@QEI@QECEE@EBOLIAEKEGUC[UAC@EDIHG@AA@KBQJ_LEDCHCF]LODCKACQDUDOCCACOKMYCOOAECKBQAAGBKNGC]NCHKFEHMHIDCBKBADKHK@CDENABODCDKDGFCJ@FCBC@QDUJWCCAE@QGOA@FD@BFF@BDADCBBDG@CB@BBB@JDD@BCCC@AB@DIDCCCAADEAEDG@GE@AC@@ADABEDAFAHD@CFBFCCIDCCAAAE@DJA@A@CEDEKE@ERDBDJEGKGCSJGHCFGBCDEJCLC@ACECSFKFGLKJKFQBGF@BBFJJ@FCDE@MBCDIDABAFFRBPGLCNICGAMFIEIAIMOGOMGCIBCAADCHEFUCCDBBC@@BHFBF_HCBAL@DGFAJCNILAHEFCJEBADCBQBSCaOaEQAQFQLUhOHWCa@mTe\\QLQDSJSPOZe\\OFQ@ULoPMCIGGKQEGLALDTCNMB_O]cMIgWIB[NojKNIfDNQTIVCDKHQHSPMFCDAJQL@DHDBJADIACBAHEBOAYBIDUP@BBDF@JCDELIBBD@ADEFAD@FH@BAHGFCJEFABBFJLN@FALBJJFDFAFILGJCDC@AC@GDEAACCGAGBIAACBE@AGGKAQDGCCBEFMFER@FMNDH@FGHGNCBETIPETINKDOHOFwHUJIJ[LE@KFEDAFDXCNBRIRKHGAECEEIMSOK@EH@RHRARM`BNDNPXRHLHLRI`SfWTMHCNFLAJEFIFQB“FK@aKOCIF@NFHNJXNZDVJBNEPKNOP@LFLAFULE@EFG@MFUNSP@PEH@BFF@FQIAFGDKBIFQZGFKDO@OCUKMMSSIAEHjnCTIPcPABCJIJMDGJCLCDKDQHW`LAHGDHKNORBDNFBBAH@BHDFJ@FAPDFL@HDANE@IFCLFJFBXBVJHL@FGJEJ@LHVATEJKJIRAJ@RIRCFObFHlVLfAXDXCZM`EHYPAFDLAH@FLTBDPMHCFATBPDR@NDHFHJHFLBTEDADBBDNFLJTFDDJ\\HLV^AXBFTLJLFH@DAPAFGFKFKPAH@LB@N@HHFDjERDHFDPFTLHFJBFBHARBFC\\BXNVL\\DDNJJRDDFDL@D@LGDAVDJAFANUFGFCJ@NBTGRCPQFCFAJ@FBNFHBH@PE\\BdHVBREZMXOVKZG`EPE^WV@XLRRPDPETKvBZGVE\\D^@ZGZKjqPSXQrTTDTAXKxUTIvQJAVGHKHYB[AM@ODIFCVE\\BNDR@XE^OVSFGHEJAR@bF~PdFtFHJJBABAHEDAAEGAAC@AHC@AAALFVTRNDNCZWPKNFPATGH@JH@LILEVOHGNAPDJVHPBZH`NVRV^FVJVRNTDTMBWLIbNZRRDxFHGJGF@fBRKNGTEHGDUDCNGRSFAH@VDL@FEFIDAL@RJBB`A`RJDN@LMHCRQJCVYJGFALATCZFHALWHIPKJMPIBA@GCKFAHIFARDNJDIBAL@FDNLRLZ^HDD@TCLGBA@MBEDEHCbCXPVFHABIFCHC`IJGP@XCD@DFJAN@JE^KFIHETBDABA@EBCJGD@D@FBXPTF^PDADEHCVDX@FBPNBHAH@FDRVFDDBFVGR@FBBDBJLA\\OJAJ@hDBGHKBEDGJCRKL@HBLKLCDABIFEJCBB@DFBpQHKAOH@LBBA@OBABCJAHG@IGSBGHIBW@IHE@CEGIGGICQ@SDQDIDCJ@PHbJT@\\ERBdMB@BSBABCPCLB\\PX@RDRCPGHIBIRSFIJCDIDEZMAOBMBCFAD@HFHQPDLCHKBAP@BAJOL@NDNALCJKDCF@pVH@rS\\ANCJCRAFADCHI@OGGCC@CBCHE@C@CCAMCQCECAEBGNWJSFO@QFW@KGGGCGEMg@SIUECG@GBDCHGXS@CBEGMAEFQKMBGHIJC@GAICKCIKEKCSQECECWCWEOMUGIBSFuBQFK@C@MKCAW@cWYLQ@ICGECMEGIEUCEACCACAMYUMU]MIKCEI]M[IaKSBCDAFCL@DMHCrEHDDPBBRIFIFGZEPGXAJBLCHCGQAG@KEO@AJGMOIC@CDCQIS]EAEAEECKAEDEBANCHGBGLEBAAEOWBCLGBCCKBGCEMOBEnqDI@MAAMIAA@IAI@ID@LFJAFC@ODEHGLAX@LEHMAIECAA@CJAJBPANENUDKACIKG@IRCHGBIDKJCJMHMDCASIGIAMGMGGMCEECKBCFGDIRADAAiGGCKHKBG@OACAA@CLIAGBAFAbBNBTJFDL^DDPAFBF@LCTFJG`IDAJODBLRD@F@LUXIHIJHJDLAPELNNV\\bJLHFFBFALGLADADCFIHARSJEJCPDD@BUBATHF@NC\\QR@PDHD@PX^F@PGNAPHPLNHJVDVLHPPFJBTD@HAFBBDADILXJ\\BBFE^BNKFCF@B@FJVDDD@FKDAHCPBNENLDAJMRGHGJBNCLFHBL@NI^MNSJIfO\\QHALHHALCDEDGDAJA@CKUBGDCVIBILKFKJEQEGEAGUIOiIIOCIKAE@CDGDELCBCKECEACAIIYBOFSBI@SCSECMGEBEHIGCUCAA@@JCFCBCCAYIWKOQKPI"]],"encodeOffsets":[[[113686,34275]],[[113699,33975]],[[115440,33134]],[[116448,33196]]]},"properties":{"cp":[112.240918,32.999082],"name":"南阳","childNum":4}},{"id":"411400","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@BGACBC@IASGOAQPW@CJE@UIEQQWABWECEMCCG@ACBEAEIKFIVSH]XKPKNELKJKBI@EOK@EHIXIVEH@`DNAPC^OJKFQRQZKLATKfK`MFEDGJ_EKOYBEBGPEBDHHbH@CLB@EB@@HJBBED@BD@@@CB@@CD@@DBGD@BCB@@D@CBB@BB@BA@@@BB@@ALF@CHDBCB@CPDFBADBA@DB@D@AB@@BBB@BPFH@DCGKNMBITDHFHHJFJJLJ\\LZ@lINEPA^EDAHELEBAFC@G@IEAAESUQEEIECQ@CCDGAGFGACECAGBK@EHIGEHGAIHEBGFCL@BOJI@GOIYGMKEG@EMaAU@IFQFCFC`CLEJIJOBKAGFI@BD@@AF@BCBA@AFB@CE@ACJK@GJGBIRKJYFG@GAGE@@ADACBBAAADAAAFAAAHAAI@AbWAEB@@CPAACD@@AF@AGPBDADEFAHUCEIIIKDQFEBMCGGGCI@MJ[@ICCKCO@_N]RUHIB]AE@CCGGAQCID@@ADAAE@CWBAKICAB@ACBAD@LGBACC@ACG@AKEGQFMAGOKBUHEGOIQBACG@COCCEAAC_ABE@IGWAWHWAECCCEKDGCEFIJKDEKCBGOKKBAAEU@AEEAMBECIBGEQBEDSCQECOKBKHCAAGKQGC_GOEQQCIMIcAGDM@mGGAGBGAICMGGGOKEAYAKBKNGPCH@FCHBHGFELEHqNIJCJENFF@DAFa@MCEBEF@FFH@DQF@B@FUJBHF@DFBF@BEBAJYB@BBJDDH@@GRCDD@LBLDPABOHABDHBPEBE@GBAFKNG@GC@NKFIBUB@VABCFUDOAI@IRBLHXDFH\\FHHZBJCJGJafURSJQAmDMFOCMBGDCFCRCJOHI@KG@OBcKBKAQBGAEBCDELBbADYPGHIFOPGLcFEHMFGHEBCCMGKASBUJMHEAOISGAEQGAB@FIDE@EAQBIAOMICEBKHIAEDELARAFGJOFM@KGKAQFO@K@MCKBMDyAC@@AHSFwAKCGKKKSECEAa@EACAICODM@GAUMUCAAEaAEAAc@KBUFiHOFQLUH[TKFMAQGCCGK[CEACCCKkBEBAHBFLV@FABK@aA[EIE@EB]@QCEKIKEMAG@kXIFGHECAEBEHCFIBG@CCCKIMMIEI@GIYCMBO@EDGNCB_HI@ICGIGM@ABM@GACA@eEcFQFK@EDCD@NDFHDBBDRLHBD@FGJBFFJHJ\\Z@DCFORADDHDBNBtCZFFFHPPRHJ@F@FCDWPIJEj@NJHFFAFCJ@HGH@B@DJJBFD`LNBJC\\UVCHAFBJJNDPEBG@OEC@WRIFKD[D]@MDEDCFENCNAFOBiLI@SEK@GBCDINAFCBCBKEIAGB_RQTCBC@O@Y@IDQBCDUTIJKDGBCBCZITKHCRBPFR`lBHCPINWXIR@FBNJXBRHHNJVFJFJBPHNLNRDDDLEVAJBFFTDfAJM`AL@LENCVOb@HHNBHG\\JP@FAFKJEF@FFLNHNDbBTHDF@FAHIJ]JSLGBaAKC[OG@GDCD@TALAFGDWFBFRLHJJJBHAFUFOBID@NMDCFDLFDHB`BRANDBNFBH@FCZSbMbS\\CHBFDFDLHPDFFHB\\@PFFADCFAJ@tXXDn@`@XEP@PBLJHLLLLFRDL@NIPMFALDJJR\\JF^HxGbHTJ^X@HALOVFDJJFDPBVEH@bPP@FAZOjMNMHCVCHGHANFP@^KDCAGDCFCDEEC@EFCVADEDMHIBKBOFSDE@EHQCMIMI[FIJIFIDK@KEU@SBGJSRQFU@ODALBHANGJOBODENQ^]LONGTG`E@CBAN@NHL@RCH@NBLBPAT@NFH@^GDAD@AB@BJGLENCFEREX@HCDBBFHDNP@L@hBJJBPANOLCV@L@RAZA^IRAVEFC@AFExSLTšJŠBŒTjBPHBbLX`Djk\\QdDxZfCbaNaTYLCFEHCTBdTZJRL"],"encodeOffsets":[[118985,35405]]},"properties":{"cp":[115.650497,34.337054],"name":"商丘","childNum":1}},{"id":"411500","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@@BB@@ADDEC"],["@@KLIFEA@CFOBIQGIJAH@DJPjTAc"],["@@@IDGB@HB@DED@DJ@FB@H@DCDBdHBBD@DADIFCNADKFKLAJ@FBLJTZNBFAHCHGBGAGQEAEBOR@J@BLBBFFJAHADE@CFK@EFAD@PCJKDSHQLRLLPJX@VBFDBDADE@IB@DBDVJHFGFANHFDDT@TAJETAPJZBJBDDFLFADKDCFCH@DBFJLPDJJPjVJBHHFRFFAFBBTANDFJDTCPDNIRDJHHBHC\\_FAHAjFJCHWLUJIPE@OEYPYDE@QLGBYPQFCH@PBJATBNDDFFAHARTfDJFLAJ@HD@VDLDDDBD@BEHE@SJKBG@GCIL]BALEHI@GEAI@A@@EDmDEFATBD@NGJ@H@TJ^TB@PC\\CJD@BATFN@NBD\\JVBDADADGBgFCHBHDD@@KAGQIAA@CBEFELAH@HBHDFNRBPHF@BCHMCCDCBKEE@GDCFB@AACBEDCJEBEFEAKN@HDJD@D@FRDD@AGGIGMBQDCB@DODQCE@EJKFARHL@DBDFFBPGPCL@LEDCDMDQ@UBMAIBCJAFEDAB@NEDCDOCGFKDCFAjBJAVOJIFADDHLFFJBHCPOD@D@FBVRNHF@VQHCFF@XBDFBH@XA^ETWLAHB\\THTDBXFNAMPBFFBXBDBDJNDLR@N@FBDDBZF@FEP@FBDDDXDLDJFDT[ZSNiXSHcFEFGLDJFHPFDJBJAHEDQJEFBNHV@DAFGF@VBFZLlANGF@dRXPLDPBNADAFEHMFC\\ATDDBDFBJERBFDDRJNDFABEF[FQBANA^NJ@DCDKZONARBJJBJCHMDADAFGLDNFHFFNHJ@RNBF@F@HCNKPABMAEBCTAP@JDHDDFBVGNBDD@JDFFDF@rATCFHFBNANILCTBBDHRJLBHCP@FLHF@H@LGHAL@lRJF~@vMJCZCjQTSFAD@VH^HHAHEBCAQBEZWJCPDXIHC@IEU@CFEL@TVXPLJDBHBZELIDKB@R@B@DGDAH@FFP@DCAEKGBCDAHBDJNHDHFBJAJFJCDCBCCCK@@CRKFCZLFDBDEFBBRABC@IFEHDBBBJD@FCBEEIIC@EHARCBAICIBIK@APOJCF@XFBDGL@BB@B@NE¶TFAAGB@D@DLNDHHH@FE@GBE@OCGCMDAFBFHFALCNDDE@EBADBDDD@DCBEAGACGA@CBCJCJEbOJ@FDHABCAIBCDAJBDA@AEGBCBAHB@CAEBCPIJSPeFKBKBCNCDAAKBALCJ@F@HELWDA\\AJAFACKIEGAKDCA@EBAFAPGDBj`LFZHD@DADKTOHKDAhZPXDBDA@CC]@EFCJ@FDJNF^LRDJANM\\DBjBFDDDADQP@HBJRLFARKLEbMLED@\\HJHJR@XBBDBDARQJMBGBKAGKQDAD@HF`b^TJND@VEJB@BCX@PBHBFJHLFTFDDpzHRFBJBbCJELKFAOCIFG@CAUUmYCA@C@QEKgSKMEIBCBANFZBPABMNEDKCK@UG@GCQOCCDCZ@JCBA@WA@AADGA@CBAABCAC@EJCJKAKBIFK@CHQFI@OAU@UBEAOBMLID[CKDQ@CMIAEBARCBADM@QHGLOAGCEGSC_@UNcHM@WDGLGFGP]GW@CDI@CGcGQ@MAEECCCLiVMBEGQCEYKAABAEKF@ACAADCAAFEAABC@AC@BCC@@AE@BCC@@CACHE@ABCB@@DFAACBACCBA@AHCCABCCBAIFCAED@BAD@@CA@BAEGGDEACGACDG@CCKIII]EEAQBGPMAIBEDEDIEUM]MWKE@ABMEIAEBCA_AMAC@IBAFCNAFGNKBO@GCGAMAICAKBICCEGEEIEEQCQDUEEFCLAHC@KGCIGGC@EHC@IKGCMOIDEFADBB@FICODOPE@OFQHIIO@MAKBAACKK@ACBGEABCJA@CAAK@UFEBKHGAGCE@EBIFCJC@MDE@EC]__EOEIMYSUIOCMMQGAIEGMCSAOMAGEGI@SFMBQIEEIOeQAACKEIIC@SCCMG@ABEHGR[@IEMEEEASCQKGE]IIGCQIGIS@EHIEIAKKYIOSMUIGIGEWGKO@GFIAGFQBGZg@CECCG@SAM@KQSCIMAMEMC_HA@GIIO[OMAKDMVQHGBGAICOOCAEASJ@DRXBH@FORQDOFEBQCGBGTGHCLBRHNDBBJ@HAVIP@FLRBF@FAPBDJNHTFJALBHJNABCBMCUAEBADCJADA@KAQBADBHADIBONCL@\\CDCBQF_A[CSEAEHUAMYKOIEGAG@GBCFAHAIM@E@CDELIBCOOICQC@CBCJACGACCBEACBAAG@ABE@AB[@CFACOFEACD@DA@MAGBOJ@LABK@AAEMQ]AAOEAEROBCACOEAMCICCGBGJGBEDEJAPADCBGBG@GAIIKEIGMGCEAIACEBSREBI@EEEA_ESIC@OBAPKBeECCOWCCECM@EPEHURODKASBMHAFDH@DQNAD@XJJ@DO@QDIHQEOHUIOECBABAJEDUEGAGBAF@HJRAJCBSES@G@GFU\\EDALEHEDK@@HCH]FICKDIMEAGAO@C@CQIMWACA@GAAYNADKlAVEVAH@JAVFDDL@DGRJJFL\\JH€DBPANT@BADABOBCF@DFDEP@JDFFHEN@HDNHJBBCNCDKBIEA@CJKESHG@CEDMAIMADKCCKEIACBETGNERABO@EAAEIUBELI@ECCcIC@QJMBGCGIGCEBIHC@A@AQEAIBGBMJC@EGG@EDCLAFYJG@GGEAEAIBWF_LIHEB]A[BMGSFMEG@CDCJEHSRGJCNMHET[\\@FADMPGJALBJ@HC@AAKOCAI@GFQNOFOLYFSAECGI@IMCM@OHG@G@KKAC@M@EIMASACAAC@IBIEWUAIIGAEaFMACCAKACECG@MBG@EAEEC@ODYAKGaWCEEAE@MFGHEL@RGL@HADCDOFEDCFAHDTANINAF@FJPJLBF@REHk\\@D@BDH@B@DGDGAMAKCOQUgCCC@MAOGCAEAMJIGE@GDONIDGJ@FBTEFEDAJH\\CJDR@HCLADCBMBOFGHGBEFDdJRHHBF@DABG@QJIDS@WNMCGFGHEBCF@HDNBFNPFLDBH@FBJPJHDFBDCHCHKJ_JCDa^ENMDSJ@bKrBBJAREFQF@PHTVJNBHCpZfNLCVEF@LADABCAOGCBKLMLAHE^EHGFABCZBDTFDBARAFRH"]],"encodeOffsets":[[[118283,33248]],[[116499,33059]],[[116489,33052]]]},"properties":{"cp":[114.875031,32.003274],"name":"信阳","childNum":3}},{"id":"411600","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@NAJCZ@P@D@DARS`QHAJBLFDADABEJMDCHAL@TFJ@jKPABEDMFMDEFCNC^@\\CLCJEXQD@PFH@FACOIMAIBEDGVUD[AIKMC_AEII@C@AHG@GDIBEEEIG@MFiJIXODC@E@EGIOQGOEEYEsDMACACGBCPQDE@C[YGIEIAEHI@EACKGCQAAGCCE@MFEPAREdEfFB@BD@HAN@BHNHJJDJ@`GDAHMFCP@NAZDHJJ@JFNNLJDD@DAHEJGDAFBFFDHGJElWH@NBLFLJDF@RA^@FJF\\FbBL@BA@EKUAEBGFAlADLDDFB\\DHLDDRHNBLE\\SVGRKPEjGVELAd@BBBFFbBBVDVNHBN@PCJDDBFBb@FBFDLTLLDHBLExGV~BNCLANDL@P@RELBLHN@PEHIBEBQFKFC@MKMDSOG]@KECBADGBMEKIAEFEFKAE[CI[EAAABINECECMQEC]DOAAKAEEBYIECECO@CBAA@BAAAAB@AJEHCAEACO@CACCAEJE@EACEEKDC@CWBEVBB@BIJ@PJPBJEFGHC\\CLJN@DHBBDCB@DEH@HG@CCAFYDEBMAASIA[OCCCBCNICCAGBSEQCMEI_LODOJC@ICAECCMAEQNM@GFMJGLELQLKDKHMBEKS@KHKDABEHEOAAI@GBEFKAWR]PUPO^‘mEaG‰CAQAEGEC@KHQ@MEM@KGIACAIGEBIJCJABMCQGUCCBCBIPC@G@IIC@M@oIKKEYCCGAACBIACIEHMEOKMCB@FABGDAE@B@@@FSLM@@HKHAC@@GIUOGICCBEB@@ABA@KFAAEA@AGEB@CA@@CJC@OCM@[AAUCKNIFCGDCAEIAEB@CFC@C@GEO@KBI@CNQJKBGACCEMMMU@EBCDCtBFCJmAOHCTBDABAKs@EDEBG@ACCK@IDKBICACCBC[FCHUBQACKIIK@GDSACCCGIMECE@E@AVE@A@EECOACCYCEEC@AGCOD@@CDA@CEM@GDIHMCQDA@CFACOAACAEFE@AOAEE@GF[FEICAI@SHG@A@GMCCEAY@GCOMEGAFGDGBGDCA_MMKEIAG@MAGAA[EaAc@OAaBQD_BMEGACBCPABE@OICAeHYP[DIDAB@FB`IBGFCHCBM@ED@B@FAJEBBBCBDA@HEDGCAD@BsH@EDACGCCC@CIaEEEIG@E@ADADI@EEUKQAG@YSCYAUCK@@QEWCCI@KBQJKBS@WEG@CBCNEHG@]AIDCD@b@BGDCJCRGD]ACNOBCNUJAF@LEDBLAFEDQB@F@LAHOBCBEJEDOBbvBXBBLLXNDPHLBRJLDV@LEVDJ@FAHMLAHBDSBM@SEMCGBCDADBLDF@FIBIAA@CECAE@ABADDDDJABKDCDADAPAFKNCBGBIAOEOAODCBOTEHEDYFEFARCBOBCD@DFJBF@DKLBVCFMRAJQHE@CEC@K@GDWME@…C@JDZAFQLEBGAMKEACBCD@H@TEDMHCHCBMBkGUAEAEEQCU@EAIKGCCBCLCDEAMEE@ED@JAF_PKJePIBGG]KAXEHAF@FHPEP@FRTDH@NFXBTADABUDCDCR[p@DBFNDLFBB@XAHADSPCDAHAhENAb@DOTCFBNCJMEYGUAIKSDOCSQAGBG@AECI@KMG@GHEDIEIIAKDECEC@W@YDG@IAAFFbCFAN@HI@OCI@AP@JIVATDH@LDDPJDFDJ@JEH@NA@GBCDBLZ@lFJ@JCCH@ZCHEFCFD\\@DL@JFJ@HC@CDGFEDABDJ@FDFCB@DD@FB@DA@KNBFDNCDEB@HFB@LILIHAXANFF@DADQDAFCnGRGHALDLJ\\JFL@ZFNBDLHDD@FCF@HDFAJOB@HA@C@@BCHS@@B@RVBBD@DADFBAFDFILLRADG@IJCHC†ExFNNBBFGR@LFBDFCXDPADCD[DCBCJKfG^CHEDI@ADARO„BDPFDDBJDFLJFJFR@P[–BZFd@LIVINGFUJ\\`H^HHFBJBJ@VQv@HAXWHGXG^E^ALBLFR@HHHVBDFB\\BNFLJJTPNAHKFMFWDGDCBAHHHDJDXFNDBpMjCDAFEJQFGFC\\@D@FHHALM@ODENQXEZQVA`FNAFAXOLK\\CRFPOJGd@F@LGFCv@RCJEHEHQDCFAB@VJXHJFBDHZDDHFRH\\FzFDBFBLTFHDBLAJAnSxKDBDHF^"],"encodeOffsets":[[117660,35108]]},"properties":{"cp":[114.949653,33.620357],"name":"周口","childNum":1}},{"id":"411700","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@^LHHJAfOLI`OBE@IFCF@NFFBDCDKDAHDJLFBV@RDFFFBVBlHNADADGNGFC@S@GDCDAFBNLHBFARKBECY@I†DF@XNHCL@D@DFF@RGBINQDEAULK@CAEEI@CDCPADABQFEZEFCFGPSDAPCPBPFJBHADALMBEBOBCDCLCBACICCBCBAF@DBDFB@JBJA@ECEAKBCDCHANDTFN@TAACBGNKBG@ECIFU@KCUIKAQGKCOWMKKAAAWauPAFCFIDAPABG@K@ERAFCBEAKFC@KBEVIDMPADM^BHCDQDIHC@A@aDCJC^BH@FGDMDAH@XFT@LARIFAJ@F@DDFX@RL@VDZBNBFB@LRBFEJCFGBIBABGEIACACPW@QBGDABAFABCHAFGGAEACGC@AEA@QAoHAERUDI@AaOCC@MFIHIHAJCd@LUDCNCJGL]DEDAL@RLD@bBf@XApSLQ@ECCUGAEDCFAbANA\\CdBVOFAFAHBJFLDrCFEBCCK@EHELAFEBEAOBCHENETEH@VDHADADCFOBGCAU@AA@KNK@CGKCK@IJKDCTIDEHKAEI@QBOHIAECAKBEBCHEDABI@ECEKgEEAOBKHEBEAOEKAIHMAE@EGI@AJABCBCCWFAFDH@FDBDAFKJCDBDF@TKHG@WCK@CLBDB@HD@LAEKCAKC@ABOJ@@CKEGDCDBHADKACE@UDAFFDABA@MCEAETK@A@AICAEEDE@GEA@AA@AQDO@OKWOSUK@EF@DFV@JGDWJOCIDYXAFBRADGFGB]GUGC@EBSTiRYDIDuNy@yWK@GBKHEBGAKG@EDKAKIKGQACEAM@KDIHKBI@GGSDqBE@ECCE@IACEAI@OHG@GECGBYBMBEBAD@HBF@BALODM@G@EAEQMI@MGEEEGCMHKBEBCNCDGAIIIQAMBYPCLCDI@]MMBABERE\\AFEBMCQICCAEFQAICECASC[BEDGNEFCBMBOAKCWOcQE@MHkBYMAYHEBE@CGUAMFERIFCBGAICIOEEGCIHKFEdETGjWTMZUBEAE@ICESEWCCCAC@EFO@EYECAAC@E@MKQMCCICAWAEAAENOMBWECAGSQMMGKBC@SX]FWBG@EAAC@WEEGDURE@MGUQEAC@C@OPGDIAEEGKCCEBIJUPIBiAEBCDELDHCPCDMFA@CBEFIBADBJAN@VCRCNCDKFK@ODOHEACECAK@QGEBIL@FDFCRCPA@CDARHNHJBHC@QC@E@CICGCM@BLEFAFIFCDAFBD@BEACD@HFFALCDDDGNADE@OGQAEMGCGAG@KBEFAF@DBBRJBH@LC@GCGAEDAhCHCBCBUA[IAC@MEMBS@AIC[DODA@]SSIG@I@MHC@SAEBCFCn@FB@J@FB@HGJKFABK^DJ@HAHIL@TGFAFC@CACCCK@UGCI@KBIEeCQSGBEBCEMCSAIBOAG@EDORAZKH@RCFOZFZ@POFIJKVEVCDGBiEGBEB[`GDGAIGQCMJOCSDICCE@_ACIBIFELKLAJUJCDAHLVBBCDG@CBCHCFSFKGGB[RePIJMT]NMJK@GAKEMDIAGHQHINCBMKMFOAGDCBELC@CCIU@E@ADELEAMF]AE[AWIJKBCACEAGBC@ASEIOOKGCUIUMGOKOGMBOHE@W]@OGCOCMAGDWPMDE@SGABAVC@OCIDIFQTGBEJCDCBKBKHEBEAGEIK[aMUKMOFKBICIGGJWJKVE@C@KQCAIPCB_JIHSEKDE@EAOBCCK]ECSIMAaAEBABBHKJ@DBBBD@PAHGLDLHHBjCBQBCJEHADDLFFNDHHHNBNHJTJDBNCNGDILIJCHADGJQH@JLBDCLMVMFOBIAIB@DBBFDBJGNKFW@KBGHCF@PEDIBKEC@@JBJ@JBBNJBB@NCJmrAFNPDFAHDLADKHADPXBFABKFAHGHMDABCFBFDLFFFBFBT^RJCD@DJDNPIH@BFP@LBHHRGDKDIAWBOHYFEHEJQJAACOGCqFGDCNK@IFADLTJbN\\J^NR^NNVZVBNFH\\FDBJHHTPHR@ZKdXX@DBNLD@L@REvATEJAVHPNXFXDLHTRLDLFDJFV@HHTBLDFDF`NJB\\ARFRBFAPEFALBZCRDPAB@HFNHH@RQTARSNGDBNTBF@NDD\\IZ@NBHDDHFC\\[BAHBLFRTJTRX@FGDS@MACDK\\MTCPIjLnL|HRHVXTDF@bDL@FEH@DJHDJPNdHJFHPBFFJNpDD\\CH@F\\BDNBžAHHzAHDFRFHLBRTZBVLPTJDL@jAbBXAFA@CNEHELETAB@TRJ@PFB@@HBBX@DBBBDJLFDFBLH@BH@JBBD@PCDBBDDVFBTAFBFBJLHBH@HADAHIDCdG\\ODAJBBCBIB@PDABVHFG@CCCMAMCBE@CAC@ADCBAR@BBPHNBAGFG@CACE@BGAA@EBABCT@HANEEIBCRIZFHAFCDE@GAAOEAC@Cj_BCDJAHF^BB^J\\ELBbPHBX@HBdV"],"encodeOffsets":[[117028,34276]]},"properties":{"cp":[114.124736,32.880169],"name":"驻马店","childNum":1}},{"id":"419001","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@DFJFJLJDD@BAAQDOD@HXDBF@HABCF[JADCRGDET@BE@GXQFAR@BEIIAON]F@FTJTLFHBL@RIFAJADBH@AC@INKDGBIESC_DC@CA[FECSBIDS@EAEEESK@WGKCMCKCEOIAaOQIEUEYKUMEGM_CEKGGCWDEECIIEiAUDECIIKAGAWBI@U[IQECGCEKEAOAUMC@EBQPCBKEIFA@GKCQCAAE@AJBRCB@JRHBL@DAHQJCBCEG@CBCBCA@MJC@CADEPIAKFACC]AIFQFQEC@EDEJGDeR[JiFU@UEi@CBGJ_LSBKH[JKD[AUDQFOJWTC@MCKIQWICKBIF_Z]RgHIHSfQVGJUN{NWJKFIBECMDMBMCgAC@OFC@GEC@KFADABHP@HNBHEHBRXBHAPBP@FMVAHBJVŽ@DI@CFBDJJ@LELUdUZAH@HDFLHVDRPVJFD@FCHBVAHQhEFYL@DFFBHPCRAXFNAVGVC@CIA@ADCBADADABBLDVHnI`CdOTC\\@FAHMACEE@CDALAdENFXFlBFDRRDBJ@FCCKUgCECEBEB@J@ZHH@TCTDJCL@dDRARH^^JFL@VEXA„WDBJHH@HALELEJJDBJENCVMD@HDRDTBF@RKTIRABNBBJDR@hD`EfLDDGVWDIDADAN"],"encodeOffsets":[[115320,36098]]},"properties":{"cp":[112.390047,35.090378],"name":"济源","childNum":1}}],"UTF8Encoding":true}
\ No newline at end of file
// 清除元素默认的内外边距
* {
margin: 0;
padding: 0;
box-sizing: border-box;
list-style-type: none;
outline: none;
}
html {
margin: 0;
padding: 0;
}
body {
font-family: 'YouYuan';
background-color: black;
margin: 0;
padding: 0;
}
// 让所有斜体不倾斜
em,i {
font-style: normal;
}
// 去掉列表前面的小点
li {
list-style: none;
}
// 图片没有边框 去掉图片dice的空白缝隙
img {
border: 0; //ie6
vertical-align: middle;
}
// button 按钮变小手
buttom {
cursor: pointer
}
// 取消a标签连接下划线
a {
color: #343440;
text-decoration: none;
}
a:hover {
color:#343440;
}
//浮动
.float-r {
float: right;
}
//浮动
.float-l {
float: left;
}
// 字体加粗
.font-bold {
font-weight: bold;
}
//文章一行显示,多余省略号显示
.title-item {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
// 方块背景颜色
.bg-color-black {
background-color: rgba(19, 25, 47, 0.6);
}
// 常用颜色
.colorBlack {
color: black !important;
}
.colorGrass {
color: #33cea0 !important;
&:hover {
color: lightsalmon !important;
}
}
.colorRed {
color: red !important;
&:hover {
color: lightsalmon !important;
}
}
.colorYellow {
color: yellow !important;
&:hover {
color: lightsalmon !important;
}
}
.colorLightBlue {
color: turquoise !important;
&:hover {
color: lightsalmon !important;
}
}
.colorPink {
color: pink !important;
&:hover {
color: lightsalmon !important;
}
}
.colorText {
color: white !important;
// &:hover {
// color: lightsalmon !important;
// }
}
.colorBlue {
color: blue !important;
&:hover {
color: lightsalmon !important;
}
}
.colorTomato {
color: tomato !important;
&:hover {
color: lightsalmon !important;
}
}
.colorDeepskyblue {
color: deepskyblue !important;
&:hover {
color: lightsalmon !important;
}
}
.colorDarkturquoise {
color: darkturquoise !important;
&:hover {
color: lightsalmon !important;
}
}
.colorLightsalmon {
color: lightsalmon !important;
&:hover {
color: deepskyblue !important;
}
}
.colorGold {
color: gold !important;
&:hover {
color: lightsalmon !important;
}
}
.colorLightsteelblue {
color: lightsteelblue !important;
&:hover {
color: lightsalmon !important;
}
}
.colorSienna {
color: sienna !important;
&:hover {
color: lightsalmon !important;
}
}
.colorDarkorchid{
color: darkorchid !important;
&:hover {
color: lightsalmon !important;
}
}
.colorLightpink {
color: lightpink !important;
&:hover {
color: lightsalmon !important;
}
}
.colorHotpink {
color: hotpink !important;
&:hover {
color: lightsalmon !important;
}
}
// 模板样式结束
// 设置默认背景图片
#index {
color: darkturquoise;
width: 100%;
height: 100%;
// 图片缩放自适应
background: url("../images/bg.png") center center no-repeat;
//background: url("../bgPage.jpg") center center no-repeat;
background-size: 100% 100%;
position: fixed;
overflow: hidden;
}
// 最小只支持1000px * 600px,太小了margin-bottom和padding-bottom属性比例不够协调。
.koi-body-png {
// 头部布局
.header {
position : relative;
top : 0.5vw;
width : 100%;
background : url("@/assets/images/title.png") no-repeat;
background-size: 100%;
text-align : center;
margin : 0;
}
// 标题自定义修改
.title {
position: absolute;
left: 46%;
margin-top: 0.4%;
}
// 当前时间css
.localTime {
position: absolute;
right: 1%;
top: 35%;
}
// 子节点首页字体css
.koiPage {
position: absolute;
left: 1%;
top: 35%;
}
// 跳转大屏页面选择框
.selectPage {
position: absolute;
left: 0.4%;
top: 35%;
}
// 轮播图标
.skipPage {
position: absolute;
right: 17%;
top: 2.2%;
}
/* 本项目采用ElementPlus - Layout布局 */
.layoutHome {
position: absolute;
min-width: 1000px;
min-height: 600px;
top: 8%;
width: 100%;
height: 100%;
}
}
// 总体布局
.koi-body {
// 头部布局
.header {
// DataV边框10宽度左侧和高度设置
.dv-dec-10-left {
width: 25%;
margin-top: 0.5%;
margin-left: 0.2%;
height: 8px;
float: left;
}
// DataV边框10宽度右侧和高度设置
.dv-dec-10-right {
width: 25%;
margin-top: 0.5%;
margin-left: 0.2%;
height: 8px;
float: right;
// 边框翻转
transform: rotateY(180deg);
}
// DataV边框8左侧宽度和高度设置
.dv-dec-8-left {
width: 18%;
height: 6%;
margin-top: 0.7%;
position: absolute;
left: 25%;
}
// DataV边框8宽度右侧和高度设置
.dv-dec-8-right {
width: 18%;
height: 6%;
margin-top: 0.7%;
position: absolute;
right: 25%;
}
// 标题自定义修改
.title {
position: absolute;
left: 43.5%;
margin-top: 0.8%;
}
// 当前时间css
.localTime {
position: absolute;
right: 1%;
top: 2%;
}
// 首页Gitee字体css
.homePage {
position: absolute;
left: 18%;
top: 2.4%;
}
// 子节点首页字体css
.koiPage {
position: absolute;
left: 1%;
top: 2.2%;
}
// 跳转大屏页面选择框
.selectPage {
position: absolute;
left: 0.4%;
top: 2.2%;
}
// 轮播图标
.skipPage {
position: absolute;
right: 17%;
top: 2.2%;
}
}
/* 本项目采用ElementPlus - Layout布局 */
.layoutHome {
position: absolute;
min-width: 1000px;
min-height: 600px;
top: 5.5%;
width: 100%;
height: 100%;
}
}
(function (root, factory) {
if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module.
define(['exports', 'echarts'], factory);
} else if (typeof exports === 'object' && typeof exports.nodeName !== 'string') {
// CommonJS
factory(exports, require('echarts'));
} else {
// Browser globals
factory({}, root.echarts);
}
// this 改为 window
}(window, function (exports, echarts) {
var log = function (msg) {
if (typeof console !== 'undefined') {
console && console.error && console.error(msg);
}
};
if (!echarts) {
log('ECharts is not Loaded');
return;
}
echarts.registerTheme('shine', {
"color": [
"#2d8cf0",
"#19be6b",
"#ff9900",
"#E46CBB",
"#9A66E4",
"#ed3f14",
"lightsteelblue",
"hotpink",
"sienna"
],
"backgroundColor": "rgba(0,0,0,0)",
"textStyle": {},
"title": {
"textStyle": {
"color": "turquoise"
},
"subtextStyle": {
"color": "deepskyblue"
}
},
"line": {
"itemStyle": {
"normal": {
"borderWidth": "2"
}
},
"lineStyle": {
"normal": {
"width": "2"
}
},
"symbolSize": "6",
"symbol": "emptyCircle",
"smooth": true
},
"radar": {
"itemStyle": {
"normal": {
"borderWidth": "2"
}
},
"lineStyle": {
"normal": {
"width": "2"
}
},
"symbolSize": "6",
"symbol": "emptyCircle",
"smooth": true
},
"bar": {
"itemStyle": {
"normal": {
"barBorderWidth": 0,
"barBorderColor": "#ccc"
},
"emphasis": {
"barBorderWidth": 0,
"barBorderColor": "#ccc"
}
}
},
"pie": {
"itemStyle": {
"normal": {
"borderWidth": 0,
"borderColor": "#ccc"
},
"emphasis": {
"borderWidth": 0,
"borderColor": "#ccc"
}
}
},
"scatter": {
"itemStyle": {
"normal": {
"borderWidth": 0,
"borderColor": "#ccc"
},
"emphasis": {
"borderWidth": 0,
"borderColor": "#ccc"
}
}
},
"boxplot": {
"itemStyle": {
"normal": {
"borderWidth": 0,
"borderColor": "#ccc"
},
"emphasis": {
"borderWidth": 0,
"borderColor": "#ccc"
}
}
},
"parallel": {
"itemStyle": {
"normal": {
"borderWidth": 0,
"borderColor": "#ccc"
},
"emphasis": {
"borderWidth": 0,
"borderColor": "#ccc"
}
}
},
"sankey": {
"itemStyle": {
"normal": {
"borderWidth": 0,
"borderColor": "#ccc"
},
"emphasis": {
"borderWidth": 0,
"borderColor": "#ccc"
}
}
},
"funnel": {
"itemStyle": {
"normal": {
"borderWidth": 0,
"borderColor": "#ccc"
},
"emphasis": {
"borderWidth": 0,
"borderColor": "#ccc"
}
}
},
"gauge": {
"itemStyle": {
"normal": {
"borderWidth": 0,
"borderColor": "#ccc"
},
"emphasis": {
"borderWidth": 0,
"borderColor": "#ccc"
}
}
},
"candlestick": {
"itemStyle": {
"normal": {
"color": "#edafda",
"color0": "transparent",
"borderColor": "#d680bc",
"borderColor0": "#8fd3e8",
"borderWidth": "2"
}
}
},
"graph": {
"itemStyle": {
"normal": {
"borderWidth": 0,
"borderColor": "#ccc"
}
},
"lineStyle": {
"normal": {
"width": 1,
"color": "#aaa"
}
},
"symbolSize": "6",
"symbol": "emptyCircle",
"smooth": true,
"color": [
"#2d8cf0",
"#19be6b",
"#f5ae4a",
"#9189d5",
"#56cae2",
"#cbb0e3"
],
"label": {
"normal": {
"textStyle": {
"color": "#eee"
}
}
}
},
"map": {
"itemStyle": {
"normal": {
"areaColor": "#f3f3f3",
"borderColor": "#516b91",
"borderWidth": 0.5
},
"emphasis": {
"areaColor": "rgba(165,231,240,1)",
"borderColor": "#516b91",
"borderWidth": 1
}
},
"label": {
"normal": {
"textStyle": {
"color": "#000"
}
},
"emphasis": {
"textStyle": {
"color": "rgb(81,107,145)"
}
}
}
},
"geo": {
"itemStyle": {
"normal": {
"areaColor": "#f3f3f3",
"borderColor": "#516b91",
"borderWidth": 0.5
},
"emphasis": {
"areaColor": "rgba(165,231,240,1)",
"borderColor": "#516b91",
"borderWidth": 1
}
},
"label": {
"normal": {
"textStyle": {
"color": "#000"
}
},
"emphasis": {
"textStyle": {
"color": "rgb(81,107,145)"
}
}
}
},
"categoryAxis": {
"axisLine": {
"show": true,
"lineStyle": {
"color": "#cccccc"
}
},
"axisTick": {
"show": false,
"lineStyle": {
"color": "#333"
}
},
"axisLabel": {
"show": true,
"textStyle": {
"color": "#fff"
}
},
"splitLine": {
"show": false,
"lineStyle": {
"color": [
"#eeeeee"
]
}
},
"splitArea": {
"show": false,
"areaStyle": {
"color": [
"rgba(250,250,250,0.05)",
"rgba(200,200,200,0.02)"
]
}
}
},
"valueAxis": {
"axisLine": {
"show": true,
"lineStyle": {
"color": "#cccccc"
}
},
"axisTick": {
"show": false,
"lineStyle": {
"color": "#333"
}
},
"axisLabel": {
"show": true,
"textStyle": {
"color": "#fff"
}
},
"splitLine": {
"show": false,
"lineStyle": {
"color": [
"#eeeeee"
]
}
},
"splitArea": {
"show": false,
"areaStyle": {
"color": [
"rgba(250,250,250,0.05)",
"rgba(200,200,200,0.02)"
]
}
}
},
"logAxis": {
"axisLine": {
"show": true,
"lineStyle": {
"color": "#cccccc"
}
},
"axisTick": {
"show": false,
"lineStyle": {
"color": "#333"
}
},
"axisLabel": {
"show": true,
"textStyle": {
"color": "#999999"
}
},
"splitLine": {
"show": true,
"lineStyle": {
"color": [
"#eeeeee"
]
}
},
"splitArea": {
"show": false,
"areaStyle": {
"color": [
"rgba(250,250,250,0.05)",
"rgba(200,200,200,0.02)"
]
}
}
},
"timeAxis": {
"axisLine": {
"show": true,
"lineStyle": {
"color": "#cccccc"
}
},
"axisTick": {
"show": false,
"lineStyle": {
"color": "#333"
}
},
"axisLabel": {
"show": true,
"textStyle": {
"color": "#999999"
}
},
"splitLine": {
"show": true,
"lineStyle": {
"color": [
"#eeeeee"
]
}
},
"splitArea": {
"show": false,
"areaStyle": {
"color": [
"rgba(250,250,250,0.05)",
"rgba(200,200,200,0.02)"
]
}
}
},
"toolbox": {
"iconStyle": {
"normal": {
"borderColor": "#999"
},
"emphasis": {
"borderColor": "#666"
}
}
},
"legend": {
"textStyle": {
"color": "#fff"
}
},
"tooltip": {
"trigger": "axis",
"backgroundColor": "rgba(19, 25, 47, 0.6)", //设置背景图片 rgba格式
"borderWidth": "1", //边框宽度设置1
"borderColor": "deepskyblue", //设置边框颜色
"textStyle": {
"color": "white" //设置文字颜色
},
"axisPointer": {
"lineStyle": {
"color": "#ccc",
"width": 1
},
"crossStyle": {
"color": "#ccc",
"width": 1
}
}
},
"timeline": {
"lineStyle": {
"color": "#8fd3e8",
"width": 1
},
"itemStyle": {
"normal": {
"color": "#8fd3e8",
"borderWidth": 1
},
"emphasis": {
"color": "#8fd3e8"
}
},
"controlStyle": {
"normal": {
"color": "#8fd3e8",
"borderColor": "#8fd3e8",
"borderWidth": 0.5
},
"emphasis": {
"color": "#8fd3e8",
"borderColor": "#8fd3e8",
"borderWidth": 0.5
}
},
"checkpointStyle": {
"color": "#8fd3e8",
"borderColor": "rgba(138,124,168,0.37)"
},
"label": {
"normal": {
"textStyle": {
"color": "#8fd3e8"
}
},
"emphasis": {
"textStyle": {
"color": "#8fd3e8"
}
}
}
},
"visualMap": {
"color": [
"#516b91",
"#59c4e6",
"#a5e7f0"
]
},
"dataZoom": {
"backgroundColor": "rgba(0,0,0,0)",
"dataBackgroundColor": "rgba(255,255,255,0.3)",
"fillerColor": "rgba(167,183,204,0.4)",
"handleColor": "#a7b7cc",
"handleSize": "100%",
"textStyle": {
"color": "#333"
}
},
"markPoint": {
"label": {
"normal": {
"textStyle": {
"color": "#eee"
}
},
"emphasis": {
"textStyle": {
"color": "#eee"
}
}
}
}
});
}));
const theme = {
color: ['#2d8cf0', '#19be6b', '#ff9900', '#E46CBB', '#9A66E4', '#ed3f14'],
backgroundColor: 'rgba(0,0,0,0)',
textStyle: {},
title: {
textStyle: {
color: 'turquoise'
},
subtextStyle: {
color: 'deepskyblue'
}
},
line: {
itemStyle: {
normal: {
borderWidth: '2'
}
},
lineStyle: {
normal: {
width: '2'
}
},
symbolSize: '6',
symbol: 'emptyCircle',
smooth: true
},
radar: {
itemStyle: {
normal: {
borderWidth: '2'
}
},
lineStyle: {
normal: {
width: '2'
}
},
symbolSize: '6',
symbol: 'emptyCircle',
smooth: true
},
bar: {
itemStyle: {
normal: {
barBorderWidth: 0,
barBorderColor: '#ccc'
},
emphasis: {
barBorderWidth: 0,
barBorderColor: '#ccc'
}
}
},
pie: {
itemStyle: {
normal: {
borderWidth: 0,
borderColor: '#ccc'
},
emphasis: {
borderWidth: 0,
borderColor: '#ccc'
}
}
},
scatter: {
itemStyle: {
normal: {
borderWidth: 0,
borderColor: '#ccc'
},
emphasis: {
borderWidth: 0,
borderColor: '#ccc'
}
}
},
boxplot: {
itemStyle: {
normal: {
borderWidth: 0,
borderColor: '#ccc'
},
emphasis: {
borderWidth: 0,
borderColor: '#ccc'
}
}
},
parallel: {
itemStyle: {
normal: {
borderWidth: 0,
borderColor: '#ccc'
},
emphasis: {
borderWidth: 0,
borderColor: '#ccc'
}
}
},
sankey: {
itemStyle: {
normal: {
borderWidth: 0,
borderColor: '#ccc'
},
emphasis: {
borderWidth: 0,
borderColor: '#ccc'
}
}
},
funnel: {
itemStyle: {
normal: {
borderWidth: 0,
borderColor: '#ccc'
},
emphasis: {
borderWidth: 0,
borderColor: '#ccc'
}
}
},
gauge: {
itemStyle: {
normal: {
borderWidth: 0,
borderColor: '#ccc'
},
emphasis: {
borderWidth: 0,
borderColor: '#ccc'
}
}
},
candlestick: {
itemStyle: {
normal: {
color: '#edafda',
color0: 'transparent',
borderColor: '#d680bc',
borderColor0: '#8fd3e8',
borderWidth: '2'
}
}
},
graph: {
itemStyle: {
normal: {
borderWidth: 0,
borderColor: '#ccc'
}
},
lineStyle: {
normal: {
width: 1,
color: '#aaa'
}
},
symbolSize: '6',
symbol: 'emptyCircle',
smooth: true,
color: ['#2d8cf0', '#19be6b', '#f5ae4a', '#9189d5', '#56cae2', '#cbb0e3'],
label: {
normal: {
textStyle: {
color: '#eee'
}
}
}
},
map: {
itemStyle: {
normal: {
areaColor: '#f3f3f3',
borderColor: '#516b91',
borderWidth: 0.5
},
emphasis: {
areaColor: 'rgba(165,231,240,1)',
borderColor: '#516b91',
borderWidth: 1
}
},
label: {
normal: {
textStyle: {
color: '#000'
}
},
emphasis: {
textStyle: {
color: 'rgb(81,107,145)'
}
}
}
},
geo: {
itemStyle: {
normal: {
areaColor: '#f3f3f3',
borderColor: '#516b91',
borderWidth: 0.5
},
emphasis: {
areaColor: 'rgba(165,231,240,1)',
borderColor: '#516b91',
borderWidth: 1
}
},
label: {
normal: {
textStyle: {
color: '#000'
}
},
emphasis: {
textStyle: {
color: 'rgb(81,107,145)'
}
}
}
},
categoryAxis: {
axisLine: {
show: true,
lineStyle: {
color: '#cccccc'
}
},
axisTick: {
show: false,
lineStyle: {
color: '#333'
}
},
axisLabel: {
show: true,
textStyle: {
color: '#fff'
}
},
splitLine: {
show: false,
lineStyle: {
color: ['#eeeeee']
}
},
splitArea: {
show: false,
areaStyle: {
color: ['rgba(250,250,250,0.05)', 'rgba(200,200,200,0.02)']
}
}
},
valueAxis: {
axisLine: {
show: true,
lineStyle: {
color: '#cccccc'
}
},
axisTick: {
show: false,
lineStyle: {
color: '#333'
}
},
axisLabel: {
show: true,
textStyle: {
color: '#fff'
}
},
splitLine: {
show: false,
lineStyle: {
color: ['#eeeeee']
}
},
splitArea: {
show: false,
areaStyle: {
color: ['rgba(250,250,250,0.05)', 'rgba(200,200,200,0.02)']
}
}
},
logAxis: {
axisLine: {
show: true,
lineStyle: {
color: '#cccccc'
}
},
axisTick: {
show: false,
lineStyle: {
color: '#333'
}
},
axisLabel: {
show: true,
textStyle: {
color: '#999999'
}
},
splitLine: {
show: true,
lineStyle: {
color: ['#eeeeee']
}
},
splitArea: {
show: false,
areaStyle: {
color: ['rgba(250,250,250,0.05)', 'rgba(200,200,200,0.02)']
}
}
},
timeAxis: {
axisLine: {
show: true,
lineStyle: {
color: '#cccccc'
}
},
axisTick: {
show: false,
lineStyle: {
color: '#333'
}
},
axisLabel: {
show: true,
textStyle: {
color: '#999999'
}
},
splitLine: {
show: true,
lineStyle: {
color: ['#eeeeee']
}
},
splitArea: {
show: false,
areaStyle: {
color: ['rgba(250,250,250,0.05)', 'rgba(200,200,200,0.02)']
}
}
},
toolbox: {
iconStyle: {
normal: {
borderColor: '#999'
},
emphasis: {
borderColor: '#666'
}
}
},
legend: {
textStyle: {
color: '#fff'
}
},
tooltip: {
backgroundColor: 'rgba(19, 25, 47, 0.6)', //设置背景图片 rgba格式
borderWidth: '1', //边框宽度设置1
borderColor: 'deepskyblue', //设置边框颜色
textStyle: {
color: 'white' //设置文字颜色
},
axisPointer: {
lineStyle: {
color: '#ccc',
width: 1
},
crossStyle: {
color: '#ccc',
width: 1
}
}
},
timeline: {
lineStyle: {
color: '#8fd3e8',
width: 1
},
itemStyle: {
normal: {
color: '#8fd3e8',
borderWidth: 1
},
emphasis: {
color: '#8fd3e8'
}
},
controlStyle: {
normal: {
color: '#8fd3e8',
borderColor: '#8fd3e8',
borderWidth: 0.5
},
emphasis: {
color: '#8fd3e8',
borderColor: '#8fd3e8',
borderWidth: 0.5
}
},
checkpointStyle: {
color: '#8fd3e8',
borderColor: 'rgba(138,124,168,0.37)'
},
label: {
normal: {
textStyle: {
color: '#8fd3e8'
}
},
emphasis: {
textStyle: {
color: '#8fd3e8'
}
}
}
},
visualMap: {
color: ['#516b91', '#59c4e6', '#a5e7f0']
},
dataZoom: {
backgroundColor: 'rgba(0,0,0,0)',
dataBackgroundColor: 'rgba(255,255,255,0.3)',
fillerColor: 'rgba(167,183,204,0.4)',
handleColor: '#a7b7cc',
handleSize: '100%',
textStyle: {
color: '#333'
}
},
markPoint: {
label: {
normal: {
textStyle: {
color: '#eee'
}
},
emphasis: {
textStyle: {
color: '#eee'
}
}
}
}
}
export default theme
import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse, AxiosRequestHeaders } from "axios";
import { ElMessage } from 'element-plus';
//axios请求配置
const config = {
// 后端接口地址
baseURL: 'http://localhost:8088',
// 连接后端接口,超时时间
timeout: 10000
}
//定义返回值类型
export interface Result<T = any> {
code: number;
msg: string;
data: T;
}
class KoiHttp {
//axios实例
private instance: AxiosInstance;
//构造函数里面初始化
constructor(config: AxiosRequestConfig) {
this.instance = axios.create(config)
//定义拦截器
this.interceptors()
}
//拦截器
private interceptors() {
//axios发送请求之前的处理 config: AxiosRequestConfig
this.instance.interceptors.request.use((config) => {
// 在请求头部携带token
// let token = sessionStorage.getItem('token');
// let token = '';
// if (token) {
// config.headers!['token'] = token
// //把token放到headers里面
// // (config.headers as AxiosRequestHeaders).token = token
// }
console.log(config)
return config;
}, (error: any) => {
error.data = {}
error.data.msg = '服务器异常,请联系管理员!'
return error;
})
//axios请求返回之后的处理
//请求返回之后的处理
this.instance.interceptors.response.use((res: AxiosResponse) => {
// console.log(res.data)
if (res.data.code != 200) {
ElMessage.error(res.data.msg || '服务器出错!')
return Promise.reject(res.data.msg || '服务器出错')
} else {
return res.data
}
}, (error) => {
console.log('进入错误')
error.data = {};
if (error && error.response) {
switch (error.response.status) {
case 400:
error.data.msg = '错误请求';
ElMessage.error(error.data.msg)
break
case 401:
error.data.msg = '未授权,请重新登录';
ElMessage.error(error.data.msg)
break
case 403:
error.data.msg = '拒绝访问';
ElMessage.error(error.data.msg)
break
case 404:
error.data.msg = '请求错误,未找到该资源';
ElMessage.error(error.data.msg)
break
case 405:
error.data.msg = '请求方法未允许';
ElMessage.error(error.data.msg)
break
case 408:
error.data.msg = '请求超时';
ElMessage.error(error.data.msg)
break
case 500:
error.data.msg = '服务器端出错';
ElMessage.error(error.data.msg)
break
case 501:
error.data.msg = '网络未实现';
ElMessage.error(error.data.msg)
break
case 502:
error.data.msg = '网络错误';
ElMessage.error(error.data.msg)
break
case 503:
error.data.msg = '服务不可用';
ElMessage.error(error.data.msg)
break
case 504:
error.data.msg = '网络超时';
ElMessage.error(error.data.msg)
break
case 505:
error.data.msg = 'http版本不支持该请求';
ElMessage.error(error.data.msg)
break
default:
error.data.msg = `连接错误${error.response.status}`;
ElMessage.error(error.data.msg)
}
} else {
error.data.msg = "连接到服务器失败";
ElMessage.error(error.data.msg)
}
return Promise.reject(error)
})
}
/* GET 方法 */
get<T>(url: string, params?: object): Promise<any> {
return this.instance.get(url, { params })
}
/* POST 方法 */
post<T>(url: string, data?: object): Promise<any> {
return this.instance.post(url, data)
}
/* PUT 方法 */
put<T>(url: string, data?: object): Promise<any> {
return this.instance.put(url, data)
}
/* DELETE 方法 */
delete<T>(url: string): Promise<any> {
return this.instance.delete(url)
}
}
export default new KoiHttp(config)
\ No newline at end of file
<script setup>
defineProps({
msg: {
type: String,
required: true
}
})
</script>
<template> <template>
<div class="greetings"> <h1>HelloWorld</h1>
<h1 class="green">{{ msg }}</h1> <h2>没有安装axios和DataV</h2>
<h3> <h2>解构方式获取值:{{ count1 }}</h2>
You’ve successfully created a project with <h2>计算属性获取值:{{ count2 }}</h2>
<a target="_blank" href="https://vitejs.dev/">Vite</a> + <h2>计算属性获取值(getters):{{ count3 }}</h2>
<a target="_blank" href="https://vuejs.org/">Vue 3</a>. <el-button @click="addBtn1">确定+1</el-button>
</h3> <el-button @click="addBtn2">确定+1</el-button>
</div> <el-button @click="addBtn3">确定+1</el-button>
<el-button @click="addBtn4">确定+1</el-button>
<el-button @click="addBtn5">确定+1</el-button>
</template> </template>
<style scoped> <script setup lang="ts">
h1 { import { ref, computed } from 'vue'
font-weight: 500; import { testStore } from "@/store/test/index";
font-size: 2.6rem; import { storeToRefs } from "pinia"; // pinia解决使用结构方式造成数据丢失响应式问题
top: -10px;
}
h3 { const store = testStore();
font-size: 1.2rem; // 1、获取store里面的count 解构的方式,会使数据丢失响应式
const { count: count1 } = storeToRefs(store);
console.log("数值:",count1);
const addBtn1 = () => {
store.count ++;
}
// 2、通过计算属性获取响应式
const count2 = computed(() => {
return store.count;
});
const addBtn2 = () => {
store.count ++;
}
// 3、通过计算属性获取响应式(getters)
const count3 = computed(() => {
return store.getCount;
});
const addBtn3 = () => {
store.count ++;
} }
.greetings h1, // 4、actions
.greetings h3 { const addBtn4 = () => {
text-align: center; store.setCount(++store.count);
} }
@media (min-width: 1024px) { const addBtn5 = () => {
.greetings h1, //第一种改变数据的方式
.greetings h3 { // store.count++;
text-align: left; //第二种改变数据的方式
} // store.setCount(++store.count);
//第三种改变数据的方式
// store.$patch({
// count: ++store.count,
// });
//第四种改变数据的方式
store.$patch((state)=>{
state.count = ++state.count
})
} }
</script>
<style scoped>
</style> </style>
<script setup>
import WelcomeItem from './WelcomeItem.vue'
import DocumentationIcon from './icons/IconDocumentation.vue'
import ToolingIcon from './icons/IconTooling.vue'
import EcosystemIcon from './icons/IconEcosystem.vue'
import CommunityIcon from './icons/IconCommunity.vue'
import SupportIcon from './icons/IconSupport.vue'
</script>
<template>
<WelcomeItem>
<template #icon>
<DocumentationIcon />
</template>
<template #heading>Documentation</template>
Vue’s
<a target="_blank" href="https://vuejs.org/">official documentation</a>
provides you with all information you need to get started.
</WelcomeItem>
<WelcomeItem>
<template #icon>
<ToolingIcon />
</template>
<template #heading>Tooling</template>
This project is served and bundled with
<a href="https://vitejs.dev/guide/features.html" target="_blank">Vite</a>. The recommended IDE
setup is <a href="https://code.visualstudio.com/" target="_blank">VSCode</a> +
<a href="https://github.com/johnsoncodehk/volar" target="_blank">Volar</a>. If you need to test
your components and web pages, check out
<a href="https://www.cypress.io/" target="_blank">Cypress</a> and
<a href="https://on.cypress.io/component" target="_blank"
>Cypress Component Testing</a
>.
<br />
More instructions are available in <code>README.md</code>.
</WelcomeItem>
<WelcomeItem>
<template #icon>
<EcosystemIcon />
</template>
<template #heading>Ecosystem</template>
Get official tools and libraries for your project:
<a target="_blank" href="https://pinia.vuejs.org/">Pinia</a>,
<a target="_blank" href="https://router.vuejs.org/">Vue Router</a>,
<a target="_blank" href="https://test-utils.vuejs.org/">Vue Test Utils</a>, and
<a target="_blank" href="https://github.com/vuejs/devtools">Vue Dev Tools</a>. If you need more
resources, we suggest paying
<a target="_blank" href="https://github.com/vuejs/awesome-vue">Awesome Vue</a>
a visit.
</WelcomeItem>
<WelcomeItem>
<template #icon>
<CommunityIcon />
</template>
<template #heading>Community</template>
Got stuck? Ask your question on
<a target="_blank" href="https://chat.vuejs.org">Vue Land</a>, our official Discord server, or
<a target="_blank" href="https://stackoverflow.com/questions/tagged/vue.js">StackOverflow</a>.
You should also subscribe to
<a target="_blank" href="https://news.vuejs.org">our mailing list</a> and follow the official
<a target="_blank" href="https://twitter.com/vuejs">@vuejs</a>
twitter account for latest news in the Vue world.
</WelcomeItem>
<WelcomeItem>
<template #icon>
<SupportIcon />
</template>
<template #heading>Support Vue</template>
As an independent project, Vue relies on community backing for its sustainability. You can help
us by
<a target="_blank" href="https://vuejs.org/sponsor/">becoming a sponsor</a>.
</WelcomeItem>
</template>
<template>
<div class="item">
<i>
<slot name="icon"></slot>
</i>
<div class="details">
<h3>
<slot name="heading"></slot>
</h3>
<slot></slot>
</div>
</div>
</template>
<style scoped>
.item {
margin-top: 2rem;
display: flex;
}
.details {
flex: 1;
margin-left: 1rem;
}
i {
display: flex;
place-items: center;
place-content: center;
width: 32px;
height: 32px;
color: var(--color-text);
}
h3 {
font-size: 1.2rem;
font-weight: 500;
margin-bottom: 0.4rem;
color: var(--color-heading);
}
@media (min-width: 1024px) {
.item {
margin-top: 0;
padding: 0.4rem 0 1rem calc(var(--section-gap) / 2);
}
i {
top: calc(50% - 25px);
left: -26px;
position: absolute;
border: 1px solid var(--color-border);
background: var(--color-background);
border-radius: 8px;
width: 50px;
height: 50px;
}
.item:before {
content: ' ';
border-left: 1px solid var(--color-border);
position: absolute;
left: 0;
bottom: calc(50% + 25px);
height: calc(50% - 25px);
}
.item:after {
content: ' ';
border-left: 1px solid var(--color-border);
position: absolute;
left: 0;
top: calc(50% + 25px);
height: calc(50% - 25px);
}
.item:first-of-type:before {
display: none;
}
.item:last-of-type:after {
display: none;
}
}
</style>
<template>
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor">
<path
d="M15 4a1 1 0 1 0 0 2V4zm0 11v-1a1 1 0 0 0-1 1h1zm0 4l-.707.707A1 1 0 0 0 16 19h-1zm-4-4l.707-.707A1 1 0 0 0 11 14v1zm-4.707-1.293a1 1 0 0 0-1.414 1.414l1.414-1.414zm-.707.707l-.707-.707.707.707zM9 11v-1a1 1 0 0 0-.707.293L9 11zm-4 0h1a1 1 0 0 0-1-1v1zm0 4H4a1 1 0 0 0 1.707.707L5 15zm10-9h2V4h-2v2zm2 0a1 1 0 0 1 1 1h2a3 3 0 0 0-3-3v2zm1 1v6h2V7h-2zm0 6a1 1 0 0 1-1 1v2a3 3 0 0 0 3-3h-2zm-1 1h-2v2h2v-2zm-3 1v4h2v-4h-2zm1.707 3.293l-4-4-1.414 1.414 4 4 1.414-1.414zM11 14H7v2h4v-2zm-4 0c-.276 0-.525-.111-.707-.293l-1.414 1.414C5.42 15.663 6.172 16 7 16v-2zm-.707 1.121l3.414-3.414-1.414-1.414-3.414 3.414 1.414 1.414zM9 12h4v-2H9v2zm4 0a3 3 0 0 0 3-3h-2a1 1 0 0 1-1 1v2zm3-3V3h-2v6h2zm0-6a3 3 0 0 0-3-3v2a1 1 0 0 1 1 1h2zm-3-3H3v2h10V0zM3 0a3 3 0 0 0-3 3h2a1 1 0 0 1 1-1V0zM0 3v6h2V3H0zm0 6a3 3 0 0 0 3 3v-2a1 1 0 0 1-1-1H0zm3 3h2v-2H3v2zm1-1v4h2v-4H4zm1.707 4.707l.586-.586-1.414-1.414-.586.586 1.414 1.414z"
/>
</svg>
</template>
<template>
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="17" fill="currentColor">
<path
d="M11 2.253a1 1 0 1 0-2 0h2zm-2 13a1 1 0 1 0 2 0H9zm.447-12.167a1 1 0 1 0 1.107-1.666L9.447 3.086zM1 2.253L.447 1.42A1 1 0 0 0 0 2.253h1zm0 13H0a1 1 0 0 0 1.553.833L1 15.253zm8.447.833a1 1 0 1 0 1.107-1.666l-1.107 1.666zm0-14.666a1 1 0 1 0 1.107 1.666L9.447 1.42zM19 2.253h1a1 1 0 0 0-.447-.833L19 2.253zm0 13l-.553.833A1 1 0 0 0 20 15.253h-1zm-9.553-.833a1 1 0 1 0 1.107 1.666L9.447 14.42zM9 2.253v13h2v-13H9zm1.553-.833C9.203.523 7.42 0 5.5 0v2c1.572 0 2.961.431 3.947 1.086l1.107-1.666zM5.5 0C3.58 0 1.797.523.447 1.42l1.107 1.666C2.539 2.431 3.928 2 5.5 2V0zM0 2.253v13h2v-13H0zm1.553 13.833C2.539 15.431 3.928 15 5.5 15v-2c-1.92 0-3.703.523-5.053 1.42l1.107 1.666zM5.5 15c1.572 0 2.961.431 3.947 1.086l1.107-1.666C9.203 13.523 7.42 13 5.5 13v2zm5.053-11.914C11.539 2.431 12.928 2 14.5 2V0c-1.92 0-3.703.523-5.053 1.42l1.107 1.666zM14.5 2c1.573 0 2.961.431 3.947 1.086l1.107-1.666C18.203.523 16.421 0 14.5 0v2zm3.5.253v13h2v-13h-2zm1.553 12.167C18.203 13.523 16.421 13 14.5 13v2c1.573 0 2.961.431 3.947 1.086l1.107-1.666zM14.5 13c-1.92 0-3.703.523-5.053 1.42l1.107 1.666C11.539 15.431 12.928 15 14.5 15v-2z"
/>
</svg>
</template>
<template>
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="20" fill="currentColor">
<path
d="M11.447 8.894a1 1 0 1 0-.894-1.789l.894 1.789zm-2.894-.789a1 1 0 1 0 .894 1.789l-.894-1.789zm0 1.789a1 1 0 1 0 .894-1.789l-.894 1.789zM7.447 7.106a1 1 0 1 0-.894 1.789l.894-1.789zM10 9a1 1 0 1 0-2 0h2zm-2 2.5a1 1 0 1 0 2 0H8zm9.447-5.606a1 1 0 1 0-.894-1.789l.894 1.789zm-2.894-.789a1 1 0 1 0 .894 1.789l-.894-1.789zm2 .789a1 1 0 1 0 .894-1.789l-.894 1.789zm-1.106-2.789a1 1 0 1 0-.894 1.789l.894-1.789zM18 5a1 1 0 1 0-2 0h2zm-2 2.5a1 1 0 1 0 2 0h-2zm-5.447-4.606a1 1 0 1 0 .894-1.789l-.894 1.789zM9 1l.447-.894a1 1 0 0 0-.894 0L9 1zm-2.447.106a1 1 0 1 0 .894 1.789l-.894-1.789zm-6 3a1 1 0 1 0 .894 1.789L.553 4.106zm2.894.789a1 1 0 1 0-.894-1.789l.894 1.789zm-2-.789a1 1 0 1 0-.894 1.789l.894-1.789zm1.106 2.789a1 1 0 1 0 .894-1.789l-.894 1.789zM2 5a1 1 0 1 0-2 0h2zM0 7.5a1 1 0 1 0 2 0H0zm8.553 12.394a1 1 0 1 0 .894-1.789l-.894 1.789zm-1.106-2.789a1 1 0 1 0-.894 1.789l.894-1.789zm1.106 1a1 1 0 1 0 .894 1.789l-.894-1.789zm2.894.789a1 1 0 1 0-.894-1.789l.894 1.789zM8 19a1 1 0 1 0 2 0H8zm2-2.5a1 1 0 1 0-2 0h2zm-7.447.394a1 1 0 1 0 .894-1.789l-.894 1.789zM1 15H0a1 1 0 0 0 .553.894L1 15zm1-2.5a1 1 0 1 0-2 0h2zm12.553 2.606a1 1 0 1 0 .894 1.789l-.894-1.789zM17 15l.447.894A1 1 0 0 0 18 15h-1zm1-2.5a1 1 0 1 0-2 0h2zm-7.447-5.394l-2 1 .894 1.789 2-1-.894-1.789zm-1.106 1l-2-1-.894 1.789 2 1 .894-1.789zM8 9v2.5h2V9H8zm8.553-4.894l-2 1 .894 1.789 2-1-.894-1.789zm.894 0l-2-1-.894 1.789 2 1 .894-1.789zM16 5v2.5h2V5h-2zm-4.553-3.894l-2-1-.894 1.789 2 1 .894-1.789zm-2.894-1l-2 1 .894 1.789 2-1L8.553.106zM1.447 5.894l2-1-.894-1.789-2 1 .894 1.789zm-.894 0l2 1 .894-1.789-2-1-.894 1.789zM0 5v2.5h2V5H0zm9.447 13.106l-2-1-.894 1.789 2 1 .894-1.789zm0 1.789l2-1-.894-1.789-2 1 .894 1.789zM10 19v-2.5H8V19h2zm-6.553-3.894l-2-1-.894 1.789 2 1 .894-1.789zM2 15v-2.5H0V15h2zm13.447 1.894l2-1-.894-1.789-2 1 .894 1.789zM18 15v-2.5h-2V15h2z"
/>
</svg>
</template>
<template>
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor">
<path
d="M10 3.22l-.61-.6a5.5 5.5 0 0 0-7.666.105 5.5 5.5 0 0 0-.114 7.665L10 18.78l8.39-8.4a5.5 5.5 0 0 0-.114-7.665 5.5 5.5 0 0 0-7.666-.105l-.61.61z"
/>
</svg>
</template>
<!-- This icon is from <https://github.com/Templarian/MaterialDesign>, distributed under Apache 2.0 (https://www.apache.org/licenses/LICENSE-2.0) license-->
<template>
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
aria-hidden="true"
role="img"
class="iconify iconify--mdi"
width="24"
height="24"
preserveAspectRatio="xMidYMid meet"
viewBox="0 0 24 24"
>
<path
d="M20 18v-4h-3v1h-2v-1H9v1H7v-1H4v4h16M6.33 8l-1.74 4H7v-1h2v1h6v-1h2v1h2.41l-1.74-4H6.33M9 5v1h6V5H9m12.84 7.61c.1.22.16.48.16.8V18c0 .53-.21 1-.6 1.41c-.4.4-.85.59-1.4.59H4c-.55 0-1-.19-1.4-.59C2.21 19 2 18.53 2 18v-4.59c0-.32.06-.58.16-.8L4.5 7.22C4.84 6.41 5.45 6 6.33 6H7V5c0-.55.18-1 .57-1.41C7.96 3.2 8.44 3 9 3h6c.56 0 1.04.2 1.43.59c.39.41.57.86.57 1.41v1h.67c.88 0 1.49.41 1.83 1.22l2.34 5.39z"
fill="currentColor"
></path>
</svg>
</template>
<!-- echarts模板,有局部刷新需要在mounted自行开启 -->
<template>
<div>
<div class="title-list">
<div className='detail-list'>
<div className='detail-list-item' >
<img src="@/assets/images/center-details-data1.png"/>
<div className='detail-item-text'>
<h3>攻击量</h3>
<span>523</span>
<span className='unit'></span>
</div>
</div>
<div className='detail-list-item' >
<img src="@/assets/images/center-details-data6.png"/>
<div className='detail-item-text'>
<h3>访问量</h3>
<span>50</span>
<span className='unit'></span>
</div>
</div>
<div className='detail-list-item' >
<img src="@/assets/images/center-details-data6.png"/>
<div className='detail-item-text'>
<h3>处置率</h3>
<span>50</span>
<span className='unit'>%</span>
</div>
</div>
</div>
</div>
</div>
</template>
<script setup lang="ts">
import { ref, onBeforeMount, onMounted, onBeforeUnmount ,onUnmounted } from 'vue';
import skin from '@/assets/theme/skin';
let screenHeight = ref(window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight);
let screenWidth = ref(window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth);
const chartInstance= ref()
const screenTimer = ref();
// 局部刷新定时器
const dataTimer = ref();
// tootip定时器ID-用于清除定时器
const tootipTimer = ref();
onMounted( () => {
getData();
})
onBeforeUnmount(() => {
clearInterval(tootipTimer.value);
tootipTimer.value = null;
chartInstance.value.dispose();
chartInstance.value = null;
})
onUnmounted( () => {
clearInterval(screenTimer.value);
screenTimer.value = null;
clearInterval(dataTimer.value);
dataTimer.value = null;
})
const getData = () => {
// 调用接口方法
// getModuleData().then(res => {
// allData = res.data;
// updateChart();
// //console.log("ALLDATA->"+JSON.stringify(allData.pcsSum));
// // echarts查不到数据,将初始化echarts的方法全部放置到接口方法中即可。
// })
}
</script>
<style lang='scss' scoped>
@import './right.scss';
</style>
\ No newline at end of file
<!-- echarts模板,有局部刷新需要在mounted自行开启 -->
<template>
<!-- <dv-flyline-chart-enhanced :config="mapConfig" style="width:100%;height:100%;" /> -->
<div id="main" :style="{ height: YHOne + 'px'}"></div>
</template>
<!-- ref="refChart" -->
<script setup lang="ts">
import {mapDataConfig} from './chart2';
import 'echarts-gl';
import * as echarts from 'echarts';
import { getModuleData } from "@/api/test/index";
import { ref, onBeforeMount, onMounted, onBeforeUnmount ,onUnmounted } from 'vue';
import { randomNum } from '@/utils/koi';
let refChart = ref<any>()
let screenHeight = ref(window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight);
let screenWidth = ref(window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth);
const chartInstance = ref();
const allData1 = ref();
const allData2 = ref();
const YHOne = ref();
// 自适应浏览器获取宽高大小定时器
const screenTimer = ref();
// 局部刷新数据定时器
const dataTimer = ref();
// const mapConfig = ref(mapDataConfig);
const ROOT_PATH = 'https://echarts.apache.org/examples';
const chartDom = document.getElementById('main');
const myChart = echarts.init(chartDom);
const option=ref(null);
onBeforeMount(() => {
YHOne.value = Math.round(screenHeight.value * 0.36)
})
onMounted(() => {
window.addEventListener('resize',getScreenHeight, false);
window.addEventListener('resize',getScreenWidth, false);
resizeScreen();
getData();
// getDataTimer();
})
onBeforeUnmount(() => {
chartInstance.value.dispose();
chartInstance.value = null;
})
onUnmounted(() => {
clearInterval(screenTimer.value);
screenTimer.value = null;
clearInterval(dataTimer.value);
dataTimer.value = null;
window.removeEventListener('resize',getScreenHeight, false);
window.removeEventListener('resize',getScreenWidth, false);
})
// 自适应浏览器获取宽高大小定时器
const resizeScreen = () => {
screenTimer.value = setInterval(() => {
getScreenHeight();
getScreenWidth();
}, 200)
}
// 获取浏览器高度进行自适应
const getScreenHeight = () => {
screenHeight.value = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
YHOne.value = Math.round(screenHeight.value * 0.36);
}
// 字体大小根据宽度自适应
const getScreenWidth = () => {
screenWidth.value = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
}
const getData = () => {
getModuleData(ROOT_PATH + '/data-gl/asset/data/flights.json').then(data => {
var airports = data.airports.map(function (item) {
return {
coord: [item[3], item[4]]
};
});
function getAirportCoord(idx) {
return [data.airports[idx][3], data.airports[idx][4]];
}
const routesGroupByAirline = {};
data.routes.forEach(function (route) {
var airline = data.airlines[route[0]];
var airlineName = airline[0];
if (!routesGroupByAirline[airlineName]) {
routesGroupByAirline[airlineName] = [];
}
routesGroupByAirline[airlineName].push(route);
});
const pointsData = [];
data.routes.forEach(function (airline) {
pointsData.push(getAirportCoord(airline[1]));
pointsData.push(getAirportCoord(airline[2]));
});
var series = data.airlines
.map(function (airline) {
var airlineName = airline[0];
var routes = routesGroupByAirline[airlineName];
if (!routes) {
return null;
}
return {
type: 'lines3D',
name: airlineName,
effect: {
show: true,
trailWidth: 2,
trailLength: 0.15,
trailOpacity: 1,
trailColor: 'rgb(30, 30, 60)'
},
lineStyle: {
width: 1,
color: 'rgb(50, 50, 150)',
// color: 'rgb(118, 233, 241)',
opacity: 0.1
},
blendMode: 'lighter',
data: routes.map(function (item) {
return [airports[item[1]].coord, airports[item[2]].coord];
})
};
})
.filter(function (series) {
return !!series;
});
series.push({
type: 'scatter3D',
coordinateSystem: 'globe',
blendMode: 'lighter',
symbolSize: 2,
itemStyle: {
color: 'rgb(50, 50, 150)',
opacity: 0.2
},
data: pointsData
});
myChart.setOption({
legend: {
selectedMode: 'single',
left: 'left',
data: Object.keys(routesGroupByAirline),
orient: 'vertical',
textStyle: {
color: '#fff'
}
},
globe: {
environment: ROOT_PATH + '/data-gl/asset/starfield.jpg',
heightTexture:
ROOT_PATH + '/data-gl/asset/bathymetry_bw_composite_4k.jpg',
displacementScale: 0.1,
displacementQuality: 'high',
baseColor: '#000',
shading: 'realistic',
realisticMaterial: {
roughness: 0.2,
metalness: 0
},
postEffect: {
enable: true,
depthOfField: {
enable: false,
focalDistance: 150
}
},
temporalSuperSampling: {
enable: true
},
light: {
ambient: {
intensity: 0
},
main: {
intensity: 0.1,
shadow: false
},
ambientCubemap: {
texture: ROOT_PATH + '/data-gl/asset/lake.hdr',
exposure: 1,
diffuseIntensity: 0.5,
specularIntensity: 2
}
},
viewControl: {
autoRotate: false
},
silent: true
},
series: series
});
})
}
// 定时器
const getDataTimer = () => {
dataTimer.value = setInterval(() => {
getData();
}, 3000)
}
</script>
<style lang='scss' scoped>
</style>
\ No newline at end of file
export const mapDataConfig ={
points: [
{
name: '郑州',
coordinate: [0.48, 0.35],
halo: {
show: true,
},
icon: {
src: '/flylineChart/mapCenterPoint.png',
width: 30,
height: 30
},
text: {
show: false
}
},
{
name: '新乡',
coordinate: [0.52, 0.23]
},
{
name: '焦作',
coordinate: [0.43, 0.29]
},
{
name: '开封',
coordinate: [0.59, 0.35]
},
{
name: '许昌',
coordinate: [0.53, 0.47]
},
{
name: '平顶山',
coordinate: [0.45, 0.54]
},
{
name: '洛阳',
coordinate: [0.36, 0.38]
},
{
name: '周口',
coordinate: [0.62, 0.55],
halo: {
show: true,
color: '#8378ea'
}
},
{
name: '漯河',
coordinate: [0.56, 0.56]
},
{
name: '南阳',
coordinate: [0.37, 0.66],
halo: {
show: true,
color: '#37a2da'
}
},
{
name: '信阳',
coordinate: [0.55, 0.81]
},
{
name: '驻马店',
coordinate: [0.55, 0.67]
},
{
name: '济源',
coordinate: [0.37, 0.29]
},
{
name: '三门峡',
coordinate: [0.20, 0.36]
},
{
name: '商丘',
coordinate: [0.76, 0.41]
},
{
name: '鹤壁',
coordinate: [0.59, 0.18]
},
{
name: '濮阳',
coordinate: [0.68, 0.17]
},
{
name: '安阳',
coordinate: [0.59, 0.10]
}
],
lines: [
{
source: '新乡',
target: '郑州'
},
{
source: '焦作',
target: '郑州'
},
{
source: '开封',
target: '郑州'
},
{
source: '周口',
target: '郑州',
color: '#fb7293',
width: 2
},
{
source: '南阳',
target: '郑州',
color: '#fb7293',
width: 2
},
{
source: '济源',
target: '郑州'
},
{
source: '三门峡',
target: '郑州'
},
{
source: '商丘',
target: '郑州'
},
{
source: '鹤壁',
target: '郑州'
},
{
source: '濮阳',
target: '郑州'
},
{
source: '安阳',
target: '郑州'
},
{
source: '许昌',
target: '南阳',
color: '#37a2da'
},
{
source: '平顶山',
target: '南阳',
color: '#37a2da'
},
{
source: '洛阳',
target: '南阳',
color: '#37a2da'
},
{
source: '驻马店',
target: '周口',
color: '#8378ea'
},
{
source: '信阳',
target: '周口',
color: '#8378ea'
},
{
source: '漯河',
target: '周口',
color: '#8378ea'
}
],
icon: {
show: true,
src: '/flylineChart/mapPoint.png'
},
text: {
show: true,
},
k: 0.5,
bgImgSrc: '/flylineChart/map.jpg'
}
\ No newline at end of file
<!-- echarts模板,有局部刷新需要在mounted自行开启 -->
<template>
<dv-flyline-chart-enhanced :config="mapConfig" :style="{ height: YHOne + 'px'}" />
<!-- <div id="main" :style="{ height: YHOne + 'px'}"></div> -->
</template>
<script setup lang="ts">
import {mapDataConfig} from './chart2';
import { getModuleData } from "@/api/test/index";
import { ref, onBeforeMount, onMounted, onBeforeUnmount ,onUnmounted } from 'vue';
import { randomNum } from '@/utils/koi';
let screenHeight = ref(window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight);
let screenWidth = ref(window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth);
const chartInstance = ref();
const YHOne = ref();
// 自适应浏览器获取宽高大小定时器
const screenTimer = ref();
// 局部刷新数据定时器
const dataTimer = ref();
const mapConfig = ref(mapDataConfig);
onBeforeMount(() => {
YHOne.value = Math.round(screenHeight.value * 0.56)
})
onMounted(() => {
window.addEventListener('resize',getScreenHeight, false);
window.addEventListener('resize',getScreenWidth, false);
resizeScreen();
getData();
// getDataTimer();
})
onBeforeUnmount(() => {
chartInstance.value.dispose();
chartInstance.value = null;
})
onUnmounted(() => {
clearInterval(screenTimer.value);
screenTimer.value = null;
clearInterval(dataTimer.value);
dataTimer.value = null;
window.removeEventListener('resize',getScreenHeight, false);
window.removeEventListener('resize',getScreenWidth, false);
})
// 自适应浏览器获取宽高大小定时器
const resizeScreen = () => {
screenTimer.value = setInterval(() => {
getScreenHeight();
getScreenWidth();
}, 200)
}
// 获取浏览器高度进行自适应
const getScreenHeight = () => {
screenHeight.value = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
YHOne.value = Math.round(screenHeight.value * 0.56);
}
// 字体大小根据宽度自适应
const getScreenWidth = () => {
screenWidth.value = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
}
const getData = () => {
}
// 定时器
const getDataTimer = () => {
dataTimer.value = setInterval(() => {
getData();
}, 3000)
}
</script>
<style lang='scss' scoped>
</style>
\ No newline at end of file
<!-- echarts模板,有局部刷新需要在mounted自行开启 -->
<template>
<div ref="refChart" :style="{ height: YHOne + 'px'}"></div>
</template>
<script>
// import { listTenDayData } from "@/api/home/index";
import * as echarts from 'echarts';
// 导入echarts皮肤
import skin from '@/assets/theme/skin';
import { randomNum } from '@/utils/koi';
export default {
name: 'center3',
components: {},
data () {
return {
// 获取浏览器可视区域高度(包含滚动条)、 window.innerHeight
// 获取浏览器可视区域高度(不包含工具栏高度)、document.documentElement.clientHeight
// 获取body的实际高度 (三个都是相同,兼容性不同的浏览器而设置的) document.body.clientHeight
screenHeight: window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight,
screenWidth: window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth,
chartInstance: null,
allData: [],
allData2: [],
// 浏览器高度
YHOne: null,
// 浏览器宽度
kWOne: null,
// 浏览器字体大小
kFOne: null,
// 自适应浏览器获取宽高大小定时器
screenTimer: null,
// 局部刷新定时器
dataTimer: null,
}
},
created () {},
beforeMount(){
// Echarts页面加载进来时,首先设置高度进行显示图表进行初始化
this.YHOne = Math.round(this.screenHeight * 0.35)
},
mounted(){
// 页面大小改变时触发
window.addEventListener('resize',this.getScreenHeight, false);
// 页面大小改变时触发
window.addEventListener('resize',this.getScreenWidth, false);
// 鼠标移动时触发
//window.addEventListener('mousemove',this.getHeight, false);
// 自适应浏览器获取宽高大小定时器
this.resizeScreen();
// 图表初始化
this.initChart();
// 获取接口数据
this.getData();
// 调用Echarts图表自适应方法
this.screenAdapter();
// Echarts图表自适应
window.addEventListener("resize", this.screenAdapter);
// 局部刷新定时器
this.getDataTimer();
},
beforeDestroy () {
// 销毁Echarts图表
this.chartInstance.dispose();
this.chartInstance = null;
},
destroyed() {
// 清除自适应屏幕定时器
clearInterval(this.screenTimer);
this.screenTimer = null;
// 清除局部刷新定时器
clearInterval(this.dataTimer);
this.dataTimer = null;
// 页面大小改变时触发销毁
window.removeEventListener('resize',this.getScreenHeight, false);
// 页面大小改变时触发销毁
window.removeEventListener('resize',this.getScreenWidth, false);
// Echarts图表自适应销毁
window.removeEventListener("resize", this.screenAdapter);
},
methods: {
// 自适应浏览器获取宽高大小定时器
resizeScreen(){
this.screenTimer = setInterval(() => {
this.getScreenHeight();
this.getScreenWidth();
}, 200)
},
// 获取浏览器高度进行自适应
getScreenHeight() {
this.screenHeight = window.innerHeight || document.documentElement.innerHeight || document.body.clientHeight;
// 四舍五入取整数
this.YHOne = Math.round(this.screenHeight * 0.35);
//console.log("高度->"+this.screenHeight +"-"+ this.YHOne);
},
// 字体大小根据宽度自适应
getScreenWidth(){
this.screenWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
// 浏览器字体计算
this.kFOne = Math.round(this.screenWidth / 100);
// 浏览器宽度宽度
this.kWOne = this.screenWidth;
//console.log("宽度->"+this.screenWidth);
},
initChart() {
// 覆盖默认主题
echarts.registerTheme('myTheme', skin);
// 定义实例
this.chartInstance = echarts.init(this.$refs.refChart, 'myTheme');
const initOption = {
title: {
text: "🍄光伏近10日耗电量",
top: '1%'
},
grid: {
top: "12%",
left: "6%",
bottom: "10%",
right: "2%"
},
tooltip: {
show: true,
},
legend: {
data: ['柱形耗电量', '折线耗电量'],
right: "5%",
},
xAxis: [
{
type: 'category',
axisPointer: {
type: 'shadow'
}
}
],
yAxis: [
{
type: 'value'
}
],
series: [
{
name: '柱形耗电量',
type: 'bar',
tooltip: {
valueFormatter: function (value) {
return value + ' V';
}
}
},
{
name: '折线耗电量',
type: 'line',
tooltip: {
valueFormatter: function (value) {
return value + ' V';
}
},
// 圆滑连接
smooth: true,
itemStyle: {
color: '#00f2f1' // 线颜色
}
}
]
};
// 图表初始化配置
this.chartInstance.setOption(initOption);
},
getData() {
// 先进行置空
this.allData = [];
this.allData2 = [];
let num1 = randomNum(100,200);
let num2 = randomNum(200,500);
let num3 = randomNum(200,500);
let num4 = randomNum(500,700);
let num5 = randomNum(500,700);
let num6 = randomNum(700,800);
let num7 = randomNum(800,900);
let num8 = randomNum(900,1000);
this.allData = [
"09-03",
"09-04",
"09-05",
"09-06",
"09-07",
"09-08",
"09-09",
"09-10"
]
this.allData2.push(num1,num2,num3,num4,num5,num6,num7,num8);
// 调用接口方法
// listTenDayData().then(res => {
// this.allData = res.data;
// this.updateChart();
// //console.log("ALLDATA->"+JSON.stringify(this.allData.pcsSum));
// // echarts查不到数据,将初始化echarts的方法全部放置到接口方法中即可。
// })
// 获取服务器的数据, 对this.allData进行赋值之后, 调用updateChart方法更新图表
//console.log("ALLDATA->",JSON.stringify(res.data))
//console.log("ALLDATA->",JSON.stringify(this.allData))
this.updateChart();
},
updateChart() {
const colorArr = [
["#0BA82C", "#4FF778"],
["#2E72BF", "#23E5E5"],
["#5052EE", "#AB6EE5"],
["hotpink", "lightsalmon"],
];
// 处理图表需要的数据
const dataOption = {
xAxis: {
// x轴刻度文字
data: this.allData
},
series: [
{
// y轴柱形耗电量数据
data: this.allData2,
itemStyle: {
//颜色样式部分
normal: {
label: {
show: true, //开启数字显示
position: "top", //在上方显示数字
textStyle: {
//数值样式
color: "lightpink", //字体颜色
//fontSize: 10, //字体大小
},
},
// 柱状图颜色渐变
color: (arg) => {
let targetColorArr = null;
if (arg.value > 700) {
targetColorArr = colorArr[0];
} else if (arg.value > 500) {
targetColorArr = colorArr[1];
} else if (arg.value > 200) {
targetColorArr = colorArr[2];
} else {
targetColorArr = colorArr[3];
}
return new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: targetColorArr[0],
},
{
offset: 1,
color: targetColorArr[1],
},
]);
},
},
}
},
{
// y轴折线耗电量数据
data: this.allData2
}
]
};
// 图表数据变化配置
this.chartInstance.setOption(dataOption);
},
screenAdapter() {
this.titleFontSize = Math.round(this.$refs.refChart.offsetWidth / 50);
const adapterOption = {
title: {
textStyle: {
fontSize: this.titleFontSize,
},
},
// 圆点分类标题
legend: {
textStyle: {
fontSize: this.titleFontSize,
},
},
xAxis: {
// 改变x轴字体颜色和大小
axisLabel: {
textStyle: {
fontSize: Math.round(this.titleFontSize * 0.9),
},
},
},
yAxis: {
// 改变y轴字体颜色和大小
axisLabel: {
textStyle: {
fontSize: Math.round(this.titleFontSize * 0.9),
},
},
},
series: [
// 双柱的话复制粘贴一份即可
{
// 圆柱的宽度
barWidth: Math.round(this.titleFontSize * 1.2),
itemStyle: {
//颜色样式部分
normal: {
label: {
textStyle: {
fontSize: Math.round(this.titleFontSize), //字体大小
},
},
},
},
}
],
};
// 图表自适应变化配置
this.chartInstance.setOption(adapterOption);
// 手动的调用图表对象的resize 才能产生效果
this.chartInstance.resize();
},
// 定时器
getDataTimer(){
this.dataTimer = setInterval(() => {
// 执行刷新数据的方法
this.getData();
//console.log("Hello World")
}, 3000)
},
}
}
</script>
<style lang='scss' scoped>
</style>
\ No newline at end of file
<template>
<div>
<dv-scroll-board :config="config" :style="{ height: Math.round(YHOne*0.63) + 'px',width: Math.round(YWOne*0.40) + 'px'}" />
</div>
</template>
<script setup lang="ts">
import { ref, reactive , onBeforeMount, onMounted, onUnmounted } from 'vue';
let screenHeight = ref(window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight)
let screenWidth = ref(window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth)
const config = reactive({
header: ['工单编号', '工单类型', '工单名称','状态'],
data: [
[ '配置错误漏洞', '988673','','处理中'],
[ 'web服务器漏洞', '5876','','处理中'],
['跨站脚本漏洞', '34','','处理中'],
[ '系统命令注入漏洞', '874','','处理中'],
[ 'sql注入漏洞', '85','','处理中'],
[ 'sql注入漏洞1', '85','','处理中'],
[ 'sql注入漏洞2', '85','','处理中'],
],
index: false,
headerHeight: 26,
columnWidth: [160,150,200,80],
align: ['left']
})
let YHOne = ref();
let YWOne = ref();
let YFOne= ref();
const screenTimer = ref();
onBeforeMount( () => {
YHOne.value = Math.round(screenHeight.value * 0.42);
})
onMounted( () => {
window.addEventListener('resize', getScreenHeight);
window.addEventListener('resize', getScreenWidth);
resizeScreen();
getData();
// 局部刷新定时器
//getDataTimer();
})
onUnmounted( () => {
clearInterval(screenTimer.value);
screenTimer.value = null;
window.removeEventListener('resize', getScreenHeight, false);
window.removeEventListener('resize', getScreenWidth, false);
})
// 自适应浏览器获取宽高大小定时器
const resizeScreen = () => {
screenTimer.value = setInterval(() => {
getScreenHeight();
getScreenWidth();
}, 200)
}
// 获取浏览器高度进行自适应
const getScreenHeight = () => {
screenHeight.value = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
YHOne.value = Math.round(screenHeight.value * 0.42);
}
// 字体大小根据宽度自适应
const getScreenWidth = () => {
screenWidth.value = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
YFOne.value = Math.round(screenWidth.value / 100);
YWOne.value = screenWidth.value;
}
// 接口数据
const getData = () => {
// 调用接口方法
// getModuleData().then(res => {
// allData = res.data;
// //console.log("ALLDATA->"+JSON.stringify(allData.pcsSum));
// // echarts查不到数据,将初始化echarts的方法全部放置到接口方法中即可。
// })
// 获取服务器的数据, 对allData进行赋值之后, 调用updateChart方法更新图表
//console.log("ALLDATA->",JSON.stringify(res.data))
//console.log("ALLDATA->",JSON.stringify(allData))
}
// 定时器
const getDataTimer = () => {
screenTimer.value = setInterval(() => {
getData();
}, 3000)
}
</script>
<style lang='scss' scoped>
// 字体颜色
// ::v-deep .dv-scroll-ranking-board .row-item {
// color: aqua;
// }
</style>
\ No newline at end of file
.title-list{
display: flex;
margin-bottom: 0.015rem;
margin-top: 0.175rem;
width: 100%;
height: 4.25rem;
.detail-list {
display: flex;
flex-wrap: wrap;
align-items: center;
align-content: space-between;
justify-content: space-around;
width: 100%;
&-item {
display: flex;
align-items: center;
position: relative;
height: 3.5625rem;
padding: 0 0.125rem;
width: 33%;
border-radius: 5px;
border: 1px solid #343f4b;
background-color: rgba(19, 25, 47, 0.8);
img {
width: 3.5rem;
height: 3.5rem;
}
.detail-item-text {
margin-left: 0.125rem;
h3 {
color: #bcdcff;
font-size: 16px;
margin-bottom: 0.25rem;
}
span {
font-weight: 500px;
font-size: 0.25rem;
font-weight: bolder;
background: linear-gradient(to bottom, #fff, #4db6e5);
color: transparent;
-webkit-background-clip: text;
background-clip: text;
}
.unit {
font-size: 0.2rem;
margin-left: 0.125rem;
}
}
}
}
}
\ No newline at end of file
<!-- 网络安全资产 -->
<template>
<div id="center">
<!-- 方块显示图 -->
<div class="square">
<!-- 正常 -->
<div
class="bg-color-black item"
:style="{ height: YHOne + 'px'}"
v-for="item in row1"
:key="item.name"
>
<p
class="colorDarkturquoise font-bold"
:style="{ 'font-size': YFOne + 'px','text-align': 'left','margin-left': YFOne + 'px'}"
v-text="item.name"
></p>
<p
:style="{ height: YHOne + 'px','font-size': Math.round(YFOne*1.5) + 'px','text-align': 'left','margin-left': YFOne + 'px','margin-top': Math.round(YFOne/3) + 'px', 'color': item.color}"
v-text="item.value"
></p>
</div>
<div
class="bg-color-black item"
:style="{ height: YHOne + 'px'}"
v-for="item in row2"
:key="item.name"
>
<p
class="colorLightsteelblue font-bold"
:style="{ 'font-size': YFOne + 'px','text-align': 'left','margin-left': YFOne + 'px'}"
v-text="item.name"
></p>
<p
:style="{ height: YHOne + 'px','font-size': Math.round(YFOne*1.5) + 'px','text-align': 'left','margin-left': YFOne + 'px','margin-top': Math.round(YFOne/3) + 'px', 'color': item.color}"
v-text="item.value"
></p>
</div>
</div>
</div>
</template>
<script setup lang="ts">
// import { getCurrentData } from "@/api/test/index";
import { randomNum } from '@/utils/koi';
import { log } from 'console';
import { ref, onBeforeMount, onMounted, onUnmounted } from 'vue';
// 获取浏览器可视区域高度(包含滚动条)、 window.innerHeight
// 获取浏览器可视区域高度(不包含工具栏高度)、document.documentElement.clientHeight
// 获取body的实际高度 (三个都是相同,兼容性不同的浏览器而设置的) document.body.clientHeight
let screenHeight = ref(window.innerHeight || document.documentElement.clientHeight ||document.body.clientHeight);
let screenWidth = ref(window.innerWidth || document.documentElement.clientWidth ||document.body.clientWidth);
const screenTimer = ref();
const dataTimer = ref();
let row1 = ref();
let row2 = ref();
let YHOne = ref();
let YFOne = ref();
onBeforeMount( () => {
YHOne.value = Math.round(screenHeight.value * 0.05);
})
onMounted(() => {
window.addEventListener("resize", getScreenHeight, false);
window.addEventListener("resize", getScreenWidth, false);
resizeScreen();
getData();
// 定时器
getDataTimer();
})
onUnmounted( () => {
// 清除多次执行定时器
clearInterval(screenTimer.value);
screenTimer.value = null;
// 清除多次执行定时器
clearInterval(dataTimer.value);
dataTimer.value = null;
window.removeEventListener("resize", getScreenHeight, false);
window.removeEventListener("resize", getScreenWidth, false);
})
// 自适应监控定时器
const resizeScreen = () => {
screenTimer.value = setInterval(() => {
getScreenHeight();
getScreenWidth();
}, 200);
}
// 获取浏览器高度进行自适应
const getScreenHeight = () => {
screenHeight.value = window.innerHeight || document.documentElement.clientHeight ||document.body.clientHeight
YHOne.value = Math.round(screenHeight.value * 0.05);
}
// 字体大小根据宽度自适应
const getScreenWidth = () => {
screenWidth.value = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
YFOne.value = Math.round(screenWidth.value / 150);
}
const getData = () => {
let num1 = randomNum(10000,99999);
let num2 = randomNum(10000,99999);
let num3 = randomNum(100,999);
let num4 = randomNum(100,999);
row1.value = [];
row1.value.push({ name: '资产数量', value: num1, color: '#33cea0'})
row1.value.push({ name: '服务器数量', value: num2, color: '#33cea0'})
row1.value.push({ name: '终端数量', value: "15155", color: 'tomato' })
row2.value = [];
row2.value .push({ name: '环比增幅率', value: '-12%', color: '#33cea0'})
row2.value .push({ name: '物联网设备数量', value: num3, color: '#33cea0'})
row2.value .push({ name: '其他设备数量', value: num4, color: '#33cea0'})
// getCurrentData().then((res) => {
// //console.log("ALLDATA->",JSON.stringify(res.data))
// row1 = res.data.row1;
// row2 = res.data.row2;
// });
// 获取服务器的数据, 对allData进行赋值之后, 调用updateChart方法更新图表
//console.log("ALLDATA->",JSON.stringify(res.data))
//console.log("ALLDATA->",JSON.stringify(res.allData))
}
// 定时器
const getDataTimer = () => {
dataTimer.value = setInterval(() => {
getData();
}, 3000);
}
</script>
<style lang="scss" scoped>
#center {
display: flex;
flex-direction: column;
.square {
width: 100%;
display: flex;
flex-wrap: wrap;
justify-content: space-around;
.item {
// 控制方块宽度比例
// width: 24.5%;
width: 32.6%;
border-radius: 6px;
margin-top: 0.5%;
margin-bottom: 0.5%;
}
}
}
</style>
<!-- left1 -->
<template>
<div ref="refChart" :style="{ height: YHOne + 'px'}"></div>
</template>
<script setup lang="ts">
import { ref, onBeforeMount, onMounted, onUnmounted } from 'vue';
// import { getModuleData } from "../../../api/ems/index";
import * as echarts from 'echarts';
// 导入echarts皮肤
import skin from '@/assets/theme/skin';
// 获取ref
let refChart = ref<any>()
// 获取浏览器可视区域高度(包含滚动条)、 window.innerHeight
// 获取浏览器可视区域高度(不包含工具栏高度)、document.documentElement.clientHeight
// 获取body的实际高度 (三个都是相同,兼容性不同的浏览器而设置的) document.body.clientHeight
let screenHeight = ref(window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight);
let screenWidth = ref(window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth);
// 初始化图表对象
let chartInstance = ref();
// 接口数据
const allData = ref([
{ value: 5, name: 'AABB故障' },
{ value: 6, name: 'CCDD故障' },
{ value: 7, name: 'TTZZ故障' },
{ value: 8, name: 'GGHH故障' },
{ value: 9, name: 'YYXX故障' }
]);
// echarts图表高度
let YHOne = ref();
// 接口数据定时器(需要定时刷新接口是打开)
const dataTimer = ref();
// 局部屏幕自适应定时器
const screenTimer = ref();
// tootip定时器ID-用于清除定时器
const tootipTimer = ref();
onBeforeMount(() => {
YHOne.value = Math.round(screenHeight.value * 0.43)
})
onMounted(() => {
// 页面大小改变时触发
window.addEventListener('resize', getScreenHeight, false);
// 页面大小改变时触发
window.addEventListener('resize', getScreenWidth, false);
// 鼠标移动时触发
//window.addEventListener('mousemove',getHeight, false);
resizeScreen();
// 初始化统计报表对象
if (chartInstance.value) {
chartInstance.value.dispose();
}
// 图表初始化
initChart();
// 获取接口数据
getData();
// 开启图表自适应
window.addEventListener("resize", screenAdapter);
screenAdapter();
// 局部刷新定时器
// getDataTimer();
// Tootip刷新定时器
getTootipTimer();
})
onUnmounted(() => {
// 清除自适应屏幕定时器
clearInterval(dataTimer.value);
dataTimer.value = null;
// 清除局部刷新定时器
clearInterval(screenTimer.value);
screenTimer.value = null;
// 页面大小改变时触发
window.removeEventListener('resize', getScreenHeight);
// 页面大小改变时触发
window.removeEventListener('resize', getScreenWidth);
window.removeEventListener("resize", screenAdapter);
// 清除tootip刷新定时器
clearInterval(tootipTimer.value);
tootipTimer.value = null;
// 销毁Echarts图表
chartInstance.value.dispose();
chartInstance.value = null;
})
const resizeScreen = () => {
dataTimer.value = setInterval(() => {
getScreenHeight();
getScreenWidth();
}, 200)
}
// 获取浏览器高度进行自适应
const getScreenHeight = () => {
screenHeight.value = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
// 四舍五入取整数
YHOne.value = Math.round(screenHeight.value * 0.43);
//console.log("高度->"+screenHeight +"-"+ YHOne);
}
// 字体大小根据宽度自适应
const getScreenWidth = () => {
screenWidth.value = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
//console.log("宽度->"+screenWidth);
}
const initChart = () => {
// 覆盖默认主题
echarts.registerTheme('myTheme', skin);
// 定义实例
chartInstance.value = echarts.init(refChart.value, 'myTheme');
const initOption = {
title: {
text: "🍀近7天模块故障",
left: 'center'
},
tooltip: {
trigger: 'item'
},
legend: {
orient: 'vertical',
left: 'left',
},
series: [
{
name: '模块故障',
type: 'pie',
// 环形图大小
radius: ['45%', '70%'],
// 环形图位置
center: ["56%", "60%"],
avoidLabelOverlap: false,
itemStyle: {
borderRadius: 10,
borderColor: '#fff',
borderWidth: 2
},
label: {
show: false,
position: 'center',
formatter: '{d}%' // 当前百分比
},
emphasis: {
label: {
show: true,
fontSize: '16',
fontWeight: 'bold'
}
},
labelLine: {
show: false
},
}
]
};
// 图表初始化配置
chartInstance.value.setOption(initOption);
// 鼠标移入停止定时器
chartInstance.value.on("mouseover", () => {
clearInterval(tootipTimer.value);
});
// 鼠标移入启动定时器
chartInstance.value.on("mouseout", () => {
getTootipTimer();
});
}
const getData = () => {
// getModuleData().then(res => {
// allData = res.data;
// updateChart();
// //console.log("数据left1->"+JSON.stringify(allData.pcsSum));
// // echarts查不到数据,将初始化echarts的方法全部放置到接口方法中即可。
// })
// 获取服务器的数据, 对allData进行赋值之后, 调用updateChart方法更新图表
//console.log("ALLDATA->",JSON.stringify(res.data))
//console.log("ALLDATA->",JSON.stringify(res.allData))
updateChart();
}
const updateChart = () => {
// 处理图表需要的数据
const dataOption = {
series: [
{
data: allData.value
}
]
};
// 图表数据变化配置
chartInstance.value.setOption(dataOption);
}
const screenAdapter = () => {
let titleFontSize = (refChart.value.offsetWidth / 100) * 2;
const adapterOption = {
title: {
textStyle: {
fontSize: Math.round(titleFontSize * 2),
},
},
// 圆点分类标题
legend: {
textStyle: {
fontSize: Math.round(titleFontSize * 1.2),
},
}
};
// 图标自适应变化配置
chartInstance.value.setOption(adapterOption);
chartInstance.value.resize();
}
// 数据刷新定时器
const getDataTimer = () => {
screenTimer.value = setInterval(() => {
// 执行刷新数据的方法
getData();
//console.log("Hello World")
}, 3000)
}
// 定时器
const getTootipTimer = () => {
let index = 0; // 播放所在下标
tootipTimer.value = setInterval(() => {
// echarts实现定时播放tooltip
chartInstance.value.dispatchAction({
type: 'showTip',
seriesIndex: 0,
dataIndex: index
});
index++;
if (index > allData.value.length) {
index = 0;
}
//console.log("Hello World")
}, 2000)
}
</script>
<style lang='scss' scoped>
</style>
\ No newline at end of file
<!-- echarts模板,有局部刷新需要在mounted自行开启 -->
<template>
<div ref="refChart" :style="{ height: YHOne + 'px'}"></div>
</template>
<script setup lang="ts">
import { ref, onBeforeMount, onMounted, onBeforeUnmount ,onUnmounted } from 'vue';
// import { listTenDayData } from "@/api/home/index";
import * as echarts from 'echarts';
// 导入echarts皮肤
import skin from '@/assets/theme/skin';
import { randomNum } from '@/utils/koi';
let refChart = ref<any>()
// 获取浏览器可视区域高度(包含滚动条)、 window.innerHeight
// 获取浏览器可视区域高度(不包含工具栏高度)、document.documentElement.clientHeight
// 获取body的实际高度 (三个都是相同,兼容性不同的浏览器而设置的) document.body.clientHeight
let screenHeight = ref(window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight);
let screenWidth = ref(window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth);
let chartInstance = ref();
const allData1 = ref();
const allData2 = ref();
// 浏览器高度
let YHOne = ref();
// 浏览器宽度
let kWOne = ref();
// 浏览器字体大小
let kFOne = ref();
// 自适应浏览器获取宽高大小定时器
const screenTimer = ref();
// 局部刷新定时器
const dataTimer = ref();
onBeforeMount(() => {
// Echarts页面加载进来时,首先设置高度进行显示图表进行初始化
YHOne.value = Math.round(screenHeight.value * 0.18)
})
onMounted(() => {
window.addEventListener('resize',getScreenHeight, false);
window.addEventListener('resize',getScreenWidth, false);
resizeScreen();
initChart();
// 获取接口数据
getData();
// 调用Echarts图表自适应方法
screenAdapter();
// Echarts图表自适应
window.addEventListener("resize", screenAdapter);
getDataTimer();
})
onBeforeUnmount(() => {
// 销毁Echarts图表
chartInstance.value.dispose();
chartInstance.value = null;
})
onUnmounted(() => {
// 清除自适应屏幕定时器
clearInterval(screenTimer.value);
screenTimer.value = null;
// 清除局部刷新定时器
clearInterval(dataTimer.value);
dataTimer.value = null;
// 页面大小改变时触发销毁
window.removeEventListener('resize',getScreenHeight, false);
// 页面大小改变时触发销毁
window.removeEventListener('resize',getScreenWidth, false);
// Echarts图表自适应销毁
window.removeEventListener("resize", screenAdapter);
})
// 自适应浏览器获取宽高大小定时器
const resizeScreen = () => {
screenTimer.value = setInterval(() => {
getScreenHeight();
getScreenWidth();
}, 200)
}
// 获取浏览器高度进行自适应
const getScreenHeight = () => {
screenHeight.value = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
YHOne.value = Math.round(screenHeight.value * 0.18);
}
// 字体大小根据宽度自适应
const getScreenWidth = () => {
screenWidth.value = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
// 浏览器字体计算
kFOne.value = Math.round(screenWidth.value / 100);
// 浏览器宽度宽度
kWOne = screenWidth;
}
const initChart = () => {
// 覆盖默认主题
echarts.registerTheme('myTheme', skin);
// 定义实例
chartInstance.value = echarts.init(refChart.value, 'myTheme');
const initOption = {
title: {
text: "省直资产排名",
top: '1%'
},
grid: {
top: "16%",
left: "6%",
bottom: "15%",
right: "2%"
},
tooltip: {
show: false,
},
legend: {
data: [],//'柱形耗电量', '折线耗电量'
right: "5%",
},
xAxis: [
{
type: 'category',
axisPointer: {
type: 'shadow'
}
}
],
yAxis: [
{
min: 0,
max: 1500,
interval: 500,
type: 'value'
}
],
series: [
{
name: '排名',
type: 'bar',
tooltip: {
valueFormatter: function (value: any) {
return value + ' V';
}
}
},
{
name: '折线',
type: 'line',
tooltip: {
valueFormatter: function (value: any) {
return value + ' V';
}
},
// 圆滑连接
smooth: true,
itemStyle: {
color: '#00f2f1' // 线颜色
}
}
]
};
// 图表初始化配置
chartInstance.value.setOption(initOption);
}
const getData = () => {
allData1.value = [];
allData2.value = [];
let num1 = randomNum(100,200);
let num2 = randomNum(200,500);
let num3 = randomNum(200,500);
let num4 = randomNum(500,700);
let num5 = randomNum(500,700);
allData1.value = [
"省信息中心",
"省政务服务办",
"省人力资源和社会保障厅",
"省政府公厅",
"省市场监督局",
]
allData2.value.push(num1,num2,num3,num4,num5);
// 调用接口方法
// listTenDayData().then(res => {
// allData = res.data;
// updateChart();
// //console.log("ALLDATA->"+JSON.stringify(allData.pcsSum));
// // echarts查不到数据,将初始化echarts的方法全部放置到接口方法中即可。
// })
// 获取服务器的数据, 对allData进行赋值之后, 调用updateChart方法更新图表
//console.log("ALLDATA->",JSON.stringify(res.data))
//console.log("ALLDATA->",JSON.stringify(allData))
updateChart();
}
const updateChart = () => {
const colorArr = [
["#0BA82C", "#4FF778"],
["#2E72BF", "#23E5E5"],
["#5052EE", "#AB6EE5"],
["hotpink", "lightsalmon"],
];
// 处理图表需要的数据
const dataOption = {
xAxis: {
// x轴刻度文字
data: allData1.value
},
series: [
{
// y轴柱形数据
data: allData2.value,
itemStyle: {
//颜色样式部分
normal: {
label: {
show: true, //开启数字显示
position: "top", //在上方显示数字
textStyle: {
//数值样式
color: "lightpink", //字体颜色
//fontSize: 10, //字体大小
},
},
// 柱状图颜色渐变
color: (arg: any) => {
let targetColorArr = null;
if (arg.value > 700) {
targetColorArr = colorArr[0];
} else if (arg.value > 500) {
targetColorArr = colorArr[1];
} else if (arg.value > 200) {
targetColorArr = colorArr[2];
} else {
targetColorArr = colorArr[3];
}
return new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: targetColorArr[0],
},
{
offset: 1,
color: targetColorArr[1],
},
]);
},
},
}
},
{
// y轴折线数据
data: allData2.value
}
]
};
// 图表数据变化配置
chartInstance.value.setOption(dataOption);
}
const screenAdapter = () => {
let titleFontSize = Math.round(refChart.value.offsetWidth / 50);
const adapterOption = {
title: {
textStyle: {
fontSize: titleFontSize,
},
},
// 圆点分类标题
legend: {
textStyle: {
fontSize: titleFontSize,
},
},
xAxis: {
// 改变x轴字体颜色和大小
axisLabel: {
interval: 0, // 显示全部刻度标签
formatter: function(value) {
if (value.length > 5) {
return value.substring(0, 4) + '\n' + value.substring(4);
} else {
return value;
}
},
textStyle: {
fontSize: Math.round(titleFontSize * 0.9),
},
},
},
yAxis: {
// 改变y轴字体颜色和大小
axisLabel: {
textStyle: {
fontSize: Math.round(titleFontSize * 0.9),
},
},
},
series: [ // 双柱的话复制粘贴一份即可
{
barWidth: Math.round(titleFontSize * 1.2), // 圆柱的宽度
itemStyle: {
normal: {
label: {
textStyle: {
fontSize: Math.round(titleFontSize), //字体大小
},
},
},
},
}
],
};
// 图表自适应变化配置
chartInstance.value.setOption(adapterOption);
// 手动的调用图表对象的resize 才能产生效果
chartInstance.value.resize();
}
// 定时器
const getDataTimer = () => {
dataTimer.value = setInterval(() => {
getData();
}, 3000)
}
</script>
<style lang='scss' scoped>
</style>
\ No newline at end of file
<!-- echarts模板,有局部刷新需要在mounted自行开启 -->
<template>
<div ref="refChart" :style="{ height: YHOne + 'px'}"></div>
</template>
<script setup lang="ts">
// 导入vue状态
import { reactive, ref, onMounted, onBeforeMount, onBeforeUnmount, onUnmounted } from 'vue';
import * as echarts from 'echarts';
// 导入echarts皮肤
import skin from '@/assets/theme/skin';
// const henanJson = import("@/assets/map/henan.json");
import henanData from '@/assets/map/henan.json';
type henanData = {};
const henanJson = henanData as henanData;
// 获取ref
let refChart = ref<any>()
// 获取浏览器可视区域高度(包含滚动条)、 window.innerHeight
// 获取浏览器可视区域高度(不包含工具栏高度)、document.documentElement.clientHeight
// 获取body的实际高度 (三个都是相同,兼容性不同的浏览器而设置的) document.body.clientHeight
let screenHeight = ref(window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight);
let screenWidth = ref(window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth);
let chartInstance = ref();
const allData = ref({
安阳: [
"王者荣耀:84041",
"和平精英:77606",
"QQ飞车:2798",
"羊了个羊:3141",
"蛋仔派对:15",
"天天酷跑:453",
"植物VS僵尸:28",
],
许昌: [
"王者荣耀:50590",
"和平精英:48069",
"QQ飞车:1027",
"羊了个羊:1158",
"蛋仔派对:15",
"天天酷跑:295",
"植物VS僵尸:26",
],
漯河: [
"王者荣耀:26072",
"和平精英:25082",
"羊了个羊:734",
"蛋仔派对:21",
"天天酷跑:211",
"植物VS僵尸:24",
],
开封: [
"王者荣耀:64574",
"和平精英:62505",
"羊了个羊:1747",
"蛋仔派对:14",
"天天酷跑:282",
"植物VS僵尸:26",
],
濮阳: [
"王者荣耀:65219",
"和平精英:60310",
"QQ飞车:2975",
"羊了个羊:1510",
"蛋仔派对:15",
"天天酷跑:385",
"植物VS僵尸:24",
],
鹤壁: [
"王者荣耀:29455",
"和平精英:27847",
"QQ飞车:7458",
"羊了个羊:1448",
"蛋仔派对:9",
"天天酷跑:127",
"植物VS僵尸:24",
],
济源: [
"王者荣耀:10483",
"和平精英:9258",
"QQ飞车:834",
"羊了个羊:282",
"蛋仔派对:999",
"天天酷跑:85",
"植物VS僵尸:24",
],
驻马店: [
"王者荣耀:84482",
"和平精英:77147",
"QQ飞车:4746",
"羊了个羊:2153",
"蛋仔派对:23",
"天天酷跑:389",
"植物VS僵尸:24",
],
周口: [
"王者荣耀:87770",
"和平精英:82320",
"QQ飞车:2459",
"羊了个羊:2484",
"蛋仔派对:25",
"天天酷跑:456",
"植物VS僵尸:26",
],
洛阳: [
"王者荣耀:72752",
"和平精英:66219",
"QQ飞车:4139",
"羊了个羊:1796",
"蛋仔派对:23",
"天天酷跑:547",
"植物VS僵尸:28",
],
三门峡: [
"王者荣耀:29873",
"和平精英:28556",
"QQ飞车:264",
"羊了个羊:778",
"蛋仔派对:13",
"天天酷跑:236",
"植物VS僵尸:26",
],
南阳: [
"王者荣耀:114495",
"和平精英:105965",
"QQ飞车:5501",
"羊了个羊:2603",
"蛋仔派对:27",
"天天酷跑:371",
"植物VS僵尸:28",
],
商丘: [
"王者荣耀:84995",
"和平精英:77406",
"QQ飞车:4872",
"羊了个羊:2314",
"蛋仔派对:1",
"天天酷跑:376",
"植物VS僵尸:26",
],
信阳: [
"王者荣耀:71743",
"和平精英:68256",
"QQ飞车:1499",
"羊了个羊:1473",
"蛋仔派对:21",
"天天酷跑:468",
"植物VS僵尸:26",
],
焦作: [
"王者荣耀:58408",
"和平精英:54548",
"QQ飞车:1624",
"羊了个羊:1928",
"蛋仔派对:15",
"天天酷跑:269",
"植物VS僵尸:24",
],
平顶山: [
"王者荣耀:50144",
"和平精英:46507",
"QQ飞车:1499",
"羊了个羊:1718",
"蛋仔派对:15",
"天天酷跑:379",
"植物VS僵尸:26",
],
郑州: [
"王者荣耀:123603",
"和平精英:113985",
"QQ飞车:5554",
"羊了个羊:1929",
"蛋仔派对:63",
"天天酷跑:1698",
"植物VS僵尸:374",
],
新乡: [
"王者荣耀:97748",
"和平精英:91866",
"QQ飞车:2807",
"羊了个羊:2625",
"蛋仔派对:31",
"天天酷跑:393",
"植物VS僵尸:26"
]
});
let YHOne = ref();
// 自适应浏览器获取宽高大小定时器
const screenTimer = ref();
// 局部刷新tooltip定时器
const tooltipTimer = ref();
onBeforeMount( () => {
// Echarts页面加载进来时,首先设置高度进行显示图表进行初始化
YHOne.value = Math.round(screenHeight.value * 0.45);
})
onMounted( () => {
// 页面大小改变时触发
window.addEventListener('resize',getScreenHeight, false);
// 页面大小改变时触发
window.addEventListener('resize',getScreenWidth, false);
// 鼠标移动时触发
//window.addEventListener('mousemove',getHeight, false);
// 自适应浏览器获取宽高大小定时器
resizeScreen();
// 图表初始化
initChart(allData.value);
// 获取接口数据
getData();
// 调用Echarts图表自适应方法
screenAdapter();
// Echarts图表自适应
window.addEventListener("resize", screenAdapter);
// 局部刷新定时器
gettooltipTimer();
})
onBeforeUnmount(() => {
// 销毁Echarts图表
chartInstance.value.dispose();
chartInstance.value = null;
})
onUnmounted(() => {
// 清除自适应屏幕定时器
clearInterval(screenTimer.value);
screenTimer.value = null;
// 清除局部刷新定时器
clearInterval(tooltipTimer.value);
tooltipTimer.value = null;
// 页面大小改变时触发销毁
window.removeEventListener('resize',getScreenHeight, false);
// 页面大小改变时触发销毁
window.removeEventListener('resize',getScreenWidth, false);
// Echarts图表自适应销毁
window.removeEventListener("resize", screenAdapter);
})
// 自适应浏览器获取宽高大小定时器
const resizeScreen = () => {
screenTimer.value = setInterval(() => {
getScreenHeight();
getScreenWidth();
}, 200)
}
// 获取浏览器高度进行自适应
const getScreenHeight = () => {
screenHeight.value = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
// 四舍五入取整数
YHOne.value = Math.round(screenHeight.value * 0.45);
//console.log("高度->"+screenHeight +"-"+ YHOne);
}
// 字体大小根据宽度自适应
const getScreenWidth = () => {
screenWidth.value = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
//console.log("宽度->"+screenWidth);
}
const initChart = (data: any) => {
// 覆盖默认主题
echarts.registerTheme('myTheme', skin);
// 定义实例
chartInstance.value = echarts.init(refChart.value, 'myTheme');
// 河南地图
echarts.registerMap("henan", henanJson);
const initOption = {
title: {
text: "🌻各地市玩家游戏数据(每周)",
},
tooltip: {
trigger: "item",
axisPointer: {
type: "cross",
label: {
backgroundColor: "#6a7985",
},
},
formatter: function (params: any) {
if (params.name == "安阳") {
let yu = "<span style='color: deepskyblue;font-weight: bold'>" + "河南省&nbsp;&nbsp;&nbsp;&nbsp;"+ "</span>" + "<span style='color: darkturquoise;font-weight: bold'>" + params.name + "</span>" ;
for (let a = 0; a < data.安阳.length; a++) {
yu +=
"<p style='text-align:left;color: white';font-weight: bold>" + data.安阳[a] + "</p>";
}
return yu;
} else if (params.name == "鹤壁") {
let yu = "<span style='color: deepskyblue;font-weight: bold'>" + "河南省&nbsp;&nbsp;&nbsp;&nbsp;"+ "</span>" + "<span style='color: darkturquoise;font-weight: bold'>" + params.name + "</span>" ;
for (let a = 0; a < data.鹤壁.length; a++) {
yu +=
"<p style='text-align:left;color: white';font-weight: bold>" + data.鹤壁[a] + "</p>";
}
return yu;
} else if (params.name == "济源") {
let yu = "<span style='color: deepskyblue;font-weight: bold'>" + "河南省&nbsp;&nbsp;&nbsp;&nbsp;"+ "</span>" + "<span style='color: darkturquoise;font-weight: bold'>" + params.name + "</span>" ;
for (let a = 0; a < data.济源.length; a++) {
yu +=
"<p style='text-align:left;color: white';font-weight: bold>" + data.济源[a] + "</p>";
}
return yu;
} else if (params.name == "焦作") {
let yu = "<span style='color: deepskyblue;font-weight: bold'>" + "河南省&nbsp;&nbsp;&nbsp;&nbsp;"+ "</span>" + "<span style='color: darkturquoise;font-weight: bold'>" + params.name + "</span>" ;
for (let a = 0; a < data.焦作.length; a++) {
yu +=
"<p style='text-align:left;color: white';font-weight: bold>" + data.焦作[a] + "</p>";
}
return yu;
} else if (params.name == "开封") {
let yu = "<span style='color: deepskyblue;font-weight: bold'>" + "河南省&nbsp;&nbsp;&nbsp;&nbsp;"+ "</span>" + "<span style='color: darkturquoise;font-weight: bold'>" + params.name + "</span>" ;
for (let a = 0; a < data.开封.length; a++) {
yu +=
"<p style='text-align:left;color: white';font-weight: bold>" + data.开封[a] + "</p>";
}
return yu;
} else if (params.name == "洛阳") {
let yu = "<span style='color: deepskyblue;font-weight: bold'>" + "河南省&nbsp;&nbsp;&nbsp;&nbsp;"+ "</span>" + "<span style='color: darkturquoise;font-weight: bold'>" + params.name + "</span>" ;
for (let a = 0; a < data.洛阳.length; a++) {
yu +=
"<p style='text-align:left;color: white';font-weight: bold>" + data.洛阳[a] + "</p>";
}
return yu;
} else if (params.name == "漯河") {
let yu = "<span style='color: deepskyblue;font-weight: bold'>" + "河南省&nbsp;&nbsp;&nbsp;&nbsp;"+ "</span>" + "<span style='color: darkturquoise;font-weight: bold'>" + params.name + "</span>" ;
for (let a = 0; a < data.漯河.length; a++) {
yu +=
"<p style='text-align:left;color: white';font-weight: bold>" + data.漯河[a] + "</p>";
}
return yu;
} else if (params.name == "南阳") {
let yu = "<span style='color: deepskyblue;font-weight: bold'>" + "河南省&nbsp;&nbsp;&nbsp;&nbsp;"+ "</span>" + "<span style='color: darkturquoise;font-weight: bold'>" + params.name + "</span>" ;
for (let a = 0; a < data.南阳.length; a++) {
yu +=
"<p style='text-align:left;color: white';font-weight: bold>" + data.南阳[a] + "</p>";
}
return yu;
} else if (params.name == "平顶山") {
let yu = "<span style='color: deepskyblue;font-weight: bold'>" + "河南省&nbsp;&nbsp;&nbsp;&nbsp;"+ "</span>" + "<span style='color: darkturquoise;font-weight: bold'>" + params.name + "</span>" ;
for (let a = 0; a < data.平顶山.length; a++) {
yu +=
"<p style='text-align:left;color: white';font-weight: bold>" + data.平顶山[a] + "</p>";
}
return yu;
} else if (params.name == "濮阳") {
let yu = "<span style='color: deepskyblue;font-weight: bold'>" + "河南省&nbsp;&nbsp;&nbsp;&nbsp;"+ "</span>" + "<span style='color: darkturquoise;font-weight: bold'>" + params.name + "</span>" ;
for (let a = 0; a < data.濮阳.length; a++) {
yu +=
"<p style='text-align:left;color: white';font-weight: bold>" + data.濮阳[a] + "</p>";
}
return yu;
} else if (params.name == "三门峡") {
let yu = "<span style='color: deepskyblue;font-weight: bold'>" + "河南省&nbsp;&nbsp;&nbsp;&nbsp;"+ "</span>" + "<span style='color: darkturquoise;font-weight: bold'>" + params.name + "</span>" ;
for (let a = 0; a < data.三门峡.length; a++) {
yu +=
"<p style='text-align:left;color: white';font-weight: bold>" + data.三门峡[a] + "</p>";
}
return yu;
} else if (params.name == "商丘") {
let yu = "<span style='color: deepskyblue;font-weight: bold'>" + "河南省&nbsp;&nbsp;&nbsp;&nbsp;"+ "</span>" + "<span style='color: darkturquoise;font-weight: bold'>" + params.name + "</span>" ;
for (let a = 0; a < data.商丘.length; a++) {
yu +=
"<p style='text-align:left;color: white';font-weight: bold>" + data.商丘[a] + "</p>";
}
return yu;
} else if (params.name == "新乡") {
let yu = "<span style='color: deepskyblue;font-weight: bold'>" + "河南省&nbsp;&nbsp;&nbsp;&nbsp;"+ "</span>" + "<span style='color: darkturquoise;font-weight: bold'>" + params.name + "</span>" ;
for (let a = 0; a < data.新乡.length; a++) {
yu +=
"<p style='text-align:left;color: white';font-weight: bold>" + data.新乡[a] + "</p>";
}
return yu;
} else if (params.name == "信阳") {
let yu = "<span style='color: deepskyblue;font-weight: bold'>" + "河南省&nbsp;&nbsp;&nbsp;&nbsp;"+ "</span>" + "<span style='color: darkturquoise;font-weight: bold'>" + params.name + "</span>" ;
for (let a = 0; a < data.信阳.length; a++) {
yu +=
"<p style='text-align:left;color: white';font-weight: bold>" + data.信阳[a] + "</p>";
}
return yu;
} else if (params.name == "许昌") {
let yu = "<span style='color: deepskyblue;font-weight: bold'>" + "河南省&nbsp;&nbsp;&nbsp;&nbsp;"+ "</span>" + "<span style='color: darkturquoise;font-weight: bold'>" + params.name + "</span>" ;
for (let a = 0; a < data.许昌.length; a++) {
yu +=
"<p style='text-align:left;color: white';font-weight: bold>" + data.许昌[a] + "</p>";
}
return yu;
} else if (params.name == "郑州") {
let yu = "<span style='color: deepskyblue;font-weight: bold'>" + "河南省&nbsp;&nbsp;&nbsp;&nbsp;"+ "</span>" + "<span style='color: darkturquoise;font-weight: bold'>" + params.name + "</span>" ;
for (let a = 0; a < data.郑州.length; a++) {
yu +=
"<p style='text-align:left;color: white';font-weight: bold>" + data.郑州[a] + "</p>";
}
return yu;
} else if (params.name == "周口") {
let yu = "<span style='color: deepskyblue;font-weight: bold'>" + "河南省&nbsp;&nbsp;&nbsp;&nbsp;"+ "</span>" + "<span style='color: darkturquoise;font-weight: bold'>" + params.name + "</span>" ;
for (let a = 0; a < data.周口.length; a++) {
yu +=
"<p style='text-align:left;color: white';font-weight: bold>" + data.周口[a] + "</p>";
}
return yu;
} else {
let yu = "<span style='color: deepskyblue;font-weight: bold'>" + "河南省&nbsp;&nbsp;&nbsp;&nbsp;"+ "</span>" + "<span style='color: darkturquoise;font-weight: bold'>" + params.name + "</span>" ;
for (let a = 0; a < data.驻马店.length; a++) {
yu +=
"<p style='text-align:left;color: white';font-weight: bold>" + data.驻马店[a] + "</p>";
}
return yu;
}
},
confine: true,
},
geo: {
map: "henan",
roam: false, //不开启缩放和平移
show: true,
silent: true,
zlevel: 1,
regions: [
{
// 重点 部分 ,在这里给大家模拟一个省份颜色与界线颜色的修改,如果想修改多个省份就在后面多添加几个对象即可.
name: "郑州", // 对应的是import "./china" 数据中的名称如: name: "广东省"(下面有截图)
itemStyle: {
normal: {
opacity: 0.5, // 透明度
borderColor: "#acb159", // 省份界线颜色
borderWidth: 0.5, // 省份界线的宽度
areaColor: "#F2501F", // 城市颜色
},
},
},
{
// 重点 部分 ,在这里给大家模拟一个省份颜色与界线颜色的修改,如果想修改多个省份就在后面多添加几个对象即可.
name: "开封", // 对应的是import "./china" 数据中的名称如: name: "广东省"(下面有截图)
itemStyle: {
normal: {
opacity: 0.5, // 透明度
borderColor: "#acb159", // 省份界线颜色
borderWidth: 0.5, // 省份界线的宽度
areaColor: "#AF298B", // 整个省份的颜色
},
},
},
{
// 重点 部分 ,在这里给大家模拟一个省份颜色与界线颜色的修改,如果想修改多个省份就在后面多添加几个对象即可.
name: "信阳", // 对应的是import "./china" 数据中的名称如: name: "广东省"(下面有截图)
itemStyle: {
normal: {
opacity: 0.5, // 透明度
borderColor: "#acb159", // 省份界线颜色
borderWidth: 0.5, // 省份界线的宽度
areaColor: "#6739B6", // 整个省份的颜色
},
},
},
{
// 重点 部分 ,在这里给大家模拟一个省份颜色与界线颜色的修改,如果想修改多个省份就在后面多添加几个对象即可.
name: "驻马店", // 对应的是import "./china" 数据中的名称如: name: "广东省"(下面有截图)
itemStyle: {
normal: {
opacity: 0.5, // 透明度
borderColor: "#acb159", // 省份界线颜色
borderWidth: 0.5, // 省份界线的宽度
areaColor: "#39B54A", // 整个省份的颜色
},
},
},
{
// 重点 部分 ,在这里给大家模拟一个省份颜色与界线颜色的修改,如果想修改多个省份就在后面多添加几个对象即可.
name: "南阳", // 对应的是import "./china" 数据中的名称如: name: "广东省"(下面有截图)
itemStyle: {
normal: {
opacity: 0.5, // 透明度
borderColor: "#e6731c", // 省份界线颜色
borderWidth: 0.5, // 省份界线的宽度
areaColor: "#F37B1D", // 整个省份的颜色
},
},
},
{
// 重点 部分 ,在这里给大家模拟一个省份颜色与界线颜色的修改,如果想修改多个省份就在后面多添加几个对象即可.
name: "周口", // 对应的是import "./china" 数据中的名称如: name: "广东省"(下面有截图)
itemStyle: {
normal: {
opacity: 0.5, // 透明度
borderColor: "#e6731c", // 省份界线颜色
borderWidth: 0.5, // 省份界线的宽度
areaColor: "#0081FF", // 整个省份的颜色
},
},
},
{
// 重点 部分 ,在这里给大家模拟一个省份颜色与界线颜色的修改,如果想修改多个省份就在后面多添加几个对象即可.
name: "平顶山", // 对应的是import "./china" 数据中的名称如: name: "广东省"(下面有截图)
itemStyle: {
normal: {
opacity: 0.5, // 透明度
borderColor: "#e6731c", // 省份界线颜色
borderWidth: 0.5, // 省份界线的宽度
areaColor: "#D6E029", // 整个省份的颜色
},
},
},
{
// 重点 部分 ,在这里给大家模拟一个省份颜色与界线颜色的修改,如果想修改多个省份就在后面多添加几个对象即可.
name: "漯河", // 对应的是import "./china" 数据中的名称如: name: "广东省"(下面有截图)
itemStyle: {
normal: {
opacity: 0.5, // 透明度
borderColor: "#e6731c", // 省份界线颜色
borderWidth: 0.5, // 省份界线的宽度
areaColor: "#1FF2CB", // 整个省份的颜色
},
},
},
{
// 重点 部分 ,在这里给大家模拟一个省份颜色与界线颜色的修改,如果想修改多个省份就在后面多添加几个对象即可.
name: "许昌", // 对应的是import "./china" 数据中的名称如: name: "广东省"(下面有截图)
itemStyle: {
normal: {
opacity: 0.5, // 透明度
borderColor: "#e6731c", // 省份界线颜色
borderWidth: 0.5, // 省份界线的宽度
areaColor: "#89AF29", // 整个省份的颜色
},
},
},
{
// 重点 部分 ,在这里给大家模拟一个省份颜色与界线颜色的修改,如果想修改多个省份就在后面多添加几个对象即可.
name: "洛阳", // 对应的是import "./china" 数据中的名称如: name: "广东省"(下面有截图)
itemStyle: {
normal: {
opacity: 0.5, // 透明度
borderColor: "#e6731c", // 省份界线颜色
borderWidth: 0.5, // 省份界线的宽度
areaColor: "#9C26B0", // 整个省份的颜色
},
},
},
{
// 重点 部分 ,在这里给大家模拟一个省份颜色与界线颜色的修改,如果想修改多个省份就在后面多添加几个对象即可.
name: "三门峡", // 对应的是import "./china" 数据中的名称如: name: "广东省"(下面有截图)
itemStyle: {
normal: {
opacity: 0.5, // 透明度
borderColor: "#e6731c", // 省份界线颜色
borderWidth: 0.5, // 省份界线的宽度
areaColor: "#21D1F2", // 整个省份的颜色
},
},
},
{
// 重点 部分 ,在这里给大家模拟一个省份颜色与界线颜色的修改,如果想修改多个省份就在后面多添加几个对象即可.
name: "济源", // 对应的是import "./china" 数据中的名称如: name: "广东省"(下面有截图)
itemStyle: {
normal: {
opacity: 0.5, // 透明度
borderColor: "#e6731c", // 省份界线颜色
borderWidth: 0.5, // 省份界线的宽度
areaColor: "#24A7F2", // 整个省份的颜色
},
},
},
{
// 重点 部分 ,在这里给大家模拟一个省份颜色与界线颜色的修改,如果想修改多个省份就在后面多添加几个对象即可.
name: "新乡", // 对应的是import "./china" 数据中的名称如: name: "广东省"(下面有截图)
itemStyle: {
normal: {
opacity: 0.5, // 透明度
borderColor: "#e6731c", // 省份界线颜色
borderWidth: 0.5, // 省份界线的宽度
areaColor: "#FBBD08", // 整个省份的颜色
},
},
},
{
// 重点 部分 ,在这里给大家模拟一个省份颜色与界线颜色的修改,如果想修改多个省份就在后面多添加几个对象即可.
name: "焦作", // 对应的是import "./china" 数据中的名称如: name: "广东省"(下面有截图)
itemStyle: {
normal: {
opacity: 0.5, // 透明度
borderColor: "#e6731c", // 省份界线颜色
borderWidth: 0.5, // 省份界线的宽度
areaColor: "#A5673F", // 整个省份的颜色
},
},
},
{
// 重点 部分 ,在这里给大家模拟一个省份颜色与界线颜色的修改,如果想修改多个省份就在后面多添加几个对象即可.
name: "安阳", // 对应的是import "./china" 数据中的名称如: name: "广东省"(下面有截图)
itemStyle: {
normal: {
opacity: 0.5, // 透明度
borderColor: "#e6731c", // 省份界线颜色
borderWidth: 0.5, // 省份界线的宽度
areaColor: "#A7F22E", // 整个省份的颜色
},
},
},
{
// 重点 部分 ,在这里给大家模拟一个省份颜色与界线颜色的修改,如果想修改多个省份就在后面多添加几个对象即可.
name: "鹤壁", // 对应的是import "./china" 数据中的名称如: name: "广东省"(下面有截图)
itemStyle: {
normal: {
opacity: 0.5, // 透明度
borderColor: "#e6731c", // 省份界线颜色
borderWidth: 0.5, // 省份界线的宽度
areaColor: "#AFAA29", // 整个省份的颜色
},
},
},
{
// 重点 部分 ,在这里给大家模拟一个省份颜色与界线颜色的修改,如果想修改多个省份就在后面多添加几个对象即可.
name: "濮阳", // 对应的是import "./china" 数据中的名称如: name: "广东省"(下面有截图)
itemStyle: {
normal: {
opacity: 0.5, // 透明度
borderColor: "#e6731c", // 省份界线颜色
borderWidth: 0.5, // 省份界线的宽度
areaColor: "#E03997", // 整个省份的颜色
},
},
},
{
// 重点 部分 ,在这里给大家模拟一个省份颜色与界线颜色的修改,如果想修改多个省份就在后面多添加几个对象即可.
name: "商丘", // 对应的是import "./china" 数据中的名称如: name: "广东省"(下面有截图)
itemStyle: {
normal: {
opacity: 0.5, // 透明度
borderColor: "#e6731c", // 省份界线颜色
borderWidth: 0.5, // 省份界线的宽度
areaColor: "#1CBBB4", // 整个省份的颜色
},
},
},
],
},
series: [
{
name: "henan",
type: "map",
mapType: "henan", // 自定义扩展图表类型
// layoutCenter: ['50%', '50%'],
// layoutSize: "80%",
itemStyle: {
normal: {
borderWidth: 1, //区域边框宽度
borderColor: "#58B9E8", //区域边框颜色
areaColor: "#ffefd5", //区域颜色
label: {
show: true,
textStyle: {
color: "#000",
//fontWeight: 600,
//fontSize: 13,
},
},
},
emphasis: {
areaColor: "#13335A",
borderColor: "#89b7e5",
borderWidth: 1,
shadowOffsetY: 5,
shadowColor: "#1863DE",
label: {
show: true,
textStyle: {
color: "#fff",
},
},
},
},
},
],
};
// 图表初始化配置
chartInstance.value.setOption(initOption);
// 鼠标移入停止定时器
chartInstance.value.on("mouseover", () => {
clearInterval(tooltipTimer.value);
});
// 鼠标移入启动定时器
chartInstance.value.on("mouseout", () => {
gettooltipTimer();
});
}
const getData = () => {
// 调用接口方法
// getModuleData().then(res => {
// allData = res.data;
// updateChart();
// //console.log("ALLDATA->"+JSON.stringify(allData.pcsSum));
// // echarts查不到数据,将初始化echarts的方法全部放置到接口方法中即可。
// })
// 获取服务器的数据, 对allData进行赋值之后, 调用updateChart方法更新图表
//console.log("ALLDATA->",JSON.stringify(res.data))
//console.log("ALLDATA->",JSON.stringify(allData))
updateChart();
}
const updateChart = () => {
// 处理图表需要的数据
const dataOption = {};
// 图表数据变化配置
chartInstance.value.setOption(dataOption);
}
const screenAdapter = () => {
let titleFontSize = Math.round(refChart.value.offsetWidth / 50);
const adapterOption = {
title: {
textStyle: {
fontSize: Math.round(titleFontSize * 1.8),
},
},
series: [
{
itemStyle: {
normal: {
label: {
textStyle: {
fontWeight: Math.round(titleFontSize * 100),
fontSize: Math.round(titleFontSize * 1.2),
},
},
},
},
},
],
// // 圆点分类标题
// legend: {
// textStyle: {
// fontSize: Math.round(titleFontSize / 1.2),
// },
// },
// xAxis: {
// // 改变x轴字体颜色和大小
// axisLabel: {
// textStyle: {
// fontSize: Math.round(titleFontSize * 0.8),
// },
// },
// },
// yAxis: {
// // 改变y轴字体颜色和大小
// axisLabel: {
// textStyle: {
// fontSize: Math.round(titleFontSize * 0.8),
// },
// },
// },
};
// 图表自适应变化配置
chartInstance.value.setOption(adapterOption);
chartInstance.value.resize();
}
// 定时器
const gettooltipTimer = () => {
let index = 0; // 播放所在下标
tooltipTimer.value = setInterval(() => {
// 执行刷新数据的方法
getData();
// echarts实现定时播放tooltip
chartInstance.value.dispatchAction({
type: 'showTip',
seriesIndex: 0,
dataIndex: index
});
index++;
if(index > 18) {
index = 0;
}
//console.log("Hello World->"+allData.length)
}, 2000)
}
</script>
<style lang='scss' scoped>
</style>
\ No newline at end of file
<!-- 初始化代码 -->
<template>
<div id="center">
<div class="square">
<div class="item item1">
<dv-decoration-9 :style="{'font-size': Math.round(YFOne*0.9) + 'px', height: Math.round(YWOne*0.06) + 'px',width:Math.round(YWOne*0.06) + 'px'}">安全漏洞</dv-decoration-9>
</div>
<div class="item item2">
<dv-scroll-board :config="config" :style="{ height: Math.round(YHOne*0.88) + 'px',width: Math.round(YWOne*0.19) + 'px'}" />
</div>
</div>
</div>
</template>
<script setup lang="ts">
import { ref, reactive , onBeforeMount, onMounted, onUnmounted } from 'vue';
let screenHeight = ref(window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight)
let screenWidth = ref(window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth)
const config = reactive({
data: [
[ '配置错误漏洞', '988673'],
[ 'web服务器漏洞', '5876'],
['跨站脚本漏洞', '34'],
[ '系统命令注入漏洞', '874'],
[ 'sql注入漏洞', '85'],
[ 'sql注入漏洞1', '85'],
[ 'sql注入漏洞2', '85'],
],
index: true,
columnWidth: [50],
align: ['center']
})
// 浏览器高度
let YHOne = ref();
// 浏览器宽度
let YWOne = ref();
// 浏览器字体大小
let YFOne= ref();
const screenTimer = ref();
onBeforeMount( () => {
YHOne.value = Math.round(screenHeight.value * 0.14);
})
onMounted( () => {
window.addEventListener('resize', getScreenHeight);
window.addEventListener('resize', getScreenWidth);
resizeScreen();
// 获取接口数据
getData();
// 局部刷新定时器
//getDataTimer();
})
onUnmounted( () => {
// 清除自适应屏幕定时器
clearInterval(screenTimer.value);
screenTimer.value = null;
window.removeEventListener('resize', getScreenHeight, false);
window.removeEventListener('resize', getScreenWidth, false);
})
// 自适应浏览器获取宽高大小定时器
const resizeScreen = () => {
screenTimer.value = setInterval(() => {
getScreenHeight();
getScreenWidth();
}, 200)
}
// 获取浏览器高度进行自适应
const getScreenHeight = () => {
screenHeight.value = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
YHOne.value = Math.round(screenHeight.value * 0.14);
}
// 字体大小根据宽度自适应
const getScreenWidth = () => {
screenWidth.value = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
YFOne.value = Math.round(screenWidth.value / 100);
YWOne.value = screenWidth.value;
}
// 接口数据
const getData = () => {
// 调用接口方法
// getModuleData().then(res => {
// allData = res.data;
// //console.log("ALLDATA->"+JSON.stringify(allData.pcsSum));
// // echarts查不到数据,将初始化echarts的方法全部放置到接口方法中即可。
// })
// 获取服务器的数据, 对allData进行赋值之后, 调用updateChart方法更新图表
//console.log("ALLDATA->",JSON.stringify(res.data))
//console.log("ALLDATA->",JSON.stringify(allData))
}
// 定时器
const getDataTimer = () => {
screenTimer.value = setInterval(() => {
getData();
}, 3000)
}
</script>
<style lang='scss' scoped>
.margin-l {
// margin-left: 35%;
}
#center {
display: flex;
flex-direction: column;
.square {
width: 100%;
display: flex;
flex-wrap: wrap;
justify-content:center;
align-items: center;
.item{
&.item1{
width: 29.9%;
}
&.item2{
width: 69.9%;
}
// margin-top: 0.5%;
// margin-bottom: 0.5%;
}
}
}
// 字体颜色
// ::v-deep .dv-scroll-ranking-board .row-item {
// color: aqua;
// }
</style>
\ No newline at end of file
<!-- echarts模板,有局部刷新需要在mounted自行开启 -->
<template>
<div ref="refChart" :style="{ height: YHOne + 'px'}"></div>
</template>
<script setup lang="ts">
import { ref, onBeforeMount, onMounted, onBeforeUnmount ,onUnmounted } from 'vue';
import * as echarts from 'echarts';
// 导入echarts皮肤
import skin from '@/assets/theme/skin';
let refChart = ref<any>()
// 获取浏览器可视区域高度(包含滚动条)、 window.innerHeight
// 获取浏览器可视区域高度(不包含工具栏高度)、document.documentElement.clientHeight
// 获取body的实际高度 (三个都是相同,兼容性不同的浏览器而设置的) document.body.clientHeight
let screenHeight = ref(window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight);
let screenWidth = ref(window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth);
const chartInstance= ref()
let allData1 = ref([]);
let allData2 = ref([]);
// 浏览器高度
let YHOne = ref();
// 浏览器宽度
let YWOne = ref();
// 浏览器字体大小
let YFOne = ref();
// 自适应浏览器获取宽高大小定时器
const screenTimer = ref();
// 局部刷新定时器
const dataTimer = ref();
// tootip定时器ID-用于清除定时器
const tootipTimer = ref();
onBeforeMount( () => {
YHOne.value = Math.round(screenHeight.value * 0.18)
})
onMounted( () => {
window.addEventListener('resize',getScreenHeight, false);
window.addEventListener('resize',getScreenWidth, false);
resizeScreen();
initChart();
// 获取接口数据
getData();
// 调用Echarts图表自适应方法
screenAdapter();
// Echarts图表自适应
window.addEventListener("resize", screenAdapter);
// 局部刷新定时器
//getDataTimer();
// Tootip刷新定时器
getTootipTimer();
})
onBeforeUnmount(() => {
clearInterval(tootipTimer.value);
tootipTimer.value = null;
// 销毁Echarts图表
chartInstance.value.dispose();
chartInstance.value = null;
})
onUnmounted( () => {
// 清除自适应屏幕定时器
clearInterval(screenTimer.value);
screenTimer.value = null;
// 清除局部刷新定时器
clearInterval(dataTimer.value);
dataTimer.value = null;
window.removeEventListener('resize',getScreenHeight);
window.removeEventListener('resize',getScreenWidth);
// Echarts图表自适应销毁
window.removeEventListener("resize", screenAdapter);
})
// 自适应浏览器获取宽高大小定时器
const resizeScreen = () => {
screenTimer.value = setInterval(() => {
getScreenHeight();
getScreenWidth();
}, 200)
}
// 获取浏览器高度进行自适应
const getScreenHeight = () => {
screenHeight.value = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
YHOne.value = Math.round(screenHeight.value * 0.18);
}
// 字体大小根据宽度自适应
const getScreenWidth = () => {
screenWidth.value = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
// 浏览器字体计算
YFOne.value = Math.round(screenWidth.value / 100);
// 浏览器宽度宽度
YWOne.value = screenWidth;
}
const initChart = () => {
// 覆盖默认主题
echarts.registerTheme('myTheme', skin);
// 定义实例
chartInstance.value = echarts.init(refChart.value, 'myTheme');
const initOption = {
title: {
text: "网络攻击类型",
left: 'left'
},
tooltip: {
trigger: 'item',
},
legend: {
data: ['黑客工具', '漏洞攻击', '网站攻击','邮件攻击' , '账号暴力破解']
},
toolbox:{
show: true,
},
grid: {
top: '15%',
left: '1%',
right: '2%',
bottom: '26%',
containLabel: true,
},
color: ['#019688', '#119AC2'],
xAxis: [
{
type: 'category',
boundaryGap: false,
}
],
yAxis: [
{
type: 'value',
name: '',
axisTick: { // 轴刻度线
show: false,
},
// 刻度文字颜色
axisLabel: { color: '#808080' },
// y轴刻度设置
axisLine: {
lineStyle: {
width: 2,
color: '#019688',
},
},
// y轴分隔线设置
splitLine: {
lineStyle: {
color: 'rgba(226,226,226,0.5)',
},
},
},
],
series: [
{
name: '黑客工具',
type: 'line',
smooth: true,
symbolSize: 6,
areaStyle: {},
itemStyle: {
borderWidth: 2,
},
},
{
name: '漏洞攻击',
type: 'line',
smooth: true,
symbolSize: 6,
areaStyle: {},
itemStyle: {
borderWidth: 2,
},
},
{
name: '网站攻击',
type: 'line',
smooth: true,
symbolSize: 6,
areaStyle: {},
itemStyle: {
borderWidth: 2,
},
},
{
name: '邮件攻击',
type: 'line',
smooth: true,
symbolSize: 6,
areaStyle: {},
itemStyle: {
borderWidth: 2,
},
},
{
name: '账号暴力破解',
type: 'line',
smooth: true,
symbolSize: 6,
areaStyle: {},
itemStyle: {
borderWidth: 2,
},
},
],
};
// 图表初始化配置
chartInstance.value.setOption(initOption);
// 鼠标移入停止定时器
chartInstance.value.on("mouseover", () => {
clearInterval(tootipTimer.value);
});
// 鼠标移入启动定时器
chartInstance.value.on("mouseout", () => {
getTootipTimer();
});
}
const getData = () => {
// 调用接口方法
// getModuleData().then(res => {
// allData = res.data;
// updateChart();
// //console.log("ALLDATA->"+JSON.stringify(allData.pcsSum));
// // echarts查不到数据,将初始化echarts的方法全部放置到接口方法中即可。
// })
// 获取服务器的数据, 对allData进行赋值之后, 调用updateChart方法更新图表
//console.log("ALLDATA->",JSON.stringify(res.data))
//console.log("ALLDATA->",JSON.stringify(allData))
updateChart();
}
const updateChart = () => {
const dataOption = {
xAxis: [
{
data: ['2023.09.19', '2023.09.20', '2023.09.21', '2023.09.22','2023.09.23', '2023.09.24', '2023.09.25',]
}
],
series: [
{
data: [100,11233,456,11233,456,12933,4560]
},
{
data: [10011,11233,11456,11233,456,12933,4560]
},
{
data: [656,2333,98717,3444,2323,92933,12560]
},
{
data: [10011,71233,11456,61233,456,52933,14560]
},
{
data: [30011,91233,11456,31233,456,12933,4560]
},
],
};
// 图表数据变化配置
chartInstance.value.setOption(dataOption);
}
const screenAdapter = () => {
const titleFontSize = Math.round(refChart.value.offsetWidth / 50);
const adapterOption = {
title: {
textStyle: {
fontSize: titleFontSize,
},
},
// 圆点分类标题
legend: {
textStyle: {
fontSize: Math.round(titleFontSize / 1.2),
}
},
xAxis: {
axisLabel: {
textStyle: {
fontSize: Math.round(titleFontSize * 0.8),
},
},
},
yAxis: [
{
min: 0,
max: 100000,
interval: 25000,
type: 'value',
nameTextStyle: {
fontSize: titleFontSize
},
// 改变y轴字体颜色和大小
axisLabel: {
textStyle: {
fontSize: Math.round(titleFontSize * 0.8),
},
},
},
]
};
// 图表自适应变化配置
chartInstance.value.setOption(adapterOption);
chartInstance.value.resize();
}
// 定时器
const getDataTimer = () => {
dataTimer.value = setInterval(() => {
getData();
}, 3000)
}
// 定时器
const getTootipTimer = () => {
let index = 0; // 播放所在下标
tootipTimer.value = setInterval(() => {
// echarts实现定时播放tooltip
chartInstance.value.dispatchAction({
type: 'showTip',
seriesIndex: 0,
dataIndex: index
});
index++;
if(index > 12) {
index = 0;
}
}, 2000)
}
</script>
<style lang='scss' scoped>
</style>
\ No newline at end of file
<template>
<div>
<dv-scroll-board :config="config" :style="{ height: Math.round(YHOne*0.65) + 'px',width: Math.round(YWOne*0.27) + 'px'}" />
</div>
</template>
<script setup lang="ts">
import { ref, reactive , onBeforeMount, onMounted, onUnmounted } from 'vue';
let screenHeight = ref(window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight)
let screenWidth = ref(window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth)
const config = reactive({
header: ['工单编号', '工单类型', '工单名称','状态'],
data: [
[ '配置错误漏洞', '988673','','处理中'],
[ 'web服务器漏洞', '5876','','处理中'],
['跨站脚本漏洞', '34','','处理中'],
[ '系统命令注入漏洞', '874','','处理中'],
[ 'sql注入漏洞', '85','','处理中'],
[ 'sql注入漏洞1', '85','','处理中'],
[ 'sql注入漏洞2', '85','','处理中'],
],
index: false,
headerHeight: 15,
columnWidth: [160,150,200,80],
align: ['left']
})
let YHOne = ref();
let YWOne = ref();
let YFOne= ref();
const screenTimer = ref();
onBeforeMount( () => {
YHOne.value = Math.round(screenHeight.value * 0.14);
})
onMounted( () => {
window.addEventListener('resize', getScreenHeight);
window.addEventListener('resize', getScreenWidth);
resizeScreen();
getData();
// 局部刷新定时器
//getDataTimer();
})
onUnmounted( () => {
// 清除自适应屏幕定时器
clearInterval(screenTimer.value);
screenTimer.value = null;
window.removeEventListener('resize', getScreenHeight, false);
window.removeEventListener('resize', getScreenWidth, false);
})
// 自适应浏览器获取宽高大小定时器
const resizeScreen = () => {
screenTimer.value = setInterval(() => {
getScreenHeight();
getScreenWidth();
}, 200)
}
// 获取浏览器高度进行自适应
const getScreenHeight = () => {
screenHeight.value = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
YHOne.value = Math.round(screenHeight.value * 0.14);
}
// 字体大小根据宽度自适应
const getScreenWidth = () => {
screenWidth.value = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
YFOne.value = Math.round(screenWidth.value / 100);
YWOne.value = screenWidth.value;
}
// 接口数据
const getData = () => {
// 调用接口方法
// getModuleData().then(res => {
// allData = res.data;
// //console.log("ALLDATA->"+JSON.stringify(allData.pcsSum));
// // echarts查不到数据,将初始化echarts的方法全部放置到接口方法中即可。
// })
// 获取服务器的数据, 对allData进行赋值之后, 调用updateChart方法更新图表
//console.log("ALLDATA->",JSON.stringify(res.data))
//console.log("ALLDATA->",JSON.stringify(allData))
}
// 定时器
const getDataTimer = () => {
screenTimer.value = setInterval(() => {
getData();
}, 3000)
}
</script>
<style lang='scss' scoped>
.margin-l {
// margin-left: 35%;
}
// 字体颜色
// ::v-deep .dv-scroll-ranking-board .row-item {
// color: aqua;
// }
</style>
\ No newline at end of file
var customFunc = function(echarts, myChart, option) {
/* 当前echarts版本V5.1.1 */
option = {
"backgroundColor": "",
"animationEasing": "cubicOut",
"xAxis": {
"axisLabel": {
"rotate": 0,
"color": "rgba(255, 255, 255, 1)",
"legendLen": 0,
"show": true,
"fontSize": 14,
"interval": 0,
formatter: function(value) {
if (value.length > 5) {
return value.substring(0, 4) + '\n' + value.substring(4);
} else {
return value;
}
},
"fontWeight": "normal"
},
"data": [
"省信息中心",
"省政服务办",
"省人力资源和社会保障厅",
"省政府公厅",
"省市场监督局"
],
"axisLine": {
"lineStyle": {
"color": "#235EB3",
"width": 1
},
"show": true
},
"name": "",
"splitLine": {
"show": false
},
"axisTick": {
"show": false,
},
"type": "category",
"nameTextStyle": {
"color": "rgba(255, 255, 255, 1)",
"fontSize": 14,
"fontWeight": "normal"
}
},
"color": [
"#45a1f8",
"#a6ecf7",
"#4ea863",
"#aeea78",
"#eec14f",
],
"tooltip": {
"alwaysShowContent": false,
"backgroundColor": "rgba(50,50,50,0.7)",
"borderColor": "#333",
"triggerOn": "mousemove",
"formatterStr": "{}",
"show": true,
"className": "",
"trigger": "axis",
"enterable": false,
"borderWidth": 0,
"axisPointer": {
"type": "line",
"label": {
"backgroundColor": "#6a7985",
"color": "#fff"
}
},
"textStyle": {
"color": "#fff",
"fontSize": 14,
"fontWeight": "normal"
}
},
"animationDuration": 1000,
"yAxis": {
"name": "单位:万",
"nameTextStyle": {
"color": "#ebf8ac",
},
"axisLabel": {
"rotate": 0,
"color": "rgba(255, 255, 255, 1)",
"show": true,
"fontSize": 14,
"fontWeight": "normal"
},
"axisLine": {
"lineStyle": {
"color": "#235EB3",
"width": 1
},
"show": true
},
"splitLine": {
"show": false
},
"axisTick": {
"show": false,
},
"splitNumber": 5,
"type": "value",
"nameTextStyle": {
"color": "rgba(255, 255, 255, 1)",
"fontSize": 14,
"fontWeight": "normal"
}
},
"grid": {
"top": 50,
"left": 50,
"bottom": 30,
"right": 50
},
"series": [{
"name": "进货",
"type": "bar",
"data": [{
"value": 880,
"unit": ""
},
{
"value": 556,
"unit": ""
},
{
"value": 1122,
"unit": ""
},
{
"value": 226,
"unit": ""
},
{
"value": 222,
"unit": ""
},
],
"barGap": "30%",
"barWidth": 12,
"label": {
"show": false,
"position": "inside",
"color": "#fff",
"fontWeight": "normal",
"fontSize": 12
},
"markLineFlag": false,
"markLineAvgFlag": false,
"markLine": {
"data": [],
"symbol": "none",
"silent": true
},
"markPoint": {
"data": [],
"symbol": "none"
},
"itemStyle": {
"normal": {
"barBorderRadius": 30,
"color": new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
"offset": 0,
"color": "#FFD40A",
},
{
"offset": 1,
"color": "#FFD40A00",
},
]),
},
},
}],
"toolbox": {
"orient": "horizontal",
"feature": {
"saveAsImage": {
"show": false
},
"dataZoom": {
"show": false
},
"magicType": {
"show": false,
"type": [
"line",
"bar"
]
},
"dataView": {
"show": false
}
},
"show": true
},
"useAdvanceFlag": false,
"useAdvanceType": "config"
}
myChart.setOption(option, true)
}
\ No newline at end of file
<!-- echarts模板,有局部刷新需要在mounted自行开启 -->
<template>
<div>
<div class="title-list">
<div className='detail-list'>
<div className='detail-list-item' >
<img src="@/assets/images/center-details-data1.png"/>
<div className='detail-item-text'>
<h3>互联网出口流量</h3>
<span>523</span>
<span className='unit'>M</span>
</div>
</div>
<div className='detail-list-item' >
<img src="@/assets/images/center-details-data6.png"/>
<div className='detail-item-text'>
<h3>政务网出口流量</h3>
<span>50</span>
<span className='unit'>M</span>
</div>
</div>
</div>
</div>
<div ref="refChart" :style="{ height: YHOne + 'px'}"></div>
</div>
</template>
<script setup lang="ts">
import { ref, onBeforeMount, onMounted, onBeforeUnmount ,onUnmounted } from 'vue';
import * as echarts from 'echarts';
// 导入echarts皮肤
import skin from '@/assets/theme/skin';
let refChart = ref<any>()
let screenHeight = ref(window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight);
let screenWidth = ref(window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth);
const chartInstance= ref()
let allData1 = ref([]);
let allData2 = ref([]);
let YHOne = ref();
let YWOne = ref();
let YFOne = ref();
const screenTimer = ref();
// 局部刷新定时器
const dataTimer = ref();
// tootip定时器ID-用于清除定时器
const tootipTimer = ref();
onBeforeMount( () => {
YHOne.value = Math.round(screenHeight.value * 0.19)
})
onMounted( () => {
window.addEventListener('resize',getScreenHeight, false);
window.addEventListener('resize',getScreenWidth, false);
resizeScreen();
initChart();
// 获取接口数据
getData();
// 调用Echarts图表自适应方法
screenAdapter();
window.addEventListener("resize", screenAdapter);
// 局部刷新定时器
//getDataTimer();
})
onBeforeUnmount(() => {
clearInterval(tootipTimer.value);
tootipTimer.value = null;
chartInstance.value.dispose();
chartInstance.value = null;
})
onUnmounted( () => {
clearInterval(screenTimer.value);
screenTimer.value = null;
// 清除局部刷新定时器
clearInterval(dataTimer.value);
dataTimer.value = null;
window.removeEventListener('resize',getScreenHeight);
window.removeEventListener('resize',getScreenWidth);
window.removeEventListener("resize", screenAdapter);
})
// 自适应浏览器获取宽高大小定时器
const resizeScreen = () => {
screenTimer.value = setInterval(() => {
getScreenHeight();
getScreenWidth();
}, 200)
}
// 获取浏览器高度进行自适应
const getScreenHeight = () => {
screenHeight.value = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
YHOne.value = Math.round(screenHeight.value * 0.19);
}
// 字体大小根据宽度自适应
const getScreenWidth = () => {
screenWidth.value = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
// 浏览器字体计算
YFOne.value = Math.round(screenWidth.value / 100);
// 浏览器宽度宽度
YWOne.value = screenWidth;
}
const initChart = () => {
// 覆盖默认主题
echarts.registerTheme('myTheme', skin);
// 定义实例
chartInstance.value = echarts.init(refChart.value, 'myTheme');
const initOption = {
title: {
show:false
},
tooltip: {
trigger: 'axis',
axisPointer: {
lineStyle: {
color: {
type: 'linear',
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [
{
offset: 0,
color: 'rgba(0, 255, 233,0)',
},
{
offset: 0.5,
color: 'rgba(255, 255, 255,1)',
},
{
offset: 1,
color: 'rgba(0, 255, 233,0)',
},
],
global: false,
},
},
},
},
legend: {
data: ['互联网', '政务']
},
toolbox:{
show: true,
},
grid: {
top: '5%',
left: '1%',
right: '2%',
bottom: '15%',
containLabel: true,
},
color: ['#019688', '#119AC2'],
xAxis: [
{
type: 'category',
boundaryGap: false,
axisLine: {
show: true,
},
splitArea: {
color: '#f00',
lineStyle: {
color: '#f00',
},
},
}
],
yAxis: [
{
type: 'value',
name: '',
axisTick: { // 轴刻度线
show: false,
},
axisLabel: { color: '#808080' },
// y轴刻度设置
axisLine: {
lineStyle: {
width: 2,
color: '#019688',
},
},
// y轴分隔线设置
splitLine: {
lineStyle: {
color: 'rgba(226,226,226,0.5)',
},
},
},
],
series: [
{
name: '互联网',
type: 'line',
smooth: true,
symbolSize: 0,
label: {
show: false,
position: 'top',
textStyle: {
color: '#00b3f4',
},
},
lineStyle: {
normal: {
color: '#00b3f4',
shadowColor: 'rgba(0, 0, 0, .3)',
shadowBlur: 0,
shadowOffsetY: 5,
shadowOffsetX: 5,
},
},
// 设置渐变色
areaStyle: {
normal: {
color: new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: 'rgba(0,179,244,0.3)',
},
{
offset: 1,
color: 'rgba(0,179,244,0)',
},
],
false
),
shadowColor: 'rgba(0,179,244, 0.9)',
shadowBlur: 20,
},
},
itemStyle: {
borderWidth: 2,
color: '#00b3f4',
},
},
{
name: '政务',
type: 'line',
smooth: true,
symbolSize: 0,
// 阴影
lineStyle: {
normal: {
color: '#00ca95',
shadowColor: 'rgba(0, 0, 0, .3)',
shadowBlur: 0,
shadowOffsetY: 5,
shadowOffsetX: 5,
},
},
label: {
show: false,
position: 'top',
textStyle: {
color: '#00ca95',
},
},
// 设置渐变色
areaStyle: {
normal: {
color: new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: 'rgba(0,202,149,0.3)',
},
{
offset: 1,
color: 'rgba(0,202,149,0)',
},
],
false
),
shadowColor: 'rgba(0,202,149, 0.9)',
shadowBlur: 20,
},
},
itemStyle: {
borderWidth: 2,
},
},
],
};
// 图表初始化配置
chartInstance.value.setOption(initOption);
}
const getData = () => {
// 调用接口方法
// getModuleData().then(res => {
// allData = res.data;
// updateChart();
// //console.log("ALLDATA->"+JSON.stringify(allData.pcsSum));
// // echarts查不到数据,将初始化echarts的方法全部放置到接口方法中即可。
// })
// 获取服务器的数据, 对allData进行赋值之后, 调用updateChart方法更新图表
//console.log("ALLDATA->",JSON.stringify(res.data))
//console.log("ALLDATA->",JSON.stringify(allData))
updateChart();
}
const updateChart = () => {
const dataOption = {
xAxis: [
{
data: ['2023.09.19', '2023.09.20', '2023.09.21', '2023.09.22','2023.09.23', '2023.09.24', '2023.09.25',]
}
],
series: [
{
data: [100,222,555,333,111,46,555]
},
{
data: [55,45,9323,554,456,554,22]
},
],
};
// 图表数据变化配置
chartInstance.value.setOption(dataOption);
}
const screenAdapter = () => {
const titleFontSize = Math.round(refChart.value.offsetWidth / 50);
const adapterOption = {
title: {
textStyle: {
fontSize: titleFontSize,
},
},
// 圆点分类标题
legend: {
textStyle: {
fontSize: Math.round(titleFontSize / 1.2),
color: '#c0c9d2',
}
},
xAxis: {
axisLabel: {
textStyle: {
fontSize: Math.round(titleFontSize * 0.8),
},
},
},
yAxis: [
{
min: 0,
max: 10000,
interval: 5000,
type: 'value',
nameTextStyle: {
fontSize: titleFontSize
},
// 改变y轴字体颜色和大小
axisLabel: {
show: true,
margin: 10,
textStyle: {
color: '#BCDCF0',
fontSize: Math.round(titleFontSize * 0.8),
},
},
axisTick: {
show: false,
},
},
]
};
// 图表自适应变化配置
chartInstance.value.setOption(adapterOption);
chartInstance.value.resize();
}
// 定时器
const getDataTimer = () => {
dataTimer.value = setInterval(() => {
getData();
}, 3000)
}
</script>
<style lang='scss' scoped>
@import './right.scss';
</style>
\ No newline at end of file
<!-- echarts模板,有局部刷新需要在mounted自行开启 -->
<template>
<div>
<div class="title-list">
<div className='detail-list'>
<div className='detail-list-item' >
<img src="@/assets/images/center-details-data3.png"/>
<div className='detail-item-text'>
<h3>在线用户总数</h3>
<span>1523</span>
<span className='unit'></span>
</div>
</div>
<div className='detail-list-item' >
<img src="@/assets/images/center-details-data5.png"/>
<div className='detail-item-text'>
<h3>移动端用户数</h3>
<span>150</span>
<span className='unit'></span>
</div>
</div>
</div>
</div>
<div ref="refChart" :style="{ height: YHOne + 'px'}">
<div>
<div class="colorGrass font-bold margin-l" :style="{'font-size': Math.round(YFOne*0.9) + 'px'}">
用户流量排行
</div>
</div>
<div>
<dv-scroll-ranking-board :config="config" :style="{ height: (YHOne*0.99) + 'px',width: Math.round(YWOne*0.26) + 'px'}" />
</div>
</div>
</div>
</template>
<script setup lang="ts">
import { ref, reactive , onBeforeMount, onMounted, onUnmounted } from 'vue';
let screenHeight = ref(window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight)
let screenWidth = ref(window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth)
const config = reactive({
data: [
{
name: '10.224.23.1',
value: 55,
},
{
name:'10.324.23.1',
value: 120,
},
{
name: '10.124.23.1',
value: 78,
},
{
name:'10.124.23.1',
value: 66,
},
{
name: '10.224.233.1',
value: 80,
},
{
name: '10.224.232.1',
value: 45,
},
],
unit: 'M',
// waitTime:1900000
})
let YHOne = ref();
let YWOne = ref();
let YFOne= ref();
const screenTimer = ref();
onBeforeMount( () => {
YHOne.value = Math.round(screenHeight.value * 0.26);
})
onMounted( () => {
window.addEventListener('resize', getScreenHeight);
window.addEventListener('resize', getScreenWidth);
resizeScreen();
// 获取接口数据
getData();
// 局部刷新定时器
//getDataTimer();
})
onUnmounted( () => {
clearInterval(screenTimer.value);
screenTimer.value = null;
window.removeEventListener('resize', getScreenHeight, false);
window.removeEventListener('resize', getScreenWidth, false);
})
// 自适应浏览器获取宽高大小定时器
const resizeScreen = () => {
screenTimer.value = setInterval(() => {
getScreenHeight();
getScreenWidth();
}, 200)
}
// 获取浏览器高度进行自适应
const getScreenHeight = () => {
screenHeight.value = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
YHOne.value = Math.round(screenHeight.value * 0.26);
}
// 字体大小根据宽度自适应
const getScreenWidth = () => {
screenWidth.value = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
// 浏览器字体计算
YFOne.value = Math.round(screenWidth.value / 100);
// 浏览器宽度宽度
YWOne.value = screenWidth.value;
}
// 接口数据
const getData = () => {
// 调用接口方法
// getModuleData().then(res => {
// allData = res.data;
// //console.log("ALLDATA->"+JSON.stringify(allData.pcsSum));
// // echarts查不到数据,将初始化echarts的方法全部放置到接口方法中即可。
// })
// 获取服务器的数据, 对allData进行赋值之后, 调用updateChart方法更新图表
//console.log("ALLDATA->",JSON.stringify(res.data))
//console.log("ALLDATA->",JSON.stringify(allData))
}
// 定时器
const getDataTimer = () => {
screenTimer.value = setInterval(() => {
// 执行刷新数据的方法
getData();
}, 3000)
}
</script>
<style lang='scss' scoped>
@import './right.scss';
// 字体颜色
::v-deep( .dv-scroll-ranking-board .row-item .ranking-info .rank) {
color: aqua;
}
</style>
\ No newline at end of file
<!-- echarts模板,有局部刷新需要在mounted自行开启 -->
<template>
<div id="center">
<div class="square">
<div class="title-list item" style="">
<div className='detail-list'>
<div className='detail-list-item' >
<img src="@/assets/images/center-details-data3.png"/>
<div className='detail-item-text'>
<h3>设备总数</h3>
<span>1523</span>
<span className='unit'></span>
</div>
</div>
<div className='detail-list-item' >
<img src="@/assets/images/center-details-data5.png"/>
<div className='detail-item-text'>
<h3>故障设备数</h3>
<span>150</span>
<span className='unit'></span>
</div>
</div>
</div>
</div>
<div class="item">
<dv-active-ring-chart :config="config" :style="{ height: Math.round(YHOne*0.55) + 'px',width: Math.round(YHOne*0.55) + 'px'}" />
</div>
</div>
</div>
</template>
<script setup lang="ts">
import { ref, reactive , onBeforeMount, onMounted, onUnmounted } from 'vue';
let screenHeight = ref(window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight)
let screenWidth = ref(window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth)
let YHOne = ref();
let YWOne = ref();
let YFOne= ref();
const screenTimer = ref();
const config = reactive({
radius: '60%',
activeRadius: '75%',
data: [
{
name: '正常',
value: 55
},
{
name: '严重',
value: 19
},
{
name: '次要',
value: 78
},
{
name: '重要',
value: 66
},
],
lineWidth:25,
color:['rgba(0, 255, 233,0.5)','rgba(213,109,133,0.7)','rgba(181,109,5,0.5)','rgba(19,112,251,0.5)'],
digitalFlopStyle: {
fontSize: 18
}
})
onBeforeMount( () => {
YHOne.value = Math.round(screenHeight.value * 0.26);
})
onMounted( () => {
window.addEventListener('resize', getScreenHeight);
window.addEventListener('resize', getScreenWidth);
resizeScreen();
getData();
// 局部刷新定时器
//getDataTimer();
})
onUnmounted( () => {
clearInterval(screenTimer.value);
screenTimer.value = null;
window.removeEventListener('resize', getScreenHeight, false);
window.removeEventListener('resize', getScreenWidth, false);
})
// 自适应浏览器获取宽高大小定时器
const resizeScreen = () => {
screenTimer.value = setInterval(() => {
getScreenHeight();
getScreenWidth();
}, 200)
}
// 获取浏览器高度进行自适应
const getScreenHeight = () => {
screenHeight.value = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
YHOne.value = Math.round(screenHeight.value * 0.26);
}
// 字体大小根据宽度自适应
const getScreenWidth = () => {
screenWidth.value = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
YFOne.value = Math.round(screenWidth.value / 100);
YWOne.value = screenWidth.value;
}
// 接口数据
const getData = () => {
// 调用接口方法
// getModuleData().then(res => {
// allData = res.data;
// //console.log("ALLDATA->"+JSON.stringify(allData.pcsSum));
// // echarts查不到数据,将初始化echarts的方法全部放置到接口方法中即可。
// })
// 获取服务器的数据, 对allData进行赋值之后, 调用updateChart方法更新图表
//console.log("ALLDATA->",JSON.stringify(res.data))
//console.log("ALLDATA->",JSON.stringify(allData))
}
// 定时器
const getDataTimer = () => {
screenTimer.value = setInterval(() => {
// 执行刷新数据的方法
getData();
}, 3000)
}
</script>
<style lang='scss' scoped>
#center{
display: flex;
flex-direction: column;
.square {
width: 100%;
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: space-around;
.item {
width: 49.9%;
border-radius: 3px;
// margin-top: 0.5%;
margin-bottom: 0.5%;
}
}
}
@import './right-chart4.scss';
</style>
\ No newline at end of file
.title-list{
display: flex;
flex-direction: column;
margin-bottom: 0.015rem;
// margin-top: 0.175rem;
align-items: center;
width: 100%;
height: 100%;
.detail-list {
display: flex;
flex-wrap: wrap;
align-items: center;
align-content: space-between;
justify-content: center;
width: 70%;
&-item {
display: flex;
align-items: center;
position: relative;
margin-top: 0.255rem;
height: 3.5625rem;
padding: 0 0.125rem;
width: 100%;
border-radius: 5px;
border: 1px solid #343f4b;
background-color: rgba(19, 25, 47, 0.8);
img {
width: 2.5rem;
height: 2.5rem;
}
.detail-item-text {
margin-left: 0.125rem;
h3 {
color: #bcdcff;
font-size: 16px;
margin-bottom: 0.25rem;
}
span {
font-weight: 500px;
font-size: 0.25rem;
font-weight: bolder;
background: linear-gradient(to bottom, #fff, #4db6e5);
color: transparent;
-webkit-background-clip: text;
background-clip: text;
}
.unit {
font-size: 0.2rem;
margin-left: 0.125rem;
}
}
}
}
}
\ No newline at end of file
.title-list{
display: flex;
margin-bottom: 0.015rem;
margin-top: 0.175rem;
width: 100%;
height: 4.25rem;
.detail-list {
display: flex;
flex-wrap: wrap;
align-items: center;
align-content: space-between;
justify-content: space-around;
width: 100%;
&-item {
display: flex;
align-items: center;
position: relative;
height: 3.5625rem;
padding: 0 0.125rem;
width: 49%;
border-radius: 5px;
border: 1px solid #343f4b;
background-color: rgba(19, 25, 47, 0.8);
img {
width: 3.5rem;
height: 3.5rem;
}
.detail-item-text {
margin-left: 0.125rem;
h3 {
color: #bcdcff;
font-size: 16px;
margin-bottom: 0.25rem;
}
span {
font-weight: 500px;
font-size: 0.25rem;
font-weight: bolder;
background: linear-gradient(to bottom, #fff, #4db6e5);
color: transparent;
-webkit-background-clip: text;
background-clip: text;
}
.unit {
font-size: 0.2rem;
margin-left: 0.125rem;
}
}
}
}
}
\ No newline at end of file
<template>
<el-container class="layout">
<el-aside width="200px" class="asside">Aside</el-aside>
<el-container>
<el-header class="header">Header</el-header>
<el-main class="main">Main</el-main>
</el-container>
</el-container>
</template>
<script setup lang="ts">
</script>
<style lang="scss" scoped>
.layout {
height: 100%;
.asside {
background-color: blueviolet;
}
.header {
background-color: chocolate;
}
.main {
background-color: darkcyan;
}
}
</style>
\ No newline at end of file
import { createApp } from 'vue'
import App from './App.vue'
import './assets/main.css'
createApp(App).mount('#app')
import { createApp } from 'vue'
import App from './App.vue'
// 引入自定义全局样式
import '@/assets/scss/style.scss'
// 引入路由
import router from './router/index'
// 引入element plus
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import * as ElementPlusIconsVue from '@element-plus/icons-vue'
// 引入Pinia构造函数
import { createPinia } from 'pinia'
// Pinia持久化插件
import piniaPersist from 'pinia-plugin-persist'
// 实例化 Pinia
const pinia = createPinia();
// 使用持久化插件
pinia.use(piniaPersist)
// 引入DataV
import DataVVue3 from '@kjgl77/datav-vue3'
const app = createApp(App);
// 注册路由,扩展两个全局子对象app.config.globalConfigProperties
// $router和$route
app.use(router);
// 注册状态管理(vuex4),扩展一个全局子对象app.config.globalConfigProperties
// 可以不用局部导入storeimport store from '@/store';[全局用$store也可以]
app.use(pinia);
// 全局注册ElementPlus图标组件
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
app.component(key, component)
}
app.use(ElementPlus);
app.use(DataVVue3)
app.mount('#app');
\ No newline at end of file
import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router'
import HelloWorld from '@/components/HelloWorld.vue'
import Screen1 from '@/views/Screen1.vue'
import Screen2 from '@/views/Screen2.vue'
import Layout from '@/layout/Index.vue'
const routes: Array<RouteRecordRaw> = [
{
path: '/',
name: 'screen',
component: Screen2
},
// {
// path: '/screen1',
// name: 'screen1',
// component: Screen1
// },
{
path: '/screen2',
name: 'Screen2',
component: Screen2
},
// {
// path: '/HelloWorld',
// name: 'HelloWorld',
// component: HelloWorld
// },
{
path: '/home',
name: 'Home',
component: Layout
}
]
const router = createRouter({
history: createWebHistory(),
routes
})
export default router
\ No newline at end of file
import { defineStore } from 'pinia'
// 定义store,第一个参数是应用程序中 store 的唯一 id
export const testStore = defineStore('testStore', {
state: () => {
return {
count: 0
}
},
getters: { // 不能使用像state一样的箭头函数
getCount(state) {
return state.count
}
},
actions: { // 不能使用像state一样的箭头函数
setCount(count: number) {
console.log(count)
this.count = count;
}
},
// 开启数据缓存,数据默认是存在sessionStorage
persist: {
enabled: true,
strategies: [
{
key: 'testCache',//设置存储的key
// storage: localStorage,//表示存储在localStorage
}
]
}
// 默认所有 state 都会进行缓存,如果你不想所有的数据都持久化存储,那么可以通过 paths 指定要长久化的字段,其余的字段则不会进行长久化
// persist: {
// enabled: true,
// strategies: [
// {
// storage: localStorage,
// paths: ['id'],//指定要长久化的字段
// }
// ]
// }
})
\ No newline at end of file
/**
* @param { date } time 需要转换的时间
* @param { String } fmt 需要转换的格式 如 yyyy-MM-dd、yyyy-MM-dd HH:mm:ss
* @returns { String }
*/
export const formatTime = (
time: string | number | Date,
fmt: string
): string => {
if (!time) return ''
const date = new Date(time)
const o = {
'M+': date.getMonth() + 1,
'd+': date.getDate(),
'H+': date.getHours(),
'm+': date.getMinutes(),
's+': date.getSeconds(),
'q+': Math.floor((date.getMonth() + 3) / 3),
S: date.getMilliseconds(),
}
if (/(y+)/.test(fmt))
fmt = fmt.replace(
RegExp.$1,
(date.getFullYear() + '').substr(4 - RegExp.$1.length)
)
for (const k in o) {
if (new RegExp('(' + k + ')').test(fmt)) {
fmt = fmt.replace(
RegExp.$1,
// @ts-ignore: Unreachable code error
RegExp.$1.length === 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length)
)
}
}
return fmt
}
/* 获取随机整数 */
export function randomNum(m: number,n: number){
var num = Math.floor(Math.random()*(m - n) + n);
return num;
}
/** 封装session工具类 */
const koi: any = window.sessionStorage;
export default {
// 获取session
getItem(key: string | number) {
try {
return JSON.parse(koi.getItem(key));
} catch (err) {
return null;
}
},
// 赋值session
setItem(key: string | number, val: string | number) {
koi.setItem(key, JSON.stringify(val));
},
// 清除所有session
clear() {
koi.clear();
},
// 获取session值索引
keys(index: number) {
return koi.key(index);
},
// 清除固定key的session值
removeItem(key: string | number) {
koi.removeItem(key);
}
}
\ No newline at end of file
<!-- -->
<template>
<div id="index">
<!-- DataV-Loading加载动画 -->
<dv-loading v-if="loading" :style="{'font-weight': 'bold'}">Loading...</dv-loading>
<!-- 总体布局-start -->
<div v-else class="koi-body-png">
<!-- 第一部分-头部-start -->
<div class="header" :style="{ height: koiParams.height.YHtitlePng + 'px'}">
<!-- 首页 -->
<!-- <span class="koiPage font-bold colorDeepskyblue" @click="handleSkip()" :style="{'font-size': Math.round(koiParams.screen.screenWidth/60) + 'px'}" >首页</span> -->
<!-- 跳转大屏页面选择器 -->
<el-select v-model="value" @change="handleNewScreen" placeholder="请选择大屏页面" class="selectPage" :style="{'width': Math.round(koiParams.screen.screenWidth * 0.12) + 'px','background-color' : 'pink'}" size="mini">
<el-option
v-for="item in koiParams.options"
:key="item.value"
:label="item.label"
:value="item.value"
v-html="
`<span style='color:${getTextColor(item.value)}'>${item.label}</span>`"
>
</el-option>
</el-select>
<!-- 时间 -->
<div class="localTime colorPink" :style="{'font-size': Math.round(koiParams.screen.screenWidth/80) + 'px'}">{{ koiParams.dateParams.dateYear }} {{ koiParams.dateParams.dateWeek }} {{ koiParams.dateParams.dateDay }}</div>
<!-- 标题 -->
<span class="title font-bold colorText" :style="{'font-size': Math.round(koiParams.screen.screenWidth/80) + 'px'}">分布式储能平台</span>
</div>
<!-- 第一部分-头部-end -->
<!-- ElementPlus Layout布局 -->
<div class="layoutHome">
<el-row>
<el-col :span="6">
<div :style="{ height: koiParams.height.YHLeftOne + 'px'}">
<dv-border-box-12 style="padding:12px">
<leftchart1></leftchart1>
</dv-border-box-12>
</div>
<div :style="{ height: koiParams.height.YHLeftTwo + 'px'}">
<dv-border-box-12 style="padding:12px">
<leftchart2></leftchart2>
</dv-border-box-12>
</div>
</el-col>
<el-col :span="9">
<div :style="{ height: koiParams.height.YHCenterOne + 'px'}">
<dv-border-box-12 style="padding:12px">
<centerchart1></centerchart1>
</dv-border-box-12>
</div>
<div :style="{ height: koiParams.height.YHCenterTwo + 'px'}">
<dv-border-box-12 style="padding:12px">
<centerchart2></centerchart2>
</dv-border-box-12>
</div>
<div :style="{ height: koiParams.height.YHCenterThree + 'px'}">
<dv-border-box-12 style="padding:12px">
<centerchart3></centerchart3>
</dv-border-box-12>
</div>
</el-col>
<el-col :span="9">
<div :style="{ height: koiParams.height.YHRightOne + 'px'}">
<dv-border-box-12 style="padding:12px">
<rightchart1></rightchart1>
</dv-border-box-12>
</div>
<div :style="{ height: koiParams.height.YHRightTwo + 'px'}">
<dv-border-box-12 style="padding:12px">
<rightchart2></rightchart2>
</dv-border-box-12>
</div>
<div :style="{ height: koiParams.height.YHRightThree + 'px'}">
<dv-border-box-12 style="padding:12px">
<rightchart3></rightchart3>
</dv-border-box-12>
</div>
</el-col>
</el-row>
</div>
<!-- 总体布局end -->
</div>
</div>
</template>
<script setup lang="ts">
// 导入vue状态
import { reactive, ref, watch, h, onMounted, onBeforeMount, onBeforeUnmount, onUnmounted } from 'vue';
import { formatTime } from '@/utils/index';
// 引入 ElementPlus 的 ElNotification 消息提示。注意:ElementPlus在main.ts中注册后,在<template>标签中是全局引用的但是在ts或者js中还是需要单独引入相关组件
import { ElNotification } from 'element-plus'
import leftchart1 from "@/components/screen/left/chart1.vue";
import leftchart2 from "@/components/screen/left/chart2.vue";
import centerchart1 from "@/components/screen/center/chart1.vue";
import centerchart2 from "@/components/screen/center/chart2.vue";
import centerchart3 from "@/components/screen/center/chart3.vue";
import rightchart1 from "@/components/screen/right/chart1.vue";
import rightchart2 from "@/components/screen/right/chart2.vue";
import rightchart3 from "@/components/screen/right/chart3.vue";
// 单个使用ref
const loading = ref<boolean>(true);
const weekday = ref<string[]>(['周日', '周一', '周二', '周三', '周四', '周五', '周六']);
const value = ref();
// 只用来放置对象和数组,不建议放置单个
const koiParams = reactive<any>({
// 定时任务对象
timer: {
// 时间
dateTimer: null,
// 适应浏览器
koiTimer: null,
// Loading定时器
loadingTimer: null
},
// 时间参数对象
dateParams: {
dateDay: null,
dateYear: null,
dateWeek: null
},
// 跳转大屏页面
options: [{
value: '1',
label: 'Gitee'
}, {
value: '2',
label: 'GitHub'
}, {
value: '3',
label: 'CSDN'
}, {
value: '4',
label: 'EMS页面'
}, {
value: '5',
label: 'PCS页面'
}],
screen: {
// 获取浏览器可视区域高度(包含滚动条)、
// 获取浏览器可视区域高度(不包含工具栏高度)、
// 获取body的实际高度 (三个都是相同,兼容性不同的浏览器而设置的)
screenHeight: window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight,
screenWidth: window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth
},
height: {
YHtitlePng: null,
YHLeftOne: null,
YHLeftTwo: null,
YHCenterOne: null,
YHCenterTwo: null,
YHCenterThree: null,
YHRightOne: null,
YHRightTwo: null,
YHRightThree: null
}
});
// 页面渲染结束
onMounted(() => {
// 页面大小改变时触发
window.addEventListener('resize',getScreenHeight, false);
// 页面大小改变时触发
window.addEventListener('resize',getScreenWidth, false);
// 鼠标移动时触发
// window.addEventListener('mousemove',getHeight, false);
// 时间定时器
timeInterval();
// 取消Loading定时器
cancelLoading();
// 自适应屏幕宽高定时器
resizeScreen();
})
// Vue实例销毁之前
onBeforeUnmount(() => {
// 清除时间定时器
clearInterval(koiParams.timer.dateTimer);
koiParams.timer.dateTimer = null;
// 清除loading定时器
clearInterval(koiParams.timer.loadingTimer);
koiParams.timer.loadingTimer = null;
// 清除自适应屏幕宽高定时器
clearInterval(koiParams.timer.koiTimer);
koiParams.timer.koiTimer = null;
// 移除页面大小改变时触发事件
window.removeEventListener('resize',getScreenHeight);
// 移除页面大小改变时触发事件
window.removeEventListener('resize',getScreenWidth);
})
// Vue实例销毁之后
const onUnmounted = () => {
}
// 监听事件
watch(
() => [koiParams.screen.screenWidth, koiParams.screen.screenHeight],(newVal, oldVal) => {
// 此时返回的是数组,按下标获取对应值
// console.log(newVal[0]);
// console.log(newVal[1]);
if (newVal[0] <= 1200) {
ElNotification({
title: '浏览器高度提示',
message: h('i', { style: 'color: teal' }, '浏览器宽度<1200px自适应效果减弱'),
type: 'warning',
position: 'bottom-right',
duration: 2000
});
}
if (newVal[1] <= 700) {
ElNotification({
title: '浏览器宽度提示',
message: h('strong', { style: 'color: teal' }, '浏览器高度<700px自适应效果减弱'),
type: 'warning',
position: 'bottom-right',
duration: 2000
});
}
}
)
const timeInterval = () => {
koiParams.timer.dateTimer = setInterval(() => {
const date = new Date()
koiParams.dateParams.dateDay = formatTime(date, 'HH:mm:ss')
koiParams.dateParams.dateYear = formatTime(date, 'yyyy/MM/dd')
koiParams.dateParams.dateWeek = weekday.value[date.getDay()]
}, 1000)
}
const cancelLoading = () => {
koiParams.timer.loadingTimer = setTimeout(() => {
loading.value = false
}, 500)
}
const resizeScreen = () => {
koiParams.timer.koiTimer = setInterval(() => {
getScreenHeight();
getScreenWidth();
}, 200)
}
// 获取浏览器高度进行自适应
const getScreenHeight = () => {
let screenHeight = koiParams.screen.screenHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
// 四舍五入取整数
koiParams.height.YHtitlePng = Math.round(screenHeight * 0.07);
koiParams.height.YHLeftOne = Math.round(screenHeight * 0.46);
koiParams.height.YHLeftTwo = Math.round(screenHeight * 0.46);
koiParams.height.YHCenterOne= Math.round(screenHeight * 0.18);
koiParams.height.YHCenterTwo = Math.round(screenHeight * 0.37);
koiParams.height.YHCenterThree = Math.round(screenHeight * 0.37);
koiParams.height.YHRightOne = Math.round(screenHeight * 0.3);
koiParams.height.YHRightTwo = Math.round(screenHeight * 0.31);
koiParams.height.YHRightThree = Math.round(screenHeight * 0.31);
//console.log(screenHeight +"-"+ Math.round(percentHThirty) +"-"+ Math.round(percentHForty));
}
// 字体大小根据宽度自适应
const getScreenWidth = () => {
const screenWidth = koiParams.screen.screenWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
//console.log("width-"+screenWidth+"-height-"+koiParams.screen.screenHeight);
}
// 点击跳转Gitee页面
// const handleSkip = () => {
// window.location.href = 'https://gitee.com/BigCatHome/koi-screen';
// }
// 跳转新的大屏页面
const handleNewScreen = () => {
// Gitee
if(value.value =='1') {
// 另外添加一个跳转页面
window.location.href = 'https://gitee.com/BigCatHome/koi-screen';
// GitHub
}else if(value.value =='2') {
// 另外添加跳转页面
window.location.href = 'https://github.com/yuxintao6/koi';
// CSDN
}else if(value.value =='3') {
// 另外添加跳转页面
window.location.href = 'https://blog.csdn.net/qq_46856619?type=blog';
// EMS
}else if(value.value =='4') {
// 另外添加跳转页面
window.location.href = 'https://gitee.com/BigCatHome/koi-screen';
// PCS
}else if(value.value =='5') {
// 另外添加跳转页面
window.location.href = 'localhost:7777/screen2';
// Gitee
}else {
// 另外添加跳转页面
window.location.href = 'https://gitee.com/BigCatHome/koi-screen';
}
}
// 下拉框颜色
const getTextColor = (value: any) => {
if(value == '1') {
return "#1404f3"
}else if(value == '2') {
return "tomato"
}else if(value == '3') {
return "#fa9804"
}else if(value == '4') {
return "#af04f3"
}else {
return "hotpink"
}
}
</script>
<style lang="scss" scoped>
// 设置ElementUI输入框的背景色、字体颜色、边框属性设置; ::v-deep
::v-deep(.el-input__wrapper) {
background-color: #080808;
color:#fa8f04;
border: 1px solid deepskyblue;
}
.el-select-dropdown__item:hover {
background-color: rgba(14, 233, 233, 0.6);
}
</style>
<!-- -->
<template>
<div id="index">
<!-- DataV-Loading加载动画 -->
<dv-loading v-if="loading" :style="{'font-weight': 500}">Loading...</dv-loading>
<!-- 总体布局-start -->
<div v-else class="koi-body">
<!-- 第一部分-头部-start -->
<div class="header">
<!-- 首页 -->
<span class="koiPage font-bold colorDeepskyblue" @click="handleSkip()" :style="{'font-size': Math.round(koiParams.screen.screenWidth/100) + 'px'}" >统计周期为最近7天</span>
<!-- 时间 -->
<div class="localTime colorDeepskyblue" :style="{'font-size': Math.round(koiParams.screen.screenWidth/100) + 'px'}">{{ koiParams.dateParams.dateYear }} {{ koiParams.dateParams.dateWeek }} {{ koiParams.dateParams.dateDay }}</div>
<!-- 装饰10 -->
<dv-decoration-10 class="dv-dec-10-left" />
<!-- 装饰8 -->
<dv-decoration-8 class="dv-dec-8-left" :color="decorationColor"/>
<!-- 标题 -->
<span class="title font-bold colorText" :style="{'font-size': Math.round(koiParams.screen.screenWidth/100) + 'px'}">可视化外网安全态势</span>
<!-- 装饰8 -->
<dv-decoration-8 class="dv-dec-8-right" :reverse="true" :color="decorationColor" />
<!-- 装饰10 -->
<dv-decoration-10 class="dv-dec-10-right"/>
</div>
<!-- 第一部分-头部-end -->
<!-- ElementPlus Layout布局 -->
<div class="layoutHome">
<el-row>
<el-col :span="7">
<div :style="{ height: (koiParams.height.YHLeftOne) + 'px'}">
<dv-border-box-8 :dur="20" style="padding:12px">
<dv-decoration-11 style="width:100%;height:42px;">网络安全资产概览</dv-decoration-11>
<leftWlaqzcChart1></leftWlaqzcChart1>
<leftWlaqzcChart2></leftWlaqzcChart2>
</dv-border-box-8>
</div>
<div :style="{ height: koiParams.height.YHLeftTwo + 'px'}">
<dv-border-box-8 :dur="20" style="padding:12px">
<dv-decoration-11 style="width:100%;height:42px;">网络攻击态势</dv-decoration-11>
<leftWlgjtsChart3></leftWlgjtsChart3>
</dv-border-box-8>
</div>
<div :style="{ height: koiParams.height.YHLeftThree + 'px'}">
<dv-border-box-8 :dur="20" style="padding:12px">
<dv-decoration-11 style="width:100%;height:42px;">网络安全分析</dv-decoration-11>
<leftWlanfxAqldChart3></leftWlanfxAqldChart3>
</dv-border-box-8>
</div>
<div :style="{ height: koiParams.height.YHLeftFour + 'px'}">
<dv-border-box-8 :dur="20" style="padding:12px">
<dv-decoration-11 style="width:100%;height:42px;">最新风险工单</dv-decoration-11>
<leftZxfxqdChart4/>
</dv-border-box-8>
</div>
</el-col>
<el-col :span="10">
<div :style="{ height: koiParams.height.YHCenterOne + 'px'}">
<div>
<centerchart1></centerchart1>
</div>
</div>
<div :style="{ height: koiParams.height.YHCenterTwo + 'px'}">
<div style="padding:12px">
<centerchart2></centerchart2>
</div>
</div>
<div :style="{ height: koiParams.height.YHCenterThree + 'px'}">
<div style="padding:12px">
<centerchart3></centerchart3>
</div>
</div>
</el-col>
<el-col :span="7">
<div :style="{ height: koiParams.height.YHRightOne + 'px'}">
<dv-border-box-8 :dur="20" style="padding:12px">
<dv-decoration-11 style="width:100%;height:42px;">网络流量概览</dv-decoration-11>
<rightWlllglChart1></rightWlllglChart1>
</dv-border-box-8>
</div>
<div :style="{ height: koiParams.height.YHRightTwo + 'px'}">
<dv-border-box-8 :dur="20" style="padding:12px">
<dv-decoration-11 style="width:100%;height:42px;">用户流量概览</dv-decoration-11>
<rightYhllglChart2></rightYhllglChart2>
</dv-border-box-8>
</div>
<div :style="{ height: koiParams.height.YHRightThree + 'px'}">
<dv-border-box-8 :dur="20" style="padding:12px">
<dv-decoration-11 style="width:100%;height:42px;">网络设备概览</dv-decoration-11>
<rightWlsbglChart3/>
</dv-border-box-8>
</div>
</el-col>
</el-row>
</div>
<!-- 总体布局end -->
</div>
</div>
</template>
<script setup lang="ts">
// 导入状态管理
import { reactive, ref, watch, h, onMounted, onBeforeMount, onBeforeUnmount, onUnmounted } from 'vue';
//import koi from '../utils/session.js';
import { formatTime } from '@/utils/index';
// 引入 ElementPlus 的 ElNotification 消息提示。注意:ElementPlus在main.ts中注册后,在<template>标签中是全局引用的但是在ts或者js中还是需要单独引入相关组件
import { ElNotification } from 'element-plus'
import leftWlaqzcChart1 from "@/components/screen/left/chart1-wlaqzc.vue";
import leftWlaqzcChart2 from "@/components/screen/left/chart2-wlaqzc.vue";
import leftWlgjtsChart3 from "@/components/screen/left/chart3-wlgjts.vue";
import leftWlanfxAqldChart3 from "@/components/screen/left/chart3-wlanfx-aqld.vue";
import leftZxfxqdChart4 from "@/components/screen/left/chart4-zxfxqd.vue";
import centerchart1 from "@/components/screen/center/chart1.vue";
import centerchart2 from "@/components/screen/center/chart2.vue";
import centerchart3 from "@/components/screen/center/chart3.vue";
import rightWlllglChart1 from "@/components/screen/right/chart1-wlllgl.vue";
import rightYhllglChart2 from "@/components/screen/right/chart2-yhllgl.vue";
import rightWlsbglChart3 from "@/components/screen/right/chart3-wlsbgl.vue";
const decorationColor = ref<string[]>(['#568aea', '#000000']); // 装饰8颜色
const loading = ref<boolean>(true);
const weekday = ref<string[]>(['周日', '周一', '周二', '周三', '周四', '周五', '周六']);
// 只用来放置对象和数组,不建议放置单个
const koiParams = reactive<any>({
// 定时任务对象
timer: {
dateTimer: null,
// 适应浏览器
koiTimer: null,
// Loading定时器
loadingTimer: null
},
// 时间参数对象
dateParams: {
dateDay: null,
dateYear: null,
dateWeek: null
},
screen: {
// 获取浏览器可视区域高度(包含滚动条)、
// 获取浏览器可视区域高度(不包含工具栏高度)、
// 获取body的实际高度 (三个都是相同,兼容性不同的浏览器而设置的)
screenHeight: window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight,
screenWidth: window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth
},
height: {
YHLeftOne: null,
YHLeftTwo: null,
YHCenterOne: null,
YHCenterTwo: null,
YHCenterThree: null,
YHRightOne: null,
YHRightTwo: null,
YHRightThree: null
}
});
// 页面渲染结束
onMounted(() => {
window.addEventListener('resize',getScreenHeight, false);
window.addEventListener('resize',getScreenWidth, false);
timeInterval();
// 取消Loading定时器
cancelLoading();
// 自适应屏幕宽高定时器
resizeScreen();
})
// Vue实例销毁之前
onBeforeUnmount(() => {
clearInterval(koiParams.timer.dateTimer);
koiParams.timer.dateTimer = null;
// 清除loading定时器
clearInterval(koiParams.timer.loadingTimer);
koiParams.timer.loadingTimer = null;
// 清除自适应屏幕宽高定时器
clearInterval(koiParams.timer.koiTimer);
koiParams.timer.koiTimer = null;
// 移除页面大小改变时触发事件
window.removeEventListener('resize',getScreenHeight);
// 移除页面大小改变时触发事件
window.removeEventListener('resize',getScreenWidth);
})
// Vue实例销毁之后
const onUnmounted = () => {
}
// 监听事件
watch(
() => [koiParams.screen.screenWidth, koiParams.screen.screenHeight],(newVal, oldVal) => {
// 此时返回的是数组,按下标获取对应值
// console.log(newVal[1]);
if (newVal[0] <= 1200) {
ElNotification({
title: '浏览器高度提示',
message: h('i', { style: 'color: teal' }, '浏览器宽度<1200px自适应效果减弱'),
type: 'warning',
position: 'bottom-right',
duration: 2000
});
}
if (newVal[1] <= 700) {
ElNotification({
title: '浏览器宽度提示',
message: h('strong', { style: 'color: teal' }, '浏览器高度<700px自适应效果减弱'),
type: 'warning',
position: 'bottom-right',
duration: 2000
});
}
}
)
const timeInterval = () => {
koiParams.timer.dateTimer = setInterval(() => {
const date = new Date()
koiParams.dateParams.dateDay = formatTime(date, 'HH:mm:ss')
koiParams.dateParams.dateYear = formatTime(date, 'yyyy/MM/dd')
koiParams.dateParams.dateWeek = weekday.value[date.getDay()]
}, 1000)
}
const cancelLoading = () => {
koiParams.timer.loadingTimer = setTimeout(() => {
loading.value = false
}, 500)
}
const resizeScreen = () => {
koiParams.timer.koiTimer = setInterval(() => {
getScreenHeight();
getScreenWidth();
}, 200)
}
// 获取浏览器高度进行自适应
const getScreenHeight = () => {
let screenHeight = koiParams.screen.screenHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
// 四舍五入取整数 相加等于 0.92
koiParams.height.YHLeftOne = Math.round(screenHeight * 0.36);
koiParams.height.YHLeftTwo = Math.round(screenHeight * 0.20);
koiParams.height.YHLeftThree = Math.round(screenHeight * 0.20);
koiParams.height.YHLeftFour = Math.round(screenHeight * 0.16);
koiParams.height.YHCenterOne= Math.round(screenHeight * 0.06);
koiParams.height.YHCenterTwo = Math.round(screenHeight * 0.58);
koiParams.height.YHCenterThree = Math.round(screenHeight * 0.28);
koiParams.height.YHRightOne = Math.round(screenHeight * 0.3);
koiParams.height.YHRightTwo = Math.round(screenHeight * 0.42);
koiParams.height.YHRightThree = Math.round(screenHeight * 0.20);
//console.log(screenHeight +"-"+ Math.round(percentHThirty) +"-"+ Math.round(percentHForty));
}
// 字体大小根据宽度自适应
const getScreenWidth = () => {
const screenWidth = koiParams.screen.screenWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
console.log("hh-"+screenWidth+"-"+koiParams.screen.screenHeight);
}
// 点击跳转Gitee页面
const handleSkip = () => {
window.location.href = '#';
}
</script>
<style lang="scss" scoped>
// 引入自定义全局样式
// @import '@/assets/scss/style.scss';
</style>
<template>
<div class="wscn-http404-container">
<div class="wscn-http404">
<div class="pic-404">
<img class="pic-404__parent" src="@/assets/404_images/404.png" alt="404">
<img class="pic-404__child left" src="@/assets/404_images/404_cloud.png" alt="404">
<img class="pic-404__child mid" src="@/assets/404_images/404_cloud.png" alt="404">
<img class="pic-404__child right" src="@/assets/404_images/404_cloud.png" alt="404">
</div>
<div class="bullshit">
<div class="bullshit__oops">
404错误!
</div>
<div class="bullshit__headline">
<p id="text1">{{ message }}</p>
</div>
<div class="bullshit__info">
<p id="text2">对不起,您正在寻找的页面不存在。尝试检查URL的错误,然后按浏览器上的刷新按钮或尝试在我们的应用程序中找到其他内容。</p>
</div>
<router-link to="/screen1" class="bullshit__return-home">
返回首页
</router-link>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'Page404',
computed: {
message() {
return '找不到网页!'
}
}
}
</script>
<style lang="scss" scoped>
#text1 {
color: pink;
}
#text2 {
color: wheat;
}
.wscn-http404-container{
transform: translate(-50%,-50%);
position: absolute;
top: 40%;
left: 50%;
background-color: black;
}
.wscn-http404 {
position: relative;
width: 1200px;
padding: 0 50px;
overflow: hidden;
.pic-404 {
position: relative;
float: left;
width: 600px;
overflow: hidden;
&__parent {
width: 100%;
}
&__child {
position: absolute;
&.left {
width: 80px;
top: 17px;
left: 220px;
opacity: 0;
animation-name: cloudLeft;
animation-duration: 2s;
animation-timing-function: linear;
animation-fill-mode: forwards;
animation-delay: 1s;
}
&.mid {
width: 46px;
top: 10px;
left: 420px;
opacity: 0;
animation-name: cloudMid;
animation-duration: 2s;
animation-timing-function: linear;
animation-fill-mode: forwards;
animation-delay: 1.2s;
}
&.right {
width: 62px;
top: 100px;
left: 500px;
opacity: 0;
animation-name: cloudRight;
animation-duration: 2s;
animation-timing-function: linear;
animation-fill-mode: forwards;
animation-delay: 1s;
}
@keyframes cloudLeft {
0% {
top: 17px;
left: 220px;
opacity: 0;
}
20% {
top: 33px;
left: 188px;
opacity: 1;
}
80% {
top: 81px;
left: 92px;
opacity: 1;
}
100% {
top: 97px;
left: 60px;
opacity: 0;
}
}
@keyframes cloudMid {
0% {
top: 10px;
left: 420px;
opacity: 0;
}
20% {
top: 40px;
left: 360px;
opacity: 1;
}
70% {
top: 130px;
left: 180px;
opacity: 1;
}
100% {
top: 160px;
left: 120px;
opacity: 0;
}
}
@keyframes cloudRight {
0% {
top: 100px;
left: 500px;
opacity: 0;
}
20% {
top: 120px;
left: 460px;
opacity: 1;
}
80% {
top: 180px;
left: 340px;
opacity: 1;
}
100% {
top: 200px;
left: 300px;
opacity: 0;
}
}
}
}
.bullshit {
position: relative;
float: left;
width: 300px;
padding: 30px 0;
overflow: hidden;
&__oops {
font-size: 32px;
font-weight: bold;
line-height: 40px;
color: #1482f0;
opacity: 0;
margin-bottom: 20px;
animation-name: slideUp;
animation-duration: 0.5s;
animation-fill-mode: forwards;
}
&__headline {
font-size: 20px;
line-height: 24px;
color: #222;
font-weight: bold;
opacity: 0;
margin-bottom: 10px;
animation-name: slideUp;
animation-duration: 0.5s;
animation-delay: 0.1s;
animation-fill-mode: forwards;
}
&__info {
font-size: 13px;
line-height: 21px;
color: grey;
opacity: 0;
margin-bottom: 30px;
animation-name: slideUp;
animation-duration: 0.5s;
animation-delay: 0.2s;
animation-fill-mode: forwards;
}
&__return-home {
display: block;
float: left;
width: 110px;
height: 36px;
background: #1482f0;
border-radius: 100px;
text-align: center;
color: #ffffff;
opacity: 0;
font-size: 14px;
line-height: 36px;
cursor: pointer;
animation-name: slideUp;
animation-duration: 0.5s;
animation-delay: 0.3s;
animation-fill-mode: forwards;
}
@keyframes slideUp {
0% {
transform: translateY(60px);
opacity: 0;
}
100% {
transform: translateY(0);
opacity: 1;
}
}
}
}
</style>
/// <reference types="vite/client" />
{
"compilerOptions": {
"target": "ESNext",
"useDefineForClassFields": true,
"module": "ESNext",
"moduleResolution": "Node",
"strict": true, // 默认true
"jsx": "preserve",
"resolveJsonModule": true,
"isolatedModules": true,
"esModuleInterop": true,
"lib": ["ESNext", "DOM"],
"skipLibCheck": true,
"noEmit": true, // 编译后不输出任何js文件
"allowJs": true, // 允许编译器编译JS,JSX文件
"baseUrl": ".", // paths 路径解析起点
"paths": {
"@/*": [ // 别名路径设置
"src/*"
]
}
},
"include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue", "src/**/*.js"], // ts支持js
"references": [{ "path": "./tsconfig.node.json" }]
}
{
"compilerOptions": {
"composite": true,
"module": "ESNext",
"moduleResolution": "Node",
"allowSyntheticDefaultImports": true
},
"include": ["vite.config.ts"]
}
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
// https://vitejs.dev/config/
export default defineConfig({
server: {
host: true
},
plugins: [vue()]
})
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { resolve } from 'path'
// https://vitejs.dev/config/
export default defineConfig({
plugins: [vue()],
server: {
host: '0.0.0.0', // 本地IP访问,localhost访问
port: 7778, // 端口号
hmr: true, // 热更新
open: false, // false关闭,true打开。启动项目后,自动在浏览器打开(浏览器已经打开的情况)
},
resolve: {
alias: [
{
find: '@', // 配置别名,tsconfig.json里面也需要配置. @等价于src
replacement: resolve(__dirname, 'src')
}
]
}
})
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册