|
@@ -1,23 +1,30 @@
|
|
|
<template>
|
|
<template>
|
|
|
- <div v-drag-window class="osd-panel fz12">
|
|
|
|
|
- <div class="drag-title fz16 pl5 pr5 flex-align-center flex-row flex-justify-between"
|
|
|
|
|
- style="border-bottom: 1px solid #515151; height: 10%;">
|
|
|
|
|
- <span>{{ osdInfo.gateway_callsign }}</span>
|
|
|
|
|
- </div>
|
|
|
|
|
- <span>
|
|
|
|
|
- <a style="color: white; position: absolute; top: 5px; right: 5px;" @click="() => osdInfo.visible = false">
|
|
|
|
|
|
|
+ <div v-drag-window class="content">
|
|
|
|
|
+ <div class="content-title">
|
|
|
|
|
+ <div class="drag-title">
|
|
|
|
|
+ <div class="content-title-left">
|
|
|
|
|
+ <img class="content-title-left-icon" :src="taskSrc">
|
|
|
|
|
+ <div>
|
|
|
|
|
+ 无任务
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div>
|
|
|
|
|
+ <span>{{ osdInfo.gateway_callsign }}</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <a class="fz16" style="color: white;" @click="() => osdInfo.visible = false">
|
|
|
<CloseOutlined />
|
|
<CloseOutlined />
|
|
|
</a>
|
|
</a>
|
|
|
- </span>
|
|
|
|
|
|
|
+ </div>
|
|
|
<!-- 机场 -->
|
|
<!-- 机场 -->
|
|
|
- <div class="flex-display" style="border-bottom: 1px solid #515151;">
|
|
|
|
|
- <div class="flex-column flex-align-stretch flex-justify-center" style="width: 60px; background: #2d2d2d;">
|
|
|
|
|
- <a-tooltip :title="osdInfo.model">
|
|
|
|
|
- <div class="flex-column flex-align-center flex-justify-center" style="width: 90%;">
|
|
|
|
|
- <span>
|
|
|
|
|
- <RobotFilled style="font-size: 48px;" />
|
|
|
|
|
- </span>
|
|
|
|
|
- <span class="mt10">Dock</span>
|
|
|
|
|
|
|
+ <div class="content-dock">
|
|
|
|
|
+ <div class="content-dock-left">
|
|
|
|
|
+ <div class="content-dock-left-image">
|
|
|
|
|
+ <a-image :src="dock2Src" :preview="false" />
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <a-tooltip title="Dock 2">
|
|
|
|
|
+ <div class="content-dock-left-image-text">
|
|
|
|
|
+ Dock 2
|
|
|
</div>
|
|
</div>
|
|
|
</a-tooltip>
|
|
</a-tooltip>
|
|
|
</div>
|
|
</div>
|
|
@@ -172,12 +179,15 @@
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
<!-- 飞机-->
|
|
<!-- 飞机-->
|
|
|
- <div class="flex-display">
|
|
|
|
|
- <div class="flex-column flex-align-stretch flex-justify-center" style="width: 60px; background: #2d2d2d;">
|
|
|
|
|
|
|
+ <div class="content-aircraft">
|
|
|
|
|
+ <div class="content-dock-left">
|
|
|
|
|
+ <div class="content-dock-left-image">
|
|
|
|
|
+ <a-image :src="M3tdSrc" :preview="false" v-if="osdInfo.model === 'M3TD'" />
|
|
|
|
|
+ <a-image :src="M30Src" :preview="false" v-else />
|
|
|
|
|
+ </div>
|
|
|
<a-tooltip :title="osdInfo.model">
|
|
<a-tooltip :title="osdInfo.model">
|
|
|
- <div style="width: 90%;" class="flex-column flex-align-center flex-justify-center">
|
|
|
|
|
- <span><a-image :src="M30Src" :preview="false" /></span>
|
|
|
|
|
- <span>M30</span>
|
|
|
|
|
|
|
+ <div class="content-dock-left-image-text">
|
|
|
|
|
+ {{ osdInfo.model }}
|
|
|
</div>
|
|
</div>
|
|
|
</a-tooltip>
|
|
</a-tooltip>
|
|
|
</div>
|
|
</div>
|
|
@@ -331,21 +341,23 @@
|
|
|
<DockControlPanel v-if="dockControlPanelVisible" :sn="osdInfo.gateway_sn" :deviceInfo="deviceInfo"
|
|
<DockControlPanel v-if="dockControlPanelVisible" :sn="osdInfo.gateway_sn" :deviceInfo="deviceInfo"
|
|
|
@close-control-panel="onCloseControlPanel" />
|
|
@close-control-panel="onCloseControlPanel" />
|
|
|
<!-- 飞行指令 -->
|
|
<!-- 飞行指令 -->
|
|
|
- <DroneControlPanel :sn="osdInfo.gateway_sn" :deviceInfo="deviceInfo" :payloads="osdInfo.payloads" />
|
|
|
|
|
|
|
+ <!-- <DroneControlPanel :sn="osdInfo.gateway_sn" :deviceInfo="deviceInfo" :payloads="osdInfo.payloads" /> -->
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<script lang="ts" setup>
|
|
<script lang="ts" setup>
|
|
|
-import { h, computed, reactive, onMounted } from 'vue';
|
|
|
|
|
|
|
+import { computed, reactive, onMounted } from 'vue';
|
|
|
import { message } from 'ant-design-vue';
|
|
import { message } from 'ant-design-vue';
|
|
|
import {
|
|
import {
|
|
|
- BorderOutlined, LineOutlined, CloseOutlined, AimOutlined, ControlOutlined, TrademarkOutlined, ArrowDownOutlined,
|
|
|
|
|
|
|
+ CloseOutlined, ControlOutlined, TrademarkOutlined, ArrowDownOutlined,
|
|
|
ThunderboltOutlined, SignalFilled, GlobalOutlined, HistoryOutlined, CloudUploadOutlined, RocketOutlined,
|
|
ThunderboltOutlined, SignalFilled, GlobalOutlined, HistoryOutlined, CloudUploadOutlined, RocketOutlined,
|
|
|
- FieldTimeOutlined, CloudOutlined, CloudFilled, FolderOpenOutlined, RobotFilled, ArrowUpOutlined, CarryOutOutlined
|
|
|
|
|
|
|
+ FieldTimeOutlined, FolderOpenOutlined, ArrowUpOutlined, CarryOutOutlined
|
|
|
} from '@ant-design/icons-vue'
|
|
} from '@ant-design/icons-vue'
|
|
|
-
|
|
|
|
|
import LivePlayer from '/@/components/livePlayer/index.vue';
|
|
import LivePlayer from '/@/components/livePlayer/index.vue';
|
|
|
-import M30Src from '/@/assets/icons/m30.png';
|
|
|
|
|
|
|
+import taskSrc from '../icons/info/task.svg';
|
|
|
|
|
+import dock2Src from '../icons/info/dock2.png';
|
|
|
|
|
+import M30Src from '../icons/info/m30.png';
|
|
|
|
|
+import M3tdSrc from '../icons/info/m3td.png';
|
|
|
import controllerSrc from '../icons/info/controller.svg';
|
|
import controllerSrc from '../icons/info/controller.svg';
|
|
|
import controllerErrorSrc from '../icons/info/controllerError.svg';
|
|
import controllerErrorSrc from '../icons/info/controllerError.svg';
|
|
|
import networkSrc from '../icons/info/network.svg';
|
|
import networkSrc from '../icons/info/network.svg';
|
|
@@ -382,22 +394,19 @@ const props = withDefaults(defineProps<Props>(), {
|
|
|
|
|
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
-// dock 控制面板
|
|
|
|
|
-const {
|
|
|
|
|
- dockControlPanelVisible,
|
|
|
|
|
- setDockControlPanelVisible,
|
|
|
|
|
- onCloseControlPanel,
|
|
|
|
|
-} = useDockControl()
|
|
|
|
|
|
|
+// 机场控制面板
|
|
|
|
|
+const { dockControlPanelVisible, setDockControlPanelVisible, onCloseControlPanel } = useDockControl()
|
|
|
|
|
|
|
|
// 遥控器信号
|
|
// 遥控器信号
|
|
|
const controllerSignal = computed(() => {
|
|
const controllerSignal = computed(() => {
|
|
|
- const info = props.deviceInfo.gateway;
|
|
|
|
|
- if (info && info.wireless_link) {
|
|
|
|
|
- return info.wireless_link['4g_gnd_quality'];
|
|
|
|
|
- } else {
|
|
|
|
|
- return 0;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ // const info = props.deviceInfo.gateway;
|
|
|
|
|
+ // if (info && info.wireless_link) {
|
|
|
|
|
+ // return info.wireless_link['4g_gnd_quality'];
|
|
|
|
|
+ // } else {
|
|
|
|
|
+ // return 0;
|
|
|
|
|
+ // }
|
|
|
});
|
|
});
|
|
|
|
|
+console.log(props.osdInfo, 'dev');
|
|
|
|
|
|
|
|
// 飞机信号
|
|
// 飞机信号
|
|
|
const aircraftSignal = computed(() => {
|
|
const aircraftSignal = computed(() => {
|
|
@@ -569,6 +578,95 @@ const onStop = async () => {
|
|
|
</script>
|
|
</script>
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
<style lang="scss" scoped>
|
|
|
|
|
+.content {
|
|
|
|
|
+ width: 420px;
|
|
|
|
|
+ color: #fff;
|
|
|
|
|
+ border-radius: 4px;
|
|
|
|
|
+ overflow: visible;
|
|
|
|
|
+ background-color: #232323;
|
|
|
|
|
+ position: absolute;
|
|
|
|
|
+ left: 10px;
|
|
|
|
|
+ top: 10px;
|
|
|
|
|
+
|
|
|
|
|
+ &-title {
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ height: 40px;
|
|
|
|
|
+ padding-right: 5px;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ justify-content: space-between;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ border: 1px solid #535759;
|
|
|
|
|
+
|
|
|
|
|
+ &-left {
|
|
|
|
|
+ width: 80px;
|
|
|
|
|
+ height: 40px;
|
|
|
|
|
+ padding-left: 5px;
|
|
|
|
|
+ background: #4a4d4e;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+
|
|
|
|
|
+ &-icon {
|
|
|
|
|
+ width: 20px;
|
|
|
|
|
+ height: 20px;
|
|
|
|
|
+ margin-right: 5px;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ &-dock {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ border-bottom: 1px solid #535759;
|
|
|
|
|
+ position: relative;
|
|
|
|
|
+
|
|
|
|
|
+ &-left {
|
|
|
|
|
+ width: 80px;
|
|
|
|
|
+ padding: 5px;
|
|
|
|
|
+ background: #3d3d3d;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ flex-direction: column;
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+
|
|
|
|
|
+ &-image {
|
|
|
|
|
+ width: 80%;
|
|
|
|
|
+ margin-bottom: 10px;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ &-text {
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+ white-space: nowrap;
|
|
|
|
|
+ overflow: hidden;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ &-aircraft {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ border-bottom: 1px solid #535759;
|
|
|
|
|
+
|
|
|
|
|
+ &-left {
|
|
|
|
|
+ width: 80px;
|
|
|
|
|
+ padding: 5px;
|
|
|
|
|
+ background: #3d3d3d;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ flex-direction: column;
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+
|
|
|
|
|
+ &-image {
|
|
|
|
|
+ width: 80%;
|
|
|
|
|
+ margin-bottom: 10px;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ &-text {
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+ white-space: nowrap;
|
|
|
|
|
+ overflow: hidden;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
.osd-panel {
|
|
.osd-panel {
|
|
|
position: absolute;
|
|
position: absolute;
|
|
|
margin-left: 10px;
|
|
margin-left: 10px;
|