husq
2023-09-27 2c2bc8614c8ea0ce386369eb4924da1e6aa052d1
src/pages/page-web/projects/workspace.vue
@@ -2,37 +2,25 @@
  <div class="project-app-wrapper">
    <div class="left">
      <Sidebar />
      <div class="main-content uranus-scrollbar dark">
      <div class="main-content uranus-scrollbar dark" v-if="!isHidden">
        <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>
      <div class="media-wrapper" v-if="root.$route.name === ERouterName.TASK">
        <TaskPanel />
      </div>
    </div>
  </div>
</template>
<script lang="ts" setup>
import Sidebar from '/@/components/common/sidebar.vue'
import MediaPanel from '/@/components/MediaPanel.vue'
import TaskPanel from '/@/components/TaskPanel.vue'
import GMap from '/@/components/GMap.vue'
import { EBizCode, ERouterName } from '/@/types'
import { EBizCode, ELocalStorageKey, ERouterName } from '/@/types'
import { getRoot } from '/@/root'
import { useMyStore } from '/@/store'
import { useConnectWebSocket } from '/@/hooks/use-connect-websocket'
import { getWebsocketUrl } from '/@/websocket/util/config'
import EventBus from '/@/event-bus'
const root = getRoot()
const store = useMyStore()
const workspace_id = computed(() => store.state.common.projectId || localStorage.getItem(ELocalStorageKey.WorkspaceId))
const messageHandler = async (payload: any) => {
  if (!payload) {
    return
@@ -48,7 +36,10 @@
      break
    }
    case EBizCode.DockOsd: {
      // if (payload.data.sn === workspace_id.value) {
      store.commit('SET_DOCK_INFO', payload.data)
      // console.log(payload.data, 'data')
      // }
      break
    }
    case EBizCode.MapElementCreate: {
@@ -71,8 +62,10 @@
      store.commit('SET_DEVICE_OFFLINE', payload.data)
      break
    }
    case EBizCode.FlightTaskProgress: {
      store.commit('SET_FLIGHT_TASK_PROGRESS', payload.data)
    case EBizCode.FlightTaskProgress:
    case EBizCode.FlightTaskMediaProgress:
    case EBizCode.FlightTaskMediaHighestPriority: {
      EventBus.emit('flightTaskWs', payload)
      break
    }
    case EBizCode.DeviceHms: {
@@ -98,13 +91,27 @@
      })
      break
    }
    case EBizCode.ControlSourceChange:
    case EBizCode.FlyToPointProgress:
    case EBizCode.TakeoffToPointProgress:
    case EBizCode.JoystickInvalidNotify:
    case EBizCode.DrcStatusNotify:
    {
      EventBus.emit('droneControlWs', payload)
      break
    }
    default:
      break
  }
}
const route = useRoute()
const isHidden = computed(() => {
  const flag = !!route.meta?.hidden
  return flag
})
const webSorketUrl = getWebsocketUrl() + '&workspace-id=' + workspace_id.value
// 监听ws 消息
useConnectWebSocket(messageHandler)
useConnectWebSocket(messageHandler, webSorketUrl)
</script>
<style lang="scss" scoped>
@@ -112,42 +119,43 @@
.project-app-wrapper {
  display: flex;
  position: absolute;
  transition: width 0.2s ease;
  height: 100%;
  width: 100%;
  .left {
    width: 400px;
    display: flex;
    // width: 335px;
    flex: 1;
    // flex: 0 0 335px;
    background-color: #232323;
    float: left;
    .main-content {
      flex: 1;
      color: $text-white-basic !important;
      width: 285px;
    }
  }
  .right {
    width: 100%;
    height: 100%;
    flex-grow: 1;
    position: relative;
    .map-wrapper {
      width: 100%;
      height: 100%;
    }
  }
  .main-content {
    flex: 1;
    color: $text-white-basic;
  }
  .media-wrapper {
    position: absolute;
    top: 0;
    bottom: 0;
    z-index: 100;
    background: #f6f8fa;
  }
  .wayline-wrapper {
    position: absolute;
    top: 0;
    bottom: 0;
    z-index: 100;
    background: #f6f8fa;
    padding: 16px;
    .media-wrapper,
    .task-wrapper {
      position: absolute;
      top: 0;
      bottom: 0;
      left: 0;
      right: 0;
      z-index: 100;
      background: #f6f8fa;
    }
  }
}
</style>