From f6e40b8775bcedfdc055f05ecb1936e504f33212 Mon Sep 17 00:00:00 2001 From: Zzc <1373857752@qq.com> Date: Mon, 17 Nov 2025 17:59:25 +0800 Subject: [PATCH] =?UTF-8?q?refactor(screen):=20=E6=9B=B4=E6=96=B0=203D=20?= =?UTF-8?q?=E6=80=81=E5=8A=BF=E6=84=9F=E7=9F=A5=20UI=20=E6=A0=B7=E5=BC=8F?= =?UTF-8?q?=E5=92=8C=E5=B8=83=E5=B1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将 CSS 颜色变量移至全局样式,以解决 Vue 作用域样式问题 - 添加背景图片并调整组件布局以改善视觉设计 - 通过基于源的颜色编码增强 CollaborationInfo - 重新定位 PageHeader 并更新 RightPanel 结构以实现更好的集成 - 对 ForceDispatch、ForcePreset 及其他组件进行微调 --- packages/screen/src/styles/index.scss | 17 +++++ .../assets/images/中心.png | Bin 0 -> 14221 bytes ...2d5e8c6bf1b09558168.png => 信息面板bg.png} | Bin ...4fa3a5da373b1a40c.png => 力量调度圆圈.png} | Bin ...231bd9a5919.png => 地图tooltip-button.png} | Bin ...79827ba86f9bb427841b2.png => 展开icon.png} | Bin ...f09c8287716904d.png => 左折叠箭头icon.png} | Bin ...ffa92dbe0f028dfa5eb42b6.png => 按钮bg.png} | Bin ...66495ce93f7394812a540.png => 文本线条.png} | Bin .../assets/images/文本线条框.png | Bin 0 -> 9629 bytes ...7b8eb0deec58c4bac16e3.png => 视频icon.png} | Bin ...5e3f855dfdaa50e7122.png => 视频面板bg.png} | Bin ...8dce73703785d7e2.png => 视频面板title.png} | Bin .../images/{路线icon(1).png => 路线icon.png} | Bin ...e1a8908b70d93846e0a4c.png => 返回按钮.png} | Bin ...90dab175752d526592da30e.png => 面板bg.png} | Bin .../assets/styles/common.scss | 24 ++----- .../components/LeftPanel/ForceDispatch.vue | 19 ++++-- .../components/LeftPanel/ForcePreset.vue | 13 ++-- .../components/MapViewer/MapControls.vue | 2 +- .../components/PageHeader.vue | 32 ++++++--- .../RightPanel/CollaborationInfo.vue | 64 ++++++++++++------ .../components/RightPanel/DispatchCommand.vue | 3 +- .../RightPanel/VideoMonitorGrid.vue | 2 +- .../RightPanel/VideoMonitorItem.vue | 18 ++--- .../components/RightPanel/index.vue | 12 ++-- .../3DSituationalAwarenessRefactor/index.vue | 22 ++++-- 27 files changed, 141 insertions(+), 87 deletions(-) create mode 100644 packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/中心.png rename packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/{SketchPng7f65d0aa2425301baab2664863fb64259a15c66f7dcca2d5e8c6bf1b09558168.png => 信息面板bg.png} (100%) rename packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/{SketchPng9946fe61af9abb158f585a49bc4ea3d72f7451022351a124fa3a5da373b1a40c.png => 力量调度圆圈.png} (100%) rename packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/{SketchPngaafb813d12b883ad9eb332715e44be92cde1b8fd644dfb243cc9d231bd9a5919.png => 地图tooltip-button.png} (100%) rename packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/{SketchPng753a456c1847586cb7f369e3b90a8459432a27811a579827ba86f9bb427841b2.png => 展开icon.png} (100%) rename packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/{SketchPnga96e6ce64e80f6d935217d64400481f3e0361d9e60a7425f6f09c8287716904d.png => 左折叠箭头icon.png} (100%) rename packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/{SketchPnge203f50bf78f838bbe8bbaac3ee29b40913f42d9dffa92dbe0f028dfa5eb42b6.png => 按钮bg.png} (100%) rename packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/{SketchPng9f6b24d0f7676a515fbcb6ccd101869c03ffe18494366495ce93f7394812a540.png => 文本线条.png} (100%) create mode 100644 packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/文本线条框.png rename packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/{SketchPng5318515e0c6f2242f4a741937e0c245f050ab76eeb57b8eb0deec58c4bac16e3.png => 视频icon.png} (100%) rename packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/{SketchPng177d541aa28d9eab2d1c8e742deeeada8928da5868af55e3f855dfdaa50e7122.png => 视频面板bg.png} (100%) rename packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/{SketchPng29c48e78664083bc5e328e52875fb8faede186b3f690ab748dce73703785d7e2.png => 视频面板title.png} (100%) rename packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/{路线icon(1).png => 路线icon.png} (100%) rename packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/{SketchPnge54852f2dbf23aeabe7bfd58d2b0fad279041cbf01ce1a8908b70d93846e0a4c.png => 返回按钮.png} (100%) rename packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/{SketchPng9af7e0b52fd95788cea5083d9e34c8dfc01da302a90dab175752d526592da30e.png => 面板bg.png} (100%) diff --git a/packages/screen/src/styles/index.scss b/packages/screen/src/styles/index.scss index 474e258..ff0520d 100644 --- a/packages/screen/src/styles/index.scss +++ b/packages/screen/src/styles/index.scss @@ -9,6 +9,23 @@ :root { --cq-inline-100: 100vw; --cq-block-100: 100vh; + + /* 3D 态势感知颜色变量 */ + --primary-color: rgba(28, 161, 255, 1); + --primary-light: rgba(28, 161, 255, 0.44); + --primary-lighter: rgba(28, 161, 255, 0.2); + + --bg-dark: rgba(9, 22, 40, 1); + --bg-panel: rgba(20, 53, 118, 1); + + --text-white: rgba(255, 255, 255, 1); + --text-gray: rgba(179, 204, 226, 1); + + --success-color: rgba(17, 187, 119, 1); + --warning-color: rgba(255, 128, 11, 1); + --danger-color: rgba(255, 6, 36, 1); + + --border-color: rgba(28, 161, 255, 0.3); } * { diff --git a/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/中心.png b/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/中心.png new file mode 100644 index 0000000000000000000000000000000000000000..a488f1a30792b85b2b9791d5e5fa3bb2b92c0872 GIT binary patch literal 14221 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 E1Cp=BtpET3 literal 0 HcmV?d00001 diff --git a/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/SketchPng5318515e0c6f2242f4a741937e0c245f050ab76eeb57b8eb0deec58c4bac16e3.png b/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/视频icon.png similarity index 100% rename from packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/SketchPng5318515e0c6f2242f4a741937e0c245f050ab76eeb57b8eb0deec58c4bac16e3.png rename to packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/视频icon.png diff --git a/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/SketchPng177d541aa28d9eab2d1c8e742deeeada8928da5868af55e3f855dfdaa50e7122.png b/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/视频面板bg.png similarity index 100% rename from packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/SketchPng177d541aa28d9eab2d1c8e742deeeada8928da5868af55e3f855dfdaa50e7122.png rename to packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/视频面板bg.png diff --git a/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/SketchPng29c48e78664083bc5e328e52875fb8faede186b3f690ab748dce73703785d7e2.png b/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/视频面板title.png similarity index 100% rename from packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/SketchPng29c48e78664083bc5e328e52875fb8faede186b3f690ab748dce73703785d7e2.png rename to packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/视频面板title.png diff --git a/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/路线icon(1).png b/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/路线icon.png similarity index 100% rename from packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/路线icon(1).png rename to packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/路线icon.png diff --git a/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/SketchPnge54852f2dbf23aeabe7bfd58d2b0fad279041cbf01ce1a8908b70d93846e0a4c.png b/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/返回按钮.png similarity index 100% rename from packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/SketchPnge54852f2dbf23aeabe7bfd58d2b0fad279041cbf01ce1a8908b70d93846e0a4c.png rename to packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/返回按钮.png diff --git a/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/SketchPng9af7e0b52fd95788cea5083d9e34c8dfc01da302a90dab175752d526592da30e.png b/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/面板bg.png similarity index 100% rename from packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/SketchPng9af7e0b52fd95788cea5083d9e34c8dfc01da302a90dab175752d526592da30e.png rename to packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/面板bg.png diff --git a/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/styles/common.scss b/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/styles/common.scss index 585ac59..14cfbeb 100644 --- a/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/styles/common.scss +++ b/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/styles/common.scss @@ -2,27 +2,13 @@ /** * 3D态势感知公共样式 + * + * 注意:CSS 变量(--primary-color, --text-white 等)已定义在全局样式中 + * 文件位置:/src/styles/index.scss + * + * 这样可以避免 Vue scoped 样式导致的 :root 变量不生效问题 */ -// 公共颜色变量 -:root { - --primary-color: rgba(28, 161, 255, 1); - --primary-light: rgba(28, 161, 255, 0.44); - --primary-lighter: rgba(28, 161, 255, 0.2); - - --bg-dark: rgba(9, 22, 40, 1); - --bg-panel: rgba(20, 53, 118, 1); - - --text-white: rgba(255, 255, 255, 1); - --text-gray: rgba(179, 204, 226, 1); - - --success-color: rgba(17, 187, 119, 1); - --warning-color: rgba(255, 128, 11, 1); - --danger-color: rgba(255, 6, 36, 1); - - --border-color: rgba(28, 161, 255, 0.3); -} - // 公共面板样式 .panel { display: flex; diff --git a/packages/screen/src/views/3DSituationalAwarenessRefactor/components/LeftPanel/ForceDispatch.vue b/packages/screen/src/views/3DSituationalAwarenessRefactor/components/LeftPanel/ForceDispatch.vue index 7c292b6..4c68cfc 100644 --- a/packages/screen/src/views/3DSituationalAwarenessRefactor/components/LeftPanel/ForceDispatch.vue +++ b/packages/screen/src/views/3DSituationalAwarenessRefactor/components/LeftPanel/ForceDispatch.vue @@ -46,7 +46,7 @@
-
+
建议
调度力量
@@ -226,9 +226,10 @@ const handleStartDispatch = () => { .force-dispatch__middle { display: grid; grid-template-columns: 1fr auto 1fr; - gap: vw(16); + gap: vw(18); align-items: center; padding: vh(12) 0; + // background: url('../../assets/images/ForceDispatchBg.png') center top no-repeat; } /* 左右列统一样式 */ @@ -245,6 +246,8 @@ const handleStartDispatch = () => { justify-content: space-between; align-items: center; padding: vh(8) 0; + background: url('../../assets/images/文本线条框.png') no-repeat center center; + background-size: 100% 100%; } .force-dispatch__stat-label { @@ -278,11 +281,13 @@ const handleStartDispatch = () => { align-items: center; justify-content: center; position: relative; + background: url('../../assets/images/中心.png') no-repeat center center; + background-size: contain; } .force-dispatch__circle { position: relative; - width: vw(120); + width: vw(140); height: vh(120); display: flex; align-items: center; @@ -369,13 +374,17 @@ const handleStartDispatch = () => { justify-content: space-between; align-items: center; gap: vw(16); - padding-top: vh(12); + // padding-top: vh(12); } .force-dispatch__eta { display: flex; - flex-direction: column; + // flex-direction: column; + align-items: center; gap: vh(2); + background: url('../../assets/images/文本线条框.png') no-repeat center center; + background-size: 100% 100%; + padding: vh(8) vw(12); } .force-dispatch__eta-label { diff --git a/packages/screen/src/views/3DSituationalAwarenessRefactor/components/LeftPanel/ForcePreset.vue b/packages/screen/src/views/3DSituationalAwarenessRefactor/components/LeftPanel/ForcePreset.vue index 7b6d453..5db08b0 100644 --- a/packages/screen/src/views/3DSituationalAwarenessRefactor/components/LeftPanel/ForcePreset.vue +++ b/packages/screen/src/views/3DSituationalAwarenessRefactor/components/LeftPanel/ForcePreset.vue @@ -42,7 +42,7 @@ :key="station.id" class="station-item" > - station + station
{{ station.name }} 距离灾害点{{ station.distance }}公里 @@ -118,7 +118,7 @@ const { forcePreset } = inject('disasterData') .stat-group { display: flex; justify-content: center; - gap: vw(12); + gap: vw(32); .stat-card { // flex: 1; @@ -127,11 +127,11 @@ const { forcePreset } = inject('disasterData') align-items: center; justify-content: center; gap: vh(8); - padding: vh(12) vw(12); + padding: vh(12) vw(12) vh(30); border-radius: vw(6); position: relative; - background: url('../../assets/images/完成里程.png') no-repeat center center; - background-size: 100% 100%; + background: url('../../assets/images/完成里程.png') no-repeat center bottom; + // background-size: 100% 100%; width: vw(84); .stat-label { @@ -180,7 +180,8 @@ const { forcePreset } = inject('disasterData') align-items: center; gap: vw(12); padding: vh(10) vw(12); - background: rgba(20, 53, 118, 0.3); + // background: rgba(20, 53, 118, 0.3); + background: url('../../assets/images/文本线条框.png') no-repeat center center; border-radius: vw(6); .station-icon { diff --git a/packages/screen/src/views/3DSituationalAwarenessRefactor/components/MapViewer/MapControls.vue b/packages/screen/src/views/3DSituationalAwarenessRefactor/components/MapViewer/MapControls.vue index 9e00e8b..8c195ab 100644 --- a/packages/screen/src/views/3DSituationalAwarenessRefactor/components/MapViewer/MapControls.vue +++ b/packages/screen/src/views/3DSituationalAwarenessRefactor/components/MapViewer/MapControls.vue @@ -246,7 +246,7 @@ const handleToolClick = (toolKey) => { &__icon { width: vw(32); - height: vh(28); + height: vw(32); flex-shrink: 0; transition: all 0.3s ease; } diff --git a/packages/screen/src/views/3DSituationalAwarenessRefactor/components/PageHeader.vue b/packages/screen/src/views/3DSituationalAwarenessRefactor/components/PageHeader.vue index fcd3d23..97c08ed 100644 --- a/packages/screen/src/views/3DSituationalAwarenessRefactor/components/PageHeader.vue +++ b/packages/screen/src/views/3DSituationalAwarenessRefactor/components/PageHeader.vue @@ -6,23 +6,23 @@ 返回驾驶舱 -
- logo -
+
+ logo +

渝路智管-公路安全畅通运行管理

-
+ @@ -61,9 +61,10 @@ const handleBack = () => { display: flex; align-items: center; gap: vw(10); - padding: vh(12) vw(24); - background: url('../assets/images/SketchPnge54852f2dbf23aeabe7bfd58d2b0fad279041cbf01ce1a8908b70d93846e0a4c.png') 0 -1px no-repeat; - background-size: vw(136) vh(46); + padding: vh(10) vw(24); + margin-top: vh(20); + background: url('../assets/images/返回按钮.png') 0 -1px no-repeat; + background-size: 100% 100%; border: none; cursor: pointer; transition: opacity 0.3s; @@ -99,7 +100,16 @@ const handleBack = () => { left: 50%; top: 50%; transform: translate(-50%, -50%); + display: flex; + align-items: center; + .logo-section { + .logo-image { + width: vw(42); + height: vh(30); + border-radius: 50%; + } + } .page-title { background-image: linear-gradient( 180deg, @@ -128,7 +138,7 @@ const handleBack = () => { display: flex; align-items: center; gap: vw(6); - padding: vh(10) vw(16); + padding: vw(5); background: rgba(20, 53, 118, 1); border: 1px solid var(--border-color); border-radius: vw(8); @@ -141,8 +151,8 @@ const handleBack = () => { } .scene-icon { - width: vw(17); - height: vh(22); + width: vw(32); + height: vw(32); } .scene-text { diff --git a/packages/screen/src/views/3DSituationalAwarenessRefactor/components/RightPanel/CollaborationInfo.vue b/packages/screen/src/views/3DSituationalAwarenessRefactor/components/RightPanel/CollaborationInfo.vue index f982cc3..678aed4 100644 --- a/packages/screen/src/views/3DSituationalAwarenessRefactor/components/RightPanel/CollaborationInfo.vue +++ b/packages/screen/src/views/3DSituationalAwarenessRefactor/components/RightPanel/CollaborationInfo.vue @@ -1,7 +1,11 @@ diff --git a/packages/screen/src/views/3DSituationalAwarenessRefactor/index.vue b/packages/screen/src/views/3DSituationalAwarenessRefactor/index.vue index 1fcb753..8c538b7 100644 --- a/packages/screen/src/views/3DSituationalAwarenessRefactor/index.vue +++ b/packages/screen/src/views/3DSituationalAwarenessRefactor/index.vue @@ -11,7 +11,7 @@
- +
@@ -160,22 +160,30 @@ const handlePersonnelLink = (personnel) => { --sa-right-width: calc(486 / 1920 * var(--cq-inline-100, 100vw)); --sa-gap: calc(16 / 1920 * var(--cq-inline-100, 100vw)); --sa-padding: calc(16 / 1920 * var(--cq-inline-100, 100vw)); + --sa-header-height: calc(121 / 1080 * var(--cq-block-100, 100vh)); // Header 高度 --sa-min-width: 1280px; --sa-min-height: 720px; + position: relative; width: 100%; height: 100%; min-width: var(--sa-min-width); min-height: var(--sa-min-height); background-color: var(--bg-dark); overflow: auto; // 当宿主尺寸 < 最小尺寸时允许滚动 - display: flex; - flex-direction: column; + + // PageHeader 浮在顶部 + > :first-child { + position: absolute; + top: 0; + left: 0; + right: 0; + z-index: 10; + } &__main { - position: relative; - flex: 1; - min-height: 0; + position: absolute; + inset: 0; // 铺满整个容器 background: url(./assets/images/main-bg.png) center/cover no-repeat; overflow: hidden; } @@ -207,7 +215,7 @@ const handlePersonnelLink = (personnel) => { grid-auto-rows: 1fr; gap: var(--sa-gap); // 列之间的间距 height: 100%; - padding: var(--sa-padding); // 面板与容器边缘的间距 + padding-top: var(--sa-header-height); // 预留 Header 高度 pointer-events: none; // 容器不拦截事件,让中间区域透明 }