diff --git a/.dev.production b/.dev.production new file mode 100644 index 0000000..92659e3 --- /dev/null +++ b/.dev.production @@ -0,0 +1,3 @@ +NODE_ENV = 'production' +VITE_APP_BASE_API = http://120.24.64.5:8088/mall-admin +VITE_APP_BASE_URL = /index/ \ No newline at end of file diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..5a7c834 --- /dev/null +++ b/.env.development @@ -0,0 +1,2 @@ +NODE_ENV = 'development' +VITE_APP_BASE_API = http://120.24.64.5:8088/mall-admin \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3b0e150 --- /dev/null +++ b/.gitignore @@ -0,0 +1,28 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist + +offline +dist-ssr +*.local +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.zip* +*.ntvs* +*.njsproj +*.sln +*.sw? +vite.config*.ts +pnpm-lock.yaml diff --git a/@jiaminghi.rar b/@jiaminghi.rar new file mode 100644 index 0000000..8860079 Binary files /dev/null and b/@jiaminghi.rar differ diff --git a/README.en.md b/README.en.md new file mode 100644 index 0000000..bfb1236 --- /dev/null +++ b/README.en.md @@ -0,0 +1,36 @@ +# vue3-vite-ts-echarts5-axios 大屏可视化基础模板 + +#### Description +基于vue3-vite-ts-echarts5-axios+element-plus-mockjs -atav做的大屏可视化基础模板,可用于大屏可视化,也可用于其他项目 已封装axios + +#### 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/) diff --git a/auto-imports.d.ts b/auto-imports.d.ts new file mode 100644 index 0000000..b5eb079 --- /dev/null +++ b/auto-imports.d.ts @@ -0,0 +1,9 @@ +/* eslint-disable */ +/* prettier-ignore */ +// @ts-nocheck +// Generated by unplugin-auto-import +export {} +declare global { + const ElMessage: typeof import('element-plus/es')['ElMessage'] + const ElMessageBox: typeof import('element-plus/es')['ElMessageBox'] +} diff --git a/components.d.ts b/components.d.ts new file mode 100644 index 0000000..b6c6be2 --- /dev/null +++ b/components.d.ts @@ -0,0 +1,69 @@ +/* eslint-disable */ +/* prettier-ignore */ +// @ts-nocheck +// Generated by unplugin-vue-components +// Read more: https://github.com/vuejs/core/pull/3399 +import '@vue/runtime-core' + +export {} + +declare module '@vue/runtime-core' { + export interface GlobalComponents { + DatePicker: typeof import('./src/components/datePicker/index.vue')['default'] + EchartMap3D: typeof import('./src/components/echartMap3D.vue')['default'] + ElButton: typeof import('element-plus/es')['ElButton'] + ElCard: typeof import('element-plus/es')['ElCard'] + ElCheckbox: typeof import('element-plus/es')['ElCheckbox'] + ElCheckboxButton: typeof import('element-plus/es')['ElCheckboxButton'] + ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup'] + ElCol: typeof import('element-plus/es')['ElCol'] + ElDatePicker: typeof import('element-plus/es')['ElDatePicker'] + ElDescriptions: typeof import('element-plus/es')['ElDescriptions'] + ElDescriptionsItem: typeof import('element-plus/es')['ElDescriptionsItem'] + ElDialog: typeof import('element-plus/es')['ElDialog'] + ElDivider: typeof import('element-plus/es')['ElDivider'] + ElDrawer: typeof import('element-plus/es')['ElDrawer'] + ElDropdown: typeof import('element-plus/es')['ElDropdown'] + ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem'] + ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu'] + ElEmpty: typeof import('element-plus/es')['ElEmpty'] + ElForm: typeof import('element-plus/es')['ElForm'] + ElFormItem: typeof import('element-plus/es')['ElFormItem'] + ElIcon: typeof import('element-plus/es')['ElIcon'] + ElInput: typeof import('element-plus/es')['ElInput'] + ElInputNumber: typeof import('element-plus/es')['ElInputNumber'] + ElLink: typeof import('element-plus/es')['ElLink'] + ElOption: typeof import('element-plus/es')['ElOption'] + ElPagination: typeof import('element-plus/es')['ElPagination'] + ElPopover: typeof import('element-plus/es')['ElPopover'] + ElRadioButton: typeof import('element-plus/es')['ElRadioButton'] + ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup'] + ElRow: typeof import('element-plus/es')['ElRow'] + ElSelect: typeof import('element-plus/es')['ElSelect'] + ElTable: typeof import('element-plus/es')['ElTable'] + ElTableColumn: typeof import('element-plus/es')['ElTableColumn'] + ElTabPane: typeof import('element-plus/es')['ElTabPane'] + ElTabs: typeof import('element-plus/es')['ElTabs'] + ElTag: typeof import('element-plus/es')['ElTag'] + ElTooltip: typeof import('element-plus/es')['ElTooltip'] + ElTreeSelect: typeof import('element-plus/es')['ElTreeSelect'] + ElUpload: typeof import('element-plus/es')['ElUpload'] + HelloWorld: typeof import('./src/components/HelloWorld.vue')['default'] + MyEchart: typeof import('./src/components/echarts/MyEchart.vue')['default'] + MyEchartMap: typeof import('./src/components/MyEchartMap.vue')['default'] + PointTree: typeof import('./src/components/tree/pointTree.vue')['default'] + Rmsboxi: typeof import('./src/components/BX/rmsboxi.vue')['default'] + Rmsboxi1: typeof import('./src/components/BX/rmsboxi1.vue')['default'] + Rmsboxi2: typeof import('./src/components/BX/rmsboxi2.vue')['default'] + RouterLink: typeof import('vue-router')['RouterLink'] + RouterView: typeof import('vue-router')['RouterView'] + Shushiboxi: typeof import('./src/components/BX/shushiboxi.vue')['default'] + Shushiboxi1: typeof import('./src/components/BX/shushiboxi1.vue')['default'] + Shushiboxi2: typeof import('./src/components/BX/shushiboxi2.vue')['default'] + SystemTree: typeof import('./src/components/tree/systemTree.vue')['default'] + WaveForm: typeof import('./src/components/BX/waveForm.vue')['default'] + } + export interface ComponentCustomProperties { + vLoading: typeof import('element-plus/es')['ElLoadingDirective'] + } +} diff --git a/index.html b/index.html new file mode 100644 index 0000000..028a323 --- /dev/null +++ b/index.html @@ -0,0 +1,13 @@ + + + + + + + 电压暂降监测平台 + + +
+ + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..71eaa04 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2301 @@ +{ + "name": "vite-ts-demo", + "version": "0.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@antfu/utils": { + "version": "0.7.10", + "resolved": "https://registry.npmmirror.com/@antfu/utils/-/utils-0.7.10.tgz", + "integrity": "sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==", + "dev": true + }, + "@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==" + }, + "@babel/helper-validator-identifier": { + "version": "7.27.1", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==" + }, + "@babel/parser": { + "version": "7.27.7", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.27.7.tgz", + "integrity": "sha512-qnzXzDXdr/po3bOTbTIQZ7+TxNKxpkN5IifVLXS+r7qwynkZfPyjZfE7hCXbo7IoO9TNcSyibgONsf2HauUd3Q==", + "requires": { + "@babel/types": "^7.27.7" + } + }, + "@babel/runtime": { + "version": "7.27.6", + "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.27.6.tgz", + "integrity": "sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==" + }, + "@babel/types": { + "version": "7.27.7", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.27.7.tgz", + "integrity": "sha512-8OLQgDScAOHXnAz2cV+RfzzNMipuLVBz2biuAJFMV9bfkNf393je3VM8CLkjQodW5+iWsSJdSgSWT6rsZoXHPw==", + "requires": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + } + }, + "@ctrl/tinycolor": { + "version": "3.6.1", + "resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz", + "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==" + }, + "@element-plus/icons-vue": { + "version": "2.3.1" + }, + "@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "dev": true, + "optional": true + }, + "@floating-ui/core": { + "version": "1.7.2", + "resolved": "https://registry.npmmirror.com/@floating-ui/core/-/core-1.7.2.tgz", + "integrity": "sha512-wNB5ooIKHQc+Kui96jE/n69rHFWAVoxn5CAzL1Xdd8FG03cgY3MLO+GF9U3W737fYDSgPWA6MReKhBQBop6Pcw==", + "requires": { + "@floating-ui/utils": "^0.2.10" + } + }, + "@floating-ui/dom": { + "version": "1.7.2", + "resolved": "https://registry.npmmirror.com/@floating-ui/dom/-/dom-1.7.2.tgz", + "integrity": "sha512-7cfaOQuCS27HD7DX+6ib2OrnW+b4ZBwDNnCcT0uTyidcmyWb03FnQqJybDBoCnpdxwBSfA94UAYlRCt7mV+TbA==", + "requires": { + "@floating-ui/core": "^1.7.2", + "@floating-ui/utils": "^0.2.10" + } + }, + "@floating-ui/utils": { + "version": "0.2.10", + "resolved": "https://registry.npmmirror.com/@floating-ui/utils/-/utils-0.2.10.tgz", + "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==" + }, + "@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/data-view": { + "version": "2.10.0", + "requires": { + "@babel/runtime": "^7.5.5", + "@jiaminghi/charts": "*" + } + }, + "@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" + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.1.tgz", + "integrity": "sha512-mBLKRHc7Ffw/hObYb9+cunuGNjshQk+vZdwZBJoqiysK/mW3Jq0UXosq8aIhMnLevANhR9yoYfdUEOHg6M9y0g==" + }, + "@kjgl77/datav-vue3": { + "version": "1.7.4", + "requires": { + "@jiaminghi/c-render": "^0.4.3", + "@jiaminghi/charts": "^0.2.18", + "@jiaminghi/color": "^1.1.3", + "@vueuse/core": "^10.11.1" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@parcel/watcher": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@parcel/watcher/-/watcher-2.5.1.tgz", + "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", + "dev": true, + "optional": true, + "requires": { + "@parcel/watcher-android-arm64": "2.5.1", + "@parcel/watcher-darwin-arm64": "2.5.1", + "@parcel/watcher-darwin-x64": "2.5.1", + "@parcel/watcher-freebsd-x64": "2.5.1", + "@parcel/watcher-linux-arm-glibc": "2.5.1", + "@parcel/watcher-linux-arm-musl": "2.5.1", + "@parcel/watcher-linux-arm64-glibc": "2.5.1", + "@parcel/watcher-linux-arm64-musl": "2.5.1", + "@parcel/watcher-linux-x64-glibc": "2.5.1", + "@parcel/watcher-linux-x64-musl": "2.5.1", + "@parcel/watcher-win32-arm64": "2.5.1", + "@parcel/watcher-win32-ia32": "2.5.1", + "@parcel/watcher-win32-x64": "2.5.1", + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + } + }, + "@parcel/watcher-android-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", + "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", + "dev": true, + "optional": true + }, + "@parcel/watcher-darwin-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", + "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", + "dev": true, + "optional": true + }, + "@parcel/watcher-darwin-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", + "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", + "dev": true, + "optional": true + }, + "@parcel/watcher-freebsd-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", + "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", + "dev": true, + "optional": true + }, + "@parcel/watcher-linux-arm-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", + "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", + "dev": true, + "optional": true + }, + "@parcel/watcher-linux-arm-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", + "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", + "dev": true, + "optional": true + }, + "@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", + "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", + "dev": true, + "optional": true + }, + "@parcel/watcher-linux-arm64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", + "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", + "dev": true, + "optional": true + }, + "@parcel/watcher-linux-x64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz", + "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==", + "dev": true, + "optional": true + }, + "@parcel/watcher-linux-x64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz", + "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==", + "dev": true, + "optional": true + }, + "@parcel/watcher-win32-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", + "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", + "dev": true, + "optional": true + }, + "@parcel/watcher-win32-ia32": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", + "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", + "dev": true, + "optional": true + }, + "@parcel/watcher-win32-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", + "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", + "dev": true, + "optional": true + }, + "@rollup/pluginutils": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-5.2.0.tgz", + "integrity": "sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==", + "dev": true, + "requires": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "dependencies": { + "picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true + } + } + }, + "@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true + }, + "@types/lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-NYqRyg/hIQrYPT9lbOeYc3kIRabJDn/k4qQHIXUpx88CBDww2fD15Sg5kbXlW86zm2XEW4g0QxkTI3/Kfkc7xQ==" + }, + "@types/lodash-es": { + "version": "4.17.12", + "resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.12.tgz", + "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", + "requires": { + "@types/lodash": "*" + } + }, + "@types/mockjs": { + "version": "1.0.10", + "resolved": "https://registry.npmmirror.com/@types/mockjs/-/mockjs-1.0.10.tgz", + "integrity": "sha512-SXgrhajHG7boLv6oU93CcmdDm0HYRiceuz6b+7z+/2lCJPTWDv0V5YiwFHT2ejE4bQqgSXQiVPQYPWv7LGsK1g==", + "dev": true + }, + "@types/node": { + "version": "18.19.110", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "@types/web-bluetooth": { + "version": "0.0.20", + "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz", + "integrity": "sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==" + }, + "@vitejs/plugin-vue": { + "version": "4.6.2", + "dev": true + }, + "@volar/language-core": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/@volar/language-core/-/language-core-1.11.1.tgz", + "integrity": "sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==", + "dev": true, + "requires": { + "@volar/source-map": "1.11.1" + } + }, + "@volar/source-map": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/@volar/source-map/-/source-map-1.11.1.tgz", + "integrity": "sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==", + "dev": true, + "requires": { + "muggle-string": "^0.3.1" + } + }, + "@volar/typescript": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/@volar/typescript/-/typescript-1.11.1.tgz", + "integrity": "sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==", + "dev": true, + "requires": { + "@volar/language-core": "1.11.1", + "path-browserify": "^1.0.1" + } + }, + "@vue/compiler-core": { + "version": "3.5.16", + "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.16.tgz", + "integrity": "sha512-AOQS2eaQOaaZQoL1u+2rCJIKDruNXVBZSiUD3chnUrsoX5ZTQMaCvXlWNIfxBJuU15r1o7+mpo5223KVtIhAgQ==", + "requires": { + "@babel/parser": "^7.27.2", + "@vue/shared": "3.5.16", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.1" + } + }, + "@vue/compiler-dom": { + "version": "3.5.16", + "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.16.tgz", + "integrity": "sha512-SSJIhBr/teipXiXjmWOVWLnxjNGo65Oj/8wTEQz0nqwQeP75jWZ0n4sF24Zxoht1cuJoWopwj0J0exYwCJ0dCQ==", + "requires": { + "@vue/compiler-core": "3.5.16", + "@vue/shared": "3.5.16" + } + }, + "@vue/compiler-sfc": { + "version": "3.5.16", + "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.16.tgz", + "integrity": "sha512-rQR6VSFNpiinDy/DVUE0vHoIDUF++6p910cgcZoaAUm3POxgNOOdS/xgoll3rNdKYTYPnnbARDCZOyZ+QSe6Pw==", + "requires": { + "@babel/parser": "^7.27.2", + "@vue/compiler-core": "3.5.16", + "@vue/compiler-dom": "3.5.16", + "@vue/compiler-ssr": "3.5.16", + "@vue/shared": "3.5.16", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.17", + "postcss": "^8.5.3", + "source-map-js": "^1.2.1" + } + }, + "@vue/compiler-ssr": { + "version": "3.5.16", + "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.16.tgz", + "integrity": "sha512-d2V7kfxbdsjrDSGlJE7my1ZzCXViEcqN6w14DOsDrUCHEA6vbnVCpRFfrc4ryCP/lCKzX2eS1YtnLE/BuC9f/A==", + "requires": { + "@vue/compiler-dom": "3.5.16", + "@vue/shared": "3.5.16" + } + }, + "@vue/devtools-api": { + "version": "6.6.4", + "resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.6.4.tgz", + "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==" + }, + "@vue/language-core": { + "version": "1.8.27", + "resolved": "https://registry.npmmirror.com/@vue/language-core/-/language-core-1.8.27.tgz", + "integrity": "sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==", + "dev": true, + "requires": { + "@volar/language-core": "~1.11.1", + "@volar/source-map": "~1.11.1", + "@vue/compiler-dom": "^3.3.0", + "@vue/shared": "^3.3.0", + "computeds": "^0.0.1", + "minimatch": "^9.0.3", + "muggle-string": "^0.3.1", + "path-browserify": "^1.0.1", + "vue-template-compiler": "^2.7.14" + } + }, + "@vue/reactivity": { + "version": "3.5.16", + "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.16.tgz", + "integrity": "sha512-FG5Q5ee/kxhIm1p2bykPpPwqiUBV3kFySsHEQha5BJvjXdZTUfmya7wP7zC39dFuZAcf/PD5S4Lni55vGLMhvA==", + "requires": { + "@vue/shared": "3.5.16" + } + }, + "@vue/runtime-core": { + "version": "3.5.16", + "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.16.tgz", + "integrity": "sha512-bw5Ykq6+JFHYxrQa7Tjr+VSzw7Dj4ldR/udyBZbq73fCdJmyy5MPIFR9IX/M5Qs+TtTjuyUTCnmK3lWWwpAcFQ==", + "requires": { + "@vue/reactivity": "3.5.16", + "@vue/shared": "3.5.16" + } + }, + "@vue/runtime-dom": { + "version": "3.5.16", + "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.5.16.tgz", + "integrity": "sha512-T1qqYJsG2xMGhImRUV9y/RseB9d0eCYZQ4CWca9ztCuiPj/XWNNN+lkNBuzVbia5z4/cgxdL28NoQCvC0Xcfww==", + "requires": { + "@vue/reactivity": "3.5.16", + "@vue/runtime-core": "3.5.16", + "@vue/shared": "3.5.16", + "csstype": "^3.1.3" + } + }, + "@vue/server-renderer": { + "version": "3.5.16", + "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.5.16.tgz", + "integrity": "sha512-BrX0qLiv/WugguGsnQUJiYOE0Fe5mZTwi6b7X/ybGB0vfrPH9z0gD/Y6WOR1sGCgX4gc25L1RYS5eYQKDMoNIg==", + "requires": { + "@vue/compiler-ssr": "3.5.16", + "@vue/shared": "3.5.16" + } + }, + "@vue/shared": { + "version": "3.5.16", + "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.16.tgz", + "integrity": "sha512-c/0fWy3Jw6Z8L9FmTyYfkpM5zklnqqa9+a6dz3DvONRKW2NEbh46BP0FHuLFSWi2TnQEtp91Z6zOWNrU6QiyPg==" + }, + "@vueuse/core": { + "version": "10.11.1", + "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-10.11.1.tgz", + "integrity": "sha512-guoy26JQktXPcz+0n3GukWIy/JDNKti9v6VEMu6kV2sYBsWuGiTU8OWdg+ADfUbHg3/3DlqySDe7JmdHrktiww==", + "requires": { + "@types/web-bluetooth": "^0.0.20", + "@vueuse/metadata": "10.11.1", + "@vueuse/shared": "10.11.1", + "vue-demi": ">=0.14.8" + } + }, + "@vueuse/metadata": { + "version": "10.11.1", + "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-10.11.1.tgz", + "integrity": "sha512-IGa5FXd003Ug1qAZmyE8wF3sJ81xGLSqTqtQ6jaVfkeZ4i5kS2mwQF61yhVqojRnenVew5PldLyRgvdl4YYuSw==" + }, + "@vueuse/shared": { + "version": "10.11.1", + "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-10.11.1.tgz", + "integrity": "sha512-LHpC8711VFZlDaYUXEBbFBCQ7GS3dVU9mjOhhMhXP6txTV4EhYQg/KGnQuvt/sPAtoUKq7VVUnL6mVtFoL42sA==", + "requires": { + "vue-demi": ">=0.14.8" + } + }, + "@yangjianfei/bmaplib.lushu": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/@yangjianfei/bmaplib.lushu/-/bmaplib.lushu-1.0.0.tgz", + "integrity": "sha512-qZVijbgUgNs6tsP1muS67x0XzE5fJ3kFireouDvXO3bUYVV6XbpjZXksQTsggihLMIEvC1DO9GS9vVF8CnEeqQ==" + }, + "acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "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.9.0", + "requires": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "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 + }, + "base64-arraybuffer": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", + "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==" + }, + "binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true + }, + "bmaplib.curveline": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/bmaplib.curveline/-/bmaplib.curveline-1.0.0.tgz", + "integrity": "sha512-9wcFMVhiYxNPqpvsLDAADn3qDhNzXp2mA6VyHSHg2XOAgSooC7ZiujdFhy0sp+0QYjTfJ/MjmLuNoUg2HHxH4Q==" + }, + "bmaplib.distancetool": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/bmaplib.distancetool/-/bmaplib.distancetool-1.0.2.tgz", + "integrity": "sha512-EvxMnQRH6xM036zx5OLPyTg5tMCTbFBuGTTHOtExLy2/T0X6v5Va0YE7c3IPm/a/Eo5V/ynYpOLOLZbRY8ccyA==" + }, + "bmaplib.heatmap": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/bmaplib.heatmap/-/bmaplib.heatmap-1.0.4.tgz", + "integrity": "sha512-rmhqUARBpUSJ9jXzUI2j7dIOqnc38bqubkx/8a349U2qtw/ulLUwyzRD535OrA8G7w5cz4aPKm6/rNvUAarg/Q==" + }, + "bmaplib.markerclusterer": { + "version": "1.0.13", + "resolved": "https://registry.npmmirror.com/bmaplib.markerclusterer/-/bmaplib.markerclusterer-1.0.13.tgz", + "integrity": "sha512-VrLyWSiuDEVNi0yUfwOhFQ6z1oEEHS4w36GNu3iASu6p52QIx9uAXMUkuSCHReNR0bj2Cp9SA1dSx5RpojXajQ==", + "requires": { + "bmaplib.texticonoverlay": "^1.0.2" + } + }, + "bmaplib.texticonoverlay": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/bmaplib.texticonoverlay/-/bmaplib.texticonoverlay-1.0.2.tgz", + "integrity": "sha512-4ZTWr4ZP3B6qEWput5Tut16CfZgII38YwM3bpyb4gFTQyORlKYryFp9WHWrwZZaHlOyYDAXG9SX0hka43jTADg==" + }, + "brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "braces": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "requires": { + "fill-range": "^7.1.1" + } + }, + "call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "requires": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "requires": { + "readdirp": "^4.0.1" + } + }, + "claygl": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/claygl/-/claygl-1.3.0.tgz", + "integrity": "sha512-+gGtJjT6SSHD2l2yC3MCubW/sCV40tZuSs5opdtn79vFSGUgp/lH139RNEQ6Jy078/L0aV8odCw8RSrUcMfLaQ==" + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "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" + } + }, + "commander": { + "version": "14.0.0", + "resolved": "https://registry.npmmirror.com/commander/-/commander-14.0.0.tgz", + "integrity": "sha512-2uM9rYjPvyq39NwLRqaiLtWHyDC1FvryJDa2ATTVims5YAS4PupsEQsDvP14FqhFr0P49CYDugi59xaxJlTXRA==" + }, + "computeds": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/computeds/-/computeds-0.0.1.tgz", + "integrity": "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==", + "dev": true + }, + "confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmmirror.com/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "dev": true + }, + "connect": { + "version": "3.7.0", + "resolved": "https://registry.npmmirror.com/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dev": true, + "requires": { + "is-what": "^3.14.1" + } + }, + "css-line-break": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/css-line-break/-/css-line-break-2.1.0.tgz", + "integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==", + "requires": { + "utrie": "^1.0.2" + } + }, + "csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "dayjs": { + "version": "1.11.13", + "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz", + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==" + }, + "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 + }, + "debug": { + "version": "4.4.1", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "dev": true, + "requires": { + "ms": "^2.1.3" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "dev": true, + "optional": true + }, + "dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "requires": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + } + }, + "echarts-gl": { + "version": "2.0.9", + "requires": { + "claygl": "^1.2.1", + "zrender": "^5.1.1" + } + }, + "echarts-liquidfill": { + "version": "3.1.0" + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "element-plus": { + "version": "2.9.11", + "requires": { + "@ctrl/tinycolor": "^3.4.1", + "@element-plus/icons-vue": "^2.3.1", + "@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.13", + "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" + }, + "dependencies": { + "@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/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==" + }, + "@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": "*" + } + }, + "@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": "*" + } + } + } + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true + }, + "entities": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" + }, + "errno": { + "version": "0.1.8", + "resolved": "https://registry.npmmirror.com/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "optional": true, + "requires": { + "prr": "~1.0.1" + } + }, + "es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==" + }, + "es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" + }, + "es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "requires": { + "es-errors": "^1.3.0" + } + }, + "es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "requires": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + } + }, + "esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "dev": true, + "requires": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, + "esbuild-android-64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz", + "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==", + "dev": true, + "optional": true + }, + "esbuild-android-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz", + "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==", + "dev": true, + "optional": true + }, + "esbuild-darwin-64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz", + "integrity": "sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==", + "dev": true, + "optional": true + }, + "esbuild-darwin-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz", + "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz", + "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz", + "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==", + "dev": true, + "optional": true + }, + "esbuild-linux-32": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz", + "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==", + "dev": true, + "optional": true + }, + "esbuild-linux-64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz", + "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz", + "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz", + "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==", + "dev": true, + "optional": true + }, + "esbuild-linux-mips64le": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz", + "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==", + "dev": true, + "optional": true + }, + "esbuild-linux-ppc64le": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz", + "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-riscv64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz", + "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==", + "dev": true, + "optional": true + }, + "esbuild-linux-s390x": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz", + "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==", + "dev": true, + "optional": true + }, + "esbuild-netbsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz", + "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==", + "dev": true, + "optional": true + }, + "esbuild-openbsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz", + "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==", + "dev": true, + "optional": true + }, + "esbuild-sunos-64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz", + "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==", + "dev": true, + "optional": true + }, + "esbuild-windows-32": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz", + "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==", + "dev": true, + "optional": true + }, + "esbuild-windows-64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz", + "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==", + "dev": true, + "optional": true + }, + "esbuild-windows-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz", + "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==", + "dev": true, + "optional": true + }, + "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": "5.0.0", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true + }, + "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==" + }, + "exsolve": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/exsolve/-/exsolve-1.0.7.tgz", + "integrity": "sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==", + "dev": true + }, + "fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + } + }, + "fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==" + }, + "form-data": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.3.tgz", + "integrity": "sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + } + }, + "fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + }, + "get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "requires": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + } + }, + "get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "requires": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + } + }, + "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" + } + }, + "gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==" + }, + "graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "optional": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==" + }, + "has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "requires": { + "has-symbols": "^1.0.3" + } + }, + "hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "requires": { + "function-bind": "^1.1.2" + } + }, + "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 + }, + "html2canvas": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/html2canvas/-/html2canvas-1.4.1.tgz", + "integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==", + "requires": { + "css-line-break": "^2.1.0", + "text-segmentation": "^1.0.3" + } + }, + "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==", + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true, + "optional": true + }, + "immutable": { + "version": "5.1.3", + "resolved": "https://registry.npmmirror.com/immutable/-/immutable-5.1.3.tgz", + "integrity": "sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==", + "dev": true + }, + "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.16.1", + "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "requires": { + "hasown": "^2.0.2" + } + }, + "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-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-what": { + "version": "3.14.1", + "resolved": "https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true + }, + "jquery": { + "version": "3.7.1", + "resolved": "https://registry.npmmirror.com/jquery/-/jquery-3.7.1.tgz", + "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==" + }, + "js-table2excel": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/js-table2excel/-/js-table2excel-1.1.2.tgz", + "integrity": "sha512-E5QcPLjlF7qcqqF+DgaPxj9b+lQsItMqkwcXKpODtZ8zo5f07huuvem3Ek1WYzOcSOalU7RwEAG/66WQ5PVfWA==" + }, + "js-tokens": { + "version": "9.0.1", + "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-9.0.1.tgz", + "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", + "dev": true + }, + "less": { + "version": "4.3.0", + "dev": true, + "requires": { + "copy-anything": "^2.0.1", + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "parse-node-version": "^1.0.1", + "source-map": "~0.6.0", + "tslib": "^2.3.0" + } + }, + "local-pkg": { + "version": "0.4.3", + "resolved": "https://registry.npmmirror.com/local-pkg/-/local-pkg-0.4.3.tgz", + "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", + "dev": true + }, + "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.30.17", + "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "requires": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "optional": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==" + }, + "memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "requires": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "optional": true + }, + "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" + } + }, + "minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "mlly": { + "version": "1.7.4", + "resolved": "https://registry.npmmirror.com/mlly/-/mlly-1.7.4.tgz", + "integrity": "sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==", + "dev": true, + "requires": { + "acorn": "^8.14.0", + "pathe": "^2.0.1", + "pkg-types": "^1.3.0", + "ufo": "^1.5.4" + } + }, + "mockjs": { + "version": "1.1.0", + "requires": { + "commander": "*" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "muggle-string": { + "version": "0.3.1", + "resolved": "https://registry.npmmirror.com/muggle-string/-/muggle-string-0.3.1.tgz", + "integrity": "sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==", + "dev": true + }, + "nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==" + }, + "needle": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/needle/-/needle-3.3.1.tgz", + "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", + "dev": true, + "optional": true, + "requires": { + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + } + }, + "node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmmirror.com/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "dev": true, + "optional": true + }, + "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==" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true + }, + "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 + }, + "path-to-regexp": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", + "dev": true + }, + "pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true + }, + "picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "optional": true + }, + "pkg-types": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/pkg-types/-/pkg-types-1.3.1.tgz", + "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", + "dev": true, + "requires": { + "confbox": "^0.1.8", + "mlly": "^1.7.4", + "pathe": "^2.0.1" + } + }, + "postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "requires": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + } + }, + "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==" + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true, + "optional": true + }, + "quansync": { + "version": "0.2.10", + "resolved": "https://registry.npmmirror.com/quansync/-/quansync-0.2.10.tgz", + "integrity": "sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true + }, + "resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dev": true, + "requires": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true + }, + "rollup": { + "version": "3.29.5", + "resolved": "https://registry.npmmirror.com/rollup/-/rollup-3.29.5.tgz", + "integrity": "sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "optional": true + }, + "sass": { + "version": "1.89.1", + "dev": true, + "requires": { + "@parcel/watcher": "^2.4.1", + "chokidar": "^4.0.0", + "immutable": "^5.0.2", + "source-map-js": ">=0.6.2 <2.0.0" + } + }, + "sax": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", + "dev": true, + "optional": true + }, + "scule": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/scule/-/scule-1.3.0.tgz", + "integrity": "sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==", + "dev": true + }, + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "optional": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + }, + "source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==" + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true + }, + "strip-literal": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/strip-literal/-/strip-literal-2.1.1.tgz", + "integrity": "sha512-631UJ6O00eNGfMiWG78ck80dfBab8X6IVFB51jZK5Icd7XAs60Z5y7QdSd/wGIklnWvRbUNloVzhOKKmutxQ6Q==", + "dev": true, + "requires": { + "js-tokens": "^9.0.1" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "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 + }, + "text-segmentation": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/text-segmentation/-/text-segmentation-1.0.3.tgz", + "integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==", + "requires": { + "utrie": "^1.0.2" + } + }, + "tiny-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" + }, + "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", + "dev": true + }, + "ufo": { + "version": "1.6.1", + "resolved": "https://registry.npmmirror.com/ufo/-/ufo-1.6.1.tgz", + "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==", + "dev": true + }, + "undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "unimport": { + "version": "3.14.6", + "resolved": "https://registry.npmmirror.com/unimport/-/unimport-3.14.6.tgz", + "integrity": "sha512-CYvbDaTT04Rh8bmD8jz3WPmHYZRG/NnvYVzwD6V1YAlvvKROlAeNDUBhkBGzNav2RKaeuXvlWYaa1V4Lfi/O0g==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^5.1.4", + "acorn": "^8.14.0", + "escape-string-regexp": "^5.0.0", + "estree-walker": "^3.0.3", + "fast-glob": "^3.3.3", + "local-pkg": "^1.0.0", + "magic-string": "^0.30.17", + "mlly": "^1.7.4", + "pathe": "^2.0.1", + "picomatch": "^4.0.2", + "pkg-types": "^1.3.0", + "scule": "^1.3.0", + "strip-literal": "^2.1.1", + "unplugin": "^1.16.1" + }, + "dependencies": { + "confbox": { + "version": "0.2.2", + "resolved": "https://registry.npmmirror.com/confbox/-/confbox-0.2.2.tgz", + "integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==", + "dev": true + }, + "estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "requires": { + "@types/estree": "^1.0.0" + } + }, + "local-pkg": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/local-pkg/-/local-pkg-1.1.1.tgz", + "integrity": "sha512-WunYko2W1NcdfAFpuLUoucsgULmgDBRkdxHxWQ7mK0cQqwPiy8E1enjuRBrhLtZkB5iScJ1XIPdhVEFK8aOLSg==", + "dev": true, + "requires": { + "mlly": "^1.7.4", + "pkg-types": "^2.0.1", + "quansync": "^0.2.8" + }, + "dependencies": { + "pkg-types": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/pkg-types/-/pkg-types-2.1.1.tgz", + "integrity": "sha512-eY0QFb6eSwc9+0d/5D2lFFUq+A3n3QNGSy/X2Nvp+6MfzGw2u6EbA7S80actgjY1lkvvI0pqB+a4hioMh443Ew==", + "dev": true, + "requires": { + "confbox": "^0.2.2", + "exsolve": "^1.0.7", + "pathe": "^2.0.3" + } + } + } + }, + "picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true + } + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true + }, + "unplugin": { + "version": "1.16.1", + "resolved": "https://registry.npmmirror.com/unplugin/-/unplugin-1.16.1.tgz", + "integrity": "sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==", + "dev": true, + "requires": { + "acorn": "^8.14.0", + "webpack-virtual-modules": "^0.6.2" + } + }, + "unplugin-auto-import": { + "version": "0.15.3", + "dev": true, + "requires": { + "@antfu/utils": "^0.7.2", + "@rollup/pluginutils": "^5.0.2", + "local-pkg": "^0.4.3", + "magic-string": "^0.30.0", + "minimatch": "^9.0.0", + "unimport": "^3.0.6", + "unplugin": "^1.3.1" + } + }, + "unplugin-vue-components": { + "version": "0.24.1", + "dev": true, + "requires": { + "@antfu/utils": "^0.7.2", + "@rollup/pluginutils": "^5.0.2", + "chokidar": "^3.5.3", + "debug": "^4.3.4", + "fast-glob": "^3.2.12", + "local-pkg": "^0.4.3", + "magic-string": "^0.30.0", + "minimatch": "^7.4.2", + "resolve": "^1.22.1", + "unplugin": "^1.1.0" + }, + "dependencies": { + "chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "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" + } + }, + "minimatch": { + "version": "7.4.6", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-7.4.6.tgz", + "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "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" + } + } + } + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true + }, + "utrie": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/utrie/-/utrie-1.0.2.tgz", + "integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==", + "requires": { + "base64-arraybuffer": "^1.0.2" + } + }, + "vite": { + "version": "4.5.14", + "dev": true, + "requires": { + "esbuild": "^0.18.10", + "fsevents": "~2.3.2", + "postcss": "^8.4.27", + "rollup": "^3.27.1" + } + }, + "vite-plugin-mock": { + "version": "2.9.8", + "dev": true, + "requires": { + "@types/mockjs": "^1.0.4", + "chalk": "^4.1.2", + "chokidar": "^3.5.2", + "connect": "^3.7.0", + "debug": "^4.3.2", + "esbuild": "^0.14.36", + "fast-glob": "^3.2.7", + "path-to-regexp": "^6.2.0" + }, + "dependencies": { + "@esbuild/linux-loong64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz", + "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==", + "dev": true, + "optional": true + }, + "chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "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" + } + }, + "esbuild": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.14.54.tgz", + "integrity": "sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==", + "dev": true, + "requires": { + "@esbuild/linux-loong64": "0.14.54", + "esbuild-android-64": "0.14.54", + "esbuild-android-arm64": "0.14.54", + "esbuild-darwin-64": "0.14.54", + "esbuild-darwin-arm64": "0.14.54", + "esbuild-freebsd-64": "0.14.54", + "esbuild-freebsd-arm64": "0.14.54", + "esbuild-linux-32": "0.14.54", + "esbuild-linux-64": "0.14.54", + "esbuild-linux-arm": "0.14.54", + "esbuild-linux-arm64": "0.14.54", + "esbuild-linux-mips64le": "0.14.54", + "esbuild-linux-ppc64le": "0.14.54", + "esbuild-linux-riscv64": "0.14.54", + "esbuild-linux-s390x": "0.14.54", + "esbuild-netbsd-64": "0.14.54", + "esbuild-openbsd-64": "0.14.54", + "esbuild-sunos-64": "0.14.54", + "esbuild-windows-32": "0.14.54", + "esbuild-windows-64": "0.14.54", + "esbuild-windows-arm64": "0.14.54" + } + }, + "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" + } + } + } + }, + "vue": { + "version": "3.5.16", + "requires": { + "@vue/compiler-dom": "3.5.16", + "@vue/compiler-sfc": "3.5.16", + "@vue/runtime-dom": "3.5.16", + "@vue/server-renderer": "3.5.16", + "@vue/shared": "3.5.16" + } + }, + "vue-baidu-map-3x": { + "version": "1.0.40", + "resolved": "https://registry.npmmirror.com/vue-baidu-map-3x/-/vue-baidu-map-3x-1.0.40.tgz", + "integrity": "sha512-Rq3g1KNsNztkuX3SJIuCpy6HE3xHVX8ySgqS2xC3jut/hvVr5kFBS0Nu7uYppk3xYVz69S1JFxU8WUI0Xftpyg==", + "requires": { + "@yangjianfei/bmaplib.lushu": "^1.0.0", + "bmaplib.curveline": "^1.0.0", + "bmaplib.distancetool": "^1.0.2", + "bmaplib.heatmap": "^1.0.4", + "bmaplib.markerclusterer": "^1.0.13", + "tiny-emitter": "^2.1.0", + "vue": "^3.2.25", + "vue-router": "^4.0.14" + } + }, + "vue-baidu-map-offline": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/vue-baidu-map-offline/-/vue-baidu-map-offline-1.0.7.tgz", + "integrity": "sha512-8gje38sG/8o03PSghoWsYxsuKUfLVj48kWWHGp6+zeE5nb7rtiyH8fTMKgO8Stf1deRIBr9PVsc1BqwFoz+pXg==" + }, + "vue-demi": { + "version": "0.14.10", + "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.10.tgz", + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==" + }, + "vue-router": { + "version": "4.5.1", + "requires": { + "@vue/devtools-api": "^6.6.4" + } + }, + "vue-template-compiler": { + "version": "2.7.16", + "resolved": "https://registry.npmmirror.com/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz", + "integrity": "sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==", + "dev": true, + "requires": { + "de-indent": "^1.0.2", + "he": "^1.2.0" + } + }, + "vue-tsc": { + "version": "1.8.27", + "dev": true, + "requires": { + "@volar/typescript": "~1.11.1", + "@vue/language-core": "1.8.27", + "semver": "^7.5.4" + }, + "dependencies": { + "semver": { + "version": "7.7.2", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true + } + } + }, + "vuex": { + "version": "4.1.0", + "requires": { + "@vue/devtools-api": "^6.0.0-beta.11" + } + }, + "webpack-virtual-modules": { + "version": "0.6.2", + "resolved": "https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", + "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", + "dev": true + }, + "xe-utils": { + "version": "3.7.5" + }, + "zrender": { + "version": "5.6.1", + "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.6.1.tgz", + "integrity": "sha512-OFXkDJKcrlx5su2XbzJvj/34Q3m6PvyCZkVPHGYpcCJ52ek4U/ymZyfuV1nKE23AyBJ51E/6Yr0mhZ7xGTO4ag==", + "requires": { + "tslib": "2.3.0" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..22a6f71 --- /dev/null +++ b/package.json @@ -0,0 +1,46 @@ +{ + "name": "vite-ts-demo", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite --host", + "build": "vue-tsc && vite build", + "preview": "vite preview" + }, + "dependencies": { + "@element-plus/icons-vue": "^2.3.1", + "@jiaminghi/data-view": "^2.10.0", + "@kjgl77/datav-vue3": "^1.4.2", + "axios": "^1.3.4", + "echarts": "^5.4.3", + "echarts-gl": "^2.0.9", + "echarts-liquidfill": "^3.1.0", + "element-plus": "^2.9.11", + "html2canvas": "^1.4.1", + "jquery": "^3.7.1", + "js-table2excel": "^1.1.2", + "lodash": "^4.17.21", + "mockjs": "^1.1.0", + "splitpanes": "^4.0.4", + "vue": "^3.2.47", + "vue-baidu-map-3x": "^1.0.40", + "vue-baidu-map-offline": "^1.0.7", + "vue-router": "^4.1.6", + "vuex": "^4.0.2", + "xe-utils": "^3.7.5", + "xlsx": "^0.18.5" + }, + "devDependencies": { + "@types/node": "^18.15.3", + "@vitejs/plugin-vue": "^4.1.0", + "less": "^4.1.3", + "sass": "^1.59.3", + "typescript": "^4.9.3", + "unplugin-auto-import": "^0.15.1", + "unplugin-vue-components": "^0.24.1", + "vite": "^4.2.0", + "vite-plugin-mock": "^2.9.6", + "vue-tsc": "^1.2.0" + } +} diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..ed87b0c --- /dev/null +++ b/src/App.vue @@ -0,0 +1,45 @@ + + + + diff --git a/src/api/login/login.ts b/src/api/login/login.ts new file mode 100644 index 0000000..fd51f4e --- /dev/null +++ b/src/api/login/login.ts @@ -0,0 +1,13 @@ +// 导入axios实例 +import service from "@/utils/request"; +// 登录获取token +export function login(data: object) { + return service({ + url: "/cn_authenticate", + method: "post", + data, + }); +} + + + diff --git a/src/api/manage_wx/index.ts b/src/api/manage_wx/index.ts new file mode 100644 index 0000000..a6fd670 --- /dev/null +++ b/src/api/manage_wx/index.ts @@ -0,0 +1,339 @@ +// 导入axios实例 +import http from "@/utils/request_wx"; + +// 项目管理弹框列表 +export function projectList(data: object) { + return http.request({ + url: "/cs-harmonic-boot/csconfiguration/queryPage", + method: "post", + data, + }); +} + +// 新增 +export function add(data) { + return http.request({ + url: "/cs-harmonic-boot/csconfiguration/add", + method: "post", + data, + }); +} + +// 修改 删除 +export function edit(data) { + return http.request({ + url: "/cs-harmonic-boot/csconfiguration/audit", + method: "post", + data, + }); +} + +// 激活 +export function active(data) { + return http.request({ + url: "/cs-harmonic-boot/csconfiguration/active", + method: "get", + params: data, + }); +} + +// 激活 改变画布状态 +export function getActive(data) { + return http.request({ + url: "/cs-harmonic-boot/csconfiguration/getActive", + method: "get", + params: data, + }); +} + +// 右侧监测点规模统计 +export function ledgerScale(data) { + return http.request({ + url: "/scale/ledgerScale", + method: "post", + data: data, + }); +} + +// 暂降溯源统计 +export function eventSource(data) { + return http.request({ + url: "/scale/eventSource", + method: "post", + data: data, + }); +} + +// 暂降聚合个数 +export function eventAggregation(data) { + return http.request({ + url: "/scale/eventAggregation", + method: "post", + data: data, + }); +} + +// 闪烁点统计 +export function hasEventList(data) { + return http.request({ + url: "/scale/hasEventList", + method: "post", + data: data, + }); +} + +// 实时信息 +export function getEventList(data) { + return http.request({ + url: "/scale/eventList", + method: "post", + data: data, + }); +} + +// 聚合 +export function clickImage(data) { + return http.request({ + url: "/scale/clickImage", + method: "get", + params: data, + }); +} + +// 单个点击图元,查看详情 +export function processEvents(data) { + return http.request({ + url: "/process/processEvents", + method: "post", + data: data, + }); +} + +// 监测点规模统计 站点弹框详情 +export function stationPage(data) { + return http.request({ + url: "/scale/stationPage", + method: "post", + data: data, + }); +} + +// 监测点规模统计 终端弹框详情 +export function devPage(data) { + return http.request({ + url: "/scale/devPage", + method: "post", + data: data, + }); +} +// 监测点规模统计 检测点弹框详情 +export function linePage(data) { + return http.request({ + url: "/scale/linePage", + method: "post", + data: data, + }); +} + +// 获取区域中断终端 +export function getTerminalTreeForFive(data: any) { + return http.request({ + url: "/terminalTree/getTerminalTreeForFive", + method: "post", + data: data, + }); +} +// 台账变更推送 +export function ledgerChangePush() { + return http.request({ + url: "/device/ledgerChangePush", + method: "post", + }); +} +// 台账变更推送 +export function getPushResult(data: any) { + return http.request({ + url: "/device/getPushResult", + method: "post", + params: data, + }); +} + +//负荷数据 用采数据列表 +export function userDataList(data: any) { + return http.request({ + url: "/responsibility/userDataList", + method: "post", + data, + }); +} + +// 完整性详情 +export function userDataIntegrityList(data: any) { + return http.request({ + url: "/responsibility/userDataIntegrityList", + method: "post", + data, + }); +} + +//删除用采数据 +export function deleteUserDataByIds(data: any) { + return http.request({ + url: "/responsibility/deleteUserDataByIds", + method: "post", + data, + }); +} + +// 上传文件 +export function uploadUserData(data: any) { + return http.request({ + url: "/responsibility/uploadUserData", + method: "post", + data, + }); +} + +//执行 +export function getHistoryHarmData(data: any) { + return http.request({ + url: "/harmonic/getHistoryHarmData", + method: "post", + data, + }); +} + +//生成谐波责任指标 +export function getResponsibilityData(data: any) { + return http.request({ + url: "/responsibility/getResponsibilityData", + method: "post", + data, + }); +} +//生成动态谐波责任数据 +export function getDynamicData(data: any) { + return http.request({ + url: "/responsibility/getDynamicData", + method: "post", + data, + }); +} + +// 谐波溯源表格 +export function responsibilityList(data: any) { + return http.request({ + url: "/responsibility/responsibilityList", + method: "post", + data, + }); +} + +// 谐波溯源详情 +export function displayHistoryData(data: any) { + return http.request({ + url: "/responsibility/displayHistoryData", + method: "get", + params: data, + }); +} + +// 谐波溯源删除 +export function deleteByIds(data: any) { + return http.request({ + url: "/responsibility/deleteByIds", + method: "post", + data, + }); +} + +// 谐波放大表格 +export function getInfoList(data: any) { + return http.request({ + url: "/harmonicUp/getInfoList", + method: "post", + data: data, + }); +} + +// 谐波放大测点 +export function tableInfo(data: any) { + return http.request({ + url: "/harmonicUp/tableInfo", + method: "post", + data: data, + }); +} + +// 谐波放大测点详情 +export function getDetail(data: any) { + return http.request({ + url: "/harmonicUp/getDetail", + method: "post", + data: data, + }); +} + +// 稳态指标 +export function realTimeData(data) { + return http.request({ + url: "/data/realTimeData", + method: "post", + params: data, + }); +} + +// 趋势图 +export function getHistoryResult(data) { + return http.request({ + url: "/harmonic/getHistoryResult", + method: "post", + data, + }); +} + +// 谐波溯源表格点击事件 +export function harmOneImage(data) { + return http.request({ + url: "/scale/harmOneImage", + method: "get", + params: data, + }); +} + +// 谐波暂降详情点击 +export function eventListByLineId(data) { + return http.request({ + url: "/scale/eventListByLineId", + method: "post", + data: data, + }); +} + +// 部门列表 +export function loginDeptTree(data) { + return http.request({ + url: "/dept/loginDeptTree", + method: "get", + params: data, + }); +} + +// 事件类型 +export function getDicDataByTypeCode(data) { + return http.request({ + url: "/dicData/getDicDataByTypeCode", + method: "get", + params: data, + }); +} + +// 谐波放大闪烁点 +export function hasUpEventList(data) { + return http.request({ + url: "/scale/hasUpEventList", + method: "post", + data: data, + }); +} diff --git a/src/api/statistics/index.ts b/src/api/statistics/index.ts new file mode 100644 index 0000000..475816f --- /dev/null +++ b/src/api/statistics/index.ts @@ -0,0 +1,272 @@ +// 导入axios实例 +import service from "@/utils/request"; + +export function initLedger(data: object) { + return service({ + url: "/largescreen/initLedger", + method: "post", + data, + }); +} + +// 台账规模统计 +export function ledgercount(data: object) { + return service({ + url: "/largescreen/ledgercount", + method: "post", + data, + }); +} +// 告警统计分析 +export function alarmAnalysis(data: object) { + return service({ + url: "/largescreen/alarmAnalysis", + method: "post", + data, + }); +} + +// 查询告警统计分析 +export function alarmAnalysisDetail(data: object) { + return service({ + url: "/largescreen/alarmAnalysisDetail", + method: "post", + data, + }); +} +// 暂降事件趋势/远程通知趋势 +export function eventTrend(data: object) { + return service({ + url: "/largescreen/eventTrend", + method: "post", + data, + }); +} +// 获取历史暂降事件趋势 +export function noDealEventList(data: object) { + return service({ + url: "/largescreen/noDealEventList", + method: "post", + data, + }); +} +// 处理暂降事件 +export function lookEvent(data: object) { + return service({ + url: "/largescreen/lookEvent", + method: "post", + data, + }); +} +// 暂降事件列表 +export function eventList(data: object) { + return service({ + url: "/largescreen/eventList", + method: "post", + data, + }); +} +// 远程通知列表 +export function msgSendList(data: object) { + return service({ + url: "/largescreen/msgSendList", + method: "post", + data, + }); +} +// 暂降事件列表详情按钮 +export function eventMsgDetail(params: object) { + return service({ + url: "/largescreen/eventMsgDetail", + method: "get", + params, + }); +} +// 短信处理 +export function msgHandle(data: object) { + return service({ + url: "/largescreen/msgHandle", + method: "post", + data, + }); +} +// 地图统计数量 +export function mapCount(data: object) { + return service({ + url: "/largescreen/mapCount", + method: "post", + data, + }); +} +// 已发送短信列表 +export function hasSendMsgPage(data: object) { + return service({ + url: "/largescreen/hasSendMsgPage", + method: "post", + data, + }); +} +// 暂降平台配置 +export function eventConfig(data: object) { + return service({ + url: "/config/eventConfig", + method: "post", + data, + }); +} +// 查询配置 +export function queryConfig() { + return service({ + url: "/config/queryConfig", + method: "get", + }); +} +// 模拟短信发送 +export function simulationSend(data: any) { + return service({ + url: "/accept/simulationSend", + method: "post", + data, + }); +} +// 趋势图 +export function getTransientAnalyseWave(data: object) { + return service({ + url: "/accept/getTransientAnalyseWave", + method: "post", + data, + }); +} + +// 电能质量监测终端运行状态 +export function devFlagCount(data: object) { + return service({ + url: "/largescreen/devFlagCount", + method: "post", + data, + }); +} +// 电能质量监测终端运行状态详情 +export function devicePage(data: object) { + return service({ + url: "/largescreen/devicePage", + method: "post", + data, + }); +} +// 各区域终端运行状态 +export function regionDevCount(data: object) { + return service({ + url: "/largescreen/regionDevCount", + method: "post", + data, + }); +} +export function rightEventOpenForDetail(data: object) { + return service({ + url: "/right/rightEventOpenForDetail", + method: "post", + data, + }); +} +// 供电区域下拉 +export function gdSelect() { + return service({ + url: "/right/gdSelect", + method: "get", + }); +} + +// 供电区域下拉 +export function bdSelect() { + return service({ + url: "/right/bdSelect", + method: "get", + }); +} + +// 地图查询 +export function substationCount(data: object) { + return service({ + url: "/largescreen/substationCount", + method: "post", + data, + }); +} +// 暂降事件列表 +export function eventPage(data: object) { + return service({ + url: "/largescreen/eventPage", + method: "post", + data, + }); +} +// 电压暂降告警统计 +export function rightImportUser(data: object) { + return service({ + url: "/right/rightImportUser", + method: "post", + data, + }); +} +// 电压暂降告警统计 +export function rightEvent(data: object) { + return service({ + url: "/right/rightEvent", + method: "post", + data, + }); +} +// 电压暂降告警统计弹框 +export function rightEventOpen(data: object) { + return service({ + url: "/right/rightEventOpen", + method: "post", + data, + }); +} + +export function rightEventOpenClone(data: object) { + return service({ + url: "/right/rightEventOpenClone", + method: "post", + data, + }); +} +// 重要敏感用户暂降告警统计 +export function userEventList(data: object) { + return service({ + url: "/largescreen/userEventList", + method: "post", + data, + }); +} + +export function rightImportOpenDetail(data: object) { + return service({ + url: "/right/rightImportOpenDetail", + method: "post", + data, + }); +} + + +// 对象类型 +export function getDicTree(data: object) { + return service({ + url: "/dicTree/getDicTree", + method: "get", + params: data, + }); +} +// 终端弹框 + +export function rightEventDevOpen(data: object) { + return service({ + url: "/right/rightEventDevOpen", + method: "post", + data, + }); +} + + diff --git a/src/assets/download.png b/src/assets/download.png new file mode 100644 index 0000000..657dd8c Binary files /dev/null and b/src/assets/download.png differ diff --git a/src/assets/gaoJ.svg b/src/assets/gaoJ.svg new file mode 100644 index 0000000..02ee9fb --- /dev/null +++ b/src/assets/gaoJ.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icon/demo.css b/src/assets/icon/demo.css new file mode 100644 index 0000000..a67054a --- /dev/null +++ b/src/assets/icon/demo.css @@ -0,0 +1,539 @@ +/* Logo 字体 */ +@font-face { + font-family: "iconfont logo"; + src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834'); + src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'), + url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'), + url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'), + url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg'); +} + +.logo { + font-family: "iconfont logo"; + font-size: 160px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +/* tabs */ +.nav-tabs { + position: relative; +} + +.nav-tabs .nav-more { + position: absolute; + right: 0; + bottom: 0; + height: 42px; + line-height: 42px; + color: #666; +} + +#tabs { + border-bottom: 1px solid #eee; +} + +#tabs li { + cursor: pointer; + width: 100px; + height: 40px; + line-height: 40px; + text-align: center; + font-size: 16px; + border-bottom: 2px solid transparent; + position: relative; + z-index: 1; + margin-bottom: -1px; + color: #666; +} + + +#tabs .active { + border-bottom-color: #f00; + color: #222; +} + +.tab-container .content { + display: none; +} + +/* 页面布局 */ +.main { + padding: 30px 100px; + width: 960px; + margin: 0 auto; +} + +.main .logo { + color: #333; + text-align: left; + margin-bottom: 30px; + line-height: 1; + height: 110px; + margin-top: -50px; + overflow: hidden; + *zoom: 1; +} + +.main .logo a { + font-size: 160px; + color: #333; +} + +.helps { + margin-top: 40px; +} + +.helps pre { + padding: 20px; + margin: 10px 0; + border: solid 1px #e7e1cd; + background-color: #fffdef; + overflow: auto; +} + +.icon_lists { + width: 100% !important; + overflow: hidden; + *zoom: 1; +} + +.icon_lists li { + width: 100px; + margin-bottom: 10px; + margin-right: 20px; + text-align: center; + list-style: none !important; + cursor: default; +} + +.icon_lists li .code-name { + line-height: 1.2; +} + +.icon_lists .icon { + display: block; + height: 100px; + line-height: 100px; + font-size: 42px; + margin: 10px auto; + color: #333; + -webkit-transition: font-size 0.25s linear, width 0.25s linear; + -moz-transition: font-size 0.25s linear, width 0.25s linear; + transition: font-size 0.25s linear, width 0.25s linear; +} + +.icon_lists .icon:hover { + font-size: 100px; +} + +.icon_lists .svg-icon { + /* 通过设置 font-size 来改变图标大小 */ + width: 1em; + /* 图标和文字相邻时,垂直对齐 */ + vertical-align: -0.15em; + /* 通过设置 color 来改变 SVG 的颜色/fill */ + fill: currentColor; + /* path 和 stroke 溢出 viewBox 部分在 IE 下会显示 + normalize.css 中也包含这行 */ + overflow: hidden; +} + +.icon_lists li .name, +.icon_lists li .code-name { + color: #666; +} + +/* markdown 样式 */ +.markdown { + color: #666; + font-size: 14px; + line-height: 1.8; +} + +.highlight { + line-height: 1.5; +} + +.markdown img { + vertical-align: middle; + max-width: 100%; +} + +.markdown h1 { + color: #404040; + font-weight: 500; + line-height: 40px; + margin-bottom: 24px; +} + +.markdown h2, +.markdown h3, +.markdown h4, +.markdown h5, +.markdown h6 { + color: #404040; + margin: 1.6em 0 0.6em 0; + font-weight: 500; + clear: both; +} + +.markdown h1 { + font-size: 28px; +} + +.markdown h2 { + font-size: 22px; +} + +.markdown h3 { + font-size: 16px; +} + +.markdown h4 { + font-size: 14px; +} + +.markdown h5 { + font-size: 12px; +} + +.markdown h6 { + font-size: 12px; +} + +.markdown hr { + height: 1px; + border: 0; + background: #e9e9e9; + margin: 16px 0; + clear: both; +} + +.markdown p { + margin: 1em 0; +} + +.markdown>p, +.markdown>blockquote, +.markdown>.highlight, +.markdown>ol, +.markdown>ul { + width: 80%; +} + +.markdown ul>li { + list-style: circle; +} + +.markdown>ul li, +.markdown blockquote ul>li { + margin-left: 20px; + padding-left: 4px; +} + +.markdown>ul li p, +.markdown>ol li p { + margin: 0.6em 0; +} + +.markdown ol>li { + list-style: decimal; +} + +.markdown>ol li, +.markdown blockquote ol>li { + margin-left: 20px; + padding-left: 4px; +} + +.markdown code { + margin: 0 3px; + padding: 0 5px; + background: #eee; + border-radius: 3px; +} + +.markdown strong, +.markdown b { + font-weight: 600; +} + +.markdown>table { + border-collapse: collapse; + border-spacing: 0px; + empty-cells: show; + border: 1px solid #e9e9e9; + width: 95%; + margin-bottom: 24px; +} + +.markdown>table th { + white-space: nowrap; + color: #333; + font-weight: 600; +} + +.markdown>table th, +.markdown>table td { + border: 1px solid #e9e9e9; + padding: 8px 16px; + text-align: left; +} + +.markdown>table th { + background: #F7F7F7; +} + +.markdown blockquote { + font-size: 90%; + color: #999; + border-left: 4px solid #e9e9e9; + padding-left: 0.8em; + margin: 1em 0; +} + +.markdown blockquote p { + margin: 0; +} + +.markdown .anchor { + opacity: 0; + transition: opacity 0.3s ease; + margin-left: 8px; +} + +.markdown .waiting { + color: #ccc; +} + +.markdown h1:hover .anchor, +.markdown h2:hover .anchor, +.markdown h3:hover .anchor, +.markdown h4:hover .anchor, +.markdown h5:hover .anchor, +.markdown h6:hover .anchor { + opacity: 1; + display: inline-block; +} + +.markdown>br, +.markdown>p>br { + clear: both; +} + + +.hljs { + display: block; + background: white; + padding: 0.5em; + color: #333333; + overflow-x: auto; +} + +.hljs-comment, +.hljs-meta { + color: #969896; +} + +.hljs-string, +.hljs-variable, +.hljs-template-variable, +.hljs-strong, +.hljs-emphasis, +.hljs-quote { + color: #df5000; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-type { + color: #a71d5d; +} + +.hljs-literal, +.hljs-symbol, +.hljs-bullet, +.hljs-attribute { + color: #0086b3; +} + +.hljs-section, +.hljs-name { + color: #63a35c; +} + +.hljs-tag { + color: #333333; +} + +.hljs-title, +.hljs-attr, +.hljs-selector-id, +.hljs-selector-class, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #795da3; +} + +.hljs-addition { + color: #55a532; + background-color: #eaffea; +} + +.hljs-deletion { + color: #bd2c00; + background-color: #ffecec; +} + +.hljs-link { + text-decoration: underline; +} + +/* 代码高亮 */ +/* PrismJS 1.15.0 +https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */ +/** + * prism.js default theme for JavaScript, CSS and HTML + * Based on dabblet (http://dabblet.com) + * @author Lea Verou + */ +code[class*="language-"], +pre[class*="language-"] { + color: black; + background: none; + text-shadow: 0 1px white; + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} + +pre[class*="language-"]::-moz-selection, +pre[class*="language-"] ::-moz-selection, +code[class*="language-"]::-moz-selection, +code[class*="language-"] ::-moz-selection { + text-shadow: none; + background: #b3d4fc; +} + +pre[class*="language-"]::selection, +pre[class*="language-"] ::selection, +code[class*="language-"]::selection, +code[class*="language-"] ::selection { + text-shadow: none; + background: #b3d4fc; +} + +@media print { + + code[class*="language-"], + pre[class*="language-"] { + text-shadow: none; + } +} + +/* Code blocks */ +pre[class*="language-"] { + padding: 1em; + margin: .5em 0; + overflow: auto; +} + +:not(pre)>code[class*="language-"], +pre[class*="language-"] { + background: #f5f2f0; +} + +/* Inline code */ +:not(pre)>code[class*="language-"] { + padding: .1em; + border-radius: .3em; + white-space: normal; +} + +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: slategray; +} + +.token.punctuation { + color: #999; +} + +.namespace { + opacity: .7; +} + +.token.property, +.token.tag, +.token.boolean, +.token.number, +.token.constant, +.token.symbol, +.token.deleted { + color: #905; +} + +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin, +.token.inserted { + color: #690; +} + +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string { + color: #9a6e3a; + background: hsla(0, 0%, 100%, .5); +} + +.token.atrule, +.token.attr-value, +.token.keyword { + color: #07a; +} + +.token.function, +.token.class-name { + color: #DD4A68; +} + +.token.regex, +.token.important, +.token.variable { + color: #e90; +} + +.token.important, +.token.bold { + font-weight: bold; +} + +.token.italic { + font-style: italic; +} + +.token.entity { + cursor: help; +} diff --git a/src/assets/icon/demo_index.html b/src/assets/icon/demo_index.html new file mode 100644 index 0000000..f4c9912 --- /dev/null +++ b/src/assets/icon/demo_index.html @@ -0,0 +1,211 @@ + + + + + iconfont Demo + + + + + + + + + + + + + +
+

+ + +

+ +
+
+
    + +
  • + +
    告警
    +
    &#xe60c;
    +
  • + +
+
+

Unicode 引用

+
+ +

Unicode 是字体在网页端最原始的应用方式,特点是:

+
    +
  • 支持按字体的方式去动态调整图标大小,颜色等等。
  • +
  • 默认情况下不支持多色,直接添加多色图标会自动去色。
  • +
+
+

注意:新版 iconfont 支持两种方式引用多色图标:SVG symbol 引用方式和彩色字体图标模式。(使用彩色字体图标需要在「编辑项目」中开启「彩色」选项后并重新生成。)

+
+

Unicode 使用步骤如下:

+

第一步:拷贝项目下面生成的 @font-face

+
@font-face {
+  font-family: 'iconfont';
+  src: url('iconfont.woff2?t=1752716651599') format('woff2'),
+       url('iconfont.woff?t=1752716651599') format('woff'),
+       url('iconfont.ttf?t=1752716651599') format('truetype');
+}
+
+

第二步:定义使用 iconfont 的样式

+
.iconfont {
+  font-family: "iconfont" !important;
+  font-size: 16px;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+

第三步:挑选相应图标并获取字体编码,应用于页面

+
+<span class="iconfont">&#x33;</span>
+
+
+

"iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。

+
+
+
+
+
    + +
  • + +
    + 告警 +
    +
    .icon-gaojing +
    +
  • + +
+
+

font-class 引用

+
+ +

font-class 是 Unicode 使用方式的一种变种,主要是解决 Unicode 书写不直观,语意不明确的问题。

+

与 Unicode 使用方式相比,具有如下特点:

+
    +
  • 相比于 Unicode 语意明确,书写更直观。可以很容易分辨这个 icon 是什么。
  • +
  • 因为使用 class 来定义图标,所以当要替换图标时,只需要修改 class 里面的 Unicode 引用。
  • +
+

使用步骤如下:

+

第一步:引入项目下面生成的 fontclass 代码:

+
<link rel="stylesheet" href="./iconfont.css">
+
+

第二步:挑选相应图标并获取类名,应用于页面:

+
<span class="iconfont icon-xxx"></span>
+
+
+

" + iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。

+
+
+
+
+
    + +
  • + +
    告警
    +
    #icon-gaojing
    +
  • + +
+
+

Symbol 引用

+
+ +

这是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。相关介绍可以参考这篇文章 + 这种用法其实是做了一个 SVG 的集合,与另外两种相比具有如下特点:

+
    +
  • 支持多色图标了,不再受单色限制。
  • +
  • 通过一些技巧,支持像字体那样,通过 font-size, color 来调整样式。
  • +
  • 兼容性较差,支持 IE9+,及现代浏览器。
  • +
  • 浏览器渲染 SVG 的性能一般,还不如 png。
  • +
+

使用步骤如下:

+

第一步:引入项目下面生成的 symbol 代码:

+
<script src="./iconfont.js"></script>
+
+

第二步:加入通用 CSS 代码(引入一次就行):

+
<style>
+.icon {
+  width: 1em;
+  height: 1em;
+  vertical-align: -0.15em;
+  fill: currentColor;
+  overflow: hidden;
+}
+</style>
+
+

第三步:挑选相应图标并获取类名,应用于页面:

+
<svg class="icon" aria-hidden="true">
+  <use xlink:href="#icon-xxx"></use>
+</svg>
+
+
+
+ +
+
+ + + diff --git a/src/assets/icon/iconfont.css b/src/assets/icon/iconfont.css new file mode 100644 index 0000000..4ae2e1b --- /dev/null +++ b/src/assets/icon/iconfont.css @@ -0,0 +1,19 @@ +@font-face { + font-family: "iconfont"; /* Project id 4977098 */ + src: url('iconfont.woff2?t=1752716651599') format('woff2'), + url('iconfont.woff?t=1752716651599') format('woff'), + url('iconfont.ttf?t=1752716651599') format('truetype'); +} + +.iconfont { + font-family: "iconfont" !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icon-gaojing:before { + content: "\e60c"; +} + diff --git a/src/assets/icon/iconfont.js b/src/assets/icon/iconfont.js new file mode 100644 index 0000000..d3effb9 --- /dev/null +++ b/src/assets/icon/iconfont.js @@ -0,0 +1 @@ +window._iconfont_svg_string_4977098='',(n=>{var t=(e=(e=document.getElementsByTagName("script"))[e.length-1]).getAttribute("data-injectcss"),e=e.getAttribute("data-disable-injectsvg");if(!e){var o,i,a,c,d,l=function(t,e){e.parentNode.insertBefore(t,e)};if(t&&!n.__iconfont__svg__cssinject__){n.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(t){console&&console.log(t)}}o=function(){var t,e=document.createElement("div");e.innerHTML=n._iconfont_svg_string_4977098,(e=e.getElementsByTagName("svg")[0])&&(e.setAttribute("aria-hidden","true"),e.style.position="absolute",e.style.width=0,e.style.height=0,e.style.overflow="hidden",e=e,(t=document.body).firstChild?l(e,t.firstChild):t.appendChild(e))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(o,0):(i=function(){document.removeEventListener("DOMContentLoaded",i,!1),o()},document.addEventListener("DOMContentLoaded",i,!1)):document.attachEvent&&(a=o,c=n.document,d=!1,r(),c.onreadystatechange=function(){"complete"==c.readyState&&(c.onreadystatechange=null,s())})}function s(){d||(d=!0,a())}function r(){try{c.documentElement.doScroll("left")}catch(t){return void setTimeout(r,50)}s()}})(window); \ No newline at end of file diff --git a/src/assets/icon/iconfont.json b/src/assets/icon/iconfont.json new file mode 100644 index 0000000..723ebd9 --- /dev/null +++ b/src/assets/icon/iconfont.json @@ -0,0 +1,16 @@ +{ + "id": "4977098", + "name": "北京暂降平台", + "font_family": "iconfont", + "css_prefix_text": "icon-", + "description": "", + "glyphs": [ + { + "icon_id": "36284864", + "name": "告警", + "font_class": "gaojing", + "unicode": "e60c", + "unicode_decimal": 58892 + } + ] +} diff --git a/src/assets/icon/iconfont.ttf b/src/assets/icon/iconfont.ttf new file mode 100644 index 0000000..7b4146a Binary files /dev/null and b/src/assets/icon/iconfont.ttf differ diff --git a/src/assets/icon/iconfont.woff b/src/assets/icon/iconfont.woff new file mode 100644 index 0000000..000c865 Binary files /dev/null and b/src/assets/icon/iconfont.woff differ diff --git a/src/assets/icon/iconfont.woff2 b/src/assets/icon/iconfont.woff2 new file mode 100644 index 0000000..f66711a Binary files /dev/null and b/src/assets/icon/iconfont.woff2 differ diff --git a/src/assets/icon/传输设备 (1).png b/src/assets/icon/传输设备 (1).png new file mode 100644 index 0000000..5c69e54 Binary files /dev/null and b/src/assets/icon/传输设备 (1).png differ diff --git a/src/assets/icon/传输设备 (2).png b/src/assets/icon/传输设备 (2).png new file mode 100644 index 0000000..bc64ef5 Binary files /dev/null and b/src/assets/icon/传输设备 (2).png differ diff --git a/src/assets/icon/传输设备 (3).png b/src/assets/icon/传输设备 (3).png new file mode 100644 index 0000000..402ef77 Binary files /dev/null and b/src/assets/icon/传输设备 (3).png differ diff --git a/src/assets/icon/传输设备 (4).png b/src/assets/icon/传输设备 (4).png new file mode 100644 index 0000000..206de44 Binary files /dev/null and b/src/assets/icon/传输设备 (4).png differ diff --git a/src/assets/icon/传输设备.png b/src/assets/icon/传输设备.png new file mode 100644 index 0000000..3b20105 Binary files /dev/null and b/src/assets/icon/传输设备.png differ diff --git a/src/assets/img/bdz.png b/src/assets/img/bdz.png new file mode 100644 index 0000000..802b017 Binary files /dev/null and b/src/assets/img/bdz.png differ diff --git a/src/assets/img/dw.png b/src/assets/img/dw.png new file mode 100644 index 0000000..1e82f6b Binary files /dev/null and b/src/assets/img/dw.png differ diff --git a/src/assets/img/point.png b/src/assets/img/point.png new file mode 100644 index 0000000..34a4d17 Binary files /dev/null and b/src/assets/img/point.png differ diff --git a/src/assets/img/text.png b/src/assets/img/text.png new file mode 100644 index 0000000..e7fa96e Binary files /dev/null and b/src/assets/img/text.png differ diff --git a/src/assets/img/title.png b/src/assets/img/title.png new file mode 100644 index 0000000..30c37b4 Binary files /dev/null and b/src/assets/img/title.png differ diff --git a/src/assets/jcd.png b/src/assets/jcd.png new file mode 100644 index 0000000..a63a1d0 Binary files /dev/null and b/src/assets/jcd.png differ diff --git a/src/assets/mp3/9578.mp3 b/src/assets/mp3/9578.mp3 new file mode 100644 index 0000000..82893f1 Binary files /dev/null and b/src/assets/mp3/9578.mp3 differ diff --git a/src/assets/pageBg.png b/src/assets/pageBg.png new file mode 100644 index 0000000..d393f2b Binary files /dev/null and b/src/assets/pageBg.png differ diff --git a/src/assets/scss/SagTraceResult_WX.scss b/src/assets/scss/SagTraceResult_WX.scss new file mode 100644 index 0000000..3569430 --- /dev/null +++ b/src/assets/scss/SagTraceResult_WX.scss @@ -0,0 +1,198 @@ +#index { + color: #d3d6dd; + width: 1920px; + height: 1080px; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + transform-origin: left top; + .bg { + width: 100%; + height: 100%; + padding: 16px 16px 0 16px; + background-image: url("../../assets/pageBg.png"); + background-size: cover; + background-position: center center; + } + .headerBox { + width: 100%; + height: 124px; + background-image: url("../../assets/download.png"); + background-size: cover; + background-position: center center; + } + .secondLine { + position: absolute; + right: 20px; + top: 30px; + } + .host-body { + //头部样式 + .dv-dec-10, + .dv-dec-10-s { + width: 33.3%; + height: 5px; + } + .dv-dec-10-s { + transform: rotateY(180deg); + } + .dv-dec-8 { + width: 200px; + height: 50px; + } + .title { + position: relative; + width: 500px; + text-align: center; + background-size: cover; + background-repeat: no-repeat; + + .title-text { + width: 100%; + font-size: 35px; + position: absolute; + line-height: 35px; + top: 10px; + left: 50%; + font-weight: 700; + transform: translate(-50%); + } + + .dv-dec-6 { + position: absolute; + bottom: -30px; + left: 50%; + width: 250px; + height: 8px; + transform: translate(-50%); + } + } + + // 第二行 + + .react-r-s, + .react-l-s { + background-color: #0f1325; + } + + // 平行四边形 + .react-right { + &.react-l-s { + text-align: right; + width: 150px; + } + font-size: 18px; + width: 200px; + line-height: 30px; + text-align: center; + transform: skewX(-45deg); + + .react-after { + position: absolute; + right: -25px; + top: 0; + height: 24px; + width: 50px; + background-color: #0f1325; + transform: skewX(45deg); + } + + .text { + display: inline-block; + transform: skewX(45deg); + } + } + + // .react-left { + // &.react-l-s { + // width: 500px; + // text-align: left; + // } + // font-size: 18px; + // width: 100px; + // height: 50px; + // line-height: 50px; + // text-align: center; + // transform: skewX(45deg); + // background-color: #0f1325; + + // .react-before { + // position: absolute; + // left: -25px; + // top: 0; + // height: 50px; + // width: 50px; + // background-color: #0f1325; + // transform: skewX(-45deg); + // } + + // .text { + // display: inline-block; + // transform: skewX(-45deg); + // } + // } + + .body-box { + margin-top: 10px; + display: flex; + flex-direction: column; + + //下方区域的布局 + .content-box { + display: grid; + gap: 5px; + grid-template-columns: 3fr 1fr; + // grid-template-columns: 1fr 2fr 1fr; + } + //下方区域的布局 + .content-left { + display: grid; + gap: 5px; + grid-template-rows: 1fr, 2fr; + // grid-template-columns: 1fr 2fr 1fr; + } + // 底部数据 + .bototm-box { + margin-top: 5px; + display: grid; + gap: 5px; + grid-template-columns: 1fr 2fr 1fr; + } + } + } + .dv-border-box-13 { + padding: 20px 10px 0 10px; + } + .writing { + text-decoration: underline; + color: #ffcc00; + cursor: pointer; + margin-right: 20px; + white-space: nowrap; + } + .titleBox { + display: flex; + justify-content: space-between; + width: 100%; + line-height: 32px; + font-size: 18px; + padding-left: 20px; + margin: 0 auto; + // background-image: url("@/assets/img/title.png"); + // background-size: cover; + // background-position: center center; + background: linear-gradient( + 90deg, + #cccccc80 0%, + #1d83ce70 1%, + #1d83ce50 35%, + #1d83ce30 70%, + #1d83ce10 100% /* 活力橙 */ + ); + } + + + + +} diff --git a/src/assets/scss/_variables.scss b/src/assets/scss/_variables.scss new file mode 100644 index 0000000..8964aa7 --- /dev/null +++ b/src/assets/scss/_variables.scss @@ -0,0 +1,97 @@ +// 颜色 +$colors: ( + "primary": #db9e3f, + "info-1": #4394e4, + "info": #4b67af, + "white": #ffffff, + "light": #f9f9f9, + "grey-1": #999999, + "grey": #666666, + "dark-1": #5f5f5f, + "dark": #222222, + "black-1": #171823, + "black": #000000, +); + +// 字体大小 +$base-font-size: 16px; +$font-sizes: ( + xxs: 0.1, + //8px + xs: 0.125, + //10px + sm: 0.2875, + //12px + md: 0.1625, + //13px + lg: 0.175, + //14px + xl: 0.2, + //16px + xxl: 0.225, + //18px + xxxl: 0.25 //20px,,,, +); + +// 宽高 +.w-100 { + width: 100%; +} +.h-100 { + height: 100%; +} + +//flex +.d-flex { + display: flex; +} +.flex-column { + flex-direction: column; +} +.flex-wrap { + flex-wrap: wrap; +} +.flex-nowrap { + flex-wrap: nowrap; +} +$flex-jc: ( + start: flex-start, + end: flex-end, + center: center, + between: space-between, + around: space-around, + evenly: space-evenly, +); + +$flex-ai: ( + start: flex-start, + end: flex-end, + center: center, + stretch: stretch, +); + +.flex-1 { + flex: 1; +} + +//.mt-1 => margin top +//spacing +$spacing-types: ( + m: margin, + p: padding, +); +$spacing-directions: ( + t: top, + r: right, + b: bottom, + l: left, +); +$spacing-base-size: 16px; +$spacing-sizes: ( + 0: 0, + 1: 0.25, + 2: 0.5, + 3: 1, + 4: 1.5, + 5: 3, +); diff --git a/src/assets/scss/element.scss b/src/assets/scss/element.scss new file mode 100644 index 0000000..502fc83 --- /dev/null +++ b/src/assets/scss/element.scss @@ -0,0 +1,101 @@ + :deep(.el-dialog__body) { + color: #fff !important; + padding: 10px; + } + + :deep(.el-form-item__label) { + color: #fff !important; + } + :deep(.el-dialog__header) { + padding: 10px; + background-color: #21232b; + border-bottom: 1px solid #fff; + } + :deep(.el-dialog__footer) { + padding: 0 10px 10px !important; + } + + :deep(.el-descriptions__label.el-descriptions__cell) { + background: #0a73ff40 !important; + color: #fff !important; + font-weight: bold; + } + :deep(.el-descriptions) { + --el-descriptions-table-border: 1px solid #0a73ff; + .el-descriptions__content.el-descriptions__cell.is-bordered-content { + color: #fff; + } + .el-descriptions__body { + background-color: #00000050; + } + } + :deep(.tableBox) { + padding: 10px; + .el-table { + --el-table-border-color: #0a73ff; + --el-table-row-hover-bg-color: #0a73ff20; + --el-table-header-bg-color: #0a73ff40; + --el-table-bg-color: #ffffff00; + text-align: center; + // th { + // background-color: #0a73ff; + // color: #fff; + // } + tr { + background-color: #00000050 !important; + color: #fff; + } + } + } + :deep( + .el-table--striped + .el-table__body + tr.el-table__row--striped + td.el-table__cell + ) { + background: #5aa1ff29; + } + .titles { + display: flex; + align-items: center; + text-align: center; + margin-left: 20px; + + div { + background-color: #0a73ff70; + color: #ccc; + cursor: pointer; + &:nth-child(1) { + margin-right: 10px; + } + } + .titleClick { + background-color: #0a73ff; + color: #fff; + } + } + :deep(.el-dialog) { + --el-dialog-bg-color: #343849c7 !important; + padding: 0px; + --el-dialog-margin-top: 8vh; + .el-dialog__title, + .el-dialog__close { + color: #fff; + } + } + :deep(.el-drawer) { + --el-drawer-bg-color: #343849c7; + color: #fff; + .el-drawer__header { + // background-color: #21232b; + background-color: #9f1700; + } + } + :deep(.el-pagination) { + .el-pagination__total, + .el-pagination__goto, + .el-pagination__classifier { + color: #fff; + } + // --el-text-color-regular: #fff; + } \ No newline at end of file diff --git a/src/assets/scss/index.css b/src/assets/scss/index.css new file mode 100644 index 0000000..2ed4d8e --- /dev/null +++ b/src/assets/scss/index.css @@ -0,0 +1,348 @@ +@charset "UTF-8"; +#index { + color: #d3d6dd; + width: 1920px; + height: 1080px; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + transform-origin: left top; + --el-text-color-primary: #9b9b9b; +} + +#index .bg { + width: 100%; + height: 100%; + padding: 16px 16px 0 16px; + background-image: url("../../assets/pageBg.png"); + background-size: cover; + background-position: center center; +} + +#index .headerBox { + width: 100%; + height: 124px; + background-image: url("../../assets/download.png"); + background-size: cover; + background-position: center center; +} + +#index .secondLine { + position: absolute; + right: 20px; + top: 30px; +} + +#index .host-body .dv-dec-10, +#index .host-body .dv-dec-10-s { + width: 33.3%; + height: 5px; +} + +#index .host-body .dv-dec-10-s { + transform: rotateY(180deg); +} + +#index .host-body .dv-dec-8 { + width: 200px; + height: 50px; +} + +#index .host-body .title { + position: relative; + width: 500px; + text-align: center; + background-size: cover; + background-repeat: no-repeat; +} + +#index .host-body .title .title-text { + width: 100%; + font-size: 35px; + position: absolute; + line-height: 35px; + top: 10px; + left: 50%; + font-weight: 700; + transform: translate(-50%); +} + +#index .host-body .title .dv-dec-6 { + position: absolute; + bottom: -30px; + left: 50%; + width: 250px; + height: 8px; + transform: translate(-50%); +} + +#index .host-body .react-r-s, +#index .host-body .react-l-s { + background-color: #0f1325; +} + +#index .host-body .react-right { + font-size: 15px; + width: 200px; + line-height: 30px; + text-align: center; + transform: skewX(-45deg); +} + +#index .host-body .react-right.react-l-s { + text-align: right; + width: 150px; +} + +#index .host-body .react-right .react-after { + position: absolute; + right: -25px; + top: 0; + height: 24px; + width: 50px; + background-color: #0f1325; + transform: skewX(45deg); +} + +#index .host-body .react-right .text { + display: inline-block; + transform: skewX(45deg); +} + +#index .host-body .body-box { + margin-top: 10px; + display: flex; + flex-direction: column; +} + +#index .host-body .body-box .content-box { + display: grid; + gap: 5px; + grid-template-columns: 1fr 2fr 1fr; +} + +#index .host-body .body-box .bototm-box { + margin-top: 5px; + display: grid; + gap: 5px; + grid-template-columns: 1fr 2fr 1fr; +} + +#index .dv-border-box-13 { + padding: 20px 10px 0 10px; +} + +#index .writing { + text-decoration: underline; + color: #daa520; + cursor: pointer; + margin-right: 20px; + white-space: nowrap; +} + +#index .titleBox { + display: flex; + justify-content: space-between; + width: 100%; + line-height: 32px; + font-size: 18px; + padding-left: 20px; + margin: 0 auto; + background-image: url("@/assets/img/title.png"); + background-size: cover; + background-position: center center; +} + +.el-form-item { + margin-bottom: 10px; +} + +/* 呼吸闪烁的容器样式 红色*/ +.bg-red { + /* 设置初始的边框样式 */ + /* 添加呼吸动画 */ + animation: breathing_red 2s ease-in-out infinite; +} + +/* 定义呼吸动画 */ +@keyframes breathing_red { + 0% { + /* 开始时边框颜色较淡 */ + border-color: rgba(255, 0, 0, 0.3); + box-shadow: inset 0 0 50px rgba(255, 0, 0, 0.2); + } + 50% { + /* 中间时边框颜色最深 */ + border-color: red; + box-shadow: inset 0 0 100px rgba(255, 0, 0, 0.8); + } + 100% { + /* 结束时边框颜色回到较淡状态 */ + border-color: rgba(255, 0, 0, 0.3); + box-shadow: inset 0 0 50px rgba(255, 0, 0, 0.2); + } +} + +/* 呼吸闪烁的容器样式 */ +.bg-yellow { + /* 设置初始的边框样式 */ + /* 添加呼吸动画 */ + animation: breathing_yellow 2s ease-in-out infinite; +} + +/* 定义呼吸动画 */ +@keyframes breathing_yellow { + 0% { + /* 开始时边框颜色较淡 */ + border-color: rgba(255, 219, 0, 0.3); + box-shadow: inset 0 0 50px rgba(255, 219, 0, 0.2); + } + 50% { + /* 中间时边框颜色最深 */ + border-color: #ffdb00; + box-shadow: inset 0 0 100px rgba(255, 219, 0, 0.8); + } + 100% { + /* 结束时边框颜色回到较淡状态 */ + border-color: rgba(255, 219, 0, 0.3); + box-shadow: inset 0 0 50px rgba(255, 219, 0, 0.2); + } +} + +.scroll-box { + width: 1820px; + height: 40px; + padding: 10px 15px; + overflow: hidden; + position: relative; + left: 50px; +} + +.scroll-content { + position: absolute; + white-space: nowrap; + animation: scroll 0s linear infinite; + /* 根据内容长度调整动画时间 */ + padding-left: 100%; + /* 初始位置偏移 */ +} + +@keyframes scroll { + 0% { + transform: translateX(0); + } + 100% { + transform: translateX(-100%); + } +} + +/* 闪烁动画定义 */ +@keyframes flash { + 0%, + 100% { + opacity: 1; + } + 50% { + opacity: 0.3; + /* 半透明效果实现闪烁 */ + } +} + +.animate-flash-red { + animation: flash 1s infinite; + /* 1秒周期,无限循环 */ + color: #ff2501; + cursor: pointer; +} + +.animate-flash-yellow { + animation: flash 1s infinite; + /* 1秒周期,无限循环 */ + color: #bb7b00; + cursor: pointer; +} + +/* 悬停暂停效果 */ +.scroll-box:hover .scroll-content { + animation-play-state: paused; +} + +:deep(.el-divider--horizontal) { + margin: 10px 0; +} + +@keyframes step-scale { + 0% { + transform: scale(1.2); + } + 50% { + transform: scale(1.2); + } + /* 突变时放大 */ + 100% { + transform: scale(1.2); + } + /* 稳定后保持放大 */ +} + +.step-scale { + animation: step-scale 1s infinite; + /* forwards保持最终状态 */ + text-align: center; + color: #ff0000; + /* 警告色 */ +} + +div { + /* 滚动条轨道 */ + /* 滚动条滑块hover状态 */ +} + +div::-webkit-scrollbar { + width: 6px; + /* 滚动条宽度 */ +} + +div::-webkit-scrollbar-thumb { + border-radius: 10px; + /* 滑块圆角 */ + background: rgba(204, 204, 204, 0.8); + /* 设置滚动条轨道背景色 */ + cursor: pointer; + transition: var(--el-transition-duration) background-color; +} + +div::-webkit-scrollbar-thumb:hover { + background: rgba(204, 204, 204, 0.5); + /* 设置滚动条轨道背景色 */ +} + +div .el-divider--horizontal { + border-top: 1px var(--el-color-primary) var(--el-border-style); +} + +:deep(.el-input-group__append, .el-input-group__prepend) { + background-color: #ffffff00; +} + +:deep(.frontBox) { + background-color: var(--el-color-primary) !important; + color: #fff !important; +} + +::v-deep(.el-tabs__item) { + color: #fff; +} + +::v-deep(.el-tabs__item.is-active) { + color: var(--el-color-primary); +} + +::v-deep(.el-tabs__nav-wrap::after) { + color: var(--el-color-primary); +} + +::v-deep(.el-tabs__active-bar) { + color: var(--el-color-primary); +} diff --git a/src/assets/scss/index.min.css b/src/assets/scss/index.min.css new file mode 100644 index 0000000..a907701 --- /dev/null +++ b/src/assets/scss/index.min.css @@ -0,0 +1 @@ +#index{color:#d3d6dd;width:1920px;height:1080px;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);transform-origin:left top;--el-text-color-primary:#9b9b9b}#index .bg{width:100%;height:100%;padding:16px 16px 0 16px;background-image:url("../../assets/pageBg.png");background-size:cover;background-position:center center}#index .headerBox{width:100%;height:124px;background-image:url("../../assets/download.png");background-size:cover;background-position:center center}#index .secondLine{position:absolute;right:20px;top:30px}#index .host-body .dv-dec-10,#index .host-body .dv-dec-10-s{width:33.3%;height:5px}#index .host-body .dv-dec-10-s{transform:rotateY(180deg)}#index .host-body .dv-dec-8{width:200px;height:50px}#index .host-body .title{position:relative;width:500px;text-align:center;background-size:cover;background-repeat:no-repeat}#index .host-body .title .title-text{width:100%;font-size:35px;position:absolute;line-height:35px;top:10px;left:50%;font-weight:700;transform:translate(-50%)}#index .host-body .title .dv-dec-6{position:absolute;bottom:-30px;left:50%;width:250px;height:8px;transform:translate(-50%)}#index .host-body .react-r-s,#index .host-body .react-l-s{background-color:#0f1325}#index .host-body .react-right{font-size:15px;width:200px;line-height:30px;text-align:center;transform:skewX(-45deg)}#index .host-body .react-right.react-l-s{text-align:right;width:150px}#index .host-body .react-right .react-after{position:absolute;right:-25px;top:0;height:24px;width:50px;background-color:#0f1325;transform:skewX(45deg)}#index .host-body .react-right .text{display:inline-block;transform:skewX(45deg)}#index .host-body .body-box{margin-top:10px;display:flex;flex-direction:column}#index .host-body .body-box .content-box{display:grid;gap:5px;grid-template-columns:1fr 2fr 1fr}#index .host-body .body-box .bototm-box{margin-top:5px;display:grid;gap:5px;grid-template-columns:1fr 2fr 1fr}#index .dv-border-box-13{padding:20px 10px 0 10px}#index .writing{text-decoration:underline;color:#daa520;cursor:pointer;margin-right:20px;white-space:nowrap}#index .titleBox{display:flex;justify-content:space-between;width:100%;line-height:32px;font-size:18px;padding-left:20px;margin:0 auto;background-image:url("@/assets/img/title.png");background-size:cover;background-position:center center}.el-form-item{margin-bottom:10px}.bg-red{animation:breathing_red 2s ease-in-out infinite}@keyframes breathing_red{0%{border-color:rgba(255,0,0,0.3);box-shadow:inset 0 0 50px rgba(255,0,0,0.2)}50%{border-color:red;box-shadow:inset 0 0 100px rgba(255,0,0,0.8)}100%{border-color:rgba(255,0,0,0.3);box-shadow:inset 0 0 50px rgba(255,0,0,0.2)}}.bg-yellow{animation:breathing_yellow 2s ease-in-out infinite}@keyframes breathing_yellow{0%{border-color:rgba(255,219,0,0.3);box-shadow:inset 0 0 50px rgba(255,219,0,0.2)}50%{border-color:#ffdb00;box-shadow:inset 0 0 100px rgba(255,219,0,0.8)}100%{border-color:rgba(255,219,0,0.3);box-shadow:inset 0 0 50px rgba(255,219,0,0.2)}}.scroll-box{width:1820px;height:40px;padding:10px 15px;overflow:hidden;position:relative;left:50px}.scroll-content{position:absolute;white-space:nowrap;animation:scroll 0s linear infinite;padding-left:100%}@keyframes scroll{0%{transform:translateX(0)}100%{transform:translateX(-100%)}}@keyframes flash{0%,100%{opacity:1}50%{opacity:0.3}}.animate-flash-red{animation:flash 1s infinite;color:#ff2501;cursor:pointer}.animate-flash-yellow{animation:flash 1s infinite;color:#bb7b00;cursor:pointer}.scroll-box:hover .scroll-content{animation-play-state:paused}:deep(.el-divider--horizontal){margin:10px 0}@keyframes step-scale{0%{transform:scale(1.2)}50%{transform:scale(1.2)}100%{transform:scale(1.2)}}.step-scale{animation:step-scale 1s infinite;text-align:center;color:#ff0000}div::-webkit-scrollbar{width:6px}div::-webkit-scrollbar-thumb{border-radius:10px;background:rgba(204,204,204,0.8);cursor:pointer;transition:var(--el-transition-duration) background-color}div::-webkit-scrollbar-thumb:hover{background:rgba(204,204,204,0.5)}div .el-divider--horizontal{border-top:1px var(--el-color-primary) var(--el-border-style)}:deep(.el-input-group__append,.el-input-group__prepend){background-color:#ffffff00}:deep(.frontBox){background-color:var(--el-color-primary) !important;color:#fff !important}::v-deep(.el-tabs__item){color:#fff}::v-deep(.el-tabs__item.is-active){color:var(--el-color-primary)}::v-deep(.el-tabs__nav-wrap::after){color:var(--el-color-primary)}::v-deep(.el-tabs__active-bar){color:var(--el-color-primary)} diff --git a/src/assets/scss/index.scss b/src/assets/scss/index.scss new file mode 100644 index 0000000..7b04daf --- /dev/null +++ b/src/assets/scss/index.scss @@ -0,0 +1,368 @@ +#index { + color: #d3d6dd; + width: 1920px; + height: 1080px; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + transform-origin: left top; + --el-text-color-primary: #9b9b9b; + .bg { + width: 100%; + height: 100%; + padding: 16px 16px 0 16px; + background-image: url("../../assets/pageBg.png"); + background-size: cover; + background-position: center center; + } + .headerBox { + width: 100%; + height: 124px; + background-image: url("../../assets/download.png"); + background-size: cover; + background-position: center center; + } + .secondLine { + position: absolute; + right: 20px; + top: 30px; + } + .host-body { + //头部样式 + .dv-dec-10, + .dv-dec-10-s { + width: 33.3%; + height: 5px; + } + .dv-dec-10-s { + transform: rotateY(180deg); + } + .dv-dec-8 { + width: 200px; + height: 50px; + } + .title { + position: relative; + width: 500px; + text-align: center; + background-size: cover; + background-repeat: no-repeat; + + .title-text { + width: 100%; + font-size: 35px; + position: absolute; + line-height: 35px; + top: 10px; + left: 50%; + font-weight: 700; + transform: translate(-50%); + } + + .dv-dec-6 { + position: absolute; + bottom: -30px; + left: 50%; + width: 250px; + height: 8px; + transform: translate(-50%); + } + } + + // 第二行 + + .react-r-s, + .react-l-s { + background-color: #0f1325; + } + + // 平行四边形 + .react-right { + &.react-l-s { + text-align: right; + width: 150px; + } + font-size: 15px; + width: 200px; + line-height: 30px; + text-align: center; + transform: skewX(-45deg); + + .react-after { + position: absolute; + right: -25px; + top: 0; + height: 24px; + width: 50px; + background-color: #0f1325; + transform: skewX(45deg); + } + + .text { + display: inline-block; + transform: skewX(45deg); + } + } + + // .react-left { + // &.react-l-s { + // width: 500px; + // text-align: left; + // } + // font-size: 18px; + // width: 100px; + // height: 50px; + // line-height: 50px; + // text-align: center; + // transform: skewX(45deg); + // background-color: #0f1325; + + // .react-before { + // position: absolute; + // left: -25px; + // top: 0; + // height: 50px; + // width: 50px; + // background-color: #0f1325; + // transform: skewX(-45deg); + // } + + // .text { + // display: inline-block; + // transform: skewX(-45deg); + // } + // } + + .body-box { + margin-top: 10px; + display: flex; + flex-direction: column; + + //下方区域的布局 + .content-box { + display: grid; + gap: 5px; + grid-template-columns: 1fr 2fr 1fr; + } + + // 底部数据 + .bototm-box { + margin-top: 5px; + display: grid; + gap: 5px; + grid-template-columns: 1fr 2fr 1fr; + } + } + } + .dv-border-box-13 { + padding: 20px 10px 0 10px; + } + .writing { + text-decoration: underline; + color: #daa520; + cursor: pointer; + margin-right: 20px; + white-space: nowrap; + } + .titleBox { + display: flex; + justify-content: space-between; + width: 100%; + // height: 30px; + + line-height: 32px; + font-size: 18px; + padding-left: 20px; + margin: 0 auto; + background-image: url("@/assets/img/title.png"); + background-size: cover; + background-position: center center; + } +} +.el-form-item { + margin-bottom: 10px; +} +/* 呼吸闪烁的容器样式 红色*/ +.bg-red { + /* 设置初始的边框样式 */ + // border: 1px solid rgba(255, 0, 0, 0.3); + /* 添加呼吸动画 */ + animation: breathing_red 2s ease-in-out infinite; +} + +/* 定义呼吸动画 */ +@keyframes breathing_red { + 0% { + /* 开始时边框颜色较淡 */ + border-color: rgba(255, 0, 0, 0.3); + box-shadow: inset 0 0 50px rgba(255, 0, 0, 0.2); + } + 50% { + /* 中间时边框颜色最深 */ + border-color: rgba(255, 0, 0, 1); + box-shadow: inset 0 0 100px rgba(255, 0, 0, 0.8); + } + 100% { + /* 结束时边框颜色回到较淡状态 */ + border-color: rgba(255, 0, 0, 0.3); + box-shadow: inset 0 0 50px rgba(255, 0, 0, 0.2); + } +} + +/* 呼吸闪烁的容器样式 */ +.bg-yellow { + /* 设置初始的边框样式 */ + // border: 1px solid rgba(255, 219, 0, 0.3); + /* 添加呼吸动画 */ + animation: breathing_yellow 2s ease-in-out infinite; +} + +/* 定义呼吸动画 */ +@keyframes breathing_yellow { + 0% { + /* 开始时边框颜色较淡 */ + border-color: rgba(255, 219, 0, 0.3); + box-shadow: inset 0 0 50px rgba(255, 219, 0, 0.2); + } + 50% { + /* 中间时边框颜色最深 */ + border-color: rgba(255, 219, 0, 1); + box-shadow: inset 0 0 100px rgba(255, 219, 0, 0.8); + } + 100% { + /* 结束时边框颜色回到较淡状态 */ + border-color: rgba(255, 219, 0, 0.3); + box-shadow: inset 0 0 50px rgba(255, 219, 0, 0.2); + } +} + +.scroll-box { + width: 1820px; + height: 40px; + padding: 10px 15px; + overflow: hidden; + position: relative; + left: 50px; +} + +.scroll-content { + position: absolute; + white-space: nowrap; + animation: scroll 0s linear infinite; + /* 根据内容长度调整动画时间 */ + + padding-left: 100%; + /* 初始位置偏移 */ +} + +@keyframes scroll { + 0% { + transform: translateX(0); + } + 100% { + transform: translateX(-100%); + } +} + +/* 闪烁动画定义 */ +@keyframes flash { + 0%, + 100% { + opacity: 1; + } + 50% { + opacity: 0.3; /* 半透明效果实现闪烁 */ + } +} + +.animate-flash-red { + animation: flash 1s infinite; /* 1秒周期,无限循环 */ + color: #ff2501; + cursor: pointer; +} +.animate-flash-yellow { + animation: flash 1s infinite; /* 1秒周期,无限循环 */ + color: #bb7b00; + cursor: pointer; +} + +/* 悬停暂停效果 */ +.scroll-box:hover .scroll-content { + animation-play-state: paused; +} + +:deep(.el-divider--horizontal) { + margin: 10px 0; +} + +@keyframes step-scale { + 0% { + transform: scale(1.2); + } + 50% { + transform: scale(1.2); + } /* 突变时放大 */ + 100% { + transform: scale(1.2); + } /* 稳定后保持放大 */ +} +.step-scale { + animation: step-scale 1s infinite; /* forwards保持最终状态 */ + text-align: center; + color: #ff0000; /* 警告色 */ +} + +div { + &::-webkit-scrollbar { + width: 6px; /* 滚动条宽度 */ + } + + /* 滚动条轨道 */ + // &::-webkit-scrollbar-track { + // background: #ccc; /* 轨道背景色 */ + // border-radius: 10px; /* 轨道圆角 */ + // } + + // /* 滚动条滑块 */ + &::-webkit-scrollbar-thumb { + // background: #1d83ce; /* 滑块颜色 */ + border-radius: 10px; /* 滑块圆角 */ + background: rgba(204, 204, 204, 0.8); /* 设置滚动条轨道背景色 */ + cursor: pointer; + transition: var(--el-transition-duration) background-color; + } + + /* 滚动条滑块hover状态 */ + &::-webkit-scrollbar-thumb:hover { + // background: #1d83ce; /* hover时的滑块颜色 */ + background: rgba(204, 204, 204, 0.5); /* 设置滚动条轨道背景色 */ + } + + .el-divider--horizontal { + border-top: 1px var(--el-color-primary) var(--el-border-style); + } +} + +:deep(.el-input-group__append, .el-input-group__prepend) { + background-color: #ffffff00; +} +:deep(.frontBox) { + background-color: var(--el-color-primary) !important; + color: #fff !important; +} + +::v-deep(.el-tabs__item) { + color: #fff; +} +::v-deep(.el-tabs__item.is-active) { + color: var(--el-color-primary); +} + +::v-deep(.el-tabs__nav-wrap::after) { + color: var(--el-color-primary); +} + +::v-deep(.el-tabs__active-bar) { + color: var(--el-color-primary); +} diff --git a/src/assets/scss/style.scss b/src/assets/scss/style.scss new file mode 100644 index 0000000..7cf23d3 --- /dev/null +++ b/src/assets/scss/style.scss @@ -0,0 +1,253 @@ +@import "./variables"; + +// 全局样式 +* { + margin: 0; + padding: 0; + list-style-type: none; + box-sizing: border-box; + outline: none; + --el-color-primary: #0a73ff; + --el-color-success: #2e8b57; + --el-color-warning: #daa520; + --el-color-danger: #a52a2a; + --el-scrollbar-bg-color: #ccc; + --el-scrollbar-opacity: 0.7; + // --el-fill-color-blank: #ffffff00; +} + +html { + margin: 0; + padding: 0; +} + +body { + font-family: Arial, Helvetica, sans-serif; + line-height: 1.2em; + background-color: #f1f1f1; + margin: 0; + padding: 0; + overflow: hidden; + + /* 滚动条整体 */ + ::-webkit-scrollbar { + width: 8px; /* 垂直滚动条宽度 */ + height: 8px; /* 水平滚动条高度 */ + } + + /* 滚动条滑块 */ + ::-webkit-scrollbar-thumb { + background: var(--el-color-primary); /* 滑块颜色 */ + border-radius: 4px; /* 滑块圆角 */ + transition: background 0.3s; /* 滑块 hover 过渡效果 */ + } +} + +a { + color: #343440; + text-decoration: none; + box-sizing: border-box; +} + +.clearfix { + &::after { + content: ""; + display: table; + height: 0; + line-height: 0; + visibility: hidden; + clear: both; + } +} + +// 图标 +.iconfont { + font-size: 20px !important; + color: #5cd9e8; +} + +//浮动 +.float-r { + float: right; +} + +//浮动 +.float-l { + float: left; +} + +// 字体加粗 +.fw-b { + font-weight: bold; +} + +//文章一行显示,多余省略号显示 +.title-item { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.bg-color-black { + background-color: rgba(19, 25, 47, 0.6); +} + +.bg-color-blue { + background-color: #1a5cd7; +} + +.colorBlack { + color: #272727 !important; + + &:hover { + color: #272727 !important; + } +} + +.colorGrass { + color: #33cea0; + + &:hover { + color: #33cea0 !important; + } +} + +.colorRed { + color: #ff5722; + + &:hover { + color: #ff5722 !important; + } +} + +.colorText { + color: #d3d6dd !important; + + &:hover { + color: #d3d6dd !important; + } +} + +.colorBlue { + color: #257dff !important; + + &:hover { + color: #257dff !important; + } +} + +//颜色 +@each $colorkey, $color in $colors { + .text-#{$colorkey} { + color: $color; + } + + .bg-#{$colorkey} { + background-color: $color; + } +} + +//对齐 +@each $var in (left, center, right) { + .text-#{$var} { + text-align: $var !important; + } +} + +//flex +@each $key, $value in $flex-jc { + .jc-#{$key} { + justify-content: $value; + } +} + +@each $key, $value in $flex-ai { + .ai-#{$key} { + align-items: $value; + } +} + +//字体 +@each $fontkey, $fontvalue in $font-sizes { + .fs-#{$fontkey} { + font-size: $fontvalue * $base-font-size; + } +} + +//.mt-1 => margin top +//spacing + +@each $typekey, $type in $spacing-types { + //.m-1 + @each $sizekey, $size in $spacing-sizes { + .#{$typekey}-#{$sizekey} { + #{$type}: $size * $spacing-base-size; + } + } + + //.mx-1 + @each $sizekey, $size in $spacing-sizes { + .#{$typekey}x-#{$sizekey} { + #{$type}-left: $size * $spacing-base-size; + #{$type}-right: $size * $spacing-base-size; + } + + .#{$typekey}y-#{$sizekey} { + #{$type}-top: $size * $spacing-base-size; + #{$type}-bottom: $size * $spacing-base-size; + } + } + + //.mt-1 + @each $directionkey, $direction in $spacing-directions { + @each $sizekey, $size in $spacing-sizes { + .#{$typekey}#{$directionkey}-#{$sizekey} { + #{$type}-#{$direction}: $size * $spacing-base-size; + } + } + } + + .#{$typekey} { + #{$type}: 0; + } + @for $i from 0 through 100 { + .md#{$i} { + margin: #{$i}px !important; + } + .mt#{$i} { + margin-top: #{$i}px !important; + } + + .mr#{$i} { + margin-right: #{$i}px !important; + } + + .mb#{$i} { + margin-bottom: #{$i}px !important; + } + + .ml#{$i} { + margin-left: #{$i}px !important; + } + + .pd#{$i} { + padding: #{$i}px !important; + } + .pt#{$i} { + padding-top: #{$i}px !important; + } + + .pr#{$i} { + padding-right: #{$i}px !important; + } + + .pb#{$i} { + padding-bottom: #{$i}px !important; + } + + .pl#{$i} { + padding-left: #{$i}px !important; + } + } +} + diff --git a/src/assets/titleBG.png b/src/assets/titleBG.png new file mode 100644 index 0000000..38226fe Binary files /dev/null and b/src/assets/titleBG.png differ diff --git a/src/assets/txycyzj.gif b/src/assets/txycyzj.gif new file mode 100644 index 0000000..b2d30f2 Binary files /dev/null and b/src/assets/txycyzj.gif differ diff --git a/src/assets/vue.svg b/src/assets/vue.svg new file mode 100644 index 0000000..770e9d3 --- /dev/null +++ b/src/assets/vue.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/BX/rmsWorker.js b/src/components/BX/rmsWorker.js new file mode 100644 index 0000000..7c7f58d --- /dev/null +++ b/src/components/BX/rmsWorker.js @@ -0,0 +1,311 @@ +// 辅助函数 +const getMax = (temp, tempA, tempB, tempC) => { + temp = temp > tempA ? temp : tempA; + temp = temp > tempB ? temp : tempB; + if (tempC !== undefined) { + temp = temp > tempC ? temp : tempC; + } + return temp; +}; + +const getMaxTwo = (temp, tempA, tempB) => { + temp = temp > tempA ? temp : tempA; + temp = temp > tempB ? temp : tempB; + return temp; +}; + +const getMin = (temp, tempA, tempB, tempC) => { + temp = temp < tempA ? temp : tempA; + temp = temp < tempB ? temp : tempB; + if (tempC !== undefined) { + temp = temp < tempC ? temp : tempC; + } + return temp; +}; + +const getMinOpen = (temp, tempA, tempB) => { + temp = temp < tempA ? temp : tempA; + temp = temp < tempB ? temp : tempB; + return temp; +}; + +// 数据处理函数 +const fliteWaveData = (wp, step, iphasicValue, isOpen) => { + const rmsData = wp.listRmsData; + const pt = Number(wp.pt) / 1000; + const ct = Number(wp.ct); + const titleList = wp.waveTitle; + let xishu = pt; + let aTitle = "", + bTitle = "", + cTitle = "", + unit = "电压"; + let rmsvFirstX = 0, + rmsvFirstY = 0, + rmsvSecondX = 0, + rmsvSecondY = 0, + firstZhou = "a", + secondeZhou = "a"; + let ifmax = 0, + ifmin = 0, + ismax = 0, + ismin = 0, + rfmax = 0, + rfmin = 0, + rsmax = 0, + rsmin = 0; + + const shunshiFA = []; + const shunshiFB = []; + const shunshiFC = []; + const shunshiSA = []; + const shunshiSB = []; + const shunshiSC = []; + const rmsFA = []; + const rmsFB = []; + const rmsFC = []; + const rmsSA = []; + const rmsSB = []; + const rmsSC = []; + + + + if (titleList[iphasicValue * step + 1]?.substring(0, 1) !== "U") { + xishu = ct; + unit = "电流"; + } + + for (let i = 1; i <= iphasicValue; i++) { + switch (i) { + case 1: + aTitle = titleList[iphasicValue * step + i]?.substring(1) || ""; + break; + case 2: + bTitle = titleList[iphasicValue * step + i]?.substring(1) || ""; + break; + case 3: + cTitle = titleList[iphasicValue * step + i]?.substring(1) || ""; + break; + } + } + + if (rmsData[0] && rmsData[0][iphasicValue * step + 1] !== undefined) { + rfmax = rmsData[0][iphasicValue * step + 1] * xishu; + rfmin = rmsData[0][iphasicValue * step + 1] * xishu; + rmsvFirstY = rmsData[0][iphasicValue * step + 1] * xishu; + rmsvFirstX = rmsData[0][0]; + rsmax = rmsData[0][iphasicValue * step + 1]; + rsmin = rmsData[0][iphasicValue * step + 1]; + rmsvSecondY = rmsData[0][iphasicValue * step + 1]; + rmsvSecondX = rmsData[0][0]; + } + + for (let rms = 0; rms < rmsData.length; rms++) { + if (!rmsData[rms] || rmsData[rms][iphasicValue * step + 1] === undefined) { + break; + } + + switch (iphasicValue) { + case 1: + const rmsFirstA = rmsData[rms][iphasicValue * step + 1] * xishu; + rmsFA.push([rmsData[rms][0], rmsFirstA]); + rfmax = rfmax > rmsFirstA ? rfmax : rmsFirstA; + rfmin = rfmin < rmsFirstA ? rfmin : rmsFirstA; + if (rfmin < rmsvFirstY) { + rmsvFirstY = rfmin; + firstZhou = "a"; + rmsvFirstX = rmsData[rms][0]; + } + + const rmsSecondA = rmsData[rms][iphasicValue * step + 1]; + rmsSA.push([rmsData[rms][0], rmsSecondA]); + rsmax = rsmax > rmsSecondA ? rsmax : rmsSecondA; + rsmin = rsmin < rmsSecondA ? rsmin : rmsSecondA; + if (rsmin < rmsvSecondY) { + rmsvSecondY = rsmin; + secondeZhou = "a"; + rmsvSecondX = rmsData[rms][0]; + } + break; + case 2: + const rmsFirstA2 = rmsData[rms][iphasicValue * step + 1] * xishu; + const rmsFirstB2 = rmsData[rms][iphasicValue * step + 2] * xishu; + rmsFA.push([rmsData[rms][0], rmsFirstA2]); + rmsFB.push([rmsData[rms][0], rmsFirstB2]); + rfmax = getMaxTwo(rfmax, rmsFirstA2, rmsFirstB2); + rfmin = getMinOpen(rfmin, rmsFirstA2, rmsFirstB2); + if (rfmin < rmsvFirstY) { + rmsvFirstY = rfmin; + if (rfmin === rmsFirstA2) { + firstZhou = "a"; + } else if (rfmin === rmsFirstB2) { + firstZhou = "b"; + } + rmsvFirstX = rmsData[rms][0]; + } + + const rmsSecondA2 = rmsData[rms][iphasicValue * step + 1]; + const rmsSecondB2 = rmsData[rms][iphasicValue * step + 2]; + rmsSA.push([rmsData[rms][0], rmsSecondA2]); + rmsSB.push([rmsData[rms][0], rmsSecondB2]); + rsmax = getMaxTwo(rsmax, rmsSecondA2, rmsSecondB2); + rsmin = getMinOpen(rsmin, rmsSecondA2, rmsSecondB2); + if (rsmin < rmsvSecondY) { + rmsvSecondY = rsmin; + if (rsmin === rmsSecondA2) { + secondeZhou = "a"; + } else if (rsmin === rmsSecondB2) { + secondeZhou = "b"; + } + rmsvSecondX = rmsData[rms][0]; + } + break; + case 3: + const rmsFirstA3 = rmsData[rms][iphasicValue * step + 1] * xishu; + const rmsFirstB3 = rmsData[rms][iphasicValue * step + 2] * xishu; + const rmsFirstC3 = rmsData[rms][iphasicValue * step + 3] * xishu; + rmsFA.push([rmsData[rms][0], rmsFirstA3]); + rmsFB.push([rmsData[rms][0], rmsFirstB3]); + rmsFC.push([rmsData[rms][0], rmsFirstC3]); + rfmax = getMax(rfmax, rmsFirstA3, rmsFirstB3, rmsFirstC3); + rfmin = isOpen + ? getMinOpen(rfmin, rmsFirstA3, rmsFirstC3) + : getMin(rfmin, rmsFirstA3, rmsFirstB3, rmsFirstC3); + if (rfmin < rmsvFirstY) { + rmsvFirstY = rfmin; + if (rfmin === rmsFirstA3) { + firstZhou = "a"; + } else if (rfmin === rmsFirstB3) { + firstZhou = "b"; + } else { + firstZhou = "c"; + } + rmsvFirstX = rmsData[rms][0]; + } + + const rmsSecondA3 = rmsData[rms][iphasicValue * step + 1]; + const rmsSecondB3 = rmsData[rms][iphasicValue * step + 2]; + const rmsSecondC3 = rmsData[rms][iphasicValue * step + 3]; + rmsSA.push([rmsData[rms][0], rmsSecondA3]); + rmsSB.push([rmsData[rms][0], rmsSecondB3]); + rmsSC.push([rmsData[rms][0], rmsSecondC3]); + rsmax = getMax(rsmax, rmsSecondA3, rmsSecondB3, rmsSecondC3); + rsmin = isOpen + ? getMinOpen(rsmin, rmsSecondA3, rmsSecondC3) + : getMin(rsmin, rmsSecondA3, rmsSecondB3, rmsSecondC3); + if (rsmin < rmsvSecondY) { + rmsvSecondY = rsmin; + if (rsmin === rmsSecondA3) { + secondeZhou = "a"; + } else if (rsmin === rmsSecondB3) { + secondeZhou = "b"; + } else { + secondeZhou = "c"; + } + rmsvSecondX = rmsData[rms][0]; + } + break; + } + } + + const instantF = { max: ifmax, min: ifmin }; + const instantS = { max: ismax, min: ismin }; + const RMSF = { max: rfmax, min: rfmin }; + const RMSS = { max: rsmax, min: rsmin }; + const RMSFMinDetail = { rmsvFirstX, rmsvFirstY, firstZhou }; + const RMSSMinDetail = { rmsvSecondX, rmsvSecondY, secondeZhou }; + const shunshiF = { shunshiFA, shunshiFB, shunshiFC }; + const shunshiS = { shunshiSA, shunshiSB, shunshiSC }; + const RMSFWave = { rmsFA, rmsFB, rmsFC }; + const RMSSWave = { rmsSA, rmsSB, rmsSC }; + const title = { aTitle, bTitle, cTitle, unit }; + + + return { + + instantF, + instantS, + RMSF, + RMSS, + RMSFMinDetail, + RMSSMinDetail, + shunshiF, + shunshiS, + RMSFWave, + RMSSWave, + title, + unit, + }; +}; + +// 监听消息 +self.onmessage = function (e) { + const { wp, isOpen, value, boxoList } = JSON.parse(e.data); + + try { + const iphasicValue = wp.iphasic || 1; + + const picCounts = (wp.waveTitle.length - 1) / iphasicValue; + const waveDatas = []; + + for (let i = 0; i < picCounts; i++) { + const data = fliteWaveData(wp, i, iphasicValue, isOpen,boxoList); + waveDatas.push(data); + } +// 处理标题 + let titles = ""; + if (boxoList.systemType == "pms") { + titles = + "变电站名称:" + + boxoList.powerStationName + + " 监测点名称:" + + boxoList.measurementPointName + + " 发生时刻:" + + boxoList.startTime + + " 残余电压:" + + (boxoList.featureAmplitude * 100).toFixed(2) + + "% 持续时间:" + + boxoList.duration + + "s"; + } else if (boxoList.systemType == "ZL") { + titles = + " 监测点名称:" + + boxoList.equipmentName + + " 发生时刻:" + + boxoList.startTime + + " 残余电压:" + + boxoList.evtParamVVaDepth + + " 持续时间:" + + boxoList.evtParamTm + + "s"; + } else { + titles = + "变电站名称:" + + boxoList.subName + + " 监测点名称:" + + boxoList.lineName + + " 发生时刻:" + + boxoList.startTime + + " 残余电压:" + + (boxoList.featureAmplitude * 100).toFixed(2) + + "% 持续时间:" + + boxoList.duration + + "s"; + } + // 发送处理结果回主线程 + self.postMessage({ + titles: titles, + success: true, + waveDatas, + time: wp.time, + type: wp.waveType, + severity: wp.yzd, + iphasic: iphasicValue, + }); + } catch (error) { + self.postMessage({ + success: false, + error: error.message, + }); + } +}; diff --git a/src/components/BX/rmsboxi.vue b/src/components/BX/rmsboxi.vue new file mode 100644 index 0000000..663724c --- /dev/null +++ b/src/components/BX/rmsboxi.vue @@ -0,0 +1,1133 @@ + + + \ No newline at end of file diff --git a/src/components/BX/rmsboxi1.vue b/src/components/BX/rmsboxi1.vue new file mode 100644 index 0000000..0e3fae7 --- /dev/null +++ b/src/components/BX/rmsboxi1.vue @@ -0,0 +1,1608 @@ + + diff --git a/src/components/BX/rmsboxi2.vue b/src/components/BX/rmsboxi2.vue new file mode 100644 index 0000000..6b32902 --- /dev/null +++ b/src/components/BX/rmsboxi2.vue @@ -0,0 +1,1136 @@ + + + \ No newline at end of file diff --git a/src/components/BX/shuWorker.js b/src/components/BX/shuWorker.js new file mode 100644 index 0000000..11d7758 --- /dev/null +++ b/src/components/BX/shuWorker.js @@ -0,0 +1,179 @@ +// waveData.worker.js +self.addEventListener('message', function(e) { + const { wp, value, iphasic, isOpen, boxoList } = JSON.parse(e.data); + + // 处理波形数据的函数 + const fliteWaveData = (wp, step) => { + // 将原有的fliteWaveData函数实现复制到这里 + const shunData = wp.listWaveData; + const pt = Number(wp.pt) / 1000; + const ct = Number(wp.ct); + const titleList = wp.waveTitle; + let xishu = pt; + let aTitle = '', bTitle = '', cTitle = '', unit = '电压'; + let ifmax = 0, ifmin = 0, ismax = 0, ismin = 0; + + const shunshiFA = []; + const shunshiFB = []; + const shunshiFC = []; + const shunshiSA = []; + const shunshiSB = []; + const shunshiSC = []; + + if (shunData.length > 0) { + if (titleList[iphasic * step + 1]?.substring(0, 1) !== 'U') { + xishu = ct; + unit = '电流'; + } + + for (let i = 1; i <= iphasic; i++) { + switch (i) { + case 1: + aTitle = titleList[iphasic * step + i]?.substring(1) || ''; + break; + case 2: + bTitle = titleList[iphasic * step + i]?.substring(1) || ''; + break; + case 3: + cTitle = titleList[iphasic * step + i]?.substring(1) || ''; + break; + } + } + + if (shunData[0][iphasic * step + 1] !== undefined) { + ifmax = shunData[0][iphasic * step + 1] * xishu; + ifmin = shunData[0][iphasic * step + 1] * xishu; + ismax = shunData[0][iphasic * step + 1]; + ismin = shunData[0][iphasic * step + 1]; + } + + for (let shun = 0; shun < shunData.length; shun++) { + if (shunData[shun][iphasic * step + 1] === undefined) { + break; + } + + switch (iphasic) { + case 1: + const shunFirstA = shunData[shun][iphasic * step + 1] * xishu; + shunshiFA.push([shunData[shun][0], shunFirstA]); + ifmax = Math.max(ifmax, shunFirstA); + ifmin = Math.min(ifmin, shunFirstA); + + const shunSecondA = shunData[shun][iphasic * step + 1]; + shunshiSA.push([shunData[shun][0], shunSecondA]); + ismax = Math.max(ismax, shunSecondA); + ismin = Math.min(ismin, shunSecondA); + break; + case 2: + const shunFirstA2 = shunData[shun][iphasic * step + 1] * xishu; + const shunFirstB2 = shunData[shun][iphasic * step + 2] * xishu; + shunshiFA.push([shunData[shun][0], shunFirstA2]); + shunshiFB.push([shunData[shun][0], shunFirstB2]); + ifmax = Math.max(ifmax, shunFirstA2, shunFirstB2); + ifmin = Math.min(ifmin, shunFirstA2, shunFirstB2); + + const shunSecondA2 = shunData[shun][iphasic * step + 1]; + const shunSecondB2 = shunData[shun][iphasic * step + 2]; + shunshiSA.push([shunData[shun][0], shunSecondA2]); + shunshiSB.push([shunData[shun][0], shunSecondB2]); + ismax = Math.max(ismax, shunSecondA2, shunSecondB2); + ismin = Math.min(ismin, shunSecondA2, shunSecondB2); + break; + case 3: + const shunFirstA3 = shunData[shun][iphasic * step + 1] * xishu; + const shunFirstB3 = shunData[shun][iphasic * step + 2] * xishu; + const shunFirstC3 = shunData[shun][iphasic * step + 3] * xishu; + shunshiFA.push([shunData[shun][0], shunFirstA3]); + shunshiFB.push([shunData[shun][0], shunFirstB3]); + shunshiFC.push([shunData[shun][0], shunFirstC3]); + ifmax = Math.max(ifmax, shunFirstA3, shunFirstB3, shunFirstC3); + ifmin = isOpen ? Math.min(ifmin, shunFirstA3, shunFirstC3) : Math.min(ifmin, shunFirstA3, shunFirstB3, shunFirstC3); + + const shunSecondA3 = shunData[shun][iphasic * step + 1]; + const shunSecondB3 = shunData[shun][iphasic * step + 2]; + const shunSecondC3 = shunData[shun][iphasic * step + 3]; + shunshiSA.push([shunData[shun][0], shunSecondA3]); + shunshiSB.push([shunData[shun][0], shunSecondB3]); + shunshiSC.push([shunData[shun][0], shunSecondC3]); + ismax = Math.max(ismax, shunSecondA3, shunSecondB3, shunSecondC3); + ismin = isOpen ? Math.min(ismin, shunSecondA3, shunSecondC3) : Math.min(ismin, shunSecondA3, shunSecondB3, shunSecondC3); + break; + } + } + } + + const instantF = { max: ifmax, min: ifmin }; + const instantS = { max: ismax, min: ismin }; + const shunshiF = { shunshiFA, shunshiFB, shunshiFC }; + const shunshiS = { shunshiSA, shunshiSB, shunshiSC }; + const title = { aTitle, bTitle, cTitle, unit }; + + return { instantF, instantS, shunshiF, shunshiS, title, unit }; + }; + + // 处理标题 + let titles = ''; + if (boxoList.systemType == 'pms') { + titles = '变电站名称:' + + boxoList.powerStationName + + ' 监测点名称:' + + boxoList.measurementPointName + + ' 发生时刻:' + + boxoList.startTime + + ' 残余电压:' + + (boxoList.featureAmplitude * 100).toFixed(2) + + '% 持续时间:' + + boxoList.duration + + 's'; + } else if (boxoList.systemType == 'ZL') { + titles = ' 监测点名称:' + + boxoList.equipmentName + + ' 发生时刻:' + + boxoList.startTime + + ' 残余电压:' + + boxoList.evtParamVVaDepth + + ' 持续时间:' + + boxoList.evtParamTm + + 's'; + } else { + titles = '变电站名称:' + + boxoList.subName + + ' 监测点名称:' + + boxoList.lineName + + ' 发生时刻:' + + boxoList.startTime + + ' 残余电压:' + + (boxoList.featureAmplitude * 100).toFixed(2) + + '% 持续时间:' + + boxoList.duration + + 's'; + } + + const iphasicValue = wp.iphasic || 1; + const picCounts = (wp.waveTitle.length - 1) / iphasicValue; + const waveDatas = []; + + for (let i = 0; i < picCounts; i++) { + const data = fliteWaveData(wp, i); + waveDatas.push(data); + } + + const time = wp.time; + const type = wp.waveType; + let severity = wp.yzd; + + if (severity < 0) { + severity = '/'; + type = '/'; + } + + // 将处理结果发送回主线程 + self.postMessage({ + waveDatas, + time, + type, + severity, + titles, + iphasic: iphasicValue + }); +}); \ No newline at end of file diff --git a/src/components/BX/shushiboxi.vue b/src/components/BX/shushiboxi.vue new file mode 100644 index 0000000..e8d7797 --- /dev/null +++ b/src/components/BX/shushiboxi.vue @@ -0,0 +1,863 @@ + + + \ No newline at end of file diff --git a/src/components/BX/shushiboxi1.vue b/src/components/BX/shushiboxi1.vue new file mode 100644 index 0000000..f12cd30 --- /dev/null +++ b/src/components/BX/shushiboxi1.vue @@ -0,0 +1,1229 @@ + + diff --git a/src/components/BX/shushiboxi2.vue b/src/components/BX/shushiboxi2.vue new file mode 100644 index 0000000..a38a5ea --- /dev/null +++ b/src/components/BX/shushiboxi2.vue @@ -0,0 +1,984 @@ + + + \ No newline at end of file diff --git a/src/components/BX/waveForm.vue b/src/components/BX/waveForm.vue new file mode 100644 index 0000000..b65bb65 --- /dev/null +++ b/src/components/BX/waveForm.vue @@ -0,0 +1,189 @@ + + + diff --git a/src/components/HelloWorld.vue b/src/components/HelloWorld.vue new file mode 100644 index 0000000..7b25f3f --- /dev/null +++ b/src/components/HelloWorld.vue @@ -0,0 +1,38 @@ + + + + + diff --git a/src/components/MyEchartMap.vue b/src/components/MyEchartMap.vue new file mode 100644 index 0000000..00f13ae --- /dev/null +++ b/src/components/MyEchartMap.vue @@ -0,0 +1,300 @@ + + + + + + diff --git a/src/components/datePicker/index.vue b/src/components/datePicker/index.vue new file mode 100644 index 0000000..454da2c --- /dev/null +++ b/src/components/datePicker/index.vue @@ -0,0 +1,671 @@ + + + + + diff --git a/src/components/echartMap3D.vue b/src/components/echartMap3D.vue new file mode 100644 index 0000000..de90c9b --- /dev/null +++ b/src/components/echartMap3D.vue @@ -0,0 +1,278 @@ + + + + + + diff --git a/src/components/echarts.ts b/src/components/echarts.ts new file mode 100644 index 0000000..711dcd3 --- /dev/null +++ b/src/components/echarts.ts @@ -0,0 +1,37 @@ +// 引入 echarts 核心模块。 +import * as echarts from "echarts/core"; + +/** 引入柱状图and折线图图表,图表后缀都为 Chart */ +import { BarChart, LineChart } from "echarts/charts"; + +// 引入提示框,标题,直角坐标系,数据集,内置数据转换器组件 +import { + TitleComponent, + TooltipComponent, + GridComponent, + DatasetComponent, + TransformComponent, +} from "echarts/components"; + +// 标签自动布局,全局过渡动画等 +import { LabelLayout, UniversalTransition } from "echarts/features"; + +// 引入 Canvas 渲染器,注意引入 CanvasRenderer 或者 SVGRenderer 是必须的 +import { CanvasRenderer } from "echarts/renderers"; + +// 注册组件 +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + DatasetComponent, + TransformComponent, + BarChart, + LabelLayout, + UniversalTransition, + CanvasRenderer, + LineChart, +]); + +// 导出 +export default echarts; diff --git a/src/components/echarts/MyEchart.vue b/src/components/echarts/MyEchart.vue new file mode 100644 index 0000000..e8f7713 --- /dev/null +++ b/src/components/echarts/MyEchart.vue @@ -0,0 +1,324 @@ + + + + + diff --git a/src/components/echarts/color.ts b/src/components/echarts/color.ts new file mode 100644 index 0000000..649ed39 --- /dev/null +++ b/src/components/echarts/color.ts @@ -0,0 +1,14 @@ +export let color = [ + '#07CCCA', + '#00BFF5', + '#FFBF00', + '#77DA63', + '#D5FF6B', + '#Ff6600', + '#FF9100', + '#5B6E96', + '#66FFCC', + '#B3B' +] +export const gradeColor3 = ['#339966', '#FFCC33', '#A52a2a'] +export const gradeColor5 = ['#00CC00', '#99CC99', '#FF9900', '#996600', '#A52a2a'] diff --git a/src/components/echarts/echarts.ts b/src/components/echarts/echarts.ts new file mode 100644 index 0000000..08a463c --- /dev/null +++ b/src/components/echarts/echarts.ts @@ -0,0 +1,84 @@ +import * as echarts from 'echarts/core' + +//引入需要的图表,需要什么就加什么 +import { + BarChart, + LineChart, + PieChart, + ScatterChart, + EffectScatterChart, + RadarChart, + GaugeChart +} from 'echarts/charts' + +// 引入提示框,标题,直角坐标系,数据集,内置数据转换器组件,组件后缀都为 Component +import { + TitleComponent, + TooltipComponent, + GridComponent, + LegendComponent, + ToolboxComponent, + // 数据集组件 + DatasetComponent, + // 内置数据转换器组件 (filter, sort) + TransformComponent +} from 'echarts/components' + +// 标签自动布局,全局过渡动画等特性 +import { LabelLayout, UniversalTransition } from 'echarts/features' + +// 引入 Canvas 渲染器,注意引入 CanvasRenderer 或者 SVGRenderer 是必须的一步 +import { CanvasRenderer } from 'echarts/renderers' + +import type { + // 系列类型的定义后缀都为 SeriesOption + BarSeriesOption, + LineSeriesOption +} from 'echarts/charts' + +import type { + // 组件类型的定义后缀都为 ComponentOption + TitleComponentOption, + TooltipComponentOption, + GridComponentOption, + LegendComponentOption, + ToolboxComponentOption, + DatasetComponentOption +} from 'echarts/components' +import type { ComposeOption } from 'echarts/core' + +// 通过 ComposeOption 来组合出一个只有必须组件和图表的 Option 类型 +type ECOption = ComposeOption< + | BarSeriesOption + | LineSeriesOption + | TitleComponentOption + | TooltipComponentOption + | GridComponentOption + | DatasetComponentOption + | LegendComponentOption + | ToolboxComponentOption +> + +// 注册必须的组件,上面引入的都需要在此注册 +echarts.use([ + TitleComponent, + TooltipComponent, + GridComponent, + DatasetComponent, + LegendComponent, + ToolboxComponent, + TransformComponent, + BarChart, + LineChart, + PieChart, + ScatterChart, + LabelLayout, + UniversalTransition, + CanvasRenderer, + EffectScatterChart, + RadarChart, + GaugeChart +]) + +// 导出 +export default echarts diff --git a/src/components/mapJson/北京.json b/src/components/mapJson/北京.json new file mode 100644 index 0000000..a483514 --- /dev/null +++ b/src/components/mapJson/北京.json @@ -0,0 +1 @@ +{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"adcode":110101,"name":"东城","center":[116.418757,39.917544],"centroid":[116.416718,39.912934],"childrenNum":0,"level":"district","parent":{"adcode":110000},"subFeatureIndex":0,"acroutes":[100000,110000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[116.44364,39.87284],[116.445648,39.879283],[116.444059,39.890038],[116.450939,39.890249],[116.450876,39.894088],[116.447154,39.894186],[116.446819,39.900042],[116.448722,39.903246],[116.436488,39.902042],[116.434983,39.913964],[116.434314,39.92868],[116.443682,39.928664],[116.443703,39.936663],[116.446338,39.946205],[116.440566,39.945295],[116.442239,39.9497],[116.435422,39.952121],[116.436698,39.949245],[116.429483,39.950155],[116.429002,39.957274],[116.424861,39.962279],[116.414196,39.962182],[116.411415,39.964928],[116.411101,39.97146],[116.407504,39.973995],[116.40788,39.962182],[116.389498,39.96314],[116.387658,39.96093],[116.38678,39.957014],[116.393346,39.957355],[116.394266,39.940629],[116.396169,39.94006],[116.396692,39.928306],[116.399474,39.923574],[116.392175,39.92242],[116.392259,39.907881],[116.395563,39.907995],[116.396086,39.89944],[116.397612,39.898675],[116.399097,39.872205],[116.38059,39.871148],[116.380632,39.866054],[116.387888,39.867372],[116.394956,39.862734],[116.3955,39.858682],[116.406856,39.859967],[116.41246,39.858942],[116.41589,39.863645],[116.413652,39.871148],[116.423209,39.872824],[116.442574,39.87188],[116.44364,39.87284]]]]}},{"type":"Feature","properties":{"adcode":110102,"name":"西城","center":[116.366794,39.915309],"centroid":[116.36567,39.912028],"childrenNum":0,"level":"district","parent":{"adcode":110000},"subFeatureIndex":1,"acroutes":[100000,110000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[116.325799,39.896789],[116.32582,39.891111],[116.320759,39.881512],[116.321324,39.875199],[116.326636,39.876859],[116.335273,39.875183],[116.341567,39.876159],[116.344286,39.873653],[116.349472,39.873588],[116.35058,39.86869],[116.38059,39.871148],[116.399097,39.872205],[116.397612,39.898675],[116.396086,39.89944],[116.395563,39.907995],[116.392259,39.907881],[116.392175,39.92242],[116.399474,39.923574],[116.396692,39.928306],[116.396169,39.94006],[116.394266,39.940629],[116.393346,39.957355],[116.38678,39.957014],[116.387658,39.96093],[116.390084,39.968406],[116.394162,39.969397],[116.394099,39.972858],[116.380903,39.972712],[116.380401,39.968178],[116.370384,39.967902],[116.371974,39.948594],[116.356206,39.944092],[116.352023,39.950854],[116.352421,39.943832],[116.341442,39.941979],[116.332889,39.944092],[116.327953,39.942369],[116.333056,39.938565],[116.334645,39.922664],[116.335356,39.898448],[116.337301,39.89739],[116.325799,39.896789]]]]}},{"type":"Feature","properties":{"adcode":110105,"name":"朝阳","center":[116.486409,39.921489],"centroid":[116.513687,39.951064],"childrenNum":0,"level":"district","parent":{"adcode":110000},"subFeatureIndex":2,"acroutes":[100000,110000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[116.595548,40.01751],[116.577814,40.027512],[116.578797,40.033097],[116.570474,40.032431],[116.564242,40.039655],[116.550753,40.045499],[116.54655,40.048956],[116.552761,40.05488],[116.551757,40.059765],[116.547784,40.062718],[116.543183,40.059408],[116.534379,40.066791],[116.525993,40.071334],[116.513948,40.070426],[116.506775,40.074352],[116.49933,40.080387],[116.486657,40.081036],[116.482935,40.083745],[116.473545,40.085562],[116.471015,40.08939],[116.466832,40.090185],[116.466247,40.08235],[116.461855,40.080825],[116.462608,40.076786],[116.458823,40.075796],[116.458635,40.070377],[116.462127,40.06731],[116.459408,40.059992],[116.45142,40.06129],[116.451629,40.058759],[116.442867,40.061323],[116.433268,40.06228],[116.415618,40.056],[116.409595,40.055626],[116.406124,40.049768],[116.408884,40.043291],[116.405266,40.038974],[116.395333,40.036766],[116.39297,40.041733],[116.390649,40.041279],[116.390251,40.036587],[116.395103,40.032854],[116.378708,40.031181],[116.350873,40.0267],[116.376554,39.992971],[116.381196,39.977976],[116.380903,39.972712],[116.394099,39.972858],[116.394162,39.969397],[116.390084,39.968406],[116.387658,39.96093],[116.389498,39.96314],[116.40788,39.962182],[116.407504,39.973995],[116.411101,39.97146],[116.411415,39.964928],[116.414196,39.962182],[116.424861,39.962279],[116.429002,39.957274],[116.429483,39.950155],[116.436698,39.949245],[116.435422,39.952121],[116.442239,39.9497],[116.440566,39.945295],[116.446338,39.946205],[116.443703,39.936663],[116.443682,39.928664],[116.434314,39.92868],[116.434983,39.913964],[116.436488,39.902042],[116.448722,39.903246],[116.446819,39.900042],[116.447154,39.894186],[116.450876,39.894088],[116.450939,39.890249],[116.444059,39.890038],[116.445648,39.879283],[116.44364,39.87284],[116.442971,39.866087],[116.446359,39.860862],[116.448178,39.863645],[116.454222,39.859381],[116.456062,39.86122],[116.463319,39.856224],[116.467794,39.856012],[116.460308,39.848622],[116.451148,39.852008],[116.450479,39.848704],[116.445983,39.848329],[116.446694,39.84426],[116.442323,39.843674],[116.440587,39.839653],[116.436739,39.841329],[116.432055,39.832929],[116.425217,39.831903],[116.430068,39.830112],[116.43699,39.830649],[116.436677,39.827425],[116.44592,39.826692],[116.443912,39.82096],[116.452737,39.823012],[116.462775,39.815945],[116.468463,39.814511],[116.474256,39.809772],[116.485256,39.81272],[116.485632,39.816889],[116.495357,39.818795],[116.498201,39.8157],[116.505813,39.817866],[116.502801,39.819006],[116.510142,39.821449],[116.510602,39.827637],[116.516164,39.829835],[116.525366,39.829754],[116.525868,39.826904],[116.534944,39.82482],[116.538143,39.828207],[116.533187,39.832733],[116.542681,39.830209],[116.543664,39.835078],[116.558596,39.834687],[116.569386,39.833498],[116.577145,39.830682],[116.577479,39.827539],[116.587015,39.828223],[116.583732,39.824917],[116.591595,39.823875],[116.59147,39.826367],[116.599228,39.825585],[116.598977,39.831659],[116.60224,39.831675],[116.601905,39.840727],[116.608367,39.846539],[116.604666,39.846132],[116.604185,39.850071],[116.613449,39.850185],[116.626958,39.860683],[116.619994,39.868951],[116.62493,39.87725],[116.624323,39.881155],[116.628987,39.881594],[116.627585,39.890477],[116.615603,39.889794],[116.61531,39.895503],[116.621019,39.898854],[116.623361,39.904271],[116.620245,39.90767],[116.623006,39.913818],[116.620956,39.923103],[116.630576,39.921672],[116.624156,39.929981],[116.6293,39.931314],[116.629677,39.938727],[116.633441,39.940906],[116.630492,39.946156],[116.632228,39.950545],[116.645277,39.945977],[116.643081,39.952983],[116.641827,39.969575],[116.639819,39.982606],[116.634026,39.981696],[116.63365,39.986197],[116.639129,39.986879],[116.640321,39.990177],[116.643751,39.989608],[116.642684,39.996755],[116.637582,40.002359],[116.63273,39.999825],[116.625766,40.003122],[116.628129,40.007653],[116.61989,40.011794],[116.60132,40.013873],[116.595548,40.01751]]],[[[116.603683,40.052949],[116.608409,40.054912],[116.603473,40.086811],[116.602909,40.093883],[116.598392,40.103874],[116.598705,40.09351],[116.595903,40.090218],[116.580365,40.088352],[116.578316,40.102739],[116.574071,40.107815],[116.574322,40.096138],[116.578149,40.076461],[116.581411,40.067846],[116.58139,40.073817],[116.586597,40.074336],[116.590131,40.056162],[116.587957,40.05053],[116.591198,40.051796],[116.591993,40.043129],[116.599814,40.041408],[116.599417,40.047171],[116.601633,40.047658],[116.598517,40.052543],[116.603683,40.052949]]]]}},{"type":"Feature","properties":{"adcode":110106,"name":"丰台","center":[116.286968,39.863642],"centroid":[116.250342,39.835716],"childrenNum":0,"level":"district","parent":{"adcode":110000},"subFeatureIndex":3,"acroutes":[100000,110000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[116.259089,39.896658],[116.252899,39.896382],[116.233534,39.89212],[116.234642,39.88955],[116.227783,39.889078],[116.22772,39.883839],[116.222952,39.883986],[116.219523,39.881334],[116.219105,39.876713],[116.210907,39.878079],[116.212099,39.874679],[116.208126,39.874125],[116.20457,39.879885],[116.199426,39.883286],[116.19035,39.881529],[116.179099,39.882684],[116.167033,39.888752],[116.163352,39.886881],[116.156137,39.889029],[116.150972,39.884051],[116.147605,39.885287],[116.13167,39.881268],[116.125898,39.877949],[116.119729,39.877477],[116.112242,39.873247],[116.105425,39.872547],[116.104149,39.868837],[116.095826,39.869032],[116.087169,39.866152],[116.078323,39.870318],[116.07046,39.868446],[116.067344,39.865761],[116.070188,39.860423],[116.070982,39.853717],[116.056553,39.85095],[116.05465,39.845953],[116.061488,39.841899],[116.068975,39.840792],[116.07619,39.837015],[116.078615,39.831593],[116.084366,39.828581],[116.085747,39.832163],[116.089741,39.829721],[116.088214,39.82692],[116.089594,39.816352],[116.086186,39.816401],[116.084826,39.811596],[116.087127,39.803289],[116.0856,39.795324],[116.091916,39.787927],[116.091581,39.784082],[116.094613,39.781557],[116.101368,39.78576],[116.107014,39.78532],[116.106366,39.788612],[116.119792,39.789654],[116.120754,39.784848],[116.125062,39.785353],[116.131503,39.783121],[116.132569,39.778624],[116.127467,39.779047],[116.124351,39.77675],[116.121486,39.779047],[116.117491,39.77336],[116.121465,39.761626],[116.12847,39.762409],[116.133803,39.76663],[116.148044,39.766483],[116.148902,39.768651],[116.15597,39.766923],[116.162704,39.769205],[116.16971,39.784278],[116.182989,39.783707],[116.183365,39.780204],[116.188008,39.781785],[116.194407,39.780579],[116.194449,39.778493],[116.200388,39.778151],[116.201852,39.788269],[116.201852,39.799657],[116.208063,39.806352],[116.207415,39.810814],[116.216762,39.816905],[116.214462,39.818974],[116.214127,39.824706],[116.227219,39.825048],[116.228306,39.827197],[116.23962,39.826872],[116.243007,39.825145],[116.244304,39.818567],[116.251644,39.81329],[116.25361,39.807231],[116.250933,39.801432],[116.251519,39.793059],[116.259298,39.797621],[116.262184,39.792782],[116.27423,39.796936],[116.287237,39.799103],[116.289182,39.795894],[116.296083,39.795568],[116.291148,39.793271],[116.295205,39.790958],[116.301541,39.774941],[116.307062,39.770085],[116.31068,39.772057],[116.317978,39.783447],[116.321784,39.783626],[116.322872,39.798386],[116.326824,39.798386],[116.328225,39.801416],[116.340124,39.802149],[116.341755,39.807589],[116.355704,39.805668],[116.356833,39.800471],[116.367039,39.79982],[116.368189,39.794819],[116.365742,39.794151],[116.367582,39.784962],[116.378478,39.785646],[116.379209,39.77939],[116.385609,39.778852],[116.390649,39.780465],[116.391903,39.765277],[116.398888,39.765864],[116.397905,39.781068],[116.396023,39.786738],[116.42024,39.787439],[116.421034,39.794134],[116.429274,39.794102],[116.429399,39.803583],[116.425719,39.805358],[116.422456,39.81044],[116.417772,39.81013],[116.415262,39.812525],[116.410013,39.811336],[116.41016,39.817052],[116.419759,39.815375],[116.418441,39.822915],[116.414426,39.824282],[116.415785,39.829428],[116.420072,39.826611],[116.425217,39.831903],[116.432055,39.832929],[116.436739,39.841329],[116.440587,39.839653],[116.442323,39.843674],[116.446694,39.84426],[116.445983,39.848329],[116.450479,39.848704],[116.451148,39.852008],[116.460308,39.848622],[116.467794,39.856012],[116.463319,39.856224],[116.456062,39.86122],[116.454222,39.859381],[116.448178,39.863645],[116.446359,39.860862],[116.442971,39.866087],[116.44364,39.87284],[116.442574,39.87188],[116.423209,39.872824],[116.413652,39.871148],[116.41589,39.863645],[116.41246,39.858942],[116.406856,39.859967],[116.3955,39.858682],[116.394956,39.862734],[116.387888,39.867372],[116.380632,39.866054],[116.38059,39.871148],[116.35058,39.86869],[116.349472,39.873588],[116.344286,39.873653],[116.341567,39.876159],[116.335273,39.875183],[116.326636,39.876859],[116.321324,39.875199],[116.320759,39.881512],[116.32582,39.891111],[116.325799,39.896789],[116.314026,39.896772],[116.302796,39.891925],[116.295016,39.886833],[116.294975,39.896496],[116.266199,39.896252],[116.259089,39.896658]]]]}},{"type":"Feature","properties":{"adcode":110107,"name":"石景山","center":[116.195445,39.914601],"centroid":[116.176229,39.933205],"childrenNum":0,"level":"district","parent":{"adcode":110000},"subFeatureIndex":4,"acroutes":[100000,110000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[116.167033,39.888752],[116.179099,39.882684],[116.19035,39.881529],[116.199426,39.883286],[116.20457,39.879885],[116.208126,39.874125],[116.212099,39.874679],[116.210907,39.878079],[116.219105,39.876713],[116.219523,39.881334],[116.222952,39.883986],[116.22772,39.883839],[116.227783,39.889078],[116.234642,39.88955],[116.233534,39.89212],[116.252899,39.896382],[116.259089,39.896658],[116.252983,39.896951],[116.252983,39.915558],[116.250975,39.919834],[116.237696,39.918452],[116.232426,39.91694],[116.230899,39.919525],[116.206787,39.916663],[116.207707,39.9259],[116.215696,39.927103],[116.213061,39.928891],[116.216198,39.931233],[116.213186,39.933232],[116.216281,39.936386],[116.215466,39.94375],[116.212831,39.948952],[116.20112,39.961109],[116.190747,39.965367],[116.190685,39.968259],[116.185812,39.970274],[116.18531,39.977976],[116.186586,39.983906],[116.178911,39.988292],[116.178012,39.982216],[116.171487,39.977001],[116.169229,39.979357],[116.166845,39.987561],[116.158124,39.984133],[116.156117,39.989137],[116.151579,39.993442],[116.144678,39.989186],[116.118934,39.986115],[116.113455,39.981518],[116.116592,39.971932],[116.122971,39.967561],[116.120712,39.96119],[116.115254,39.957745],[116.120043,39.950789],[116.114522,39.949196],[116.11195,39.942921],[116.119875,39.932761],[116.124769,39.934907],[116.127822,39.930338],[116.127341,39.926615],[116.13029,39.924518],[116.139282,39.922095],[116.146852,39.910077],[116.152792,39.906629],[116.153503,39.900985],[116.161094,39.896805],[116.167033,39.888752]]]]}},{"type":"Feature","properties":{"adcode":110108,"name":"海淀","center":[116.310316,39.956074],"centroid":[116.23328,40.026927],"childrenNum":0,"level":"district","parent":{"adcode":110000},"subFeatureIndex":5,"acroutes":[100000,110000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[116.325799,39.896789],[116.337301,39.89739],[116.335356,39.898448],[116.334645,39.922664],[116.333056,39.938565],[116.327953,39.942369],[116.332889,39.944092],[116.341442,39.941979],[116.352421,39.943832],[116.352023,39.950854],[116.356206,39.944092],[116.371974,39.948594],[116.370384,39.967902],[116.380401,39.968178],[116.380903,39.972712],[116.381196,39.977976],[116.376554,39.992971],[116.350873,40.0267],[116.378708,40.031181],[116.395103,40.032854],[116.390251,40.036587],[116.390649,40.041279],[116.38519,40.042853],[116.376888,40.042756],[116.376114,40.045466],[116.36959,40.04696],[116.367394,40.053436],[116.372999,40.054344],[116.372267,40.05785],[116.379272,40.059002],[116.382848,40.061582],[116.381928,40.066402],[116.373354,40.065623],[116.372538,40.06843],[116.363149,40.068965],[116.363023,40.065931],[116.357293,40.066012],[116.34667,40.063659],[116.346963,40.06043],[116.342676,40.059635],[116.343366,40.055448],[116.340271,40.055091],[116.338828,40.058921],[116.330756,40.063383],[116.331801,40.057168],[116.325946,40.054799],[116.318292,40.061663],[116.309446,40.060609],[116.305995,40.063043],[116.302942,40.060803],[116.290353,40.083145],[116.279897,40.079754],[116.2731,40.092699],[116.27333,40.09557],[116.265237,40.094694],[116.258273,40.101522],[116.263899,40.10402],[116.263334,40.110588],[116.258022,40.11195],[116.25957,40.106907],[116.255868,40.104474],[116.252732,40.106517],[116.245956,40.10535],[116.240498,40.108009],[116.243363,40.113279],[116.241836,40.118403],[116.245036,40.118825],[116.247043,40.136204],[116.233785,40.136577],[116.215445,40.143174],[116.212224,40.140548],[116.206285,40.143092],[116.205658,40.150175],[116.203211,40.153773],[116.202166,40.160984],[116.194282,40.160076],[116.192065,40.155669],[116.182696,40.158099],[116.183094,40.153335],[116.180417,40.14729],[116.174122,40.143595],[116.167681,40.141844],[116.168622,40.135442],[116.17178,40.127936],[116.167409,40.128455],[116.169563,40.124564],[116.152708,40.121776],[116.132925,40.121354],[116.132214,40.115079],[116.127676,40.116393],[116.113309,40.115598],[116.105864,40.118014],[116.102246,40.115987],[116.096056,40.121257],[116.089783,40.119327],[116.08445,40.120252],[116.077883,40.115047],[116.073847,40.115436],[116.072676,40.109258],[116.069456,40.104912],[116.062931,40.10282],[116.061969,40.09956],[116.055905,40.09643],[116.051848,40.091661],[116.048878,40.085303],[116.051325,40.084345],[116.054587,40.07823],[116.064019,40.073022],[116.064981,40.067456],[116.071129,40.062037],[116.068055,40.051926],[116.075123,40.039915],[116.078176,40.032756],[116.084241,40.030905],[116.095073,40.031782],[116.098398,40.033811],[116.105488,40.032204],[116.114522,40.033],[116.123598,40.029655],[116.129558,40.0311],[116.140098,40.02873],[116.149278,40.022154],[116.157309,40.021034],[116.163938,40.016796],[116.164774,40.014328],[116.175335,40.006403],[116.172115,40.000637],[116.161658,39.999987],[116.154527,39.997275],[116.151579,39.993442],[116.156117,39.989137],[116.158124,39.984133],[116.166845,39.987561],[116.169229,39.979357],[116.171487,39.977001],[116.178012,39.982216],[116.178911,39.988292],[116.186586,39.983906],[116.18531,39.977976],[116.185812,39.970274],[116.190685,39.968259],[116.190747,39.965367],[116.20112,39.961109],[116.212831,39.948952],[116.215466,39.94375],[116.216281,39.936386],[116.213186,39.933232],[116.216198,39.931233],[116.213061,39.928891],[116.215696,39.927103],[116.207707,39.9259],[116.206787,39.916663],[116.230899,39.919525],[116.232426,39.91694],[116.237696,39.918452],[116.250975,39.919834],[116.252983,39.915558],[116.252983,39.896951],[116.259089,39.896658],[116.266199,39.896252],[116.294975,39.896496],[116.295016,39.886833],[116.302796,39.891925],[116.314026,39.896772],[116.325799,39.896789]]]]}},{"type":"Feature","properties":{"adcode":110109,"name":"门头沟","center":[116.105381,39.937183],"centroid":[115.791698,39.994115],"childrenNum":0,"level":"district","parent":{"adcode":110000},"subFeatureIndex":6,"acroutes":[100000,110000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[116.151579,39.993442],[116.154527,39.997275],[116.161658,39.999987],[116.172115,40.000637],[116.175335,40.006403],[116.164774,40.014328],[116.163938,40.016796],[116.157309,40.021034],[116.149278,40.022154],[116.140098,40.02873],[116.129558,40.0311],[116.123598,40.029655],[116.114522,40.033],[116.105488,40.032204],[116.098398,40.033811],[116.095073,40.031782],[116.084241,40.030905],[116.078176,40.032756],[116.075123,40.039915],[116.068055,40.051926],[116.071129,40.062037],[116.064981,40.067456],[116.064019,40.073022],[116.054587,40.07823],[116.051325,40.084345],[116.048878,40.085303],[116.043775,40.083502],[116.037899,40.084524],[116.033926,40.079657],[116.030914,40.082188],[116.020856,40.074579],[116.007785,40.080614],[116.005129,40.079803],[115.99735,40.082074],[115.986434,40.083469],[115.979993,40.081669],[115.977232,40.079041],[115.968575,40.075488],[115.966588,40.084556],[115.960461,40.092456],[115.962092,40.094419],[115.962552,40.10235],[115.957449,40.100679],[115.956717,40.096041],[115.952681,40.10102],[115.943229,40.103339],[115.947913,40.107409],[115.933588,40.124824],[115.921438,40.134485],[115.906549,40.138181],[115.904457,40.136123],[115.900442,40.138716],[115.8816,40.139073],[115.874155,40.14387],[115.870768,40.144276],[115.865184,40.148635],[115.856547,40.147468],[115.853348,40.149332],[115.846384,40.147096],[115.834234,40.15024],[115.83576,40.145426],[115.829047,40.149981],[115.822272,40.152606],[115.806567,40.153254],[115.802091,40.156754],[115.789837,40.168939],[115.78693,40.170414],[115.787014,40.178708],[115.773023,40.176197],[115.768213,40.165553],[115.762212,40.16262],[115.754328,40.163252],[115.749539,40.152995],[115.75485,40.145459],[115.749246,40.137711],[115.741111,40.132216],[115.734126,40.129379],[115.724841,40.128812],[115.715891,40.133383],[115.708697,40.134291],[115.699746,40.132394],[115.704765,40.129655],[115.711039,40.128941],[115.712064,40.126899],[115.702172,40.128196],[115.697216,40.12672],[115.693096,40.131924],[115.68699,40.13053],[115.681197,40.13267],[115.678667,40.130935],[115.657734,40.128098],[115.654806,40.131276],[115.64458,40.126639],[115.641882,40.120819],[115.643722,40.117511],[115.635943,40.115793],[115.631468,40.117852],[115.625048,40.116295],[115.621388,40.118711],[115.616223,40.117138],[115.606979,40.120057],[115.599116,40.120008],[115.59485,40.116279],[115.594432,40.108982],[115.592403,40.110182],[115.590709,40.096397],[115.584038,40.094889],[115.578538,40.096365],[115.576196,40.100825],[115.567769,40.096543],[115.563419,40.097922],[115.553736,40.091661],[115.555472,40.082626],[115.552168,40.079252],[115.544263,40.07591],[115.537885,40.077775],[115.527324,40.076072],[115.514944,40.066937],[115.509695,40.065477],[115.510427,40.062913],[115.500954,40.052478],[115.488323,40.046132],[115.488992,40.043746],[115.478557,40.036165],[115.468414,40.031896],[115.460656,40.032172],[115.454528,40.029704],[115.452082,40.02079],[115.442169,40.010885],[115.442817,40.007345],[115.449196,40.001985],[115.450346,39.993247],[115.443905,39.994644],[115.436815,39.991427],[115.428513,39.984328],[115.427635,39.979471],[115.423411,39.969819],[115.426924,39.965302],[115.423745,39.955697],[115.42615,39.95035],[115.43577,39.950919],[115.438468,39.95256],[115.444595,39.951358],[115.447042,39.948806],[115.452312,39.948188],[115.456787,39.944271],[115.464462,39.940142],[115.472387,39.93876],[115.48069,39.93585],[115.487277,39.923835],[115.494994,39.917948],[115.50386,39.915818],[115.52013,39.902547],[115.523016,39.898919],[115.509026,39.884164],[115.51003,39.88148],[115.516659,39.880406],[115.526299,39.875655],[115.529185,39.875948],[115.527345,39.869862],[115.521929,39.868186],[115.522368,39.858779],[115.515948,39.847678],[115.510992,39.84509],[115.514505,39.83835],[115.526509,39.835241],[115.530482,39.829916],[115.534957,39.830714],[115.546396,39.825992],[115.548027,39.822703],[115.563461,39.816417],[115.569274,39.813274],[115.577367,39.812541],[115.587322,39.813762],[115.59117,39.818534],[115.596649,39.821498],[115.599325,39.829151],[115.604533,39.834443],[115.607586,39.84089],[115.613086,39.843755],[115.616369,39.857542],[115.621973,39.863271],[115.623103,39.866949],[115.630987,39.871977],[115.640021,39.871554],[115.644705,39.875964],[115.648867,39.875411],[115.654869,39.882505],[115.667541,39.883888],[115.671055,39.88597],[115.678144,39.886556],[115.682556,39.893047],[115.68929,39.896187],[115.691779,39.8997],[115.709178,39.905117],[115.719592,39.904612],[115.721621,39.906824],[115.731261,39.907865],[115.74889,39.9152],[115.749622,39.917655],[115.76148,39.920989],[115.769385,39.925233],[115.774257,39.920599],[115.792848,39.920859],[115.797344,39.92216],[115.806839,39.919656],[115.811084,39.913785],[115.8188,39.913948],[115.826914,39.910581],[115.835112,39.899586],[115.838772,39.900644],[115.845255,39.897049],[115.860897,39.901359],[115.868321,39.905572],[115.87311,39.912484],[115.87884,39.915964],[115.890112,39.917281],[115.903935,39.914029],[115.927858,39.914257],[115.935868,39.917753],[115.941159,39.917509],[115.945697,39.910972],[115.944965,39.901847],[115.935805,39.898236],[115.921856,39.884164],[115.92744,39.876192],[115.949837,39.871278],[115.954145,39.866786],[115.961318,39.867877],[115.967822,39.872059],[115.968742,39.867714],[115.976563,39.868251],[115.97627,39.870497],[115.990177,39.876338],[115.997245,39.875167],[115.992875,39.867356],[115.986789,39.864703],[115.98817,39.859837],[115.98428,39.849111],[115.991285,39.840222],[116.00789,39.849469],[116.016694,39.849225],[116.018367,39.841525],[116.021023,39.840662],[116.030308,39.843462],[116.033089,39.845904],[116.04181,39.844878],[116.045825,39.84732],[116.05465,39.845953],[116.056553,39.85095],[116.070982,39.853717],[116.070188,39.860423],[116.067344,39.865761],[116.07046,39.868446],[116.078323,39.870318],[116.087169,39.866152],[116.095826,39.869032],[116.104149,39.868837],[116.105425,39.872547],[116.112242,39.873247],[116.119729,39.877477],[116.125898,39.877949],[116.13167,39.881268],[116.147605,39.885287],[116.150972,39.884051],[116.156137,39.889029],[116.163352,39.886881],[116.167033,39.888752],[116.161094,39.896805],[116.153503,39.900985],[116.152792,39.906629],[116.146852,39.910077],[116.139282,39.922095],[116.13029,39.924518],[116.127341,39.926615],[116.127822,39.930338],[116.124769,39.934907],[116.119875,39.932761],[116.11195,39.942921],[116.114522,39.949196],[116.120043,39.950789],[116.115254,39.957745],[116.120712,39.96119],[116.122971,39.967561],[116.116592,39.971932],[116.113455,39.981518],[116.118934,39.986115],[116.144678,39.989186],[116.151579,39.993442]]]]}},{"type":"Feature","properties":{"adcode":110111,"name":"房山","center":[116.139157,39.735535],"centroid":[115.853966,39.719216],"childrenNum":0,"level":"district","parent":{"adcode":110000},"subFeatureIndex":7,"acroutes":[100000,110000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[116.05465,39.845953],[116.045825,39.84732],[116.04181,39.844878],[116.033089,39.845904],[116.030308,39.843462],[116.021023,39.840662],[116.018367,39.841525],[116.016694,39.849225],[116.00789,39.849469],[115.991285,39.840222],[115.98428,39.849111],[115.98817,39.859837],[115.986789,39.864703],[115.992875,39.867356],[115.997245,39.875167],[115.990177,39.876338],[115.97627,39.870497],[115.976563,39.868251],[115.968742,39.867714],[115.967822,39.872059],[115.961318,39.867877],[115.954145,39.866786],[115.949837,39.871278],[115.92744,39.876192],[115.921856,39.884164],[115.935805,39.898236],[115.944965,39.901847],[115.945697,39.910972],[115.941159,39.917509],[115.935868,39.917753],[115.927858,39.914257],[115.903935,39.914029],[115.890112,39.917281],[115.87884,39.915964],[115.87311,39.912484],[115.868321,39.905572],[115.860897,39.901359],[115.845255,39.897049],[115.838772,39.900644],[115.835112,39.899586],[115.826914,39.910581],[115.8188,39.913948],[115.811084,39.913785],[115.806839,39.919656],[115.797344,39.92216],[115.792848,39.920859],[115.774257,39.920599],[115.769385,39.925233],[115.76148,39.920989],[115.749622,39.917655],[115.74889,39.9152],[115.731261,39.907865],[115.721621,39.906824],[115.719592,39.904612],[115.709178,39.905117],[115.691779,39.8997],[115.68929,39.896187],[115.682556,39.893047],[115.678144,39.886556],[115.671055,39.88597],[115.667541,39.883888],[115.654869,39.882505],[115.648867,39.875411],[115.644705,39.875964],[115.640021,39.871554],[115.630987,39.871977],[115.623103,39.866949],[115.621973,39.863271],[115.616369,39.857542],[115.613086,39.843755],[115.607586,39.84089],[115.604533,39.834443],[115.599325,39.829151],[115.596649,39.821498],[115.59117,39.818534],[115.587322,39.813762],[115.577367,39.812541],[115.569274,39.813274],[115.566367,39.809788],[115.566577,39.804609],[115.56229,39.803713],[115.554866,39.795601],[115.539432,39.794754],[115.536275,39.792131],[115.513815,39.788693],[115.508712,39.784082],[115.497336,39.791088],[115.49238,39.796057],[115.483241,39.798679],[115.475859,39.791821],[115.45777,39.782143],[115.452751,39.781964],[115.443382,39.785646],[115.434076,39.782274],[115.431169,39.775756],[115.425209,39.77336],[115.427029,39.769775],[115.430918,39.772073],[115.435414,39.769938],[115.434411,39.763859],[115.439158,39.752678],[115.457728,39.744918],[115.46672,39.740451],[115.470568,39.742391],[115.482321,39.742473],[115.492108,39.73887],[115.488866,39.733163],[115.491229,39.714719],[115.493404,39.707494],[115.490247,39.701409],[115.492631,39.701719],[115.49926,39.696189],[115.499783,39.691278],[115.496395,39.685665],[115.494408,39.686481],[115.488783,39.681619],[115.489724,39.678012],[115.486733,39.673362],[115.491334,39.668694],[115.482593,39.66303],[115.477971,39.654216],[115.478515,39.650331],[115.494659,39.649237],[115.496771,39.652551],[115.506705,39.652127],[115.511493,39.644388],[115.515864,39.641237],[115.522452,39.639964],[115.520423,39.633416],[115.521699,39.622311],[115.523414,39.620384],[115.514358,39.613508],[115.512121,39.605129],[115.515948,39.591193],[115.518834,39.593072],[115.518311,39.597156],[115.524229,39.598937],[115.530586,39.602874],[115.533891,39.608608],[115.533263,39.611434],[115.539119,39.616285],[115.545978,39.618751],[115.551875,39.614064],[115.55451,39.609408],[115.564569,39.605619],[115.567267,39.599623],[115.573875,39.596552],[115.571867,39.591569],[115.586109,39.589412],[115.592445,39.59665],[115.598719,39.597761],[115.599785,39.600865],[115.605285,39.600032],[115.6125,39.601126],[115.618439,39.604067],[115.625947,39.599394],[115.632555,39.597695],[115.634688,39.603871],[115.641589,39.603332],[115.643576,39.598937],[115.650268,39.600996],[115.657273,39.600081],[115.665304,39.605325],[115.667583,39.609637],[115.667479,39.615256],[115.673271,39.608526],[115.685317,39.603675],[115.68929,39.599035],[115.689269,39.592941],[115.694226,39.587778],[115.693431,39.580327],[115.697906,39.579248],[115.698596,39.570586],[115.694393,39.56941],[115.692072,39.565781],[115.698722,39.563248],[115.710161,39.563019],[115.717104,39.560403],[115.72022,39.554747],[115.7216,39.543499],[115.726953,39.543908],[115.726765,39.548143],[115.739124,39.545363],[115.73879,39.539314],[115.741487,39.536289],[115.743934,39.526771],[115.752508,39.515453],[115.759451,39.513916],[115.765328,39.514848],[115.768736,39.508878],[115.770828,39.510971],[115.767419,39.515862],[115.776537,39.512722],[115.777917,39.513834],[115.785006,39.51035],[115.792681,39.510742],[115.821456,39.509499],[115.828692,39.507045],[115.829487,39.512885],[115.822146,39.514145],[115.819762,39.518528],[115.824447,39.518774],[115.824112,39.522405],[115.819804,39.524923],[115.819219,39.530762],[115.822753,39.530533],[115.824321,39.534212],[115.828399,39.535455],[115.828692,39.541309],[115.84216,39.54157],[115.846028,39.543287],[115.847555,39.550284],[115.851361,39.550448],[115.855481,39.554993],[115.862026,39.548551],[115.866041,39.549843],[115.866355,39.546361],[115.872315,39.546099],[115.873298,39.548829],[115.88296,39.54811],[115.883587,39.551102],[115.887686,39.55066],[115.888752,39.555614],[115.89306,39.556219],[115.893416,39.561875],[115.890028,39.567873],[115.896009,39.569916],[115.907866,39.566876],[115.91276,39.572842],[115.911777,39.574182],[115.915604,39.582958],[115.908744,39.58402],[115.909665,39.588284],[115.9068,39.590016],[115.910187,39.600832],[115.912488,39.599149],[115.923759,39.597287],[115.924178,39.59384],[115.930221,39.593382],[115.929991,39.589935],[115.934174,39.588072],[115.934969,39.581814],[115.938105,39.581699],[115.937938,39.577467],[115.943187,39.577385],[115.943083,39.574672],[115.949147,39.573299],[115.950423,39.56637],[115.954982,39.566092],[115.957554,39.560927],[115.963409,39.565503],[115.967592,39.564604],[115.968909,39.570995],[115.974576,39.570832],[115.978153,39.572842],[115.977086,39.590931],[115.978445,39.595686],[115.990993,39.593791],[115.990721,39.586471],[115.996953,39.583203],[115.995196,39.577075],[116.007618,39.577205],[116.010588,39.583023],[116.013703,39.583039],[116.014038,39.588072],[116.020667,39.585981],[116.02623,39.587402],[116.024766,39.575604],[116.032859,39.574607],[116.032964,39.572302],[116.039237,39.571943],[116.098817,39.575146],[116.102016,39.576143],[116.101368,39.580049],[116.105801,39.576568],[116.106282,39.570979],[116.11379,39.570668],[116.116634,39.574002],[116.121465,39.574917],[116.121528,39.570554],[116.130311,39.569459],[116.130373,39.567743],[116.138425,39.568887],[116.13878,39.571044],[116.149613,39.573087],[116.151788,39.583415],[116.165527,39.583562],[116.176924,39.585899],[116.177071,39.590016],[116.184432,39.590915],[116.190768,39.589396],[116.19058,39.587386],[116.196854,39.588987],[116.196394,39.586095],[116.201726,39.586373],[116.206243,39.583219],[116.208105,39.577728],[116.221175,39.578921],[116.225085,39.584085],[116.226089,39.591993],[116.222597,39.593938],[116.223141,39.597222],[116.21808,39.608102],[116.219502,39.618931],[116.218875,39.628011],[116.215487,39.64305],[116.216992,39.651572],[116.223162,39.664728],[116.221342,39.667486],[116.22565,39.67359],[116.221238,39.678453],[116.230941,39.692355],[116.23435,39.703823],[116.231945,39.706025],[116.236629,39.71286],[116.245036,39.718421],[116.245768,39.72408],[116.248466,39.728027],[116.248026,39.732641],[116.243948,39.741658],[116.251895,39.749092],[116.252481,39.758676],[116.254426,39.76324],[116.252481,39.771747],[116.253777,39.77952],[116.251602,39.782518],[116.251519,39.793059],[116.250933,39.801432],[116.25361,39.807231],[116.251644,39.81329],[116.244304,39.818567],[116.243007,39.825145],[116.23962,39.826872],[116.228306,39.827197],[116.227219,39.825048],[116.214127,39.824706],[116.214462,39.818974],[116.216762,39.816905],[116.207415,39.810814],[116.208063,39.806352],[116.201852,39.799657],[116.201852,39.788269],[116.200388,39.778151],[116.194449,39.778493],[116.194407,39.780579],[116.188008,39.781785],[116.183365,39.780204],[116.182989,39.783707],[116.16971,39.784278],[116.162704,39.769205],[116.15597,39.766923],[116.148902,39.768651],[116.148044,39.766483],[116.133803,39.76663],[116.12847,39.762409],[116.121465,39.761626],[116.117491,39.77336],[116.121486,39.779047],[116.124351,39.77675],[116.127467,39.779047],[116.132569,39.778624],[116.131503,39.783121],[116.125062,39.785353],[116.120754,39.784848],[116.119792,39.789654],[116.106366,39.788612],[116.107014,39.78532],[116.101368,39.78576],[116.094613,39.781557],[116.091581,39.784082],[116.091916,39.787927],[116.0856,39.795324],[116.087127,39.803289],[116.084826,39.811596],[116.086186,39.816401],[116.089594,39.816352],[116.088214,39.82692],[116.089741,39.829721],[116.085747,39.832163],[116.084366,39.828581],[116.078615,39.831593],[116.07619,39.837015],[116.068975,39.840792],[116.061488,39.841899],[116.05465,39.845953]]]]}},{"type":"Feature","properties":{"adcode":110112,"name":"通州","center":[116.658603,39.902486],"centroid":[116.733003,39.803506],"childrenNum":0,"level":"district","parent":{"adcode":110000},"subFeatureIndex":8,"acroutes":[100000,110000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[116.725518,39.624075],[116.730202,39.622932],[116.730516,39.619143],[116.737877,39.61537],[116.744004,39.616824],[116.748689,39.619943],[116.762616,39.613819],[116.774202,39.605439],[116.774892,39.599166],[116.778196,39.593382],[116.785055,39.593497],[116.785474,39.596209],[116.790702,39.596045],[116.789384,39.602596],[116.792835,39.602155],[116.790012,39.610535],[116.802078,39.6123],[116.809711,39.614521],[116.81954,39.618996],[116.823994,39.617183],[116.82504,39.613884],[116.835391,39.617004],[116.834116,39.621495],[116.838445,39.62223],[116.826357,39.633122],[116.82893,39.635163],[116.826901,39.638217],[116.834555,39.641841],[116.833572,39.644127],[116.840766,39.644241],[116.839135,39.647523],[116.85141,39.652845],[116.849946,39.667552],[116.860486,39.667258],[116.863979,39.670391],[116.87318,39.671387],[116.883239,39.675352],[116.891144,39.67408],[116.906661,39.677425],[116.905197,39.681651],[116.909024,39.682859],[116.902896,39.690576],[116.88991,39.687656],[116.887819,39.690952],[116.89336,39.693187],[116.893841,39.695879],[116.886376,39.707004],[116.887108,39.714311],[116.8828,39.71847],[116.887589,39.725515],[116.89976,39.726168],[116.90229,39.729413],[116.911533,39.731516],[116.916678,39.731353],[116.916364,39.73587],[116.912934,39.73569],[116.910718,39.740989],[116.914461,39.741755],[116.913185,39.745962],[116.907163,39.75597],[116.901558,39.755204],[116.901809,39.763615],[116.908292,39.766711],[116.910613,39.762278],[116.920902,39.769107],[116.91649,39.775935],[116.921718,39.780628],[116.933784,39.781801],[116.939284,39.781361],[116.945788,39.777369],[116.94974,39.778542],[116.948004,39.785369],[116.953797,39.78607],[116.950828,39.791528],[116.938301,39.793124],[116.934809,39.801139],[116.942881,39.801677],[116.92979,39.811368],[116.92818,39.814153],[116.92887,39.820912],[116.9259,39.835403],[116.917431,39.846913],[116.910383,39.850608],[116.902813,39.848248],[116.902896,39.841346],[116.907581,39.834117],[116.903357,39.830682],[116.897501,39.832587],[116.885665,39.844585],[116.878304,39.84522],[116.878638,39.842257],[116.871507,39.842062],[116.866049,39.843902],[116.865505,39.846913],[116.85829,39.84846],[116.85254,39.859056],[116.847249,39.858616],[116.839407,39.865777],[116.836897,39.864736],[116.827277,39.877071],[116.823681,39.879137],[116.817009,39.878649],[116.81312,39.881301],[116.812304,39.889712],[116.80831,39.889631],[116.808247,39.884913],[116.804253,39.88488],[116.804148,39.877933],[116.794738,39.881252],[116.787084,39.886833],[116.7847,39.89142],[116.78424,39.902221],[116.78217,39.910419],[116.782358,39.928273],[116.78332,39.936045],[116.782567,39.947554],[116.78058,39.949716],[116.762826,39.956006],[116.757326,39.961483],[116.759605,39.969933],[116.766443,39.976351],[116.766757,39.982281],[116.775373,39.992759],[116.775749,40.002943],[116.770459,40.011632],[116.771755,40.014474],[116.764791,40.016049],[116.75329,40.015919],[116.751763,40.019962],[116.747037,40.021976],[116.747058,40.025385],[116.737145,40.02761],[116.732335,40.025109],[116.732043,40.022219],[116.724828,40.024265],[116.724221,40.021278],[116.719725,40.022512],[116.717383,40.019605],[116.716337,40.023762],[116.708621,40.026587],[116.703936,40.020141],[116.697244,40.016098],[116.685575,40.016569],[116.688378,40.00918],[116.686286,40.00827],[116.683777,40.014458],[116.678465,40.015058],[116.668615,40.013938],[116.664705,40.019037],[116.660125,40.021651],[116.655629,40.018566],[116.651676,40.021911],[116.651195,40.025759],[116.636159,40.019703],[116.633504,40.023664],[116.627063,40.021505],[116.624239,40.023664],[116.620099,40.022512],[116.619388,40.026733],[116.614139,40.028178],[116.614055,40.03175],[116.610061,40.031214],[116.602762,40.028503],[116.600839,40.018858],[116.595548,40.01751],[116.60132,40.013873],[116.61989,40.011794],[116.628129,40.007653],[116.625766,40.003122],[116.63273,39.999825],[116.637582,40.002359],[116.642684,39.996755],[116.643751,39.989608],[116.640321,39.990177],[116.639129,39.986879],[116.63365,39.986197],[116.634026,39.981696],[116.639819,39.982606],[116.641827,39.969575],[116.643081,39.952983],[116.645277,39.945977],[116.632228,39.950545],[116.630492,39.946156],[116.633441,39.940906],[116.629677,39.938727],[116.6293,39.931314],[116.624156,39.929981],[116.630576,39.921672],[116.620956,39.923103],[116.623006,39.913818],[116.620245,39.90767],[116.623361,39.904271],[116.621019,39.898854],[116.61531,39.895503],[116.615603,39.889794],[116.627585,39.890477],[116.628987,39.881594],[116.624323,39.881155],[116.62493,39.87725],[116.619994,39.868951],[116.626958,39.860683],[116.613449,39.850185],[116.604185,39.850071],[116.604666,39.846132],[116.608367,39.846539],[116.601905,39.840727],[116.60224,39.831675],[116.598977,39.831659],[116.599228,39.825585],[116.59147,39.826367],[116.591595,39.823875],[116.583732,39.824917],[116.587015,39.828223],[116.577479,39.827539],[116.577145,39.830682],[116.569386,39.833498],[116.558596,39.834687],[116.543664,39.835078],[116.542681,39.830209],[116.533187,39.832733],[116.538143,39.828207],[116.534944,39.82482],[116.539586,39.821563],[116.533375,39.819658],[116.540527,39.811857],[116.541678,39.803159],[116.535111,39.800146],[116.537537,39.796676],[116.530929,39.79174],[116.532894,39.786542],[116.538081,39.78128],[116.530092,39.778836],[116.536136,39.769873],[116.544647,39.772301],[116.545797,39.768732],[116.536491,39.768406],[116.539879,39.766255],[116.540423,39.761072],[116.528294,39.761463],[116.52363,39.769922],[116.520075,39.765782],[116.525178,39.762392],[116.523003,39.749678],[116.531159,39.747559],[116.527562,39.743304],[116.53624,39.740663],[116.537997,39.738071],[116.532413,39.73962],[116.531849,39.730016],[116.53783,39.728043],[116.536972,39.72152],[116.534609,39.718079],[116.52936,39.719808],[116.527332,39.716578],[116.53256,39.71529],[116.530552,39.713268],[116.535676,39.711881],[116.544961,39.715045],[116.573276,39.714507],[116.573464,39.709125],[116.579884,39.710234],[116.581202,39.712517],[116.590152,39.713349],[116.590194,39.711522],[116.598371,39.711963],[116.604017,39.714752],[116.604561,39.718731],[116.609141,39.719367],[116.616251,39.725581],[116.621876,39.725825],[116.621646,39.728076],[116.628129,39.727749],[116.631203,39.722971],[116.637623,39.723934],[116.638502,39.717166],[116.644587,39.709647],[116.652994,39.708619],[116.653098,39.703823],[116.647912,39.703579],[116.64626,39.700447],[116.647097,39.694786],[116.651509,39.694459],[116.651321,39.687868],[116.658097,39.686155],[116.65818,39.68857],[116.666566,39.687101],[116.669577,39.683642],[116.666022,39.679693],[116.668574,39.674602],[116.675203,39.676234],[116.680786,39.674896],[116.685554,39.676886],[116.692706,39.676789],[116.693543,39.674944],[116.703769,39.674145],[116.704857,39.667192],[116.702138,39.657644],[116.702891,39.649923],[116.70609,39.642903],[116.710419,39.639686],[116.716003,39.640356],[116.723489,39.639033],[116.721398,39.629415],[116.725518,39.624075]]]]}},{"type":"Feature","properties":{"adcode":110113,"name":"顺义","center":[116.653525,40.128936],"centroid":[116.726467,40.152366],"childrenNum":0,"level":"district","parent":{"adcode":110000},"subFeatureIndex":9,"acroutes":[100000,110000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[116.771755,40.014474],[116.777485,40.027204],[116.77782,40.032448],[116.781542,40.034818],[116.790221,40.034477],[116.789531,40.032318],[116.800259,40.028844],[116.803375,40.032155],[116.815295,40.030905],[116.82,40.028357],[116.820816,40.038779],[116.823158,40.039834],[116.822739,40.046473],[116.831732,40.048485],[116.831502,40.051196],[116.849486,40.051926],[116.850197,40.054977],[116.857809,40.051894],[116.867826,40.041863],[116.873619,40.041522],[116.88075,40.046164],[116.890265,40.04597],[116.90137,40.047723],[116.906431,40.051423],[116.914252,40.052592],[116.917974,40.044704],[116.924164,40.047463],[116.928096,40.054929],[116.931693,40.052024],[116.938824,40.050887],[116.937632,40.046911],[116.945014,40.048631],[116.945265,40.041425],[116.961932,40.051358],[116.962288,40.063529],[116.970652,40.063805],[116.973476,40.066304],[116.978599,40.064893],[116.980816,40.071188],[116.982844,40.070685],[116.986274,40.078359],[116.981192,40.08149],[116.981862,40.089828],[116.979938,40.093867],[116.975462,40.095051],[116.967976,40.101214],[116.973329,40.103712],[116.976069,40.111188],[116.971301,40.114009],[116.969189,40.118776],[116.971594,40.124224],[116.96578,40.127823],[116.967829,40.129849],[116.970025,40.140321],[116.977763,40.151374],[116.972054,40.156301],[116.968749,40.163495],[116.961242,40.171937],[116.962037,40.175549],[116.951371,40.174788],[116.945349,40.1813],[116.945809,40.186224],[116.94997,40.186354],[116.945913,40.193141],[116.939556,40.192347],[116.930898,40.207084],[116.929685,40.211585],[116.938029,40.210549],[116.940978,40.223922],[116.935206,40.229847],[116.931065,40.230624],[116.92544,40.225768],[116.922031,40.220134],[116.915507,40.222271],[116.913917,40.220118],[116.908606,40.222401],[116.906598,40.228682],[116.900701,40.228763],[116.893946,40.233457],[116.901746,40.23684],[116.894343,40.240028],[116.892252,40.245709],[116.886585,40.251907],[116.886104,40.255256],[116.881273,40.259221],[116.879893,40.264139],[116.874247,40.268281],[116.876338,40.274348],[116.871737,40.281481],[116.871319,40.290943],[116.859462,40.290878],[116.857182,40.2929],[116.854547,40.303152],[116.848984,40.311204],[116.838382,40.310185],[116.828992,40.304413],[116.830101,40.299206],[116.827215,40.298333],[116.82458,40.290991],[116.825123,40.285347],[116.811823,40.282387],[116.809607,40.28601],[116.800572,40.289196],[116.794487,40.287417],[116.788025,40.289439],[116.787795,40.281449],[116.784073,40.279443],[116.782964,40.273248],[116.773512,40.269527],[116.771651,40.266501],[116.768597,40.270109],[116.762658,40.269058],[116.752788,40.275512],[116.74298,40.279087],[116.738337,40.278764],[116.741098,40.283001],[116.738965,40.284101],[116.738421,40.284392],[116.710837,40.256227],[116.704668,40.257101],[116.704585,40.251551],[116.696554,40.248072],[116.697265,40.243216],[116.69072,40.240886],[116.684007,40.234282],[116.678131,40.234379],[116.676311,40.238604],[116.670247,40.234865],[116.668783,40.238539],[116.673321,40.246777],[116.669494,40.253153],[116.666901,40.262085],[116.648519,40.260143],[116.643081,40.25715],[116.641492,40.259463],[116.637038,40.25846],[116.63526,40.261454],[116.623654,40.26058],[116.6238,40.252667],[116.622044,40.250467],[116.61324,40.251761],[116.603787,40.251324],[116.604624,40.256146],[116.600755,40.258978],[116.599647,40.265385],[116.590842,40.264139],[116.588396,40.269462],[116.585238,40.266226],[116.58254,40.268362],[116.570202,40.268863],[116.570516,40.273102],[116.565371,40.273377],[116.566187,40.27802],[116.552176,40.27383],[116.546236,40.276224],[116.540904,40.274946],[116.53693,40.277178],[116.540088,40.267165],[116.535717,40.261373],[116.526181,40.261324],[116.523965,40.257522],[116.509201,40.258056],[116.505959,40.261356],[116.503011,40.25969],[116.501024,40.251599],[116.493705,40.251179],[116.482098,40.245385],[116.481094,40.238248],[116.483771,40.225185],[116.477979,40.225201],[116.473712,40.221203],[116.472249,40.205092],[116.484503,40.196493],[116.488016,40.191796],[116.487975,40.184686],[116.490129,40.181316],[116.485151,40.176764],[116.483332,40.171742],[116.480802,40.171937],[116.476912,40.163576],[116.477916,40.159979],[116.484629,40.160465],[116.492303,40.156981],[116.490777,40.148992],[116.480781,40.14742],[116.482307,40.140629],[116.484754,40.140078],[116.487222,40.124678],[116.492199,40.111561],[116.489292,40.101668],[116.480885,40.096965],[116.473357,40.097516],[116.466498,40.094954],[116.466832,40.090185],[116.471015,40.08939],[116.473545,40.085562],[116.482935,40.083745],[116.486657,40.081036],[116.49933,40.080387],[116.506775,40.074352],[116.513948,40.070426],[116.525993,40.071334],[116.534379,40.066791],[116.543183,40.059408],[116.547784,40.062718],[116.551757,40.059765],[116.578149,40.076461],[116.574322,40.096138],[116.574071,40.107815],[116.578316,40.102739],[116.580365,40.088352],[116.595903,40.090218],[116.598705,40.09351],[116.598392,40.103874],[116.602909,40.093883],[116.603473,40.086811],[116.608409,40.054912],[116.603683,40.052949],[116.610061,40.031214],[116.614055,40.03175],[116.614139,40.028178],[116.619388,40.026733],[116.620099,40.022512],[116.624239,40.023664],[116.627063,40.021505],[116.633504,40.023664],[116.636159,40.019703],[116.651195,40.025759],[116.651676,40.021911],[116.655629,40.018566],[116.660125,40.021651],[116.664705,40.019037],[116.668615,40.013938],[116.678465,40.015058],[116.683777,40.014458],[116.686286,40.00827],[116.688378,40.00918],[116.685575,40.016569],[116.697244,40.016098],[116.703936,40.020141],[116.708621,40.026587],[116.716337,40.023762],[116.717383,40.019605],[116.719725,40.022512],[116.724221,40.021278],[116.724828,40.024265],[116.732043,40.022219],[116.732335,40.025109],[116.737145,40.02761],[116.747058,40.025385],[116.747037,40.021976],[116.751763,40.019962],[116.75329,40.015919],[116.764791,40.016049],[116.771755,40.014474]]],[[[116.578149,40.076461],[116.551757,40.059765],[116.552761,40.05488],[116.54655,40.048956],[116.550753,40.045499],[116.564242,40.039655],[116.570474,40.032431],[116.578797,40.033097],[116.577814,40.027512],[116.595548,40.01751],[116.600839,40.018858],[116.602762,40.028503],[116.610061,40.031214],[116.603683,40.052949],[116.598517,40.052543],[116.601633,40.047658],[116.599417,40.047171],[116.599814,40.041408],[116.591993,40.043129],[116.591198,40.051796],[116.587957,40.05053],[116.590131,40.056162],[116.586597,40.074336],[116.58139,40.073817],[116.581411,40.067846],[116.578149,40.076461]]]]}},{"type":"Feature","properties":{"adcode":110114,"name":"昌平","center":[116.235906,40.218085],"centroid":[116.210616,40.215484],"childrenNum":0,"level":"district","parent":{"adcode":110000},"subFeatureIndex":10,"acroutes":[100000,110000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[116.390649,40.041279],[116.39297,40.041733],[116.395333,40.036766],[116.405266,40.038974],[116.408884,40.043291],[116.406124,40.049768],[116.409595,40.055626],[116.415618,40.056],[116.433268,40.06228],[116.442867,40.061323],[116.451629,40.058759],[116.45142,40.06129],[116.459408,40.059992],[116.462127,40.06731],[116.458635,40.070377],[116.458823,40.075796],[116.462608,40.076786],[116.461855,40.080825],[116.466247,40.08235],[116.466832,40.090185],[116.466498,40.094954],[116.473357,40.097516],[116.480885,40.096965],[116.489292,40.101668],[116.492199,40.111561],[116.487222,40.124678],[116.484754,40.140078],[116.482307,40.140629],[116.480781,40.14742],[116.490777,40.148992],[116.492303,40.156981],[116.484629,40.160465],[116.477916,40.159979],[116.476912,40.163576],[116.480802,40.171937],[116.483332,40.171742],[116.485151,40.176764],[116.490129,40.181316],[116.487975,40.184686],[116.488016,40.191796],[116.484503,40.196493],[116.472249,40.205092],[116.473712,40.221203],[116.477979,40.225201],[116.483771,40.225185],[116.481094,40.238248],[116.482098,40.245385],[116.493705,40.251179],[116.501024,40.251599],[116.503011,40.25969],[116.505959,40.261356],[116.501839,40.262974],[116.493245,40.262489],[116.484273,40.267634],[116.484001,40.2759],[116.478794,40.280025],[116.472081,40.280122],[116.469634,40.283001],[116.460308,40.28711],[116.45533,40.284845],[116.449412,40.286722],[116.45096,40.293045],[116.448011,40.300484],[116.443766,40.302457],[116.44822,40.305982],[116.455184,40.316345],[116.449182,40.32113],[116.443745,40.322682],[116.438245,40.333221],[116.43423,40.329116],[116.427914,40.329213],[116.424359,40.331265],[116.417061,40.329843],[116.408989,40.333205],[116.408633,40.334886],[116.396358,40.334853],[116.391422,40.338393],[116.384563,40.339055],[116.375069,40.337375],[116.376135,40.334352],[116.365909,40.331702],[116.368231,40.334805],[116.369903,40.342401],[116.364508,40.349107],[116.367101,40.350351],[116.369673,40.356362],[116.363923,40.359028],[116.355641,40.356814],[116.348866,40.356427],[116.352797,40.364391],[116.357356,40.364084],[116.360033,40.366815],[116.355369,40.37137],[116.34506,40.373163],[116.337364,40.379769],[116.32398,40.387295],[116.32078,40.386859],[116.313106,40.389459],[116.302691,40.387473],[116.295581,40.384437],[116.293762,40.392415],[116.289872,40.391672],[116.290729,40.383177],[116.282845,40.375263],[116.270863,40.382693],[116.261264,40.380561],[116.258336,40.383193],[116.25338,40.381239],[116.252104,40.376297],[116.247796,40.374471],[116.24353,40.379818],[116.241962,40.377508],[116.23665,40.377427],[116.23184,40.374988],[116.226989,40.38111],[116.222221,40.382111],[116.211451,40.381756],[116.209129,40.376232],[116.192985,40.372775],[116.180354,40.367687],[116.177154,40.370934],[116.170713,40.369351],[116.168789,40.366718],[116.159295,40.366265],[116.148233,40.361807],[116.148651,40.35696],[116.145514,40.351046],[116.1507,40.349252],[116.155677,40.344906],[116.152603,40.337714],[116.144719,40.336631],[116.147543,40.340655],[116.144782,40.348541],[116.138404,40.345229],[116.140809,40.343047],[116.137567,40.340769],[116.137651,40.336534],[116.143904,40.336082],[116.13809,40.330974],[116.138383,40.324671],[116.141959,40.316879],[116.132737,40.31198],[116.122385,40.312805],[116.116237,40.321955],[116.116634,40.323668],[116.110381,40.330813],[116.102978,40.331524],[116.098649,40.330005],[116.086353,40.330813],[116.083342,40.33571],[116.077716,40.339346],[116.073429,40.339831],[116.06841,40.336971],[116.061802,40.336809],[116.053353,40.326853],[116.056971,40.322181],[116.051116,40.315812],[116.042479,40.316846],[116.040095,40.312724],[116.031144,40.312352],[116.026167,40.320484],[116.026481,40.324283],[116.01684,40.33466],[116.007597,40.33314],[115.999065,40.325463],[115.993398,40.328986],[115.982711,40.324202],[115.979658,40.320532],[115.973259,40.318997],[115.976417,40.311511],[115.975538,40.308698],[115.987919,40.303799],[115.990323,40.299498],[115.982732,40.297977],[115.978675,40.289633],[115.981227,40.28525],[115.978822,40.281627],[115.981812,40.276903],[115.976396,40.270983],[115.967006,40.265612],[115.968888,40.264269],[115.965605,40.259415],[115.960001,40.256648],[115.950276,40.256163],[115.942706,40.253557],[115.935826,40.25558],[115.916984,40.247068],[115.916628,40.242391],[115.911965,40.234477],[115.906695,40.23412],[115.898079,40.236419],[115.898476,40.234509],[115.891994,40.228147],[115.891366,40.225379],[115.883106,40.216119],[115.885072,40.212039],[115.883169,40.209594],[115.886326,40.206663],[115.877313,40.200849],[115.87633,40.193918],[115.873695,40.192687],[115.870308,40.186079],[115.863072,40.186095],[115.855502,40.188865],[115.848099,40.183843],[115.854205,40.179939],[115.846865,40.169458],[115.844418,40.168016],[115.84676,40.163171],[115.853557,40.154162],[115.853348,40.149332],[115.856547,40.147468],[115.865184,40.148635],[115.870768,40.144276],[115.874155,40.14387],[115.8816,40.139073],[115.900442,40.138716],[115.904457,40.136123],[115.906549,40.138181],[115.921438,40.134485],[115.933588,40.124824],[115.947913,40.107409],[115.943229,40.103339],[115.952681,40.10102],[115.956717,40.096041],[115.957449,40.100679],[115.962552,40.10235],[115.962092,40.094419],[115.960461,40.092456],[115.966588,40.084556],[115.968575,40.075488],[115.977232,40.079041],[115.979993,40.081669],[115.986434,40.083469],[115.99735,40.082074],[116.005129,40.079803],[116.007785,40.080614],[116.020856,40.074579],[116.030914,40.082188],[116.033926,40.079657],[116.037899,40.084524],[116.043775,40.083502],[116.048878,40.085303],[116.051848,40.091661],[116.055905,40.09643],[116.061969,40.09956],[116.062931,40.10282],[116.069456,40.104912],[116.072676,40.109258],[116.073847,40.115436],[116.077883,40.115047],[116.08445,40.120252],[116.089783,40.119327],[116.096056,40.121257],[116.102246,40.115987],[116.105864,40.118014],[116.113309,40.115598],[116.127676,40.116393],[116.132214,40.115079],[116.132925,40.121354],[116.152708,40.121776],[116.169563,40.124564],[116.167409,40.128455],[116.17178,40.127936],[116.168622,40.135442],[116.167681,40.141844],[116.174122,40.143595],[116.180417,40.14729],[116.183094,40.153335],[116.182696,40.158099],[116.192065,40.155669],[116.194282,40.160076],[116.202166,40.160984],[116.203211,40.153773],[116.205658,40.150175],[116.206285,40.143092],[116.212224,40.140548],[116.215445,40.143174],[116.233785,40.136577],[116.247043,40.136204],[116.245036,40.118825],[116.241836,40.118403],[116.243363,40.113279],[116.240498,40.108009],[116.245956,40.10535],[116.252732,40.106517],[116.255868,40.104474],[116.25957,40.106907],[116.258022,40.11195],[116.263334,40.110588],[116.263899,40.10402],[116.258273,40.101522],[116.265237,40.094694],[116.27333,40.09557],[116.2731,40.092699],[116.279897,40.079754],[116.290353,40.083145],[116.302942,40.060803],[116.305995,40.063043],[116.309446,40.060609],[116.318292,40.061663],[116.325946,40.054799],[116.331801,40.057168],[116.330756,40.063383],[116.338828,40.058921],[116.340271,40.055091],[116.343366,40.055448],[116.342676,40.059635],[116.346963,40.06043],[116.34667,40.063659],[116.357293,40.066012],[116.363023,40.065931],[116.363149,40.068965],[116.372538,40.06843],[116.373354,40.065623],[116.381928,40.066402],[116.382848,40.061582],[116.379272,40.059002],[116.372267,40.05785],[116.372999,40.054344],[116.367394,40.053436],[116.36959,40.04696],[116.376114,40.045466],[116.376888,40.042756],[116.38519,40.042853],[116.390649,40.041279]]]]}},{"type":"Feature","properties":{"adcode":110115,"name":"大兴","center":[116.338033,39.728908],"centroid":[116.418968,39.647838],"childrenNum":0,"level":"district","parent":{"adcode":110000},"subFeatureIndex":11,"acroutes":[100000,110000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[116.725518,39.624075],[116.721398,39.629415],[116.723489,39.639033],[116.716003,39.640356],[116.710419,39.639686],[116.70609,39.642903],[116.702891,39.649923],[116.702138,39.657644],[116.704857,39.667192],[116.703769,39.674145],[116.693543,39.674944],[116.692706,39.676789],[116.685554,39.676886],[116.680786,39.674896],[116.675203,39.676234],[116.668574,39.674602],[116.666022,39.679693],[116.669577,39.683642],[116.666566,39.687101],[116.65818,39.68857],[116.658097,39.686155],[116.651321,39.687868],[116.651509,39.694459],[116.647097,39.694786],[116.64626,39.700447],[116.647912,39.703579],[116.653098,39.703823],[116.652994,39.708619],[116.644587,39.709647],[116.638502,39.717166],[116.637623,39.723934],[116.631203,39.722971],[116.628129,39.727749],[116.621646,39.728076],[116.621876,39.725825],[116.616251,39.725581],[116.609141,39.719367],[116.604561,39.718731],[116.604017,39.714752],[116.598371,39.711963],[116.590194,39.711522],[116.590152,39.713349],[116.581202,39.712517],[116.579884,39.710234],[116.573464,39.709125],[116.573276,39.714507],[116.544961,39.715045],[116.535676,39.711881],[116.530552,39.713268],[116.53256,39.71529],[116.527332,39.716578],[116.52936,39.719808],[116.534609,39.718079],[116.536972,39.72152],[116.53783,39.728043],[116.531849,39.730016],[116.532413,39.73962],[116.537997,39.738071],[116.53624,39.740663],[116.527562,39.743304],[116.531159,39.747559],[116.523003,39.749678],[116.525178,39.762392],[116.520075,39.765782],[116.52363,39.769922],[116.528294,39.761463],[116.540423,39.761072],[116.539879,39.766255],[116.536491,39.768406],[116.545797,39.768732],[116.544647,39.772301],[116.536136,39.769873],[116.530092,39.778836],[116.538081,39.78128],[116.532894,39.786542],[116.530929,39.79174],[116.537537,39.796676],[116.535111,39.800146],[116.541678,39.803159],[116.540527,39.811857],[116.533375,39.819658],[116.539586,39.821563],[116.534944,39.82482],[116.525868,39.826904],[116.525366,39.829754],[116.516164,39.829835],[116.510602,39.827637],[116.510142,39.821449],[116.502801,39.819006],[116.505813,39.817866],[116.498201,39.8157],[116.495357,39.818795],[116.485632,39.816889],[116.485256,39.81272],[116.474256,39.809772],[116.468463,39.814511],[116.462775,39.815945],[116.452737,39.823012],[116.443912,39.82096],[116.44592,39.826692],[116.436677,39.827425],[116.43699,39.830649],[116.430068,39.830112],[116.425217,39.831903],[116.420072,39.826611],[116.415785,39.829428],[116.414426,39.824282],[116.418441,39.822915],[116.419759,39.815375],[116.41016,39.817052],[116.410013,39.811336],[116.415262,39.812525],[116.417772,39.81013],[116.422456,39.81044],[116.425719,39.805358],[116.429399,39.803583],[116.429274,39.794102],[116.421034,39.794134],[116.42024,39.787439],[116.396023,39.786738],[116.397905,39.781068],[116.398888,39.765864],[116.391903,39.765277],[116.390649,39.780465],[116.385609,39.778852],[116.379209,39.77939],[116.378478,39.785646],[116.367582,39.784962],[116.365742,39.794151],[116.368189,39.794819],[116.367039,39.79982],[116.356833,39.800471],[116.355704,39.805668],[116.341755,39.807589],[116.340124,39.802149],[116.328225,39.801416],[116.326824,39.798386],[116.322872,39.798386],[116.321784,39.783626],[116.317978,39.783447],[116.31068,39.772057],[116.307062,39.770085],[116.301541,39.774941],[116.295205,39.790958],[116.291148,39.793271],[116.296083,39.795568],[116.289182,39.795894],[116.287237,39.799103],[116.27423,39.796936],[116.262184,39.792782],[116.259298,39.797621],[116.251519,39.793059],[116.251602,39.782518],[116.253777,39.77952],[116.252481,39.771747],[116.254426,39.76324],[116.252481,39.758676],[116.251895,39.749092],[116.243948,39.741658],[116.248026,39.732641],[116.248466,39.728027],[116.245768,39.72408],[116.245036,39.718421],[116.236629,39.71286],[116.231945,39.706025],[116.23435,39.703823],[116.230941,39.692355],[116.221238,39.678453],[116.22565,39.67359],[116.221342,39.667486],[116.223162,39.664728],[116.216992,39.651572],[116.215487,39.64305],[116.218875,39.628011],[116.219502,39.618931],[116.21808,39.608102],[116.223141,39.597222],[116.222597,39.593938],[116.226089,39.591993],[116.225085,39.584085],[116.221175,39.578921],[116.225817,39.568151],[116.229373,39.565471],[116.236462,39.568396],[116.234684,39.563934],[116.240644,39.564098],[116.243007,39.55836],[116.246186,39.557167],[116.242505,39.552966],[116.246521,39.539788],[116.245601,39.53014],[116.248256,39.530271],[116.246479,39.525299],[116.24353,39.524236],[116.246709,39.520098],[116.245831,39.514897],[116.253861,39.510055],[116.25706,39.505491],[116.257939,39.500518],[116.269315,39.495495],[116.275631,39.495201],[116.279269,39.491306],[116.283201,39.493941],[116.305284,39.489179],[116.306957,39.485023],[116.312708,39.480556],[116.314779,39.476104],[116.319944,39.473436],[116.320048,39.468543],[116.325088,39.466153],[116.325611,39.462961],[116.334499,39.457019],[116.350162,39.45291],[116.351124,39.455529],[116.362187,39.454874],[116.367791,39.451633],[116.373563,39.452058],[116.388557,39.450732],[116.391903,39.452893],[116.399787,39.450044],[116.408947,39.450257],[116.425635,39.446885],[116.434397,39.442758],[116.437241,39.445951],[116.450353,39.448522],[116.450667,39.452648],[116.454682,39.453302],[116.453992,39.45751],[116.448638,39.465122],[116.448764,39.476284],[116.444059,39.47887],[116.444142,39.482192],[116.436258,39.482912],[116.433644,39.478183],[116.428333,39.476219],[116.425342,39.481259],[116.429964,39.481325],[116.427329,39.487788],[116.423544,39.485154],[116.412376,39.482077],[116.411582,39.485105],[116.415827,39.48823],[116.418504,39.496575],[116.422895,39.496608],[116.418734,39.506391],[116.40857,39.508011],[116.407253,39.512116],[116.40282,39.51439],[116.402652,39.526886],[116.405538,39.528194],[116.411247,39.524678],[116.421473,39.525103],[116.424046,39.522732],[116.423125,39.516337],[116.424631,39.509728],[116.431699,39.51053],[116.433017,39.507438],[116.443829,39.509875],[116.442741,39.516189],[116.440378,39.516271],[116.439876,39.523353],[116.437513,39.52651],[116.440985,39.527311],[116.45372,39.526477],[116.453846,39.528652],[116.464553,39.527638],[116.464595,39.531628],[116.468819,39.534359],[116.478188,39.535487],[116.47802,39.543205],[116.475134,39.545756],[116.470952,39.5546],[116.473378,39.553096],[116.48948,39.553472],[116.489773,39.550268],[116.508448,39.551053],[116.50805,39.560256],[116.510581,39.560502],[116.511564,39.565503],[116.519385,39.566484],[116.520389,39.57191],[116.527248,39.57294],[116.52614,39.577271],[116.520389,39.577156],[116.519699,39.581863],[116.52317,39.586242],[116.521267,39.590229],[116.525052,39.593807],[116.524446,39.596535],[116.530615,39.598774],[116.530866,39.596715],[116.541803,39.59348],[116.540883,39.60142],[116.544124,39.603609],[116.544187,39.596519],[116.549436,39.596143],[116.557132,39.601502],[116.562276,39.601714],[116.566605,39.604361],[116.566103,39.61114],[116.569637,39.61176],[116.565978,39.616138],[116.565936,39.61978],[116.579382,39.619666],[116.579194,39.623487],[116.591993,39.621299],[116.593561,39.618588],[116.600128,39.619649],[116.602177,39.624533],[116.607886,39.624696],[116.607781,39.619698],[116.611755,39.618882],[116.613177,39.613802],[116.616648,39.614096],[116.616857,39.607301],[116.620182,39.606893],[116.620517,39.601665],[116.628338,39.599558],[116.635407,39.599934],[116.635595,39.604818],[116.645549,39.60209],[116.646532,39.599117],[116.657678,39.60075],[116.6568,39.602776],[116.662384,39.60521],[116.670037,39.604916],[116.669975,39.603381],[116.6889,39.598496],[116.694087,39.601355],[116.696408,39.595392],[116.699127,39.595457],[116.700695,39.590964],[116.705108,39.587974],[116.727065,39.593055],[116.724953,39.598006],[116.718324,39.601077],[116.718282,39.603021],[116.702577,39.610421],[116.700737,39.62107],[116.705338,39.621462],[116.70929,39.618114],[116.716149,39.62156],[116.721858,39.621756],[116.725518,39.624075]]]]}},{"type":"Feature","properties":{"adcode":110116,"name":"怀柔","center":[116.637122,40.324272],"centroid":[116.586079,40.63069],"childrenNum":0,"level":"district","parent":{"adcode":110000},"subFeatureIndex":12,"acroutes":[100000,110000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[116.289872,40.391672],[116.293762,40.392415],[116.295581,40.384437],[116.302691,40.387473],[116.313106,40.389459],[116.32078,40.386859],[116.32398,40.387295],[116.337364,40.379769],[116.34506,40.373163],[116.355369,40.37137],[116.360033,40.366815],[116.357356,40.364084],[116.352797,40.364391],[116.348866,40.356427],[116.355641,40.356814],[116.363923,40.359028],[116.369673,40.356362],[116.367101,40.350351],[116.364508,40.349107],[116.369903,40.342401],[116.368231,40.334805],[116.365909,40.331702],[116.376135,40.334352],[116.375069,40.337375],[116.384563,40.339055],[116.391422,40.338393],[116.396358,40.334853],[116.408633,40.334886],[116.408989,40.333205],[116.417061,40.329843],[116.424359,40.331265],[116.427914,40.329213],[116.43423,40.329116],[116.438245,40.333221],[116.443745,40.322682],[116.449182,40.32113],[116.455184,40.316345],[116.44822,40.305982],[116.443766,40.302457],[116.448011,40.300484],[116.45096,40.293045],[116.449412,40.286722],[116.45533,40.284845],[116.460308,40.28711],[116.469634,40.283001],[116.472081,40.280122],[116.478794,40.280025],[116.484001,40.2759],[116.484273,40.267634],[116.493245,40.262489],[116.501839,40.262974],[116.505959,40.261356],[116.509201,40.258056],[116.523965,40.257522],[116.526181,40.261324],[116.535717,40.261373],[116.540088,40.267165],[116.53693,40.277178],[116.540904,40.274946],[116.546236,40.276224],[116.552176,40.27383],[116.566187,40.27802],[116.565371,40.273377],[116.570516,40.273102],[116.570202,40.268863],[116.58254,40.268362],[116.585238,40.266226],[116.588396,40.269462],[116.590842,40.264139],[116.599647,40.265385],[116.600755,40.258978],[116.604624,40.256146],[116.603787,40.251324],[116.61324,40.251761],[116.622044,40.250467],[116.6238,40.252667],[116.623654,40.26058],[116.63526,40.261454],[116.637038,40.25846],[116.641492,40.259463],[116.643081,40.25715],[116.648519,40.260143],[116.666901,40.262085],[116.669494,40.253153],[116.673321,40.246777],[116.668783,40.238539],[116.670247,40.234865],[116.676311,40.238604],[116.678131,40.234379],[116.684007,40.234282],[116.69072,40.240886],[116.697265,40.243216],[116.696554,40.248072],[116.704585,40.251551],[116.704668,40.257101],[116.710837,40.256227],[116.738421,40.284392],[116.738965,40.284101],[116.754461,40.303686],[116.756845,40.302586],[116.762888,40.310428],[116.773324,40.315973],[116.768639,40.317816],[116.762846,40.326707],[116.759689,40.326853],[116.758559,40.333884],[116.751491,40.335742],[116.744653,40.333706],[116.744046,40.339136],[116.73129,40.335031],[116.731185,40.339023],[116.722967,40.339152],[116.723887,40.344033],[116.727484,40.346522],[116.729031,40.355619],[116.725769,40.355619],[116.726773,40.361193],[116.718094,40.361338],[116.719872,40.369044],[116.714079,40.368608],[116.706509,40.373809],[116.707115,40.377007],[116.716254,40.384114],[116.711716,40.386908],[116.713849,40.395806],[116.713242,40.40157],[116.718512,40.402055],[116.723427,40.405316],[116.724389,40.409191],[116.728801,40.40982],[116.741139,40.414631],[116.733235,40.418312],[116.73244,40.420604],[116.72556,40.418053],[116.722339,40.423832],[116.723552,40.435065],[116.716421,40.441714],[116.72098,40.440988],[116.725811,40.443085],[116.719265,40.448636],[116.7196,40.455735],[116.723594,40.458542],[116.719223,40.460397],[116.716902,40.457074],[116.706174,40.459929],[116.698667,40.468043],[116.695571,40.466721],[116.693397,40.476108],[116.69348,40.481704],[116.704334,40.479043],[116.694149,40.485462],[116.693376,40.490783],[116.698353,40.493266],[116.699106,40.50444],[116.701071,40.510549],[116.711402,40.516465],[116.712239,40.522058],[116.717216,40.524798],[116.712573,40.529955],[116.706948,40.532582],[116.701469,40.539913],[116.702138,40.545456],[116.690699,40.549468],[116.68225,40.548904],[116.67698,40.554462],[116.665771,40.552432],[116.66872,40.557507],[116.682397,40.556766],[116.679636,40.562001],[116.686349,40.564497],[116.699336,40.563563],[116.709855,40.565512],[116.710503,40.568685],[116.71456,40.570682],[116.714351,40.58028],[116.708955,40.590054],[116.711611,40.59189],[116.708495,40.595206],[116.711235,40.600213],[116.705609,40.60303],[116.707993,40.606507],[116.70655,40.610998],[116.702598,40.612785],[116.697955,40.618402],[116.701322,40.621379],[116.704689,40.620076],[116.705128,40.626947],[116.70195,40.628444],[116.70149,40.632917],[116.712197,40.641268],[116.711151,40.648218],[116.712636,40.653896],[116.709855,40.662598],[116.714309,40.666104],[116.713221,40.669867],[116.714915,40.680014],[116.725413,40.68466],[116.725581,40.689114],[116.735807,40.69167],[116.74252,40.69593],[116.747518,40.697072],[116.748668,40.700544],[116.754963,40.702891],[116.756155,40.705687],[116.762867,40.706427],[116.769246,40.70281],[116.783989,40.700496],[116.787105,40.704482],[116.786687,40.7103],[116.789091,40.712454],[116.790472,40.728973],[116.786352,40.736026],[116.782818,40.747817],[116.780727,40.751512],[116.783759,40.757631],[116.793629,40.748267],[116.802977,40.745986],[116.810527,40.749118],[116.818662,40.75042],[116.826211,40.749343],[116.831795,40.751303],[116.840076,40.760682],[116.834785,40.770221],[116.850448,40.775006],[116.851264,40.778924],[116.856806,40.77955],[116.858039,40.78305],[116.867471,40.784559],[116.862577,40.792858],[116.871277,40.794785],[116.873326,40.798781],[116.878575,40.797545],[116.886961,40.801076],[116.880207,40.804367],[116.882172,40.814172],[116.876735,40.818456],[116.876171,40.8212],[116.870378,40.821601],[116.861448,40.825356],[116.860633,40.830457],[116.855425,40.835447],[116.848587,40.837147],[116.84819,40.839313],[116.839741,40.839024],[116.837775,40.841542],[116.831815,40.842585],[116.828009,40.841109],[116.823471,40.842681],[116.820732,40.848263],[116.813622,40.848423],[116.805947,40.840836],[116.802496,40.842392],[116.802413,40.851198],[116.796996,40.854886],[116.797226,40.860034],[116.776795,40.878376],[116.772362,40.87852],[116.769392,40.882961],[116.762135,40.880765],[116.758539,40.881983],[116.759501,40.889854],[116.750257,40.891665],[116.739759,40.896665],[116.730432,40.897771],[116.726145,40.901185],[116.723678,40.906313],[116.716881,40.910175],[116.713347,40.910431],[116.717111,40.921695],[116.722318,40.92743],[116.713891,40.929416],[116.712197,40.934846],[116.70722,40.934029],[116.702786,40.936512],[116.702368,40.940628],[116.696178,40.94452],[116.689298,40.951118],[116.687248,40.962551],[116.677921,40.970972],[116.677921,40.975983],[116.681267,40.980737],[116.685304,40.982641],[116.682543,40.986259],[116.683066,41.000486],[116.69095,41.007254],[116.690866,41.012982],[116.693836,41.013686],[116.698855,41.021253],[116.695739,41.025396],[116.69509,41.033265],[116.691347,41.037503],[116.692246,41.040813],[116.688629,41.044651],[116.682878,41.041789],[116.67698,41.042732],[116.673279,41.046378],[116.665207,41.046682],[116.657009,41.051303],[116.653914,41.05626],[116.647431,41.059393],[116.641158,41.058322],[116.637937,41.060497],[116.630848,41.0608],[116.624093,41.054437],[116.61646,41.053382],[116.617736,41.048649],[116.613491,41.040782],[116.614118,41.036096],[116.617589,41.034704],[116.621228,41.028978],[116.62288,41.020693],[116.621897,41.015749],[116.619179,41.01423],[116.614892,41.003574],[116.617067,40.998725],[116.614515,40.983314],[116.597764,40.97475],[116.589692,40.976703],[116.574928,40.986307],[116.569177,40.991636],[116.561231,40.993461],[116.558617,40.988627],[116.547826,40.988003],[116.541991,40.99026],[116.535634,40.988675],[116.533417,40.985698],[116.524718,40.981073],[116.519573,40.981569],[116.51629,40.975198],[116.504516,40.975919],[116.496737,40.978432],[116.493726,40.977919],[116.485612,40.982465],[116.47894,40.979104],[116.474193,40.978608],[116.464135,40.984498],[116.455519,40.980481],[116.451713,40.968667],[116.453302,40.964584],[116.447446,40.95384],[116.454829,40.949533],[116.455372,40.945433],[116.462315,40.935231],[116.461541,40.932684],[116.467209,40.931322],[116.468422,40.925091],[116.473608,40.91974],[116.477581,40.901746],[116.474047,40.896008],[116.464344,40.896329],[116.458676,40.900592],[116.45073,40.901345],[116.448492,40.899919],[116.436614,40.89939],[116.430905,40.903364],[116.418922,40.902339],[116.413715,40.899758],[116.404764,40.905736],[116.398533,40.906024],[116.396316,40.911264],[116.39274,40.913123],[116.384877,40.922848],[116.384019,40.928535],[116.379732,40.933228],[116.379941,40.935775],[116.370343,40.943655],[116.364801,40.942999],[116.358925,40.93608],[116.35012,40.936048],[116.339894,40.929416],[116.338828,40.925732],[116.334122,40.920829],[116.33544,40.910495],[116.334436,40.90463],[116.342236,40.899887],[116.344683,40.894694],[116.353864,40.887786],[116.360514,40.884885],[116.365972,40.880188],[116.366599,40.876645],[116.374881,40.871531],[116.38174,40.863465],[116.389707,40.861814],[116.391778,40.854838],[116.399306,40.850492],[116.406145,40.837933],[116.406458,40.833361],[116.414991,40.829318],[116.422477,40.822772],[116.436823,40.820735],[116.439897,40.815038],[116.440002,40.809133],[116.450981,40.801927],[116.452152,40.798059],[116.457233,40.7983],[116.461416,40.78854],[116.460663,40.78244],[116.465849,40.774525],[116.465452,40.772742],[116.471517,40.771233],[116.4803,40.771586],[116.485193,40.765179],[116.491404,40.7633],[116.495482,40.759735],[116.50025,40.760811],[116.502906,40.756635],[116.501819,40.746581],[116.506461,40.743432],[116.513697,40.741456],[116.509493,40.73548],[116.510748,40.72645],[116.506858,40.720039],[116.504119,40.720135],[116.503115,40.715893],[116.506064,40.710879],[116.501923,40.706796],[116.501066,40.70228],[116.502676,40.697361],[116.496653,40.696879],[116.488811,40.69196],[116.483374,40.679403],[116.487138,40.674338],[116.492826,40.673984],[116.501568,40.671186],[116.505938,40.673067],[116.513488,40.672344],[116.517273,40.665734],[116.520096,40.66411],[116.518381,40.660925],[116.527039,40.6584],[116.529507,40.654588],[116.540046,40.656679],[116.544103,40.653767],[116.545023,40.650116],[116.550335,40.647606],[116.551151,40.642828],[116.55389,40.642877],[116.563886,40.636908],[116.573903,40.63628],[116.574092,40.631678],[116.568989,40.625483],[116.561231,40.628557],[116.551674,40.625209],[116.545003,40.627076],[116.539294,40.625612],[116.538938,40.619673],[116.535634,40.615698],[116.532915,40.606459],[116.535948,40.59944],[116.530929,40.595883],[116.531577,40.59131],[116.525136,40.583002],[116.517796,40.579749],[116.513153,40.572792],[116.509577,40.57276],[116.505144,40.562581],[116.499999,40.560921],[116.496277,40.555106],[116.484587,40.552867],[116.479651,40.541396],[116.470617,40.535418],[116.467125,40.530068],[116.460956,40.524363],[116.46587,40.518802],[116.470345,40.518963],[116.476306,40.514192],[116.488581,40.515853],[116.492073,40.518093],[116.497762,40.518093],[116.500459,40.510904],[116.506398,40.508212],[116.51194,40.501135],[116.519155,40.496604],[116.519092,40.491799],[116.511543,40.486929],[116.508322,40.483172],[116.492157,40.481027],[116.487347,40.481737],[116.483541,40.484994],[116.468212,40.48493],[116.465577,40.48701],[116.457903,40.488445],[116.455937,40.480914],[116.443201,40.481801],[116.433142,40.478189],[116.420971,40.480301],[116.416664,40.483011],[116.413673,40.481527],[116.4065,40.481995],[116.393702,40.47256],[116.38609,40.475802],[116.387344,40.482043],[116.376825,40.485736],[116.378603,40.491525],[116.377537,40.49683],[116.369632,40.500312],[116.365909,40.499635],[116.357042,40.501941],[116.348636,40.499071],[116.34232,40.500457],[116.336653,40.498636],[116.330567,40.500748],[116.323227,40.500151],[116.31321,40.491799],[116.31022,40.491702],[116.303779,40.485817],[116.29717,40.486768],[116.291691,40.485317],[116.294786,40.47535],[116.301646,40.468108],[116.306853,40.466092],[116.300955,40.458429],[116.293824,40.452831],[116.294368,40.449975],[116.289788,40.440907],[116.290667,40.435856],[116.294452,40.429304],[116.296648,40.420701],[116.291942,40.416617],[116.289433,40.418021],[116.288513,40.413437],[116.291608,40.408448],[116.287864,40.404719],[116.289746,40.402539],[116.286003,40.396032],[116.289872,40.391672]]]]}},{"type":"Feature","properties":{"adcode":110117,"name":"平谷","center":[117.112335,40.144783],"centroid":[117.145392,40.208997],"childrenNum":0,"level":"district","parent":{"adcode":110000},"subFeatureIndex":13,"acroutes":[100000,110000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[116.961932,40.051358],[116.964902,40.047836],[116.969293,40.048583],[116.972095,40.036977],[116.985626,40.038828],[116.991837,40.036896],[117.00016,40.032253],[117.000683,40.029915],[117.011369,40.031246],[117.018061,40.030467],[117.020884,40.032448],[117.024836,40.03011],[117.023916,40.033746],[117.028517,40.033957],[117.027032,40.038828],[117.033159,40.04235],[117.038639,40.049378],[117.051437,40.051163],[117.053382,40.052884],[117.052022,40.059375],[117.061182,40.060105],[117.064382,40.062783],[117.070634,40.064179],[117.069652,40.06757],[117.081049,40.068819],[117.080986,40.065087],[117.085064,40.068592],[117.085608,40.075131],[117.103927,40.075585],[117.107775,40.071805],[117.119507,40.072421],[117.128896,40.06546],[117.139227,40.064049],[117.15625,40.069338],[117.160139,40.075553],[117.158466,40.077435],[117.172227,40.074157],[117.175593,40.071642],[117.183603,40.072081],[117.186426,40.076202],[117.181533,40.080095],[117.18538,40.083875],[117.189207,40.082853],[117.191842,40.072973],[117.198576,40.070101],[117.197572,40.067748],[117.205247,40.07028],[117.208175,40.076834],[117.203616,40.076704],[117.204285,40.079657],[117.213989,40.086243],[117.21104,40.090785],[117.211249,40.096608],[117.224487,40.094662],[117.224403,40.098619],[117.228606,40.100257],[117.229025,40.103533],[117.236009,40.108382],[117.238226,40.111755],[117.245357,40.113215],[117.249268,40.116474],[117.255541,40.113279],[117.260393,40.114155],[117.266834,40.112177],[117.269908,40.107198],[117.274362,40.105804],[117.276663,40.109307],[117.275659,40.113636],[117.285425,40.121322],[117.297094,40.118857],[117.297073,40.121273],[117.302991,40.125926],[117.307613,40.136982],[117.313761,40.139964],[117.318571,40.138522],[117.323276,40.14071],[117.33093,40.13575],[117.330617,40.133691],[117.349082,40.136528],[117.351404,40.139932],[117.35636,40.140904],[117.356883,40.145037],[117.350525,40.144827],[117.355272,40.148587],[117.351717,40.150564],[117.360626,40.156965],[117.357343,40.164273],[117.351111,40.171661],[117.353746,40.17367],[117.359413,40.173346],[117.364014,40.176683],[117.368844,40.17299],[117.372023,40.176538],[117.377021,40.176327],[117.381225,40.172455],[117.380597,40.17691],[117.393186,40.174901],[117.391618,40.177607],[117.401217,40.183617],[117.404751,40.183244],[117.4077,40.187504],[117.397704,40.192914],[117.388356,40.188249],[117.38409,40.187828],[117.384382,40.195278],[117.381455,40.194906],[117.379552,40.201319],[117.393145,40.203376],[117.385679,40.207894],[117.378443,40.21029],[117.377586,40.218612],[117.39373,40.221656],[117.390029,40.227969],[117.386829,40.227111],[117.373989,40.232777],[117.36027,40.23255],[117.355691,40.229556],[117.351613,40.229459],[117.348246,40.234574],[117.345464,40.234946],[117.343457,40.242909],[117.339881,40.246194],[117.342202,40.256502],[117.337622,40.263266],[117.337999,40.265903],[117.334005,40.285654],[117.331244,40.289665],[117.32336,40.284441],[117.316794,40.285104],[117.316835,40.281999],[117.304309,40.278181],[117.29632,40.2781],[117.292368,40.286236],[117.294647,40.290894],[117.293309,40.296748],[117.285739,40.302214],[117.274342,40.308552],[117.274697,40.314405],[117.271853,40.319853],[117.271288,40.325285],[117.274969,40.331944],[117.267127,40.335694],[117.259828,40.336195],[117.261125,40.338781],[117.257089,40.341463],[117.25437,40.351191],[117.254182,40.357105],[117.250188,40.358381],[117.247762,40.364101],[117.242283,40.369981],[117.237055,40.370627],[117.22618,40.369044],[117.223901,40.375538],[117.218527,40.377718],[117.211124,40.373825],[117.204536,40.373082],[117.199747,40.375861],[117.185799,40.377767],[117.179943,40.375021],[117.170491,40.374342],[117.16796,40.371467],[117.157609,40.374859],[117.155329,40.371402],[117.147466,40.369965],[117.142385,40.362824],[117.128122,40.358866],[117.125362,40.35641],[117.117457,40.353744],[117.100915,40.360546],[117.0946,40.358285],[117.085231,40.350432],[117.072705,40.345584],[117.072286,40.342999],[117.066933,40.342983],[117.060931,40.337795],[117.052817,40.337649],[117.048279,40.341528],[117.039266,40.340057],[117.032762,40.33752],[117.026133,40.338458],[117.020842,40.336179],[117.012686,40.32674],[117.01024,40.320726],[117.006998,40.319255],[117.007563,40.314599],[117.011306,40.307113],[117.002,40.299675],[117.004091,40.293918],[116.99834,40.29083],[116.990833,40.290603],[116.991042,40.287724],[116.983765,40.287886],[116.971343,40.281724],[116.970527,40.276531],[116.961995,40.273442],[116.960468,40.2704],[116.950953,40.261081],[116.954341,40.25715],[116.961786,40.252635],[116.969293,40.253962],[116.975881,40.249463],[116.974082,40.24456],[116.959924,40.23268],[116.956286,40.232615],[116.953567,40.236079],[116.946896,40.236095],[116.945641,40.233441],[116.936837,40.232259],[116.935206,40.229847],[116.940978,40.223922],[116.938029,40.210549],[116.929685,40.211585],[116.930898,40.207084],[116.939556,40.192347],[116.945913,40.193141],[116.94997,40.186354],[116.945809,40.186224],[116.945349,40.1813],[116.951371,40.174788],[116.962037,40.175549],[116.961242,40.171937],[116.968749,40.163495],[116.972054,40.156301],[116.977763,40.151374],[116.970025,40.140321],[116.967829,40.129849],[116.96578,40.127823],[116.971594,40.124224],[116.969189,40.118776],[116.971301,40.114009],[116.976069,40.111188],[116.973329,40.103712],[116.967976,40.101214],[116.975462,40.095051],[116.979938,40.093867],[116.981862,40.089828],[116.981192,40.08149],[116.986274,40.078359],[116.982844,40.070685],[116.980816,40.071188],[116.978599,40.064893],[116.973476,40.066304],[116.970652,40.063805],[116.962288,40.063529],[116.961932,40.051358]]]]}},{"type":"Feature","properties":{"adcode":110118,"name":"密云","center":[116.843352,40.377362],"centroid":[116.995042,40.526881],"childrenNum":0,"level":"district","parent":{"adcode":110000},"subFeatureIndex":14,"acroutes":[100000,110000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[117.223901,40.375538],[117.226661,40.378558],[117.229045,40.386843],[117.235382,40.389556],[117.23695,40.394078],[117.240694,40.394417],[117.240484,40.39763],[117.236616,40.400844],[117.237515,40.407786],[117.234085,40.417149],[117.243872,40.422848],[117.246737,40.426883],[117.257654,40.435372],[117.263342,40.442375],[117.252635,40.446038],[117.252154,40.450459],[117.243308,40.455428],[117.236532,40.456558],[117.233207,40.463204],[117.237243,40.468785],[117.230907,40.470463],[117.225783,40.47585],[117.22846,40.481301],[117.21792,40.494589],[117.212065,40.494685],[117.208426,40.498071],[117.208572,40.501102],[117.21449,40.50739],[117.212504,40.507906],[117.215013,40.513273],[117.219969,40.514321],[117.230405,40.511162],[117.239543,40.516723],[117.246821,40.511968],[117.255562,40.514934],[117.263133,40.513145],[117.264115,40.517271],[117.26146,40.51906],[117.255123,40.527973],[117.252007,40.53632],[117.247427,40.540236],[117.250606,40.542024],[117.24954,40.548179],[117.25964,40.552867],[117.268507,40.559842],[117.273191,40.561501],[117.279256,40.560342],[117.285592,40.565061],[117.299562,40.566801],[117.311837,40.578026],[117.325451,40.578155],[117.328442,40.575948],[117.334611,40.576464],[117.342767,40.581585],[117.350023,40.582197],[117.353014,40.578831],[117.365917,40.575965],[117.369221,40.57036],[117.375453,40.567799],[117.378422,40.56337],[117.389297,40.561244],[117.39465,40.567912],[117.400589,40.569345],[117.40358,40.574257],[117.413471,40.569893],[117.42123,40.569104],[117.429992,40.576126],[117.429804,40.579298],[117.423217,40.58144],[117.420623,40.590875],[117.421753,40.593178],[117.414747,40.600728],[117.412739,40.605123],[117.419954,40.617517],[117.430285,40.626014],[117.438002,40.625692],[117.442289,40.627977],[117.448876,40.62838],[117.45402,40.642844],[117.451448,40.646577],[117.456467,40.649167],[117.449106,40.651596],[117.462009,40.653076],[117.464309,40.648652],[117.467885,40.649521],[117.473093,40.644453],[117.475539,40.644421],[117.477986,40.635331],[117.486163,40.633496],[117.489948,40.636023],[117.500425,40.6362],[117.501972,40.644518],[117.505026,40.646142],[117.50283,40.653076],[117.513913,40.656196],[117.514583,40.660523],[117.502934,40.669674],[117.493357,40.67527],[117.484741,40.677087],[117.482399,40.679033],[117.471503,40.674338],[117.465188,40.673534],[117.453958,40.677618],[117.442226,40.676605],[117.437332,40.683599],[117.432711,40.681622],[117.426437,40.685304],[117.419348,40.68696],[117.414852,40.685947],[117.409226,40.687281],[117.397223,40.683776],[117.386996,40.684178],[117.378192,40.678808],[117.37058,40.679708],[117.359748,40.673919],[117.342411,40.673437],[117.336681,40.666956],[117.337622,40.664447],[117.331851,40.661504],[117.321164,40.658287],[117.290423,40.660185],[117.278608,40.664463],[117.278629,40.667551],[117.273401,40.670076],[117.267754,40.676669],[117.261397,40.681155],[117.256775,40.679467],[117.241635,40.676669],[117.234336,40.680577],[117.233207,40.683583],[117.218715,40.689484],[117.217335,40.69196],[117.210622,40.691976],[117.208405,40.694435],[117.202361,40.695577],[117.197802,40.694291],[117.193996,40.696268],[117.182453,40.697072],[117.180947,40.694082],[117.176639,40.693567],[117.169236,40.699097],[117.16474,40.699628],[117.159491,40.696332],[117.147571,40.698968],[117.142531,40.6972],[117.132493,40.698663],[117.128792,40.700913],[117.117792,40.700078],[117.110661,40.708243],[117.095144,40.705559],[117.086047,40.702055],[117.081153,40.702617],[117.076804,40.700029],[117.058338,40.70154],[117.054887,40.699804],[117.044494,40.700367],[117.036108,40.697265],[117.035585,40.694467],[117.031047,40.692136],[117.027848,40.694355],[117.018291,40.696011],[117.013418,40.694082],[117.005513,40.694853],[117.002481,40.697345],[116.990456,40.701203],[116.988177,40.703164],[116.979938,40.702826],[116.977533,40.705559],[116.969628,40.706362],[116.965111,40.709593],[116.96647,40.71525],[116.960134,40.721083],[116.946645,40.726916],[116.942714,40.729857],[116.940706,40.739786],[116.926548,40.744894],[116.923516,40.750596],[116.927908,40.757824],[116.923181,40.766897],[116.923391,40.773722],[116.904569,40.777286],[116.898589,40.77674],[116.895013,40.781733],[116.89495,40.790675],[116.896686,40.796438],[116.889073,40.798348],[116.886961,40.801076],[116.878575,40.797545],[116.873326,40.798781],[116.871277,40.794785],[116.862577,40.792858],[116.867471,40.784559],[116.858039,40.78305],[116.856806,40.77955],[116.851264,40.778924],[116.850448,40.775006],[116.834785,40.770221],[116.840076,40.760682],[116.831795,40.751303],[116.826211,40.749343],[116.818662,40.75042],[116.810527,40.749118],[116.802977,40.745986],[116.793629,40.748267],[116.783759,40.757631],[116.780727,40.751512],[116.782818,40.747817],[116.786352,40.736026],[116.790472,40.728973],[116.789091,40.712454],[116.786687,40.7103],[116.787105,40.704482],[116.783989,40.700496],[116.769246,40.70281],[116.762867,40.706427],[116.756155,40.705687],[116.754963,40.702891],[116.748668,40.700544],[116.747518,40.697072],[116.74252,40.69593],[116.735807,40.69167],[116.725581,40.689114],[116.725413,40.68466],[116.714915,40.680014],[116.713221,40.669867],[116.714309,40.666104],[116.709855,40.662598],[116.712636,40.653896],[116.711151,40.648218],[116.712197,40.641268],[116.70149,40.632917],[116.70195,40.628444],[116.705128,40.626947],[116.704689,40.620076],[116.701322,40.621379],[116.697955,40.618402],[116.702598,40.612785],[116.70655,40.610998],[116.707993,40.606507],[116.705609,40.60303],[116.711235,40.600213],[116.708495,40.595206],[116.711611,40.59189],[116.708955,40.590054],[116.714351,40.58028],[116.71456,40.570682],[116.710503,40.568685],[116.709855,40.565512],[116.699336,40.563563],[116.686349,40.564497],[116.679636,40.562001],[116.682397,40.556766],[116.66872,40.557507],[116.665771,40.552432],[116.67698,40.554462],[116.68225,40.548904],[116.690699,40.549468],[116.702138,40.545456],[116.701469,40.539913],[116.706948,40.532582],[116.712573,40.529955],[116.717216,40.524798],[116.712239,40.522058],[116.711402,40.516465],[116.701071,40.510549],[116.699106,40.50444],[116.698353,40.493266],[116.693376,40.490783],[116.694149,40.485462],[116.704334,40.479043],[116.69348,40.481704],[116.693397,40.476108],[116.695571,40.466721],[116.698667,40.468043],[116.706174,40.459929],[116.716902,40.457074],[116.719223,40.460397],[116.723594,40.458542],[116.7196,40.455735],[116.719265,40.448636],[116.725811,40.443085],[116.72098,40.440988],[116.716421,40.441714],[116.723552,40.435065],[116.722339,40.423832],[116.72556,40.418053],[116.73244,40.420604],[116.733235,40.418312],[116.741139,40.414631],[116.728801,40.40982],[116.724389,40.409191],[116.723427,40.405316],[116.718512,40.402055],[116.713242,40.40157],[116.713849,40.395806],[116.711716,40.386908],[116.716254,40.384114],[116.707115,40.377007],[116.706509,40.373809],[116.714079,40.368608],[116.719872,40.369044],[116.718094,40.361338],[116.726773,40.361193],[116.725769,40.355619],[116.729031,40.355619],[116.727484,40.346522],[116.723887,40.344033],[116.722967,40.339152],[116.731185,40.339023],[116.73129,40.335031],[116.744046,40.339136],[116.744653,40.333706],[116.751491,40.335742],[116.758559,40.333884],[116.759689,40.326853],[116.762846,40.326707],[116.768639,40.317816],[116.773324,40.315973],[116.762888,40.310428],[116.756845,40.302586],[116.754461,40.303686],[116.738965,40.284101],[116.741098,40.283001],[116.738337,40.278764],[116.74298,40.279087],[116.752788,40.275512],[116.762658,40.269058],[116.768597,40.270109],[116.771651,40.266501],[116.773512,40.269527],[116.782964,40.273248],[116.784073,40.279443],[116.787795,40.281449],[116.788025,40.289439],[116.794487,40.287417],[116.800572,40.289196],[116.809607,40.28601],[116.811823,40.282387],[116.825123,40.285347],[116.82458,40.290991],[116.827215,40.298333],[116.830101,40.299206],[116.828992,40.304413],[116.838382,40.310185],[116.848984,40.311204],[116.854547,40.303152],[116.857182,40.2929],[116.859462,40.290878],[116.871319,40.290943],[116.871737,40.281481],[116.876338,40.274348],[116.874247,40.268281],[116.879893,40.264139],[116.881273,40.259221],[116.886104,40.255256],[116.886585,40.251907],[116.892252,40.245709],[116.894343,40.240028],[116.901746,40.23684],[116.893946,40.233457],[116.900701,40.228763],[116.906598,40.228682],[116.908606,40.222401],[116.913917,40.220118],[116.915507,40.222271],[116.922031,40.220134],[116.92544,40.225768],[116.931065,40.230624],[116.935206,40.229847],[116.936837,40.232259],[116.945641,40.233441],[116.946896,40.236095],[116.953567,40.236079],[116.956286,40.232615],[116.959924,40.23268],[116.974082,40.24456],[116.975881,40.249463],[116.969293,40.253962],[116.961786,40.252635],[116.954341,40.25715],[116.950953,40.261081],[116.960468,40.2704],[116.961995,40.273442],[116.970527,40.276531],[116.971343,40.281724],[116.983765,40.287886],[116.991042,40.287724],[116.990833,40.290603],[116.99834,40.29083],[117.004091,40.293918],[117.002,40.299675],[117.011306,40.307113],[117.007563,40.314599],[117.006998,40.319255],[117.01024,40.320726],[117.012686,40.32674],[117.020842,40.336179],[117.026133,40.338458],[117.032762,40.33752],[117.039266,40.340057],[117.048279,40.341528],[117.052817,40.337649],[117.060931,40.337795],[117.066933,40.342983],[117.072286,40.342999],[117.072705,40.345584],[117.085231,40.350432],[117.0946,40.358285],[117.100915,40.360546],[117.117457,40.353744],[117.125362,40.35641],[117.128122,40.358866],[117.142385,40.362824],[117.147466,40.369965],[117.155329,40.371402],[117.157609,40.374859],[117.16796,40.371467],[117.170491,40.374342],[117.179943,40.375021],[117.185799,40.377767],[117.199747,40.375861],[117.204536,40.373082],[117.211124,40.373825],[117.218527,40.377718],[117.223901,40.375538]]]]}},{"type":"Feature","properties":{"adcode":110119,"name":"延庆","center":[115.985006,40.465325],"centroid":[116.164004,40.540013],"childrenNum":0,"level":"district","parent":{"adcode":110000},"subFeatureIndex":15,"acroutes":[100000,110000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[115.967006,40.265612],[115.976396,40.270983],[115.981812,40.276903],[115.978822,40.281627],[115.981227,40.28525],[115.978675,40.289633],[115.982732,40.297977],[115.990323,40.299498],[115.987919,40.303799],[115.975538,40.308698],[115.976417,40.311511],[115.973259,40.318997],[115.979658,40.320532],[115.982711,40.324202],[115.993398,40.328986],[115.999065,40.325463],[116.007597,40.33314],[116.01684,40.33466],[116.026481,40.324283],[116.026167,40.320484],[116.031144,40.312352],[116.040095,40.312724],[116.042479,40.316846],[116.051116,40.315812],[116.056971,40.322181],[116.053353,40.326853],[116.061802,40.336809],[116.06841,40.336971],[116.073429,40.339831],[116.077716,40.339346],[116.083342,40.33571],[116.086353,40.330813],[116.098649,40.330005],[116.102978,40.331524],[116.110381,40.330813],[116.116634,40.323668],[116.116237,40.321955],[116.122385,40.312805],[116.132737,40.31198],[116.141959,40.316879],[116.138383,40.324671],[116.13809,40.330974],[116.143904,40.336082],[116.137651,40.336534],[116.137567,40.340769],[116.140809,40.343047],[116.138404,40.345229],[116.144782,40.348541],[116.147543,40.340655],[116.144719,40.336631],[116.152603,40.337714],[116.155677,40.344906],[116.1507,40.349252],[116.145514,40.351046],[116.148651,40.35696],[116.148233,40.361807],[116.159295,40.366265],[116.168789,40.366718],[116.170713,40.369351],[116.177154,40.370934],[116.180354,40.367687],[116.192985,40.372775],[116.209129,40.376232],[116.211451,40.381756],[116.222221,40.382111],[116.226989,40.38111],[116.23184,40.374988],[116.23665,40.377427],[116.241962,40.377508],[116.24353,40.379818],[116.247796,40.374471],[116.252104,40.376297],[116.25338,40.381239],[116.258336,40.383193],[116.261264,40.380561],[116.270863,40.382693],[116.282845,40.375263],[116.290729,40.383177],[116.289872,40.391672],[116.286003,40.396032],[116.289746,40.402539],[116.287864,40.404719],[116.291608,40.408448],[116.288513,40.413437],[116.289433,40.418021],[116.291942,40.416617],[116.296648,40.420701],[116.294452,40.429304],[116.290667,40.435856],[116.289788,40.440907],[116.294368,40.449975],[116.293824,40.452831],[116.300955,40.458429],[116.306853,40.466092],[116.301646,40.468108],[116.294786,40.47535],[116.291691,40.485317],[116.29717,40.486768],[116.303779,40.485817],[116.31022,40.491702],[116.31321,40.491799],[116.323227,40.500151],[116.330567,40.500748],[116.336653,40.498636],[116.34232,40.500457],[116.348636,40.499071],[116.357042,40.501941],[116.365909,40.499635],[116.369632,40.500312],[116.377537,40.49683],[116.378603,40.491525],[116.376825,40.485736],[116.387344,40.482043],[116.38609,40.475802],[116.393702,40.47256],[116.4065,40.481995],[116.413673,40.481527],[116.416664,40.483011],[116.420971,40.480301],[116.433142,40.478189],[116.443201,40.481801],[116.455937,40.480914],[116.457903,40.488445],[116.465577,40.48701],[116.468212,40.48493],[116.483541,40.484994],[116.487347,40.481737],[116.492157,40.481027],[116.508322,40.483172],[116.511543,40.486929],[116.519092,40.491799],[116.519155,40.496604],[116.51194,40.501135],[116.506398,40.508212],[116.500459,40.510904],[116.497762,40.518093],[116.492073,40.518093],[116.488581,40.515853],[116.476306,40.514192],[116.470345,40.518963],[116.46587,40.518802],[116.460956,40.524363],[116.467125,40.530068],[116.470617,40.535418],[116.479651,40.541396],[116.484587,40.552867],[116.496277,40.555106],[116.499999,40.560921],[116.505144,40.562581],[116.509577,40.57276],[116.513153,40.572792],[116.517796,40.579749],[116.525136,40.583002],[116.531577,40.59131],[116.530929,40.595883],[116.535948,40.59944],[116.532915,40.606459],[116.535634,40.615698],[116.538938,40.619673],[116.539294,40.625612],[116.545003,40.627076],[116.551674,40.625209],[116.561231,40.628557],[116.568989,40.625483],[116.574092,40.631678],[116.573903,40.63628],[116.563886,40.636908],[116.55389,40.642877],[116.551151,40.642828],[116.550335,40.647606],[116.545023,40.650116],[116.544103,40.653767],[116.540046,40.656679],[116.529507,40.654588],[116.527039,40.6584],[116.518381,40.660925],[116.520096,40.66411],[116.517273,40.665734],[116.513488,40.672344],[116.505938,40.673067],[116.501568,40.671186],[116.492826,40.673984],[116.487138,40.674338],[116.483374,40.679403],[116.488811,40.69196],[116.496653,40.696879],[116.502676,40.697361],[116.501066,40.70228],[116.501923,40.706796],[116.506064,40.710879],[116.503115,40.715893],[116.504119,40.720135],[116.506858,40.720039],[116.510748,40.72645],[116.509493,40.73548],[116.513697,40.741456],[116.506461,40.743432],[116.501819,40.746581],[116.502906,40.756635],[116.50025,40.760811],[116.495482,40.759735],[116.491404,40.7633],[116.485193,40.765179],[116.4803,40.771586],[116.471517,40.771233],[116.465452,40.772742],[116.45395,40.76587],[116.444414,40.76921],[116.437722,40.766865],[116.431846,40.768246],[116.424861,40.767443],[116.416496,40.76937],[116.4143,40.777912],[116.407838,40.780417],[116.403217,40.778635],[116.392635,40.778394],[116.379837,40.772325],[116.37097,40.772453],[116.367687,40.77088],[116.361204,40.772646],[116.353111,40.770221],[116.342947,40.773096],[116.33314,40.772694],[116.330149,40.77377],[116.31756,40.77218],[116.313168,40.770205],[116.30794,40.763734],[116.311119,40.75511],[116.30794,40.752122],[116.304762,40.755656],[116.29786,40.756812],[116.290918,40.763814],[116.281402,40.763926],[116.277366,40.76163],[116.273456,40.762883],[116.274167,40.766335],[116.26988,40.770703],[116.269587,40.777158],[116.261013,40.782938],[116.257834,40.787898],[116.247943,40.791831],[116.245224,40.78838],[116.235019,40.78313],[116.235625,40.775135],[116.231757,40.77149],[116.229979,40.762417],[116.23366,40.759896],[116.223308,40.753793],[116.220485,40.749183],[116.220359,40.744669],[116.213249,40.740139],[116.210551,40.741713],[116.204717,40.739946],[116.2057,40.733038],[116.197753,40.7269],[116.192274,40.724779],[116.184913,40.713675],[116.181128,40.712438],[116.177907,40.707889],[116.176213,40.700544],[116.171341,40.695979],[116.173683,40.689034],[116.171487,40.68167],[116.168413,40.67892],[116.167597,40.672633],[116.162683,40.662437],[116.151432,40.663338],[116.142858,40.666972],[116.13694,40.667648],[116.125229,40.654089],[116.113225,40.648845],[116.111531,40.646287],[116.112744,40.640946],[116.120419,40.633287],[116.122071,40.629989],[116.118349,40.627961],[116.1044,40.626996],[116.098879,40.630584],[116.088507,40.626626],[116.08583,40.623825],[116.076691,40.619883],[116.073492,40.612125],[116.069811,40.610258],[116.062722,40.610322],[116.058289,40.607006],[116.050907,40.606121],[116.04457,40.602032],[116.032357,40.599875],[116.030036,40.597364],[116.028509,40.607328],[116.025268,40.60654],[116.005109,40.584097],[115.996116,40.58392],[115.995238,40.579862],[115.982147,40.579008],[115.97512,40.590779],[115.971983,40.60237],[115.965877,40.601002],[115.967404,40.605896],[115.955107,40.609534],[115.948331,40.608809],[115.944672,40.611095],[115.935031,40.613316],[115.928297,40.612753],[115.920372,40.616632],[115.907803,40.617291],[115.897849,40.608101],[115.894733,40.606878],[115.888146,40.597026],[115.885406,40.595223],[115.867777,40.595786],[115.86623,40.593371],[115.854895,40.590151],[115.846175,40.593049],[115.827374,40.587027],[115.820662,40.568234],[115.82154,40.563305],[115.819804,40.559343],[115.815036,40.55741],[115.804915,40.55865],[115.79908,40.5577],[115.7922,40.561292],[115.784713,40.558376],[115.776327,40.552158],[115.773902,40.548582],[115.770179,40.548002],[115.763885,40.540574],[115.759577,40.538914],[115.75506,40.540042],[115.752968,40.536288],[115.755624,40.531019],[115.748702,40.526087],[115.743788,40.518464],[115.743098,40.513854],[115.73605,40.503988],[115.743077,40.494959],[115.744039,40.498249],[115.768088,40.498345],[115.774529,40.493911],[115.782204,40.492073],[115.776202,40.482704],[115.776683,40.477511],[115.771559,40.47285],[115.770367,40.46493],[115.772856,40.462301],[115.779527,40.464075],[115.7734,40.457397],[115.77547,40.45204],[115.77248,40.452831],[115.773546,40.44812],[115.77043,40.444166],[115.786679,40.437066],[115.78992,40.432483],[115.796884,40.432531],[115.796445,40.426834],[115.836555,40.38568],[115.837454,40.381255],[115.840633,40.381094],[115.846865,40.375085],[115.855962,40.37712],[115.861859,40.373422],[115.861922,40.364811],[115.85981,40.36213],[115.86441,40.36192],[115.864452,40.359335],[115.872754,40.359593],[115.876226,40.362146],[115.878066,40.359367],[115.883169,40.359545],[115.88526,40.357024],[115.890927,40.357897],[115.892997,40.355554],[115.909539,40.357622],[115.918301,40.35389],[115.920581,40.346473],[115.924094,40.341059],[115.921417,40.338668],[115.922881,40.332898],[115.92721,40.329601],[115.922672,40.325899],[115.926792,40.319611],[115.929239,40.32105],[115.935721,40.316717],[115.937185,40.313047],[115.943814,40.310945],[115.939757,40.304397],[115.945885,40.296199],[115.946115,40.289034],[115.950088,40.289228],[115.951698,40.282015],[115.955212,40.276984],[115.960231,40.274914],[115.961611,40.269219],[115.967006,40.265612]]]]}}]} \ No newline at end of file diff --git a/src/components/tree/pointTree.vue b/src/components/tree/pointTree.vue new file mode 100644 index 0000000..6e98c2d --- /dev/null +++ b/src/components/tree/pointTree.vue @@ -0,0 +1,272 @@ + + + + + diff --git a/src/components/tree/systemTree.vue b/src/components/tree/systemTree.vue new file mode 100644 index 0000000..c5ffe91 --- /dev/null +++ b/src/components/tree/systemTree.vue @@ -0,0 +1,372 @@ + + + + + diff --git a/src/constant/index.d.ts b/src/constant/index.d.ts new file mode 100644 index 0000000..6f43739 --- /dev/null +++ b/src/constant/index.d.ts @@ -0,0 +1,5 @@ +// 各类标题与图标 +export type ModuleInfo = { + name: string + icon: string +}[] diff --git a/src/constant/index.ts b/src/constant/index.ts new file mode 100644 index 0000000..1dc70cb --- /dev/null +++ b/src/constant/index.ts @@ -0,0 +1,47 @@ +import { ModuleInfo } from "./index.d"; +// 运维单位id +export const deptId = window.sessionStorage.getItem("deptId") || "10002"; +export const timeType = 3; //类型(1年 2季度 3月份 4周 5日)") + +// 星期 +export const WEEK = ["周日", "周一", "周二", "周三", "周四", "周五", "周六"]; + +// 主题名称与副标题名称 +export const title = "电压暂降监测平台"; +export const subtitle = ["数据分析1", "数据分析2", "vue-big-screen"]; +// 组件颜色 +export const color = [ + ["#0a73ff60", "#0a73ff"], + ["#0a73ff", "#003a87"], + ["#0a73ff", "#0a73ff"], + ["#0a73ff60", "#0a73ff60"], +]; + +export const moduleInfo: ModuleInfo = [ + // 中间的几个模块 + { + name: "任务通过率", + icon: "icon-chart-bar", + }, + { + name: "地图数据", + icon: "icon-tongji4", + }, + { + name: "产品销售渠道分析", + icon: "icon-align-left", + }, + { + name: "任务完成排行榜", + icon: "icon-zhibiao2", + }, + // 底部两个模块 + { + name: "数据统计图", + icon: "icon-vector", + }, + { + name: "工单修复以及满意度统计图", + icon: "icon-fenxi7", + }, +]; diff --git a/src/constant/index_wx.ts b/src/constant/index_wx.ts new file mode 100644 index 0000000..025186b --- /dev/null +++ b/src/constant/index_wx.ts @@ -0,0 +1,47 @@ +import { ModuleInfo } from "./index.d"; +// 运维单位id +export const deptId = window.sessionStorage.getItem("deptId") || "10002"; +export const timeType = 3; //类型(1年 2季度 3月份 4周 5日)") + +// 星期 +export const WEEK = ["周日", "周一", "周二", "周三", "周四", "周五", "周六"]; + +// 主题名称与副标题名称 +export const title = "无锡电能质量演示平台"; +export const subtitle = ["数据分析1", "数据分析2", "vue-big-screen"]; +// 组件颜色 +export const color = [ + ["#0a73ff60", "#0a73ff"], + ["#0a73ff", "#003a87"], + ["#0a73ff", "#0a73ff"], + ["#0a73ff60", "#0a73ff60"], +]; + +export const moduleInfo: ModuleInfo = [ + // 中间的几个模块 + { + name: "任务通过率", + icon: "icon-chart-bar", + }, + { + name: "地图数据", + icon: "icon-tongji4", + }, + { + name: "产品销售渠道分析", + icon: "icon-align-left", + }, + { + name: "任务完成排行榜", + icon: "icon-zhibiao2", + }, + // 底部两个模块 + { + name: "数据统计图", + icon: "icon-vector", + }, + { + name: "工单修复以及满意度统计图", + icon: "icon-fenxi7", + }, +]; diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..f815ffb --- /dev/null +++ b/src/main.ts @@ -0,0 +1,45 @@ +import { createApp } from "vue"; +import App from "./App.vue"; +import router from "./router/index"; +import store from "./store/index"; +//import dataV from '@jiaminghi/data-view';//引入dataV可能如果启动报错看这个https://blog.csdn.net/qq_54753561/article/details/125583526 +import echarts from "./components/echarts"; //echarts 根据官网封装的 +import DataVVue3 from "@kjgl77/datav-vue3"; //https://datav-vue3.netlify.app/Guide/index.html#%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95 +import * as XEUtils from "xe-utils"; +import ElementPlus from "element-plus"; +import "element-plus/dist/index.css"; +import zhCn from "element-plus/es/locale/lang/zh-cn"; +// 引入全局css +import "./assets/scss/style.scss"; +// 引入图表(所有图标见 icon 目录下的 demo_index.html) +import "./assets/icon/iconfont.css"; +import BaiduMap from "vue-baidu-map-3x"; +import BaiduMapOffline from "vue-baidu-map-offline"; +(window as any).XEUtils = XEUtils; +const app = createApp(App); +app.use(BaiduMapOffline, { + offline: true, + offlineConfig: { + imgext: ".png", + customstyle: "", + tiles_dir: "", + tiles_hybrid: "", + tiles_self: "", + tiles_v_dir: "", + tiles_satellite_dir: "", + tiles_road_dir: "", + tiles_v_road_dir: "", + home: "./plugin/offline/", + }, +}); +app.use(BaiduMap, { + // ak: 'Yp57V71dkOPiXjiN8VdcFRsVELzlVNKK', + ak: "RpQi6WNFZ9tseKzhdwOQsXwFsoVntnsN", + v: "3.0", +}); +app.config.globalProperties.$echarts = echarts; +app.use(DataVVue3); +app.use(ElementPlus, { + locale: zhCn, +}); +app.use(store).use(router).mount("#app"); diff --git a/src/mock/login.json b/src/mock/login.json new file mode 100644 index 0000000..ba00189 --- /dev/null +++ b/src/mock/login.json @@ -0,0 +1,19 @@ + [{ + "id": "1", + "imgUrl": "/images/banner1.jpg" + }, + { + "id": "2", + "imgUrl": "/images/banner2.jpg" + }, + { + "id": "3", + "imgUrl": "/images/banner3.jpg" + }, + { + "id": "4", + "imgUrl": "/images/banner4.jpg" + } + ] + + diff --git a/src/mock/login.ts b/src/mock/login.ts new file mode 100644 index 0000000..87c15ba --- /dev/null +++ b/src/mock/login.ts @@ -0,0 +1,17 @@ +import { MockMethod } from "vite-plugin-mock"; +import login from "./login.json" +//login是变量,可以随便命名 + +export default [ + { + url: "/mock-login", // 注意,这里只能是string格式 + method: "post", + response: () => { + return { + code: 0, + message: 'ok', + menusList:login, + } + }, + }, +] as MockMethod[] \ No newline at end of file diff --git a/src/router/index.ts b/src/router/index.ts new file mode 100644 index 0000000..1791ccc --- /dev/null +++ b/src/router/index.ts @@ -0,0 +1,27 @@ +import { createRouter, createWebHashHistory, RouteRecordRaw } from "vue-router"; +const routes: Array = [ + { + path: "/", + name: "Index", + component: () => import("@/views/SagTraceResult_WX/index.vue"), // 懒加载组件 + }, + { + path: "/VoltageSag", //电压暂降监测平台_北京 + name: "VoltageSag", + component: () => import("@/views/VoltageSag_BJ/index.vue"), // 懒加载组件 + }, + { + path: "/SagTraceResult", //暂降溯源演示平台_无锡 + name: "SagTraceResult", + component: () => import("@/views/SagTraceResult_WX/index.vue"), // 懒加载组件 + }, +]; + +const base_url = import.meta.env.BASE_URL; //获取vite.config.js配置的base,默认是根目录/ + +const router = createRouter({ + history: createWebHashHistory(base_url), + routes, +}); + +export default router; diff --git a/src/shims-vue.d.ts b/src/shims-vue.d.ts new file mode 100644 index 0000000..e4f2796 --- /dev/null +++ b/src/shims-vue.d.ts @@ -0,0 +1,15 @@ +declare module '*.vue' { + import { ComponentOptions } from 'vue' + const componentOptions: ComponentOptions + export default componentOptions +} + + +// /* eslint-disable */ +// declare module '*.vue' { +// import type { DefineComponent } from 'vue' +// const component: DefineComponent<{}, {}, any> +// export default component +// } + +declare module '@jiaminghi/data-view' \ No newline at end of file diff --git a/src/store/index.ts b/src/store/index.ts new file mode 100644 index 0000000..8310ec7 --- /dev/null +++ b/src/store/index.ts @@ -0,0 +1,119 @@ +import { createStore, Store, useStore } from "vuex"; +import { login } from "@/api/login/login"; +import { initLedger, queryConfig } from "@/api/statistics/index"; +// const store = useStore(); + +// 定义状态接口 +interface State { + count: number; + token: string; + deptId: string; + timeType: number; + timeValue: string[]; + seriousNotice: number; + normalNotic: number; + voiceType: number; + screenNotic: number; + eventTypeList: string[]; + eventValue: number; + eventDuration: number; + realData: []; //实时数据 +} + +// 初始状态 +const state: State = { + count: 0, + token: "", + deptId: "10001", + timeType: 3, //类型(1年 2季度 3月份 4周 5日)") + timeValue: [], //类型(1年 2季度 3月份 4周 5日)") + seriousNotice: 0, //严重通知(0关闭 1开启) + normalNotic: 1, //普通通知(0关闭 1开启) + voiceType: 1, //语音类型(1人声音 2音频) + screenNotic: 1, //屏幕通知(0关闭 1开启) + eventTypeList: [], //触发类型(1告警 2事件) + eventValue: 0.7, + eventDuration: 5, + realData: [], //实时数据 +}; + +// 定义Mutation类型 +enum Mutations { + INCREMENT = "INCREMENT", + SET_TOKEN = "SET_TOKEN", + SET_TIME = "SET-TIME", + SET_CONFIG = "SET-CONFIG-TIME", +} + +export default createStore({ + state, + mutations: { + [Mutations.INCREMENT](state: State) { + state.count++; + }, + [Mutations.SET_TOKEN](state: State, data: any) { + window.sessionStorage.setItem("token", data.token); + window.sessionStorage.setItem("deptId", data.deptId); + state.token = data.token; + state.deptId = data.deptId; + }, + [Mutations.SET_TIME](state: State, data: any) { + state.timeType = data.type; + state.timeValue = data.value; + }, + [Mutations.SET_CONFIG](state: State, data: any) { + state.seriousNotice = data.seriousNotice; + state.normalNotic = data.normalNotic; + state.voiceType = data.voiceType; + state.screenNotic = data.screenNotic; + state.eventTypeList = data.eventTypeList; + state.eventValue = data.eventValue; + state.eventDuration = data.eventDuration; + }, + SET_REAL_DATA(state, data) { + state.realData = data; + }, + }, + actions: { + async loginAction({ commit }, data: any) { + try { + // const response = await login({ + // username: "screen", + // password: "@#001njcnpqs", + // }); + const response = await login(data); + commit(Mutations.SET_TOKEN, response.data); + + // await initLedger({ deptId: response.data.deptId, type: 0 }); + return; + + return response.data; + } catch (error) { + console.error("登录失败:", error); + throw error; + } + }, + increment({ commit }) { + commit(Mutations.INCREMENT); + }, + setTimeType({ commit }, data: any) { + commit(Mutations.SET_TIME, data); + }, + setConfig({ commit }, data: any) { + queryConfig().then((res) => { + commit(Mutations.SET_CONFIG, res.data); + }); + }, + updateRealData({ commit }, data) { + commit("SET_REAL_DATA", data); + }, + }, + getters: { + double(state: State) { + return 2 * state.count; + }, + isAuthenticated(state: State) { + return !!state.token; + }, + }, +}); diff --git a/src/utils/color.ts b/src/utils/color.ts new file mode 100644 index 0000000..3e1ad70 --- /dev/null +++ b/src/utils/color.ts @@ -0,0 +1,54 @@ +/** + * 根据数值排名自动分配颜色 + * @param {Array} data - 包含 name 和 value 的对象数组 + * @returns {Array} - 添加了 color 属性的新数组 + */ +export const assignColorsByRank = (data: any) => { + // 复制原数组避免修改 + const sortedData = [...data].sort((a, b) => b.value - a.value); + const totalCount = sortedData.length; + + // 计算各区间边界(向上取整确保覆盖所有数据) + const top20Percent = Math.ceil(totalCount * 0.2); + const middle60Percent = Math.ceil(totalCount * 0.8); + + return sortedData.map((item, index) => { + // 处理 value 为 0 的特殊情况 + if (item.value === 0) { + return { + ...item, + itemStyle: { + color: "#4D96FA", + opacity: 0.5, + }, + }; // 蓝色 + } + + // 根据排名分配颜色 + if (index < top20Percent) { + return { + ...item, + itemStyle: { + color: "#FF0000", + opacity: 0.5, + }, + }; // 红色 - 前20% + } else if (index < middle60Percent) { + return { + ...item, + itemStyle: { + color: "#FF9800", + opacity: 0.5, + }, + }; // 橙色 - 中间60% + } else { + return { + ...item, + itemStyle: { + color: "#4CAF50", + opacity: 0.5, + }, + }; // 绿色 - 后20% + } + }); +}; diff --git a/src/utils/common.ts b/src/utils/common.ts new file mode 100644 index 0000000..070dac4 --- /dev/null +++ b/src/utils/common.ts @@ -0,0 +1,86 @@ +import type { App } from 'vue' + + + +/** + * 获取资源完整地址 + * @param relativeUrl 资源相对地址 + * @param domain 指定域名 + */ +export const fullUrl = (relativeUrl: string, domain = '') => { + return domain + '/api/system-boot/image/toStream?bgImage=' + relativeUrl +} + +/** + * 是否是外部链接 + * @param path + */ +export function isExternal(path: string): boolean { + return /^(https?|ftp|mailto|tel):/.test(path) +} + + +/** + * 字符串补位 + */ +const padStart = (str: string, maxLength: number, fillString = ' ') => { + if (str.length >= maxLength) return str + + const fillLength = maxLength - str.length + let times = Math.ceil(fillLength / fillString.length) + while ((times >>= 1)) { + fillString += fillString + if (times === 1) { + fillString += fillString + } + } + return fillString.slice(0, fillLength) + str +} + +/** + * 格式化时间戳 + * @param dateTime 时间戳 + * @param fmt 格式化方式,默认:yyyy-mm-dd hh:MM:ss + */ +export const timeFormat = (dateTime: string | number | null = null, fmt = 'yyyy-mm-dd hh:MM:ss') => { + if (dateTime == 'none') return '-' + if (!dateTime) dateTime = Number(new Date()) + if (dateTime.toString().length === 10) { + dateTime = +dateTime * 1000 + } + + const date = new Date(dateTime) + let ret + const opt: any = { + '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 (const k in opt) { + ret = new RegExp('(' + k + ')').exec(fmt) + if (ret) { + fmt = fmt.replace(ret[1], ret[1].length == 1 ? opt[k] : padStart(opt[k], ret[1].length, '0')) + } + } + return fmt +} + +/** + * el-form 密码正则校验 密码需要包含特殊字符字母数字,长度为8-16 + */ +export const validatePwd = (rule: any, value: string, callback: any) => { + if (value === '') { + callback(new Error('请输入密码')) + } else { + const reg = /^(?=.*[A-Za-z])(?=.*\d)(?=.*[@#$%^&+=!])(?=.*[a-zA-Z0-9])[A-Za-z\d@#$%^&+=!]{8,16}$/ + if (!reg.test(value)) { + callback(new Error('密码需要包含特殊字符字母数字,长度为8-16')) + } else { + callback() + } + } + +} diff --git a/src/utils/echartMethod.ts b/src/utils/echartMethod.ts new file mode 100644 index 0000000..f625a8e --- /dev/null +++ b/src/utils/echartMethod.ts @@ -0,0 +1,159 @@ +const dataProcessing = (arr: any[]) => { + return arr + .filter(item => typeof item === 'number' || (typeof item === 'string' && !isNaN(parseFloat(item)))) + .map(item => (typeof item === 'number' ? item : parseFloat(item))) +} +const calculateValue = (o: number, value: number, num: number, isMin: boolean) => { + if (value === 0) { + return 0 + } else if (value > 0 && Math.abs(value) < 1 && isMin == true) { + return 0 + } else if (value > -1 && value < 0 && isMin == false) { + return 0 + } + let base + if (Math.abs(o) >= 100) { + base = 100 + } else if (Math.abs(o) >= 10) { + base = 10 + } else if (Math.abs(o) >= 1) { + base = 1 + } else { + base = 0.1 + } + let calculatedValue + if (isMin) { + if (value < 0) { + calculatedValue = value + num * value + } else { + calculatedValue = value - num * value + } + } else { + if (value < 0) { + calculatedValue = value - num * value + } else { + calculatedValue = value + num * value + } + } + if (base === 0.1) { + return parseFloat(calculatedValue.toFixed(1)) + } else if (isMin) { + return Math.floor(calculatedValue / base) * base + } else { + return Math.ceil(calculatedValue / base) * base + } +} + +// 处理y轴最大最小值 +export const yMethod = (arr: any) => { + let num = 0.1 + let numList = dataProcessing(arr) + let maxValue = 0 + let minValue = 0 + let max = 0 + let min = 0 + maxValue = Math.max(...numList) + minValue = Math.min(...numList) + const o = maxValue - minValue + if (Math.abs(o) >= 300) { + num = 0.02 + } + + min = calculateValue(o, minValue, num, true) + max = calculateValue(o, maxValue, num, false) + // if (-100 >= minValue) { + // min = Math.floor((minValue + num * minValue) / 100) * 100 + // } else if (-10 >= minValue && minValue > -100) { + // min = Math.floor((minValue + num * minValue) / 10) * 10 + // } else if (-1 >= minValue && minValue > -10) { + // min = Math.floor(minValue + num * minValue) + // } else if (0 > minValue && minValue > -1) { + // min = parseFloat((minValue + num * minValue).toFixed(1)) + // } else if (minValue == 0) { + // min = 0 + // } else if (0 < minValue && minValue < 1) { + // min = parseFloat((minValue - num * minValue).toFixed(1)) + // } else if (1 <= minValue && minValue < 10) { + // min = Math.floor(minValue - num * minValue) + // } else if (10 <= minValue && minValue < 100) { + // min = Math.floor((minValue - num * minValue) / 10) * 10 + // } else if (100 <= minValue) { + // min = Math.floor((minValue - num * minValue) / 100) * 100 + // } + + // if (-100 >= maxValue) { + // max = Math.ceil((maxValue - num * maxValue) / 100) * 100 + // } else if (-10 >= maxValue && maxValue > -100) { + // max = Math.ceil((maxValue - num * maxValue) / 10) * 10 + // } else if (-1 >= maxValue && maxValue > -10) { + // max = Math.ceil(maxValue - num * maxValue) + // } else if (0 > maxValue && maxValue > -1) { + // max = parseFloat((maxValue - num * maxValue).toFixed(1)) + // } else if (maxValue == 0) { + // max = 0 + // } else if (0 < maxValue && maxValue < 1) { + // max = parseFloat((maxValue + num * maxValue).toFixed(1)) + // } else if (1 <= maxValue && maxValue < 10) { + // max = Math.ceil(maxValue + num * maxValue) + // } else if (10 <= maxValue && maxValue < 100) { + // max = Math.ceil((maxValue + num * maxValue) / 10) * 10 + // } else if (100 <= maxValue) { + // max = Math.ceil((maxValue + num * maxValue) / 100) * 100 + // } + + // if (maxValue > 1000 || minValue < -1000) { + // max = Math.ceil(maxValue / 100) * 100 + // if (minValue == 0) { + // min = 0 + // } else { + // min = Math.floor(minValue / 100) * 100 + // } + // } else if (maxValue < 60 && minValue > 40) { + // max = 60 + // min = 40 + // } else if (maxValue == minValue && maxValue < 10 && minValue > 0) { + // max = Math.ceil(maxValue / 10) * 10 + // min = Math.floor(minValue / 10) * 10 + // } else if (maxValue == minValue && maxValue != 0 && minValue != 0) { + // max = Math.ceil(maxValue / 10 + 1) * 10 + // min = Math.floor(minValue / 10 - 1) * 10 + // } else { + // max = Math.ceil(maxValue / 10) * 10 + // min = Math.floor(minValue / 10) * 10 + // } + + // if (maxValue > 0 && maxValue < 1) { + // max = 1 + // } else if (max == 0 && minValue > -1 && minValue < 0) { + // min = -1 + // } + + return [min, max] +} + +/** + * title['A相','B相',] + * data[[1,2],[3,4]] + */ +// 导出csv文件 +const convertToCSV = (title: any, data: any) => { + console.log('🚀 ~ convertToCSV ~ data:', data) + let csv = '' + // 添加列头 + csv += ',' + title.join(',') + '\n' + // 遍历数据并添加到CSV字符串中 + data?.map(item => { + csv += item.join(',') + '\n' + }) + return csv +} +export const exportCSV = (title: object, data: any, filename: string) => { + const csv = convertToCSV(title, data) + const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' }) + const link = document.createElement('a') + link.href = URL.createObjectURL(blob) + link.download = filename + link.click() + // 释放URL对象 + URL.revokeObjectURL(link.href) +} diff --git a/src/utils/error-code-type.ts b/src/utils/error-code-type.ts new file mode 100644 index 0000000..d7fb258 --- /dev/null +++ b/src/utils/error-code-type.ts @@ -0,0 +1,21 @@ +// 封装请求错误代码提示 +export const errorCodeType = function (code: string): string { + let msg: string = "" + switch (code) { + case "401": + msg = '认证失败,无法访问系统资源' + break; + case "403": + msg = '当前操作没有权限' + break; + case "404": + msg = '访问资源不存在' + break; + case "default": + msg = '系统未知错误,请反馈给管理员' + break; + default: + return '未知错误,请联系管理员' + } + return msg +} \ No newline at end of file diff --git a/src/utils/index.ts b/src/utils/index.ts new file mode 100644 index 0000000..211e453 --- /dev/null +++ b/src/utils/index.ts @@ -0,0 +1,115 @@ +import { ElSkeletonItem } from "element-plus"; + +/** + * @param {date} time 需要转换的时间 + * @param {String} fmt 需要转换的格式 如 yyyy-MM-dd、yyyy-MM-dd HH:mm:ss + * @returns {String} + */ +export const formatTime = (time: string | 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 const speak = (content: any, onComplete: Function = () => {}) => { + // 检查浏览器是否支持语音合成 + if (!window.speechSynthesis) { + console.warn("当前浏览器不支持语音合成功能"); + return; + } + + const utterance = new SpeechSynthesisUtterance(content); + utterance.lang = "zh-CN"; + utterance.rate = 1; + utterance.rate = 1.5; + + // 设置结束回调(通过参数传递) + utterance.onend = () => { + onComplete(); + }; + + // 播放语音 + window.speechSynthesis.speak(utterance); +}; +// 关闭语音播报 +export const stopSpeak = () => { + (document.getElementById("audioId") as HTMLAudioElement)?.pause(); + window.speechSynthesis.cancel(); +}; +/** + * 获取时间范围 + * @param {number} option - 1表示本周,3表示本月 + * @returns {{start: Date, end: Date}} - 包含开始时间和结束时间的对象 + */ +export const getDateRange = (option: number) => { + console.log("🚀 ~ getDateRange ~ option:", option); + const now = new Date(); + if (option === 1) { + //年 + const firstDay = new Date(now.getFullYear(), 0, 1); + + const lastDay = new Date(now.getFullYear(), now.getMonth(), now.getDate()); + + return formatDate(firstDay) + " 至 " + formatDate(lastDay); + } + ElSkeletonItem; + if (option === 3) { + // 获取本月日期范围 + // 本月第一天 + const firstDay = new Date(now.getFullYear(), now.getMonth(), 1); + + // 本月最后一天 + const lastDay = new Date(now.getFullYear(), now.getMonth() + 1, 0); + + return formatDate(firstDay) + " 至 " + formatDate(lastDay); + } else if (option === 4) { + // 获取本周日期范围 + // 计算周一的日期 + const monday = new Date(now); + monday.setDate(now.getDate() - now.getDay() + 1); + + // 计算周日的日期 + const sunday = new Date(now); + sunday.setDate(now.getDate() - now.getDay() + 7); + + return formatDate(monday) + " 至 " + formatDate(sunday); + } else if (option === 6) { + // 获取本月日期范围 + // 本月第一天 + return formatDate(now); + } +}; +/** + * 格式化日期为YYYY-MM-DD格式 + * @param {Date} date - 要格式化的日期对象 + * @returns {string} - 格式化后的日期字符串 + */ +function formatDate(date: Date) { + const year = date.getFullYear(); + const month = String(date.getMonth() + 1).padStart(2, "0"); + const day = String(date.getDate()).padStart(2, "0"); + return `${year}-${month}-${day}`; +} diff --git a/src/utils/page-params.ts b/src/utils/page-params.ts new file mode 100644 index 0000000..e9e3ea6 --- /dev/null +++ b/src/utils/page-params.ts @@ -0,0 +1,11 @@ +// 全局统一分页参数类型声明 +declare interface PageParams { + pageNum: number, + pageSize: number, + type?: Model, // 可选参数 + readonly sort?: string // 只读可选参数 +} +interface Model { + type?: string +} +export default PageParams; \ No newline at end of file diff --git a/src/utils/request.ts b/src/utils/request.ts new file mode 100644 index 0000000..6f00e3d --- /dev/null +++ b/src/utils/request.ts @@ -0,0 +1,172 @@ +import axios from "axios"; +import { errorCodeType } from "./error-code-type"; +import { ElMessage } from "element-plus"; +import store from "@/store/index"; + +const service = axios.create({ + baseURL: "/api", + timeout: 60 * 1000, + headers: { "Content-Type": "application/json;charset=utf-8" }, +}); + +// 认证状态管理 +let isAuthenticated = false; +let isAuthenticating = false; +const requestQueue: Array<() => void> = []; + +// 执行队列中的请求 +const executeQueue = () => { + while (requestQueue.length > 0) { + const nextRequest = requestQueue.shift(); + if (nextRequest) nextRequest(); + } +}; + +// 请求拦截器 +service.interceptors.request.use( + (config) => { + const isAuthRequest = config.url === "/cn_authenticate"; + + if (!isAuthRequest) { + if (isAuthenticating) { + return new Promise((resolve) => { + requestQueue.push(() => { + resolve(service(config)); + }); + }); + } + + const token = window.sessionStorage.getItem("token"); + if (token) { + config.headers["Authorization"] = `Bearer ${token}`; + } + + if (!isAuthenticated) { + return new Promise((resolve) => { + requestQueue.push(() => { + resolve(service(config)); + }); + }); + } + } else { + if (isAuthenticating) { + return Promise.reject({ message: "认证中", isHandled: true }); + } + isAuthenticating = true; + config.headers["Authorization"] = ""; + } + + // get请求参数处理(保持原逻辑) + // if (config.method === "get" && config.params) { + // // 这里用 toLowerCase() 确保兼容 + // let url = config.url + "?"; + // for (const propName of Object.keys(config.params)) { + // const value = config.params[propName]; + // const part = encodeURIComponent(propName) + "="; + // if (value !== null && typeof value !== "undefined") { + // if (typeof value === "object") { + // for (const key of Object.keys(value)) { + // const params = propName + "[" + key + "]"; + // const subPart = encodeURIComponent(params) + "="; + // url += subPart + encodeURIComponent(value[key]) + "&"; + // } + // } else { + // url += part + encodeURIComponent(value) + "&"; + // } + // } + // } + // url = url.slice(0, -1); + // config.params = {}; + // config.url = url; + // } + return config; + }, + (error) => { + console.log(error); + return Promise.reject(error); + } +); + +// 响应拦截器(保持原逻辑,略作兼容处理) +let refreshQueue: any = []; +let isRefreshing = false; + +service.interceptors.response.use( + (res) => { + if (res.config.url === "/cn_authenticate") { + isAuthenticating = false; + + if (res.data.code === "A0000") { + isAuthenticated = true; + setTimeout(executeQueue, 1000); + } else { + isAuthenticated = false; + setTimeout(executeQueue, 1000); + } + } + + const code = res.data["code"] || "A0000"; + const msg = + errorCodeType(code) || res.data["msg"] || errorCodeType("default"); + + if (code === "A0000") { + return Promise.resolve(res.data); + } else if (code === "A0025") { + isAuthenticated = false; + const originalRequest = res.config; + + if (!isRefreshing) { + isRefreshing = true; + return store + .dispatch( + "loginAction", + JSON.parse(window.localStorage.getItem("adminInfo") || "{}") + ) + .then(() => { + isAuthenticated = true; + refreshQueue.forEach((callback: any) => callback()); + refreshQueue = []; + return service(originalRequest); + }) + .catch((err) => { + console.error("刷新失败:", err); + refreshQueue.forEach((callback: any) => callback()); + refreshQueue = []; + return Promise.reject(err); + }) + .finally(() => { + isRefreshing = false; + }); + } else { + return new Promise((resolve) => { + refreshQueue.push(() => resolve(service(originalRequest))); + }); + } + } else { + return Promise.reject(res.data); + } + }, + (error) => { + if (error.isHandled) return Promise.reject(error); + + if (error.config?.url === "/cn_authenticate") { + isAuthenticating = false; + isAuthenticated = false; + setTimeout(executeQueue, 1000); + } + + console.log("err" + error); + let { message } = error; + if (message === "Network Error") { + message = "后端接口连接异常"; + } else if (message.includes("timeout")) { + message = "系统接口请求超时"; + } else if (message.includes("Request failed with status code")) { + message = `系统接口${message.substr(message.length - 3)}异常`; + } + + return Promise.reject(error); + } +); + +export default service; diff --git a/src/utils/request_wx.ts b/src/utils/request_wx.ts new file mode 100644 index 0000000..997bd4d --- /dev/null +++ b/src/utils/request_wx.ts @@ -0,0 +1,63 @@ +import axios from 'axios' +import type { AxiosInstance, AxiosRequestConfig } from 'axios' + +class HttpRequest { + private readonly baseUrl: string + constructor() { + this.baseUrl = '/api' + } + getInsideConfig() { + const config = { + baseURL: this.baseUrl, // 所有的请求地址前缀部分(没有后端请求不用写) + timeout: 80000 // 请求超时时间(毫秒) + } + return config + } + + // 请求拦截 + interceptors(instance: AxiosInstance, url: string | number | undefined) { + instance.interceptors.request.use( + config => { + // 添加全局的loading.. + // config.headers['Authorization'] = + // 'bearer ' + JSON.parse(window.localStorage.getItem('adminInfo') || '{}').access_token; // 请求头带上token token要在登录的时候保存在localStorage中 + // console.log( + // "🚀 ~ requestHandler ~ config.headers['Authorization']:", + // JSON.parse(window.localStorage.getItem('adminInfo') || '{}'), + // config.headers + // ); + + config.headers['Authorization'] = + 'bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySW5kZXgiOiJmYTM3YjkzY2M5MGQ0YzE3ODRjYThmNmRlYmRkZWUxYSIsInVzZXJfbmFtZSI6InJvb3QiLCJzY29wZSI6WyJhbGwiXSwibmlja25hbWUiOiLotoXnuqfnrqHnkIblkZgiLCJ1c2VyVHlwZSI6MCwiZGVwdEluZGV4IjoiNTY5OWU1OTE2YTE4YTYzODFlMWFjOTJkYTViZDI2MjgiLCJleHAiOjE4MjE4MTc2MTksImF1dGhvcml0aWVzIjpbInJvb3QiXSwianRpIjoiMmJiM2Q5ZTYtNmY3Yy00Yjg1LThiM2EtZDI2ODdmMTUzMDg5IiwiY2xpZW50X2lkIjoibmpjbnRlc3QiLCJoZWFkU2N1bHB0dXJlIjoicmVzb3VyY2VEYXRhLzMxNzRDRUFFOUQ0MjRGMjJCQjkxQTU4OURENjdCMDUxLmpwZyJ9.WjeYl1lvvJdDE1FUGIhS99rE5qKaBXOypWxmxK0svWweGqEbu1XCLjKm_YkiTwjZJ_oIcn5JOO9rvHFkkea76BUsYo5wlzuBBiy7sKqM1fFzOFQq6hdFevNTJAbYH9FiBxYxI-e9DZ5mvLGE6umOjUfn_FAsku2w6Uj5DtvpOKBWYzLEPTEifOqNI9he4zJAmVZniUUMf26SDoEdfu0TyrIS1j_qKaEb-cqR1XDhivdthEBK5m9vxJyXFZ5kofNxwQQkit_oiqJRkCZIt9TWAjCh-frzMHCvA30hkAr-VCD2JfCmmEr3hW_lmwfINaPtFVbHCdCKqdrl6VmF1HObaQ' + // 请求头携带token + return config + }, + (error: any) => { + return Promise.reject(error) + } + ) + //响应拦截 + instance.interceptors.response.use( + res => { + //返回数据 + const { data } = res + // console.log('返回数据处理', res) + return data + }, + (error: any) => { + console.log('error==>', error) + return Promise.reject(error) + } + ) + } + + request(options: AxiosRequestConfig) { + const instance = axios.create() + options = Object.assign(this.getInsideConfig(), options) + this.interceptors(instance, options.url) + return instance(options) + } +} + +const http = new HttpRequest() +export default http diff --git a/src/utils/useDraw.ts b/src/utils/useDraw.ts new file mode 100644 index 0000000..6079da6 --- /dev/null +++ b/src/utils/useDraw.ts @@ -0,0 +1,71 @@ +import { ref } from "vue"; + +export default function useDraw() { + // 指向最外层容器 + const appRef = ref(); + // 定时函数 + const timer:any = ref(0); + // 默认缩放值 + const scale = { + width: "1", + height: "1", + }; + // 设计稿尺寸(px) + const baseWidth = 1920; + const baseHeight = 1080; + + // 需保持的比例 + const baseProportion = parseFloat((baseWidth / baseHeight).toFixed(5)); + const calcRate = () => { + // 当前宽高比 + const currentRate = parseFloat( + (window.innerWidth / window.innerHeight).toFixed(5) + ); + if (appRef.value) { + if (currentRate > baseProportion) { + // 表示更宽 + scale.width = ( + (window.innerHeight * baseProportion) / + baseWidth + ).toFixed(5); + scale.height = (window.innerHeight / baseHeight).toFixed(5); + appRef.value.style.transform = `scale(${scale.width}, ${scale.height}) translate(-50%, -50%)`; + } else { + // 表示更高 + scale.height = ( + window.innerWidth / + baseProportion / + baseHeight + ).toFixed(5); + scale.width = (window.innerWidth / baseWidth).toFixed(5); + appRef.value.style.transform = `scale(${scale.width}, ${scale.height}) translate(-50%, -50%)`; + } + window.sessionStorage.setItem("scaleWidth", scale.width); + window.sessionStorage.setItem("scaleheight", scale.height); + } + }; + + const resize = () => { + clearTimeout(timer.value); + timer.value = setTimeout(() => { + calcRate(); + }, 200); + }; + + // 改变窗口大小重新绘制 + const windowDraw = () => { + window.addEventListener("resize", resize); + }; + + // 改变窗口大小重新绘制 + const unWindowDraw = () => { + window.removeEventListener("resize", resize); + }; + + return { + appRef, + calcRate, + windowDraw, + unWindowDraw, + }; +} diff --git a/src/utils/webSocketClient.ts b/src/utils/webSocketClient.ts new file mode 100644 index 0000000..0001684 --- /dev/null +++ b/src/utils/webSocketClient.ts @@ -0,0 +1,210 @@ +import { ElMessage, EVENT_CODE } from "element-plus"; + +// 定义消息类型,用于类型检查 +type MessageType = { + [key: string]: any; +}; + +export default class SocketService { + // 单例模式实例 + private static instance: SocketService | null = null; + // 和服务端连接的socket对象 + private ws: WebSocket | null = null; + // 存储回调函数 + private callBackMapping: { + [key: string]: ((message: MessageType) => void) | null; + } = {}; + // 标识是否连接成功 + private connected: boolean = false; + // 记录重试的次数 + private sendRetryCount: number = 0; + // 重新连接尝试的次数 + private connectRetryCount: number = 0; + // Web Worker 实例 + private work: Worker | null = null; + // 临时的 Blob URL + private workerBlobUrl: string | null = null; + // 上次活动时间戳 + private lastActivityTime: number = 0; + // 最后一次收到心跳回复时间 + private lastResponseHeartTime: number = Date.now(); + // 重新连接延迟,单位毫秒 + private reconnectDelay: number = 5000; + + // 单例模式获取实例 + public static get Instance(): SocketService { + if (!this.instance) { + this.instance = new SocketService(); + } + return this.instance; + } + + // 定义连接服务器的方法 + public async connect(id: any) { + if (!window.WebSocket) { + console.log("您的浏览器不支持WebSocket"); + return; + } + + // const response = await fetch("/vue/"); + const response = await fetch(""); + + const mqttUrl = response.headers.get("X-Mqtt-Url"); + console.log("🚀 ~ SocketService ~ connect ~ mqttUrl:", mqttUrl); + setTimeout(() => { + //"ws://10.156.193.182:18093/ws/screen" 北京 + //"ws://192.168.1.130:19001/ws/askRealTimeData/" 无锡 + const url = (mqttUrl || "ws://192.168.1.127:19001/ws/") + id; + // const url = (mqttUrl || "ws://192.168.1.63:18093/ws/screen") + id; + console.log("🚀 ~ SocketService ~ connect ~ url:", url); + this.ws = new WebSocket(url); + + this.ws.onopen = () => this.handleOpen(); + this.ws.onclose = () => this.handleClose(); + this.ws.onerror = () => this.handleError(); + this.ws.onmessage = (event) => this.handleMessage(event); + }, 0); + } + + // 处理连接成功事件 + private handleOpen(): void { + ElMessage.success("webSocket连接服务端成功了"); + console.log("连接服务端成功了"); + this.connected = true; + this.connectRetryCount = 0; + this.updateLastActivityTime(); + this.startHeartbeat(); + } + + // 处理连接关闭事件 + private handleClose(): void { + console.log("连接webSocket服务端关闭"); + this.connected = false; + this.connectRetryCount++; + this.clearHeartbeat(); + // 可根据需要添加重连逻辑 + // setTimeout(() => this.connect(), 500 * this.connectRetryCount); + } + + // 处理连接错误事件 + private handleError(): void { + ElMessage.error("webSocket连接异常!"); + } + + // 处理服务端发送过来的数据 + private handleMessage(event: MessageEvent): void { + // console.log('🚀 ~ SocketService ~ handleMessage ~ event.data:', event.data) + + if (event.data == "连接成功") { + this.sendHeartbeat(); + } else if (event.data.length > 10) { + let message: MessageType; + try { + // console.log( + // 'Received message:', event.data) + message = JSON.parse(event.data); + this.callBackMapping["message"]!(message); + } catch (e) { + // console.error("消息解析失败", event.data, e); + return; + } + // console.log("🚀 ~ SocketService ~ handleMessage ~ message:", message) + + // this.callBackMapping["message"]!(message); + } else { + // ElMessage.error(event.data); + } + } + + // 启动心跳检测 + private startHeartbeat(): void { + this.lastResponseHeartTime = Date.now(); + const url = window.URL.createObjectURL( + new Blob([ + "(function(e){setInterval(function(){this.postMessage(null)},30000)})()", + ]) + ); + this.workerBlobUrl = url; + this.work = new Worker(url); + this.work.onmessage = (e) => this.handleWorkerMessage(e); + } + + // 处理 Web Worker 消息 + private handleWorkerMessage(e: MessageEvent): void { + // if (this.lastActivityTime - this.lastResponseHeartTime > 30000) { + // // 说明已经三轮心跳没收到回复了,关闭检测,提示用户。 + // // ElMessage.error('业务主体模块发生未知异常,请尝试重新启动!') + // this.clearHeartbeat() + // return + // } + // console.log(123); + + this.sendHeartbeat(); + } + + // 发送心跳消息 + private sendHeartbeat(): void { + // console.log(new Date() + '进入心跳消息发送。。。。。。。。。。。。。') + if (this.ws) { + this.ws.send("alive"); + this.updateLastActivityTime(); + } + } + + // 更新活动时间 + private updateLastActivityTime(): void { + this.lastActivityTime = Date.now(); + } + + // 清除心跳检测 + private clearHeartbeat(): void { + if (this.work) { + this.work.terminate(); + this.work = null; + } + if (this.workerBlobUrl) { + window.URL.revokeObjectURL(this.workerBlobUrl); + this.workerBlobUrl = null; + } + } + + // 回调函数的注册 + public registerCallBack( + socketType: string, + callBack: (message: MessageType) => void + ): void { + this.callBackMapping[socketType] = callBack; + } + + // 取消某一个回调函数 + public unRegisterCallBack(socketType: string): void { + this.callBackMapping[socketType] = null; + } + + // 发送数据的方法 + public send(data: any): void { + if (this.connected) { + this.sendRetryCount = 0; + try { + if (this.ws) { + this.ws.send(JSON.stringify(data)); + } + } catch (e) { + if (this.ws) { + this.ws.send(data); + } + } + } else { + this.sendRetryCount++; + setTimeout(() => this.send(data), this.sendRetryCount * 500); + } + } + + // 断开方法 + public closeWs(): void { + if (this.connected && this.ws) { + this.ws.close(); + } + console.log("执行WS关闭命令.."); + } +} diff --git a/src/views/SagTraceResult_WX/components/eventStatistics/amplifyDeatil.vue b/src/views/SagTraceResult_WX/components/eventStatistics/amplifyDeatil.vue new file mode 100644 index 0000000..bdfbbfd --- /dev/null +++ b/src/views/SagTraceResult_WX/components/eventStatistics/amplifyDeatil.vue @@ -0,0 +1,89 @@ + + + + diff --git a/src/views/SagTraceResult_WX/components/eventStatistics/calculation.vue b/src/views/SagTraceResult_WX/components/eventStatistics/calculation.vue new file mode 100644 index 0000000..901a51f --- /dev/null +++ b/src/views/SagTraceResult_WX/components/eventStatistics/calculation.vue @@ -0,0 +1,68 @@ + + + + + diff --git a/src/views/SagTraceResult_WX/components/eventStatistics/collecting.vue b/src/views/SagTraceResult_WX/components/eventStatistics/collecting.vue new file mode 100644 index 0000000..264553b --- /dev/null +++ b/src/views/SagTraceResult_WX/components/eventStatistics/collecting.vue @@ -0,0 +1,337 @@ + + + + + diff --git a/src/views/SagTraceResult_WX/components/eventStatistics/completenessDetails.vue b/src/views/SagTraceResult_WX/components/eventStatistics/completenessDetails.vue new file mode 100644 index 0000000..6d4afd7 --- /dev/null +++ b/src/views/SagTraceResult_WX/components/eventStatistics/completenessDetails.vue @@ -0,0 +1,195 @@ + + + diff --git a/src/views/SagTraceResult_WX/components/eventStatistics/dipDetail.vue b/src/views/SagTraceResult_WX/components/eventStatistics/dipDetail.vue new file mode 100644 index 0000000..6bf4dc3 --- /dev/null +++ b/src/views/SagTraceResult_WX/components/eventStatistics/dipDetail.vue @@ -0,0 +1,262 @@ + + + diff --git a/src/views/SagTraceResult_WX/components/eventStatistics/dipDetailTotal.vue b/src/views/SagTraceResult_WX/components/eventStatistics/dipDetailTotal.vue new file mode 100644 index 0000000..4113c74 --- /dev/null +++ b/src/views/SagTraceResult_WX/components/eventStatistics/dipDetailTotal.vue @@ -0,0 +1,558 @@ + + + diff --git a/src/views/SagTraceResult_WX/components/eventStatistics/distributionNetwork.vue b/src/views/SagTraceResult_WX/components/eventStatistics/distributionNetwork.vue new file mode 100644 index 0000000..13469df --- /dev/null +++ b/src/views/SagTraceResult_WX/components/eventStatistics/distributionNetwork.vue @@ -0,0 +1,701 @@ + + + + + diff --git a/src/views/SagTraceResult_WX/components/eventStatistics/dropOffTable.vue b/src/views/SagTraceResult_WX/components/eventStatistics/dropOffTable.vue new file mode 100644 index 0000000..8d7cd13 --- /dev/null +++ b/src/views/SagTraceResult_WX/components/eventStatistics/dropOffTable.vue @@ -0,0 +1,255 @@ + + + diff --git a/src/views/SagTraceResult_WX/components/eventStatistics/index.vue b/src/views/SagTraceResult_WX/components/eventStatistics/index.vue new file mode 100644 index 0000000..731a75f --- /dev/null +++ b/src/views/SagTraceResult_WX/components/eventStatistics/index.vue @@ -0,0 +1,1384 @@ + + + diff --git a/src/views/SagTraceResult_WX/components/eventStatistics/system copy.vue b/src/views/SagTraceResult_WX/components/eventStatistics/system copy.vue new file mode 100644 index 0000000..7cf98a8 --- /dev/null +++ b/src/views/SagTraceResult_WX/components/eventStatistics/system copy.vue @@ -0,0 +1,667 @@ + + + + + diff --git a/src/views/SagTraceResult_WX/components/eventStatistics/system.vue b/src/views/SagTraceResult_WX/components/eventStatistics/system.vue new file mode 100644 index 0000000..baccb91 --- /dev/null +++ b/src/views/SagTraceResult_WX/components/eventStatistics/system.vue @@ -0,0 +1,982 @@ + + + + + diff --git a/src/views/SagTraceResult_WX/components/eventStatistics/traceabilityDetail.vue b/src/views/SagTraceResult_WX/components/eventStatistics/traceabilityDetail.vue new file mode 100644 index 0000000..403fea1 --- /dev/null +++ b/src/views/SagTraceResult_WX/components/eventStatistics/traceabilityDetail.vue @@ -0,0 +1,230 @@ + + + + diff --git a/src/views/SagTraceResult_WX/components/eventStatistics/trendChart.vue b/src/views/SagTraceResult_WX/components/eventStatistics/trendChart.vue new file mode 100644 index 0000000..712a576 --- /dev/null +++ b/src/views/SagTraceResult_WX/components/eventStatistics/trendChart.vue @@ -0,0 +1,653 @@ + + + + diff --git a/src/views/SagTraceResult_WX/components/manage/iframeDia.vue b/src/views/SagTraceResult_WX/components/manage/iframeDia.vue new file mode 100644 index 0000000..72efc52 --- /dev/null +++ b/src/views/SagTraceResult_WX/components/manage/iframeDia.vue @@ -0,0 +1,583 @@ + + + + + + + diff --git a/src/views/SagTraceResult_WX/components/manage/index.vue b/src/views/SagTraceResult_WX/components/manage/index.vue new file mode 100644 index 0000000..cd2f9a6 --- /dev/null +++ b/src/views/SagTraceResult_WX/components/manage/index.vue @@ -0,0 +1,651 @@ + + + + + + diff --git a/src/views/SagTraceResult_WX/components/manage/securityDetail.vue b/src/views/SagTraceResult_WX/components/manage/securityDetail.vue new file mode 100644 index 0000000..44347a0 --- /dev/null +++ b/src/views/SagTraceResult_WX/components/manage/securityDetail.vue @@ -0,0 +1,1015 @@ + + + + + diff --git a/src/views/SagTraceResult_WX/components/plan.vue b/src/views/SagTraceResult_WX/components/plan.vue new file mode 100644 index 0000000..33888bc --- /dev/null +++ b/src/views/SagTraceResult_WX/components/plan.vue @@ -0,0 +1,118 @@ + + + diff --git a/src/views/SagTraceResult_WX/components/scaleStatistics/devTable.vue b/src/views/SagTraceResult_WX/components/scaleStatistics/devTable.vue new file mode 100644 index 0000000..89045b3 --- /dev/null +++ b/src/views/SagTraceResult_WX/components/scaleStatistics/devTable.vue @@ -0,0 +1,262 @@ + + + diff --git a/src/views/SagTraceResult_WX/components/scaleStatistics/index.vue b/src/views/SagTraceResult_WX/components/scaleStatistics/index.vue new file mode 100644 index 0000000..12d3afc --- /dev/null +++ b/src/views/SagTraceResult_WX/components/scaleStatistics/index.vue @@ -0,0 +1,310 @@ + + + + + diff --git a/src/views/SagTraceResult_WX/components/scaleStatistics/lineTable.vue b/src/views/SagTraceResult_WX/components/scaleStatistics/lineTable.vue new file mode 100644 index 0000000..57749fc --- /dev/null +++ b/src/views/SagTraceResult_WX/components/scaleStatistics/lineTable.vue @@ -0,0 +1,177 @@ + + + diff --git a/src/views/SagTraceResult_WX/components/scaleStatistics/table.vue b/src/views/SagTraceResult_WX/components/scaleStatistics/table.vue new file mode 100644 index 0000000..82ddb46 --- /dev/null +++ b/src/views/SagTraceResult_WX/components/scaleStatistics/table.vue @@ -0,0 +1,216 @@ + + + diff --git a/src/views/SagTraceResult_WX/components/table.vue b/src/views/SagTraceResult_WX/components/table.vue new file mode 100644 index 0000000..266e553 --- /dev/null +++ b/src/views/SagTraceResult_WX/components/table.vue @@ -0,0 +1,129 @@ + + + diff --git a/src/views/SagTraceResult_WX/index.vue b/src/views/SagTraceResult_WX/index.vue new file mode 100644 index 0000000..b9fa5c9 --- /dev/null +++ b/src/views/SagTraceResult_WX/index.vue @@ -0,0 +1,431 @@ + + + + + + diff --git a/src/views/VoltageSag_BJ/components/alarm.vue b/src/views/VoltageSag_BJ/components/alarm.vue new file mode 100644 index 0000000..4d8bbac --- /dev/null +++ b/src/views/VoltageSag_BJ/components/alarm.vue @@ -0,0 +1,625 @@ + + + + + diff --git a/src/views/VoltageSag_BJ/components/bdMap.vue b/src/views/VoltageSag_BJ/components/bdMap.vue new file mode 100644 index 0000000..5fd7c28 --- /dev/null +++ b/src/views/VoltageSag_BJ/components/bdMap.vue @@ -0,0 +1,490 @@ + + + + diff --git a/src/views/VoltageSag_BJ/components/bottomText.vue b/src/views/VoltageSag_BJ/components/bottomText.vue new file mode 100644 index 0000000..61ad67a --- /dev/null +++ b/src/views/VoltageSag_BJ/components/bottomText.vue @@ -0,0 +1,376 @@ + + + diff --git a/src/views/VoltageSag_BJ/components/config.vue b/src/views/VoltageSag_BJ/components/config.vue new file mode 100644 index 0000000..b62d10e --- /dev/null +++ b/src/views/VoltageSag_BJ/components/config.vue @@ -0,0 +1,177 @@ + + + diff --git a/src/views/VoltageSag_BJ/components/endpointStatistics.vue b/src/views/VoltageSag_BJ/components/endpointStatistics.vue new file mode 100644 index 0000000..b225f9e --- /dev/null +++ b/src/views/VoltageSag_BJ/components/endpointStatistics.vue @@ -0,0 +1,252 @@ + + + + diff --git a/src/views/VoltageSag_BJ/components/eventStatistics.vue b/src/views/VoltageSag_BJ/components/eventStatistics.vue new file mode 100644 index 0000000..06a6f3c --- /dev/null +++ b/src/views/VoltageSag_BJ/components/eventStatistics.vue @@ -0,0 +1,373 @@ + + + + + diff --git a/src/views/VoltageSag_BJ/components/informationTable.vue b/src/views/VoltageSag_BJ/components/informationTable.vue new file mode 100644 index 0000000..0a8beb4 --- /dev/null +++ b/src/views/VoltageSag_BJ/components/informationTable.vue @@ -0,0 +1,622 @@ + + + + + diff --git a/src/views/VoltageSag_BJ/components/map.vue b/src/views/VoltageSag_BJ/components/map.vue new file mode 100644 index 0000000..e19f158 --- /dev/null +++ b/src/views/VoltageSag_BJ/components/map.vue @@ -0,0 +1,227 @@ + + + + diff --git a/src/views/VoltageSag_BJ/components/mapcopy.vue b/src/views/VoltageSag_BJ/components/mapcopy.vue new file mode 100644 index 0000000..bff3643 --- /dev/null +++ b/src/views/VoltageSag_BJ/components/mapcopy.vue @@ -0,0 +1,786 @@ + + + + diff --git a/src/views/VoltageSag_BJ/components/popUpFrame/alarmPopUpBox.vue b/src/views/VoltageSag_BJ/components/popUpFrame/alarmPopUpBox.vue new file mode 100644 index 0000000..cb1f749 --- /dev/null +++ b/src/views/VoltageSag_BJ/components/popUpFrame/alarmPopUpBox.vue @@ -0,0 +1,480 @@ + + + + + diff --git a/src/views/VoltageSag_BJ/components/popUpFrame/frequencyPopUp.vue b/src/views/VoltageSag_BJ/components/popUpFrame/frequencyPopUp.vue new file mode 100644 index 0000000..5e8185b --- /dev/null +++ b/src/views/VoltageSag_BJ/components/popUpFrame/frequencyPopUp.vue @@ -0,0 +1,482 @@ + + + + + diff --git a/src/views/VoltageSag_BJ/components/popUpFrame/sendPopUpBox.vue b/src/views/VoltageSag_BJ/components/popUpFrame/sendPopUpBox.vue new file mode 100644 index 0000000..6961e13 --- /dev/null +++ b/src/views/VoltageSag_BJ/components/popUpFrame/sendPopUpBox.vue @@ -0,0 +1,397 @@ + + + + + diff --git a/src/views/VoltageSag_BJ/components/popUpFrame/sensitivePopUpBox.vue b/src/views/VoltageSag_BJ/components/popUpFrame/sensitivePopUpBox.vue new file mode 100644 index 0000000..5939115 --- /dev/null +++ b/src/views/VoltageSag_BJ/components/popUpFrame/sensitivePopUpBox.vue @@ -0,0 +1,418 @@ + + + + + diff --git a/src/views/VoltageSag_BJ/components/popUpFrame/terminalPopUpBox.vue b/src/views/VoltageSag_BJ/components/popUpFrame/terminalPopUpBox.vue new file mode 100644 index 0000000..3f347b7 --- /dev/null +++ b/src/views/VoltageSag_BJ/components/popUpFrame/terminalPopUpBox.vue @@ -0,0 +1,411 @@ + + + + + diff --git a/src/views/VoltageSag_BJ/components/popUpFrame/userEventPopUpBox.vue b/src/views/VoltageSag_BJ/components/popUpFrame/userEventPopUpBox.vue new file mode 100644 index 0000000..d0cfbd9 --- /dev/null +++ b/src/views/VoltageSag_BJ/components/popUpFrame/userEventPopUpBox.vue @@ -0,0 +1,548 @@ + + + + + diff --git a/src/views/VoltageSag_BJ/components/popUpFrame/userLedgerPopUpBox.vue b/src/views/VoltageSag_BJ/components/popUpFrame/userLedgerPopUpBox.vue new file mode 100644 index 0000000..df17c22 --- /dev/null +++ b/src/views/VoltageSag_BJ/components/popUpFrame/userLedgerPopUpBox.vue @@ -0,0 +1,452 @@ + + + + + diff --git a/src/views/VoltageSag_BJ/components/sendTrends.vue b/src/views/VoltageSag_BJ/components/sendTrends.vue new file mode 100644 index 0000000..29fdce1 --- /dev/null +++ b/src/views/VoltageSag_BJ/components/sendTrends.vue @@ -0,0 +1,121 @@ + + + + diff --git a/src/views/VoltageSag_BJ/components/smsQueries.vue b/src/views/VoltageSag_BJ/components/smsQueries.vue new file mode 100644 index 0000000..00aa8ed --- /dev/null +++ b/src/views/VoltageSag_BJ/components/smsQueries.vue @@ -0,0 +1,219 @@ + + + diff --git a/src/views/VoltageSag_BJ/components/tablePopUpMap.vue b/src/views/VoltageSag_BJ/components/tablePopUpMap.vue new file mode 100644 index 0000000..65cfe16 --- /dev/null +++ b/src/views/VoltageSag_BJ/components/tablePopUpMap.vue @@ -0,0 +1,631 @@ + + + diff --git a/src/views/VoltageSag_BJ/index.vue b/src/views/VoltageSag_BJ/index.vue new file mode 100644 index 0000000..eccfc1e --- /dev/null +++ b/src/views/VoltageSag_BJ/index.vue @@ -0,0 +1,375 @@ + + + + + + diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..212129b --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,30 @@ +{ + "compilerOptions": { + "target": "ESNext", + "useDefineForClassFields": true, + "module": "ESNext", + "moduleResolution": "Node", + "strict": false, + "jsx": "preserve", + "resolveJsonModule": true, + "isolatedModules": true, + "esModuleInterop": true, + "lib": ["ESNext", "DOM"], + "skipLibCheck": true, + "noEmit": true, + "baseUrl": ".", + "allowJs": true, // 允许编译JavaScript文件 + "checkJs": false, // 不对JS文件进行类型检查(可选) + "paths": { + "@/*": ["src/*"] + } + }, + "include": [ + "src/**/*.ts", + "src/**/*.d.ts", + "src/**/*.tsx", + "src/**/*.vue", + "auto-imports.d.ts" +, "src/components/BX/shuWorker.js" ], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 0000000..0e07f88 --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "composite": true, + "module": "ESNext", + "moduleResolution": "Node", + "allowSyntheticDefaultImports": true, + "typeRoots": ["node_modules/@types", "src/types"] + }, + "include": ["vite.config.ts"] +}