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.

165 lines
3.8 KiB

3 years ago
<template>
<div class="project-app-wrapper">
<div class="left">
<Sidebar />
<div class="main-content uranus-scrollbar dark">
<router-view />
</div>
</div>
<div class="right">
<div class="map-wrapper">
<GMap />
</div>
<div class="media-wrapper" v-if="root.$route.name === ERouterName.MEDIA">
<MediaPanel />
</div>
2 years ago
<div class="task-wrapper" v-if="root.$route.name === ERouterName.TASK">
3 years ago
<TaskPanel />
</div>
</div>
</div>
</template>
<script lang="ts" setup>
3 years ago
import Sidebar from '/@/components/common/sidebar.vue'
import MediaPanel from '/@/components/MediaPanel.vue'
2 years ago
import TaskPanel from '/@/components/task/TaskPanel.vue'
3 years ago
import GMap from '/@/components/GMap.vue'
import { EBizCode, ERouterName } from '/@/types'
import { getRoot } from '/@/root'
import { useMyStore } from '/@/store'
3 years ago
import { useConnectWebSocket } from '/@/hooks/use-connect-websocket'
2 years ago
import EventBus from '/@/event-bus'
3 years ago
const root = getRoot()
3 years ago
const store = useMyStore()
const messageHandler = async (payload: any) => {
if (!payload) {
return
}
3 years ago
switch (payload.biz_code) {
case EBizCode.GatewayOsd: {
store.commit('SET_GATEWAY_INFO', payload.data)
break
}
case EBizCode.DeviceOsd: {
store.commit('SET_DEVICE_INFO', payload.data)
break
}
case EBizCode.DockOsd: {
store.commit('SET_DOCK_INFO', payload.data)
break
}
case EBizCode.MapElementCreate: {
store.commit('SET_MAP_ELEMENT_CREATE', payload.data)
break
}
case EBizCode.MapElementUpdate: {
store.commit('SET_MAP_ELEMENT_UPDATE', payload.data)
break
}
case EBizCode.MapElementDelete: {
store.commit('SET_MAP_ELEMENT_DELETE', payload.data)
break
}
case EBizCode.DeviceOnline: {
store.commit('SET_DEVICE_ONLINE', payload.data)
break
}
case EBizCode.DeviceOffline: {
store.commit('SET_DEVICE_OFFLINE', payload.data)
break
}
2 years ago
case EBizCode.FlightTaskProgress:
case EBizCode.FlightTaskMediaProgress:
case EBizCode.FlightTaskMediaHighestPriority: {
EventBus.emit('flightTaskWs', payload)
3 years ago
break
}
case EBizCode.DeviceHms: {
store.commit('SET_DEVICE_HMS_INFO', payload.data)
break
}
3 years ago
case EBizCode.DeviceReboot:
case EBizCode.DroneOpen:
case EBizCode.DroneClose:
case EBizCode.CoverOpen:
case EBizCode.CoverClose:
case EBizCode.PutterOpen:
case EBizCode.PutterClose:
case EBizCode.ChargeOpen:
case EBizCode.ChargeClose:
case EBizCode.DeviceFormat:
case EBizCode.DroneFormat:
{
store.commit('SET_DEVICES_CMD_EXECUTE_INFO', {
biz_code: payload.biz_code,
timestamp: payload.timestamp,
...payload.data,
})
break
}
2 years ago
case EBizCode.ControlSourceChange:
case EBizCode.FlyToPointProgress:
case EBizCode.TakeoffToPointProgress:
case EBizCode.JoystickInvalidNotify:
case EBizCode.DrcStatusNotify:
{
EventBus.emit('droneControlWs', payload)
break
}
3 years ago
default:
break
}
}
3 years ago
// 监听ws 消息
useConnectWebSocket(messageHandler)
3 years ago
</script>
<style lang="scss" scoped>
@import '/@/styles/index.scss';
.project-app-wrapper {
display: flex;
transition: width 0.2s ease;
height: 100%;
width: 100%;
2 years ago
3 years ago
.left {
display: flex;
2 years ago
width: 335px;
flex: 0 0 335px;
3 years ago
background-color: #232323;
2 years ago
.main-content {
flex: 1;
color: $text-white-basic;
width: 285px;
2 years ago
}
3 years ago
}
2 years ago
3 years ago
.right {
2 years ago
flex-grow: 1;
position: relative;
.map-wrapper{
3 years ago
width: 100%;
height: 100%;
}
2 years ago
.media-wrapper,
.task-wrapper {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
z-index: 100;
background: #f6f8fa;
}
3 years ago
}
}
</style>