diff --git a/packages/screen/src/map/components/MapViewport.vue b/packages/screen/src/map/components/MapViewport.vue index 9491356..31ecb22 100644 --- a/packages/screen/src/map/components/MapViewport.vue +++ b/packages/screen/src/map/components/MapViewport.vue @@ -8,6 +8,14 @@ import { onMounted, onBeforeUnmount } from 'vue' import { useRoute } from 'vue-router' import useMapStore from '@/map/stores/mapStore' +const props = defineProps({ + // 是否加载默认底图,也就是天地图 + isLoadDefaultBaseMap: { + type: Boolean, + default: true + } +}) + const mapStore = useMapStore() const route = useRoute() let viewer = null @@ -90,8 +98,10 @@ async function initViewer() { } else if (!skipInitialView) { await applyInitialCameraView() } + if (props.isLoadDefaultBaseMap) { + await loadBaseMap() + } - await loadBaseMap() } async function applyInitialCameraView() { diff --git a/packages/screen/src/map/data/mapBaseConfig.json b/packages/screen/src/map/data/mapBaseConfig.json index 29cf17e..2809e5b 100644 --- a/packages/screen/src/map/data/mapBaseConfig.json +++ b/packages/screen/src/map/data/mapBaseConfig.json @@ -9,7 +9,7 @@ { "rid": 7, "configName": "Extent", - "configValue": "[100.5, 19.9, 109.1, 25.7]", + "configValue": "[107.7, 29.9, 108.3, 30.5]", "configDescrition": "默认地图边界范围", "orgCode": "bdzl" }, diff --git a/packages/screen/src/map/services/createLayerService.js b/packages/screen/src/map/services/createLayerService.js index c3fadd2..59d653e 100644 --- a/packages/screen/src/map/services/createLayerService.js +++ b/packages/screen/src/map/services/createLayerService.js @@ -224,6 +224,8 @@ export function createLayerService(deps) { request: 'GetMap', format: queryParams.get('format') || layerOptions.format || 'image/png', transparent: true, + cql_filter:queryParams.get('cql_filter')||'', + ...layerOptions.extraParameters, ...layerOptions.parameters, }, enablePickFeatures: true, diff --git a/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/MapControls/二级标题栏bg-1.png b/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/MapControls/二级标题栏bg-1.png index ce7705f..2452b55 100644 Binary files a/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/MapControls/二级标题栏bg-1.png and b/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/MapControls/二级标题栏bg-1.png differ diff --git a/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/MapControls/二级标题栏bg-2.png b/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/MapControls/二级标题栏bg-2.png index b652506..5afc28b 100644 Binary files a/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/MapControls/二级标题栏bg-2.png and b/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/MapControls/二级标题栏bg-2.png differ diff --git a/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/Tooltip/弹窗bg.png b/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/Tooltip/弹窗bg.png new file mode 100644 index 0000000..428db6e Binary files /dev/null and b/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/Tooltip/弹窗bg.png differ diff --git a/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/danger.png b/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/danger.png new file mode 100644 index 0000000..a6c023e Binary files /dev/null and b/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/danger.png differ diff --git a/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/一级标题栏bg.png b/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/一级标题栏bg.png new file mode 100644 index 0000000..0ca0281 Binary files /dev/null and b/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/一级标题栏bg.png differ diff --git a/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/事件icon.png b/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/事件icon.png new file mode 100644 index 0000000..1b33697 Binary files /dev/null and b/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/事件icon.png differ diff --git a/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/信息面板bg.png b/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/信息面板bg.png index 5effa9b..1ff4ae9 100644 Binary files a/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/信息面板bg.png and b/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/信息面板bg.png differ diff --git a/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/加载gif.gif b/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/加载gif.gif new file mode 100644 index 0000000..b46717c Binary files /dev/null and b/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/加载gif.gif differ diff --git a/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/完成里程.png b/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/完成里程.png index 2bb1890..c20a47d 100644 Binary files a/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/完成里程.png and b/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/完成里程.png differ 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 0000000..2cf7c12 Binary files /dev/null and b/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/摄像头.png differ diff --git a/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/标题栏bg1.png b/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/标题栏bg1.png new file mode 100644 index 0000000..2158b43 Binary files /dev/null and b/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/标题栏bg1.png differ diff --git a/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/视频面板bg.png b/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/视频面板bg.png index b526190..fe1234d 100644 Binary files a/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/视频面板bg.png and b/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/视频面板bg.png differ diff --git a/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/通用卡片bg.png b/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/通用卡片bg.png new file mode 100644 index 0000000..dd8074a Binary files /dev/null and b/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/通用卡片bg.png differ diff --git a/packages/screen/src/views/3DSituationalAwarenessRefactor/components/LeftPanel/ForceDispatch.vue b/packages/screen/src/views/3DSituationalAwarenessRefactor/components/LeftPanel/ForceDispatch.vue index 4c68cfc..18af93e 100644 --- a/packages/screen/src/views/3DSituationalAwarenessRefactor/components/LeftPanel/ForceDispatch.vue +++ b/packages/screen/src/views/3DSituationalAwarenessRefactor/components/LeftPanel/ForceDispatch.vue @@ -150,15 +150,16 @@ const handleStartDispatch = () => { .force-dispatch__top { display: grid; grid-template-columns: 1fr 1fr; - gap: vw(12); + gap: vw(20); } /* 响应等级卡片 */ .force-dispatch__level-card { display: flex; align-items: center; + justify-content: space-between; gap: vw(12); - padding: vh(10) vw(16); + padding: vh(5) vw(16); background: rgba(20, 53, 118, 0.6); border: 1px solid rgba(28, 161, 255, 0.3); border-radius: vw(4); @@ -166,13 +167,13 @@ const handleStartDispatch = () => { } .force-dispatch__level-label { - font-size: fs(13); + font-size: fs(18); font-family: SourceHanSansCN-Regular, sans-serif; color: rgba(255, 255, 255, 0.8); } .force-dispatch__level-value { - font-size: fs(14); + font-size: fs(18); font-family: SourceHanSansCN-Bold, sans-serif; font-weight: 600; color: rgba(255, 255, 255, 0.95); @@ -206,7 +207,7 @@ const handleStartDispatch = () => { } .force-dispatch__plan-text { - font-size: fs(13); + font-size: fs(18); font-family: SourceHanSansCN-Medium, sans-serif; font-weight: 500; color: rgba(255, 255, 255, 0.95); diff --git a/packages/screen/src/views/3DSituationalAwarenessRefactor/components/LeftPanel/ForcePreset.vue b/packages/screen/src/views/3DSituationalAwarenessRefactor/components/LeftPanel/ForcePreset.vue index 5d763e1..ae7cfa4 100644 --- a/packages/screen/src/views/3DSituationalAwarenessRefactor/components/LeftPanel/ForcePreset.vue +++ b/packages/screen/src/views/3DSituationalAwarenessRefactor/components/LeftPanel/ForcePreset.vue @@ -1,22 +1,36 @@ @@ -92,36 +146,119 @@ const handleDistanceChange = (distance) => { padding: 0; margin-top: 0; - &__filter { + // 自定义下拉框 + .custom-dropdown { + position: relative; + margin-bottom: vh(8); + } + + // 触发器 + .dropdown-trigger { display: flex; align-items: center; - gap: vw(8); - padding: vh(10) vw(16); - background: rgba(20, 53, 118, 0.5); - border-radius: vw(4); - margin-bottom: vh(16); + justify-content: space-between; + padding: vh(8) vw(16); + background: rgba(28, 70, 130, 0.9); + border: 1px solid rgba(28, 161, 255, 0.3); + border-radius: vw(8); cursor: pointer; + transition: all 0.3s ease; - .filter-content { - display: flex; - align-items: center; - gap: vw(8); - width: 100%; + &:hover { + background: rgba(28, 70, 130, 1); + border-color: rgba(28, 161, 255, 0.5); } - .filter-text { + .trigger-text { flex: 1; color: var(--text-white); - font-size: fs(14); + font-size: fs(15); font-family: SourceHanSansCN-Medium, sans-serif; + font-weight: 500; } - .filter-icon { - width: vw(12); - height: vh(12); + .trigger-icon { + width: 16px; + height: 16px; + flex-shrink: 0; + transition: transform 0.3s ease; + + img { + width: 100%; + height: 100%; + object-fit: contain; + } + + &.is-open { + transform: rotate(180deg); + } } } + // 下拉面板 + .dropdown-panel { + position: absolute; + top: calc(100% + vh(4)); + left: 0; + right: 0; + background: rgba(15, 35, 75, 0.98); + border: 1px solid rgba(28, 161, 255, 0.3); + border-radius: vw(8); + overflow: hidden; + z-index: 100; + box-shadow: 0 vh(4) vh(16) rgba(0, 0, 0, 0.5); + } + + // 下拉项 + .dropdown-item { + display: flex; + align-items: center; + justify-content: space-between; + padding: vh(12) vw(16); + cursor: pointer; + transition: background 0.2s ease; + + &:hover { + background: rgba(28, 161, 255, 0.1); + } + + &.is-active { + background: rgba(28, 161, 255, 0.15); + } + + .item-text { + flex: 1; + color: rgba(255, 255, 255, 0.9); + font-size: fs(15); + font-family: SourceHanSansCN-Medium, sans-serif; + font-weight: 400; + } + + .item-icon { + width: vw(20); + height: vh(20); + flex-shrink: 0; + color: var(--primary-color); + + svg { + width: 100%; + height: 100%; + } + } + } + + // 下拉动画 + .dropdown-slide-enter-active, + .dropdown-slide-leave-active { + transition: all 0.3s ease; + } + + .dropdown-slide-enter-from, + .dropdown-slide-leave-to { + opacity: 0; + transform: translateY(vh(-10)); + } + &__summary { position: relative; display: flex; @@ -205,7 +342,7 @@ const handleDistanceChange = (distance) => { display: flex; flex-direction: column; gap: vh(8); - max-height: 100px; + max-height: vw(120); overflow-y: auto; // 滚动条 @@ -222,9 +359,10 @@ const handleDistanceChange = (distance) => { display: flex; align-items: center; gap: vw(12); - padding: vh(10) vw(12); + padding: vh(0) vw(12); // background: rgba(20, 53, 118, 0.3); background: url('../../assets/images/文本线条框.png') no-repeat center center; + background-size: 100% 100%; border-radius: vw(6); .station-icon { @@ -238,6 +376,7 @@ const handleDistanceChange = (distance) => { display: flex; flex-direction: column; gap: vh(4); + padding: vh(5) 0; .station-name { color: var(--text-white); @@ -257,29 +396,4 @@ const handleDistanceChange = (distance) => { } } } - -// Dropdown菜单样式覆盖 -:deep(.el-dropdown-menu) { - background: rgba(20, 53, 118, 0.95); - border: 1px solid rgba(255, 255, 255, 0.1); - padding: vh(4) 0; - - .el-dropdown-menu__item { - color: var(--text-white); - font-size: fs(14); - font-family: SourceHanSansCN-Medium, sans-serif; - padding: vh(8) vw(16); - - &:hover { - background: rgba(255, 255, 255, 0.1); - color: var(--text-white); - } - - &.is-active { - background: rgba(255, 255, 255, 0.15); - color: var(--el-color-primary); - font-weight: 600; - } - } -} diff --git a/packages/screen/src/views/3DSituationalAwarenessRefactor/components/LeftPanel/index.vue b/packages/screen/src/views/3DSituationalAwarenessRefactor/components/LeftPanel/index.vue index ed722b7..5cf873a 100644 --- a/packages/screen/src/views/3DSituationalAwarenessRefactor/components/LeftPanel/index.vue +++ b/packages/screen/src/views/3DSituationalAwarenessRefactor/components/LeftPanel/index.vue @@ -2,6 +2,13 @@
+ @@ -10,7 +17,7 @@ - +
@@ -64,6 +71,16 @@ const isLocationOpen = ref(true) const toggleLocation = () => { isLocationOpen.value = !isLocationOpen.value } + +// 定义对外事件 +const emit = defineEmits(['start-dispatch']) + +/** + * 处理力量调度启动事件,向上传递给父组件 + */ +const handleStartDispatch = (payload) => { + emit('start-dispatch', payload) +} diff --git a/packages/screen/src/views/3DSituationalAwarenessRefactor/components/PageHeader.vue b/packages/screen/src/views/3DSituationalAwarenessRefactor/components/PageHeader.vue index 97c08ed..6d360ca 100644 --- a/packages/screen/src/views/3DSituationalAwarenessRefactor/components/PageHeader.vue +++ b/packages/screen/src/views/3DSituationalAwarenessRefactor/components/PageHeader.vue @@ -12,7 +12,7 @@
logo
-

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

+

渝路智管-应急保通事件处置

+ +