|
|
|
|
|
<template>
|
|
|
|
|
|
<div class="realTime bg-white">
|
|
|
|
|
|
<a-tabs default-active-key="1" slot="headerContent" v-model="tabKey" @change="tabsChange">
|
|
|
|
|
|
<a-tab-pane :key="item.streetId.toString()" :tab="item.streetName" v-for="item in realTimeListData"></a-tab-pane>
|
|
|
|
|
|
</a-tabs>
|
|
|
|
|
|
<!-- {{cameras.length}} {{ selectTab.videoStyleRow }} * {{ selectTab.videoStyleColumn }}-->
|
|
|
|
|
|
<a-row :gutter="20">
|
|
|
|
|
|
<a-col
|
|
|
|
|
|
v-for="(item, index) in cameras.slice(0, selectTab.videoStyleRow * selectTab.videoStyleColumn)"
|
|
|
|
|
|
:span="24 / selectTab.videoStyleColumn"
|
|
|
|
|
|
:key="index"
|
|
|
|
|
|
:style="{
|
|
|
|
|
|
height: videoHeight,
|
|
|
|
|
|
marginBottom: ((selectTab.videoStyleRow * selectTab.videoStyleColumn - index - 1) >= selectTab.videoStyleColumn) ? '20px': 0
|
|
|
|
|
|
}"
|
|
|
|
|
|
>
|
|
|
|
|
|
<video-player
|
|
|
|
|
|
v-if="showVideo"
|
|
|
|
|
|
@showModel="showModel(item)"
|
|
|
|
|
|
:src="item.m3u8">
|
|
|
|
|
|
</video-player>
|
|
|
|
|
|
</a-col>
|
|
|
|
|
|
</a-row>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
|
|
|
|
|
|
|
import VideoPlayer from "./VideoPlayer";
|
|
|
|
|
|
export default {
|
|
|
|
|
|
name: "historyMonitoring",
|
|
|
|
|
|
components: {
|
|
|
|
|
|
VideoPlayer
|
|
|
|
|
|
},
|
|
|
|
|
|
data() {
|
|
|
|
|
|
return {
|
|
|
|
|
|
realTimeListData: [],
|
|
|
|
|
|
url: "722e6f04-bb3c-34b1-bcc7-ae9f6cd72e68",
|
|
|
|
|
|
tabKey: "0",
|
|
|
|
|
|
path: [],
|
|
|
|
|
|
player: "",
|
|
|
|
|
|
visible: false,
|
|
|
|
|
|
modelData: [],
|
|
|
|
|
|
clientHeight: 0,
|
|
|
|
|
|
showVideo: false,
|
|
|
|
|
|
};
|
|
|
|
|
|
},
|
|
|
|
|
|
computed: {
|
|
|
|
|
|
selectTab() {
|
|
|
|
|
|
return (this.realTimeListData.filter(item=> item.streetId == this.tabKey)[0] || {})
|
|
|
|
|
|
},
|
|
|
|
|
|
cameras() {
|
|
|
|
|
|
return this.selectTab.cameras || [];
|
|
|
|
|
|
},
|
|
|
|
|
|
videoHeight() {
|
|
|
|
|
|
return (( this.clientHeight - this.selectTab.videoStyleRow * 20 )/ this.selectTab.videoStyleRow ) + 'px'
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
|
|
|
|
|
inject: ['reload'],
|
|
|
|
|
|
mounted() {
|
|
|
|
|
|
this.getRealTimeList()
|
|
|
|
|
|
if (sessionStorage.getItem('tabKey') == null) {
|
|
|
|
|
|
sessionStorage.setItem('tabKey', 0)
|
|
|
|
|
|
}
|
|
|
|
|
|
this.tabKey = sessionStorage.getItem('tabKey');
|
|
|
|
|
|
this.getClientHeight();
|
|
|
|
|
|
// 监听界面尺寸变化
|
|
|
|
|
|
// window.onresize = () => {
|
|
|
|
|
|
// this.getClientHeight();
|
|
|
|
|
|
// }
|
|
|
|
|
|
},
|
|
|
|
|
|
destroyed() {
|
|
|
|
|
|
// window.onresize = null;
|
|
|
|
|
|
},
|
|
|
|
|
|
methods: {
|
|
|
|
|
|
getClientHeight() {
|
|
|
|
|
|
this.clientHeight = this.$el.clientHeight - 80;
|
|
|
|
|
|
},
|
|
|
|
|
|
getRealTimeList(){
|
|
|
|
|
|
this.showVideo = false;
|
|
|
|
|
|
this.$api.httpApi.getRealTimeList({
|
|
|
|
|
|
data: {}
|
|
|
|
|
|
}).then(res => {
|
|
|
|
|
|
if(res.code == 200) {
|
|
|
|
|
|
this.realTimeListData = res.data.reverse();
|
|
|
|
|
|
this.showVideo = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
}).catch(err => {
|
|
|
|
|
|
console.log(err)
|
|
|
|
|
|
})
|
|
|
|
|
|
},
|
|
|
|
|
|
playVideo(id, rtsp) {
|
|
|
|
|
|
// 设置url 播放 ---添加到事件队列在下一个tick执行,避免 TypeError: t.module.postMessage is not a function
|
|
|
|
|
|
this.$nextTick(() => {
|
|
|
|
|
|
this.$refs.video.forEach(video=> {
|
|
|
|
|
|
video.play();
|
|
|
|
|
|
})
|
|
|
|
|
|
})
|
|
|
|
|
|
},
|
|
|
|
|
|
tabsChange(key) {
|
|
|
|
|
|
sessionStorage.setItem('tabKey', key)
|
|
|
|
|
|
this.reload()
|
|
|
|
|
|
},
|
|
|
|
|
|
showModel(item) {
|
|
|
|
|
|
this.$nextTick(() => {
|
|
|
|
|
|
this.$router.push({name: "realTimeMonitoringModel", query: {modelData: item}});
|
|
|
|
|
|
})
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
|
|
|
|
|
};
|
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
<style lang='scss' scoped>
|
|
|
|
|
|
.realTime {
|
|
|
|
|
|
padding: 24px;
|
|
|
|
|
|
}
|
|
|
|
|
|
</style>
|