From 196f223575c64aaf0b1b5c5f7dfdee391a6e122a Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@iotlink.com>
Date: 星期四, 24 六月 2021 17:31:18 +0800
Subject: [PATCH] 修复关联视频切换的bug

---
 src/pages/shuohuangMonitorAnalyze/components/searchForVideoAnalyze.vue |    5 
 src/pages/shuohuangMonitorAnalyze/components/memberManage.vue          |   75 +++++++++---------
 src/pages/shuohuangMonitorAnalyze/components/videoAnalyze.vue          |  102 ++++++++-----------------
 3 files changed, 74 insertions(+), 108 deletions(-)

diff --git a/src/pages/shuohuangMonitorAnalyze/components/memberManage.vue b/src/pages/shuohuangMonitorAnalyze/components/memberManage.vue
index f254def..72e613a 100644
--- a/src/pages/shuohuangMonitorAnalyze/components/memberManage.vue
+++ b/src/pages/shuohuangMonitorAnalyze/components/memberManage.vue
@@ -232,9 +232,9 @@
 
 <script>
 
-import { getShuohuangDepartTree, getOrganizeTree, getMemberList, updateMemberInfo, addMember, updateUnit, uploadMemberPic, uploadDirectory, uploadFile,downloadFile } from '@/api/shuohuang'
+import { getShuohuangDepartTree, getOrganizeTree, getMemberList, updateMemberInfo, addMember, updateUnit, uploadMemberPic, uploadDirectory, uploadFile, downloadFile } from '@/api/shuohuang'
 export default {
-  data () {
+  data() {
     return {
       publicPath: process.env.BASE_URL,
       CLIP: 'http://192.168.20.113/',
@@ -247,7 +247,7 @@
       menuLeft: 0,
       keyword: '',
       gender: '',
-      genders: [{id:'g3',name:'鍏ㄩ儴'},{ name: '鐢�', id: 'g0' }, { name: '濂�', id: 'g1' }],
+      genders: [{ id: 'g3', name: '鍏ㄩ儴' }, { name: '鐢�', id: 'g0' }, { name: '濂�', id: 'g1' }],
       tableData: [],
       multipleTableSelection: [],
       PageIndex: 1,
@@ -256,7 +256,7 @@
       PageSize: 8,
       organizeData: [],
       checkedOrgID: '',
-      checkedOrgName:"",
+      checkedOrgName: "",
       organizeKeyword: '',
       memberEditDialogVisible: false,
       toggleOrganizeDialogVisible: false,
@@ -274,23 +274,23 @@
       batchImportTableData: [],
     }
   },
-  mounted () {
+  mounted() {
     this.searchLeftTreeData();
     this.getOrganizeTreeData();
     //this.renderMemberTable();
 
   },
   methods: {
-    resetFilter(){
+    resetFilter() {
       this.keyword = '';
       this.gender = '';
       this.renderMemberTable();
     },
-    isPhone (rule, value, callback) {
+    isPhone(rule, value, callback) {
       if (!value) {
         return callback()
       } else if (value.trim()) {
-         var pattern = /^1[345789]\d{9}$/
+        var pattern = /^1[345789]\d{9}$/
         if (pattern.test(value)) {
           return callback()
         }
@@ -304,28 +304,28 @@
       //   return callback(new Error('杈撳叆鐨勬墜鏈哄彿閿欒'))
       // }
     },
-    nodeContextMenu (e, data, node, comp) {
+    nodeContextMenu(e, data, node, comp) {
       this.showMenu = true;
       this.menuTop = e.pageY;
       this.menuLeft = e.pageX;
     },
-    checkOrgNode (a, b, c) {
+    checkOrgNode(a, b, c) {
       this.checkedOrgID = a.id
       this.checkedOrgName = a.label
     },
-    downloadExcel(){
+    downloadExcel() {
       downloadFile().then(function (res) {
         // debugger
-        console.log(res);        
+        console.log(res);
       })
     },
-    updateOrg () {
+    updateOrg() {
       let ids = this.multipleTableSelection.map(row => {
         return row.ID
       });
       let params = {
         DeptID: this.checkedOrgID,
-        DeptName:this.checkedOrgName,
+        DeptName: this.checkedOrgName,
         Users: ids.join(',')
       }
       updateUnit(params).then(res => {
@@ -341,10 +341,10 @@
       })
 
     },
-    tableSelection (val) {
+    tableSelection(val) {
       this.multipleTableSelection = val;
     },
-    memberSave () {
+    memberSave() {
       this.$refs['memberForm'].validate((valid) => {
         if (valid) {
           let params = Object.assign({ DeptID: this.curLeftTreeNode.id }, this.memberEditForm);
@@ -378,15 +378,15 @@
         }
       })
     },
-    delMember (member) {
+    delMember(member) {
       member.IsDel = '1';
       this.memberUpdate(member);
     },
-    editMember (member) {
+    editMember(member) {
       this.memberEditDialogVisible = true;
       this.memberEditForm = member;
     },
-    memberUpdate (member) {
+    memberUpdate(member) {
       updateMemberInfo(member).then(res => {
         if (res.success) {
           this.$notify({
@@ -398,18 +398,18 @@
         }
       })
     },
-    checkNode (a, b, c) {
+    checkNode(a, b, c) {
       if (a.hasOwnProperty('children')) {
         this.curLeftTreeNode = a;
         this.deptId = a.id;
         this.renderMemberTable();
       }
     },
-    handleTableSizeChange (size) {
+    handleTableSizeChange(size) {
       this.PageSize = size;
       this.renderMemberTable();
     },
-    renderMemberTable () {
+    renderMemberTable() {
       let _this = this;
       let params = {
         DeptID: this.deptId,
@@ -423,13 +423,13 @@
         _this.tableTotal = res.total;
       })
     },
-    uploadPic () {
+    uploadPic() {
 
     },
-    uploadDirectoryTrigger () {
+    uploadDirectoryTrigger() {
       this.$refs['directoryInput'].click();
     },
-    importDirectory () {
+    importDirectory() {
       let _this = this;
       //this.$refs['directoryInput'].files //鏂囦欢澶筸ap
       let formData = new FormData;
@@ -444,19 +444,19 @@
       })
     },
 
-    handleRemove () {
+    handleRemove() {
 
     },
-    handleExceed () {
+    handleExceed() {
 
     },
-    batchImport () {
+    batchImport() {
       this.batchImportDialogVisible = true;
     },
-    toggleOrganize () {
+    toggleOrganize() {
       this.toggleOrganizeDialogVisible = true;
     },
-    uploadMemberPicture (params) {
+    uploadMemberPicture(params) {
       let param = new FormData();
       param.append('file', params.file)
       uploadMemberPic(param).then(res => {
@@ -464,7 +464,7 @@
       })
     },
 
-    deepNodeChildren (node) {
+    deepNodeChildren(node) {
       var arr1 = [];
       var arr2 = [];
       if (node.ChildDept && node.ChildDept.length > 0) {
@@ -493,7 +493,7 @@
       }
       return arr1.concat(arr2)
     },
-    getOrganizeTreeData () {
+    getOrganizeTreeData() {
       let _this = this;
       getOrganizeTree().then(res => {
         _this.organizeData = res.data.map(item => {
@@ -506,7 +506,7 @@
         })
       })
     },
-    searchLeftTreeData () {
+    searchLeftTreeData() {
       let _this = this;
       getShuohuangDepartTree().then(res => {
         _this.treeData = res.data.map(item => {
@@ -518,9 +518,12 @@
           return obj
         });
         this.$nextTick(() => {
+
           if (!Object.keys(_this.curLeftTreeNode).length) {
-            _this.curLeftTreeNode = _this.treeData[0];
-            _this.$refs['leftTreeNodes'].setCurrentNode(_this.treeData[0]);
+            if (_this.treeData.length) {
+              _this.curLeftTreeNode = _this.treeData[0];
+              _this.$refs['leftTreeNodes'].setCurrentNode(_this.treeData[0]);
+            }
           } else {
             _this.$refs['leftTreeNodes'].setCurrentNode(_this.curLeftTreeNode);
           }
@@ -529,7 +532,7 @@
 
       })
     },
-    addMember () {
+    addMember() {
       this.memberEditDialogVisible = true;
       this.memberEditForm = {};
     },
diff --git a/src/pages/shuohuangMonitorAnalyze/components/searchForVideoAnalyze.vue b/src/pages/shuohuangMonitorAnalyze/components/searchForVideoAnalyze.vue
index 991dfb2..91996a4 100644
--- a/src/pages/shuohuangMonitorAnalyze/components/searchForVideoAnalyze.vue
+++ b/src/pages/shuohuangMonitorAnalyze/components/searchForVideoAnalyze.vue
@@ -237,10 +237,9 @@
           </el-table-column>
 
           <el-table-column label="澶у皬" prop="VideoSize" sortable>
-             <template slot-scope="scope" style="cursor: pointer">
+            <template slot-scope="scope" style="cursor: pointer">
               <div>{{ Math.round((+scope.row.VideoSize) / (1024*1024)) + " MB" }}</div>
             </template>
-
           </el-table-column>
           <el-table-column label="瑙嗛鏃堕棿" prop="VideoDate" sortable></el-table-column>
           <!-- <el-table-column label="鍒涘缓鏃ユ湡" prop="VideoCreateDate" sortable></el-table-column> -->
@@ -601,7 +600,7 @@
               config.showMore = false;
             }
           });
-          console.log(this.optionalConfigs);
+          // console.log(this.optionalConfigs);
         });
       });
     },
diff --git a/src/pages/shuohuangMonitorAnalyze/components/videoAnalyze.vue b/src/pages/shuohuangMonitorAnalyze/components/videoAnalyze.vue
index c72279d..841869c 100644
--- a/src/pages/shuohuangMonitorAnalyze/components/videoAnalyze.vue
+++ b/src/pages/shuohuangMonitorAnalyze/components/videoAnalyze.vue
@@ -14,11 +14,10 @@
           </span>
           <el-dropdown-menu slot="dropdown">
             <el-dropdown-item
-              v-for="(item, index) in popDownArr"
+              v-for="(item, index) in videoArrs"
               :key="index"
               :command="item"
-              >{{ item.CameraPosition }}</el-dropdown-item
-            >
+            >{{ item.CameraPosition }}</el-dropdown-item>
           </el-dropdown-menu>
         </el-dropdown>
 
@@ -54,9 +53,9 @@
             <div
               class="video-name"
               :class="{ current: curVideo.GroupID == video.GroupID }"
-              @click="checkVideo(video, index)"
+              @click="checkVideo(video)"
               v-for="(video, index) in curRoomVideos"
-              :key="video.id"
+              :key="index"
             >
               <i class="el-icon-film"></i>
               <span>{{ video.VideoDate }}</span>
@@ -69,7 +68,7 @@
               class="video-item"
               :ref="`gridVideoItem_${index}`"
               v-for="(item, index) in videoWrapArr"
-              :key="index"
+              :key="item.id"
             >
               <div style="display: none"></div>
               <div class="currentPlayer">
@@ -89,7 +88,7 @@
               class="video-item"
               :ref="`gridVideoItem_${index}`"
               v-for="(item, index) in videoWrapArr"
-              :key="index"
+              :key="item.id"
               @click="checkCurVideo(index)"
               style="position: relative"
               @mouseenter.stop.prevent="videoMouseEnter($event)"
@@ -122,7 +121,7 @@
               <el-tooltip
                 placement="top"
                 v-for="(item, index) in eventMarks"
-                :key="index"
+                :key="item.offset + index"
               >
                 <div slot="content">
                   {{ getTimeStr(item.offset) }}
@@ -137,11 +136,7 @@
                   @click="dotJump(item.offset)"
                 ></div>
               </el-tooltip>
-              <el-tooltip
-                placement="top"
-                v-for="(item, index) in labelMarks"
-                :key="index"
-              >
+              <el-tooltip placement="top" v-for="(item, index) in labelMarks" :key="index">
                 <div slot="content">
                   {{ getTimeStr(item.offset) }}
                   <br />
@@ -210,23 +205,14 @@
                 v-show="isUnusual == 1"
                 type="primary"
                 @click="addLabel(curVideo)"
-                >娣诲姞鏍囨敞</el-button
-              >
+              >娣诲姞鏍囨敞</el-button>
             </div>
             <div class="flex-box fixed-height-box">
               <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="mark" v-for="mark in curVideo.LableLst" :key="mark.ID">
                   <div class="time">
-                    <span>
-                      {{ pad0(Math.floor(mark.Time / 60)) }}:{{
-                        pad0(mark.Time % 60)
-                      }}
-                    </span>
+                    <span>{{ pad0(Math.floor(mark.Time / 60)) }}:{{ pad0(mark.Time % 60) }}</span>
                     <i class="el-icon-edit" @click="editCurLabel(mark)"></i>
                     <i class="el-icon-delete" @click="removeCurLabel(mark)"></i>
                   </div>
@@ -283,19 +269,12 @@
       <div class="label-check">
         <p class="label">闅愭偅闂:</p>
         <el-checkbox-group v-model="labelCheckedList">
-          <el-checkbox
-            v-for="item in labelOptions"
-            :key="item.ID"
-            :label="item.ID"
-            >{{ item.Name }}</el-checkbox
-          >
+          <el-checkbox v-for="item in labelOptions" :key="item.ID" :label="item.ID">{{ item.Name }}</el-checkbox>
         </el-checkbox-group>
       </div>
       <div class="btns">
         <el-button @click="cancelLabelChecked" size="small">鍙栨秷</el-button>
-        <el-button @click="submitLabelChecked" size="small" type="primary"
-          >纭畾</el-button
-        >
+        <el-button @click="submitLabelChecked" size="small" type="primary">纭畾</el-button>
       </div>
     </el-dialog>
   </div>
@@ -375,7 +354,6 @@
       setLabelTime: 0,
       isCheckAllVideo: 1,
       curRoomVideos: [],
-      popDownArr: [],
       curCamera: "",
       showTable: false,
       showLocChoise: true,
@@ -414,9 +392,13 @@
     },
   },
   mounted() {
+
     this.renderLabelOpts();
+
     this.setGuid(1);
+
     this.getCurVideos(this.videoDetails);
+
     this.getRelatedVideos(this.videoDetails);
   },
   destroyed() {
@@ -545,12 +527,14 @@
       }
     },
     handleCommand(cmd) {
+      console.log(cmd)
+      console.log(this.$refs)
+
       let _this = this;
       _this.curVideo = cmd;
       _this.curCamera = _this.curVideo.CameraPosition;
       _this.$nextTick(() => {
-        const a = _this.$refs[`player_${_this.curVideo.id}`]
-        const b = _this.$refs[`player_${_this.curVideo.id}`][0]
+        console.log(_this.$refs)
         _this.$refs[`player_${_this.curVideo.id}`][0].init();
       });
     },
@@ -574,7 +558,11 @@
           item.marks = _this.mergeMarks(item);
         });
 
+        _this.allCurVideos = res.data;
+
         _this.curVideo = res.data.find((item) => item.id == v.id);
+
+        _this.refreshCurVideoLabel(_this.curVideo)
 
         // 璁剧疆涓嬫媺鑿滃崟閫変腑椤�
         _this.curCamera = _this.curVideo.CameraPosition;
@@ -591,9 +579,6 @@
           _this.maxVideoTime = _this.curVideo.VideoTime;
         }
 
-        _this.videoArrs = res.data.filter((item) => v.GroupID == item.GroupID);
-        _this.allCurVideos = res.data;
-        console.log(_this.allCurVideos);
         _this.curRoomVideos = _this.allCurVideos.filter((item) => {
           return item.IsCab == "0";
         });
@@ -606,18 +591,6 @@
         });
       });
     },
-    getRelatedVideos(video) {
-      let _this = this;
-      getRelatedVideoInfo({ GroupID: video.GroupID }).then((res) => {
-        res.data.forEach((item) => {
-          _this.popDownArr.push(item);
-        });
-        // _this.popDownArr = res.data
-        if (_this.popDownArr.length) {
-          _this.curCamera = _this.popDownArr[0].CameraPosition;
-        }
-      });
-    },
     renderLabelOpts() {
       let _this = this;
       getLabelMap().then((res) => {
@@ -625,36 +598,28 @@
       });
     },
     refreshCurVideoLabel(video) {
-      let _this = this;
-      _this.popDownArr = [];
-      getRelatedVideoInfo({ GroupID: video.GroupID }).then((res) => {
-        res.data.forEach((item) => {
-          _this.popDownArr.push(item);
-          if (item.ID === video.ID) {
-            video.LableLst = item.LableLst;
-          }
-        });
-      });
+      let arr = [video]
+      this.videoArrs = arr.concat(this.allCurVideos.filter(v => {
+        return v.GroupID == video.GroupID && v.id != video.id
+      }))
     },
-    checkVideo(video, index) {
+    checkVideo(video) {
+      console.log(video)
       this.refreshCurVideoLabel(video);
       this.curVideo = video;
       this.eventMarks = []
       this.labelMarks = []
       video.marks.forEach((item) => {
-         if (item.type == 0) {
+        if (item.type == 0) {
           this.eventMarks.push(item);
         } else {
           this.labelMarks.push(item);
         }
       })
 
-      this.videoArrs = this.allCurVideos.filter(
-        (item) => video.GroupID == item.GroupID
-      );
       this.$nextTick(() => {
-        const a = this.$refs[`player_${this.curVideo.id}`]
         this.$refs[`player_${this.curVideo.id}`][0].init();
+        console.log(this.$refs)
       });
     },
     setGuid(guid) {
@@ -670,7 +635,6 @@
       this.videoWrapArr = Math.pow(guid, 2);
       this.$nextTick(() => {
         for (var i = 0; i < Math.pow(guid, 2); i++) {
-          console.log(`calc(` + 100 / guid + `% -10px)`);
           this.$refs[`gridVideoItem_${i}`][0].style.width =
             `calc(` + 100 / guid + `%)`;
           this.$refs[`gridVideoItem_${i}`][0].style.height =

--
Gitblit v1.8.0