华农3D项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

147 lines
3.8 KiB

<template>
<!-- 全景 -->
<div class="page-container">
<div v-show="!isGetClear" class="page-item fullView-left">
<div class="database-title">设备概况</div>
<div class="content-item last-item">
<div class="content-item-title">防火门/卷帘门</div>
<ul class="content-state state-02">
<li class="leakage-warn"><p>3F1#卷帘门</p><span class="leakage-state-tip" /></li>
<li><p>3F2#卷帘门</p><span class="leakage-state-tip" /></li>
<li class="leakage-warn"><p>3F3#卷帘门</p><span class="leakage-state-tip" /></li>
</ul>
</div>
</div>
<!-- 3D -->
<div class="page-3d">
<iframe
id="myIframe"
ref="myIframe"
class="iframe_box"
src="/webThird/index.html"
frameborder="0"
scrolling="no"
style="background-color: transparent;"
/>
</div>
<div v-show="!isGetClear" class="fullView-right" style="justify-content: flex-start;">
<Video ref="cameraList" @view-video="handleViewVideo" />
<Alarm />
</div>
<!-- 查看监控视频 -->
<ViewVideo ref="camera" :dialog-open.sync="open" />
</div>
</template>
<script>
import Video from '@/components/video'
import Alarm from '@/components/alarm'
import ViewVideo from '@/components/viewVideo'
export default {
name: 'PageThirdFloor',
components: { Video, Alarm, ViewVideo },
props: {
isGetClear: {
type: Boolean,
default: false
}
},
data() {
return {
open: false
}
},
computed: {
},
async created() {
window.getIframeLoading = this.getIframeLoading // 把vue实例中的方法引用给window对象
},
activated() {
},
beforeDestroy() {
window.removeEventListener('message', this.handleMessageEvent)
},
mounted() {
// const _this = this
this.iframeWin = this.$refs.myIframe.contentWindow
// inframe 加载完成之后
// document.getElementById('myIframe').onload = function() {
// const data = {
// 'deviceId': 'S004',
// 'isAlarm': true
// }
// _this.deviceState(data)
// }
// 监听 iframe 传来的值
window.addEventListener('message', this.handleMessageEvent)
this.$nextTick(() => {
this.$refs.cameraList.cameraList = []
this.$refs.cameraList.getCameraList('2')
})
},
methods: {
// 加载完成状态传值
getIframeLoading(value) {
// console.log(`我是iframe传过来的参数:${value}`)
if (value === 'false') {
const data = [
{
'deviceId': 'S004',
'isAlarm': true
},
{
'deviceId': 'S002',
'isAlarm': true
}
]
this.deviceState(data)
}
},
// 传入设备状态data / 给iframe传初始值
deviceState(e) {
this.iframeWin.postMessage({
data: e
}, '*')
},
handleMessageEvent(event) {
if (event.data && event.data.data) {
const data = event.data.data
console.log(data)
// 摄像头
if (data.includes('C')) {
this.open = true
this.$nextTick(() => {
this.$refs.camera.camConfig = {
'id': data,
'area_id': '2'
}
this.$refs.camera.getVideoUrl()
})
}
}
},
handleViewVideo(item) {
this.$refs.camera.videoTitle = item.name
this.$refs.camera.openVideo(item.rtsp_url)
}
}
}
</script>
<style lang="scss" scoped>
@import "~@/assets/styles/index.scss";
// .page-3d{
// position: fixed;
// top: 0;
// left: 0;
// width: 100%;
// height: calc(100vh + 336px) !important;
// margin-top: -400px;
// text-align: center;
// }
</style>