From 03fbaa3ebea4cd30ad798a4ec5c27dbb2c2daf86 Mon Sep 17 00:00:00 2001
From: heyujie <516346543@qq.com>
Date: 星期二, 16 三月 2021 18:31:59 +0800
Subject: [PATCH] echart里程标

---
 src/pages/shuohuangMonitorAnalyze/components/videoAnalyze.vue |  213 +++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 158 insertions(+), 55 deletions(-)

diff --git a/src/pages/shuohuangMonitorAnalyze/components/videoAnalyze.vue b/src/pages/shuohuangMonitorAnalyze/components/videoAnalyze.vue
index 8a8f6ef..191953e 100644
--- a/src/pages/shuohuangMonitorAnalyze/components/videoAnalyze.vue
+++ b/src/pages/shuohuangMonitorAnalyze/components/videoAnalyze.vue
@@ -2,6 +2,16 @@
   <div class="video-analyze-content">
     <div class="content-top">
       <div class="grid-check">
+     
+       <el-dropdown trigger="click" :popper-append-to-body="false" @command="handleCommand" v-show="showLocChoise">
+        <span class="el-dropdown-link">
+          {{curCamera}}<i class="el-icon-arrow-down el-icon--right"></i>
+        </span>
+        <el-dropdown-menu slot="dropdown">
+          <el-dropdown-item v-for="(item,index) in popDownArr" :key="index" :command="item">{{item.Camera}}</el-dropdown-item>
+        </el-dropdown-menu>
+      </el-dropdown>
+        
         <span
           :class="
             guid === 1
@@ -30,19 +40,17 @@
       <div class="video-area">
         <div class="info-list block">
           <p class="title-partment">鐩稿叧瑙嗛</p>
-          <!-- <div class="video-name" v-for="video in videoDetails.videoList" :key="video.id">
-                  <i class="el-icon-film"></i>
-                  <span>{{video.name}}</span>
-          </div>-->
-          <div
+          <div class="v-name-block">
+            <div
             class="video-name"
             :class="{ current: curVideo.ID == video.ID }"
             @click="checkVideo(video, index)"
-            v-for="(video, index) in relativeVideos"
+            v-for="(video, index) in curRoomVideos"
             :key="video.ID"
           >
             <i class="el-icon-film"></i>
-            <span>{{ video.Camera }}</span>
+            <span>{{ video.VideoDate }}</span>
+          </div>
           </div>
         </div>
         <div class="players" ref="playerWrap">
@@ -71,16 +79,20 @@
               v-for="(item, index) in videoWrapArr"
               :key="index"
               @click="checkCurVideo(index)"
+              style="position: relative;"
             >
               <template v-if="index <= videoArrs.length - 1">
                 <div
-                  :class="{ currentPlayer: curVideo.ID == videoArrs[index].ID }"
+                  :class="{ currentPlayer: curVideo.ID == videoArrs[index].ID,videoZone:true }"
+                  @mouseover="overShowLoc(index)"
                 >
+                  <!-- @mouseover="" -->
                   <!-- {{videoArrs[index].ID}} -->
                   <!-- <img
                     :src="videoArrs[index].VideoCover"
                     style="width:100px"
                   />-->
+                  <div class="pos-desc"  style="position: absolute;top: 5px;left: 10px;color: #fff;z-index: 1;height: fit-content;background-color: black;">{{videoArrs[index].Camera}}</div>
                   <ali-player
                     :source="videoArrs[index].VideoPath"
                     :markers="videoArrs[index].marks"
@@ -90,28 +102,19 @@
               </template>
             </div>
           </template>
-
-          <!-- <div
-                  class="video-item"
-                  :class="{'active':item.ID==curVideo.ID}"
-                  :ref="`gridVideoItem_${index}`"
-                  v-for="(item,index) in videoWrapArr"
-                  :key="index"
-                >                  
-          </div>-->
         </div>
       </div>
     </div>
     <div class="content-bottom">
-      <div class="bot-left block">
-        <p class="title-partment">蹇�熸爣娉�</p>
-        <div class="flex-box" style="height: 28px">
+      <div class="bot-left ">
+        <!-- <p class="title-partment">蹇�熸爣娉�</p> -->
+         <el-tabs v-model="activeName" @tab-click="handleClick">
+          <el-tab-pane label="蹇�熸爣娉�" name="first"> <div class="flex-box" style="height: 28px">
           <label style="padding-right: 10px">闅愭偅闂:</label>
           <el-radio-group v-model="isUnusual">
             <el-radio :label="0">鏃犲紓甯�</el-radio>
             <el-radio :label="1">鏈夊紓甯�</el-radio>
           </el-radio-group>
-
           <el-button
             icon="el-icon-plus"
             size="mini"
@@ -122,8 +125,8 @@
           >
         </div>
         <div class="flex-box fixed-height-box">
-          <label>鏍囨敞淇℃伅:</label>
-          <div class="mark-list">
+          <label v-if="!showTable">鏍囨敞淇℃伅:</label>
+          <div class="mark-list" v-if="!showTable">
             <div class="mark" v-for="mark in curVideo.LableLst" :key="mark.ID">
               <div class="time">
                 <span
@@ -139,7 +142,17 @@
               </div>
             </div>
           </div>
-        </div>
+        </div></el-tab-pane>
+            <!-- <div class="flex-box fixed-height-box2"></div> -->
+            <dataset-chart style="width:100%" v-if="showTable"></dataset-chart>
+
+            
+          <el-tab-pane label="閲岀▼鏍�" name="second">
+        
+        </el-tab-pane>
+          
+        </el-tabs>
+       
       </div>
       <div class="bot-right block">
         <p class="title-partment">瑙嗛璇︽儏</p>
@@ -157,8 +170,8 @@
             <span>{{ videoDetails.VideoDate }}</span>
           </div>
           <div>
-            <label>鍙告満|鍓徃鏈�:</label>
-            <span>{{ videoDetails.Driver1 }}|{{ videoDetails.Driver2 }}</span>
+            <label>鍙告満 | 鍓徃鏈�:</label>
+            <span>{{ videoDetails.Driver1 }} | {{ videoDetails.Driver2 }}</span>
           </div>
         </div>
       </div>
@@ -169,14 +182,16 @@
       :visible="labelDialogVisible"
       @close="labelDialogVisible = false"
       :append-to-body="false"
+        :modal="false"
+
     >
-      <div class="label-radio">
+      <!-- <div class="label-radio">
         <p class="label">閫夋嫨灏嗚鏍囨敞鐨勮棰�:</p>
         <el-radio-group v-model="isCheckAllVideo">
           <el-radio :label="1">鏍囨敞鍦ㄥ叏閮ㄤ綅缃殑瑙嗛娈�</el-radio>
           <el-radio :label="0">浠呮爣娉ㄩ�変腑鐨勮棰戞</el-radio>
         </el-radio-group>
-      </div>
+      </div> -->
       <div class="label-check">
         <p class="label">闅愭偅闂:</p>
         <el-checkbox-group v-model="labelCheckedList">
@@ -204,16 +219,19 @@
   updateVideoAnalyze,
   getlst,
   getRelatedVideoInfo,
+  getCarVideos,
   getLabelMap,
   delLabel,
   editLabel,
 } from "@/api/shuohuang";
+import DatasetChart from './charts/datasetForVideo';
 import AliPlayer from "./aliPlayer/index";
 
 export default {
   name: "VideoAnalyze",
   components: {
     AliPlayer,
+    DatasetChart,
   },
   props: {
     videoDetails: {
@@ -231,12 +249,19 @@
       isUnusual: "",
       videoArrs: [],
       relativeVideos: [],
+      allCurVideos:[],
       labelCheckedList: [],
       videoWrapArr: [],
       labelOptions: [],
       selectedLabelId: "",
       setLabelTime: 0,
       isCheckAllVideo: 1,
+      curRoomVideos:[],
+      popDownArr:[],
+      curCamera:"",
+      showTable:false,
+      showLocChoise:true,
+      activeName:"first",
     };
   },
   watch: {
@@ -252,18 +277,37 @@
     },
     videoDetails: {
       handler(newVal, oldVal) {
-        this.getVideos(newVal);
+        this.getCurVideos(newVal);
       },
       deep: true,
     },
   },
   mounted() {
-    console.log("analyze mount");
     this.renderLabelOpts();
     this.setGuid(1);
-    this.getVideos(this.videoDetails);
+    this.getCurVideos(this.videoDetails);
+    this.getRelatedVideos(this.videoDetails)
   },
   methods: {
+    handleClick(instance){
+      if (instance.name=="second") {
+        this.showTable=true       
+      }else{
+        this.showTable=false
+      }
+    },
+    handleCommand(cmd){
+      this.curCamera = cmd.Camera
+      this.curRoomVideos = this.allCurVideos.filter(item=>{
+        return item.Camera == cmd.Camera
+      })
+      this.curVideo= this.curRoomVideos.find(item=>{
+        return item.UniqeID == this.curVideo.UniqeID
+      })
+       this.$nextTick(() => {
+          _this.$refs[`player_${_this.curVideo.ID}`][0].init();
+        });
+    },
     zeroize(val) {
       return val < 10 ? "0" + val : val;
     },
@@ -273,21 +317,39 @@
         this.refreshCurVideoLabel(this.curVideo);
       }
     },
-    getVideos(video) {
+    getCurVideos(v){
       let _this = this;
-      getRelatedVideoInfo({ UniqeID: video.UniqeID }).then((res) => {
-        console.log(res);
-        res.data.forEach((element) => {
-          element.marks = _this.mergeMarks(element);
-          console.log(element.marks);
-        });
-        _this.curVideo = res.data.find((item) => item.ID == video.ID);
-        //_this.curVideo = res.data[0];
-        _this.videoArrs = res.data;
-        _this.relativeVideos = res.data;
-        this.$nextTick(() => {
+      getCarVideos({
+        TrainNumber:v.TrainNumber,
+        CarNumber:v.CarNumber,
+        Driver1:v.Driver1,
+      }).then(res=>{
+        res.data.forEach(item=>{
+          item.marks = _this.mergeMarks(item)
+        })
+        _this.curVideo=res.data.find((item) => item.ID == v.ID)
+        // debugger
+        _this.videoArrs = res.data.filter(item=> v.UniqeID== item.UniqeID);
+        _this.allCurVideos = res.data;
+        _this.curRoomVideos = _this.allCurVideos.filter(item=>{
+          return item.Camera == "鍙告満瀹�"
+        })
+         this.$nextTick(() => {
           _this.$refs[`player_${_this.curVideo.ID}`][0].init();
         });
+      })
+    },
+    getRelatedVideos(video) {
+      let _this = this;
+      getRelatedVideoInfo({ UniqeID: video.UniqeID }).then((res) => {
+        let arr = []
+        let map = {}
+        res.data.forEach(item=>{
+          this.popDownArr.push(item)
+        })
+        if (this.popDownArr.length) {
+          this.curCamera=this.popDownArr[0].Camera
+        }
       });
     },
     renderLabelOpts() {
@@ -308,8 +370,11 @@
       });
     },
     checkVideo(video, index) {
+      // debugger
       this.refreshCurVideoLabel(video);
       this.curVideo = video;
+      this.videoArrs = this.allCurVideos.filter(item=> video.UniqeID== item.UniqeID);
+
       this.$nextTick(() => {
         this.$refs[`player_${this.curVideo.ID}`][0].init();
       });
@@ -318,6 +383,11 @@
     setGuid(guid) {
       let _this = this;
       this.guid = guid;
+      if (guid==1) {
+        this.showLocChoise=true
+      }else{
+        this.showLocChoise=false
+      }
       // for(var i = 0; i < Math.pow(guid,2); i++){
       //   if(i>this.videoArrs.length-1){
       //       this.videoWrapArr[i] = this.videoArrs[i]
@@ -342,9 +412,9 @@
     submitLabelChecked() {
       let _this = this;
       let tempArr = [];
-      if (this.isCheckAllVideo == 1) {
+      // if (this.isCheckAllVideo == 1) {
         tempArr = this.videoArrs.map((video) => video.ID);
-      }
+      // }
       let desc = this.labelCheckedList.map((lableId) => {
         for (let label of this.labelOptions) {
           if (label.ID == lableId) {
@@ -355,9 +425,7 @@
 
       let query = {
         ID: this.selectedLabelId,
-        ParentID: this.isCheckAllVideo
-          ? tempArr.join(",")
-          : this.curVideo.ID + "",
+        ParentID:  tempArr.join(","),
         ParentUniqID: this.curVideo.UniqeID + "",
         Time: Math.round(this.setLabelTime) + "",
         Codes: this.labelCheckedList.join(","),
@@ -443,15 +511,30 @@
 <style lang="scss" >
 .video-analyze-content {
   margin: 0;
-  padding: 15px;
+    padding: 6px 15px 15px 15px;
+
   text-align: left;
   .content-top {
     margin-bottom: 10px;
     .grid-check {
       text-align: right;
-      margin-bottom: 6px;
+         margin-bottom: 3px;
+      position: relative;
+      .el-dropdown{
+        position: absolute;
+        top: -4px;
+        left: 200px;
+      }
+      .el-dropdown-link {
+        cursor: pointer;
+        color: #409EFF;
+      }
+      .el-icon-arrow-down {
+        font-size: 12px;
+      }
       span {
-        font-size: 20px;
+          font-size: 17px;
+
         color: #cacaca;
         padding-left: 12px;
         cursor: pointer;
@@ -463,8 +546,14 @@
     .video-area {
       display: flex;
       .info-list {
-        width: 160px;
+       width: 180px;
+
         margin-right: 10px;
+        .v-name-block{
+          height: 484px;
+
+            overflow: auto;
+        }
         .video-name {
           cursor: pointer;
           color: #777;
@@ -478,14 +567,16 @@
         }
       }
       .players {
-        width: 960px;
-        height: 540px;
+          width: 940px;
+
+        height: 530px;
         display: flex;
         flex-wrap: wrap;
         .video-item {
           background: black;
           border: 1px solid #fff;
           box-sizing: border-box;
+          
           & > div {
             height: 100%;
             & > div {
@@ -508,6 +599,14 @@
     display: flex;
     .bot-left {
       flex: 1;
+      padding: 0px 15px 8px 15px;
+      background: #fff;
+    border-radius: 3px;
+    .el-tabs__header {
+    padding: 0;
+    position: relative;
+    margin: 0 0 10px;
+}
       .flex-box {
         align-items: baseline;
         label {
@@ -537,6 +636,10 @@
         height: 200px;
         overflow-y: auto;
       }
+      .fixed-height-box2 {
+        height: 228px;
+        overflow-y: auto;
+      }
     }
     .bot-right {
       width: 210px;
@@ -551,7 +654,7 @@
   .label-dialog {
     .el-dialog {
       width: 700px !important;
-      height: 670px !important;
+      height: 558px  !important;
       .el-dialog__header {
         height: 20px;
       }

--
Gitblit v1.8.0