Browse Source

核心流调

hm 1 month ago
parent
commit
d46b956fab

+ 175 - 119
package-lock.json

@@ -12,11 +12,15 @@
         "@jiaminghi/data-view": "^2.10.0",
         "axios": "^1.7.9",
         "echarts": "^5.6.0",
+        "echarts-gl": "^2.0.9",
         "element-plus": "^2.9.5",
+        "highcharts": "^12.1.2",
         "pinia": "^3.0.1",
         "pinia-plugin-persistedstate": "^4.2.0",
         "postcss-px-to-viewport": "^1.1.1",
+        "three": "^0.174.0",
         "vue": "^3.5.12",
+        "vue-highcharts": "^0.2.0",
         "vue-router": "^4.5.0"
       },
       "devDependencies": {
@@ -1156,9 +1160,9 @@
       }
     },
     "node_modules/@rollup/rollup-android-arm-eabi": {
-      "version": "4.34.8",
-      "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.8.tgz",
-      "integrity": "sha512-q217OSE8DTp8AFHuNHXo0Y86e1wtlfVrXiAlwkIvGRQv9zbc6mE3sjIVfwI8sYUyNxwOg0j/Vm1RKM04JcWLJw==",
+      "version": "4.34.9",
+      "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.9.tgz",
+      "integrity": "sha512-qZdlImWXur0CFakn2BJ2znJOdqYZKiedEPEVNTBrpfPjc/YuTGcaYZcdmNFTkUj3DU0ZM/AElcM8Ybww3xVLzA==",
       "cpu": [
         "arm"
       ],
@@ -1169,9 +1173,9 @@
       ]
     },
     "node_modules/@rollup/rollup-android-arm64": {
-      "version": "4.34.8",
-      "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.8.tgz",
-      "integrity": "sha512-Gigjz7mNWaOL9wCggvoK3jEIUUbGul656opstjaUSGC3eT0BM7PofdAJaBfPFWWkXNVAXbaQtC99OCg4sJv70Q==",
+      "version": "4.34.9",
+      "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.9.tgz",
+      "integrity": "sha512-4KW7P53h6HtJf5Y608T1ISKvNIYLWRKMvfnG0c44M6In4DQVU58HZFEVhWINDZKp7FZps98G3gxwC1sb0wXUUg==",
       "cpu": [
         "arm64"
       ],
@@ -1182,9 +1186,9 @@
       ]
     },
     "node_modules/@rollup/rollup-darwin-arm64": {
-      "version": "4.34.8",
-      "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.8.tgz",
-      "integrity": "sha512-02rVdZ5tgdUNRxIUrFdcMBZQoaPMrxtwSb+/hOfBdqkatYHR3lZ2A2EGyHq2sGOd0Owk80oV3snlDASC24He3Q==",
+      "version": "4.34.9",
+      "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.9.tgz",
+      "integrity": "sha512-0CY3/K54slrzLDjOA7TOjN1NuLKERBgk9nY5V34mhmuu673YNb+7ghaDUs6N0ujXR7fz5XaS5Aa6d2TNxZd0OQ==",
       "cpu": [
         "arm64"
       ],
@@ -1195,9 +1199,9 @@
       ]
     },
     "node_modules/@rollup/rollup-darwin-x64": {
-      "version": "4.34.8",
-      "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.8.tgz",
-      "integrity": "sha512-qIP/elwR/tq/dYRx3lgwK31jkZvMiD6qUtOycLhTzCvrjbZ3LjQnEM9rNhSGpbLXVJYQ3rq39A6Re0h9tU2ynw==",
+      "version": "4.34.9",
+      "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.9.tgz",
+      "integrity": "sha512-eOojSEAi/acnsJVYRxnMkPFqcxSMFfrw7r2iD9Q32SGkb/Q9FpUY1UlAu1DH9T7j++gZ0lHjnm4OyH2vCI7l7Q==",
       "cpu": [
         "x64"
       ],
@@ -1208,9 +1212,9 @@
       ]
     },
     "node_modules/@rollup/rollup-freebsd-arm64": {
-      "version": "4.34.8",
-      "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.8.tgz",
-      "integrity": "sha512-IQNVXL9iY6NniYbTaOKdrlVP3XIqazBgJOVkddzJlqnCpRi/yAeSOa8PLcECFSQochzqApIOE1GHNu3pCz+BDA==",
+      "version": "4.34.9",
+      "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.9.tgz",
+      "integrity": "sha512-2lzjQPJbN5UnHm7bHIUKFMulGTQwdvOkouJDpPysJS+QFBGDJqcfh+CxxtG23Ik/9tEvnebQiylYoazFMAgrYw==",
       "cpu": [
         "arm64"
       ],
@@ -1221,9 +1225,9 @@
       ]
     },
     "node_modules/@rollup/rollup-freebsd-x64": {
-      "version": "4.34.8",
-      "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.8.tgz",
-      "integrity": "sha512-TYXcHghgnCqYFiE3FT5QwXtOZqDj5GmaFNTNt3jNC+vh22dc/ukG2cG+pi75QO4kACohZzidsq7yKTKwq/Jq7Q==",
+      "version": "4.34.9",
+      "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.9.tgz",
+      "integrity": "sha512-SLl0hi2Ah2H7xQYd6Qaiu01kFPzQ+hqvdYSoOtHYg/zCIFs6t8sV95kaoqjzjFwuYQLtOI0RZre/Ke0nPaQV+g==",
       "cpu": [
         "x64"
       ],
@@ -1234,9 +1238,9 @@
       ]
     },
     "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
-      "version": "4.34.8",
-      "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.8.tgz",
-      "integrity": "sha512-A4iphFGNkWRd+5m3VIGuqHnG3MVnqKe7Al57u9mwgbyZ2/xF9Jio72MaY7xxh+Y87VAHmGQr73qoKL9HPbXj1g==",
+      "version": "4.34.9",
+      "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.9.tgz",
+      "integrity": "sha512-88I+D3TeKItrw+Y/2ud4Tw0+3CxQ2kLgu3QvrogZ0OfkmX/DEppehus7L3TS2Q4lpB+hYyxhkQiYPJ6Mf5/dPg==",
       "cpu": [
         "arm"
       ],
@@ -1247,9 +1251,9 @@
       ]
     },
     "node_modules/@rollup/rollup-linux-arm-musleabihf": {
-      "version": "4.34.8",
-      "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.8.tgz",
-      "integrity": "sha512-S0lqKLfTm5u+QTxlFiAnb2J/2dgQqRy/XvziPtDd1rKZFXHTyYLoVL58M/XFwDI01AQCDIevGLbQrMAtdyanpA==",
+      "version": "4.34.9",
+      "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.9.tgz",
+      "integrity": "sha512-3qyfWljSFHi9zH0KgtEPG4cBXHDFhwD8kwg6xLfHQ0IWuH9crp005GfoUUh/6w9/FWGBwEHg3lxK1iHRN1MFlA==",
       "cpu": [
         "arm"
       ],
@@ -1260,9 +1264,9 @@
       ]
     },
     "node_modules/@rollup/rollup-linux-arm64-gnu": {
-      "version": "4.34.8",
-      "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.8.tgz",
-      "integrity": "sha512-jpz9YOuPiSkL4G4pqKrus0pn9aYwpImGkosRKwNi+sJSkz+WU3anZe6hi73StLOQdfXYXC7hUfsQlTnjMd3s1A==",
+      "version": "4.34.9",
+      "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.9.tgz",
+      "integrity": "sha512-6TZjPHjKZUQKmVKMUowF3ewHxctrRR09eYyvT5eFv8w/fXarEra83A2mHTVJLA5xU91aCNOUnM+DWFMSbQ0Nxw==",
       "cpu": [
         "arm64"
       ],
@@ -1273,9 +1277,9 @@
       ]
     },
     "node_modules/@rollup/rollup-linux-arm64-musl": {
-      "version": "4.34.8",
-      "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.8.tgz",
-      "integrity": "sha512-KdSfaROOUJXgTVxJNAZ3KwkRc5nggDk+06P6lgi1HLv1hskgvxHUKZ4xtwHkVYJ1Rep4GNo+uEfycCRRxht7+Q==",
+      "version": "4.34.9",
+      "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.9.tgz",
+      "integrity": "sha512-LD2fytxZJZ6xzOKnMbIpgzFOuIKlxVOpiMAXawsAZ2mHBPEYOnLRK5TTEsID6z4eM23DuO88X0Tq1mErHMVq0A==",
       "cpu": [
         "arm64"
       ],
@@ -1286,9 +1290,9 @@
       ]
     },
     "node_modules/@rollup/rollup-linux-loongarch64-gnu": {
-      "version": "4.34.8",
-      "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.8.tgz",
-      "integrity": "sha512-NyF4gcxwkMFRjgXBM6g2lkT58OWztZvw5KkV2K0qqSnUEqCVcqdh2jN4gQrTn/YUpAcNKyFHfoOZEer9nwo6uQ==",
+      "version": "4.34.9",
+      "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.9.tgz",
+      "integrity": "sha512-dRAgTfDsn0TE0HI6cmo13hemKpVHOEyeciGtvlBTkpx/F65kTvShtY/EVyZEIfxFkV5JJTuQ9tP5HGBS0hfxIg==",
       "cpu": [
         "loong64"
       ],
@@ -1299,9 +1303,9 @@
       ]
     },
     "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
-      "version": "4.34.8",
-      "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.8.tgz",
-      "integrity": "sha512-LMJc999GkhGvktHU85zNTDImZVUCJ1z/MbAJTnviiWmmjyckP5aQsHtcujMjpNdMZPT2rQEDBlJfubhs3jsMfw==",
+      "version": "4.34.9",
+      "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.9.tgz",
+      "integrity": "sha512-PHcNOAEhkoMSQtMf+rJofwisZqaU8iQ8EaSps58f5HYll9EAY5BSErCZ8qBDMVbq88h4UxaNPlbrKqfWP8RfJA==",
       "cpu": [
         "ppc64"
       ],
@@ -1312,9 +1316,9 @@
       ]
     },
     "node_modules/@rollup/rollup-linux-riscv64-gnu": {
-      "version": "4.34.8",
-      "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.8.tgz",
-      "integrity": "sha512-xAQCAHPj8nJq1PI3z8CIZzXuXCstquz7cIOL73HHdXiRcKk8Ywwqtx2wrIy23EcTn4aZ2fLJNBB8d0tQENPCmw==",
+      "version": "4.34.9",
+      "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.9.tgz",
+      "integrity": "sha512-Z2i0Uy5G96KBYKjeQFKbbsB54xFOL5/y1P5wNBsbXB8yE+At3oh0DVMjQVzCJRJSfReiB2tX8T6HUFZ2k8iaKg==",
       "cpu": [
         "riscv64"
       ],
@@ -1325,9 +1329,9 @@
       ]
     },
     "node_modules/@rollup/rollup-linux-s390x-gnu": {
-      "version": "4.34.8",
-      "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.8.tgz",
-      "integrity": "sha512-DdePVk1NDEuc3fOe3dPPTb+rjMtuFw89gw6gVWxQFAuEqqSdDKnrwzZHrUYdac7A7dXl9Q2Vflxpme15gUWQFA==",
+      "version": "4.34.9",
+      "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.9.tgz",
+      "integrity": "sha512-U+5SwTMoeYXoDzJX5dhDTxRltSrIax8KWwfaaYcynuJw8mT33W7oOgz0a+AaXtGuvhzTr2tVKh5UO8GVANTxyQ==",
       "cpu": [
         "s390x"
       ],
@@ -1338,9 +1342,9 @@
       ]
     },
     "node_modules/@rollup/rollup-linux-x64-gnu": {
-      "version": "4.34.8",
-      "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.8.tgz",
-      "integrity": "sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA==",
+      "version": "4.34.9",
+      "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.9.tgz",
+      "integrity": "sha512-FwBHNSOjUTQLP4MG7y6rR6qbGw4MFeQnIBrMe161QGaQoBQLqSUEKlHIiVgF3g/mb3lxlxzJOpIBhaP+C+KP2A==",
       "cpu": [
         "x64"
       ],
@@ -1351,9 +1355,9 @@
       ]
     },
     "node_modules/@rollup/rollup-linux-x64-musl": {
-      "version": "4.34.8",
-      "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.8.tgz",
-      "integrity": "sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ==",
+      "version": "4.34.9",
+      "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.9.tgz",
+      "integrity": "sha512-cYRpV4650z2I3/s6+5/LONkjIz8MBeqrk+vPXV10ORBnshpn8S32bPqQ2Utv39jCiDcO2eJTuSlPXpnvmaIgRA==",
       "cpu": [
         "x64"
       ],
@@ -1364,9 +1368,9 @@
       ]
     },
     "node_modules/@rollup/rollup-win32-arm64-msvc": {
-      "version": "4.34.8",
-      "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.8.tgz",
-      "integrity": "sha512-YHYsgzZgFJzTRbth4h7Or0m5O74Yda+hLin0irAIobkLQFRQd1qWmnoVfwmKm9TXIZVAD0nZ+GEb2ICicLyCnQ==",
+      "version": "4.34.9",
+      "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.9.tgz",
+      "integrity": "sha512-z4mQK9dAN6byRA/vsSgQiPeuO63wdiDxZ9yg9iyX2QTzKuQM7T4xlBoeUP/J8uiFkqxkcWndWi+W7bXdPbt27Q==",
       "cpu": [
         "arm64"
       ],
@@ -1377,9 +1381,9 @@
       ]
     },
     "node_modules/@rollup/rollup-win32-ia32-msvc": {
-      "version": "4.34.8",
-      "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.8.tgz",
-      "integrity": "sha512-r3NRQrXkHr4uWy5TOjTpTYojR9XmF0j/RYgKCef+Ag46FWUTltm5ziticv8LdNsDMehjJ543x/+TJAek/xBA2w==",
+      "version": "4.34.9",
+      "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.9.tgz",
+      "integrity": "sha512-KB48mPtaoHy1AwDNkAJfHXvHp24H0ryZog28spEs0V48l3H1fr4i37tiyHsgKZJnCmvxsbATdZGBpbmxTE3a9w==",
       "cpu": [
         "ia32"
       ],
@@ -1390,9 +1394,9 @@
       ]
     },
     "node_modules/@rollup/rollup-win32-x64-msvc": {
-      "version": "4.34.8",
-      "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.8.tgz",
-      "integrity": "sha512-U0FaE5O1BCpZSeE6gBl3c5ObhePQSfk9vDRToMmTkbhCOgW4jqvtS5LGyQ76L1fH8sM0keRp4uDTsbjiUyjk0g==",
+      "version": "4.34.9",
+      "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.9.tgz",
+      "integrity": "sha512-AyleYRPU7+rgkMWbEh71fQlrzRfeP6SyMnRf9XX4fCdDPAJumdSBqYEcWPMzVQ4ScAl7E4oFfK0GUVn77xSwbw==",
       "cpu": [
         "x64"
       ],
@@ -1419,9 +1423,9 @@
       "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw=="
     },
     "node_modules/@types/lodash": {
-      "version": "4.17.15",
-      "resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.17.15.tgz",
-      "integrity": "sha512-w/P33JFeySuhN6JLkysYUK2gEmy9kHHFN7E8ro0tkfmlDOgxBDzWEZ/J8cWA+fHqFevpswDTFZnDx+R9lbL6xw=="
+      "version": "4.17.16",
+      "resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.17.16.tgz",
+      "integrity": "sha512-HX7Em5NYQAXKW+1T+FiuG27NGwzJfCX3s1GjOa7ujxZa52kjJLOr4FUxT+giF6Tgxv1e+/czV/iTtBw27WTU9g=="
     },
     "node_modules/@types/lodash-es": {
       "version": "4.17.12",
@@ -1698,9 +1702,9 @@
       "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
     },
     "node_modules/axios": {
-      "version": "1.7.9",
-      "resolved": "https://registry.npmmirror.com/axios/-/axios-1.7.9.tgz",
-      "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==",
+      "version": "1.8.1",
+      "resolved": "https://registry.npmmirror.com/axios/-/axios-1.8.1.tgz",
+      "integrity": "sha512-NN+fvwH/kV01dYUQ3PTOZns4LWtWhOFCAhQ/pHb88WQ1hNe5V/dvFwc4VJcDL11LT9xSX0QtsR8sWUuyOuOq7g==",
       "dependencies": {
         "follow-redirects": "^1.15.6",
         "form-data": "^4.0.0",
@@ -1797,9 +1801,9 @@
       }
     },
     "node_modules/c12/node_modules/ohash": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmmirror.com/ohash/-/ohash-2.0.4.tgz",
-      "integrity": "sha512-ac+SFwzhdHb0hp48/dbR7Jta39qfbuj7t3hApd9uyHS8bisHTfVzSEvjOVgV0L3zG7VR2/7JjkSGimP75D+hOQ=="
+      "version": "2.0.9",
+      "resolved": "https://registry.npmmirror.com/ohash/-/ohash-2.0.9.tgz",
+      "integrity": "sha512-ljz2sybhXrRpBW9LleuJPP9uxbMKW8qxFz9lLOHW2QEel78rJ1sUgaX2cBNDt49w+JleNSkhYkVOCx6RgkKn0Q=="
     },
     "node_modules/call-bind-apply-helpers": {
       "version": "1.0.2",
@@ -1814,9 +1818,9 @@
       }
     },
     "node_modules/caniuse-lite": {
-      "version": "1.0.30001700",
-      "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001700.tgz",
-      "integrity": "sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ==",
+      "version": "1.0.30001701",
+      "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001701.tgz",
+      "integrity": "sha512-faRs/AW3jA9nTwmJBSO1PQ6L/EOgsB5HMQQq4iCu5zhPgVVgO/pZRHlmatwijZKetFw8/Pr4q6dEN8sJuq8qTw==",
       "funding": [
         {
           "type": "opencollective",
@@ -1862,6 +1866,11 @@
         "consola": "^3.2.3"
       }
     },
+    "node_modules/claygl": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmmirror.com/claygl/-/claygl-1.3.0.tgz",
+      "integrity": "sha512-+gGtJjT6SSHD2l2yC3MCubW/sCV40tZuSs5opdtn79vFSGUgp/lH139RNEQ6Jy078/L0aV8odCw8RSrUcMfLaQ=="
+    },
     "node_modules/combined-stream": {
       "version": "1.0.8",
       "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz",
@@ -2000,10 +2009,22 @@
         "zrender": "5.6.1"
       }
     },
+    "node_modules/echarts-gl": {
+      "version": "2.0.9",
+      "resolved": "https://registry.npmmirror.com/echarts-gl/-/echarts-gl-2.0.9.tgz",
+      "integrity": "sha512-oKeMdkkkpJGWOzjgZUsF41DOh6cMsyrGGXimbjK2l6Xeq/dBQu4ShG2w2Dzrs/1bD27b2pLTGSaUzouY191gzA==",
+      "dependencies": {
+        "claygl": "^1.2.1",
+        "zrender": "^5.1.1"
+      },
+      "peerDependencies": {
+        "echarts": "^5.1.2"
+      }
+    },
     "node_modules/electron-to-chromium": {
-      "version": "1.5.104",
-      "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.5.104.tgz",
-      "integrity": "sha512-Us9M2L4cO/zMBqVkJtnj353nQhMju9slHm62NprKTmdF3HH8wYOtNvDFq/JB2+ZRoGLzdvYDiATlMHs98XBM1g=="
+      "version": "1.5.109",
+      "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.5.109.tgz",
+      "integrity": "sha512-AidaH9JETVRr9DIPGfp1kAarm/W6hRJTPuCnkF+2MqhF4KaAgRIcBc8nvjk+YMXZhwfISof/7WG29eS4iGxQLQ=="
     },
     "node_modules/element-plus": {
       "version": "2.9.5",
@@ -2168,9 +2189,9 @@
       }
     },
     "node_modules/fastq": {
-      "version": "1.19.0",
-      "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.19.0.tgz",
-      "integrity": "sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==",
+      "version": "1.19.1",
+      "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.19.1.tgz",
+      "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==",
       "dependencies": {
         "reusify": "^1.0.4"
       }
@@ -2408,6 +2429,11 @@
         "node": ">= 0.4"
       }
     },
+    "node_modules/highcharts": {
+      "version": "12.1.2",
+      "resolved": "https://registry.npmmirror.com/highcharts/-/highcharts-12.1.2.tgz",
+      "integrity": "sha512-paZ72q1um0zZT1sS+O/3JfXVSOLPmZ0zlo8SgRc0rEplPFPQUPc4VpkgQS8IUTueeOBgIWwVpAWyC9tBYbQ0kg=="
+    },
     "node_modules/hookable": {
       "version": "5.5.3",
       "resolved": "https://registry.npmmirror.com/hookable/-/hookable-5.5.3.tgz",
@@ -2526,12 +2552,13 @@
       "integrity": "sha512-xYSH7AvuQ6nXkq42x0v5S8/Iry+cfulBz/DJQzhIyESdLD7425jXsPy4vn5cCXU+HhRN2kVw51Vd1K6/By4BQg=="
     },
     "node_modules/local-pkg": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmmirror.com/local-pkg/-/local-pkg-1.0.0.tgz",
-      "integrity": "sha512-bbgPw/wmroJsil/GgL4qjDzs5YLTBMQ99weRsok1XCDccQeehbHA/I1oRvk2NPtr7KGZgT/Y5tPRnAtMqeG2Kg==",
+      "version": "1.1.0",
+      "resolved": "https://registry.npmmirror.com/local-pkg/-/local-pkg-1.1.0.tgz",
+      "integrity": "sha512-xbZBuX6gYIWrlLmZG43aAVer4ocntYO09vPy9lxd6Ns8DnR4U7N+IIeDkubinqFOHHzoMlPxTxwo0jhE7oYjAw==",
       "dependencies": {
-        "mlly": "^1.7.3",
-        "pkg-types": "^1.3.0"
+        "mlly": "^1.7.4",
+        "pkg-types": "^1.3.1",
+        "quansync": "^0.2.1"
       },
       "engines": {
         "node": ">=14"
@@ -2778,9 +2805,9 @@
       }
     },
     "node_modules/ohash": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmmirror.com/ohash/-/ohash-1.1.4.tgz",
-      "integrity": "sha512-FlDryZAahJmEF3VR3w1KogSEdWX3WhA5GPakFx4J81kEAiHyLMpdLLElS8n8dfNadMgAne/MywcvmogzscVt4g=="
+      "version": "1.1.5",
+      "resolved": "https://registry.npmmirror.com/ohash/-/ohash-1.1.5.tgz",
+      "integrity": "sha512-AtXrG/lMFjPBWj3uhWYFwYVZQqutPYRsv6nnPLTipnC+gJuMFc+WFzf/jx+94Ebray1vxfQfEFDtpIpppOe4xQ=="
     },
     "node_modules/path-type": {
       "version": "6.0.0",
@@ -2913,6 +2940,21 @@
       "resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
       "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
     },
+    "node_modules/quansync": {
+      "version": "0.2.7",
+      "resolved": "https://registry.npmmirror.com/quansync/-/quansync-0.2.7.tgz",
+      "integrity": "sha512-KZDFlN9/Si3CgKHZsIfLBsrjWKFjqu9KA0zDGJEQoQzPm5HWNDEFc2mkLeYUBBOwEJtxNBSMaNLE/GlvArIEfQ==",
+      "funding": [
+        {
+          "type": "individual",
+          "url": "https://github.com/sponsors/antfu"
+        },
+        {
+          "type": "individual",
+          "url": "https://github.com/sponsors/sxzz"
+        }
+      ]
+    },
     "node_modules/queue-microtask": {
       "version": "1.2.3",
       "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz",
@@ -2959,9 +3001,9 @@
       "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
     },
     "node_modules/reusify": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz",
-      "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+      "version": "1.1.0",
+      "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.1.0.tgz",
+      "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
       "engines": {
         "iojs": ">=1.0.0",
         "node": ">=0.10.0"
@@ -2973,9 +3015,9 @@
       "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA=="
     },
     "node_modules/rollup": {
-      "version": "4.34.8",
-      "resolved": "https://registry.npmmirror.com/rollup/-/rollup-4.34.8.tgz",
-      "integrity": "sha512-489gTVMzAYdiZHFVA/ig/iYFllCcWFHMvUHI1rpFmkoUtRlQxqh6/yiNqnYibjMZ2b/+FUQwldG+aLsEt6bglQ==",
+      "version": "4.34.9",
+      "resolved": "https://registry.npmmirror.com/rollup/-/rollup-4.34.9.tgz",
+      "integrity": "sha512-nF5XYqWWp9hx/LrpC8sZvvvmq0TeTjQgaZHYmAgwysT9nh8sWnZhBnM8ZyVbbJFIQBLwHDNoMqsBZBbUo4U8sQ==",
       "dev": true,
       "dependencies": {
         "@types/estree": "1.0.6"
@@ -2988,25 +3030,25 @@
         "npm": ">=8.0.0"
       },
       "optionalDependencies": {
-        "@rollup/rollup-android-arm-eabi": "4.34.8",
-        "@rollup/rollup-android-arm64": "4.34.8",
-        "@rollup/rollup-darwin-arm64": "4.34.8",
-        "@rollup/rollup-darwin-x64": "4.34.8",
-        "@rollup/rollup-freebsd-arm64": "4.34.8",
-        "@rollup/rollup-freebsd-x64": "4.34.8",
-        "@rollup/rollup-linux-arm-gnueabihf": "4.34.8",
-        "@rollup/rollup-linux-arm-musleabihf": "4.34.8",
-        "@rollup/rollup-linux-arm64-gnu": "4.34.8",
-        "@rollup/rollup-linux-arm64-musl": "4.34.8",
-        "@rollup/rollup-linux-loongarch64-gnu": "4.34.8",
-        "@rollup/rollup-linux-powerpc64le-gnu": "4.34.8",
-        "@rollup/rollup-linux-riscv64-gnu": "4.34.8",
-        "@rollup/rollup-linux-s390x-gnu": "4.34.8",
-        "@rollup/rollup-linux-x64-gnu": "4.34.8",
-        "@rollup/rollup-linux-x64-musl": "4.34.8",
-        "@rollup/rollup-win32-arm64-msvc": "4.34.8",
-        "@rollup/rollup-win32-ia32-msvc": "4.34.8",
-        "@rollup/rollup-win32-x64-msvc": "4.34.8",
+        "@rollup/rollup-android-arm-eabi": "4.34.9",
+        "@rollup/rollup-android-arm64": "4.34.9",
+        "@rollup/rollup-darwin-arm64": "4.34.9",
+        "@rollup/rollup-darwin-x64": "4.34.9",
+        "@rollup/rollup-freebsd-arm64": "4.34.9",
+        "@rollup/rollup-freebsd-x64": "4.34.9",
+        "@rollup/rollup-linux-arm-gnueabihf": "4.34.9",
+        "@rollup/rollup-linux-arm-musleabihf": "4.34.9",
+        "@rollup/rollup-linux-arm64-gnu": "4.34.9",
+        "@rollup/rollup-linux-arm64-musl": "4.34.9",
+        "@rollup/rollup-linux-loongarch64-gnu": "4.34.9",
+        "@rollup/rollup-linux-powerpc64le-gnu": "4.34.9",
+        "@rollup/rollup-linux-riscv64-gnu": "4.34.9",
+        "@rollup/rollup-linux-s390x-gnu": "4.34.9",
+        "@rollup/rollup-linux-x64-gnu": "4.34.9",
+        "@rollup/rollup-linux-x64-musl": "4.34.9",
+        "@rollup/rollup-win32-arm64-msvc": "4.34.9",
+        "@rollup/rollup-win32-ia32-msvc": "4.34.9",
+        "@rollup/rollup-win32-x64-msvc": "4.34.9",
         "fsevents": "~2.3.2"
       }
     },
@@ -3178,6 +3220,11 @@
         "node": ">=10"
       }
     },
+    "node_modules/three": {
+      "version": "0.174.0",
+      "resolved": "https://registry.npmmirror.com/three/-/three-0.174.0.tgz",
+      "integrity": "sha512-p+WG3W6Ov74alh3geCMkGK9NWuT62ee21cV3jEnun201zodVF4tCE5aZa2U122/mkLRmhJJUQmLLW1BH00uQJQ=="
+    },
     "node_modules/tinyexec": {
       "version": "0.3.2",
       "resolved": "https://registry.npmmirror.com/tinyexec/-/tinyexec-0.3.2.tgz",
@@ -3313,15 +3360,15 @@
       }
     },
     "node_modules/unplugin-auto-import": {
-      "version": "19.1.0",
-      "resolved": "https://registry.npmmirror.com/unplugin-auto-import/-/unplugin-auto-import-19.1.0.tgz",
-      "integrity": "sha512-B+TGBEBHqY9aR+7YfShfLujETOHstzpV+yaqgy5PkfV0QG7Py+TYMX7vJ9W4SrysHR+UzR+gzcx/nuZjmPeclA==",
+      "version": "19.1.1",
+      "resolved": "https://registry.npmmirror.com/unplugin-auto-import/-/unplugin-auto-import-19.1.1.tgz",
+      "integrity": "sha512-sCGZZrSR1Bc8RfN8Q0RUDxXtC20rdAt7UB4lDyq8MNtKVHiXXh+5af6Nz4JRp9Q+7HjnbgQfQox0TkEymjdUAQ==",
       "dev": true,
       "dependencies": {
         "local-pkg": "^1.0.0",
         "magic-string": "^0.30.17",
         "picomatch": "^4.0.2",
-        "unimport": "^4.1.1",
+        "unimport": "^4.1.2",
         "unplugin": "^2.2.0",
         "unplugin-utils": "^0.2.4"
       },
@@ -3383,9 +3430,9 @@
       }
     },
     "node_modules/unplugin-vue-components": {
-      "version": "28.4.0",
-      "resolved": "https://registry.npmmirror.com/unplugin-vue-components/-/unplugin-vue-components-28.4.0.tgz",
-      "integrity": "sha512-fnamX2RiKM30nPK4tihEas+bHnbLICo6MmOiP4jGg7fAlgNEuaLvN9yx96JwZDOYfLQcrNzikDdPhZ8k6pkhMg==",
+      "version": "28.4.1",
+      "resolved": "https://registry.npmmirror.com/unplugin-vue-components/-/unplugin-vue-components-28.4.1.tgz",
+      "integrity": "sha512-niGSc0vJD9ueAnsqcfAldmtpkppZ09B6p2G1dL7X5S8KPdgbk1P+txPwaaDCe7N+eZh2VG1aAypLXkuJs3OSUg==",
       "dev": true,
       "dependencies": {
         "chokidar": "^3.6.0",
@@ -3393,7 +3440,7 @@
         "local-pkg": "^1.0.0",
         "magic-string": "^0.30.17",
         "mlly": "^1.7.4",
-        "tinyglobby": "^0.2.10",
+        "tinyglobby": "^0.2.12",
         "unplugin": "^2.2.0",
         "unplugin-utils": "^0.2.4"
       },
@@ -3472,9 +3519,9 @@
       }
     },
     "node_modules/update-browserslist-db": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz",
-      "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==",
+      "version": "1.1.3",
+      "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz",
+      "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==",
       "funding": [
         {
           "type": "opencollective",
@@ -3579,6 +3626,15 @@
         }
       }
     },
+    "node_modules/vue-highcharts": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmmirror.com/vue-highcharts/-/vue-highcharts-0.2.0.tgz",
+      "integrity": "sha512-+zXI/ei3KgpVuEreyeTsvLIp092m+03JtTwg6gj7DxtjJqi4LhYvV/rBnUoaXuvqTsiPNwPBPKeyiATL9iM2Gw==",
+      "peerDependencies": {
+        "highcharts": ">=4.2.0",
+        "vue": ">=3"
+      }
+    },
     "node_modules/vue-router": {
       "version": "4.5.0",
       "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.5.0.tgz",

+ 4 - 0
package.json

@@ -13,11 +13,15 @@
     "@jiaminghi/data-view": "^2.10.0",
     "axios": "^1.7.9",
     "echarts": "^5.6.0",
+    "echarts-gl": "^2.0.9",
     "element-plus": "^2.9.5",
+    "highcharts": "^12.1.2",
     "pinia": "^3.0.1",
     "pinia-plugin-persistedstate": "^4.2.0",
     "postcss-px-to-viewport": "^1.1.1",
+    "three": "^0.174.0",
     "vue": "^3.5.12",
+    "vue-highcharts": "^0.2.0",
     "vue-router": "^4.5.0"
   },
   "devDependencies": {

+ 1 - 0
src/main.js

@@ -8,6 +8,7 @@ import App from './App.vue'
 import router from './router'
 import store from './store'
 
+
 const app = createApp(App)
 
 

+ 181 - 0
src/views/left/comp/RingChart copy.vue

@@ -0,0 +1,181 @@
+<template>
+  <div ref="chartContainer" class="chart-container" ></div>
+</template>
+
+<script setup>
+import { onMounted, ref } from 'vue'
+import Highcharts from 'highcharts'
+import Highcharts3D from 'highcharts/highcharts-3d'
+
+// 注册Highcharts 3D模块
+// Highcharts3D(Highcharts);
+// 启用 highcharts-3d 插件
+// highcharts3d(Highcharts);
+
+// 数据
+const data = [
+  { name: '风险个案', count: 35, h:70},
+  { name: '风险事件', count: 30, h: 60 },
+  { name: '风险信息', count: 30, h: 60 }
+]
+const chartContainer = ref(null)
+onMounted(() => {
+ initChart()
+
+  // const chart = Highcharts.chart(chartContainer.value, {
+  //   chart: {
+  //     type: 'pie', // 饼图类型
+  //     options3d: {
+  //       enabled: true, // 启用 3D
+  //       alpha: 45, // 3D 角度
+  //       beta: 0, // 旋转角度
+  //       depth: 50 // 深度
+  //     },
+  //      backgroundColor: '#f8f8f8' // 设置整体背景色
+  //   },
+  //   title: {
+  //     text: ''
+  //   },
+  //   plotOptions: {
+  //     pie: {
+  //       innerSize: '40%', // 环形图内圆的大小
+  //       depth: 45, // 环形图的 3D 深度
+  //       dataLabels: {
+  //         enabled: true,
+  //         format: '{point.name}: {point.percentage:.1f}%' // 显示数据标签
+  //       }
+  //     },
+  //     // 为每个环块设置不同的深度
+  //     point: {
+  //       events: {
+  //         mouseOver: function () {
+  //           this.update({
+  //             depth: this.h // 使用 h 值调整深度
+  //           });
+  //         }
+  //       }
+  //     }
+  //   },
+  //   series: [
+  //     {
+  //       name: '风险类型',
+  //       data: data.map(item => ({
+  //         name: item.name,
+  //         y: item.count,
+  //         h: item.h, // 将 h 值传递给每个数据项
+  //         depth: item.h // 设置环块的深度为 h 值
+  //       }))
+  //     }
+  //   ],
+  //   tooltip: {
+  //     pointFormat: '{series.name}: <b>{point.y}</b><br/>'
+  //   }
+  // })
+})
+
+ function initChart() {
+   const highEcharts = chartContainer.value
+   HighCharts.chart(highEcharts, {
+    chart: {
+      type: 'pie',
+      animation: false,
+      backgroundColor: 'rgba(0,0,0,0)',  // 设置背景透明
+      events: {
+        load: function () {
+          const each = HighCharts.each
+          const points = this.series[0].points
+          each(points, function (p, i) {
+            p.graphic.attr({
+              translateY: -p.shapeArgs.ran  // 设置每个环块的深度
+            })
+            p.graphic.side1.attr({
+              translateY: -p.shapeArgs.ran
+            })
+            p.graphic.side2.attr({
+              translateY: -p.shapeArgs.ran
+            })
+          })
+        }
+      },
+      options3d: {
+        enabled: true,
+        alpha: 65  // 设置3D的视角角度
+      }
+    },
+    title: {
+      show: false,
+      text: null
+    },
+    subtitle: {
+      text: null
+    },
+    credits: {
+      enabled: false
+    },
+    legend: {
+      backgroundColor: 'rgba(0,0,0,0)',
+      shadow: false,
+      layout: 'vertical',
+      align: 'right',
+      verticalAlign: 'top',
+      x: 0,
+      y: 100,
+      symbolPadding: 10,
+      symbolHeight: 14,
+      itemStyle: {
+        lineHeight: '24px',
+        fontSize: '16px',
+        color: '#fff'
+      },
+      labelFormatter: function () {
+        return this.name + this.h + '%'
+      }
+    },
+    plotOptions: {
+      pie: {
+        allowPointSelect: true,
+        cursor: 'pointer',
+        depth: 35,
+        innerSize: 180,
+        dataLabels: {
+          enabled: false
+        },
+        showInLegend: false
+      }
+    },
+    series: [{
+      type: 'pie',
+      name: '占比',
+      colorByPoint: true,
+      colors: [
+        { // 自定义颜色(渐变)
+          linearGradient: { x1: 0, y1: 1, x2: 1, y2: 0 },
+          stops: [[0, '#19596d'], [1, '#2ea1b2']]
+        },
+        { // 自定义颜色(渐变)
+          linearGradient: { x1: 0, y1: 1, x2: 1, y2: 0 },
+          stops: [[0, '#ee7529'], [1, '#f5a86c']]
+        },
+        { // 自定义颜色(渐变)
+          linearGradient: { x1: 0, y1: 1, x2: 1, y2: 0 },
+          stops: [[0, '#f5c055'], [1, '#967b3d']]
+        },
+        { // 自定义颜色(渐变)
+          linearGradient: { x1: 0, y1: 1, x2: 1, y2: 0 },
+          stops: [[0, '#2d7bb5'], [1, '#1a5784']]
+        }
+      ],
+      data: this.peiData
+    }]
+  })
+}
+
+</script>
+
+<style scoped>
+.chart-container {
+  margin: 0 auto;
+  width: 444px;
+  height: 144px;
+}
+</style>

+ 257 - 0
src/views/left/comp/RingChart.vue

@@ -0,0 +1,257 @@
+<template>
+  <div ref="chartContainer" class="chart-container"></div>
+</template>
+
+<script setup>
+import { onMounted, ref, nextTick } from 'vue'
+import Highcharts from "highcharts"; //为防止报错在页面上再次引入Highcharts
+// 引用所需外部资源
+import Highcharts3d from "highcharts/highcharts-3d";
+
+// 注册Highcharts 3D模块
+// Highcharts3D(Highcharts);
+
+
+// 数据
+const data = [
+  { name: '风险个案', count: 35, h: 70 },
+  { name: '风险事件', count: 30, h: 60 },
+  { name: '风险信息', count: 30, h: 60 }
+]
+const chartContainer = ref(null)
+onMounted(() => {
+  const chart = Highcharts.chart(chartContainer.value, {
+    chart: {
+      type: 'pie', // 饼图类型
+      backgroundColor: 'transparent',
+      options3d: {
+        enabled: true, // 启用 3D
+        alpha: 65, // 3D 角度
+        beta: 0, // 旋转角度
+        depth: 50 // 深度
+      },
+   
+
+    },
+    title: {
+      text: ''
+    },
+    plotOptions: {
+      pie: {
+        innerSize: '60%', // 环形图内圆的大小
+        depth: 45, // 环形图的 3D 深度
+        dataLabels: {
+          enabled: true,
+          format: '{point.name}: {point.percentage:.1f}%' // 显示数据标签
+        }
+      },
+      // 为每个环块设置不同的深度
+      point: {
+        events: {
+          mouseOver: function () {
+            this.update({
+              depth: this.h // 使用 h 值调整深度
+            });
+          }
+        }
+      }
+    },
+    series: [
+      // {
+      //   name: '风险类型',
+      //   data: data.map(item => ({
+      //     name: item.name,
+      //     y: item.count,
+      //     h: item.h, // 将 h 值传递给每个数据项
+      //     depth: item.h // 设置环块的深度为 h 值
+      //   }))
+      // },
+      {
+        name: '风险类型',
+        data: data.map(item => ({
+          name: item.name,
+          y: item.count,
+          h: item.h, // 将 h 值传递给每个数据项
+          depth: item.h // 设置环块的深度为 h 值
+        })),
+        // showInLegend: true,
+        dataLabels: {
+          padding: -10,
+          shadow: true,
+          style: {
+            fontWeight: 'bold',
+            fontSize: '14px',
+            color: "#fff",
+            textOutline: '1px 1px transparent',
+          },
+          formatter: function (params) {
+            return this.key + '<br/>' + '<p style="color:#00afff">' + (this.y / this.total * 100).toFixed(2) + '%</p>';
+          },
+        },
+      }
+    ],
+    tooltip: {
+      pointFormat: '{series.name}: <b>{point.y}</b><br/>'
+    },
+    credits: {
+      enabled: false,
+      //href: "http://www.hcharts.cn", //自定义链接
+      //text:"", //自定义内容
+    },
+
+  })
+
+  // nextTick(() => {
+  //   init()
+  // })
+
+
+})
+
+
+// function init () {
+//   // 修改3d饼图绘制过程
+//   // let each = HighCharts.each,
+//   let  round = Math.round,
+//     cos = Math.cos,
+//     sin = Math.sin,
+//     deg2rad = Math.deg2rad;
+//   HighCharts.wrap(HighCharts.seriesTypes.pie.prototype, 'translate', function (proceed) {
+//     proceed.apply(this, [].slice.call(arguments, 1));
+//     // Do not do this if the chart is not 3D
+//     if (!this.chart.is3d()) {
+//       return;
+//     }
+//     var series = this,
+//       chart = series.chart,
+//       options = chart.options,
+//       seriesOptions = series.options,
+//       depth = seriesOptions.depth || 0,
+//       options3d = options.chart.options3d,
+//       alpha = options3d.alpha,
+//       beta = options3d.beta,
+//       z = seriesOptions.stacking ? (seriesOptions.stack || 0) * depth : series._i * depth;
+//     z += depth / 2;
+//     if (seriesOptions.grouping !== false) {
+//       z = 0;
+//     }
+//     each(series.data, function (point) {
+//       var shapeArgs = point.shapeArgs,
+//         angle;
+//       point.shapeType = 'arc3d';
+//       var ran = point.options.h;
+//       shapeArgs.z = z;
+//       shapeArgs.depth = depth * 0.75 + ran;
+//       shapeArgs.alpha = alpha;
+//       shapeArgs.beta = beta;
+//       shapeArgs.center = series.center;
+//       shapeArgs.ran = ran;
+//       angle = (shapeArgs.end + shapeArgs.start) / 2;
+//       point.slicedTranslation = {
+//         translateX: round(cos(angle) * seriesOptions.slicedOffset * cos(alpha * deg2rad)),
+//         translateY: round(sin(angle) * seriesOptions.slicedOffset * cos(alpha * deg2rad))
+//       };
+//     });
+//   });
+//   (function (H) {
+//     H.wrap(HighCharts.SVGRenderer.prototype, 'arc3dPath', function (proceed) {
+//       // Run original proceed method
+//       var ret = proceed.apply(this, [].slice.call(arguments, 1));
+//       console.log(ret);
+//       ret.zTop = (ret.zOut + 1) / 100;
+//       return ret;
+//     });
+//   }(HighCharts));
+
+//   //日总存煤量
+//   HighCharts.chart(chartContainer.value, {
+//     chart: {
+//       type: 'pie',
+//       backgroundColor: 'transparent',
+//       events: {
+//         load: function () {
+//           let each = HighCharts.each, points = this.series[0].points;
+//           each(points, function (p, i) {
+//             p.graphic.attr({
+//               translateY: -p.shapeArgs.ran
+//             });
+//             p.graphic.side1.attr({
+//               translateY: -p.shapeArgs.ran
+//             });
+//             p.graphic.side2.attr({
+//               translateY: -p.shapeArgs.ran
+//             });
+//           });
+//         }
+//       },
+//       options3d: {
+//         enabled: true,
+//         alpha: 65
+//       },
+//     },
+//     title: {
+//       text: ''
+//     },
+//     legend: { //图例
+//       layout: "horizontal",
+//       verticalAlign: "bottom",
+//       align: "center",
+//       y: 15,
+//       x: 0,
+//       useHTML: true,
+//       symbolWidth: 10,
+//       symbolHeight: 10,
+//       labelFormatter: function () {
+//         return this.name + '<span style="margin-left: 10px">' + this.y + '</span>吨';
+//       },
+//       itemStyle: {
+//         color: '#fff',
+//         fontSize: '14px',
+//       }
+//     },
+//     tooltip: {
+//       enabled: false,
+//     },
+//     credits: {
+//       enabled: false,
+//     },
+//     plotOptions: {
+//       pie: {
+//         center: ['50%', '68%'],
+//         size: 250,
+//         innerSize: 140,
+//         colors: ['#249ba5', '#2765b0', '#78c5ef', '#f6c155', '#ef8036', '#be30ff']
+//       }
+//     },
+//     series: [
+//       {
+//         name: '青磁窑矿',
+//         data: this.optionData,
+//         showInLegend: true,
+//         dataLabels: {
+//           padding: -10,
+//           shadow: true,
+//           style: {
+//             fontWeight: 'bold',
+//             fontSize: '14px',
+//             color: "#fff",
+//             textOutline: '1px 1px transparent',
+//           },
+//           formatter: function () {
+//             return this.key + '<br/>' + '<p style="color:#00afff">' + (this.y / this.total * 100).toFixed(2) + '%</p>';
+//           },
+//         },
+//       }
+//     ]
+//   })
+// }
+
+</script>
+
+<style scoped>
+.chart-container {
+  margin: 0 auto;
+  width: 444px;
+  height: 144px;
+}
+</style>

+ 244 - 3
src/views/left/comp/dispose/RiskProfile.vue

@@ -94,16 +94,58 @@
     <div class="echarts_box">
       <div class="risk_bg_color time_item">
         <TowLevelTitle :title="'时间分布'" :buttons="timeButtons"></TowLevelTitle>
-        <div class="time_echarts_bar"></div>
+        <div class="time_echarts_bar" ref="timeChart"></div>
       </div>
       <div class="risk_bg_color area_item">
         <TowLevelTitle :title="'地区分布'"></TowLevelTitle>
-        <div class="area_echarts_bar"></div>
+        <div class="area_echarts_bar" ref="areaChart"></div>
       </div>
     </div>
+
+    <!-- 5.核心流调 -->
+    <div class="risk_bg_color core_flow_adjustment">
+      <div class="core_flow_adjustment_header">
+        <TowLevelTitle :title="'核心流调'"></TowLevelTitle>
+        <div class="core_flow_adjustment_tag">
+          <div class="tag investigated">
+            已流调:
+            <span>2</span>
+          </div>
+          <div class="tag pending">
+            待流调:
+            <span>2</span>
+          </div>
+          <div class="tag suspicious">
+            可疑感染来源:
+            <span>2</span>
+          </div>
+          <div class="tag local">
+            本地感染:
+            <span>2</span>
+          </div>
+        </div>
+      </div>
+      <div class="core_flow_adjustment_body">
+        <div v-for="(item, index) in flowData" :key="item.lable" class="risk_profile_info_top_item">
+          <div class="risk_profile_info_top_name">
+            <div class="risk_profile_info_top_name_lable">
+              <span>{{ item.lable }}</span>
+            </div>
+            <div class="risk_profile_info_top_name_list">
+              <div class="risk_profile_info_top_name_value" v-for="v in item.list">{{ v.value }}</div>
+            </div>
+          </div>
+          <div class="line" v-if="index !== 2"></div>
+        </div>
+      </div>
+    </div>
+
+    <!-- 6.风险人员 风险场所 -->
+    <div></div>
   </div>
 </template>
 <script setup>
+import * as echarts from 'echarts'
 import { ref, watch, computed, reactive, toRefs, onBeforeMount, onMounted } from 'vue'
 import TowLevelTitle from '@/components/TowLevelTitle'
 const infoList = ref([
@@ -127,6 +169,91 @@ const timeButtons = ref([
   { id: 1, name: '发布时间', active: false },
   { id: 2, name: '报告时间', active: true }
 ])
+
+//4.时间分布 地区分布
+// 初始化时间分布图(蓝色渐变)
+const initTimeChart = () => {
+  if (!timeChart.value) return
+  const chart = echarts.init(timeChart.value)
+  chart.setOption({
+    tooltip: { trigger: 'axis' },
+    grid: { left: '10%', right: '5%', top: '15%', bottom: '18%' }, // 调整四周距离
+    xAxis: {
+      type: 'category',
+      data: ['12/04', '12/05', '12/06', '12/07', '12/08', '12/09', '12/10'],
+      axisLine: { lineStyle: { color: '#4A90E2' } } // X 轴颜色
+    },
+    yAxis: {
+      type: 'value',
+      axisLine: { lineStyle: { color: '#4A90E2' } }, // Y 轴颜色
+      splitLine: { lineStyle: { type: 'dashed', color: '#ccc' } } // Y 轴背景横线虚线
+    },
+    series: [
+      {
+        type: 'bar',
+        data: [3, 6, 2, 9, 5, 8, 10],
+        barWidth: 30,
+        itemStyle: {
+          color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [
+            { offset: 0, color: 'rgba(63, 174, 253, 0)' },
+            { offset: 1, color: '#3FAEFD' }
+          ])
+        },
+        barBackgroundStyle: { color: 'rgba(74, 144, 226, 0.2)' } // 背景透明色
+      }
+    ]
+  })
+}
+
+// 初始化地区分布图(黄色渐变)
+const initAreaChart = () => {
+  if (!areaChart.value) return
+  const chart = echarts.init(areaChart.value)
+  chart.setOption({
+    tooltip: { trigger: 'axis' },
+    grid: { left: '10%', right: '5%', top: '15%', bottom: '18%' }, // 调整四周距离
+    xAxis: {
+      type: 'category',
+      data: ['长宁区', '闵行区'],
+      axisLine: { lineStyle: { color: '#FBA541' } } // X 轴颜色
+    },
+    yAxis: {
+      type: 'value',
+      axisLine: { lineStyle: { color: '#FBA541' } }, // Y 轴颜色
+      splitLine: { lineStyle: { type: 'dashed', color: '#ccc' } } // Y 轴背景横线虚线
+    },
+    series: [
+      {
+        type: 'bar',
+        data: [5, 9],
+        barWidth: 30,
+        itemStyle: {
+          color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [
+            { offset: 0, color: 'rgba(251,165,65,0)' },
+            { offset: 1, color: '#FBA541' }
+          ])
+        }
+      }
+    ]
+  })
+}
+
+// 绑定 ECharts 容器
+const timeChart = ref(null)
+const areaChart = ref(null)
+
+// 5.核心流调
+const flowData = ref([
+  { lable: '外出外来史', list: [{ value: '李梦康:2024-10-01从杭州回来' }, { value: '李梦康:2024-10-01从杭州回来' }] },
+  { lable: '疑似病例接触史', value: 0, list: [{ value: '李梦康:2024-10-01接触病例张三' }] },
+  { lable: '可疑动物接触史', value: 0, list: [{ value: '毛超:2024-10-01接触活禽' }] }
+])
+
+// 在组件挂载后初始化 ECharts
+onMounted(() => {
+  initTimeChart()
+  initAreaChart()
+})
 </script>
 <style lang="scss" scoped>
 * {
@@ -414,6 +541,10 @@ const timeButtons = ref([
       height: 211px;
       padding: 8px;
       box-sizing: border-box;
+      .time_echarts_bar {
+        width: 100%;
+        height: 176px;
+      }
     }
     .area_item {
       padding: 8px;
@@ -421,17 +552,127 @@ const timeButtons = ref([
       flex: 1;
       height: 211px;
       // width: ;
+      .area_echarts_bar {
+        width: 100%;
+        height: 176px;
+      }
+    }
+  }
+
+  .core_flow_adjustment {
+    .core_flow_adjustment_header {
+      position: relative;
+
+      .core_flow_adjustment_tag {
+        display: flex;
+        align-items: center;
+        position: absolute;
+        right: 0px;
+        top: 0px;
+        // color: #fff;
+      }
+    }
+    .core_flow_adjustment_body {
+      // width: 645px;
+      width: 100%;
+      height: 78px;
+      display: flex;
+      align-items: center;
+      .risk_profile_info_top_item {
+        display: flex;
+        align-items: center;
+        .risk_profile_info_top_name {
+          display: flex;
+          flex-direction: column;
+          align-items: center;
+          font-family: Alibaba PuHuiTi 3, Alibaba PuHuiTi 30;
+          font-weight: normal;
+          font-size: 13px;
+          color:#697c91;
+          line-height: 14px;
+          text-align: center;
+          font-style: normal;
+          text-transform: none;
+          .risk_profile_info_top_name_lable {
+            width: 203px;
+            height: 18px;
+            font-family: Alibaba PuHuiTi 3, Alibaba PuHuiTi 30;
+            font-weight: normal;
+            font-size: 16px;
+            text-align: center;
+            font-style: normal;
+            text-transform: none;
+            background: linear-gradient(to top, #43bcdb 0%, #ffffff 100%);
+
+            /* 金属光泽渐变效果 */
+            // background: linear-gradient(to top, #49ffff 4%, #e2ffff 100%);
+            -webkit-background-clip: text;
+            /* 文字应用渐变 */
+            background-clip: text;
+
+            /* 使文字透明,背景渐变会应用到文字 */
+            color: transparent;
+
+            /* 光泽效果:文本阴影 */
+            text-shadow: 2px 2px 5px rgba(255, 255, 255, 0.4), -2px -2px 5px rgba(0, 0, 0, 0.4);
+
+            /* 给文字加一些柔和的过渡效果 */
+            transition: all 0.3s ease;
+          }
+          .risk_profile_info_top_name_list {
+            height: 36px;
+            width: 100%;
+            .risk_profile_info_top_name_value {
+              margin:5px 0px
+            }
+          }
+        }
+      }
     }
   }
 }
 
+.tag {
+  font-size: 16px;
+  padding: 0px 12px;
+  box-sizing: border-box;
+  // border-radius: 6px;
+  font-weight: bold;
+  width: fit-content;
+  height: 24px;
+  line-height: 24px;
+  text-align: center;
+  // p
+}
+/* 已流调 */
+.investigated {
+  color: #50e0ff;
+  background: linear-gradient(270deg, rgba(62, 174, 255, 0.1) 0%, rgba(27, 129, 203, 0.3) 51%, rgba(27, 129, 203, 0.1) 100%);
+}
+
+/* 待流调 */
+.pending {
+  color: #ff9950;
+  background: linear-gradient(270deg, rgba(255, 153, 80, 0.1) 0%, rgba(255, 153, 80, 0.3) 51%, rgba(255, 153, 80, 0.1) 100%);
+}
+
+/* 可疑感染来源 */
+.suspicious {
+  color: #ffd43c;
+  background: linear-gradient(270deg, rgba(62, 174, 255, 0.1) 0%, rgba(255, 218, 123, 0.3) 51%, rgba(255, 218, 123, 0.1) 100%);
+}
+
+/* 本地感染 */
+.local {
+  color: #ffffff;
+}
+
 .text {
   font-family: Alibaba PuHuiTi 3, Alibaba PuHuiTi 30;
   font-weight: normal;
   font-size: 16px;
   color: rgba(255, 255, 255, 0.7);
   text-align: left;
-  font-style: normal;
   text-transform: none;
 }
 

+ 1 - 1
src/views/left/dialog/ProgressInDisposalDialog.vue

@@ -86,7 +86,7 @@ function handleRowClick () {
   // background: url('../../../assets/img/疫情风险数据弹窗(1).png');
   background-size: 100% 100%;
   position: absolute;
-  top: 0px;
+  top: 30px;
   right: -616px;
   color: azure;
   box-sizing: border-box;

+ 6 - 5
src/views/left/index.vue

@@ -67,6 +67,11 @@ let commonStore = useCommonStore()
 //   }
 // )
 
+const initShow = ref(true)  // 报告处置
+const bigRiskTableShow = ref(false) //大风险列表
+const disposalShow = ref(false)  //处置事件
+
+const comeFrom = ref(null)
 watch(
   () => commonStore.activeIndex,
   (newActiveIndex, oldActiveIndex) => {
@@ -83,15 +88,11 @@ watch(
   },
   {
     deep: true,
-    // immediate: true
+    immediate: true
   }
 )
 
-const initShow = ref(true)  // 报告处置
-const bigRiskTableShow = ref(false) //大风险列表
-const disposalShow = ref(false)  //处置事件
 
-const comeFrom = ref(null)
 
 
 

+ 11 - 3
src/views/left/modules/ReportDisposal.vue

@@ -21,7 +21,11 @@
           </div>
           <div class="modules_bg2_body_right">
             <TowLevelTitle :title="riskOverViewtTitle" :buttons="riskOverViewTwoButtons"></TowLevelTitle>
-            <div class="modules_bg2_body_bar">3d</div>
+
+
+            <div class="modules_bg2_body_bar">
+              <RingChart></RingChart>
+            </div>
           </div>
         </div>
       </div>
@@ -104,7 +108,7 @@
   </div>
 </template>
 <script setup>
-import ScrollTable from '../comp/ScrollTable'
+import RingChart from '../comp/RingChart.vue'
 
 import TitleHeadermini from '../../../components/TitleHeadermini'
 import TitleHeadersmall from '../../../components/TitleHeadersmall'
@@ -305,8 +309,12 @@ function openRiskBigTable () {
 }
 
 .modules_bg2_body_bar {
-  flex: 1;
+  // flex: 1;
+  width: 444px;
+  height: 144px;
   color: azure;
+  // background-color: pink;
+  margin: 0 auto;
 }
 
 .content_two {

+ 3 - 1
vite.config.js

@@ -33,7 +33,9 @@ export default defineConfig({
       '@jiaminghi/charts/lib/util',
       '@jiaminghi/charts/lib/extend/index',
       '@jiaminghi/charts',
-      '@jiaminghi/color'
+      '@jiaminghi/color',
+      'highcharts',
+      'highcharts/highcharts-3d'
     ]
   },
   plugins: [