diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000000000000000000000000000000000000..b114148c69890207e41f3298f37e5fc69cb4fabb
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,688 @@
+{
+ "version": "0.0.0",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "@babel/helper-validator-identifier": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz",
+ "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg=="
+ },
+ "@babel/parser": {
+ "version": "7.14.7",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.7.tgz",
+ "integrity": "sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA=="
+ },
+ "@babel/types": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz",
+ "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==",
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.14.5",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "@intlify/core-base": {
+ "version": "9.1.6",
+ "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.1.6.tgz",
+ "integrity": "sha512-d5GDPpsQbqPkisSJA5b6nJFEkalY/IHAd7vOLNd/Sj4YaNRzXtInu2FoqKiOv8e/lQnXGTpurdCZg5Jxq1Gsxw==",
+ "requires": {
+ "@intlify/devtools-if": "9.1.6",
+ "@intlify/message-compiler": "9.1.6",
+ "@intlify/message-resolver": "9.1.6",
+ "@intlify/runtime": "9.1.6",
+ "@intlify/shared": "9.1.6",
+ "@intlify/vue-devtools": "9.1.6"
+ }
+ },
+ "@intlify/devtools-if": {
+ "version": "9.1.6",
+ "resolved": "https://registry.npmjs.org/@intlify/devtools-if/-/devtools-if-9.1.6.tgz",
+ "integrity": "sha512-m8Api+kh+BtFa2FZ/JjIdr1ibsGGqBjdKCzWo5BZecEUxBquIeOQZwpokPh/0K5j+/PZleFXkVAMC5mNt+9WdA==",
+ "requires": {
+ "@intlify/shared": "9.1.6"
+ }
+ },
+ "@intlify/message-compiler": {
+ "version": "9.1.6",
+ "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.1.6.tgz",
+ "integrity": "sha512-DR8645VOrVK6x/8tkaCpHnckMAIcoOgeNS5j0wB12RfZoXYQp7vAXMaOP511KMll2mXCREgIB0ojpajiof7yzQ==",
+ "requires": {
+ "@intlify/message-resolver": "9.1.6",
+ "@intlify/shared": "9.1.6",
+ "source-map": "0.6.1"
+ }
+ },
+ "@intlify/message-resolver": {
+ "version": "9.1.6",
+ "resolved": "https://registry.npmjs.org/@intlify/message-resolver/-/message-resolver-9.1.6.tgz",
+ "integrity": "sha512-UUnbawQa5U9sffd5wRIscqtyY1xWlwJbyfwCLPEWLvBhyAnCwPYlvaHGnnO0CSi0fzJTVwlV9DYzobh3agDeMA=="
+ },
+ "@intlify/runtime": {
+ "version": "9.1.6",
+ "resolved": "https://registry.npmjs.org/@intlify/runtime/-/runtime-9.1.6.tgz",
+ "integrity": "sha512-U1QZ+TPf3kQQvWo4BA2mj3cHAxMRHXNTBhu2u+deh6ubTqXdZ19XGBTMSasrXG6RE+zSio9oM+ndoLja7JGtPg==",
+ "requires": {
+ "@intlify/message-compiler": "9.1.6",
+ "@intlify/message-resolver": "9.1.6",
+ "@intlify/shared": "9.1.6"
+ }
+ },
+ "@intlify/shared": {
+ "version": "9.1.6",
+ "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.1.6.tgz",
+ "integrity": "sha512-6MtsKulyfZxdD7OuxjaODjj8QWoHCnLFAk4wkWiHqBCa6UCTC0qXjtEeZ1MxpQihvFmmJZauBUu25EvtngW5qQ=="
+ },
+ "@intlify/vue-devtools": {
+ "version": "9.1.6",
+ "resolved": "https://registry.npmjs.org/@intlify/vue-devtools/-/vue-devtools-9.1.6.tgz",
+ "integrity": "sha512-UdNovg4OML9rIr1sOGZzTfNr1nUy4UQpDf5ni4dNC93T6FIkVJz0n1Np7Vp7e6gDjcmufRYcV99tEwjQSN9+5A==",
+ "requires": {
+ "@intlify/message-resolver": "9.1.6",
+ "@intlify/runtime": "9.1.6",
+ "@intlify/shared": "9.1.6"
+ }
+ },
+ "@types/estree": {
+ "version": "0.0.48",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.48.tgz",
+ "integrity": "sha512-LfZwXoGUDo0C3me81HXgkBg5CTQYb6xzEl+fNmbO4JdRiSKQ8A0GD1OBBvKAIsbCUgoyAty7m99GqqMQe784ew==",
+ "dev": true
+ },
+ "@vitejs/plugin-vue": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-1.2.4.tgz",
+ "integrity": "sha512-D/3H9plevPQGgQGwmV6eecvOnooLTecPR63HPffVVWPEhbfvmtYLWgznzs456NBb2DItiRTCIa1yWxvGqC+I8A==",
+ "dev": true
+ },
+ "@vue/compiler-core": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.1.2.tgz",
+ "integrity": "sha512-nHmq7vLjq/XM2IMbZUcKWoH5sPXa2uR/nIKZtjbK5F3TcbnYE/zKsrSUR9WZJ03unlwotNBX1OyxVt9HbWD7/Q==",
+ "requires": {
+ "@babel/parser": "^7.12.0",
+ "@babel/types": "^7.12.0",
+ "@vue/shared": "3.1.2",
+ "estree-walker": "^2.0.1",
+ "source-map": "^0.6.1"
+ }
+ },
+ "@vue/compiler-dom": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.1.2.tgz",
+ "integrity": "sha512-k2+SWcWH0jL6WQAX7Or2ONqu5MbtTgTO0dJrvebQYzgqaKMXNI90RNeWeCxS4BnNFMDONpHBeFgbwbnDWIkmRg==",
+ "requires": {
+ "@vue/compiler-core": "3.1.2",
+ "@vue/shared": "3.1.2"
+ }
+ },
+ "@vue/compiler-sfc": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.1.2.tgz",
+ "integrity": "sha512-SeG/2+DvwejQ7oAiSx8BrDh5qOdqCYHGClPiTvVIHTfSIHiS2JjMbCANdDCjHkTOh/O7WZzo2JhdKm98bRBxTw==",
+ "dev": true,
+ "requires": {
+ "@babel/parser": "^7.13.9",
+ "@babel/types": "^7.13.0",
+ "@types/estree": "^0.0.48",
+ "@vue/compiler-core": "3.1.2",
+ "@vue/compiler-dom": "3.1.2",
+ "@vue/compiler-ssr": "3.1.2",
+ "@vue/shared": "3.1.2",
+ "consolidate": "^0.16.0",
+ "estree-walker": "^2.0.1",
+ "hash-sum": "^2.0.0",
+ "lru-cache": "^5.1.1",
+ "magic-string": "^0.25.7",
+ "merge-source-map": "^1.1.0",
+ "postcss": "^8.1.10",
+ "postcss-modules": "^4.0.0",
+ "postcss-selector-parser": "^6.0.4",
+ "source-map": "^0.6.1"
+ }
+ },
+ "@vue/compiler-ssr": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.1.2.tgz",
+ "integrity": "sha512-BwXo9LFk5OSWdMyZQ4bX1ELHX0Z/9F+ld/OaVnpUPzAZCHslBYLvyKUVDwv2C/lpLjRffpC2DOUEdl1+RP1aGg==",
+ "dev": true,
+ "requires": {
+ "@vue/compiler-dom": "3.1.2",
+ "@vue/shared": "3.1.2"
+ }
+ },
+ "@vue/devtools-api": {
+ "version": "6.0.0-beta.14",
+ "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.0.0-beta.14.tgz",
+ "integrity": "sha512-44fPrrN1cqcs6bFkT0C+yxTM6PZXLbR+ESh1U1j8UD22yO04gXvxH62HApMjLbS3WqJO/iCNC+CYT+evPQh2EQ=="
+ },
+ "@vue/reactivity": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.1.2.tgz",
+ "integrity": "sha512-glJzJoN2xE7I2lRvwKM5u1BHRPTd1yc8iaf//Lai/78/uYAvE5DXp5HzWRFOwMlbRvMGJHIQjOqoxj87cDAaag==",
+ "requires": {
+ "@vue/shared": "3.1.2"
+ }
+ },
+ "@vue/runtime-core": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.1.2.tgz",
+ "integrity": "sha512-gsPZG4dRIkixuuKmoj4P9IHgfT0yaFLcqWOM5F/bCk0nxQn1XtxH8oUehWuET726KhbukvDoJfe9G2CKviy80w==",
+ "requires": {
+ "@vue/reactivity": "3.1.2",
+ "@vue/shared": "3.1.2"
+ }
+ },
+ "@vue/runtime-dom": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.1.2.tgz",
+ "integrity": "sha512-QvINxjLucEZFzp5f0NVu7JqWYCv5TKQfkH2FDs/N6QNE4iKcYtKrWdT0HKfABnVXG28Znqv6rIH0dH4ZAOwxpA==",
+ "requires": {
+ "@vue/runtime-core": "3.1.2",
+ "@vue/shared": "3.1.2",
+ "csstype": "^2.6.8"
+ }
+ },
+ "@vue/shared": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.1.2.tgz",
+ "integrity": "sha512-EmH/poaDWBPJaPILXNI/1fvUbArJQmmTyVCwvvyDYDFnkPoTclAbHRAtyIvqfez7jybTDn077HTNILpxlsoWhg=="
+ },
+ "anymatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
+ "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
+ "requires": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ }
+ },
+ "axios": {
+ "version": "0.21.1",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz",
+ "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==",
+ "requires": {
+ "follow-redirects": "^1.10.0"
+ }
+ },
+ "big.js": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
+ "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
+ "dev": true
+ },
+ "binary-extensions": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA=="
+ },
+ "bluebird": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
+ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
+ "dev": true
+ },
+ "braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "requires": {
+ "fill-range": "^7.0.1"
+ }
+ },
+ "chokidar": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz",
+ "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==",
+ "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"
+ }
+ },
+ "colorette": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz",
+ "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==",
+ "dev": true
+ },
+ "consolidate": {
+ "version": "0.16.0",
+ "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.16.0.tgz",
+ "integrity": "sha512-Nhl1wzCslqXYTJVDyJCu3ODohy9OfBMB5uD2BiBTzd7w+QY0lBzafkR8y8755yMYHAaMD4NuzbAw03/xzfw+eQ==",
+ "dev": true,
+ "requires": {
+ "bluebird": "^3.7.2"
+ }
+ },
+ "cssesc": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+ "dev": true
+ },
+ "csstype": {
+ "version": "2.6.17",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.17.tgz",
+ "integrity": "sha512-u1wmTI1jJGzCJzWndZo8mk4wnPTZd1eOIYTYvuEyOQGfmDl3TrabCCfKnOC86FZwW/9djqTl933UF/cS425i9A=="
+ },
+ "emojis-list": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
+ "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
+ "dev": true
+ },
+ "esbuild": {
+ "version": "0.12.11",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.11.tgz",
+ "integrity": "sha512-h83GwI6lYOrnSv5hSY2i2XZ191v3haj2IGDzwrkfWHhuO/kVMX3RYjhwRNG9E5VSxVLPaUjTVwrv8HWLvhk2nQ==",
+ "dev": true
+ },
+ "estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
+ },
+ "fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "requires": {
+ "to-regex-range": "^5.0.1"
+ }
+ },
+ "follow-redirects": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.1.tgz",
+ "integrity": "sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg=="
+ },
+ "fsevents": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "optional": true
+ },
+ "function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+ "dev": true
+ },
+ "generic-names": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/generic-names/-/generic-names-2.0.1.tgz",
+ "integrity": "sha512-kPCHWa1m9wGG/OwQpeweTwM/PYiQLrUIxXbt/P4Nic3LbGjCP0YwrALHW1uNLKZ0LIMg+RF+XRlj2ekT9ZlZAQ==",
+ "dev": true,
+ "requires": {
+ "loader-utils": "^1.1.0"
+ }
+ },
+ "glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "requires": {
+ "is-glob": "^4.0.1"
+ }
+ },
+ "has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1"
+ }
+ },
+ "hash-sum": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz",
+ "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==",
+ "dev": true
+ },
+ "icss-replace-symbols": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz",
+ "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=",
+ "dev": true
+ },
+ "icss-utils": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz",
+ "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==",
+ "dev": true
+ },
+ "is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "requires": {
+ "binary-extensions": "^2.0.0"
+ }
+ },
+ "is-core-module": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz",
+ "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==",
+ "dev": true,
+ "requires": {
+ "has": "^1.0.3"
+ }
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
+ },
+ "is-glob": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
+ "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
+ "requires": {
+ "is-extglob": "^2.1.1"
+ }
+ },
+ "is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
+ },
+ "json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+ "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+ "dev": true,
+ "requires": {
+ "minimist": "^1.2.0"
+ }
+ },
+ "loader-utils": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
+ "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+ "dev": true,
+ "requires": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^1.0.1"
+ }
+ },
+ "lodash.camelcase": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
+ "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=",
+ "dev": true
+ },
+ "lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "dev": true,
+ "requires": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "magic-string": {
+ "version": "0.25.7",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
+ "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
+ "dev": true,
+ "requires": {
+ "sourcemap-codec": "^1.4.4"
+ }
+ },
+ "merge-source-map": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz",
+ "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==",
+ "dev": true,
+ "requires": {
+ "source-map": "^0.6.1"
+ }
+ },
+ "minimist": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
+ "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
+ "dev": true
+ },
+ "nanoid": {
+ "version": "3.1.23",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz",
+ "integrity": "sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==",
+ "dev": true
+ },
+ "normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
+ },
+ "path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "dev": true
+ },
+ "picomatch": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
+ "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw=="
+ },
+ "postcss": {
+ "version": "8.3.5",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.5.tgz",
+ "integrity": "sha512-NxTuJocUhYGsMiMFHDUkmjSKT3EdH4/WbGF6GCi1NDGk+vbcUTun4fpbOqaPtD8IIsztA2ilZm2DhYCuyN58gA==",
+ "dev": true,
+ "requires": {
+ "colorette": "^1.2.2",
+ "nanoid": "^3.1.23",
+ "source-map-js": "^0.6.2"
+ }
+ },
+ "postcss-modules": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/postcss-modules/-/postcss-modules-4.1.3.tgz",
+ "integrity": "sha512-dBT39hrXe4OAVYJe/2ZuIZ9BzYhOe7t+IhedYeQ2OxKwDpAGlkEN/fR0fGnrbx4BvgbMReRX4hCubYK9cE/pJQ==",
+ "dev": true,
+ "requires": {
+ "generic-names": "^2.0.1",
+ "icss-replace-symbols": "^1.1.0",
+ "lodash.camelcase": "^4.3.0",
+ "postcss-modules-extract-imports": "^3.0.0",
+ "postcss-modules-local-by-default": "^4.0.0",
+ "postcss-modules-scope": "^3.0.0",
+ "postcss-modules-values": "^4.0.0",
+ "string-hash": "^1.1.1"
+ }
+ },
+ "postcss-modules-extract-imports": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz",
+ "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==",
+ "dev": true
+ },
+ "postcss-modules-local-by-default": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz",
+ "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==",
+ "dev": true,
+ "requires": {
+ "icss-utils": "^5.0.0",
+ "postcss-selector-parser": "^6.0.2",
+ "postcss-value-parser": "^4.1.0"
+ }
+ },
+ "postcss-modules-scope": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz",
+ "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==",
+ "dev": true,
+ "requires": {
+ "postcss-selector-parser": "^6.0.4"
+ }
+ },
+ "postcss-modules-values": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz",
+ "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==",
+ "dev": true,
+ "requires": {
+ "icss-utils": "^5.0.0"
+ }
+ },
+ "postcss-selector-parser": {
+ "version": "6.0.6",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz",
+ "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==",
+ "dev": true,
+ "requires": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ }
+ },
+ "postcss-value-parser": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz",
+ "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==",
+ "dev": true
+ },
+ "readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "requires": {
+ "picomatch": "^2.2.1"
+ }
+ },
+ "resolve": {
+ "version": "1.20.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
+ "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
+ "dev": true,
+ "requires": {
+ "is-core-module": "^2.2.0",
+ "path-parse": "^1.0.6"
+ }
+ },
+ "rollup": {
+ "version": "2.52.3",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.52.3.tgz",
+ "integrity": "sha512-QF3Sju8Kl2z0osI4unyOLyUudyhOMK6G0AeqJWgfiyigqLAlnNrfBcDWDx+f1cqn+JU2iIYVkDrgQ6/KtwEfrg==",
+ "dev": true,
+ "requires": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "sass": {
+ "version": "1.35.1",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.35.1.tgz",
+ "integrity": "sha512-oCisuQJstxMcacOPmxLNiLlj4cUyN2+8xJnG7VanRoh2GOLr9RqkvI4AxA4a6LHVg/rsu+PmxXeGhrdSF9jCiQ==",
+ "requires": {
+ "chokidar": ">=3.0.0 <4.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "source-map-js": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz",
+ "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==",
+ "dev": true
+ },
+ "sourcemap-codec": {
+ "version": "1.4.8",
+ "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
+ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
+ "dev": true
+ },
+ "string-hash": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz",
+ "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=",
+ "dev": true
+ },
+ "to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4="
+ },
+ "to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "requires": {
+ "is-number": "^7.0.0"
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+ "dev": true
+ },
+ "vite": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-2.3.8.tgz",
+ "integrity": "sha512-QiEx+iqNnJntSgSF2fWRQvRey9pORIrtNJzNyBJXwc+BdzWs83FQolX84cTBo393cfhObrtWa6180dAa4NLDiQ==",
+ "dev": true,
+ "requires": {
+ "esbuild": "^0.12.8",
+ "fsevents": "~2.3.2",
+ "postcss": "^8.3.4",
+ "resolve": "^1.20.0",
+ "rollup": "^2.38.5"
+ }
+ },
+ "vue": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/vue/-/vue-3.1.2.tgz",
+ "integrity": "sha512-q/rbKpb7aofax4ugqu2k/uj7BYuNPcd6Z5/qJtfkJQsE0NkwVoCyeSh7IZGH61hChwYn3CEkh4bHolvUPxlQ+w==",
+ "requires": {
+ "@vue/compiler-dom": "3.1.2",
+ "@vue/runtime-dom": "3.1.2",
+ "@vue/shared": "3.1.2"
+ }
+ },
+ "vue-i18n": {
+ "version": "9.1.6",
+ "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.1.6.tgz",
+ "integrity": "sha512-FEC4HZkTH6QRIu/A0wlo0VS/GH3w/fuCC6xfvoC8IyhhtbG9A+go9NfW+HZ1ZXdAcO4EWcVQi04M+iSwuxgixw==",
+ "requires": {
+ "@intlify/core-base": "9.1.6",
+ "@intlify/shared": "9.1.6",
+ "@intlify/vue-devtools": "9.1.6",
+ "@vue/devtools-api": "^6.0.0-beta.7"
+ }
+ },
+ "vue-router": {
+ "version": "4.0.10",
+ "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.0.10.tgz",
+ "integrity": "sha512-YbPf6QnZpyyWfnk7CUt2Bme+vo7TLfg1nGZNkvYqKYh4vLaFw6Gn8bPGdmt5m4qrGnKoXLqc4htAsd3dIukICA==",
+ "requires": {
+ "@vue/devtools-api": "^6.0.0-beta.14"
+ }
+ },
+ "vuex": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/vuex/-/vuex-4.0.2.tgz",
+ "integrity": "sha512-M6r8uxELjZIK8kTKDGgZTYX/ahzblnzC4isU1tpmEuOIIKmV+TRdc+H4s8ds2NuZ7wpUTdGRzJRtoj+lI+pc0Q==",
+ "requires": {
+ "@vue/devtools-api": "^6.0.0-beta.11"
+ }
+ },
+ "yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "dev": true
+ }
+ }
+}
diff --git a/package.json b/package.json
index 375a0048fc2523828243092aec84ddd7381f46fd..3c86795796ab621b6338105b660b6c34316220b7 100644
--- a/package.json
+++ b/package.json
@@ -6,7 +6,12 @@
"serve": "vite preview"
},
"dependencies": {
- "vue": "^3.0.5"
+ "axios": "^0.21.1",
+ "sass": "^1.35.1",
+ "vue": "^3.0.5",
+ "vue-i18n": "^9.1.6",
+ "vue-router": "^4.0.10",
+ "vuex": "^4.0.2"
},
"devDependencies": {
"@vitejs/plugin-vue": "^1.2.3",
diff --git a/src/App.vue b/src/App.vue
index b67169df640bb475e98590ce11f0bccec58910b3..90043ba7d699e407abdd7ccc9302a1ccf5dcad0c 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -1,6 +1,7 @@
+
+
+
+
diff --git a/src/i18n/i18n.js b/src/i18n/i18n.js
new file mode 100644
index 0000000000000000000000000000000000000000..ad9cb1dc4ff3c6a949cf285c12a6ae77941700e9
--- /dev/null
+++ b/src/i18n/i18n.js
@@ -0,0 +1,9 @@
+import {createI18n} from 'vue-i18n'
+import lang from './index'
+
+const i18n = createI18n({
+ locale:localStorage.lang||'cn',
+ message:lang
+})
+
+export default i18n
\ No newline at end of file
diff --git a/src/i18n/index.js b/src/i18n/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..2c82e3f72ee6c0cfe44240eadf6e0f1336bcf7ac
--- /dev/null
+++ b/src/i18n/index.js
@@ -0,0 +1,7 @@
+import en from './language-en'
+import zh from './language-zh'
+
+export default {
+ en,
+ zh,
+}
\ No newline at end of file
diff --git a/src/i18n/language-en.js b/src/i18n/language-en.js
new file mode 100644
index 0000000000000000000000000000000000000000..bb47c8c64c86ab9afbf1f920843a21faa0317ca5
--- /dev/null
+++ b/src/i18n/language-en.js
@@ -0,0 +1,4 @@
+const en = {
+}
+
+export default en
\ No newline at end of file
diff --git a/src/i18n/language-zh.js b/src/i18n/language-zh.js
new file mode 100644
index 0000000000000000000000000000000000000000..1f7f5f73fee2e3837b6f21d28ee9e2d4c317eb04
--- /dev/null
+++ b/src/i18n/language-zh.js
@@ -0,0 +1,11 @@
+const zh = {
+ serviceshop:"服务超市",
+ compute:"算力产品服务",
+ safety:"安全产品服务",
+ data:"数据产品服务",
+ cloud:"网络产品服务",
+ solution:"解决方案服务",
+ servicemanagge:"服务管理",
+}
+
+export default zh
\ No newline at end of file
diff --git a/src/main.js b/src/main.js
index 01433bca2ac76590c48fabfee8d69d7b223f48bb..ffc1169d90c9844f10528b2fd6a0725f5aa3d10e 100644
--- a/src/main.js
+++ b/src/main.js
@@ -1,4 +1,17 @@
import { createApp } from 'vue'
import App from './App.vue'
-createApp(App).mount('#app')
+import router from './router'
+
+import store from '@/store';
+
+import api from '@/request/api.js'
+
+import i18n from './i18n/i18n'
+
+const createVue = createApp(App)
+
+createVue.config.globalProperties.$api = api
+
+createVue.use(store).use(api).use(router).use(i18n).mount('#app')
+
diff --git a/src/pages/index.vue b/src/pages/index.vue
new file mode 100644
index 0000000000000000000000000000000000000000..e812c4399b5fa762f10447766c47e83965c5197d
--- /dev/null
+++ b/src/pages/index.vue
@@ -0,0 +1,45 @@
+
+
+ index
+
+
+
+
+
+
diff --git a/src/request/api.js b/src/request/api.js
new file mode 100644
index 0000000000000000000000000000000000000000..2c15fc4317be5ef83f95269f092439eb1d225210
--- /dev/null
+++ b/src/request/api.js
@@ -0,0 +1,10 @@
+// 容器服务
+import common from '@/request/api/common';
+import mapChart from '@/request/api/mapChart';
+import shzl from './api/shzl';
+
+export default {
+ common,
+ mapChart,
+ shzl
+}
\ No newline at end of file
diff --git a/src/request/api/common.js b/src/request/api/common.js
new file mode 100644
index 0000000000000000000000000000000000000000..dee7e5574f87f7595130777f59fd4ef7591b05b1
--- /dev/null
+++ b/src/request/api/common.js
@@ -0,0 +1,16 @@
+import axios from '@/request/http'; // 导入http中创建的axios实例
+
+
+const servicemanager = {
+ servicetypeinit(urlParams) {
+ return axios.get(`/yth/api/v1/service/type?type=${urlParams.name}`);
+ },
+ namecheck(name){
+ return axios.get(`/yth/api/v1/service/check?name=${name}`);
+ },
+ servicetypelist(urlParams) {
+ return axios.get(`/yth/api/v1/service/home?id=${urlParams.id}`);
+ },
+}
+
+export default servicemanager;
\ No newline at end of file
diff --git a/src/request/api/mapChart.js b/src/request/api/mapChart.js
new file mode 100644
index 0000000000000000000000000000000000000000..ba0415d33372914b33d62de5f8d658272cd60880
--- /dev/null
+++ b/src/request/api/mapChart.js
@@ -0,0 +1,19 @@
+import axios from '@/request/http'; // 导入http中创建的axios实例
+
+
+const mapChart = {
+ getChangzhouMap ()
+ {
+ return axios.get(`/shzl/ui/static/data/changzhou.json`);
+ },
+ exponential ()
+ {
+ return axios.get(`/shzl/api/v1/risk/exponential`);
+ },
+ eventstatistics ()
+ {
+ return axios.get(`/shzl/api/v1/focus/event/statistics`);
+ }
+}
+
+export default mapChart;
\ No newline at end of file
diff --git a/src/request/api/shzl.js b/src/request/api/shzl.js
new file mode 100644
index 0000000000000000000000000000000000000000..a9795a8a11b3dca24d42886af585919eb2520312
--- /dev/null
+++ b/src/request/api/shzl.js
@@ -0,0 +1,57 @@
+import axios from '@/request/http'; // 导入http中创建的axios实例
+
+
+let shzl = {
+ part_all(){
+ return axios.get(`/shzl/api/v1/party/org`);
+ },
+ part_person_all(){
+ return axios.get(`/shzl/api/v1/party/personnel`);
+ },
+ part_build(){
+ return axios.get(`/shzl/api/v1/party/construction`);
+ },
+ person_all(){
+ return axios.get(`/shzl/api/v1/population/situation`);
+ },
+ look_person(){
+ return axios.get(`/shzl/api/v1/population/caring`);
+ },
+ look_event(type){
+ return axios.get(`/shzl/api/v1/focus/event`,{
+ params:{
+ type:type
+ }
+ });
+ },
+ get_risk_list(){
+ return axios.get(`/shzl/api/v1/risk/list`);
+ },
+ get_financial(){
+ return axios.get(`/shzl/api/v1/finance/crime`);
+ },
+ get_financial_word(){
+ return axios.get(`/shzl/api/v1/finance/wordcloud`);
+ },
+ get_financial_bar(){
+ return axios.get(`/shzl/api/v1/finance/crime_type`);
+ },
+ get_ly_all(){
+ return axios.get(`/shzl/api/v1/travel/complaints`);
+ },
+ get_jq_now(){
+ return axios.get(`/shzl/api/v1/travel/passenger`);
+ },
+ get_yl_now(){
+ return axios.get(`/shzl/api/v1/medical/complaints`);
+ },
+ get_jt_data(){
+ return axios.get(`/shzl/api/v1/traffic/accident`);
+ },
+ get_weather(){
+ return axios.get(`http://wthrcdn.etouch.cn/weather_mini?city=常州`);
+ }
+
+}
+
+export default shzl;
\ No newline at end of file
diff --git a/src/request/api/ypfx.js b/src/request/api/ypfx.js
new file mode 100644
index 0000000000000000000000000000000000000000..9c10ddf5ec295ff5269a1b034d4128c6f97fd6ee
--- /dev/null
+++ b/src/request/api/ypfx.js
@@ -0,0 +1,51 @@
+import axios from '@/request/http'; // 导入http中创建的axios实例
+
+
+let ypfx = {
+ //预警概况
+ yjgk(){
+ return axios.get(``);
+ },
+ //预警等级分析
+ yjdjfx(){
+ return axios.get(`/shzl/api/v1/party/org`);
+ },
+ //预警区域分布
+ yjqyfb(){
+ return axios.get(`/shzl/api/v1/party/org`);
+ },
+ //预警处理占比
+ yjclzb(){
+ return axios.get(`/shzl/api/v1/party/org`);
+ },
+ //预警趋势分析
+ yjqsfx(type){
+ return axios.get(`/shzl/api/v1/focus/event`,{
+ params:{
+ type:type
+ }
+ });
+ },
+ //预警转事件占比
+ yjzsjzb(){
+ return axios.get(`/shzl/api/v1/party/org`);
+ },
+ //预警风险排名
+ yjfxpm(){
+
+ },
+ //预警类型占比
+ yjlxzb(){
+ return axios.get(`/shzl/api/v1/population/caring`);
+ },
+ //预警转化率
+ yyjzhl(){
+ return axios.get(`/shzl/api/v1/party/org`);
+ },
+ //转事件处置状态统计
+ zsjczzttj(){
+
+ },
+}
+
+export default ypfx;
\ No newline at end of file
diff --git a/src/request/http.js b/src/request/http.js
new file mode 100644
index 0000000000000000000000000000000000000000..d8725b45855c31ef39b64a1802a885114a354752
--- /dev/null
+++ b/src/request/http.js
@@ -0,0 +1,112 @@
+/**
+ * axios封装
+ * 请求拦截、响应拦截、错误统一处理
+ */
+import axios from 'axios';
+import router from '../router';
+import store from '../store/index';
+
+function getCookie(name) {
+ var strCookie = document.cookie;
+ var arrCookie = strCookie.split("; ");
+ for (var i = 0; i < arrCookie.length; i++) {
+ var arr = arrCookie[i].split("=");
+ if (arr[0] == name) return arr[1];
+ }
+ return "";
+}
+
+const tip = msg => {
+ console.log(msg)
+}
+
+/**
+ * 跳转登录页
+ * 携带当前页面路由,以期在登录页面完成登录后返回当前页面
+ */
+// const toLogin = () => {
+// router.replace({
+// path: '/awecloud/login/#/',
+// query: {
+// redirect: router.currentRoute.fullPath
+// }
+// });
+// }
+
+/**
+ * 请求失败后的错误统一处理
+ * @param {Number} status 请求失败的状态码
+ */
+const errorHandle = (status, other) => {
+ // 状态码判断
+ switch (status) {
+ case 400: tip('请求错误(400)'); break;
+ // 401: 未登录状态,跳转登录页
+ case 401:
+ // toLogin();
+ break;
+ // 403 token过期
+ // 清除token并跳转登录页
+ case 403:
+ tip('登录过期,请重新登录');
+ localStorage.removeItem('token');
+ store.commit('loginSuccess', null);
+ setTimeout(() => {
+ // toLogin();
+ }, 1000);
+ break;
+ case 404: tip('请求的资源不存在'); break;
+ case 408: tip('请求超时(408)');
+ case 500: tip('服务器错误(500)');
+ case 501: tip('服务未实现(501)');
+ case 502: tip('网络错误(502)');
+ case 503: tip('服务不可用(503)');
+ case 504: tip('网络超时(504)');
+ case 505: tip('HTTP版本不受支持(505)');
+ default: tip(`连接出错,${other}`);
+ }
+}
+
+// 创建axios实例
+var instance = axios.create({ timeout: 1000 * 12 });
+// 设置post请求头
+instance.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
+/**
+ * 请求拦截器
+ * 每次请求前,如果存在token则在请求头中携带token
+ */
+instance.interceptors.request.use(
+ config => {
+ // const token = store.state.token;
+ // var token = 'Basic cm9vdA%3D%3D'
+ // token && (config.headers.Authorization = token);
+ // const token = store.state.token;
+ // var token = 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0ZXh0IjoibGltaW5nZSIsInR5cGUiOiJ1c2VyIn0.YUPQ-3nttgfRGOUV4T06JZ6osH46nZ0UUolYdEBhvSQ'
+ // token && (config.headers.Authorization = token);
+
+ // if(config.headers.Authorization!="headers"){
+ // const token = process.env.DRONE_TOKEN ? process.env.DRONE_TOKEN : Conf.token;
+ // var Authorization = `Bearer ${token}`
+ // token && (config.headers.Authorization = Authorization);
+ // }else{
+ // config.headers.Authorization = '';
+ // }
+ return config;
+ },
+ error => Promise.error(error))
+
+// 响应拦截器
+instance.interceptors.response.use(
+ // 请求成功
+ res => res.status === 200|| res.status === 201? Promise.resolve(res) : Promise.reject(res),
+ // 请求失败
+ error => {
+ const { response } = error;
+ if (response) {
+ // 请求已发出,但是不在2xx的范围
+ errorHandle(response.status, response.data.errmessage);
+ return Promise.reject(response);
+ }
+ });
+
+export default instance;
diff --git a/src/router/index.js b/src/router/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..d22b32bef122b60574c23fe5957efa7e12b1df2a
--- /dev/null
+++ b/src/router/index.js
@@ -0,0 +1,19 @@
+import {createRouter, createWebHashHistory} from "vue-router";
+
+
+
+const routes = [
+ {
+ path: '/', //path 链接路径
+ name: 'index', // 路由名称
+ component: () => import("@/pages/index.vue"), //映射组件
+ },
+]
+
+const router = createRouter({
+ history: createWebHashHistory(),
+ routes
+});
+
+
+export default router
diff --git a/src/services/helper.js b/src/services/helper.js
new file mode 100644
index 0000000000000000000000000000000000000000..3176dac98aaa419405b6aeae50bc5b94506a12b2
--- /dev/null
+++ b/src/services/helper.js
@@ -0,0 +1,172 @@
+module.exports.timestamp = function(timestamp) {
+ // 获取当前时间戳(毫秒)(new Date()).getTime()
+ // 毫秒->秒 /1000
+ let date = Math.floor(new Date().getTime() / 1000);
+ let time = date - timestamp;
+ if (time == 0) {
+ return 0;
+ } else if (time < 60) {
+ return time + "秒";
+ } else if (time / 60 < 60) {
+ return Math.round(time / 60) + "分钟前";
+ } else if (time / 60 / 60 < 24) {
+ return Math.round(time / 60 / 60) + "小时前";
+ } else if (time / 60 / 60 / 24 < 24) {
+ return Math.round(time / 60 / 60 / 24) + "天前";
+ } else if (time / 60 / 60 / 24 / 7 < 7) {
+ return Math.round(time / 60 / 60 / 24) + "周前";
+ }
+};
+module.exports.enqueuedtimes = function(finishedtime, starttime) {
+ let time = finishedtime - starttime;
+ if (time < 60 && time > 0) {
+ return time + "秒";
+ } else if (time / 60 < 60 && time > 0) {
+ return parseInt(time / 60) + "分钟" + (time % 60) + "秒";
+ } else if (time < 0) {
+ return "--";
+ }
+};
+module.exports.yuntimes = function(finishedtime, starttime) {
+ if (!finishedtime || !starttime) {
+ return "00:00";
+ }
+ let time = finishedtime - starttime;
+ var str = "";
+ if (time < 60 && time > 0) {
+ str += "00:";
+ if (time < 10) {
+ str += "0" + time;
+ } else {
+ str += time;
+ }
+ } else {
+ var minute = parseInt(time / 60);
+ var seconds = time % 60;
+ console.log("m==>", minute, "| s==>", seconds);
+ if (minute < 10) {
+ str += "0" + minute;
+ } else {
+ str += minute;
+ }
+ str += ":";
+ if (seconds < 10) {
+ str += "0" + seconds;
+ } else {
+ str += seconds;
+ }
+ }
+ return str;
+};
+module.exports.dateFormat = function(fmt, timestamp) {
+ let date = new Date(timestamp);
+ let ret;
+ const opt = {
+ "Y+": date.getFullYear().toString(), // 年
+ "m+": (date.getMonth() + 1).toString(), // 月
+ "d+": date.getDate().toString(), // 日
+ "H+": date.getHours().toString(), // 时
+ "M+": date.getMinutes().toString(), // 分
+ "S+": date.getSeconds().toString() // 秒
+ // 有其他格式化字符需求可以继续添加,必须转化成字符串
+ };
+ for (let k in opt) {
+ ret = new RegExp("(" + k + ")").exec(fmt);
+ if (ret) {
+ fmt = fmt.replace(
+ ret[1],
+ ret[1].length == 1 ? opt[k] : opt[k].padStart(ret[1].length, "0")
+ );
+ }
+ }
+ return fmt;
+};
+module.exports.GetProperty = function(obj, prop) {
+ if (!obj) return null;
+ let res = obj;
+ if (prop) {
+ let props = prop.split(".");
+ for (let i = 0; i < props.length; i++) {
+ res = res[props[i]];
+ if (typeof res == "undefined" || res == null) {
+ return null;
+ }
+ }
+ }
+ return res;
+};
+
+module.exports.GetTimeDifference = function(stop_date) {
+ let nowdate = new Date();
+ let stoopdate = new Date(stop_date);
+ return nowdate > stoopdate;
+};
+
+module.exports.dateStringTransform = function(date) {
+ /*
+ input: 2020-06-12T16:38:11+08:00
+ output: 2020-06-12 16:38:11
+ */
+ if (String(date).indexOf("T") != -1) {
+ let arr = date.split("T");
+ let t = arr[1];
+ let tarr = t.split(".000");
+ let marr = tarr[0].split(":");
+ let h =
+ parseInt(marr[0]) >= 10 ? parseInt(marr[0]) : "0" + parseInt(marr[0]);
+ let m =
+ parseInt(marr[1]) >= 10 ? parseInt(marr[1]) : "0" + parseInt(marr[1]);
+ let s =
+ parseInt(marr[2]) >= 10 ? parseInt(marr[2]) : "0" + parseInt(marr[2]);
+ let dd = arr[0] + " " + h + ":" + m + ":" + s;
+ return dd;
+ } else {
+ return date;
+ }
+};
+
+module.exports.getLangDate = function(date) {
+ var dateObj = new Date(date); //表示当前系统时间的Date对象
+ var year = dateObj.getFullYear(); //当前系统时间的完整年份值
+ var month = dateObj.getMonth() + 1; //当前系统时间的月份值
+ var date = dateObj.getDate(); //当前系统时间的月份中的日
+ var day = dateObj.getDay(); //当前系统时间中的星期值
+ var weeks = [
+ "星期日",
+ "星期一",
+ "星期二",
+ "星期三",
+ "星期四",
+ "星期五",
+ "星期六"
+ ];
+ var week = weeks[day]; //根据星期值,从数组中获取对应的星期字符串
+ var hour = dateObj.getHours(); //当前系统时间的小时值
+ var minute = dateObj.getMinutes(); //当前系统时间的分钟值
+ var second = dateObj.getSeconds(); //当前系统时间的秒钟值
+ //如果月、日、小时、分、秒的值小于10,在前面补0
+ if (month < 10) {
+ month = "0" + month;
+ }
+ if (date < 10) {
+ date = "0" + date;
+ }
+ if (hour < 10) {
+ hour = "0" + hour;
+ }
+ if (minute < 10) {
+ minute = "0" + minute;
+ }
+ var newDate =
+ year +
+ "年" +
+ month +
+ "月" +
+ date +
+ "日 " +
+ week
+ var newTime = hour +":" +minute
+
+
+ return [newDate,newTime]
+};
diff --git a/src/services/index.js b/src/services/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..f58ccf1141122b140c4dc644eccffb473b29cc3a
--- /dev/null
+++ b/src/services/index.js
@@ -0,0 +1,4 @@
+
+module.exports = {
+ "event": "/sjgl/api/events",
+};
\ No newline at end of file
diff --git a/src/services/routeblocking.js b/src/services/routeblocking.js
new file mode 100644
index 0000000000000000000000000000000000000000..2632cada70e61312ed4781fdbd97e529a38177f6
--- /dev/null
+++ b/src/services/routeblocking.js
@@ -0,0 +1,40 @@
+
+// 取得cookie
+function getCookie(name) {
+ var nameEQ = name + '='
+ var ca = document.cookie.split(';') // 把cookie分割成组
+ for (var i = 0; i < ca.length; i++) {
+ var c = ca[i] // 取得字符串
+ while (c.charAt(0) == ' ') { // 判断一下字符串有没有前导空格
+ c = c.substring(1, c.length) // 有的话,从第二位开始取
+ }
+ if (c.indexOf(nameEQ) == 0) { // 如果含有我们要的name
+ return unescape(c.substring(nameEQ.length, c.length)) // 解码并截取我们要值
+ }
+ }
+ return false
+ }
+
+ // 清除cookie
+function clearCookie(name) {
+ setCookie(name, "", -1);
+}
+
+// 设置cookie
+function setCookie(name, value, seconds) {
+ seconds = seconds || 0; //seconds有值就直接赋值,没有为0,这个根php不一样。
+ var expires = "";
+ if (seconds != 0 ) { //设置cookie生存时间
+ var date = new Date();
+ date.setTime(date.getTime()+(seconds*1000));
+ expires = "; expires="+date.toGMTString();
+ }
+ document.cookie = name+"="+escape(value)+expires+"; path=/"; //转码并赋值
+ }
+
+
+export {
+ getCookie,
+ clearCookie,
+ setCookie,
+}
diff --git a/src/store/index.js b/src/store/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..fec1f544ab1ed3a9ae2f941e236ca3f5a83af270
--- /dev/null
+++ b/src/store/index.js
@@ -0,0 +1,25 @@
+import {createStore} from 'vuex'
+
+
+const store = createStore({
+ state: {
+ name: "",
+ userInfo: {},
+ userType:"",
+ pid:null
+ },
+ mutations: {
+ change(state, name) {
+ state.name = name;
+ },
+ changeUserInfo(state, value) {
+ state.userInfo = value;
+ state.userType = value.user_type;
+ },
+ getPid(state, id) {
+ state.pid = id;
+ },
+ }
+});
+export default store;
+
diff --git a/vite.config.js b/vite.config.js
index 264825ea5971c5c8c92f19a0b2e6864338ef43c2..fc11a1fa9946e5acc02c47de0e07a5a072f930c3 100644
--- a/vite.config.js
+++ b/vite.config.js
@@ -1,10 +1,32 @@
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
-// https://vitejs.dev/config/
+const path = require('path')
+console.log(__dirname);
+
+function resolve_path (dir) {
+ return path.join(__dirname, './', dir)
+}
+
+
export default defineConfig({
plugins: [vue()],
base:'./',
+ clearScreen:false,
+ resolve:{
+ alias:{
+ '@':resolve_path('src'),
+ }
+ },
+ server:{
+ proxy:{
+ '/shzl/api': {
+ target: 'https://sjgl.wodcloud.com/shzl/api', // 接口域名
+ changeOrigin: true, // 是否跨域
+ rewrite: (path) => path.replace('/shzl/api', ''),
+ },
+ }
+ },
build:{
outDir:'dist/zjhl',
assetsDir:'static'