<template> <div class="main-page"> <div class="main-header"> <div class="main-title"> <img src="/static/images/dashboard/icon-title.png"> <span>{{ title }}</span> </div> </div> <div class="home-icon"> <a @click="backToIndex"> <img src="/static/images/global_images/home-logo.png"> </a> </div> <div class="exit-icon"> <a href="#" @click="logout"> <img src="/static/images/global_images/exit-logo.png"> </a> </div> <div class="map-overview"> <img src="/static/images/overview/tg/mapOverviewTg.jpg" height="100%"> <div v-for="(key) in rounds" v-show="round" :key="key" :class="setClass('round', key)" /> <div v-for="(key) in guns" v-show="gun" :key="key" :class="setClass('gun', key)" /> <!-- <div v-show="round" class="point-round point-flicker-r point-cam1-r-loc"/>--> <!-- <div v-show="round" class="point-round point-flicker-r point-cam2-r-loc"/>--> <!-- <div v-show="round" class="point-round point-flicker-r point-cam3-r-loc"/>--> <!-- <div v-show="gun" class="point-gun point-flicker-g point-cam1-g-loc"/>--> <!-- <div v-show="gun" class="point-gun point-flicker-g point-cam2-g-loc"/>--> <!-- <div v-show="gun" class="point-gun point-flicker-g point-cam3-g-loc"/>--> <!-- <div v-show="gun" class="point-gun point-flicker-g point-cam4-g-loc"/>--> <!-- <div v-show="gun" class="point-gun point-flicker-g point-cam5-g-loc"/>--> <!-- <div v-show="gun" class="point-gun point-flicker-g point-cam6-g-loc"/>--> <div v-show="point" class="point point-flicker point-cam1-f-loc"/> <div v-show="point" class="point point-flicker point-cam2-f-loc"/> <div v-show="point" class="point point-flicker point-cam3-f-loc"/> <div v-show="point" class="point point-flicker point-cam4-f-loc"/> <div v-show="point" class="point point-flicker point-cam5-f-loc"/> <div v-show="point" class="point point-flicker point-cam6-f-loc"/> <div v-show="point" class="point point-flicker point-cam7-f-loc"/> <div v-show="point" class="point point-flicker point-cam8-f-loc"/> <div v-show="point" class="point point-flicker point-cam9-f-loc"/> <div v-show="point" class="point point-flicker point-cam10-f-loc"/> <div v-show="point" class="point point-flicker point-cam11-f-loc"/> <div v-show="point" class="point point-flicker point-cam12-f-loc"/> <div v-show="point" class="point point-flicker point-cam13-f-loc"/> <div v-show="point" class="point point-flicker point-cam14-f-loc"/> <div class="point point-flicker point-cam15-f-loc"/> <div class="point point-flicker point-cam16-f-loc"/> <div class="point point-flicker point-cam17-f-loc"/> <div class="point point-flicker point-cam18-f-loc"/> <div class="point point-flicker point-cam19-f-loc"/> <div class="point point-flicker point-cam20-f-loc"/> <div class="point point-flicker point-cam21-f-loc"/> <div class="point point-flicker point-cam22-f-loc"/> <div class="point point-flicker point-cam23-f-loc"/> <div class="point point-flicker point-cam24-f-loc"/> <div class="point point-flicker point-cam25-f-loc"/> <div class="point point-flicker point-cam26-f-loc"/> <div class="point point-flicker point-cam27-f-loc"/> <div class="point point-flicker point-cam28-f-loc"/> <div class="point-car point-flicker-c point-cam1-c-loc"/> <div class="point-car point-flicker-c point-cam2-c-loc"/> <div class="point-car point-flicker-c point-cam3-c-loc"/> <div class="point-car point-flicker-c point-cam4-c-loc"/> <div class="point-perimeter point-flicker-p point-cam1-p-loc"/> <div class="point-perimeter point-flicker-p point-cam2-p-loc"/> <div class="point-perimeter point-flicker-p point-cam3-p-loc"/> <div class="point-perimeter point-flicker-p point-cam4-p-loc"/> <div class="point-perimeter point-flicker-p point-cam5-p-loc"/> <div class="point-perimeter point-flicker-p point-cam6-p-loc"/> <div class="point-perimeter point-flicker-p point-cam7-p-loc"/> <div class="point-perimeter point-flicker-p point-cam8-p-loc"/> <div class="point-perimeter point-flicker-p point-cam9-p-loc"/> <div class="point-perimeter point-flicker-p point-cam10-p-loc"/> <div class="point-perimeter point-flicker-p point-cam11-p-loc"/> <div class="point-perimeter point-flicker-p point-cam12-p-loc"/> <div class="point-perimeter point-flicker-p point-cam13-p-loc"/> <div class="point-perimeter point-flicker-p point-cam14-p-loc"/> <div class="point-perimeter point-flicker-p point-cam15-p-loc"/> <div class="point-perimeter point-flicker-p point-cam16-p-loc"/> <div class="point-perimeter point-flicker-p point-cam17-p-loc"/> <div class="point-perimeter point-flicker-p point-cam18-p-loc"/> </div> <div class="func-butt-block"> <el-button type="primary">设备状态</el-button> <el-button type="primary">报警情况</el-button> <el-button type="primary">防护情况</el-button> </div> <el-row :gutter="20" class="dev-footer"> <el-col class="dev-icon" style="margin-left: 10vw;"> <img src="/static/images/overview/icons/icon-all.png"> <span>全部</span> </el-col> <el-col class="dev-icon" @click.native="selectDevByType('round')"> <img src="/static/images/overview/icons/icon-camera.png"> <span>球机</span> </el-col> <el-col class="dev-icon" @click.native="selectDevByType('gun')"> <img src="/static/images/overview/icons/icon-gate.png"> <span>枪机</span> </el-col> <el-col class="dev-icon"> <img src="/static/images/overview/icons/icon-fence.png"> <span>人脸识别</span> </el-col> <el-col class="dev-icon"> <img src="/static/images/overview/icons/icon-car.png"> <span>车牌识别</span> </el-col> <el-col class="dev-icon"> <img src="/static/images/overview/icons/icon-temperature.png"> <span>周界</span> </el-col> </el-row> </div> </template> <script> import { getProject } from '@/utils/baseConfig' export default { name: 'CtrlOverview', data() { return { title: getProject().title, round: true, gun: true, point: true, rounds: [1, 2, 3], guns: [1, 2, 3, 4, 5, 6] } }, methods: { fetchData() { }, logout() { this.$store.dispatch('LogOut').then(() => { location.reload() // 为了重新实例化vue-router对象 避免bug }) }, backToIndex() { this.$router.push('/dashboard') }, selectDevByType(type) { console.log(type) switch (type) { case 'round': this.round = !this.round break case 'gun': this.gun = !this.gun break } }, setClass(type, key) { let classObj = {} classObj['point-' + type] = true switch (type) { case 'round': classObj = {'point-flicker-r': true} classObj['point-cam' + key + '-r-loc'] = true return classObj case 'gun': classObj['point-flicker-g'] = true classObj['point-cam' + key + '-g-loc'] = true return classObj } } } } </script> <style scoped> .main-page { background-size: cover; background-color: #004080; height: 100vh; } .main-header { width: 100vw; } .main-title { height: 74px; text-align: center; padding-top: 21px; background: url("/static/images/overview/title-background-1920.png"); } .main-title img { display: inline-block; margin-right: 15px; width: 52px; height: 32px; vertical-align: text-bottom; } .home-icon { width: 26px; height: 26px; position: fixed; left: 20px; top: 12px; } .exit-icon { width: 26px; height: 26px; position: fixed; right: 20px; top: 12px; } .home-icon img, .exit-icon img { width: 26px; height: 26px; } .main-title span { color: #FFFFFF; font-size: 32px; font-weight: bold; font-family: 'Microsoft YaHei'; } .map-overview { margin-top: 30px; height: calc(90vh - 140px); text-align: center; position: relative; /*background: url("/static/images/overview/tg/mapOverviewTg.jpg") no-repeat center;*/ /*background-size: contain;*/ } .func-butt-block { position: absolute; top: 100px; left: 30px; width: 100px; } .func-butt-block button { margin: 5px 0px; } .dev-footer { position: fixed; bottom: 50px; } .dev-icon { width: calc(10vw - 5px); vertical-align: middle; border: 1px solid #00ffff; padding: 10px 5px !important; margin-left: 5px; cursor: pointer; } .dev-icon img { height: 40px; vertical-align:middle; } .dev-icon span { font-size: 14px; color: #00D2FF; line-height: 40px; height: 40px; vertical-align:middle; float: right; } @media(max-width: 1440px) { .main-title { height: 56px; padding-top: 15px; background: url("/static/images/overview/title-background-1440.png"); } .main-title span { font-size: 24px; } .main-title img { margin-right: 15px; width: 32px; height: 32px; } .home-icon { left: 18px; width: 18px; height: 18px; } .exit-icon { right: 18px; width: 18px; height: 18px; } .home-icon img, .exit-icon img { width: 18px; height: 18px; } .dev-icon span { font-size: 12px; } } </style> <style lang="scss" scoped> @import "@/assets/overview_scss/dev-tg-ov.scss"; .point { width: 8px; height: 8px; background-color: lime; border-radius: 50%; z-index:9999; position: relative; display: inline-block; } /* 设置动画前颜色 */ .point-flicker:after { background-color: chartreuse; } /* 设置动画后颜色 */ .point-flicker:before { background-color: rgba(0, 168, 253, 0.2); } /* 设置动画 */ .point-flicker:before, .point-flicker:after { content: ''; width: 16px; height: 16px; position: absolute; left: 50%; top: 50%; margin-left: -8px; margin-top: -8px; border-radius: 50%; /* CSS3 animation 属性 网址 */ /* https://www.w3school.com.cn/cssref/pr_animation.asp */ animation: warn 1.5s ease-out 0s infinite; } /* 周界部分摄像头的颜色 */ .point-perimeter { @extend .point; background-color: #48dbfb; } .point-flicker-p:after { @extend .point-flicker:after; background-color: #48dbfb; } /* 车牌识别部分摄像头的颜色 */ .point-car { @extend .point; background-color: #dff9fb; } .point-flicker-c:after { @extend .point-flicker:after; background-color: #dff9fb; } /* 球机部分摄像头的颜色 */ .point-round { @extend .point; background-color: #00a8ff; } .point-flicker-r:after { @extend .point-flicker:after; background-color: #00a8ff; } /* 普通枪机部分摄像头的颜色 */ .point-gun { @extend .point; background-color: #5352ed; } .point-flicker-g:after { @extend .point-flicker:after; background-color: #5352ed; } /* @keyframes 规则用于创建动画。在 @keyframes 中规定某项 CSS 样式,就能创建由当前样式逐渐改为新样式的动画效果。 */ @keyframes warn { 0% { transform: scale(0.5); opacity: 1; } 30% { opacity: 1; } 100% { transform: scale(1.4); opacity: 0; } } @media(max-width: 1440px) { /******** 球机位置 ********/ .point-cam1-r-loc { position: absolute; top: $round-camera1-top; left: $round-camera1-left; } .point-cam2-r-loc { position: absolute; top: $round-camera2-top; left: $round-camera2-left; } .point-cam3-r-loc { position: absolute; top: $round-camera3-top; left: $round-camera3-left; } /******** 枪机位置 ********/ .point-cam1-g-loc { position: absolute; top: $gun-camera1-top; left: $gun-camera1-left; } .point-cam2-g-loc { position: absolute; top: $gun-camera2-top; left: $gun-camera2-left; } .point-cam3-g-loc { position: absolute; top: $gun-camera3-top; left: $gun-camera3-left; } .point-cam4-g-loc { position: absolute; top: $gun-camera4-top; left: $gun-camera4-left; } .point-cam5-g-loc { position: absolute; top: $gun-camera5-top; left: $gun-camera5-left; } .point-cam6-g-loc { position: absolute; top: $gun-camera6-top; left: $gun-camera6-left; } /******** 人脸识别位置 ********/ .point-cam1-f-loc { position: absolute; top: $face-camera1-top; left: $face-camera1-left; } .point-cam2-f-loc { position: absolute; top: $face-camera2-top; left: $face-camera2-left; } .point-cam3-f-loc { position: absolute; top: $face-camera3-top; left: $face-camera3-left; } .point-cam4-f-loc { position: absolute; top: $face-camera4-top; left: $face-camera4-left; } .point-cam5-f-loc { position: absolute; top: $face-camera5-top; left: $face-camera5-left; } .point-cam6-f-loc { position: absolute; top: $face-camera6-top; left: $face-camera6-left; } .point-cam7-f-loc { position: absolute; top: $face-camera7-top; left: $face-camera7-left; } .point-cam8-f-loc { position: absolute; top: $face-camera8-top; left: $face-camera8-left; } .point-cam9-f-loc { position: absolute; top: $face-camera9-top; left: $face-camera9-left; } .point-cam10-f-loc { position: absolute; top: $face-camera10-top; left: $face-camera10-left; } .point-cam11-f-loc { position: absolute; top: $face-camera11-top; left: $face-camera11-left; } .point-cam12-f-loc { position: absolute; top: $face-camera12-top; left: $face-camera12-left; } .point-cam13-f-loc { position: absolute; top: $face-camera13-top; left: $face-camera13-left; } .point-cam14-f-loc { position: absolute; top: $face-camera14-top; left: $face-camera14-left; } .point-cam15-f-loc { position: absolute; top: $face-camera15-top; left: $face-camera15-left; } .point-cam16-f-loc { position: absolute; top: $face-camera16-top; left: $face-camera16-left; } .point-cam17-f-loc { position: absolute; top: $face-camera17-top; left: $face-camera17-left; } .point-cam18-f-loc { position: absolute; top: $face-camera18-top; left: $face-camera18-left; } .point-cam19-f-loc { position: absolute; top: $face-camera19-top; left: $face-camera19-left; } .point-cam20-f-loc { position: absolute; top: $face-camera20-top; left: $face-camera20-left; } .point-cam21-f-loc { position: absolute; top: $face-camera21-top; left: $face-camera21-left; } .point-cam22-f-loc { position: absolute; top: $face-camera22-top; left: $face-camera22-left; } .point-cam23-f-loc { position: absolute; top: $face-camera23-top; left: $face-camera23-left; } .point-cam24-f-loc { position: absolute; top: $face-camera24-top; left: $face-camera24-left; } .point-cam25-f-loc { position: absolute; top: $face-camera25-top; left: $face-camera25-left; } .point-cam26-f-loc { position: absolute; top: $face-camera26-top; left: $face-camera26-left; } .point-cam27-f-loc { position: absolute; top: $face-camera27-top; left: $face-camera27-left; } .point-cam28-f-loc { position: absolute; top: $face-camera28-top; left: $face-camera28-left; } /******** 车牌识别位置 ********/ .point-cam1-c-loc { position: absolute; top: $car-camera1-top; left: $car-camera1-left; } .point-cam2-c-loc { position: absolute; top: $car-camera2-top; left: $car-camera2-left; } .point-cam3-c-loc { position: absolute; top: $car-camera3-top; left: $car-camera3-left; } .point-cam4-c-loc { position: absolute; top: $car-camera4-top; left: $car-camera4-left; } /******** 周界位置 ********/ .point-cam1-p-loc { position: absolute; top: $perimeter-camera1-top; left: $perimeter-camera1-left; } .point-cam2-p-loc { position: absolute; top: $perimeter-camera2-top; left: $perimeter-camera2-left; } .point-cam3-p-loc { position: absolute; top: $perimeter-camera3-top; left: $perimeter-camera3-left; } .point-cam4-p-loc { position: absolute; top: $perimeter-camera4-top; left: $perimeter-camera4-left; } .point-cam5-p-loc { position: absolute; top: $perimeter-camera5-top; left: $perimeter-camera5-left; } .point-cam6-p-loc { position: absolute; top: $perimeter-camera6-top; left: $perimeter-camera6-left; } .point-cam7-p-loc { position: absolute; top: $perimeter-camera7-top; left: $perimeter-camera7-left; } .point-cam8-p-loc { position: absolute; top: $perimeter-camera8-top; left: $perimeter-camera8-left; } .point-cam9-p-loc { position: absolute; top: $perimeter-camera9-top; left: $perimeter-camera9-left; } .point-cam10-p-loc { position: absolute; top: $perimeter-camera10-top; left: $perimeter-camera10-left; } .point-cam11-p-loc { position: absolute; top: $perimeter-camera11-top; left: $perimeter-camera11-left; } .point-cam12-p-loc { position: absolute; top: $perimeter-camera12-top; left: $perimeter-camera12-left; } .point-cam13-p-loc { position: absolute; top: $perimeter-camera13-top; left: $perimeter-camera13-left; } .point-cam14-p-loc { position: absolute; top: $perimeter-camera14-top; left: $perimeter-camera14-left; } .point-cam15-p-loc { position: absolute; top: $perimeter-camera15-top; left: $perimeter-camera15-left; } .point-cam16-p-loc { position: absolute; top: $perimeter-camera16-top; left: $perimeter-camera16-left; } .point-cam17-p-loc { position: absolute; top: $perimeter-camera17-top; left: $perimeter-camera17-left; } .point-cam18-p-loc { position: absolute; top: $perimeter-camera18-top; left: $perimeter-camera18-left; } } </style>