pyt
2025-03-24 480dda90912926b1f6fbf971f1be8fe19c2b54a3
Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/H5/chongzhou-screen
10个文件已修改
2 文件已重命名
6个文件已添加
721 ■■■■ 已修改文件
babel.config.js 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
package-lock.json 194 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
package.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/index.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/font/font.css 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/font/pangmenzhengdao.ttf 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/map/mapBg.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/map/tooltipBg.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/map/tooltipBlue.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/map/tooltipOrange.png 补丁 | 查看 | 原始文档 | blame | 历史
src/components/datascreen/CenterPanel.vue 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/datascreen/map.vue 361 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/map/chongzhou.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/request.js 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/DataScreen.vue 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/service.js 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
vue.config.js 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
babel.config.js
@@ -1,5 +1,14 @@
module.exports = {
  presets: [
    '@vue/cli-plugin-babel/preset'
  ],
  plugins: [
    [
      'component',
      {
        libraryName: 'element-ui',
        styleLibraryName: 'theme-chalk'
      }
    ]
  ]
}
package-lock.json
@@ -2427,6 +2427,20 @@
      "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==",
      "dev": true
    },
    "async-validator": {
      "version": "1.8.5",
      "resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-1.8.5.tgz",
      "integrity": "sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA==",
      "dev": true,
      "requires": {
        "babel-runtime": "6.x"
      }
    },
    "asynckit": {
      "version": "0.4.0",
      "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz",
      "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
    },
    "at-least-node": {
      "version": "1.0.0",
      "resolved": "https://registry.npmmirror.com/at-least-node/-/at-least-node-1.0.0.tgz",
@@ -2456,6 +2470,22 @@
        "possible-typed-array-names": "^1.0.0"
      }
    },
    "axios": {
      "version": "1.8.4",
      "resolved": "https://registry.npmmirror.com/axios/-/axios-1.8.4.tgz",
      "integrity": "sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==",
      "requires": {
        "follow-redirects": "^1.15.6",
        "form-data": "^4.0.0",
        "proxy-from-env": "^1.1.0"
      }
    },
    "babel-helper-vue-jsx-merge-props": {
      "version": "2.0.3",
      "resolved": "https://registry.npmmirror.com/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz",
      "integrity": "sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg==",
      "dev": true
    },
    "babel-loader": {
      "version": "8.4.1",
      "resolved": "https://registry.npmmirror.com/babel-loader/-/babel-loader-8.4.1.tgz",
@@ -2466,6 +2496,38 @@
        "loader-utils": "^2.0.4",
        "make-dir": "^3.1.0",
        "schema-utils": "^2.6.5"
      }
    },
    "babel-plugin-component": {
      "version": "1.1.1",
      "resolved": "https://registry.npmmirror.com/babel-plugin-component/-/babel-plugin-component-1.1.1.tgz",
      "integrity": "sha512-WUw887kJf2GH80Ng/ZMctKZ511iamHNqPhd9uKo14yzisvV7Wt1EckIrb8oq/uCz3B3PpAW7Xfl7AkTLDYT6ag==",
      "dev": true,
      "requires": {
        "@babel/helper-module-imports": "7.0.0-beta.35"
      },
      "dependencies": {
        "@babel/helper-module-imports": {
          "version": "7.0.0-beta.35",
          "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.35.tgz",
          "integrity": "sha512-vaC1KyIZSuyWb3Lj277fX0pxivyHwuDU4xZsofqgYAbkDxNieMg2vuhzP5AgMweMY7fCQUMTi+BgPqTLjkxXFg==",
          "dev": true,
          "requires": {
            "@babel/types": "7.0.0-beta.35",
            "lodash": "^4.2.0"
          }
        },
        "@babel/types": {
          "version": "7.0.0-beta.35",
          "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.0.0-beta.35.tgz",
          "integrity": "sha512-y9XT11CozHDgjWcTdxmhSj13rJVXpa5ZXwjjOiTedjaM0ba5ItqdS02t31EhPl7HtOWxsZkYCCUNrSfrOisA6w==",
          "dev": true,
          "requires": {
            "esutils": "^2.0.2",
            "lodash": "^4.2.0",
            "to-fast-properties": "^2.0.0"
          }
        }
      }
    },
    "babel-plugin-dynamic-import-node": {
@@ -2505,6 +2567,30 @@
      "dev": true,
      "requires": {
        "@babel/helper-define-polyfill-provider": "^0.6.4"
      }
    },
    "babel-runtime": {
      "version": "6.26.0",
      "resolved": "https://registry.npmmirror.com/babel-runtime/-/babel-runtime-6.26.0.tgz",
      "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==",
      "dev": true,
      "requires": {
        "core-js": "^2.4.0",
        "regenerator-runtime": "^0.11.0"
      },
      "dependencies": {
        "core-js": {
          "version": "2.6.12",
          "resolved": "https://registry.npmmirror.com/core-js/-/core-js-2.6.12.tgz",
          "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==",
          "dev": true
        },
        "regenerator-runtime": {
          "version": "0.11.1",
          "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
          "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
          "dev": true
        }
      }
    },
    "balanced-match": {
@@ -2681,7 +2767,6 @@
      "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==",
      "dev": true,
      "requires": {
        "es-errors": "^1.3.0",
        "function-bind": "^1.1.2"
@@ -2889,6 +2974,14 @@
      "resolved": "https://registry.npmmirror.com/colorette/-/colorette-2.0.20.tgz",
      "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
      "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": "2.20.3",
@@ -3474,6 +3567,11 @@
        "object-keys": "^1.1.1"
      }
    },
    "delayed-stream": {
      "version": "1.0.0",
      "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz",
      "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
    },
    "depd": {
      "version": "2.0.0",
      "resolved": "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz",
@@ -3590,7 +3688,6 @@
      "version": "1.0.1",
      "resolved": "https://registry.npmmirror.com/dunder-proto/-/dunder-proto-1.0.1.tgz",
      "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
      "dev": true,
      "requires": {
        "call-bind-apply-helpers": "^1.0.1",
        "es-errors": "^1.3.0",
@@ -3645,6 +3742,28 @@
      "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.5.123.tgz",
      "integrity": "sha512-refir3NlutEZqlKaBLK0tzlVLe5P2wDKS7UQt/3SpibizgsRAPOsqQC3ffw1nlv3ze5gjRQZYHoPymgVZkplFA==",
      "dev": true
    },
    "element-ui": {
      "version": "2.15.14",
      "resolved": "https://registry.npmmirror.com/element-ui/-/element-ui-2.15.14.tgz",
      "integrity": "sha512-2v9fHL0ZGINotOlRIAJD5YuVB8V7WKxrE9Qy7dXhRipa035+kF7WuU/z+tEmLVPBcJ0zt8mOu1DKpWcVzBK8IA==",
      "dev": true,
      "requires": {
        "async-validator": "~1.8.1",
        "babel-helper-vue-jsx-merge-props": "^2.0.0",
        "deepmerge": "^1.2.0",
        "normalize-wheel": "^1.0.1",
        "resize-observer-polyfill": "^1.5.0",
        "throttle-debounce": "^1.0.1"
      },
      "dependencies": {
        "deepmerge": {
          "version": "1.5.2",
          "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-1.5.2.tgz",
          "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==",
          "dev": true
        }
      }
    },
    "emoji-regex": {
      "version": "8.0.0",
@@ -3779,14 +3898,12 @@
    "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==",
      "dev": true
      "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==",
      "dev": true
      "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="
    },
    "es-module-lexer": {
      "version": "1.6.0",
@@ -3798,7 +3915,6 @@
      "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==",
      "dev": true,
      "requires": {
        "es-errors": "^1.3.0"
      }
@@ -3807,7 +3923,6 @@
      "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==",
      "dev": true,
      "requires": {
        "es-errors": "^1.3.0",
        "get-intrinsic": "^1.2.6",
@@ -4144,8 +4259,7 @@
    "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==",
      "dev": true
      "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ=="
    },
    "for-each": {
      "version": "0.3.5",
@@ -4154,6 +4268,17 @@
      "dev": true,
      "requires": {
        "is-callable": "^1.2.7"
      }
    },
    "form-data": {
      "version": "4.0.2",
      "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.2.tgz",
      "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==",
      "requires": {
        "asynckit": "^0.4.0",
        "combined-stream": "^1.0.8",
        "es-set-tostringtag": "^2.1.0",
        "mime-types": "^2.1.12"
      }
    },
    "forwarded": {
@@ -4208,8 +4333,7 @@
    "function-bind": {
      "version": "1.1.2",
      "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz",
      "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
      "dev": true
      "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="
    },
    "function.prototype.name": {
      "version": "1.1.8",
@@ -4247,7 +4371,6 @@
      "version": "1.3.0",
      "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
      "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
      "dev": true,
      "requires": {
        "call-bind-apply-helpers": "^1.0.2",
        "es-define-property": "^1.0.1",
@@ -4271,7 +4394,6 @@
      "version": "1.0.1",
      "resolved": "https://registry.npmmirror.com/get-proto/-/get-proto-1.0.1.tgz",
      "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
      "dev": true,
      "requires": {
        "dunder-proto": "^1.0.1",
        "es-object-atoms": "^1.0.0"
@@ -4359,8 +4481,7 @@
    "gopd": {
      "version": "1.2.0",
      "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.2.0.tgz",
      "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
      "dev": true
      "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="
    },
    "graceful-fs": {
      "version": "4.2.11",
@@ -4416,14 +4537,12 @@
    "has-symbols": {
      "version": "1.1.0",
      "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.1.0.tgz",
      "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
      "dev": true
      "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==",
      "dev": true,
      "requires": {
        "has-symbols": "^1.0.3"
      }
@@ -4438,7 +4557,6 @@
      "version": "2.0.2",
      "resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz",
      "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
      "dev": true,
      "requires": {
        "function-bind": "^1.1.2"
      }
@@ -5486,8 +5604,7 @@
    "math-intrinsics": {
      "version": "1.1.0",
      "resolved": "https://registry.npmmirror.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
      "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
      "dev": true
      "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="
    },
    "mdn-data": {
      "version": "2.0.14",
@@ -5562,14 +5679,12 @@
    "mime-db": {
      "version": "1.52.0",
      "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz",
      "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
      "dev": true
      "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==",
      "dev": true,
      "requires": {
        "mime-db": "1.52.0"
      }
@@ -5833,6 +5948,12 @@
      "version": "6.1.0",
      "resolved": "https://registry.npmmirror.com/normalize-url/-/normalize-url-6.1.0.tgz",
      "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==",
      "dev": true
    },
    "normalize-wheel": {
      "version": "1.0.1",
      "resolved": "https://registry.npmmirror.com/normalize-wheel/-/normalize-wheel-1.0.1.tgz",
      "integrity": "sha512-1OnlAPZ3zgrk8B91HyRj+eVv+kS5u+Z0SCsak6Xil/kmgEia50ga7zfkumayonZrImffAxPU/5WcyGhzetHNPA==",
      "dev": true
    },
    "npm-run-path": {
@@ -6623,6 +6744,11 @@
        }
      }
    },
    "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",
@@ -6881,6 +7007,12 @@
      "version": "1.0.0",
      "resolved": "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz",
      "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
      "dev": true
    },
    "resize-observer-polyfill": {
      "version": "1.5.1",
      "resolved": "https://registry.npmmirror.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
      "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==",
      "dev": true
    },
    "resolve": {
@@ -7796,12 +7928,24 @@
        }
      }
    },
    "throttle-debounce": {
      "version": "1.1.0",
      "resolved": "https://registry.npmmirror.com/throttle-debounce/-/throttle-debounce-1.1.0.tgz",
      "integrity": "sha512-XH8UiPCQcWNuk2LYePibW/4qL97+ZQ1AN3FNXwZRBNPPowo/NRU5fAlDCSNBJIYCKbioZfuYtMhG4quqoJhVzg==",
      "dev": true
    },
    "thunky": {
      "version": "1.1.0",
      "resolved": "https://registry.npmmirror.com/thunky/-/thunky-1.1.0.tgz",
      "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==",
      "dev": true
    },
    "to-fast-properties": {
      "version": "2.0.0",
      "resolved": "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
      "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
      "dev": true
    },
    "to-regex-range": {
      "version": "5.0.1",
      "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz",
package.json
@@ -8,6 +8,7 @@
  },
  "dependencies": {
    "@jiaminghi/data-view": "^2.10.0",
    "axios": "^1.8.4",
    "core-js": "^3.8.3",
    "echarts": "^5.6.0",
    "register-service-worker": "^1.7.2",
@@ -17,11 +18,14 @@
    "vuex": "^3.6.2"
  },
  "devDependencies": {
    "@babel/preset-env": "^7.26.9",
    "@vue/cli-plugin-babel": "~5.0.0",
    "@vue/cli-plugin-pwa": "~5.0.0",
    "@vue/cli-plugin-router": "~5.0.0",
    "@vue/cli-plugin-vuex": "~5.0.0",
    "@vue/cli-service": "~5.0.0",
    "babel-plugin-component": "^1.1.1",
    "element-ui": "^2.15.14",
    "less": "^4.2.2",
    "less-loader": "^8.1.1",
    "vue-template-compiler": "^2.6.14"
public/index.html
@@ -4,7 +4,7 @@
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <link rel="icon" href="<%= BASE_URL %>favicon.ico">
    <!-- <link rel="icon" href="<%= BASE_URL %>favicon.ico"> -->
    <title><%= htmlWebpackPlugin.options.title %></title>
  </head>
  <body>
src/assets/font/font.css
New file
@@ -0,0 +1,7 @@
@font-face {
    font-family: 'pangmenzhengdao';
    src: url('./pangmenzhengdao.ttf');
    font-weight: normal;
    font-style: normal;
  }
src/assets/font/pangmenzhengdao.ttf
Binary files differ
src/assets/map/mapBg.png
src/assets/map/tooltipBg.png
src/assets/map/tooltipBlue.png

src/assets/map/tooltipOrange.png

src/components/datascreen/CenterPanel.vue
@@ -29,10 +29,8 @@
    </div>
    <!-- 中间地图 -->
    <div class="center-middle panel-item">
      <div class="map-chart">
        <Map />
      </div>
    <div class="center-middle">
      <Map :data="data.mapResponses" />
    </div>
    <!-- 中间下部数据 -->
@@ -46,6 +44,12 @@
import Map from './map.vue';
export default {
  name: 'CenterPanel',
  props: {
    data: {
      type: Object,
      default: () => { }
    }
  },
  components: {
    Map
  },
@@ -70,6 +74,7 @@
  bottom: 20px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  .panel-item {
    border-radius: 10px;
@@ -82,11 +87,8 @@
  }
  .center-middle {
    flex: 1;
    .map-chart {
      height: calc(100% - 44px);
    }
    position: fixed;
    top: 281px;
  }
  .center-bottom {
src/components/datascreen/map.vue
@@ -5,51 +5,43 @@
</template>
<script>
// import "echarts-gl";
import mapBg from "@/assets/map/mapBg.png";
import tooltipBg from "@/assets/map/tooltipBg.png";
import tooltipBlue from "@/assets/map/tooltipBlue.png";
import tooltipOrange from "@/assets/map/tooltipOrange.png";
export default {
    name: 'Map',
    props: {
        data: {
            type: Array,
            default: () => []
        }
    },
    data() {
        return {
            mapBg: null // 地图背景图片
            mapBg: null, // 地图背景图片
            // 地图标记点数据
            mapPoints: [
                { name: "点位1", value: [103.6672, 30.6333], type: "blue", symbolSize: 32 },
                { name: "点位2", value: [103.6772, 30.6533], type: "orange", symbolSize: 32 },
                { name: "点位3", value: [103.6572, 30.6433], type: "blue", symbolSize: 32 },
                { name: "点位4", value: [103.6872, 30.6633], type: "orange", symbolSize: 32 },
                { name: "点位5", value: [103.6472, 30.6233], type: "blue", symbolSize: 32 }
            ]
        }
    },
    created() {
        if (Object.keys(this.data).length > 0) {
            console.log(this.data);
            // this.mapPoints = this.data.mapResponses;
        }
    },
    mounted() {
        this.initMapBg();
        this.initMap();
    },
    methods: {
        // 初始化地图背景图片
        initMapBg() {
            // 创建一个 canvas 来生成背景图案
            const canvas = document.createElement('canvas');
            const ctx = canvas.getContext('2d');
            canvas.width = 8;
            canvas.height = 8;
            // 设置渐变
            const gradient = ctx.createLinearGradient(0, 0, canvas.width, canvas.height);
            gradient.addColorStop(0, 'rgba(0,24,106,0.8)');
            gradient.addColorStop(1, 'rgba(0,24,106,0.9)');
            // 绘制背景
            ctx.fillStyle = gradient;
            ctx.fillRect(0, 0, canvas.width, canvas.height);
            // 添加网格效果
            ctx.strokeStyle = 'rgba(0,234,255,0.1)';
            ctx.lineWidth = 0.5;
            ctx.beginPath();
            ctx.moveTo(0, canvas.height / 2);
            ctx.lineTo(canvas.width, canvas.height / 2);
            ctx.moveTo(canvas.width / 2, 0);
            ctx.lineTo(canvas.width / 2, canvas.height);
            ctx.stroke();
            // 保存为base64图片
            this.mapBg = canvas.toDataURL();
        },
        initMap() {
            // json地图数据-需要根据需求下载引入对应名称文件
            let mapJson = require("@/utils/map/chongzhou.json");
            let myChart = this.$echarts.init(this.$refs.myMap);
            myChart.showLoading();
@@ -58,153 +50,216 @@
            let option = {
                tooltip: {
                    trigger: "none", // 关闭提示框
                    show: false
                },
                // 设置多层级地图实现立体效果
                geo: [
                    {
                        map: "myMap", // 使用注册的地图名称
                        aspectScale: 1, // 地图长宽比
                        zoom: 1, // 地图缩放比例
                        top: "15%", // 距离容器顶部距离
                        bottom: "10%", // 距离容器底部距离
                        roam: false, // 禁用地图平移缩放
                        z: 5, // 图层层级,数值大的在上层
                        itemStyle: {
                            areaColor: "transparent", // 区域透明
                            borderColor: "#00eaff", // 边框颜色
                            borderWidth: 1 // 边框宽度
                        },
                        select: {
                            disabled: true // 禁用选中状态
                        },
                        tooltip: {
                            show: false, // 关闭提示框
                        },
                    },
                    {
                        map: "myMap", // 第二层地图
                        aspectScale: 1,
                        zoom: 1,
                        top: "16%", // 比第一层低一点
                        bottom: "9%",
                        roam: false,
                        z: 4, // 层级比第一层低
                        itemStyle: {
                            areaColor: "transparent",
                            borderColor: "#00eaff",
                            borderWidth: 1
                        },
                        select: {
                            disabled: true
                        },
                        tooltip: {
                            show: false,
                        },
                    },
                    {
                        map: "myMap", // 第三层地图
                        aspectScale: 1,
                        zoom: 1,
                        top: "17%", // 最底层
                        bottom: "8%",
                        roam: false,
                        z: 3, // 最底层层级
                        itemStyle: {
                            areaColor: "transparent",
                            borderColor: "#00eaff",
                            borderWidth: 1
                        },
                        select: {
                            disabled: true
                        },
                        tooltip: {
                            show: false,
                        },
                    },
                    this.getGeoLayers(1),
                    this.getGeoLayers(2),
                    this.getGeoLayers(3)
                ],
                series: [
                    {
                        type: "map", // 地图类型
                        name: "地图", // 系列名称
                        selectedMode: false, // 禁用选中模式
                        aspectScale: 1, // 长宽比
                        zoom: 1, // 缩放比例
                        roam: false, // 禁用平移缩放
                        regionHeight: 2, // 三维地图的厚度
                        map: "myMap", // 使用的地图
                        z: 10, // 最顶层
                        top: "14%", // 主图层位置
                        type: "map",
                        name: "地图",
                        selectedMode: false,
                        aspectScale: 1,
                        zoom: 1,
                        roam: false,
                        regionHeight: 2,
                        map: "myMap",
                        z: 10,
                        top: "14%",
                        bottom: "11%",
                        viewControl: { // 视角控制
                            distance: 115, // 视角距离主体的距离
                            alpha: 40, // 视角绕 x 轴,即上下旋转的角度
                            rotateSensitivity: [0, 0], // 禁用旋转
                            beta: 0, // 视角绕 y 轴,即左右旋转的角度
                        viewControl: {
                            distance: 115,
                            alpha: 40,
                            rotateSensitivity: [0, 0],
                            beta: 0
                        },
                        label: { // 标签样式
                            normal: {
                                show: true, // 显示标签
                                textStyle: {
                                    color: "#fff", // 标签文字颜色
                                    fontSize: 16, // 文字大小
                                    fontWeight: "normal", // 文字粗细
                                    textShadowColor: "rgba(0,234,255,0.8)", // 文字阴影颜色
                                    textShadowBlur: 10, // 文字阴影模糊
                                    opacity: 1, // 文字透明度
                                },
                            },
                            emphasis: {
                                color: "#fff", // 悬浮时文字颜色
                            },
                        label: {
                            show: false,
                            textStyle: {
                                color: "#fff",
                                fontSize: 10,
                                fontWeight: "normal",
                                opacity: 1
                            }
                        },
                        itemStyle: { // 主图层样式
                        itemStyle: {
                            areaColor: {
                                image: this.mapBg, // 使用背景图片
                                repeat: 'repeat' // 平铺模式
                                type: 'pattern',
                                image: mapBg,
                                repeat: 'no-repeat',
                                imageSize: '100%',
                                patternSize: [815, 534],
                                patternPosition: [0, 0]
                            },
                            borderColor: "#00eaff", // 边框颜色
                            borderWidth: 2, // 边框宽度
                            borderType: 'solid',
                            shadowColor: "#00eaff", // 阴影颜色
                            shadowOffsetX: 0,
                            shadowOffsetY: 0,
                            shadowBlur: 20,
                            opacity: 1
                            borderColor: "#324D6B",
                            borderWidth: 2,
                        },
                        emphasis: {
                            disabled: true // 禁用悬浮效果
                            disabled: false,
                            label: {
                                show: false,
                                textStyle: {
                                    color: "#fff",
                                    fontSize: 10,
                                    fontWeight: "normal",
                                    opacity: 1
                                }
                            },
                            itemStyle: {
                                areaColor: {
                                    type: 'pattern',
                                    image: this.mapBg,
                                    repeat: 'no-repeat',
                                    imageSize: '100%',
                                    patternSize: [815, 534],
                                    patternPosition: [0, 0]
                                },
                                borderColor: "#00eaff",
                                borderWidth: 2,
                                shadowColor: "#00eaff",
                                shadowBlur: 25,
                                shadowOffsetX: 0,
                                shadowOffsetY: 0,
                                opacity: 1
                            }
                        },
                        select: {
                            disabled: true
                        },
                        light: { // 光照相关的设置
                            main: { // 主光源
                                color: "#00eaff", // 光照颜色
                                intensity: 1.2, // 增加光照强度
                                shadow: true, // 是否显示阴影
                                shadowQuality: "high", // 阴影质量
                        light: {
                            main: {
                                color: "#00eaff",
                                intensity: 1.2,
                                shadow: true,
                                shadowQuality: 'ultra',
                                alpha: 40,
                                beta: 0,
                                beta: 0
                            },
                            ambient: { // 环境光
                                color: "#00eaff", // 环境光颜色
                                intensity: 0.3, // 减弱环境光以突出主光源
                            },
                            ambient: {
                                color: "#00eaff",
                                intensity: 0.3
                            }
                        },
                        tooltip: {
                            show: false
                        },
                        silent: false  // 禁用鼠标事件
                    },
                ],
                    this.getMarkerSeries("blue"),
                    this.getMarkerSeries("orange")
                ]
            };
            myChart.setOption(option);
        }
        },
        // 生成标记点配置的方法
        getMarkerSeries(type) {
            return {
                name: type === "blue" ? "蓝色标记" : "橙色标记",
                type: "scatter",
                coordinateSystem: "geo",
                geoIndex: 0,
                data: this.mapPoints.filter(point => point.type === type),
                symbol: `image://${type === "blue" ? tooltipBlue : tooltipOrange}`,
                symbolSize: [20, 30],
                symbolOffset: [0, -15],
                z: 20,
                tooltip: {
                    show: true,
                    trigger: 'item',
                    backgroundColor: 'transparent',
                    borderWidth: 0,
                    padding: [0, 0, 0, 0],
                    position: function (point) {
                        return [point[0] - 100, point[1] - 160];
                    },
                    formatter: function (params) {
                        return `<div style="
                            background: url(${tooltipBg}) no-repeat center center;
                            background-size: 100% 100%;
                            width: 211px;
                            padding-bottom: 24px;
                            display: flex;
                            flex-direction: column;
                            justify-content: center;
                            align-items: center;
                        ">
                            <div style="color: #fff; font-size: 16px; margin: 21px 0;font-weight: bold;">${params.name}</div>
                            <div style="display: flex; justify-content: space-around; width: 100%;">
                                <div style="text-align: center;">
                                    <div style="color: rgba(102, 255, 255, 1); font-size: 20px;margin-bottom: 8px;font-family: 'pangmenzhengdao';">99999</div>
                                    <div style="color: #fff; font-size: 12px;">安置户数(户)</div>
                                </div>
                                <div style="text-align: center;">
                                    <div style="color: rgba(102, 255, 255, 1); font-size: 20px;margin-bottom: 8px;font-family: 'pangmenzhengdao';">99999</div>
                                    <div style="color: #fff; font-size: 12px;">安置人数(人)</div>
                                </div>
                            </div>
                        </div>`;
                    }
                },
                label: {
                    show: false
                },
                emphasis: {
                    scale: true,
                    scaleSize: 1.2,
                    itemStyle: {
                        shadowBlur: 10,
                        shadowColor: type === "blue" ? '#00eaff' : '#ff8e3a'
                    }
                }
            };
        },
        // 生成geo层级配置的方法
        getGeoLayers(index) {
            const layerConfig = {
                1: { top: "15%", bottom: "10%", borderColor: "#00A0F5", borderWidth: 1 },
                2: { top: "16%", bottom: "9%", borderColor: "#0C93C5", borderWidth: 1 },
                3: { top: "17%", bottom: "8%", borderColor: "#0A5C83", borderWidth: 2 }
            };
            const config = layerConfig[index];
            return {
                map: "myMap",
                aspectScale: 1,
                zoom: 1,
                roam: false,
                top: config.top,
                bottom: config.bottom,
                z: index,
                itemStyle: {
                    areaColor: "transparent",
                    borderColor: config.borderColor,
                    borderWidth: config.borderWidth,
                    ...(index === 3 ? {
                        shadowColor: "#00eaff",
                        shadowBlur: 25,
                        shadowOffsetX: 0,
                        shadowOffsetY: 0,
                        opacity: 1
                    } : {})
                },
                emphasis: {
                    disabled: true
                },
                select: {
                    disabled: true
                },
                tooltip: {
                    show: false
                },
                silent: true
            };
        },
    }
}
</script>
<style scoped>
.map-container {
    position: relative;
    width: 815px;
    height: 534px;
}
src/main.js
@@ -12,6 +12,8 @@
import 'echarts/lib/component/legend';
import 'echarts/lib/component/grid';
Vue.component('v-chart', ECharts); 
import './assets/font/font.css'
Vue.prototype.$echarts = echarts
Vue.config.productionTip = false
src/utils/map/chongzhou.json
@@ -5,7 +5,7 @@
        {
            "type": "Feature",
            "properties": {
                "name": "崇州市",
                "name": "",
                "BM_Time": "2025-03-21 16:00:33",
                "BM_Area": 1090686919.2168725,
                "adcode": "510184000000"
src/utils/request.js
New file
@@ -0,0 +1,81 @@
import axios from 'axios'
import {
  Message
} from 'element-ui'
const service = axios.create({
  target: `http://182.140.209.168:8888`,
  withCredentials: false, // 当跨域请求时发送cookie
  timeout: 30000, // request timeout
})
// 请求拦截
service.interceptors.request.use(
  config => {
    const token = localStorage.getItem('token')
    if (token) {
      // 添加token到请求头
      config.headers['Authorization'] = token
    }
    if (config.method == 'get') {
      if (!config.params) config.params = {};
      config.params = {
        ...config.params,
      }
    }
    if (config.method == 'post') {
      if (!config.data) config.data = {};
      config.data = {
        ...config.data,
      }
    }
    return config
  },
  error => {
    return Promise.reject(error)
  }
)
// 响应拦截
service.interceptors.response.use(
  response => {
    if (!response) {
      return Promise.reject(new Error('请求超时'))
    }
    const res = response;
    if (res.status === 200) {
      if (!res.data) {
        EditionPayDialog({
          show: true
        });
        return Promise.reject(new Error('暂无数据'))
      }
      if (res.data.code == 500) {
        Message({
          message: res.data.message || 'Error',
          type: 'error',
          duration: 3000
        })
        return Promise.reject(new Error(res.data.message))
      }
      return res.data
    } else {
      Message({
        message: res.message || 'Error',
        type: 'error',
        duration: 3000
      })
      return Promise.reject(new Error(res.message || 'Error'))
    }
  },
  error => {
    console.log('err' + error)
    Message({
      message: error.message,
      type: 'error',
      duration: 5000
    })
    return Promise.reject(error)
  }
)
export default service
src/views/DataScreen.vue
@@ -2,7 +2,7 @@
  <div class="data-screen" :style="screenStyle">
    <header-panel />
    <left-panel />
    <center-panel />
    <center-panel v-if="!loading" :data="data" />
    <right-panel />
  </div>
</template>
@@ -12,6 +12,7 @@
import LeftPanel from '@/components/datascreen/LeftPanel.vue';
import CenterPanel from '@/components/datascreen/CenterPanel.vue';
import RightPanel from '@/components/datascreen/RightPanel.vue';
import { getData } from './service';
export default {
  name: 'DataScreen',
@@ -28,8 +29,16 @@
        height: '1080px',
        transform: `scale(${window.innerWidth / 1920})`,
        transformOrigin: 'left top'
      }
      },
      data: {},
      loading: true
    };
  },
  created() {
    getData().then(res => {
      this.data = res.data;
      this.loading = false;
    });
  },
  mounted() {
    window.addEventListener('resize', this.handleResize);
@@ -54,4 +63,4 @@
  background: url('@/assets/背景色.png') no-repeat center center;
  background-size: 100% 100%;
}
</style>
</style>
src/views/service.js
New file
@@ -0,0 +1,10 @@
import request from '@/utils/request'
// POST请求
export function getData(data) {
    return request({
        url: '/api/screen/data',
        method: 'post',
        data
    })
}
vue.config.js
@@ -1,4 +1,16 @@
const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true
  transpileDependencies: true,
  publicPath: './',
  devServer: {
    proxy: { //跨域配置
      "/api": { //是自定义的本地请求时的名字
        target: `http://182.140.209.168:8888`,
        changeOrigin: true, //在本地会创建一个虚拟服务端,然后发送请求的数据,并同时接收请求的数据,这样服务端和服务端进行数据的交互就不会有跨域问题
        pathRewrite: { //路径重写
          "^/api": "/api" // '^/api'是一个正则表达式,表示要匹配请求的url中,全部 '/api' 转接为 '/'
        }
      },
    }
  },
})