main
刘妍 2 months ago
parent 4b39b95b64
commit e6f2ed54c4

@ -72,3 +72,12 @@ export const eventsTopicSubscribe = () => {
export const drcUpTopic = () => {
clientSubscribe('thing/product/' + airPort.sn + '/drc/up');
};
export const setTopic = (data) => {
// 发送消息
clientPublish('thing/product/' + airPort.sn + '/property/set', data);
};
export const set_replyTopic = () => {
// 订阅消息
clientSubscribe('thing/product/' + airPort.sn + '/services_reply');
};

@ -1,7 +1,14 @@
<template>
<div>
<div style="width: calc(100vw - 226px); height: calc(100vh - 20px)">
<Map :airRoute="airRoute" @flyToThere="flyToThere" :airPort="airPort" :uavTrack="uavTrack" />
<div class="map-container">
<div class="map-container-content">
<Map
:airRoute="airRoute"
@flyToThere="flyToThere"
:airPort="airPort"
:uavTrack="uavTrack"
/>
</div>
</div>
<SelectComponent @selectChange="changeSelect" />
<AirportInformation
@ -11,6 +18,7 @@
/>
<UAVInformation
:msgData="msgData"
:uavTrack="uavTrack"
@changeLoadControl="changeLoadControl"
@changeFlightControl="changeFlightControl"
@loadLiveStreaming="loadLiveStreaming"
@ -55,6 +63,7 @@
v-if="livePreviewVisible"
:msgData="msgData"
:uavLive="uavLive"
:uavStatus="uavStatus"
:airportLiveVisible="airportLiveVisible"
@loadLiveStreaming="livePreviewVisible = false"
@changeCameraType="changeCameraType"
@ -154,15 +163,17 @@
};
const changeTakeOffForm = (val) => {
takeOffFormVisible.value = false;
if (!val) {
setTimeout(() => {
uavLive.value = true;
livePreviewVisible.value = true;
}, 5000);
}
// if (!val) {
// setTimeout(() => {
// uavLive.value = true;
// livePreviewVisible.value = true;
// }, 5000);
// }
};
const loadLiveStreaming = () => {
const uavStatus = ref();
const loadLiveStreaming = (val) => {
livePreviewVisible.value = !livePreviewVisible.value;
uavStatus.value = val;
};
const changeFlyToForm = () => {
flyToFormVisible.value = false;
@ -207,20 +218,33 @@
topic: topic,
message: rs,
};
if (rs.data.latitude && rs.data.longitude) {
airPort.value.latitude = rs.data.latitude;
airPort.value.longitude = rs.data.longitude;
}
if (topic == topicUAVUrl) {
if (rs.data.latitude && rs.data.longitude) {
uavTrack.value = rs.data;
}
} else if (topic == topicUrl) {
if (rs.data.latitude && rs.data.longitude) {
airPort.value.latitude = rs.data.latitude;
airPort.value.longitude = rs.data.longitude;
}
}
}
});
};
</script>
<style lang="less" scoped>
.map-container {
width: calc(100vw - 252px);
height: calc(90vh - 28px);
}
.map-container-content {
width: calc(100% + 80px);
height: calc(100% + 80px);
position: relative;
top: -40px;
left: -40px;
}
.flightoperation-container {
position: absolute;
top: 0;

@ -70,7 +70,12 @@
} from '@/api/workmanagement/airportMaintenance';
import TCPlayer from 'tcplayer.js';
import 'tcplayer.js/dist/tcplayer.min.css'; //
import { servicesTopic, services_replyTopic, errorName } from '@/utils/debugging/remote';
import {
servicesTopic,
services_replyTopic,
errorName,
setTopic,
} from '@/utils/debugging/remote';
import { useMessage } from '@/hooks/web/useMessage';
import { airPortStore } from '@/store/modules/airport';
import VueDragResize from 'vue-drag-resize/src';
@ -84,13 +89,14 @@
msgData: Object,
uavLive: Boolean,
airportLiveVisible: Boolean,
uavStatus: Number,
});
const pageHeight = document.documentElement.clientHeight;
const pageWidth = document.documentElement.clientWidth;
const width = ref(500);
const height = ref(348);
const left = ref(pageWidth - 800);
const top = ref(pageHeight - 440);
const top = ref(pageHeight - 460);
if (props.airportLiveVisible) {
top.value = pageHeight - 820;
}
@ -234,6 +240,21 @@
player.play();
};
onMounted(() => {
console.log(props.uavStatus);
if (props.uavStatus == 0) {
const querys = {
bid: buildGUID(),
tid: buildGUID(),
timestamp: new Date().getTime(),
data: {
sub_device: {
device_online_status: 1,
},
},
};
console.log(querys);
setTopic(querys);
}
setTimeout(() => {
startLiveFun();
playVideo();
@ -286,7 +307,7 @@
};
//
onBeforeUnmount(() => {
if(player){
if (player) {
player.dispose();
player = null;
}

@ -79,39 +79,39 @@
</div>
</div>
<div class="content-edit">
飞行器夜航灯
经度
<div>
<a-input v-model:value="data.navigationLight" />
<EditOutlined style="color: #0a99eb; cursor: pointer" />
<a-input v-model:value="uavLocation.longitude" readonly />
<!-- <EditOutlined style="color: #0a99eb; cursor: pointer" /> -->
</div>
</div>
<div class="content-edit">
备降转移高
<div>
<a-input v-model:value="data.altitude" readonly />
<a-input v-model:value="uavLocation.latitude" readonly />
</div>
</div>
<div class="content-edit">
<div>
<a-input v-model:value="data.heightPermitted" />
<EditOutlined style="color: #0a99eb; cursor: pointer" />
<a-input v-model:value="uavLocation.height" readonly />
<!-- <EditOutlined style="color: #0a99eb; cursor: pointer" /> -->
</div>
</div>
<div class="content-edit">
<!-- <div class="content-edit">
限远
<div>
<a-input v-model:value="data.limitedRange" />
<EditOutlined style="color: #0a99eb; cursor: pointer" />
</div>
</div>
<div class="content-edit">
</div> -->
<!-- <div class="content-edit">
避障
<div>
<a-input v-model:value="data.obstacleAvoidance" />
<EditOutlined style="color: #0a99eb; cursor: pointer" />
</div>
</div>
</div> -->
<div class="content-button">
<a-button type="primary" style="background: #3a57e8" @click="emits('changeFlightControl')"
>飞行控制</a-button
@ -124,7 +124,7 @@
<a-button
type="primary"
style="background: #3a57e8; width: 100%"
@click="emits('loadLiveStreaming')"
@click="emits('loadLiveStreaming', uavInformation.sub_device.device_online_status)"
>负载直播</a-button
>
</div>
@ -139,10 +139,12 @@
const airPortStoreVal = airPortStore();
const airPort = airPortStoreVal.getAirport;
const uav = airPortStoreVal.getUAV;
const emits = defineEmits(['changeLoadControl', 'changeFlightControl', 'loadLiveStreaming']);
const props = defineProps({
msgData: Object,
uavTrack: Object,
});
const data = reactive({
navigationLight: '关闭',
@ -151,6 +153,11 @@
limitedRange: '500m',
obstacleAvoidance: '500m',
});
const uavLocation = ref({
longitude: 0,
latitude: 0,
height: 0,
});
const uavInformation = ref({
sub_device: {
//
@ -193,6 +200,14 @@
}
},
);
watch(
() => props.uavTrack,
(val) => {
uavLocation.value.longitude = val.longitude;
uavLocation.value.latitude = val.latitude;
uavLocation.value.height = val.height;
},
);
</script>
<style lang="less" scoped>
.airport-information {
@ -257,7 +272,7 @@
input {
background: none;
border: none;
width: 100px;
width: 160px;
text-align: right;
color: #fff;
font-size: 12px;

Loading…
Cancel
Save