直播接口对接,飞行作业剩余页面内容布局
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 809 B |
After Width: | Height: | Size: 715 B |
After Width: | Height: | Size: 722 B |
After Width: | Height: | Size: 663 B |
After Width: | Height: | Size: 672 B |
After Width: | Height: | Size: 260 B |
After Width: | Height: | Size: 47 KiB |
After Width: | Height: | Size: 915 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 716 B |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 1.1 KiB |
@ -0,0 +1,169 @@
|
||||
<template>
|
||||
<div class="remote-debugging" v-if="airportVal" v-drag>
|
||||
<div class="title">
|
||||
<span> 负载控制 </span>
|
||||
<div @click="emits('changeLoadControl')">
|
||||
<CloseOutlined />
|
||||
</div>
|
||||
</div>
|
||||
<div class="content">
|
||||
<div class="content-item">
|
||||
<span>负载控制</span>
|
||||
<a-button>抢夺负载控制</a-button>
|
||||
</div>
|
||||
<div class="content-item">
|
||||
<span>切换相机模式</span>
|
||||
<a-button>抢夺负载控制</a-button>
|
||||
</div>
|
||||
<div class="content-item">
|
||||
<span>拍照</span>
|
||||
<a-button>单拍</a-button>
|
||||
</div>
|
||||
<div class="direction-controller">
|
||||
<img src="@/assets/images/flightoperation/direction_controller.png" alt="" />
|
||||
<div class="direction-controller-top"></div>
|
||||
<div class="direction-controller-right"></div>
|
||||
<div class="direction-controller-bottom"></div>
|
||||
<div class="direction-controller-left"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { onMounted, ref, watch } from 'vue';
|
||||
import { getClient, createConnection } from '@/utils/mqtt';
|
||||
import { CloseOutlined } from '@ant-design/icons-vue';
|
||||
import { vDrag } from '@/utils/drag';
|
||||
|
||||
const emits = defineEmits(['changeLoadControl']);
|
||||
const props = defineProps({
|
||||
airportAllVal: Object,
|
||||
});
|
||||
console.log(props);
|
||||
const checked = ref(false);
|
||||
const airportVal: any = ref({
|
||||
mode_code: 0,
|
||||
wind_speed: 0,
|
||||
environment_temperature: 0,
|
||||
temperature: 0,
|
||||
rainfall: 0,
|
||||
network_state: {
|
||||
rate: 0,
|
||||
},
|
||||
drone_in_dock: 0,
|
||||
drone_charge_state: {
|
||||
capacity_percent: 0,
|
||||
},
|
||||
});
|
||||
watch(
|
||||
() => props.airportAllVal,
|
||||
(val) => {
|
||||
console.log(val);
|
||||
airportVal.value = val.data;
|
||||
},
|
||||
);
|
||||
|
||||
onMounted(() => {});
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.remote-debugging {
|
||||
position: absolute;
|
||||
bottom: 100px;
|
||||
left: 300px;
|
||||
width: 360px;
|
||||
height: 420px;
|
||||
padding: 10px 20px;
|
||||
margin: 10px 0 0 10px;
|
||||
background: #0d0e15;
|
||||
box-shadow:
|
||||
0px 10px 30px 0px rgba(0, 0, 6, 0.15),
|
||||
inset 0px 0px 36px 0px rgba(58, 87, 232, 0.73);
|
||||
border-radius: 6px;
|
||||
backdrop-filter: blur(3px);
|
||||
color: #fff;
|
||||
.title {
|
||||
width: 100%;
|
||||
padding: 10px 0;
|
||||
box-shadow: 0px 10px 30px 0px rgba(0, 0, 6, 0.15);
|
||||
border-bottom: 1px solid #4e5778;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
div {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
.content-title {
|
||||
font-size: 14px;
|
||||
padding: 10px 0;
|
||||
span {
|
||||
font-size: 12px;
|
||||
}
|
||||
}
|
||||
.content-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 10px 0;
|
||||
span {
|
||||
display: block;
|
||||
width: 50%;
|
||||
text-align: right;
|
||||
}
|
||||
button {
|
||||
text-align: center;
|
||||
background: none;
|
||||
font-size: 12px;
|
||||
box-shadow: 0px 10px 30px 0px rgba(0, 0, 6, 0.15);
|
||||
border-radius: 2px;
|
||||
border: 1px solid #3b4154;
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
.content-button {
|
||||
margin-top: 10px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.direction-controller {
|
||||
position: relative;
|
||||
img {
|
||||
margin-left: 60px;
|
||||
width: 200px;
|
||||
}
|
||||
.direction-controller-top {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
position: absolute;
|
||||
top: 20px;
|
||||
left: 130px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.direction-controller-right {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
position: absolute;
|
||||
top: 70px;
|
||||
right: 80px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.direction-controller-bottom {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
position: absolute;
|
||||
bottom: 20px;
|
||||
right: 130px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.direction-controller-left {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
position: absolute;
|
||||
top: 80px;
|
||||
left: 80px;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
@ -0,0 +1,232 @@
|
||||
<template>
|
||||
<div class="remote-debugging" v-if="airportVal" v-drag>
|
||||
<div class="title">
|
||||
<span>
|
||||
远程调试
|
||||
<a-switch v-model:checked="checked" />
|
||||
</span>
|
||||
<div @click="emits('changeRemote')">
|
||||
<CloseOutlined />
|
||||
</div>
|
||||
</div>
|
||||
<div class="content">
|
||||
<div class="content-item">
|
||||
<div class="item-div">
|
||||
<img src="@/assets/images/flightoperation/cover.png" alt="" />
|
||||
<div class="item-text">
|
||||
<span>关闭</span>
|
||||
<i>舱盖</i>
|
||||
</div>
|
||||
<a-button>开启</a-button>
|
||||
</div>
|
||||
<div class="item-div">
|
||||
<img src="@/assets/images/flightoperation/push_od.png" alt="" />
|
||||
<div class="item-text">
|
||||
<span>关闭</span>
|
||||
<i>推杆</i>
|
||||
</div>
|
||||
<a-button>开启</a-button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content-item">
|
||||
<div class="item-div">
|
||||
<img src="@/assets/images/flightoperation/voltage.png" alt="" />
|
||||
<div class="item-text">
|
||||
<span>空闲中</span>
|
||||
<i>机场系统</i>
|
||||
</div>
|
||||
<a-button>重启</a-button>
|
||||
</div>
|
||||
<div class="item-div">
|
||||
<img src="@/assets/images/flightoperation/4g.png" alt="" />
|
||||
<div class="item-text">
|
||||
<span>关闭</span>
|
||||
<i>增强图传</i>
|
||||
</div>
|
||||
<a-button>开启</a-button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content-item">
|
||||
<div class="item-div">
|
||||
<img src="@/assets/images/flightoperation/shut_down.png" alt="" />
|
||||
<div class="item-text">
|
||||
<span>关机</span>
|
||||
<i>飞行器电源</i>
|
||||
</div>
|
||||
<a-button>开机</a-button>
|
||||
</div>
|
||||
<div class="item-div">
|
||||
<img src="@/assets/images/flightoperation/charging.png" alt="" />
|
||||
<div class="item-text">
|
||||
<span>空闲</span>
|
||||
<i>飞行器充电</i>
|
||||
</div>
|
||||
<a-button>开启</a-button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content-item">
|
||||
<div class="item-div">
|
||||
<img src="@/assets/images/flightoperation/conditioner.png" alt="" />
|
||||
<div class="item-text">
|
||||
<span>空闲中</span>
|
||||
<i>空调模式</i>
|
||||
</div>
|
||||
<a-button>切换</a-button>
|
||||
</div>
|
||||
<div class="item-div">
|
||||
<img src="@/assets/images/flightoperation/storage.png" alt="" />
|
||||
<div class="item-text">
|
||||
<span>空闲中</span>
|
||||
<i>机场存储</i>
|
||||
</div>
|
||||
<a-button>格式化</a-button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content-item">
|
||||
<div class="item-div">
|
||||
<img src="@/assets/images/flightoperation/alarm.png" alt="" />
|
||||
<div class="item-text">
|
||||
<span>关闭</span>
|
||||
<i>声光报警</i>
|
||||
</div>
|
||||
<a-button>开启</a-button>
|
||||
</div>
|
||||
<div class="item-div">
|
||||
<img src="@/assets/images/flightoperation/battery.png" alt="" />
|
||||
<div class="item-text">
|
||||
<span>待命模式</span>
|
||||
<i>电池模式</i>
|
||||
</div>
|
||||
<a-button>计划</a-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { onMounted, ref, watch } from 'vue';
|
||||
import { getClient, createConnection } from '@/utils/mqtt';
|
||||
import { CloseOutlined } from '@ant-design/icons-vue';
|
||||
import { vDrag } from '@/utils/drag';
|
||||
|
||||
const emits = defineEmits(['changeRemote']);
|
||||
const props = defineProps({
|
||||
airportAllVal: Object,
|
||||
});
|
||||
console.log(props);
|
||||
const checked = ref(false);
|
||||
const airportVal: any = ref({
|
||||
mode_code: 0,
|
||||
wind_speed: 0,
|
||||
environment_temperature: 0,
|
||||
temperature: 0,
|
||||
rainfall: 0,
|
||||
network_state: {
|
||||
rate: 0,
|
||||
},
|
||||
drone_in_dock: 0,
|
||||
drone_charge_state: {
|
||||
capacity_percent: 0,
|
||||
},
|
||||
});
|
||||
watch(
|
||||
() => props.airportAllVal,
|
||||
(val) => {
|
||||
console.log(val);
|
||||
airportVal.value = val.data;
|
||||
},
|
||||
);
|
||||
onMounted(() => {});
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.remote-debugging {
|
||||
position: absolute;
|
||||
top: 100px;
|
||||
left: 300px;
|
||||
width: 360px;
|
||||
padding: 10px 20px;
|
||||
margin: 10px 0 0 10px;
|
||||
background: #0d0e15;
|
||||
box-shadow:
|
||||
0px 10px 30px 0px rgba(0, 0, 6, 0.15),
|
||||
inset 0px 0px 36px 0px rgba(58, 87, 232, 0.73);
|
||||
border-radius: 6px;
|
||||
backdrop-filter: blur(3px);
|
||||
color: #fff;
|
||||
.title {
|
||||
width: 100%;
|
||||
padding: 10px 0;
|
||||
box-shadow: 0px 10px 30px 0px rgba(0, 0, 6, 0.15);
|
||||
border-bottom: 1px solid #4e5778;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
div {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
.content-title {
|
||||
font-size: 14px;
|
||||
padding: 10px 0;
|
||||
span {
|
||||
font-size: 12px;
|
||||
}
|
||||
}
|
||||
.content-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
border-bottom: 1px solid #4e5778;
|
||||
padding: 10px 0;
|
||||
.item-div {
|
||||
width: 48%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-around;
|
||||
box-shadow: 0px 10px 30px 0px rgba(0, 0, 6, 0.15);
|
||||
border-radius: 2px;
|
||||
border: 1px solid #3b4154;
|
||||
img {
|
||||
width: 20px;
|
||||
}
|
||||
.item-text {
|
||||
width: 60px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
span {
|
||||
font-size: 12px;
|
||||
width: 60px;
|
||||
padding: 4px 0;
|
||||
}
|
||||
i {
|
||||
width: 60px;
|
||||
padding: 4px 0;
|
||||
font-size: 10px;
|
||||
display: block;
|
||||
border-top: 1px solid #4e5778;
|
||||
font-style: normal;
|
||||
}
|
||||
}
|
||||
button {
|
||||
text-align: center;
|
||||
background: none;
|
||||
height: 20px;
|
||||
padding: 0 4px;
|
||||
font-size: 12px;
|
||||
box-shadow: 0px 10px 30px 0px rgba(0, 0, 6, 0.15);
|
||||
border-radius: 2px;
|
||||
border: 1px solid #3b4154;
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
.content-button {
|
||||
margin-top: 10px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
}
|
||||
</style>
|