little4
1 month ago
2 changed files with 280 additions and 4 deletions
@ -0,0 +1,252 @@ |
|||||
|
<template> |
||||
|
<div style="width: 100%;height: 100%;"> |
||||
|
<component :is="mapContainer" ref="MapContainerRef" @update:isGisCompleted="(data) => { this.isGisCompleted = data; }" /> |
||||
|
<div class="Home"> |
||||
|
<section class="content"> |
||||
|
<!-- 左侧 --> |
||||
|
<div class="content-l"> |
||||
|
<!-- 上 --> |
||||
|
<FocusedMonitoring class="card-menu" style="height: 288px;" /> |
||||
|
<!-- 下 --> |
||||
|
<RoadAndEvents ref="RoadAndEventsRef" :isGisCompleted="isGisCompleted" :mapContainer="mapContainer" style="flex:1" class="card-menu" /> |
||||
|
</div> |
||||
|
<div class="content-m"> |
||||
|
</div> |
||||
|
|
||||
|
<div class="home-icons" > |
||||
|
<HomeFilter class="item" /> |
||||
|
<HomeFrame class="item" /> |
||||
|
<HomeVector class="item" v-hasPermi="['business:home:exportOperationalReport']" /> |
||||
|
<HomeWord class="item" /> |
||||
|
<HomeFrameControl class="item" v-hasPermi="['business:home:batchControl']" /> |
||||
|
<HomeWeather class="item" /> |
||||
|
<HomeWeatherLayer class="item" /> |
||||
|
<HomeTraffic class="item" /> |
||||
|
</div> |
||||
|
<div class="content-r"> |
||||
|
<ConditionStatistics class="right card-menu" style="height: 100%;" /> |
||||
|
</div> |
||||
|
</section> |
||||
|
<footer class="footer card-menu"> |
||||
|
<div class="footer-title"> |
||||
|
<span>济菏高速缩略图</span> |
||||
|
<i class="el-icon-s-fold" style="color: #2ad9fd; transform: rotate(-90deg)" @click.stop="handleShrink" /> |
||||
|
</div> |
||||
|
<div class="footer-content"> |
||||
|
<Thumbnail ref="Thumbnail" /> |
||||
|
</div> |
||||
|
</footer> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import FocusedMonitoring from "./components/FocusedMonitoring/index.vue"; |
||||
|
import Thumbnail from "./components/Thumbnail/index.vue"; |
||||
|
import ConditionStatistics from "./components/ConditionStatistics/index.vue"; |
||||
|
|
||||
|
import AMapContainer from "./components/AMapContainer/index.vue"; |
||||
|
import HomeFilter from "./components/HomeFilter/index.vue"; |
||||
|
import HomeFrame from "./components/HomeFrame/index.vue"; |
||||
|
import HomeVector from "./components/HomeVector/index.vue"; |
||||
|
import HomeWord from "./components/HomeWord/index.vue"; |
||||
|
import HomeFrameControl from "./components/HomeFrameControl/index.vue"; |
||||
|
import HomeVectorControl from "./components/HomeVectorControl/index.vue"; |
||||
|
import HomeWeather from "./components/HomeWeather/index.vue"; |
||||
|
import HomeWeatherLayer from "./components/HomeWeatherLayer/index.vue"; |
||||
|
import HomeTraffic from "./components/HomeTraffic/index.vue"; |
||||
|
|
||||
|
import RoadAndEvents from "./components/RoadAndEvents/index.vue"; |
||||
|
import Button from "@screen/components/Buttons/Button.vue"; |
||||
|
import Vue from "vue"; |
||||
|
import BMapContainer from "./components/BMapContainer/index.vue"; |
||||
|
|
||||
|
export default { |
||||
|
name: "Home", |
||||
|
components: { |
||||
|
FocusedMonitoring, |
||||
|
ConditionStatistics, |
||||
|
Thumbnail, |
||||
|
RoadAndEvents, |
||||
|
AMapContainer, |
||||
|
BMapContainer, |
||||
|
Button, |
||||
|
HomeFilter, |
||||
|
HomeFrame, |
||||
|
HomeVector, |
||||
|
HomeFrameControl, |
||||
|
HomeVectorControl, |
||||
|
HomeWord, |
||||
|
HomeWeather, |
||||
|
HomeWeatherLayer, |
||||
|
HomeTraffic |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
selectedDevice: null, |
||||
|
isGisCompleted: false, |
||||
|
mapContainer:'BMapContainer' |
||||
|
}; |
||||
|
}, |
||||
|
provide() { |
||||
|
return { |
||||
|
// 2024-06-04更新地图========================================== |
||||
|
getMap: () => { |
||||
|
return this.$refs.MapContainerRef.getMapInstance(); |
||||
|
}, |
||||
|
setMapZoomAndCenter: (zoom,lnglat) => { |
||||
|
this.$refs.MapContainerRef.setMapZoomAndCenter(zoom,lnglat); |
||||
|
}, |
||||
|
activeDeviceTypes: Vue.observable([]), |
||||
|
}; |
||||
|
}, |
||||
|
methods: { |
||||
|
debug(){ |
||||
|
this.$refs.Thumbnail.debug() |
||||
|
}, |
||||
|
handleShrink(e) { |
||||
|
const translateXElement = e.target.parentElement.parentElement; |
||||
|
|
||||
|
const result = |
||||
|
(e.target.style.transform.match(/[-0-9]+/)?.[0] || -90) * -1; |
||||
|
|
||||
|
e.target.style.transform = `rotate(${result}deg)`; |
||||
|
if ( |
||||
|
translateXElement.style.transform !== `translateY(calc(100% - 36px))` |
||||
|
) { |
||||
|
translateXElement.style.transform = `translateY(calc(100% - 36px))`; |
||||
|
translateXElement.style.position = `absolute`; |
||||
|
translateXElement.style.bottom = `0px`; |
||||
|
} else { |
||||
|
translateXElement.style.transform = `translateY(0)`; |
||||
|
translateXElement.style.position = `relative`; |
||||
|
} |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
.Home { |
||||
|
width: 100%; |
||||
|
height: 100%; |
||||
|
// height: 100%; |
||||
|
// z-index: 6; |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
justify-content: space-between; |
||||
|
// gap: 30px; |
||||
|
padding: 19px 31px 0 25px; |
||||
|
// justify-content: center; |
||||
|
|
||||
|
|
||||
|
|
||||
|
.card-menu { |
||||
|
transition: all 0.24s linear; |
||||
|
} |
||||
|
|
||||
|
.content { |
||||
|
width: 100%; |
||||
|
display: flex; |
||||
|
justify-content: space-between; |
||||
|
height: 62vh; |
||||
|
|
||||
|
.content-l { |
||||
|
width: 480px; |
||||
|
overflow: hidden; |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
overflow: hidden; |
||||
|
height: 100%; |
||||
|
gap: 10px; |
||||
|
} |
||||
|
|
||||
|
.content-m { |
||||
|
display: flex; |
||||
|
gap: 9px; |
||||
|
flex: 1; |
||||
|
} |
||||
|
|
||||
|
.home-icons { |
||||
|
display: flex; |
||||
|
gap: 0px; |
||||
|
flex-direction: column; |
||||
|
z-index: 0; |
||||
|
margin-right: 10px; |
||||
|
.item { |
||||
|
padding-top: 15px; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.content-r { |
||||
|
width: 480px; |
||||
|
overflow: hidden; |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
align-items: flex-end; |
||||
|
overflow: hidden; |
||||
|
height: 100%; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.footer { |
||||
|
width: 100%; |
||||
|
// margin: auto; |
||||
|
pointer-events: none; |
||||
|
overflow: hidden; |
||||
|
height: min-content; |
||||
|
will-change: height; |
||||
|
bottom: 0; |
||||
|
z-index: 0; |
||||
|
|
||||
|
>div { |
||||
|
pointer-events: all; |
||||
|
} |
||||
|
|
||||
|
// position: fixed; |
||||
|
// bottom: 0; |
||||
|
.footer-title { |
||||
|
width: 164px; |
||||
|
height: 36px; |
||||
|
border-radius: 11px 11px 0px 0px; |
||||
|
opacity: 1; |
||||
|
border: 1px solid #2ad9fd; |
||||
|
display: flex; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
overflow: hidden; |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
|
||||
|
gap: 15px; |
||||
|
|
||||
|
span { |
||||
|
font-size: 16px; |
||||
|
font-family: PingFang SC, PingFang SC; |
||||
|
font-weight: 500; |
||||
|
color: #2ad9fd; |
||||
|
} |
||||
|
|
||||
|
i { |
||||
|
transition: all 0.24s linear; |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
|
||||
|
// img { |
||||
|
// display: inline-block; |
||||
|
// margin-left: 11px; |
||||
|
// width: 16px; |
||||
|
// height: 13px; |
||||
|
// cursor: pointer; |
||||
|
// } |
||||
|
} |
||||
|
|
||||
|
.footer-content { |
||||
|
width: 100%; |
||||
|
height: 200px; |
||||
|
background: #005570; |
||||
|
border-top: 1px solid #003354; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</style> |
Loading…
Reference in new issue