From 34353ebeaf2186198168d6a85ee1eb07688070d2 Mon Sep 17 00:00:00 2001
From: hanbaoshan <hanbaoshan@aiotlink.com>
Date: 星期三, 09 九月 2020 16:52:58 +0800
Subject: [PATCH] 实时监控区域画布宽高及比例固定,添加区域图标,默认隐藏区域展示

---
 src/pages/cameraVideo/index/Video.vue |  208 ++++++++++++++++++++++++++-------------------------
 1 files changed, 107 insertions(+), 101 deletions(-)

diff --git a/src/pages/cameraVideo/index/Video.vue b/src/pages/cameraVideo/index/Video.vue
index 1fdd5e6..f5c9a47 100644
--- a/src/pages/cameraVideo/index/Video.vue
+++ b/src/pages/cameraVideo/index/Video.vue
@@ -16,7 +16,14 @@
               :class="guid === 3 ? 'iconfont icongongge2 activegongge':'iconfont icongongge2'"
               @click="setGuid(3)"
             ></span>
-            <span v-if="TreeDataPool.selectedNode.id" class="area-trigger" @click="toggleShowArea">{{showArea?'闅愯棌鍖哄煙':'鏌ョ湅鍖哄煙'}}</span>
+            <el-tooltip v-if="TreeDataPool.selectedNode.id" :content="`${showArea?'闅愯棌鍖哄煙':'鏌ョ湅鍖哄煙'}`" placement="bottom" popper-class="atooltip">
+              <span :class="showArea?'activegongge':''" class="iconfont iconquyu" @click="toggleShowArea"></span>
+            </el-tooltip>
+            <!-- <span
+              v-if="TreeDataPool.selectedNode.id"
+              class="area-trigger"
+              @click="toggleShowArea"
+            >{{showArea?'闅愯棌鍖哄煙':'鏌ョ湅鍖哄煙'}}</span> -->
             <!-- <el-tooltip
               v-show="true"
               :content="`${track ? '鍏抽棴杩借釜': '寮�鍚拷韪�'}`"
@@ -27,7 +34,7 @@
                 :class="track ? 'iconfont iconintruder-alarm activegongge':'iconfont iconintruder-alarm'"
                 @click="handleTrack"
               ></span>
-            </el-tooltip> -->
+            </el-tooltip>-->
           </div>
           <div class="fixedRatioBox">
             <div
@@ -136,7 +143,7 @@
     VideoTask,
     VideoPhoto
   },
-  data() {
+  data () {
     return {
       guid: 1,
       center: "",
@@ -148,10 +155,10 @@
       tracePubUrl: `${location.protocol === "https" ? "wss" : "ws"}://${location.host}/track`,
       websocket: null,
       visibilityState: true,
-      showArea: true,
+      showArea: false,
     };
   },
-  created() {
+  created () {
     console.log("befor created")
     // this.TreeDataPool.clean();
     // this.TreeDataPool.fetchTreeData();
@@ -166,7 +173,7 @@
 
     console.log("created")
   },
-  mounted() {
+  mounted () {
     document.addEventListener("visibilitychange", this.visibilitychange, false);
     this.$nextTick(() => {
       window.addEventListener("resize", this.resizeMonitorTask);
@@ -183,7 +190,7 @@
     // console.log(list, '宸插畬鎴愮殑鏈湴瑙嗛', this.TreeDataPool.localVedioList)
     this.TreeDataPool.localVedioList = list;
   },
-  beforeDestroy() {
+  beforeDestroy () {
     window.removeEventListener("resize", this.getRightWidth);
     this.CardList.details = [];
     window.clearInterval(this.trackTimer);
@@ -193,7 +200,7 @@
   },
   watch: {
     "TreeDataPool.videoArr": function (newArry) {
-      console.log('newArry',newArry)
+      console.log('newArry', newArry)
       const cameras = this.filterNodes(newArry);
       this.getActiveIndex();
       this.$refs.taskview.showTasks(cameras);
@@ -205,12 +212,12 @@
     "VideoPhotoData.selectWhites": function (value) {
       this.blackAngWhite();
     },
-    "TreeDataPool.showTreeBox"(value) {
+    "TreeDataPool.showTreeBox" (value) {
       this.getRightWidth();
     }
   },
   methods: {
-    handleTrack() {
+    handleTrack () {
       this.track = !this.track;
       if (!this.track) {
         window.clearInterval(this.trackTimer);
@@ -237,7 +244,7 @@
         }, 1 * 1000);
       }
     },
-    videoItemMonitor() {
+    videoItemMonitor () {
       this.websocket.send("ping");
 
       let cache = this.traceCache
@@ -260,7 +267,7 @@
         }
       }
     },
-    initTrackWebsocket() {
+    initTrackWebsocket () {
       if (typeof (WebSocket) === "undefined") {
         alert("鎮ㄧ殑娴忚鍣ㄤ笉鏀寔socket")
       } else {
@@ -271,10 +278,10 @@
         this.websocket.onmessage = this.recvieTrackMessage
       }
     },
-    websocketonopen() { //杩炴帴寤虹珛涔嬪悗鎵цsend鏂规硶鍙戦�佹暟鎹�
+    websocketonopen () { //杩炴帴寤虹珛涔嬪悗鎵цsend鏂规硶鍙戦�佹暟鎹�
       this.websocket.send("sub")
     },
-    tracking() {
+    tracking () {
       getCameraPlayList().then(data => {
         if (data && data.length) {
           data.forEach(ins => {
@@ -293,7 +300,7 @@
         }
       })
     },
-    recvieTrackMessage(e) {
+    recvieTrackMessage (e) {
       let dataJson = JSON.parse(e.data)
       let cache = this.traceCache
       let camera = dataJson.camera
@@ -333,7 +340,7 @@
       // 鏈彂鐜版挱鏀捐褰�
       this.newPlayerInViewBox(camera)
     },
-    newPlayerInViewBox(id) {
+    newPlayerInViewBox (id) {
       // 鏂板鎾斁绐楀彛
       let camera = this.TreeDataPool.getCameraInfoById(id)
       let emptyIndex = -1;
@@ -357,7 +364,7 @@
         this.TreeDataPool.setVideoArr(emptyIndex, camera, this);
       }
     },
-    replacePlayer(id, oldCameraId) {
+    replacePlayer (id, oldCameraId) {
       let camera = this.TreeDataPool.getCameraInfoById(id)
       // console.log("update:", camera.name)
       // 鏇挎崲鎾斁鍣�
@@ -376,7 +383,7 @@
 
       return false
     },
-    closePlayer(id) {
+    closePlayer (id) {
       for (let i = 0; i < this.TreeDataPool.videoArr.length; i++) {
         // eslint-disable-next-line
         if (
@@ -390,7 +397,7 @@
         }
       }
     },
-    visibilitychange() {
+    visibilitychange () {
       switch (document.visibilityState) {
         case "hidden":
           this.visibilityState = false;
@@ -400,7 +407,7 @@
           break;
       }
     },
-    blackAngWhite() {
+    blackAngWhite () {
       if (this.VideoPhotoData.selectBlacks.length > 0) {
         for (let i = 0; i < this.VideoPhotoData.whiteList.length; i++) {
           //this.VideoPhotoData.whiteList[i].disabled = true
@@ -426,24 +433,24 @@
         }
       }
     },
-    closeWindow(index) {
+    closeWindow (index) {
       this.CardList.addBaseList.splice(index, 1);
     },
-    getVideoHeight(){
+    getVideoHeight () {
       let h = this.$refs.monitorVideo.offsetHeight;
-      this.$refs.monitorTask.style.height = h+'px';
+      this.$refs.monitorTask.style.height = h + 'px';
     },
-    resizeMonitorTask(){
+    resizeMonitorTask () {
       this.getRightWidth();
       this.getVideoHeight();
     },
-    getRightWidth() {
+    getRightWidth () {
       let w = this.$refs.videoRight.offsetWidth;
       // console.log("w鏄細", w,this.$refs.monitorVideo.offsetWidth);
       this.$refs.monitorTask.style.width = (w - this.$refs.monitorVideo.offsetWidth - 40) + 'px'
       // console.log("鍙充晶浠诲姟鐨勫搴︼細", this.$refs.monitorTask.style.width)
     },
-    filterNodes(selectArry) {
+    filterNodes (selectArry) {
       let nodes = [];
       selectArry.forEach(i => {
         if (i && nodes.indexOf(i.id) < 0) {
@@ -452,26 +459,26 @@
       });
       return nodes;
     },
-    videoItemClick(index) {
+    videoItemClick (index) {
       this.TreeDataPool.activeVideoIndex = index;
       this.TreeDataPool.activeForceChoose = true;
     },
-    toAdd(item) {
+    toAdd (item) {
       this.CardList.addBaseList.push(item)
     },
-    getCenter() {
+    getCenter () {
       this.center = {
         x: document.documentElement.clientWidth / 2 - 250,
         y: document.documentElement.clientHeight / 2 - 200
       };
     },
-    resizeWidth(w) {
+    resizeWidth (w) {
       this.defaultWidth = w;
     },
-    resizeHeight(h) {
+    resizeHeight (h) {
       this.defaultHeight = h;
     },
-    saveAddBase(item, index) {
+    saveAddBase (item, index) {
       if (this.VideoPhotoData.selectBlacks.length === 0 && this.VideoPhotoData.selectWhites.length === 0) {
         this.$notify({
           title: "娉ㄦ剰",
@@ -501,7 +508,7 @@
         this.VideoPhotoData.selectWhites = []
       })
     },
-    getActiveIndex() {
+    getActiveIndex () {
       this.TreeDataPool.videoArr.length = Math.pow(this.guid, 2);
       let nullVideoIndex = "";
       for (let i = 0; i < this.TreeDataPool.videoArr.length; i++) {
@@ -530,7 +537,7 @@
         }
       }
     },
-    setGuid(value) {
+    setGuid (value) {
       clearTimeout(this.trackTimer);
 
       if (value < this.guid && this.TreeDataPool.activeVideoIndex > value) {
@@ -554,11 +561,11 @@
       sessionStorage.activeIndex = this.TreeDataPool.activeVideoIndex;
       this.getActiveIndex();
     },
-    toggleShowArea(){
+    toggleShowArea () {
       this.showArea = !this.showArea;
     }
   },
-  destroyed() {
+  destroyed () {
     window.removeEventListener("resize", this.getRightWidth);
     this.CardList.details = [];
     this.CardList.addBaseList = [];
@@ -578,7 +585,7 @@
   box-sizing: border-box;
   padding: 10px;
   background-color: #e9ebf2;
-  .main-top{
+  .main-top {
     margin-bottom: 14px;
     display: flex;
     justify-content: space-between;
@@ -627,15 +634,15 @@
         padding-left: 12px;
         cursor: pointer;
       }
-      .area-trigger{
+      .area-trigger {
         font-size: 16px;
       }
     }
-    .fixedRatioBox{
+    .fixedRatioBox {
       padding-top: 56.3%;
       box-sizing: border-box;
       position: relative;
-      >div{
+      > div {
         width: 100%;
         height: 100%;
         position: absolute;
@@ -669,81 +676,80 @@
     // box-shadow: #e4e7ed 0px 0px 9px inset;
     border-radius: 5px;
   }
-
 }
-.titlebar{
-  height: 10px!important;
-  background: #fff!important;
-  .button{
+.titlebar {
+  height: 10px !important;
+  background: #fff !important;
+  .button {
     position: absolute;
-    font-size: 25px!important;
+    font-size: 25px !important;
     right: 10px;
     top: 10px;
     z-index: 3;
   }
 }
 .addToBase {
-    width: 98%;
-    height: 430px;
-    position: relative;
-    .topLabel {
-      margin-top: 20px;
-      height: 40px;
-      border-bottom: 1px solid #eee;
-      font-family: PingFangSC-Medium;
-      font-size: 20px;
+  width: 98%;
+  height: 430px;
+  position: relative;
+  .topLabel {
+    margin-top: 20px;
+    height: 40px;
+    border-bottom: 1px solid #eee;
+    font-family: PingFangSC-Medium;
+    font-size: 20px;
+    font-weight: 600;
+    line-height: 1rem;
+    color: #222222;
+    text-align: left;
+    margin-left: 15px;
+  }
+  .items {
+    width: 100%;
+    height: auto;
+    max-height: 35%;
+    overflow-y: auto;
+    margin: 20px 0px;
+    .lable {
+      width: 15%;
+      margin-top: 10px;
+      float: left;
+      //font-family: PingFangSC-Medium;
+      font-size: 14px;
       font-weight: 600;
-      line-height: 1rem;
-      color: #222222;
-      text-align: left;
-      margin-left: 15px;
     }
-    .items {
-      width: 100%;
-      height: auto;
-      max-height: 35%;
-      overflow-y: auto;
-      margin: 20px 0px;
-      .lable {
-        width: 15%;
-        margin-top: 10px;
-        float: left;
-        //font-family: PingFangSC-Medium;
-        font-size: 14px;
-        font-weight: 600;
-      }
-      .baseList {
-        width: 85%;
-        height: 100%;
-        float: left;
+    .baseList {
+      width: 85%;
+      height: 100%;
+      float: left;
 
-        // display: flex;
-        // justify-content: flex-start;
-        .base {
-          //flex-wrap: wrap;
-          width: calc(33% - 10px);
-          padding: 0px 5px;
-          line-height: 30px;
-          float: left;
-          text-align: left;
-          font-size: 12px !important;
-          .el-checkbox {
-            width: 100%;
-            display: block;
-            overflow: hidden;
-            text-overflow: ellipsis;
-            white-space: nowrap;
-            .el-checkbox__label {
-              display: inline !important;
-            }
+      // display: flex;
+      // justify-content: flex-start;
+      .base {
+        //flex-wrap: wrap;
+        width: calc(33% - 10px);
+        padding: 0px 5px;
+        line-height: 30px;
+        float: left;
+        text-align: left;
+        font-size: 12px !important;
+        .el-checkbox {
+          width: 100%;
+          display: block;
+          overflow: hidden;
+          text-overflow: ellipsis;
+          white-space: nowrap;
+          .el-checkbox__label {
+            display: inline !important;
           }
         }
       }
     }
-    .buttons {
-      position: absolute;
-      right: 0px;
-      bottom: 15px;
-    }
   }
+  .buttons {
+    position: absolute;
+    right: 0px;
+    bottom: 15px;
+  }
+}
 </style>

--
Gitblit v1.8.0