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.
213 lines
6.0 KiB
213 lines
6.0 KiB
<template>
|
|
<div class="warehouse">
|
|
<div class="warehouse-tab">
|
|
<ul class="warehouse-nav">
|
|
<li :class="{ 'active-nav': activeIndex == 0 }" @click="changeActiveTab(0)">
|
|
<span />
|
|
<p>全景图</p>
|
|
</li>
|
|
<li :class="{ 'active-nav': activeIndex == 1 }" @click="changeActiveTab(1)">
|
|
<span />
|
|
<p>档案库</p>
|
|
</li>
|
|
<li :class="{ 'active-nav': activeIndex == 2 }" @click="changeActiveTab(2)">
|
|
<span />
|
|
<p>整理室</p>
|
|
</li>
|
|
<li :class="{ 'active-nav': activeIndex == 3 }" @click="changeActiveTab(3)">
|
|
<span />
|
|
<p>阅览室</p>
|
|
</li>
|
|
</ul>
|
|
<component :is="comName" />
|
|
</div>
|
|
<!-- 摄像头视频 -->
|
|
<Video ref="camera" />
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import fullView from './fullView/index.vue'
|
|
import archivesStorage from './archivesStorage/index.vue'
|
|
import collateRoom from './collateRoom/index.vue'
|
|
import readRoom from './readRoom/index.vue'
|
|
import Video from './module/video'
|
|
|
|
export default {
|
|
name: 'Warehouse3D',
|
|
components: { fullView, archivesStorage, readRoom, collateRoom, Video },
|
|
data() {
|
|
return {
|
|
activeIndex: 0
|
|
}
|
|
},
|
|
computed: {
|
|
comName: function() {
|
|
if (this.activeIndex === 0) {
|
|
return 'fullView'
|
|
} else if (this.activeIndex === 1) {
|
|
return 'archivesStorage'
|
|
} else if (this.activeIndex === 2) {
|
|
return 'collateRoom'
|
|
} else if (this.activeIndex === 3) {
|
|
return 'readRoom'
|
|
}
|
|
return 'fullView'
|
|
}
|
|
},
|
|
mounted() {
|
|
// 监听 iframe 传来的值
|
|
window.addEventListener('message', this.handleMessageEvent)
|
|
if (localStorage.getItem('isDeseCabinetPage')) {
|
|
this.activeIndex = 1
|
|
localStorage.removeItem('isDeseCabinetPage')
|
|
}
|
|
},
|
|
created() {
|
|
// console.log(1111)
|
|
// this.initWebSocket()
|
|
if (this.$route.params.roomId) {
|
|
this.activeIndex = this.$route.params.roomId
|
|
}
|
|
},
|
|
methods: {
|
|
handleMessageEvent(event) {
|
|
const _this = this
|
|
if (event.data && event.data.data) {
|
|
const data = event.data.data
|
|
if (data === 'A区') {
|
|
_this.activeIndex = 1
|
|
} else if (data === 'B区') {
|
|
_this.activeIndex = 2
|
|
} else if (data === 'C区') {
|
|
_this.activeIndex = 3
|
|
}
|
|
// 摄像头
|
|
if (data.includes('CAM')) {
|
|
_this.$nextTick(() => {
|
|
// ToDo....
|
|
this.$refs.camera.openVideoVisible = true
|
|
// 后期看接口调试变化
|
|
this.$refs.camera.videoSrc = 'https://qiniu.aiyxlib.com/1606275873000.mp4'
|
|
this.$refs.camera.videoTitle = data
|
|
})
|
|
}
|
|
}
|
|
},
|
|
changeActiveTab(data) {
|
|
this.activeIndex = data
|
|
},
|
|
destroyed() {
|
|
window.removeEventListener('message', this.handleMessageEvent)
|
|
}
|
|
// ,
|
|
// initWebSocket() {
|
|
// // 初始化weosocket
|
|
// const url = 'ws://192.168.99.65:7071/webSocket'
|
|
// const wsuri = url // ws地址
|
|
// this.websocket = new WebSocket(wsuri)
|
|
// this.websocket.onopen = this.websocketonopen
|
|
// this.websocket.onerror = this.websocketonerror
|
|
// this.websocket.onmessage = this.websocketonmessage
|
|
// this.websocket.onclose = this.websocketclose
|
|
// },
|
|
// websocketonopen() {
|
|
// console.log('WebSocket连接成功')
|
|
// // co data = {
|
|
// // type: 'user_init',
|
|
// // userid: 'xxx'
|
|
// // }
|
|
// // this.websocket.send(
|
|
// // // 发送数据
|
|
// // JSON.stringify(data)
|
|
// // )
|
|
// },
|
|
// websocketonerror(e) {
|
|
// // 错误
|
|
// // this.initWebSocket()
|
|
// console.log('WebSocket连接发生错误')
|
|
// },
|
|
// websocketonmessage(e) {
|
|
// // 数据接收
|
|
// console.log(e.data)
|
|
// var data = JSON.parse(e.data)
|
|
// this.$store.commit('SET_ws', data)
|
|
// console.log('接收数据')
|
|
// // 操作处理...
|
|
// },
|
|
// websocketsend(agentData) {
|
|
// // 数据发送
|
|
// this.websocket.send(agentData)
|
|
// },
|
|
// websocketclose(e) {
|
|
// // 关闭
|
|
// console.log('WebSocket关闭')
|
|
// console.log(JSON.stringify(e))
|
|
// }
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
.warehouse-tab {
|
|
color: #3298fa;
|
|
.warehouse-nav {
|
|
display: flex;
|
|
position: absolute;
|
|
bottom: 20px;
|
|
left: 20px;
|
|
z-index: 11;
|
|
// width: calc(100vw - 545px);
|
|
width: calc(100vw - 800px);
|
|
height: 90px;
|
|
min-height: 90px;
|
|
padding: 0;
|
|
li {
|
|
display: flex;
|
|
flex-wrap: nowrap;
|
|
align-items: center;
|
|
align-content: center;
|
|
justify-content: center;
|
|
width: 25%;
|
|
height: 90px;
|
|
line-height: 90px;
|
|
text-align: right;
|
|
// padding-right: 20px;
|
|
margin-right: 20px;
|
|
font-size: 18px;
|
|
position: relative;
|
|
cursor: default;
|
|
background: url("~@/assets/images/warehouse_tab_bg.png") no-repeat;
|
|
background-size: 100% 100%;
|
|
span {
|
|
width: 72px;
|
|
height: 52px;
|
|
// position: absolute;
|
|
// left: 60px;
|
|
// top: 20px;
|
|
}
|
|
p {
|
|
// flex: 1;
|
|
text-align: left;
|
|
}
|
|
&:first-child span {
|
|
background: url("~@/assets/images/tab_fullview_logo.png") no-repeat;
|
|
}
|
|
&:nth-child(2) span {
|
|
background: url("~@/assets/images/tab_archives_logo.png") no-repeat;
|
|
}
|
|
&:nth-child(3) span {
|
|
background: url("~@/assets/images/tab_collate_logo.png") no-repeat;
|
|
}
|
|
&:nth-child(4) span {
|
|
background: url("~@/assets/images/tab_read_logo.png") no-repeat;
|
|
}
|
|
}
|
|
.active-nav {
|
|
color: #fff;
|
|
background: url("~@/assets/images/warehouse_tab_active.png") no-repeat;
|
|
background-size: 100% 100%;
|
|
}
|
|
}
|
|
}
|
|
</style>
|