ソースを参照

Merge branch 'master' of http://47.103.92.60:3003/skyversation/xujingtown_irflcmp_ui into lmx

DESKTOP-6LTVLN7\Liumouren 9 ヶ月 前
コミット
421524e92b

+ 373 - 8
package-lock.json

@@ -10,6 +10,7 @@
       "dependencies": {
         "axios": "^1.7.7",
         "dayjs": "^1.11.6",
+        "element-plus": "^2.8.2",
         "vue": "^3.2.13",
         "vue-router": "^4.0.3",
         "vuex": "^4.0.0"
@@ -181,6 +182,15 @@
         "node": ">=6.0.0"
       }
     },
+    "node_modules/@ctrl/tinycolor": {
+      "version": "3.6.1",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz",
+      "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=10"
+      }
+    },
     "node_modules/@discoveryjs/json-ext": {
       "version": "0.5.7",
       "resolved": "https://registry.npmmirror.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
@@ -190,6 +200,40 @@
         "node": ">=10.0.0"
       }
     },
+    "node_modules/@element-plus/icons-vue": {
+      "version": "2.3.1",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz",
+      "integrity": "sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==",
+      "license": "MIT",
+      "peerDependencies": {
+        "vue": "^3.2.0"
+      }
+    },
+    "node_modules/@floating-ui/core": {
+      "version": "1.6.7",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@floating-ui/core/-/core-1.6.7.tgz",
+      "integrity": "sha512-yDzVT/Lm101nQ5TCVeK65LtdN7Tj4Qpr9RTXJ2vPFLqtLxwOrpoxAHAJI8J3yYWUc40J0BDBheaitK5SJmno2g==",
+      "license": "MIT",
+      "dependencies": {
+        "@floating-ui/utils": "^0.2.7"
+      }
+    },
+    "node_modules/@floating-ui/dom": {
+      "version": "1.6.10",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@floating-ui/dom/-/dom-1.6.10.tgz",
+      "integrity": "sha512-fskgCFv8J8OamCmyun8MfjB1Olfn+uZKjOKZ0vhYF3gRmEUXcGOjxWL8bBr7i4kIuPZ2KD2S3EUIOxnjC8kl2A==",
+      "license": "MIT",
+      "dependencies": {
+        "@floating-ui/core": "^1.6.0",
+        "@floating-ui/utils": "^0.2.7"
+      }
+    },
+    "node_modules/@floating-ui/utils": {
+      "version": "0.2.7",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@floating-ui/utils/-/utils-0.2.7.tgz",
+      "integrity": "sha512-X8R8Oj771YRl/w+c1HqAC1szL8zWQRwFvgDwT129k9ACdBoud/+/rX9V0qiMl6LWUdP9voC2nDVZYPMQQsb6eA==",
+      "license": "MIT"
+    },
     "node_modules/@hapi/hoek": {
       "version": "9.3.0",
       "resolved": "https://registry.npmmirror.com/@hapi/hoek/-/hoek-9.3.0.tgz",
@@ -321,6 +365,17 @@
       "integrity": "sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==",
       "dev": true
     },
+    "node_modules/@popperjs/core": {
+      "name": "@sxzz/popperjs-es",
+      "version": "2.11.7",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz",
+      "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==",
+      "license": "MIT",
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/popperjs"
+      }
+    },
     "node_modules/@sideway/address": {
       "version": "4.1.5",
       "resolved": "https://registry.npmmirror.com/@sideway/address/-/address-4.1.5.tgz",
@@ -490,6 +545,21 @@
       "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
       "dev": true
     },
+    "node_modules/@types/lodash": {
+      "version": "4.17.7",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@types/lodash/-/lodash-4.17.7.tgz",
+      "integrity": "sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==",
+      "license": "MIT"
+    },
+    "node_modules/@types/lodash-es": {
+      "version": "4.17.12",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@types/lodash-es/-/lodash-es-4.17.12.tgz",
+      "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==",
+      "license": "MIT",
+      "dependencies": {
+        "@types/lodash": "*"
+      }
+    },
     "node_modules/@types/mime": {
       "version": "1.3.5",
       "resolved": "https://registry.npmmirror.com/@types/mime/-/mime-1.3.5.tgz",
@@ -589,6 +659,12 @@
         "@types/node": "*"
       }
     },
+    "node_modules/@types/web-bluetooth": {
+      "version": "0.0.16",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz",
+      "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==",
+      "license": "MIT"
+    },
     "node_modules/@types/ws": {
       "version": "8.5.10",
       "resolved": "https://registry.npmmirror.com/@types/ws/-/ws-8.5.10.tgz",
@@ -1002,6 +1078,94 @@
       "integrity": "sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA==",
       "dev": true
     },
+    "node_modules/@vueuse/core": {
+      "version": "9.13.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@vueuse/core/-/core-9.13.0.tgz",
+      "integrity": "sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==",
+      "license": "MIT",
+      "dependencies": {
+        "@types/web-bluetooth": "^0.0.16",
+        "@vueuse/metadata": "9.13.0",
+        "@vueuse/shared": "9.13.0",
+        "vue-demi": "*"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      }
+    },
+    "node_modules/@vueuse/core/node_modules/vue-demi": {
+      "version": "0.14.10",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/vue-demi/-/vue-demi-0.14.10.tgz",
+      "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==",
+      "hasInstallScript": true,
+      "license": "MIT",
+      "bin": {
+        "vue-demi-fix": "bin/vue-demi-fix.js",
+        "vue-demi-switch": "bin/vue-demi-switch.js"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      },
+      "peerDependencies": {
+        "@vue/composition-api": "^1.0.0-rc.1",
+        "vue": "^3.0.0-0 || ^2.6.0"
+      },
+      "peerDependenciesMeta": {
+        "@vue/composition-api": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@vueuse/metadata": {
+      "version": "9.13.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@vueuse/metadata/-/metadata-9.13.0.tgz",
+      "integrity": "sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==",
+      "license": "MIT",
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      }
+    },
+    "node_modules/@vueuse/shared": {
+      "version": "9.13.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@vueuse/shared/-/shared-9.13.0.tgz",
+      "integrity": "sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==",
+      "license": "MIT",
+      "dependencies": {
+        "vue-demi": "*"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      }
+    },
+    "node_modules/@vueuse/shared/node_modules/vue-demi": {
+      "version": "0.14.10",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/vue-demi/-/vue-demi-0.14.10.tgz",
+      "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==",
+      "hasInstallScript": true,
+      "license": "MIT",
+      "bin": {
+        "vue-demi-fix": "bin/vue-demi-fix.js",
+        "vue-demi-switch": "bin/vue-demi-switch.js"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      },
+      "peerDependencies": {
+        "@vue/composition-api": "^1.0.0-rc.1",
+        "vue": "^3.0.0-0 || ^2.6.0"
+      },
+      "peerDependenciesMeta": {
+        "@vue/composition-api": {
+          "optional": true
+        }
+      }
+    },
     "node_modules/@webassemblyjs/ast": {
       "version": "1.12.1",
       "resolved": "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.12.1.tgz",
@@ -1387,6 +1551,12 @@
         "lodash": "^4.17.14"
       }
     },
+    "node_modules/async-validator": {
+      "version": "4.2.5",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/async-validator/-/async-validator-4.2.5.tgz",
+      "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==",
+      "license": "MIT"
+    },
     "node_modules/asynckit": {
       "version": "0.4.0",
       "resolved": "https://mirrors.huaweicloud.com/repository/npm/asynckit/-/asynckit-0.4.0.tgz",
@@ -2937,6 +3107,32 @@
       "integrity": "sha512-VY+J0e4SFcNfQy19MEoMdaIcZLmDCprqvBtkii1WTCTQHpRvf5N8+3kTYCgL/PcntvwQvmMJWTuDPsq+IlhWKQ==",
       "dev": true
     },
+    "node_modules/element-plus": {
+      "version": "2.8.2",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/element-plus/-/element-plus-2.8.2.tgz",
+      "integrity": "sha512-pqoQlaUmzUFCjjTHyxGO7Cd0CizsQpIaad1ozV9PCaYjh2T4MIMnjfifqiYs2lWoZ/8GVwrRG1WTCfnZEjwfcg==",
+      "license": "MIT",
+      "dependencies": {
+        "@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.3",
+        "escape-html": "^1.0.3",
+        "lodash": "^4.17.21",
+        "lodash-es": "^4.17.21",
+        "lodash-unified": "^1.0.2",
+        "memoize-one": "^6.0.0",
+        "normalize-wheel-es": "^1.2.0"
+      },
+      "peerDependencies": {
+        "vue": "^3.2.0"
+      }
+    },
     "node_modules/emoji-regex": {
       "version": "8.0.0",
       "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
@@ -3062,8 +3258,7 @@
     "node_modules/escape-html": {
       "version": "1.0.3",
       "resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz",
-      "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
-      "dev": true
+      "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
     },
     "node_modules/escape-string-regexp": {
       "version": "1.0.5",
@@ -4465,8 +4660,24 @@
     "node_modules/lodash": {
       "version": "4.17.21",
       "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz",
-      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
-      "dev": true
+      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+    },
+    "node_modules/lodash-es": {
+      "version": "4.17.21",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/lodash-es/-/lodash-es-4.17.21.tgz",
+      "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==",
+      "license": "MIT"
+    },
+    "node_modules/lodash-unified": {
+      "version": "1.0.3",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/lodash-unified/-/lodash-unified-1.0.3.tgz",
+      "integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==",
+      "license": "MIT",
+      "peerDependencies": {
+        "@types/lodash-es": "*",
+        "lodash": "*",
+        "lodash-es": "*"
+      }
     },
     "node_modules/lodash.defaultsdeep": {
       "version": "4.6.1",
@@ -4717,6 +4928,12 @@
         "node": ">= 4.0.0"
       }
     },
+    "node_modules/memoize-one": {
+      "version": "6.0.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/memoize-one/-/memoize-one-6.0.0.tgz",
+      "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==",
+      "license": "MIT"
+    },
     "node_modules/merge-descriptors": {
       "version": "1.0.1",
       "resolved": "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
@@ -5148,6 +5365,12 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
+    "node_modules/normalize-wheel-es": {
+      "version": "1.2.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz",
+      "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==",
+      "license": "BSD-3-Clause"
+    },
     "node_modules/npm-run-path": {
       "version": "2.0.2",
       "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-2.0.2.tgz",
@@ -8239,12 +8462,45 @@
       "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.24.8.tgz",
       "integrity": "sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w=="
     },
+    "@ctrl/tinycolor": {
+      "version": "3.6.1",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz",
+      "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA=="
+    },
     "@discoveryjs/json-ext": {
       "version": "0.5.7",
       "resolved": "https://registry.npmmirror.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
       "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==",
       "dev": true
     },
+    "@element-plus/icons-vue": {
+      "version": "2.3.1",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz",
+      "integrity": "sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==",
+      "requires": {}
+    },
+    "@floating-ui/core": {
+      "version": "1.6.7",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@floating-ui/core/-/core-1.6.7.tgz",
+      "integrity": "sha512-yDzVT/Lm101nQ5TCVeK65LtdN7Tj4Qpr9RTXJ2vPFLqtLxwOrpoxAHAJI8J3yYWUc40J0BDBheaitK5SJmno2g==",
+      "requires": {
+        "@floating-ui/utils": "^0.2.7"
+      }
+    },
+    "@floating-ui/dom": {
+      "version": "1.6.10",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@floating-ui/dom/-/dom-1.6.10.tgz",
+      "integrity": "sha512-fskgCFv8J8OamCmyun8MfjB1Olfn+uZKjOKZ0vhYF3gRmEUXcGOjxWL8bBr7i4kIuPZ2KD2S3EUIOxnjC8kl2A==",
+      "requires": {
+        "@floating-ui/core": "^1.6.0",
+        "@floating-ui/utils": "^0.2.7"
+      }
+    },
+    "@floating-ui/utils": {
+      "version": "0.2.7",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@floating-ui/utils/-/utils-0.2.7.tgz",
+      "integrity": "sha512-X8R8Oj771YRl/w+c1HqAC1szL8zWQRwFvgDwT129k9ACdBoud/+/rX9V0qiMl6LWUdP9voC2nDVZYPMQQsb6eA=="
+    },
     "@hapi/hoek": {
       "version": "9.3.0",
       "resolved": "https://registry.npmmirror.com/@hapi/hoek/-/hoek-9.3.0.tgz",
@@ -8355,6 +8611,11 @@
       "integrity": "sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==",
       "dev": true
     },
+    "@popperjs/core": {
+      "version": "npm:@sxzz/popperjs-es@2.11.7",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz",
+      "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ=="
+    },
     "@sideway/address": {
       "version": "4.1.5",
       "resolved": "https://registry.npmmirror.com/@sideway/address/-/address-4.1.5.tgz",
@@ -8515,6 +8776,19 @@
       "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
       "dev": true
     },
+    "@types/lodash": {
+      "version": "4.17.7",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@types/lodash/-/lodash-4.17.7.tgz",
+      "integrity": "sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA=="
+    },
+    "@types/lodash-es": {
+      "version": "4.17.12",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@types/lodash-es/-/lodash-es-4.17.12.tgz",
+      "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==",
+      "requires": {
+        "@types/lodash": "*"
+      }
+    },
     "@types/mime": {
       "version": "1.3.5",
       "resolved": "https://registry.npmmirror.com/@types/mime/-/mime-1.3.5.tgz",
@@ -8614,6 +8888,11 @@
         "@types/node": "*"
       }
     },
+    "@types/web-bluetooth": {
+      "version": "0.0.16",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz",
+      "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ=="
+    },
     "@types/ws": {
       "version": "8.5.10",
       "resolved": "https://registry.npmmirror.com/@types/ws/-/ws-8.5.10.tgz",
@@ -8945,6 +9224,46 @@
       "integrity": "sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA==",
       "dev": true
     },
+    "@vueuse/core": {
+      "version": "9.13.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@vueuse/core/-/core-9.13.0.tgz",
+      "integrity": "sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==",
+      "requires": {
+        "@types/web-bluetooth": "^0.0.16",
+        "@vueuse/metadata": "9.13.0",
+        "@vueuse/shared": "9.13.0",
+        "vue-demi": "*"
+      },
+      "dependencies": {
+        "vue-demi": {
+          "version": "0.14.10",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/vue-demi/-/vue-demi-0.14.10.tgz",
+          "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==",
+          "requires": {}
+        }
+      }
+    },
+    "@vueuse/metadata": {
+      "version": "9.13.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@vueuse/metadata/-/metadata-9.13.0.tgz",
+      "integrity": "sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ=="
+    },
+    "@vueuse/shared": {
+      "version": "9.13.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@vueuse/shared/-/shared-9.13.0.tgz",
+      "integrity": "sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==",
+      "requires": {
+        "vue-demi": "*"
+      },
+      "dependencies": {
+        "vue-demi": {
+          "version": "0.14.10",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/vue-demi/-/vue-demi-0.14.10.tgz",
+          "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==",
+          "requires": {}
+        }
+      }
+    },
     "@webassemblyjs/ast": {
       "version": "1.12.1",
       "resolved": "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.12.1.tgz",
@@ -9259,6 +9578,11 @@
         "lodash": "^4.17.14"
       }
     },
+    "async-validator": {
+      "version": "4.2.5",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/async-validator/-/async-validator-4.2.5.tgz",
+      "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg=="
+    },
     "asynckit": {
       "version": "0.4.0",
       "resolved": "https://mirrors.huaweicloud.com/repository/npm/asynckit/-/asynckit-0.4.0.tgz",
@@ -10353,6 +10677,28 @@
       "integrity": "sha512-VY+J0e4SFcNfQy19MEoMdaIcZLmDCprqvBtkii1WTCTQHpRvf5N8+3kTYCgL/PcntvwQvmMJWTuDPsq+IlhWKQ==",
       "dev": true
     },
+    "element-plus": {
+      "version": "2.8.2",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/element-plus/-/element-plus-2.8.2.tgz",
+      "integrity": "sha512-pqoQlaUmzUFCjjTHyxGO7Cd0CizsQpIaad1ozV9PCaYjh2T4MIMnjfifqiYs2lWoZ/8GVwrRG1WTCfnZEjwfcg==",
+      "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.3",
+        "escape-html": "^1.0.3",
+        "lodash": "^4.17.21",
+        "lodash-es": "^4.17.21",
+        "lodash-unified": "^1.0.2",
+        "memoize-one": "^6.0.0",
+        "normalize-wheel-es": "^1.2.0"
+      }
+    },
     "emoji-regex": {
       "version": "8.0.0",
       "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
@@ -10454,8 +10800,7 @@
     "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==",
-      "dev": true
+      "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
     },
     "escape-string-regexp": {
       "version": "1.0.5",
@@ -11492,8 +11837,18 @@
     "lodash": {
       "version": "4.17.21",
       "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz",
-      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
-      "dev": true
+      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+    },
+    "lodash-es": {
+      "version": "4.17.21",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/lodash-es/-/lodash-es-4.17.21.tgz",
+      "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
+    },
+    "lodash-unified": {
+      "version": "1.0.3",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/lodash-unified/-/lodash-unified-1.0.3.tgz",
+      "integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==",
+      "requires": {}
     },
     "lodash.defaultsdeep": {
       "version": "4.6.1",
@@ -11696,6 +12051,11 @@
         "fs-monkey": "^1.0.4"
       }
     },
+    "memoize-one": {
+      "version": "6.0.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/memoize-one/-/memoize-one-6.0.0.tgz",
+      "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw=="
+    },
     "merge-descriptors": {
       "version": "1.0.1",
       "resolved": "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
@@ -12016,6 +12376,11 @@
       "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==",
       "dev": true
     },
+    "normalize-wheel-es": {
+      "version": "1.2.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz",
+      "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw=="
+    },
     "npm-run-path": {
       "version": "2.0.2",
       "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-2.0.2.tgz",

+ 1 - 0
package.json

@@ -9,6 +9,7 @@
   "dependencies": {
     "axios": "^1.7.7",
     "dayjs": "^1.11.6",
+    "element-plus": "^2.8.2",
     "vue": "^3.2.13",
     "vue-router": "^4.0.3",
     "vuex": "^4.0.0"

+ 0 - 0
public/static/data/西虹桥微网格裁切.geojson → public/static/data/bianjie/西虹桥微网格裁切.geojson


ファイルの差分が大きいため隠しています
+ 5 - 0
public/static/data/bianjie/西虹桥村居裁切.geojson


+ 0 - 0
public/static/data/西虹桥责任网格裁切.geojson → public/static/data/bianjie/西虹桥责任网格裁切.geojson


+ 0 - 0
public/static/data/西虹桥边界数据.geojson → public/static/data/bianjie/西虹桥边界数据.geojson


+ 21 - 18
public/static/data/西虹桥民营医疗机构.geojson → public/static/data/西虹区民营医疗.geojson

@@ -1,24 +1,27 @@
 {
 "type": "FeatureCollection",
-"name": "西虹桥民营医疗机构",
+"name": "西虹区民营医疗",
 "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } },
 "features": [
-{ "type": "Feature", "properties": { "法定代表人": "徐维宁", "街镇": "徐泾镇", "联系电话": "69760346", "地址": "上海市青浦区徐泾镇方家塘路188号、198号102室", "统一社会信用代码": "91310118591601480B", "性质": "营利性", "单位名称": "上海缔青口腔门诊部" }, "geometry": { "type": "Point", "coordinates": [ 121.3082, 31.1631 ] } },
-{ "type": "Feature", "properties": { "法定代表人": "何燕", "街镇": "徐泾镇", "联系电话": "13621935365", "地址": "青浦区徐泾镇诸光路366弄8号202室", "统一社会信用代码": "91310118MA1JL42L66", "性质": "营利性", "单位名称": "上海佑恩口腔门诊部" }, "geometry": { "type": "Point", "coordinates": [ 121.3111, 31.1659 ] } },
-{ "type": "Feature", "properties": { "法定代表人": "邱梦琦", "街镇": "徐泾镇", "联系电话": "5.9778288E7", "地址": "上海市青浦区徐泾镇蟠中路377号、389号东半间", "统一社会信用代码": "91310118MA1JN0YU3M", "性质": "营利性", "单位名称": "上海维佳康卡尔口腔门诊部" }, "geometry": { "type": "Point", "coordinates": [ 121.279, 31.1855 ] } },
-{ "type": "Feature", "properties": { "法定代表人": "康相辉", "街镇": "徐泾镇", "联系电话": "1.3512132325E10", "地址": "上海市青浦区诸光路1588弄328号、330号、332号", "统一社会信用代码": "91310118MA1JNTXC9Y", "性质": "营利性", "单位名称": "上海迪贝口腔门诊部" }, "geometry": { "type": "Point", "coordinates": [ 121.2986, 31.1846 ] } },
-{ "type": "Feature", "properties": { "法定代表人": "单华清", "街镇": "徐泾镇", "联系电话": "1.3564158276E10", "地址": "上海市青浦区徐泾镇谢卫路1399号、1411号二层", "统一社会信用代码": "91310118MA1JPC62XJ", "性质": "营利性", "单位名称": "上海卓曜口腔门诊部" }, "geometry": { "type": "Point", "coordinates": [ 121.2886, 31.1741 ] } },
-{ "type": "Feature", "properties": { "法定代表人": "张弘毅", "街镇": "徐泾镇", "联系电话": "6.9227822E7", "地址": "上海市青浦区徐泾镇龙联路59弄89弄12、16、20号,涞清路68、72号", "统一社会信用代码": "91310118MACE193P5N", "性质": "营利性", "单位名称": "上海莱天弘正口腔门诊部" }, "geometry": { "type": "Point", "coordinates": [ 121.2927, 31.1979 ] } },
-{ "type": "Feature", "properties": { "法定代表人": "沈思嘉", "街镇": "徐泾镇", "联系电话": "3.9888872E7", "地址": "上海市青浦区徐泾镇高光路145号、153号、161号、方家塘路180弄65号201-202室、301-305室", "统一社会信用代码": "91310118MA1JM68E8E", "性质": "营利性", "单位名称": "上海微加医疗美容门诊部" }, "geometry": { "type": "Point", "coordinates": [ 121.3079, 31.1648 ] } },
-{ "type": "Feature", "properties": { "法定代表人": "肖小飞", "街镇": "徐泾镇", "联系电话": "021-5227512", "地址": "上海市青浦区徐泾镇谢卫路1389弄3号、1387号一层;谢卫路1379号、1377号、1369号、1361号、1349号、1347号二层", "统一社会信用代码": "91310118MA1JNNPDXY", "性质": "非营利性", "单位名称": "上海娜美医疗美容门诊部" }, "geometry": { "type": "Point", "coordinates": [ 121.2894, 31.174 ] } },
-{ "type": "Feature", "properties": { "法定代表人": "周奕波", "街镇": "徐泾镇", "联系电话": "1.3262737777E10", "地址": "上海市青浦区徐泾镇徐祥路38号4幢108、206、207、301-314室", "统一社会信用代码": "91310118MA1JNT457K", "性质": "非营利性", "单位名称": "上海安禾美阁医疗美容门诊部" }, "geometry": { "type": "Point", "coordinates": [ 121.2658, 31.2009 ] } },
-{ "type": "Feature", "properties": { "法定代表人": "赵高迪", "街镇": "徐泾镇", "联系电话": "1.3601833505E10", "地址": "上海市青浦区徐泾镇双联路68、88号1幢120室、121室、220室、221室、222室、320室、321室、322室", "统一社会信用代码": "91310118MA1JP0RP9F", "性质": "非营利性", "单位名称": "上海旗美医疗美容门诊部" }, "geometry": { "type": "Point", "coordinates": [ 121.271, 31.1954 ] } },
-{ "type": "Feature", "properties": { "法定代表人": "陈冬梅", "街镇": "徐泾镇", "联系电话": "1.3564958264E10", "地址": "上海市青浦区方家塘路138号1层、152号1层、方家塘路180弄28号1层、方家塘路180弄32号1层,方家塘路180弄26号201-204室", "统一社会信用代码": "91310118MA1JPB2D19", "性质": "非营利性", "单位名称": "上海桉锘美医疗美容门诊部" }, "geometry": { "type": "Point", "coordinates": [ 121.3088, 31.1636 ] } },
-{ "type": "Feature", "properties": { "法定代表人": "秦萍", "街镇": "徐泾镇", "联系电话": "5.9881606E7", "地址": "上海市青浦区徐民路308弄30号、32号、33号", "统一社会信用代码": "91310118MA1JNWN21J", "性质": "营利性", "单位名称": "上海威沃眼科门诊部" }, "geometry": { "type": "Point", "coordinates": [ 121.282, 31.1846 ] } },
-{ "type": "Feature", "properties": { "法定代表人": "姜声华", "街镇": "徐泾镇", "联系电话": "1.3916810567E10", "地址": "上海市青浦区徐泾镇方家塘路180弄39号1层、37号2层", "统一社会信用代码": "91310118MAD6DNDC01", "性质": "营利性", "单位名称": "上海太敬康复医疗中心" }, "geometry": { "type": "Point", "coordinates": [ 121.3094, 31.1636 ] } },
-{ "type": "Feature", "properties": { "法定代表人": "陈冬梅", "街镇": "徐泾镇", "联系电话": "1.3564958264E10", "地址": "上海市青浦区方家塘路138号1层、152号1层、方家塘路180弄28号1层、方家塘路180弄32号1层,方家塘路180弄26号201-204室", "统一社会信用代码": "91310118MA1JPB2D19", "性质": "", "单位名称": "上海桉锘美医疗美容门诊部" }, "geometry": { "type": "Point", "coordinates": [ 121.3088, 31.1636 ] } },
-{ "type": "Feature", "properties": { "法定代表人": "季建刚", "街镇": "徐泾镇", "联系电话": "1.3671831728E10", "地址": "青浦区徐泾镇卉恒路718弄9号", "统一社会信用代码": "92310118MA1M0PDD6G", "性质": "营利性", "单位名称": "上海季建刚中医诊所" }, "geometry": { "type": "Point", "coordinates": [ 121.2802, 31.185 ] } },
-{ "type": "Feature", "properties": { "法定代表人": "潘佳亮", "街镇": "徐泾镇", "联系电话": "1.7610248683E10", "地址": "上海市青浦区徐泾镇诸光路1588弄300号202室", "统一社会信用代码": "91310118MA1JPB029B", "性质": "营利性", "单位名称": "上海游小方中医诊所" }, "geometry": { "type": "Point", "coordinates": [ 121.2984, 31.1869 ] } },
-{ "type": "Feature", "properties": { "法定代表人": "陈雪球", "街镇": "徐泾镇", "联系电话": "6.2498057E7", "地址": "上海市青浦区徐泾镇沪青平公路1818号230室", "统一社会信用代码": "52310118MJ5305881C", "性质": "非营利性", "单位名称": "上海济家汇泾护理站" }, "geometry": { "type": "Point", "coordinates": [ 121.2776, 31.1716 ] } }
+{ "type": "Feature", "properties": { "法定代表人": "徐维宁", "街镇": "徐泾镇", "联系电话": "69760346", "地址": "上海市青浦区徐泾镇方家塘路188号、198号102室", "统一社会信用代码": "91310118591601480B", "性质": "营利性", "单位名称": "上海缔青口腔门诊部", "layer": "西虹桥民营医疗机构" }, "geometry": { "type": "Point", "coordinates": [ 121.3082, 31.1631 ] } },
+{ "type": "Feature", "properties": { "法定代表人": "何燕", "街镇": "徐泾镇", "联系电话": "13621935365", "地址": "青浦区徐泾镇诸光路366弄8号202室", "统一社会信用代码": "91310118MA1JL42L66", "性质": "营利性", "单位名称": "上海佑恩口腔门诊部", "layer": "西虹桥民营医疗机构" }, "geometry": { "type": "Point", "coordinates": [ 121.3111, 31.1659 ] } },
+{ "type": "Feature", "properties": { "法定代表人": "邱梦琦", "街镇": "徐泾镇", "联系电话": "5.9778288E7", "地址": "上海市青浦区徐泾镇蟠中路377号、389号东半间", "统一社会信用代码": "91310118MA1JN0YU3M", "性质": "营利性", "单位名称": "上海维佳康卡尔口腔门诊部", "layer": "西虹桥民营医疗机构" }, "geometry": { "type": "Point", "coordinates": [ 121.279, 31.1855 ] } },
+{ "type": "Feature", "properties": { "法定代表人": "康相辉", "街镇": "徐泾镇", "联系电话": "1.3512132325E10", "地址": "上海市青浦区诸光路1588弄328号、330号、332号", "统一社会信用代码": "91310118MA1JNTXC9Y", "性质": "营利性", "单位名称": "上海迪贝口腔门诊部", "layer": "西虹桥民营医疗机构" }, "geometry": { "type": "Point", "coordinates": [ 121.2986, 31.1846 ] } },
+{ "type": "Feature", "properties": { "法定代表人": "单华清", "街镇": "徐泾镇", "联系电话": "1.3564158276E10", "地址": "上海市青浦区徐泾镇谢卫路1399号、1411号二层", "统一社会信用代码": "91310118MA1JPC62XJ", "性质": "营利性", "单位名称": "上海卓曜口腔门诊部", "layer": "西虹桥民营医疗机构" }, "geometry": { "type": "Point", "coordinates": [ 121.2886, 31.1741 ] } },
+{ "type": "Feature", "properties": { "法定代表人": "张弘毅", "街镇": "徐泾镇", "联系电话": "6.9227822E7", "地址": "上海市青浦区徐泾镇龙联路59弄89弄12、16、20号,涞清路68、72号", "统一社会信用代码": "91310118MACE193P5N", "性质": "营利性", "单位名称": "上海莱天弘正口腔门诊部", "layer": "西虹桥民营医疗机构" }, "geometry": { "type": "Point", "coordinates": [ 121.2927, 31.1979 ] } },
+{ "type": "Feature", "properties": { "法定代表人": "沈思嘉", "街镇": "徐泾镇", "联系电话": "3.9888872E7", "地址": "上海市青浦区徐泾镇高光路145号、153号、161号、方家塘路180弄65号201-202室、301-305室", "统一社会信用代码": "91310118MA1JM68E8E", "性质": "营利性", "单位名称": "上海微加医疗美容门诊部", "layer": "西虹桥民营医疗机构" }, "geometry": { "type": "Point", "coordinates": [ 121.3079, 31.1648 ] } },
+{ "type": "Feature", "properties": { "法定代表人": "肖小飞", "街镇": "徐泾镇", "联系电话": "021-5227512", "地址": "上海市青浦区徐泾镇谢卫路1389弄3号、1387号一层;谢卫路1379号、1377号、1369号、1361号、1349号、1347号二层", "统一社会信用代码": "91310118MA1JNNPDXY", "性质": "非营利性", "单位名称": "上海娜美医疗美容门诊部", "layer": "西虹桥民营医疗机构" }, "geometry": { "type": "Point", "coordinates": [ 121.2894, 31.174 ] } },
+{ "type": "Feature", "properties": { "法定代表人": "周奕波", "街镇": "徐泾镇", "联系电话": "1.3262737777E10", "地址": "上海市青浦区徐泾镇徐祥路38号4幢108、206、207、301-314室", "统一社会信用代码": "91310118MA1JNT457K", "性质": "非营利性", "单位名称": "上海安禾美阁医疗美容门诊部", "layer": "西虹桥民营医疗机构" }, "geometry": { "type": "Point", "coordinates": [ 121.2658, 31.2009 ] } },
+{ "type": "Feature", "properties": { "法定代表人": "赵高迪", "街镇": "徐泾镇", "联系电话": "1.3601833505E10", "地址": "上海市青浦区徐泾镇双联路68、88号1幢120室、121室、220室、221室、222室、320室、321室、322室", "统一社会信用代码": "91310118MA1JP0RP9F", "性质": "非营利性", "单位名称": "上海旗美医疗美容门诊部", "layer": "西虹桥民营医疗机构" }, "geometry": { "type": "Point", "coordinates": [ 121.271, 31.1954 ] } },
+{ "type": "Feature", "properties": { "法定代表人": "陈冬梅", "街镇": "徐泾镇", "联系电话": "1.3564958264E10", "地址": "上海市青浦区方家塘路138号1层、152号1层、方家塘路180弄28号1层、方家塘路180弄32号1层,方家塘路180弄26号201-204室", "统一社会信用代码": "91310118MA1JPB2D19", "性质": "非营利性", "单位名称": "上海桉锘美医疗美容门诊部", "layer": "西虹桥民营医疗机构" }, "geometry": { "type": "Point", "coordinates": [ 121.3088, 31.1636 ] } },
+{ "type": "Feature", "properties": { "法定代表人": "秦萍", "街镇": "徐泾镇", "联系电话": "5.9881606E7", "地址": "上海市青浦区徐民路308弄30号、32号、33号", "统一社会信用代码": "91310118MA1JNWN21J", "性质": "营利性", "单位名称": "上海威沃眼科门诊部", "layer": "西虹桥民营医疗机构" }, "geometry": { "type": "Point", "coordinates": [ 121.282, 31.1846 ] } },
+{ "type": "Feature", "properties": { "法定代表人": "姜声华", "街镇": "徐泾镇", "联系电话": "1.3916810567E10", "地址": "上海市青浦区徐泾镇方家塘路180弄39号1层、37号2层", "统一社会信用代码": "91310118MAD6DNDC01", "性质": "营利性", "单位名称": "上海太敬康复医疗中心", "layer": "西虹桥民营医疗机构" }, "geometry": { "type": "Point", "coordinates": [ 121.3094, 31.1636 ] } },
+{ "type": "Feature", "properties": { "法定代表人": "陈冬梅", "街镇": "徐泾镇", "联系电话": "1.3564958264E10", "地址": "上海市青浦区方家塘路138号1层、152号1层、方家塘路180弄28号1层、方家塘路180弄32号1层,方家塘路180弄26号201-204室", "统一社会信用代码": "91310118MA1JPB2D19", "性质": "", "单位名称": "上海桉锘美医疗美容门诊部", "layer": "西虹桥民营医疗机构" }, "geometry": { "type": "Point", "coordinates": [ 121.3088, 31.1636 ] } },
+{ "type": "Feature", "properties": { "法定代表人": "季建刚", "街镇": "徐泾镇", "联系电话": "1.3671831728E10", "地址": "青浦区徐泾镇卉恒路718弄9号", "统一社会信用代码": "92310118MA1M0PDD6G", "性质": "营利性", "单位名称": "上海季建刚中医诊所", "layer": "西虹桥民营医疗机构" }, "geometry": { "type": "Point", "coordinates": [ 121.2802, 31.185 ] } },
+{ "type": "Feature", "properties": { "法定代表人": "潘佳亮", "街镇": "徐泾镇", "联系电话": "1.7610248683E10", "地址": "上海市青浦区徐泾镇诸光路1588弄300号202室", "统一社会信用代码": "91310118MA1JPB029B", "性质": "营利性", "单位名称": "上海游小方中医诊所", "layer": "西虹桥民营医疗机构" }, "geometry": { "type": "Point", "coordinates": [ 121.2984, 31.1869 ] } },
+{ "type": "Feature", "properties": { "法定代表人": "陈雪球", "街镇": "徐泾镇", "联系电话": "6.2498057E7", "地址": "上海市青浦区徐泾镇沪青平公路1818号230室", "统一社会信用代码": "52310118MJ5305881C", "性质": "非营利性", "单位名称": "上海济家汇泾护理站", "layer": "西虹桥民营医疗机构" }, "geometry": { "type": "Point", "coordinates": [ 121.2776, 31.1716 ] } },
+{ "type": "Feature", "properties": { "法定代表人": "宋冬雷", "街镇": "徐泾镇", "联系电话": "6.0866731E7", "地址": "上海市青浦区徐泾镇华徐公路988号1幢、2幢、3幢、4幢、5幢", "统一社会信用代码": "91310118MA1JLPYU03", "性质": "营利性", "单位名称": "上海冬雷脑科医院", "layer": "西虹桥民营医院" }, "geometry": { "type": "Point", "coordinates": [ 121.2607, 31.2042 ] } },
+{ "type": "Feature", "properties": { "法定代表人": "李占和", "街镇": "徐泾镇", "联系电话": "57673300", "地址": "上海市青浦区徐泾镇华徐公路988号6幢-1层西侧、1层102室及6-11层", "统一社会信用代码": "91310114093633770T", "性质": "营利性", "单位名称": "上海禾滨康复医院", "layer": "西虹桥民营医院" }, "geometry": { "type": "Point", "coordinates": [ 121.2602, 31.2052 ] } },
+{ "type": "Feature", "properties": { "法定代表人": "方波", "街镇": "徐泾镇", "联系电话": "13310132119", "地址": "上海市青浦区徐泾镇蟠中路373号-1,蟠龙路670号102室、103室、104室、105,209室-1、210室-1、211室-1、212室-1,会恒路718弄41号102、103室", "统一社会信用代码": "91310118MA1JNX482W", "性质": "营利性", "单位名称": "上海圣娅医疗美容医院有限公司", "layer": "西虹桥民营医院" }, "geometry": { "type": "Point", "coordinates": [ 121.2793, 31.1851 ] } }
 ]
 }

+ 0 - 0
public/static/data/西虹桥2024医疗机构.geojson → public/static/data/西虹桥公立医疗.geojson


+ 29 - 7
public/static/data/西虹桥养老机构.geojson

@@ -1,8 +1,30 @@
 {
-"type": "FeatureCollection",
-"name": "西虹桥养老机构",
-"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } },
-"features": [
-
-]
-}
+    "type": "FeatureCollection",
+    "features":
+    [
+        {
+            "type": "Feature",
+            "properties":
+            {
+                "点位信息": "121.067265,31.074415",
+                "纬度": "31.178732481035297",
+                "机构名称": "上海青浦区徐泾镇养护院",
+                "经度": "121.23452652099728",
+                "所在街镇": "徐泾镇",
+                "核定床位数": "852.0",
+                "地址": "青浦区徐泾镇乐强路56号",
+                "备注": "",
+                "执业年月": ""
+            },
+            "geometry":
+            {
+                "type": "Point",
+                "coordinates":
+                [
+                    121.23452652099728,
+                    31.178732481035297
+                ]
+            }
+        }
+    ]
+}

ファイルの差分が大きいため隠しています
+ 0 - 5
public/static/data/西虹桥村居裁切.geojson


+ 0 - 10
public/static/data/西虹桥民营医院.geojson

@@ -1,10 +0,0 @@
-{
-"type": "FeatureCollection",
-"name": "西虹桥民营医院",
-"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } },
-"features": [
-{ "type": "Feature", "properties": { "法定代表人": "宋冬雷", "街镇": "徐泾镇", "联系电话": "6.0866731E7", "地址": "上海市青浦区徐泾镇华徐公路988号1幢、2幢、3幢、4幢、5幢", "统一社会信用代码": "91310118MA1JLPYU03", "性质": "营利性", "单位名称": "上海冬雷脑科医院" }, "geometry": { "type": "Point", "coordinates": [ 121.2607, 31.2042 ] } },
-{ "type": "Feature", "properties": { "法定代表人": "李占和", "街镇": "徐泾镇", "联系电话": "57673300", "地址": "上海市青浦区徐泾镇华徐公路988号6幢-1层西侧、1层102室及6-11层", "统一社会信用代码": "91310114093633770T", "性质": "营利性", "单位名称": "上海禾滨康复医院" }, "geometry": { "type": "Point", "coordinates": [ 121.2602, 31.2052 ] } },
-{ "type": "Feature", "properties": { "法定代表人": "方波", "街镇": "徐泾镇", "联系电话": "13310132119", "地址": "上海市青浦区徐泾镇蟠中路373号-1,蟠龙路670号102室、103室、104室、105,209室-1、210室-1、211室-1、212室-1,会恒路718弄41号102、103室", "统一社会信用代码": "91310118MA1JNX482W", "性质": "营利性", "单位名称": "上海圣娅医疗美容医院有限公司" }, "geometry": { "type": "Point", "coordinates": [ 121.2793, 31.1851 ] } }
-]
-}

+ 232 - 0
src/components/Edge.vue

@@ -0,0 +1,232 @@
+<template>
+  <div class="edge">
+    <el-radio-group v-model="radio" :disabled="!elSwitchValue">
+      <el-radio
+        v-for="(item, index) in arr"
+        :key="index"
+        :value="'' + index + 1"
+        @change="change(item)"
+      >{{ item.label }}</el-radio>
+    </el-radio-group>
+    <el-switch
+      v-model="elSwitchValue"
+      class="ml-2"
+      style="--el-switch-on-color: #409eff; --el-switch-off-color: #ff4949"
+      @change="elSwitchChange"
+    />
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      radio: "0",
+      arr: [
+        {
+          label: "行政边界",
+          url: "./static/data/bianjie/西虹桥边界数据.geojson",
+          style: {
+            polygon: {
+              outerColor: "#ffee00",
+              outerWidth: 5,
+              innerColor: "#00c4ff",
+              alpha: 0.5
+            }
+          }
+        },
+        {
+          label: "村居",
+          url: "./static/data/bianjie/西虹桥村居裁切.geojson",
+          style: {
+            polygon: {
+              outerColor: "#ffee00",
+              outerWidth: 3,
+              innerColor: "#00c4ff",
+              alpha: 0.5
+            }
+          }
+        },
+        {
+          label: "责任网格",
+          url: "./static/data/bianjie/西虹桥责任网格裁切.geojson",
+          style: {
+            polygon: {
+              outerColor: "#ffee00",
+              outerWidth: 3,
+              innerColor: "#00c4ff",
+              alpha: 0.5
+            }
+          }
+        },
+        {
+          label: "微网格",
+          url: "./static/data/bianjie/西虹桥微网格裁切.geojson",
+          style: {
+            polygon: {
+              outerColor: "#ffee00",
+              outerWidth: 3,
+              innerColor: "#00c4ff",
+              alpha: 0.5
+            }
+          }
+        }
+      ],
+      elSwitchValue: false
+    };
+  },
+  mounted() {
+    window.edgeQJ = {
+      geojsonDataSource: null,
+      edgeEntity: null
+    };
+  },
+  methods: {
+    change(item) {
+      this.remove();
+      this.addGeoJson(item.url, item.style);
+      if (edgeQJ.edgeEntity == null) this.addWall();
+    },
+
+    elSwitchChange(status) {
+      let that = this;
+      this.radio == 0;
+      if (status) {
+        that.show();
+      } else {
+        that.hide();
+      }
+    },
+
+    show() {
+      if (edgeQJ.geojsonDataSource) edgeQJ.geojsonDataSource.show = true;
+      if (edgeQJ.edgeEntity) edgeQJ.edgeEntity.show = true;
+    },
+    hide() {
+      if (edgeQJ.geojsonDataSource) edgeQJ.geojsonDataSource.show = false;
+      if (edgeQJ.edgeEntity) edgeQJ.edgeEntity.show = false;
+    },
+    remove() {
+      if (edgeQJ.geojsonDataSource != null) {
+      }
+      viewer.dataSources.remove(edgeQJ.geojsonDataSource);
+      edgeQJ.geojsonDataSource = null;
+    },
+
+    // 加载geojson数据
+    addGeoJson(url, options) {
+      // options = {
+      //   point: {
+      //     imgUrl: ""
+      //   },
+      //   polyline: {
+      //     color: "#ffffff",
+      //     width: 3,
+      //     alpha: 0.7
+      //   },
+      //   polygon: {
+      //     outerColor: "#ffffff",
+      //     outerWidth: 3,
+      //     innerColor: "#ffffff",
+      //     alpha: 0.7
+      //   }
+      // }; 
+      SkyScenery.GeoJsonDataSource.load(url).then(function(dataSource) {
+        viewer.dataSources.add(dataSource);
+        edgeQJ.geojsonDataSource = dataSource;
+        var entities = dataSource.entities.values;
+        for (var i = 0; i < entities.length; i++) {
+          var entity = entities[i];
+          if (entity.billboard) {
+            entity.billboard = undefined;
+            entity.billboard = new SkyScenery.BillboardGraphics({
+              image: options.point.imgUrl,
+              width: 50,
+              height: 50,
+              pixelOffset: new SkyScenery.Cartesian2(0, -25),
+              heightReference: SkyScenery.HeightReference.CLAMP_TO_GROUND
+            });
+          }
+          if (entity.polyline) {
+            entity.polyline.width = options.polyline.width;
+            entity.polyline.material = SkyScenery.Color.fromCssColorString(
+              options.polyline.color
+            ).withAlpha(options.polyline.alpha); // 颜色
+          }
+          if (entity.polygon) {
+            entity.polygon.height = 0.2;
+            entity.polygon.outline = true; // 边框是否显示
+            entity.polygon.outlineColor = SkyScenery.Color.fromCssColorString(
+              options.polygon.outerColor
+            ); // 边框颜色
+            entity.polygon.outlineWidth = options.polygon.outerWidth; // 边框宽度
+            entity.polygon.material = SkyScenery.Color.fromCssColorString(
+              options.polygon.innerColor
+            ).withAlpha(options.polygon.alpha); // 填充色
+          }
+        }
+      });
+    },
+
+    addWall() {
+      let that = this;
+      fetch("./static/data/bianjie/西虹桥边界数据.geojson")
+        .then(resp => resp.json())
+        .then(data => {
+          let positions = data.features[0].geometry.coordinates[0];
+          edgeQJ.edgeEntity = that.addDynamicWall(positions, {
+            maxH: 100,
+            color: "#00c4ff80",
+            duration: 3000
+          });
+        });
+    },
+
+    // 加载动态围墙
+    addDynamicWall(positions, options) {
+      /**
+       * options = {
+       *    maxH: 100,
+       *    color: "#00c4ff80",
+       *    duration: 3000,
+       * }
+       */
+      return viewer.entities.add({
+        name: "立体墙效果",
+        wall: {
+          positions: positions.map(function(item) {
+            return SkyScenery.Cartesian3.fromDegrees(item[0], item[1]);
+          }),
+          // 设置高度
+          maximumHeights: new Array(positions.length).fill(options.maxH || 100),
+          minimumHeights: new Array(positions.length).fill(0),
+          material: new SkyScenery.DynamicWallMaterialProperty({
+            color: SkyScenery.Color.fromCssColorString(options.color), // "#"
+            trailImage: "/static/image/color.png",
+            duration: options.duration || 3000 // 3000
+          })
+        }
+      });
+    }
+  }
+};
+</script>
+
+<style lang="less" scoped>
+.edge {
+  position: absolute;
+  right: 515px;
+  top: 100px;
+  width: 420px;
+  z-index: 1;
+  background: #ffffff;
+  padding-left: 15px;
+  padding-right: 15px;
+  border-radius: 50px;
+
+  .el-switch {
+    margin-left: 20px;
+    vertical-align: top;
+  }
+}
+</style>

+ 102 - 91
src/components/Map.vue

@@ -20,13 +20,13 @@ export default {
       }
       fetch(oauthUrl + "/oauth/api/user/login", {
         method: "POST",
-        body: loginInfo,
+        body: loginInfo
       })
-        .then((resp) => resp.json())
-        .then((data) => {
+        .then(resp => resp.json())
+        .then(data => {
           SkySceneryConfig = {
             authUrl: oauthUrl,
-            token: data.message,
+            token: data.message
           };
           that.pushAllScripts();
         });
@@ -34,11 +34,11 @@ export default {
 
     pushAllScripts() {
       let that = this;
-      that.addScripts(scriptObj.main).then(function () {
-        let arr = scriptObj.plugins.map(function (src) {
+      that.addScripts(scriptObj.main).then(function() {
+        let arr = scriptObj.plugins.map(function(src) {
           return that.addScripts(src);
         });
-        Promise.all(arr).then(function () {
+        Promise.all(arr).then(function() {
           setTimeout(() => {
             if (SkyScenery) {
               that.creatMap();
@@ -60,15 +60,18 @@ export default {
         document.head.appendChild(script);
         if (script.readyState) {
           // IE
-          script.onreadystatechange = function () {
-            if (script.readyState === "loaded" || script.readyState === "complete") {
+          script.onreadystatechange = function() {
+            if (
+              script.readyState === "loaded" ||
+              script.readyState === "complete"
+            ) {
               script.onreadystatechange = null;
               resolve();
             }
           };
         } else {
           // 其他浏览器
-          script.onload = function () {
+          script.onload = function() {
             resolve();
           };
         }
@@ -92,7 +95,12 @@ export default {
               ctx.fillRect(0, 0, width, height);
               return canvas.toDataURL();
             })("#ffffff00"),
-            rectangle: SkyScenery.Rectangle.fromDegrees(-180.0, -90.0, 180.0, 90.0),
+            rectangle: SkyScenery.Rectangle.fromDegrees(
+              -180.0,
+              -90.0,
+              180.0,
+              90.0
+            )
           }),
           fullscreenButton: false, //是否显示全屏按钮
           geocoder: false, //是否显示geocoder小器件,右上角查询按钮
@@ -104,11 +112,11 @@ export default {
           navigationHelpButton: false, //是否显示右上角的帮助按钮
           scene3DOnly: true, //如果设置为true,则所有几何图形以3D模式绘制以节约GPU资源
           infoBox: false, //是否显示点击要素之后显示的信息
-          shouldAnimate: false, //是否自动播放
+          shouldAnimate: false //是否自动播放
         });
         setTimeout(() => {
           // 根据配置文件中的配置信息加载底图
-          systemConfig.imageryProviders.forEach((url) => {
+          systemConfig.imageryProviders.forEach(url => {
             that.loadTheWorldMapImage(url);
           });
           viewer.camera.setView({
@@ -116,16 +124,18 @@ export default {
             orientation: {
               heading: SkyScenery.Math.toRadians(0.0), // 方向
               pitch: SkyScenery.Math.toRadians(-90.0), // 倾斜角度
-              roll: 0,
-            },
+              roll: 0
+            }
           });
           this.$store.commit("createdMap", true);
-          let tileName = "盘龙天地";
-          for (let key in systemConfig.data3DTiles[tileName]) {
-            let v = systemConfig.data3DTiles[tileName][key];
-            this.add3DTiles(v, true);
-          }
-          // this.add3DTiles("/static/data/3dTiles/xhq_3dt", true);
+          // // 盘龙天地
+          // let tileName = "盘龙天地";
+          // for (let key in systemConfig.data3DTiles[tileName]) {
+          //   let v = systemConfig.data3DTiles[tileName][key];
+          //   this.add3DTiles(v, true);
+          // }
+          // // 西虹桥
+          // this.add3DTiles(systemConfig.data3DTiles["西虹桥"]["全部"], true);
           return;
         }, 0);
         // viewer.entities.add({
@@ -236,23 +246,29 @@ export default {
      * 加载影像底图和影像注记
      */
     loadTheWorldMapImage(url) {
-      if (url.indexOf("//t0.") != -1) {
-        url = url.replace("//t0.", "//t{s}.");
-      }
+      // if (url.indexOf("//t0.") != -1) {
+      //   url = url.replace("//t0.", "//t{s}.");
+      // }
+      // viewer.imageryLayers.addImageryProvider(
+      //   new SkyScenery.WebMapTileServiceImageryProvider({
+      //     url:
+      //       url +
+      //       "?service=wmts&request=GetTile&version=1.0.0&LAYER=img&tileMatrixSet=w&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}&style=default&format=tiles&tk=" +
+      //       systemConfig.tdt_tk,
+      //     layer: "img",
+      //     style: "default",
+      //     tileMatrixSetID: "w",
+      //     format: "image/jpeg",
+      //     subdomains: ["0", "1", "2", "3", "4", "5", "6", "7"],
+      //     show: true,
+      //     minimumLevel: 1,
+      //     maximumLevel: 18
+      //   })
+      // );
       viewer.imageryLayers.addImageryProvider(
-        new SkyScenery.WebMapTileServiceImageryProvider({
+        new SkyScenery.ArcGisMapServerImageryProvider({
           url:
-            url +
-            "?service=wmts&request=GetTile&version=1.0.0&LAYER=img&tileMatrixSet=w&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}&style=default&format=tiles&tk=" +
-            systemConfig.tdt_tk,
-          layer: "img",
-          style: "default",
-          tileMatrixSetID: "w",
-          format: "image/jpeg",
-          subdomains: ["0", "1", "2", "3", "4", "5", "6", "7"],
-          show: true,
-          minimumLevel: 1,
-          maximumLevel: 18,
+            "https://services.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer"
         })
       );
       viewer.camera.setView({
@@ -260,10 +276,9 @@ export default {
         orientation: {
           heading: SkyScenery.Math.toRadians(0.0), // 方向
           pitch: SkyScenery.Math.toRadians(-90.0), // 倾斜角度
-          roll: 0,
-        },
+          roll: 0
+        }
       });
-      this.$store.commit("createdMap", true);
     },
 
     // 加载geojson数据
@@ -285,67 +300,39 @@ export default {
       //   }
       // };
 
-      SkyScenery.GeoJsonDataSource.load(url).then(function (dataSource) {
-        // dataSource.name = guid;
-        // modValue.VECTOR[guid] = dataSource;
-
+      SkyScenery.GeoJsonDataSource.load(url).then(function(dataSource) {
         viewer.dataSources.add(dataSource);
         var entities = dataSource.entities.values;
         for (var i = 0; i < entities.length; i++) {
           var entity = entities[i];
           if (entity.billboard) {
             entity.billboard = undefined;
-            // entity.point = new SkyScenery.PointGraphics({
-            //     show: true,
-            //     pixelSize: 15,
-            //     color: SkyScenery.Color.fromCssColorString("#aed0ff"),
-            //     outlineColor: SkyScenery.Color.fromCssColorString("#3388ff"),
-            //     outlineWidth: 2,
-            //     heightReference: SkyScenery.HeightReference.CLAMP_TO_GROUND,
-            //     scaleByDistance: new SkyScenery.NearFarScalar(10000, 1, 20000, 0.5),
-            //     // translucencyByDistance: new SkyScenery.NearFarScalar(1500, 1, 20000, 0.2),
-            //     // distanceDisplayCondition: new SkyScenery.DistanceDisplayCondition(0, 20000)
-            // })
             entity.billboard = new SkyScenery.BillboardGraphics({
               image: options.point.imgUrl,
               width: 50,
               height: 50,
               pixelOffset: new SkyScenery.Cartesian2(0, -25),
-              heightReference: SkyScenery.HeightReference.CLAMP_TO_GROUND,
-              // scaleByDistance: new SkyScenery.NearFarScalar(10000, 1, 20000, 0.75),
+              heightReference: SkyScenery.HeightReference.CLAMP_TO_GROUND
             });
           }
           if (entity.polyline) {
-            entity.polyline.width = style.polyline.width;
+            entity.polyline.width = options.polyline.width;
             entity.polyline.material = SkyScenery.Color.fromCssColorString(
-              style.polyline.color
-            ).withAlpha(style.polyline.alpha); // 颜色
+              options.polyline.color
+            ).withAlpha(options.polyline.alpha); // 颜色
           }
           if (entity.polygon) {
             entity.polygon.height = 0.2;
             entity.polygon.outline = true; // 边框是否显示
             entity.polygon.outlineColor = SkyScenery.Color.fromCssColorString(
-              style.polygon.outerColor
+              options.polygon.outerColor
             ); // 边框颜色
-            entity.polygon.outlineWidth = style.polygon.outerWidth; // 边框宽度
+            entity.polygon.outlineWidth = options.polygon.outerWidth; // 边框宽度
             entity.polygon.material = SkyScenery.Color.fromCssColorString(
-              style.polygon.innerColor
-            ).withAlpha(style.polygon.alpha); // 填充色
+              options.polygon.innerColor
+            ).withAlpha(options.polygon.alpha); // 填充色
           }
-          // entity.layerId = guid;
-          // entity.mod = "vectorMod";
         }
-
-        // var extentR = turf.bbox(options.geo);
-        // viewer.camera.flyTo({
-        //   destination: SkyScenery.Rectangle.fromDegrees(
-        //     extentR[0] - 0.04,
-        //     extentR[1] - 0.04,
-        //     extentR[2] + 0.04,
-        //     extentR[3] + 0.04
-        //   )
-        // });
-        // modValue.VECTOR[guid + "_extent"] = extentR;
       });
     },
 
@@ -361,7 +348,7 @@ export default {
       return viewer.entities.add({
         name: "立体墙效果",
         wall: {
-          positions: positions.map(function (item) {
+          positions: positions.map(function(item) {
             return SkyScenery.Cartesian3.fromDegrees(item[0], item[1]);
           }),
           // 设置高度
@@ -370,9 +357,9 @@ export default {
           material: new SkyScenery.DynamicWallMaterialProperty({
             color: SkyScenery.Color.fromCssColorString(options.color), // "#"
             trailImage: "/static/image/color.png",
-            duration: options.duration || 3000, // 3000
-          }),
-        },
+            duration: options.duration || 3000 // 3000
+          })
+        }
       });
     },
 
@@ -383,21 +370,45 @@ export default {
      * @param {*} flyto 是否自动飞行到3Dtiles
      */
     add3DTiles(url, flyto) {
-      let that = this;
-      let tile = SkyScenery.add3DTilesData(url + "/tileset.json", viewer);
-
+      // let that = this;
+      let option = {
+        url: url + "/tileset.json",
+        skipLevelOfDetail: true, //开启跳级加载
+        maximumMemoryUsage: 1024, //最大内存占用  推荐显存的一般
+        preferLeaves: true,
+        maximumScreenSpaceError: 16,
+        maximumNumberOfLoadedTiles: 2000
+      };
+      // option = Object.assign(option, options);
+      var tile = new SkyScenery.Cesium3DTileset(option);
       viewer.scene.primitives.add(tile);
+
       if (flyto) {
-        tile.readyPromise.then(function (tileset) {
+        tile.readyPromise.then(function(tileset) {
           viewer.zoomTo(tile);
-          if (url.indexOf("jz") != -1) {
-            setTimeout(() => {
-              that.remove3Dtiles(tile);
-            }, 5000);
-          }
+          // if (url.indexOf("jz") != -1) {
+          //   setTimeout(() => {
+          //     that.remove3Dtiles(tile);
+          //   }, 5000);
+          // }
         });
       }
       return tile;
+
+      // let tile = SkyScenery.add3DTilesData(url + "/tileset.json", viewer);
+
+      // viewer.scene.primitives.add(tile);
+      // if (flyto) {
+      //   tile.readyPromise.then(function(tileset) {
+      //     viewer.zoomTo(tile);
+      //     if (url.indexOf("jz") != -1) {
+      //       setTimeout(() => {
+      //         that.remove3Dtiles(tile);
+      //       }, 5000);
+      //     }
+      //   });
+      // }
+      // return tile;
     },
     /**
      * 删除3DTiles(测试)
@@ -406,8 +417,8 @@ export default {
      */
     remove3Dtiles(tiles) {
       viewer.scene.primitives.remove(tiles);
-    },
-  },
+    }
+  }
 };
 </script>
 

+ 9 - 1
src/main.js

@@ -1,14 +1,22 @@
 import { createApp } from 'vue'
 import App from './App.vue'
+const app = createApp(App)
+
 import router from './router'
 import store from './store'
+app.use(store).use(router);
+
 // 添加字体库
 import "./assets/font/font.css";
 // 引入全局样式
 import "./assets/global.css";
 // 引入dayjs库
 import dayjs from "dayjs";
-const app = createApp(App).use(store).use(router);
 app.config.globalProperties.$dayjs = dayjs;
+// 引入element UI
+import ElementPlus from 'element-plus'
+import 'element-plus/dist/index.css'
+app.use(ElementPlus)
+
 app.mount('#app');
 

+ 5 - 2
src/views/HomeView.vue

@@ -1,6 +1,7 @@
 <template>
   <div class="home">
     <Header />
+    <Edge />
     <Map />
     <div class="home_LeftMainBox">
       <img style="width: 500px; height: 50px" src="../assets/images/LT1.png" />
@@ -24,6 +25,7 @@
 <script>
 import Map from "@/components/Map.vue";
 import Header from "@/components/Header.vue";
+import Edge from "@/components/Edge.vue";
 import CardTitle from "@/components/cards/CardTitle.vue";
 
 export default {
@@ -31,8 +33,9 @@ export default {
   components: {
     Map,
     Header,
-    CardTitle,
-  },
+    Edge,
+    CardTitle
+  }
 };
 </script>
 

この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません