From a9b4c7170aa46ee0bca1c6ce6927e842d148edc0 Mon Sep 17 00:00:00 2001 From: Zzc <1373857752@qq.com> Date: Fri, 31 Oct 2025 15:33:53 +0800 Subject: [PATCH 1/4] =?UTF-8?q?build(screen):=20=E6=B7=BB=E5=8A=A0=20Less?= =?UTF-8?q?=20=E4=B8=BA=E5=BC=80=E5=8F=91=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/screen/package.json | 3 +- pnpm-lock.yaml | 148 +++++++++++++++++++++++++++++++++-- 2 files changed, 143 insertions(+), 8 deletions(-) diff --git a/packages/screen/package.json b/packages/screen/package.json index e747cb4..2178584 100644 --- a/packages/screen/package.json +++ b/packages/screen/package.json @@ -19,6 +19,7 @@ "devDependencies": { "@vitejs/plugin-vue": "^5.0.0", "vite": "^5.0.0", - "sass": "^1.70.0" + "sass": "^1.70.0", + "less": "^4.4.2" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1ddc3af..a0019a8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -39,7 +39,7 @@ importers: devDependencies: '@vitejs/plugin-vue': specifier: ^5.0.0 - version: 5.2.4(vite@5.4.20(sass@1.93.2)(terser@5.44.0))(vue@3.5.22) + version: 5.2.4(vite@5.4.20(less@4.4.2)(sass@1.93.2)(terser@5.44.0))(vue@3.5.22) sass: specifier: ^1.70.0 version: 1.93.2 @@ -51,7 +51,7 @@ importers: version: 0.26.0(@babel/parser@7.28.4)(rollup@4.52.4)(vue@3.5.22) vite: specifier: ^5.0.0 - version: 5.4.20(sass@1.93.2)(terser@5.44.0) + version: 5.4.20(less@4.4.2)(sass@1.93.2)(terser@5.44.0) packages/screen: dependencies: @@ -76,13 +76,16 @@ importers: devDependencies: '@vitejs/plugin-vue': specifier: ^5.0.0 - version: 5.2.4(vite@5.4.20(sass@1.93.2)(terser@5.44.0))(vue@3.5.22) + version: 5.2.4(vite@5.4.20(less@4.4.2)(sass@1.93.2)(terser@5.44.0))(vue@3.5.22) + less: + specifier: ^4.4.2 + version: 4.4.2 sass: specifier: ^1.70.0 version: 1.93.2 vite: specifier: ^5.0.0 - version: 5.4.20(sass@1.93.2)(terser@5.44.0) + version: 5.4.20(less@4.4.2)(sass@1.93.2)(terser@5.44.0) packages/shared: dependencies: @@ -589,6 +592,9 @@ packages: confbox@0.2.2: resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} + copy-anything@2.0.6: + resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} + csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} @@ -624,6 +630,10 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} + errno@0.1.8: + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} + hasBin: true + es-define-property@1.0.1: resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} engines: {node: '>= 0.4'} @@ -706,6 +716,9 @@ packages: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + has-symbols@1.1.0: resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} engines: {node: '>= 0.4'} @@ -718,6 +731,15 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + image-size@0.5.5: + resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} + engines: {node: '>=0.10.0'} + hasBin: true + immutable@5.1.4: resolution: {integrity: sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==} @@ -741,9 +763,17 @@ packages: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} + is-what@3.14.1: + resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} + js-tokens@9.0.1: resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} + less@4.4.2: + resolution: {integrity: sha512-j1n1IuTX1VQjIy3tT7cyGbX7nvQOsFLoIqobZv4ttI5axP923gA44zUj6miiA6R5Aoms4sEGVIIcucXUbRI14g==} + engines: {node: '>=14'} + hasBin: true + local-pkg@0.4.3: resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} engines: {node: '>=14'} @@ -759,6 +789,10 @@ packages: magic-string@0.30.19: resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==} + make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} @@ -779,6 +813,11 @@ packages: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + minimatch@9.0.5: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} @@ -794,6 +833,11 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + needle@3.3.1: + resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==} + engines: {node: '>= 4.4.x'} + hasBin: true + node-addon-api@7.1.1: resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} @@ -801,6 +845,10 @@ packages: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} + parse-node-version@1.0.1: + resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} + engines: {node: '>= 0.10'} + path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} @@ -818,6 +866,10 @@ packages: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} + pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + pinia@2.3.1: resolution: {integrity: sha512-khUlZSwt9xXCaTbbxFYBKDc/bWAGWJjOgvxETwkTN7KRm66EeT1ZdZj6i2ceh9sP2Pzqsbc704r2yngBrxBVug==} peerDependencies: @@ -840,6 +892,9 @@ packages: proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + prr@1.0.1: + resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} + quansync@0.2.11: resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} @@ -874,14 +929,24 @@ packages: run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + sass@1.93.2: resolution: {integrity: sha512-t+YPtOQHpGW1QWsh1CHQ5cPIr9lbbGZLZnbihP/D/qZj/yuV68m8qarcV17nvkOX81BCrvzAlq2klCQFZghyTg==} engines: {node: '>=14.0.0'} hasBin: true + sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + scule@1.3.0: resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -1303,9 +1368,9 @@ snapshots: dependencies: vue: 3.5.22 - '@vitejs/plugin-vue@5.2.4(vite@5.4.20(sass@1.93.2)(terser@5.44.0))(vue@3.5.22)': + '@vitejs/plugin-vue@5.2.4(vite@5.4.20(less@4.4.2)(sass@1.93.2)(terser@5.44.0))(vue@3.5.22)': dependencies: - vite: 5.4.20(sass@1.93.2)(terser@5.44.0) + vite: 5.4.20(less@4.4.2)(sass@1.93.2)(terser@5.44.0) vue: 3.5.22 '@vue/compiler-core@3.5.22': @@ -1428,6 +1493,10 @@ snapshots: confbox@0.2.2: {} + copy-anything@2.0.6: + dependencies: + is-what: 3.14.1 + csstype@3.1.3: {} dayjs@1.11.18: {} @@ -1454,6 +1523,11 @@ snapshots: entities@4.5.0: {} + errno@0.1.8: + dependencies: + prr: 1.0.1 + optional: true + es-define-property@1.0.1: {} es-errors@1.3.0: {} @@ -1560,6 +1634,9 @@ snapshots: gopd@1.2.0: {} + graceful-fs@4.2.11: + optional: true + has-symbols@1.1.0: {} has-tostringtag@1.0.2: @@ -1570,6 +1647,14 @@ snapshots: dependencies: function-bind: 1.1.2 + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + optional: true + + image-size@0.5.5: + optional: true + immutable@5.1.4: {} is-binary-path@2.1.0: @@ -1588,8 +1673,24 @@ snapshots: is-number@7.0.0: {} + is-what@3.14.1: {} + js-tokens@9.0.1: {} + less@4.4.2: + dependencies: + copy-anything: 2.0.6 + parse-node-version: 1.0.1 + tslib: 2.3.0 + optionalDependencies: + errno: 0.1.8 + graceful-fs: 4.2.11 + image-size: 0.5.5 + make-dir: 2.1.0 + mime: 1.6.0 + needle: 3.3.1 + source-map: 0.6.1 + local-pkg@0.4.3: {} local-pkg@0.5.1: @@ -1607,6 +1708,12 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 + make-dir@2.1.0: + dependencies: + pify: 4.0.1 + semver: 5.7.2 + optional: true + math-intrinsics@1.1.0: {} merge2@1.4.1: {} @@ -1622,6 +1729,9 @@ snapshots: dependencies: mime-db: 1.52.0 + mime@1.6.0: + optional: true + minimatch@9.0.5: dependencies: brace-expansion: 2.0.2 @@ -1637,11 +1747,19 @@ snapshots: nanoid@3.3.11: {} + needle@3.3.1: + dependencies: + iconv-lite: 0.6.3 + sax: 1.4.1 + optional: true + node-addon-api@7.1.1: optional: true normalize-path@3.0.0: {} + parse-node-version@1.0.1: {} + path-parse@1.0.7: {} pathe@2.0.3: {} @@ -1652,6 +1770,9 @@ snapshots: picomatch@4.0.3: {} + pify@4.0.1: + optional: true + pinia@2.3.1(vue@3.5.22): dependencies: '@vue/devtools-api': 6.6.4 @@ -1680,6 +1801,9 @@ snapshots: proxy-from-env@1.1.0: {} + prr@1.0.1: + optional: true + quansync@0.2.11: {} queue-microtask@1.2.3: {} @@ -1732,6 +1856,9 @@ snapshots: dependencies: queue-microtask: 1.2.3 + safer-buffer@2.1.2: + optional: true + sass@1.93.2: dependencies: chokidar: 4.0.3 @@ -1740,8 +1867,14 @@ snapshots: optionalDependencies: '@parcel/watcher': 2.5.1 + sax@1.4.1: + optional: true + scule@1.3.0: {} + semver@5.7.2: + optional: true + source-map-js@1.2.1: {} source-map-support@0.5.21: @@ -1838,13 +1971,14 @@ snapshots: '@vue/shared': 3.5.22 vue: 3.5.22 - vite@5.4.20(sass@1.93.2)(terser@5.44.0): + vite@5.4.20(less@4.4.2)(sass@1.93.2)(terser@5.44.0): dependencies: esbuild: 0.21.5 postcss: 8.5.6 rollup: 4.52.4 optionalDependencies: fsevents: 2.3.3 + less: 4.4.2 sass: 1.93.2 terser: 5.44.0 From 99e9b7515187343508b7d8957870910cbed4e34c Mon Sep 17 00:00:00 2001 From: Zzc <1373857752@qq.com> Date: Fri, 31 Oct 2025 15:35:10 +0800 Subject: [PATCH 2/4] =?UTF-8?q?feat(screen):=20=E6=B7=BB=E5=8A=A0=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E5=8C=96=E9=A9=BE=E9=A9=B6=E8=88=B1=E4=BB=AA=E8=A1=A8?= =?UTF-8?q?=E6=9D=BF=EF=BC=8C=E5=8C=85=E5=90=AB=E5=A4=A9=E6=B0=94=E3=80=81?= =?UTF-8?q?=E7=B4=A7=E6=80=A5=E6=83=85=E5=86=B5=E5=92=8C=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E7=BB=84=E4=BB=B6year=20statistics,=20and=20?= =?UTF-8?q?map=20center.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/screen/src/views/cockpit/README.md | 270 +++++++++++++++ .../cockpit/assets/img/block-panel-bg.png | Bin 0 -> 380451 bytes .../assets/img/block-stat-decoration.png | Bin 0 -> 6205 bytes .../cockpit/assets/img/block-stat-icon.png | Bin 0 -> 10982 bytes .../assets/img/block-stat-title-bg.png | Bin 0 -> 6384 bytes .../cockpit/assets/img/cockpit-main-bg.png | Bin 0 -> 184954 bytes .../assets/img/common-panel-header-bg.png | Bin 0 -> 7147 bytes .../assets/img/common-table-row-bg-alt.png | Bin 0 -> 12971 bytes .../assets/img/common-table-row-bg.png | Bin 0 -> 5702 bytes .../assets/img/emergency-alert-icon.png | Bin 0 -> 354 bytes .../cockpit/assets/img/emergency-panel-bg.png | Bin 0 -> 233511 bytes .../assets/img/emergency-table-header-bg.png | Bin 0 -> 11794 bytes .../views/cockpit/assets/img/header-bg.png | Bin 0 -> 4762 bytes .../cockpit/assets/img/header-btn-app-bg.png | Bin 0 -> 5382 bytes .../cockpit/assets/img/header-title-bg.png | Bin 0 -> 59863 bytes .../cockpit/assets/img/map-btn-service.png | Bin 0 -> 1363 bytes .../assets/img/map-btn-warning-road.png | Bin 0 -> 1196 bytes .../cockpit/assets/img/map-btn-weather.png | Bin 0 -> 1559 bytes .../cockpit/assets/img/map-center-menu-bg.png | Bin 0 -> 28055 bytes .../cockpit/assets/img/map-marker-alert.png | Bin 0 -> 3207 bytes .../cockpit/assets/img/map-marker-service.png | Bin 0 -> 4429 bytes .../cockpit/assets/img/map-marker-warning.png | Bin 0 -> 3213 bytes .../assets/img/map-menu-icon-construction.png | Bin 0 -> 1175 bytes .../assets/img/map-menu-icon-maintenance.png | Bin 0 -> 1206 bytes .../assets/img/map-menu-icon-road-network.png | Bin 0 -> 1071 bytes .../assets/img/map-menu-icon-safety.png | Bin 0 -> 1799 bytes .../assets/img/map-menu-item-highlight-bg.png | Bin 0 -> 7393 bytes .../assets/img/statistics-chart-area-bg.png | Bin 0 -> 2523 bytes .../assets/img/statistics-chart-image.png | Bin 0 -> 15690 bytes .../assets/img/statistics-panel-bg.png | Bin 0 -> 217076 bytes .../assets/img/weather-altitude-bar-bg.png | Bin 0 -> 17302 bytes .../assets/img/weather-altitude-icon.png | Bin 0 -> 4974 bytes .../assets/img/weather-badge-glow-bottom.png | Bin 0 -> 8718 bytes .../assets/img/weather-badge-glow-top.png | Bin 0 -> 6561 bytes .../assets/img/weather-badge-hexagon.png | Bin 0 -> 9489 bytes .../cockpit/assets/img/weather-panel-bg.png | Bin 0 -> 299837 bytes .../assets/img/weather-table-header-bg.png | Bin 0 -> 12865 bytes .../views/cockpit/components/BlockEvent.vue | 133 ++++++++ .../cockpit/components/CockpitLayout.vue | 64 ++++ .../cockpit/components/EmergencyResources.vue | 223 ++++++++++++ .../views/cockpit/components/MapCenter.vue | 286 ++++++++++++++++ .../views/cockpit/components/PageHeader.vue | 64 ++++ .../cockpit/components/WeatherWarning.vue | 320 ++++++++++++++++++ .../cockpit/components/YearStatistics.vue | 181 ++++++++++ packages/screen/src/views/cockpit/index.vue | 11 + 45 files changed, 1552 insertions(+) create mode 100644 packages/screen/src/views/cockpit/README.md create mode 100644 packages/screen/src/views/cockpit/assets/img/block-panel-bg.png create mode 100644 packages/screen/src/views/cockpit/assets/img/block-stat-decoration.png create mode 100644 packages/screen/src/views/cockpit/assets/img/block-stat-icon.png create mode 100644 packages/screen/src/views/cockpit/assets/img/block-stat-title-bg.png create mode 100644 packages/screen/src/views/cockpit/assets/img/cockpit-main-bg.png create mode 100644 packages/screen/src/views/cockpit/assets/img/common-panel-header-bg.png create mode 100644 packages/screen/src/views/cockpit/assets/img/common-table-row-bg-alt.png create mode 100644 packages/screen/src/views/cockpit/assets/img/common-table-row-bg.png create mode 100644 packages/screen/src/views/cockpit/assets/img/emergency-alert-icon.png create mode 100644 packages/screen/src/views/cockpit/assets/img/emergency-panel-bg.png create mode 100644 packages/screen/src/views/cockpit/assets/img/emergency-table-header-bg.png create mode 100644 packages/screen/src/views/cockpit/assets/img/header-bg.png create mode 100644 packages/screen/src/views/cockpit/assets/img/header-btn-app-bg.png create mode 100644 packages/screen/src/views/cockpit/assets/img/header-title-bg.png create mode 100644 packages/screen/src/views/cockpit/assets/img/map-btn-service.png create mode 100644 packages/screen/src/views/cockpit/assets/img/map-btn-warning-road.png create mode 100644 packages/screen/src/views/cockpit/assets/img/map-btn-weather.png create mode 100644 packages/screen/src/views/cockpit/assets/img/map-center-menu-bg.png create mode 100644 packages/screen/src/views/cockpit/assets/img/map-marker-alert.png create mode 100644 packages/screen/src/views/cockpit/assets/img/map-marker-service.png create mode 100644 packages/screen/src/views/cockpit/assets/img/map-marker-warning.png create mode 100644 packages/screen/src/views/cockpit/assets/img/map-menu-icon-construction.png create mode 100644 packages/screen/src/views/cockpit/assets/img/map-menu-icon-maintenance.png create mode 100644 packages/screen/src/views/cockpit/assets/img/map-menu-icon-road-network.png create mode 100644 packages/screen/src/views/cockpit/assets/img/map-menu-icon-safety.png create mode 100644 packages/screen/src/views/cockpit/assets/img/map-menu-item-highlight-bg.png create mode 100644 packages/screen/src/views/cockpit/assets/img/statistics-chart-area-bg.png create mode 100644 packages/screen/src/views/cockpit/assets/img/statistics-chart-image.png create mode 100644 packages/screen/src/views/cockpit/assets/img/statistics-panel-bg.png create mode 100644 packages/screen/src/views/cockpit/assets/img/weather-altitude-bar-bg.png create mode 100644 packages/screen/src/views/cockpit/assets/img/weather-altitude-icon.png create mode 100644 packages/screen/src/views/cockpit/assets/img/weather-badge-glow-bottom.png create mode 100644 packages/screen/src/views/cockpit/assets/img/weather-badge-glow-top.png create mode 100644 packages/screen/src/views/cockpit/assets/img/weather-badge-hexagon.png create mode 100644 packages/screen/src/views/cockpit/assets/img/weather-panel-bg.png create mode 100644 packages/screen/src/views/cockpit/assets/img/weather-table-header-bg.png create mode 100644 packages/screen/src/views/cockpit/components/BlockEvent.vue create mode 100644 packages/screen/src/views/cockpit/components/CockpitLayout.vue create mode 100644 packages/screen/src/views/cockpit/components/EmergencyResources.vue create mode 100644 packages/screen/src/views/cockpit/components/MapCenter.vue create mode 100644 packages/screen/src/views/cockpit/components/PageHeader.vue create mode 100644 packages/screen/src/views/cockpit/components/WeatherWarning.vue create mode 100644 packages/screen/src/views/cockpit/components/YearStatistics.vue create mode 100644 packages/screen/src/views/cockpit/index.vue diff --git a/packages/screen/src/views/cockpit/README.md b/packages/screen/src/views/cockpit/README.md new file mode 100644 index 0000000..a52fdd0 --- /dev/null +++ b/packages/screen/src/views/cockpit/README.md @@ -0,0 +1,270 @@ +# 安全保通服务大屏 - 重构说明 + +## 📦 重构概览 + +本次重构将原来 567 行的单一组件拆分为模块化的组件架构,提高了代码的可维护性和可扩展性。 + +## 🎯 主要改进 + +### 1. **组件化架构** +- ✅ 将单一大文件拆分为 7 个独立组件 +- ✅ 每个组件职责单一,易于维护 +- ✅ 组件可复用,便于扩展 + +### 2. **布局方式优化** +- ❌ **重构前**: 大量使用 `position: absolute` 和固定像素定位 +- ✅ **重构后**: 使用 CSS Grid 和 Flexbox 实现响应式布局 +- ✅ 更易调整和适配不同屏幕尺寸 + +### 3. **数据驱动** +- ❌ **重构前**: 数据硬编码在模板中 +- ✅ **重构后**: 使用 Vue 3 Composition API,数据驱动渲染 +- ✅ 便于后续接入真实 API 数据 + +### 4. **样式管理** +- ❌ **重构前**: 类名混乱 (`box_1`, `group_3` 等) +- ✅ **重构后**: 语义化类名,易于理解 +- ✅ 样式模块化,避免全局污染 + +## 📁 目录结构 + +``` +cockpit/ +├── index.vue # 主入口文件 +├── components/ # 组件目录 +│ ├── CockpitLayout.vue # 主布局组件 +│ ├── PageHeader.vue # 页面头部 +│ ├── WeatherWarning.vue # 气象预警 (左上) +│ ├── EmergencyResources.vue # 应急资源 (左下) +│ ├── BlockEvent.vue # 阻断事件 (右上) +│ ├── YearStatistics.vue # 往年统计 (右下) +│ └── MapCenter.vue # 中间地图区域 +└── assets/ # 资源文件 + └── img/ # 图片资源 +``` + +## 🔧 组件说明 + +### 1. CockpitLayout.vue (主布局) +使用 CSS Grid 三列布局: +```css +grid-template-columns: 580px 1fr 580px; +``` +- 左侧面板: 固定 580px +- 中间地图: 自适应剩余空间 +- 右侧面板: 固定 580px + +### 2. PageHeader.vue (页面头部) +- 居中显示标题 "安全保通服务" +- 右侧应用按钮 +- 使用 Flexbox 布局 + +### 3. WeatherWarning.vue (气象预警) +**数据结构**: +```javascript +{ + warningLevels: [ + { id, name, count, color, icon } + ], + districts: [ + { id, name, km, warning, warningColor } + ] +} +``` + +**功能**: +- 四级预警图标展示 (蓝/黄/橙/红) +- 海拔800米以上气象情况 +- 区县预警列表 + +### 4. EmergencyResources.vue (应急资源) +**数据结构**: +```javascript +{ + resources: [ + { id, name, stations, supplies, equipment, equipmentClass, hasAlert } + ] +} +``` + +**功能**: +- 展示各区县应急资源数量 +- 服务站点、应急物资、应急设备统计 +- 异常状态图标提示 + +### 5. BlockEvent.vue (阻断事件) +**数据结构**: +```javascript +{ + stats: [ + { id, title, value } + ] +} +``` + +**功能**: +- 统计卡片展示 (2列网格布局) +- 当前封闭交通、限速通行、抢通等数据 + +### 6. YearStatistics.vue (往年统计) +**功能**: +- 冰雪事件趋势图 (当前使用静态图片) +- 图表图例 +- 坐标轴标签 + +**TODO**: 集成 ECharts 实现动态图表 + +### 7. MapCenter.vue (中间地图) +**功能**: +- 顶部功能按钮 (服务站点/预警路段/气象预警) +- 地图标记点 +- 底部菜单 (应急体系/重大事件处置等) +- 中央功能菜单 + +**TODO**: 集成实际地图 API (如高德地图/百度地图) + +## 🚀 使用方式 + +### 1. 基础使用 +```vue + + + +``` + +### 2. 修改数据 +每个组件都使用 `ref` 定义响应式数据,可以直接修改: + +```javascript +// WeatherWarning.vue +const districts = ref([ + { id: 1, name: '万州区', km: 32, warning: '红色预警', warningColor: 'rgba(229, 37, 42, 1)' } +]) +``` + +### 3. 接入 API +将静态数据改为 API 调用: + +```javascript +import { ref, onMounted } from 'vue' +import { fetchDistricts } from '@/api/weather' + +const districts = ref([]) + +onMounted(async () => { + districts.value = await fetchDistricts() +}) +``` + +## 📊 后续优化建议 + +### 1. 集成真实地图 +推荐使用: +- 高德地图 API +- 百度地图 API +- Mapbox GL + +### 2. 集成图表库 +推荐使用: +- **ECharts** (功能强大,配置灵活) +- Chart.js +- D3.js + +示例代码: +```javascript +import * as echarts from 'echarts' + +onMounted(() => { + const chart = echarts.init(chartRef.value) + chart.setOption({ + xAxis: { data: xAxisYears.value }, + yAxis: {}, + series: [ + { type: 'line', data: [1000, 2000, 3000, 4000, 5000] } + ] + }) +}) +``` + +### 3. 添加响应式适配 +使用媒体查询或 `vw/vh` 单位适配不同屏幕: + +```css +@media (max-width: 1920px) { + .cockpit-main { + grid-template-columns: 450px 1fr 450px; + } +} +``` + +### 4. 添加数据刷新 +使用定时器或 WebSocket 实现实时数据更新: + +```javascript +import { useIntervalFn } from '@vueuse/core' + +useIntervalFn(() => { + refreshData() +}, 30000) // 每30秒刷新 +``` + +### 5. 添加交互功能 +- 地图标记点击事件 +- 表格行点击查看详情 +- 图表数据筛选 +- 时间范围选择 + +### 6. 性能优化 +- 使用虚拟滚动处理大量数据 +- 图片懒加载 +- 组件懒加载 + +```javascript +const MapCenter = defineAsyncComponent(() => + import('./components/MapCenter.vue') +) +``` + +## ⚠️ 注意事项 + +1. **图片路径**: 确保所有图片资源存在于 `assets/img/` 目录中 +2. **字体文件**: 部分组件使用自定义字体,需要确保字体文件已引入 +3. **浏览器兼容**: Grid 布局需要现代浏览器支持 (IE11+ 需要 polyfill) + +## 🎨 布局对比 + +### 重构前 +``` +├── 嵌套10层+ div +├── position: absolute 定位超过50处 +├── 固定 margin/left/top 值 +└── 567行单文件 +``` + +### 重构后 +``` +├── 语义化组件结构 +├── Grid + Flexbox 布局 +├── 响应式设计理念 +└── 7个模块化组件,平均每个约150行 +``` + +## 📝 版本历史 + +- **v2.0** (2025-01-XX) - 组件化重构,使用 Grid 布局 +- **v1.0** (之前) - 原始版本,单文件实现 + +## 🤝 贡献指南 + +1. 修改组件时保持单一职责原则 +2. 新增功能优先考虑组件复用 +3. 样式使用 scoped,避免全局污染 +4. 数据结构清晰,便于接入 API + +--- + +如有问题或建议,请联系开发团队。 diff --git a/packages/screen/src/views/cockpit/assets/img/block-panel-bg.png b/packages/screen/src/views/cockpit/assets/img/block-panel-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..c190e43b91a66fa573c3952d7a4e56ff54271f66 GIT binary patch literal 380451 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ྪ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