From b4d2703e653bf702d705b18c20d9edb9066c7c8a Mon Sep 17 00:00:00 2001 From: ZZJ <zzjdsg2300@163.com> Date: 星期三, 03 十一月 2021 17:35:10 +0800 Subject: [PATCH] Merge branch 'master' of http://192.168.5.5:10010/r/web/vue-smart-ai --- src/pages/shuohuangMonitorAnalyze/components/videoAnalyze.vue | 184 ++++++++++++++++++++++----------------------- 1 files changed, 91 insertions(+), 93 deletions(-) diff --git a/src/pages/shuohuangMonitorAnalyze/components/videoAnalyze.vue b/src/pages/shuohuangMonitorAnalyze/components/videoAnalyze.vue index c2349da..5dd7411 100644 --- a/src/pages/shuohuangMonitorAnalyze/components/videoAnalyze.vue +++ b/src/pages/shuohuangMonitorAnalyze/components/videoAnalyze.vue @@ -14,7 +14,7 @@ </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> @@ -52,13 +52,13 @@ <div class="v-name-block"> <div class="video-name" - :class="{ current: curVideo.ID == video.ID }" - @click="checkVideo(video, index)" + :class="{ current: curVideo.GroupID == video.GroupID }" + @click="checkVideo(video)" v-for="(video, index) in curRoomVideos" - :key="video.ID" + :key="index" > <i class="el-icon-film"></i> - <span>{{ video.VideoDate }}</span> + <span>{{ video.StartTime }}</span> </div> </div> </div> @@ -68,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"> @@ -88,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)" @@ -118,7 +118,11 @@ </template> <div class="player-control"> <div class="progress-bar"> - <el-tooltip placement="top" v-for="(item, index) in eventMarks" :key="index"> + <el-tooltip + placement="top" + v-for="(item, index) in eventMarks" + :key="item.offset + index" + > <div slot="content"> {{ getTimeStr(item.offset) }} <br /> @@ -126,6 +130,7 @@ </div> <div class="self-dot" + :class="getColor(item.text)" :style="{ left: (item.offset / maxSecond) * 100 + '%', }" @@ -208,11 +213,7 @@ <div class="mark-list" v-if="!showTable"> <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> @@ -242,7 +243,7 @@ </div> <div> <label>鏃堕棿:</label> - <span>{{ videoDetails.VideoDate }}</span> + <span>{{ videoDetails.StartTime }}</span> </div> <div> <label>鍙告満 | 鍓徃鏈�:</label> @@ -282,9 +283,6 @@ <script> import { - getlstInit, - updateVideoAnalyze, - getlst, getRelatedVideoInfo, getCarVideos, getLabelMap, @@ -332,11 +330,11 @@ filters: { fixPath(str) { if (!str || str == undefined) { - return "" + return ""; } - return str.replace("/opt/vasystem", "") - } + return str.replace("/opt/vasystem", ""); + }, }, data() { return { @@ -354,7 +352,6 @@ setLabelTime: 0, isCheckAllVideo: 1, curRoomVideos: [], - popDownArr: [], curCamera: "", showTable: false, showLocChoise: true, @@ -393,10 +390,14 @@ }, }, mounted() { + this.renderLabelOpts(); + this.setGuid(1); + this.getCurVideos(this.videoDetails); - // this.getRelatedVideos(this.videoDetails); + + this.getRelatedVideos(this.videoDetails); }, destroyed() { this.videoArrs.length = 0; @@ -470,7 +471,6 @@ } else { this.videoArrs.forEach((v, i) => { this.$refs[`player_${v.id}`][0].seek(val); - // this.$refs[`player_${v.ID}`][0].play(); if (i == 0) { let curT = this.$refs[`player_${v.id}`][0].getCurrentTime(); } @@ -525,33 +525,16 @@ } }, handleCommand(cmd) { + console.log(cmd) + console.log(this.$refs) + let _this = this; _this.curVideo = cmd; _this.curCamera = _this.curVideo.CameraPosition; - _this.$nextTick(() => { + console.log(_this.$refs) _this.$refs[`player_${_this.curVideo.id}`][0].init(); }); - // let _this = this; - // console.log(cmd) - // getCarVideos({ - // TrainNumber: cmd.TrainNumber, - // CarNumber: cmd.CarNumber, - // Driver1: cmd.Driver1, - // }).then((res) => { - // _this.allCurVideos = res.data; - // _this.curCamera = cmd.CameraPosition; - // _this.curRoomVideos = _this.allCurVideos.filter((item) => { - // return item.CameraPosition == cmd.CameraPosition; - // }); - // _this.curVideo = _this.curRoomVideos.find((item) => { - // return item.ID == cmd.ID; - // }); - // _this.$nextTick(() => { - // _this.$refs[`player_${_this.curVideo.ID}`][0].init(); - // }); - // }); - }, pad0(val) { return val < 10 ? "0" + val : val; @@ -569,19 +552,15 @@ CarNumber: v.CarNumber, Driver1: v.Driver1, }).then((res) => { - // 濉厖鍗曠獥鍙g殑涓嬫媺鑿滃崟 - res.data.forEach((item) => { - _this.popDownArr.push(item); - }); - // if (_this.popDownArr.length) { - // _this.curCamera = _this.popDownArr[0].CameraPosition; - // } - res.data.forEach((item) => { 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; @@ -598,31 +577,16 @@ _this.maxVideoTime = _this.curVideo.VideoTime; } - _this.videoArrs = res.data.filter((item) => v.GroupID == item.GroupID); - _this.allCurVideos = res.data; _this.curRoomVideos = _this.allCurVideos.filter((item) => { - return item.CameraPosition.indexOf("鍙告満瀹�") >= 0; + return item.IsCab == "0"; }); - _this.$nextTick(() => { _this.$refs[`player_${_this.curVideo.id}`][0].init(); let arr = _this.maxVideoTime.split(":"); - let min = +arr[1], sec = +arr[2]; + let min = +arr[1], + sec = +arr[2]; _this.maxSecond = min * 60 + sec; }); - }); - }, - getRelatedVideos(video) { - let _this = this; - getRelatedVideoInfo({ GroupID: video.GroupID }).then((res) => { - let arr = []; - let map = {}; - res.data.forEach((item) => { - _this.popDownArr.push(item); - }); - if (_this.popDownArr.length) { - _this.curCamera = _this.popDownArr[0].CameraPosition; - } }); }, renderLabelOpts() { @@ -631,23 +595,41 @@ _this.labelOptions = res.data; }); }, - refreshCurVideoLabel(video) { - getRelatedVideoInfo({ GroupID: video.GroupID }).then((res) => { - res.data.forEach((d) => { - if (d.ID === video.ID) { - video.LableLst = d.LableLst; - } - }); - }); + getColor(text){ + if (text.indexOf('杩涘嚭绔�')>-1) { + return 'yellow' + } + if (text.indexOf('淇″彿鏈�')>-1) { + return 'purple' + } + if (text.indexOf('杩囧垎鐩�')>-1) { + return 'blue' + } + return '' }, - checkVideo(video, index) { + refreshCurVideoLabel(video) { + let arr = [video] + this.videoArrs = arr.concat(this.allCurVideos.filter(v => { + return v.GroupID == video.GroupID && v.id != video.id + })) + }, + checkVideo(video) { + console.log(video) this.refreshCurVideoLabel(video); this.curVideo = video; - this.videoArrs = this.allCurVideos.filter( - (item) => video.GroupID == item.GroupID - ); + this.eventMarks = [] + this.labelMarks = [] + video.marks.forEach((item) => { + if (item.type == 0) { + this.eventMarks.push(item); + } else { + this.labelMarks.push(item); + } + }) + this.$nextTick(() => { this.$refs[`player_${this.curVideo.id}`][0].init(); + console.log(this.$refs) }); }, setGuid(guid) { @@ -663,14 +645,11 @@ 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 = `calc(` + 100 / guid + `%)`; - // this.$refs["playerWrap"].offsetHeight / guid + "px"; } - // console.log(this.$refs[`player_${this.videoArrs[index].ID}`]); }); }, cancelLabelChecked() { @@ -683,9 +662,13 @@ submitLabelChecked() { let _this = this; let tempArr = []; + let isAdd = false tempArr = this.videoArrs.map((video) => video.id); let desc = this.labelCheckedList.map((lableId) => { for (let label of this.labelOptions) { + if (label.Name=='鏈墜姣�') { + isAdd=true + } if (label.ID == lableId) { return label.Name; } @@ -718,6 +701,11 @@ // 鏍囨敞 _this.setMarks(_this.curVideo); _this.$parent.$parent.filterSearchData(); + + if (isAdd) { + let num = sessionStorage.getItem("shoubiNum") + sessionStorage.setItem("shoubiNum", num?+num+1:1 ) + } } else { _this.$message.warning(rsp.msg); } @@ -732,16 +720,14 @@ }, editCurLabel(mark) { this.selectedLabelId = mark.ID; - this.labelCheckedList = mark.Codes.split(" ,"); + this.labelCheckedList = mark.Codes.split(","); this.labelDialogVisible = true; }, removeCurLabel(mark) { let _this = this; let obj = { - Desc: mark.Desc, - ParentUniqID: mark.ParentUniqID, - Time: mark.Time, - ParentID: mark.ParentID + ID: mark.ID, + VideoIds: mark.VideoIds, }; delLabel(obj).then((rsp) => { if (rsp && rsp.success) { @@ -765,7 +751,7 @@ }, mergeMarks(videoInfo) { if (!videoInfo.EventLst || !videoInfo.LableLst) { - console.log("mergeMarks data null") + console.log("mergeMarks data null"); return; } @@ -904,17 +890,29 @@ height: 8px; width: 6px; z-index: 1; - background-color: lightcoral; + background-color: yellowgreen; cursor: pointer; -webkit-transform: translateX(-50%); transform: translateX(-50%); + } + .yellow{ + background-color: yellow; + + } + .purple{ + background-color: purple; + + } + .blue{ + background-color: blue; + } .label-dot { position: absolute; height: 8px; width: 6px; z-index: 1; - background-color: yellowgreen; + background-color: lightcoral; cursor: pointer; -webkit-transform: translateX(-50%); transform: translateX(-50%); -- Gitblit v1.8.0