From 0b737708e696c45720499759b5c31aced87fdbb6 Mon Sep 17 00:00:00 2001 From: zhangzengfei <zhangzengfei@iotlink.com> Date: 星期三, 07 七月 2021 14:10:03 +0800 Subject: [PATCH] merge master --- src/pages/shuohuangMonitorAnalyze/components/videoAnalyze.vue | 254 +++++++++++++++++++++++--------------------------- 1 files changed, 118 insertions(+), 136 deletions(-) diff --git a/src/pages/shuohuangMonitorAnalyze/components/videoAnalyze.vue b/src/pages/shuohuangMonitorAnalyze/components/videoAnalyze.vue index c1a6ea0..002a367 100644 --- a/src/pages/shuohuangMonitorAnalyze/components/videoAnalyze.vue +++ b/src/pages/shuohuangMonitorAnalyze/components/videoAnalyze.vue @@ -9,15 +9,15 @@ v-show="showLocChoise" > <span class="el-dropdown-link"> - {{ curCamera }}<i class="el-icon-arrow-down el-icon--right"></i> + {{ 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" + v-for="(item, index) in videoArrs" :key="index" :command="item" - >{{ item.Camera }}</el-dropdown-item - > + >{{ item.CameraPosition }}</el-dropdown-item> </el-dropdown-menu> </el-dropdown> @@ -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"> @@ -76,9 +76,9 @@ @pause="isStop = true" @play="isStop = false" @timeupdate="timeUpdate" - :source="curVideo.VideoPath" + :source="curVideo.VideoPath | fixPath" :markers="curVideo.marks" - :ref="`player_${curVideo.ID}`" + :ref="`player_${curVideo.id}`" /> </div> </div> @@ -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)" @@ -97,7 +97,7 @@ <!-- --> <template v-if="index <= videoArrs.length - 1"> <div class="video-box-top"> - <b>{{ videoArrs[index].Camera }}</b> + <b>{{ videoArrs[index].CameraPosition }}</b> </div> <div :class="{ @@ -106,11 +106,11 @@ > <ali-player @timeupdate="timeUpdate(e, index)" - :source="videoArrs[index].VideoPath" + :source="videoArrs[index].VideoPath | fixPath" :markers="videoArrs[index].marks" @pause="isStop = true" @play="isStop = false" - :ref="`player_${videoArrs[index].ID}`" + :ref="`player_${videoArrs[index].id}`" /> </div> </template> @@ -121,10 +121,12 @@ <el-tooltip placement="top" v-for="(item, index) in eventMarks" - :key="index" + :key="item.offset + index" > <div slot="content"> - {{ getTimeStr(item.offset) }}<br />{{ item.text }} + {{ getTimeStr(item.offset) }} + <br /> + {{ item.text }} </div> <div class="self-dot" @@ -134,13 +136,11 @@ @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 />{{ item.text }} + {{ getTimeStr(item.offset) }} + <br /> + {{ item.text }} </div> <div class="label-dot" @@ -161,7 +161,7 @@ @mouseover.native="intoBar" @change="progressChange" ></el-slider> - </div> + </div> <div class="control-zone"> <span class="time">{{ curPlayTime }} / {{ maxVideoTime }}</span> <div class="play-btn"> @@ -205,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> @@ -230,12 +221,12 @@ </div> </div> </div> - </div></el-tab-pane - > + </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-tab-pane label="鍏噷鏍�" name="second"></el-tab-pane> </el-tabs> </div> <div class="bot-right block"> @@ -251,7 +242,7 @@ </div> <div> <label>鏃堕棿:</label> - <span>{{ videoDetails.VideoDate }}</span> + <span>{{ videoDetails.StartTime }}</span> </div> <div> <label>鍙告満 | 鍓徃鏈�:</label> @@ -274,23 +265,16 @@ <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"> - <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> @@ -298,9 +282,6 @@ <script> import { - getlstInit, - updateVideoAnalyze, - getlst, getRelatedVideoInfo, getCarVideos, getLabelMap, @@ -345,6 +326,15 @@ type: Object, }, }, + filters: { + fixPath(str) { + if (!str || str == undefined) { + return ""; + } + + return str.replace("/opt/vasystem", ""); + }, + }, data() { return { guid: 1, @@ -361,7 +351,6 @@ setLabelTime: 0, isCheckAllVideo: 1, curRoomVideos: [], - popDownArr: [], curCamera: "", showTable: false, showLocChoise: true, @@ -400,9 +389,13 @@ }, }, mounted() { + this.renderLabelOpts(); + this.setGuid(1); + this.getCurVideos(this.videoDetails); + this.getRelatedVideos(this.videoDetails); }, destroyed() { @@ -438,23 +431,23 @@ playAll() { this.showPlayBtn = false; if (this.guid == 1) { - this.$refs[`player_${this.curVideo.ID}`][0].play(); + this.$refs[`player_${this.curVideo.id}`][0].play(); this.maxDuration = this.$refs[ - `player_${this.curVideo.ID}` + `player_${this.curVideo.id}` ][0].getDuration(); } else { this.videoArrs.forEach((v) => { - this.$refs[`player_${v.ID}`][0].play(); + this.$refs[`player_${v.id}`][0].play(); }); } }, pauseAll() { this.showPlayBtn = true; if (this.guid == 1) { - this.$refs[`player_${this.curVideo.ID}`][0].pause(); + this.$refs[`player_${this.curVideo.id}`][0].pause(); } else { this.videoArrs.forEach((v) => { - this.$refs[`player_${v.ID}`][0].pause(); + this.$refs[`player_${v.id}`][0].pause(); }); } }, @@ -466,8 +459,8 @@ this.showPlayBtn = false; let that = this; if (this.guid == 1) { - this.$refs[`player_${this.curVideo.ID}`][0].pause(); - this.$refs[`player_${this.curVideo.ID}`][0].seek(val); + this.$refs[`player_${this.curVideo.id}`][0].pause(); + this.$refs[`player_${this.curVideo.id}`][0].seek(val); // this.$refs[`player_${this.curVideo.ID}`][0].play(); setTimeout(() => { let curT = that.$refs[ @@ -476,10 +469,9 @@ }, 600); } else { this.videoArrs.forEach((v, i) => { - this.$refs[`player_${v.ID}`][0].seek(val); - // this.$refs[`player_${v.ID}`][0].play(); + this.$refs[`player_${v.id}`][0].seek(val); if (i == 0) { - let curT = this.$refs[`player_${v.ID}`][0].getCurrentTime(); + let curT = this.$refs[`player_${v.id}`][0].getCurrentTime(); } }); } @@ -496,11 +488,11 @@ let curT; if (this.guid == 1) { curT = Math.floor( - this.$refs[`player_${this.curVideo.ID}`][0].getCurrentTime() + this.$refs[`player_${this.curVideo.id}`][0].getCurrentTime() ); } else { curT = Math.floor( - this.$refs[`player_${this.videoArrs[index].ID}`][0].getCurrentTime() + this.$refs[`player_${this.videoArrs[index].id}`][0].getCurrentTime() ); } if (curT <= this.curTime) { @@ -532,26 +524,16 @@ } }, handleCommand(cmd) { - let _this = this; + console.log(cmd) + console.log(this.$refs) - getCarVideos({ - TrainNumber: cmd.TrainNumber, - CarNumber: cmd.CarNumber, - Driver1: cmd.Driver1, - }).then((res) => { - _this.allCurVideos = res.data; - _this.curCamera = cmd.Camera; - _this.curRoomVideos = _this.allCurVideos.filter((item) => { - return item.Camera == cmd.Camera; - }); - _this.curVideo = _this.curRoomVideos.find((item) => { - return item.ID == cmd.ID; - }); + let _this = this; + _this.curVideo = cmd; + _this.curCamera = _this.curVideo.CameraPosition; _this.$nextTick(() => { - _this.$refs[`player_${_this.curVideo.ID}`][0].init(); + console.log(_this.$refs) + _this.$refs[`player_${_this.curVideo.id}`][0].init(); }); - }); - }, pad0(val) { return val < 10 ? "0" + val : val; @@ -572,7 +554,16 @@ res.data.forEach((item) => { item.marks = _this.mergeMarks(item); }); - _this.curVideo = res.data.find((item) => item.ID == v.ID); + + _this.allCurVideos = res.data; + + _this.curVideo = res.data.find((item) => item.id == v.id); + + _this.refreshCurVideoLabel(_this.curVideo) + + // 璁剧疆涓嬫媺鑿滃崟閫変腑椤� + _this.curCamera = _this.curVideo.CameraPosition; + _this.curVideo.marks.forEach((item) => { if (item.type == 0) { _this.eventMarks.push(item); @@ -580,35 +571,21 @@ _this.labelMarks.push(item); } }); + if (_this.guid == 1) { _this.maxVideoTime = _this.curVideo.VideoTime; } - _this.videoArrs = res.data.filter((item) => v.UniqeID == item.UniqeID); - _this.allCurVideos = res.data; - _this.curRoomVideos = _this.allCurVideos.filter((item) => { - return item.Camera == "鍙告満瀹�"; - }); + _this.curRoomVideos = _this.allCurVideos.filter((item) => { + return item.IsCab == "0"; + }); _this.$nextTick(() => { - _this.$refs[`player_${_this.curVideo.ID}`][0].init(); + _this.$refs[`player_${_this.curVideo.id}`][0].init(); let arr = _this.maxVideoTime.split(":"); - let min = +arr[0], - sec = +arr[1]; + let min = +arr[1], + sec = +arr[2]; _this.maxSecond = min * 60 + sec; }); - }); - }, - 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() { @@ -618,22 +595,28 @@ }); }, refreshCurVideoLabel(video) { - getRelatedVideoInfo({ UniqeID: video.UniqeID }).then((res) => { - res.data.forEach((d) => { - if (d.ID === video.ID) { - video.LableLst = d.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.videoArrs = this.allCurVideos.filter( - (item) => video.UniqeID == item.UniqeID - ); + 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(); + this.$refs[`player_${this.curVideo.id}`][0].init(); + console.log(this.$refs) }); }, setGuid(guid) { @@ -643,20 +626,17 @@ this.showLocChoise = true; } else { this.showLocChoise = false; - this.$refs[`player_${this.curVideo.ID}`][0].pause(); - this.$refs[`player_${this.curVideo.ID}`][0].seek(0); + this.$refs[`player_${this.curVideo.id}`][0].pause(); + this.$refs[`player_${this.curVideo.id}`][0].seek(0); } 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() { @@ -669,7 +649,7 @@ submitLabelChecked() { let _this = this; let tempArr = []; - tempArr = this.videoArrs.map((video) => video.ID); + tempArr = this.videoArrs.map((video) => video.id); let desc = this.labelCheckedList.map((lableId) => { for (let label of this.labelOptions) { if (label.ID == lableId) { @@ -680,13 +660,12 @@ let query = { ID: this.selectedLabelId, - ParentID: tempArr.join(","), - ParentUniqID: this.curVideo.UniqeID + "", + VideoIds: tempArr.join(","), Time: Math.round(this.setLabelTime) + "", Codes: this.labelCheckedList.join(","), - Desc: desc.join("锛�"), + Desc: desc.join(","), }; - + editLabel(query).then((rsp) => { if (rsp && rsp.success) { _this.labelDialogVisible = false; @@ -715,20 +694,18 @@ this.selectedLabelId = ""; this.labelDialogVisible = true; // 淇濆瓨鐐瑰嚮鏍囨敞鐨勬椂闂� - this.setLabelTime = this.$refs[`player_${video.ID}`][0].getCurrentTime(); + this.setLabelTime = this.$refs[`player_${video.id}`][0].getCurrentTime(); }, 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) { @@ -751,6 +728,11 @@ }); }, mergeMarks(videoInfo) { + if (!videoInfo.EventLst || !videoInfo.LableLst) { + console.log("mergeMarks data null"); + return; + } + const eMarks = videoInfo.EventLst.map((item) => { return { offset: item.SecondsInVideo, @@ -769,7 +751,7 @@ }, setMarks(video) { let marks = this.mergeMarks(video); - this.$refs[`player_${video.ID}`][0].setProgressMarkers(marks); + this.$refs[`player_${video.id}`][0].setProgressMarkers(marks); }, }, }; @@ -886,7 +868,7 @@ height: 8px; width: 6px; z-index: 1; - background-color: lightcoral; + background-color: yellowgreen; cursor: pointer; -webkit-transform: translateX(-50%); transform: translateX(-50%); @@ -896,7 +878,7 @@ 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