Newer
Older
securityFront / src / views / ctrl / overview.vue
<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>