<template> <div class="Home"> <AMapContainer ref="AMapContainerRef" @update:isGisCompleted="(data) => { this.isGisCompleted = data; } " /> <section class="content"> <!-- 左侧 --> <div class="content-l"> <!-- 上 --> <FocusedMonitoring class="card-menu" /> <!-- 下 --> <RoadAndEvents ref="RoadAndEventsRef" :isGisCompleted="isGisCompleted" class="content-l-b card-menu" /> </div> <!-- 右侧 --> <div class="content-r"> <div class="home-icons"> <HomeFilter class="item" /> <HomeFrame class="item" /> <HomeVector class="item" /> <!-- <HomeVectorControl class="item" /> --> <!-- <HomeFrameControl class="item" /> --> </div> <ConditionStatistics class="right card-menu" /> </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 /> </div> </footer> </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 RoadAndEvents from "./components/RoadAndEvents/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 HomeFrameControl from "./components/HomeFrameControl/index.vue"; import HomeVectorControl from "./components/HomeVectorControl/index.vue"; import Button from '@screen/components/Buttons/Button.vue'; import Vue from "vue"; // import InfoBoard from "./components/InfoBoard" export default { name: "Home", components: { FocusedMonitoring, ConditionStatistics, Thumbnail, RoadAndEvents, AMapContainer, Button, HomeFilter, HomeFrame, HomeVector, HomeFrameControl, HomeVectorControl, // InfoBoard }, data() { return { isShowInfoBoard: false, selectedDevice: null, isGisCompleted: false, }; }, provide() { return { getMap: () => this.$refs.AMapContainerRef.getMapInstance(), activeDeviceTypes: Vue.observable([]) } }, methods: { 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 { height: 100%; z-index: 6; display: flex; flex-direction: column; gap: 30px; padding: 19px 31px 0 25px; justify-content: center; .card-menu { transition: all 0.24s linear; } .content { width: 100%; // margin: auto; display: flex; justify-content: space-between; // flex: 1; height: min-content; pointer-events: none; >div { pointer-events: auto; } .content-l { width: 461px; overflow: hidden; pointer-events: none; display: flex; flex-direction: column; gap: 24px; overflow: hidden; height: 100%; >div { pointer-events: all; flex: 1; } .content-l-b { height: 332px; max-height: 332px; flex: 0.81; } } .content-r { display: flex; gap: 9px; .home-icons { display: flex; gap: 0px; flex-direction: column; .item { padding-top: 15px; } } .right { width: 459px; } } } .footer { width: 100%; // margin: auto; pointer-events: none; overflow: hidden; height: min-content; will-change: height; bottom: 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: 224px; background: #005570; border-top: 1px solid #003354; } } } </style>