【前端】智能库房综合管理系统前端项目
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

<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>