|
|
|
@ -1,7 +1,7 @@
|
|
|
|
|
<template>
|
|
|
|
|
<div class="containner">
|
|
|
|
|
<div class="title">
|
|
|
|
|
<LeftOutlined />
|
|
|
|
|
<LeftOutlined @click="backPage" />
|
|
|
|
|
<div>面状航线</div>
|
|
|
|
|
<SaveOutlined/>
|
|
|
|
|
|
|
|
|
@ -32,7 +32,8 @@
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="area-options">
|
|
|
|
|
<div class="area-options" >
|
|
|
|
|
|
|
|
|
|
<div class="item">
|
|
|
|
|
<div class="label">参考起飞点</div>
|
|
|
|
|
<div class="content">
|
|
|
|
@ -42,76 +43,120 @@
|
|
|
|
|
</a-button>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="item flex-column">
|
|
|
|
|
<div class="label">选择镜头</div>
|
|
|
|
|
<div class="label">飞向首航点模式</div>
|
|
|
|
|
<div class="content">
|
|
|
|
|
<a-radio-group button-style="solid" v-model:value="props.polygonAirForm.lensMode">
|
|
|
|
|
<a-radio-button :value="1">红外</a-radio-button>
|
|
|
|
|
<a-radio-button :value="2">可见光</a-radio-button>
|
|
|
|
|
</a-radio-group>
|
|
|
|
|
<div class="radio-box">
|
|
|
|
|
<div v-for="(item,index) in missionConfigOptions.flyToWaylineMode" :key="index"
|
|
|
|
|
:class=" missionConfig.flyToWaylineMode == item.value ? 'radio-item-active':'radio-item'"
|
|
|
|
|
@click="missionConfig.flyToWaylineMode = item.value"
|
|
|
|
|
>
|
|
|
|
|
{{item.label}}
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="description">
|
|
|
|
|
<img src="/map/flyToWaylineMode.png" alt="">
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="item flex-column">
|
|
|
|
|
<div class="label">采集方式</div>
|
|
|
|
|
|
|
|
|
|
<div class="item">
|
|
|
|
|
<div class="label">安全起飞高度</div>
|
|
|
|
|
<div class="content">
|
|
|
|
|
<a-radio-group button-style="solid" v-model:value="props.polygonAirForm.gatherMode">
|
|
|
|
|
<a-radio-button :value="1">正射采集</a-radio-button>
|
|
|
|
|
<a-radio-button :value="2">倾斜采集</a-radio-button>
|
|
|
|
|
</a-radio-group>
|
|
|
|
|
<a-input style="width:100px;" placeholder="" v-model:value="missionConfig.takeOffSecurityHeight"></a-input>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="unit"> m</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="item">
|
|
|
|
|
<div class="label">智能摆动拍摄</div>
|
|
|
|
|
<div class="label">全局航线过渡速度</div>
|
|
|
|
|
<div class="content">
|
|
|
|
|
<a-input style="width:100px;" placeholder="" v-model:value="missionConfig.globalTransitionalSpeed"></a-input>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="unit"> m/s</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="item flex-column">
|
|
|
|
|
<div class="label">航线高度模式</div>
|
|
|
|
|
|
|
|
|
|
<div class="item">
|
|
|
|
|
<div class="label">全局返航高度</div>
|
|
|
|
|
<div class="content">
|
|
|
|
|
<a-radio-group button-style="solid" v-model:value="props.polygonAirForm.heightMode">
|
|
|
|
|
<a-radio-button :value="1">海拔高度</a-radio-button>
|
|
|
|
|
<a-radio-button :value="2">相对起点高度</a-radio-button>
|
|
|
|
|
<a-radio-button :value="3">相对地形高度</a-radio-button>
|
|
|
|
|
</a-radio-group>
|
|
|
|
|
|
|
|
|
|
<div style="margin-top:12px;">
|
|
|
|
|
<a-input-number v-model:value="props.polygonAirForm.height" :min="1" :max="100000" />
|
|
|
|
|
</div>
|
|
|
|
|
<a-input style="width:100px;" placeholder="" v-model:value="missionConfig.droneInfo.droneEnumValue"></a-input>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="unit"> m</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="item flex-column">
|
|
|
|
|
<div class="label">航线结束动作</div>
|
|
|
|
|
<div class="content">
|
|
|
|
|
<div class="radio-box">
|
|
|
|
|
<div v-for="(item,index) in missionConfigOptions.finishAction" :key="index"
|
|
|
|
|
:class=" missionConfig.finishAction == item.value ? 'radio-item-active':'radio-item'"
|
|
|
|
|
@click="missionConfig.finishAction = item.value"
|
|
|
|
|
>
|
|
|
|
|
{{item.label}}
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="item">
|
|
|
|
|
<div class="label">全局航线速度</div>
|
|
|
|
|
|
|
|
|
|
<div class="item flex-column">
|
|
|
|
|
<div class="label">失控是否继续执行航线</div>
|
|
|
|
|
<div class="content">
|
|
|
|
|
<a-input-number style="width:160px" v-model:value="props.polygonAirForm.speed" :min="1" :max="20" />
|
|
|
|
|
<div class="radio-box">
|
|
|
|
|
<div v-for="(item,index) in missionConfigOptions.exitOnRCLost" :key="index"
|
|
|
|
|
:class=" missionConfig.exitOnRCLost == item.value ? 'radio-item-active':'radio-item'"
|
|
|
|
|
@click="missionConfig.exitOnRCLost = item.value"
|
|
|
|
|
>
|
|
|
|
|
{{item.label}}
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="item">
|
|
|
|
|
<div class="label"> 主航线角度</div>
|
|
|
|
|
|
|
|
|
|
<div class="item flex-column" v-if="missionConfig.exitOnRCLost == 'executeLostAction'">
|
|
|
|
|
<div class="label">失控动作类型</div>
|
|
|
|
|
<div class="content">
|
|
|
|
|
<a-input-number width="160px" v-model:value="props.polygonAirForm.angle" :min="0" :max="180" />
|
|
|
|
|
<div class="radio-box">
|
|
|
|
|
<div v-for="(item,index) in missionConfigOptions.executeRCLostAction" :key="index"
|
|
|
|
|
:class=" missionConfig.executeRCLostAction == item.value ? 'radio-item-active':'radio-item'"
|
|
|
|
|
@click="missionConfig.executeRCLostAction = item.value"
|
|
|
|
|
>
|
|
|
|
|
{{item.label}}
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="item">
|
|
|
|
|
<div class="label"> 高程优化</div>
|
|
|
|
|
|
|
|
|
|
<div class="item flex-column">
|
|
|
|
|
<div class="label">高度模式</div>
|
|
|
|
|
<div class="content">
|
|
|
|
|
<div class="radio-box">
|
|
|
|
|
<div v-for="(item,index) in folderConfigOptions.executeHeightMode" :key="index"
|
|
|
|
|
:class=" folder.executeHeightMode == item.value ? 'radio-item-active':'radio-item'"
|
|
|
|
|
@click="folder.executeHeightMode = item.value"
|
|
|
|
|
>
|
|
|
|
|
{{item.label}}
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="description">
|
|
|
|
|
<img src="/map/executeHeightMode.png" alt="">
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="item">
|
|
|
|
|
<div class="label"> 完成动作</div>
|
|
|
|
|
|
|
|
|
|
<div class="label">全局航线飞行速度</div>
|
|
|
|
|
<div class="content">
|
|
|
|
|
|
|
|
|
|
<a-select
|
|
|
|
|
ref="select"
|
|
|
|
|
style="width:160px;"
|
|
|
|
|
v-model:value="props.polygonAirForm.complete"
|
|
|
|
|
>
|
|
|
|
|
<a-select-option :value="1">自动返航</a-select-option>
|
|
|
|
|
<a-select-option :value="2">返回航线起始点悬停</a-select-option>
|
|
|
|
|
<a-select-option :value="3">退出航线模式</a-select-option>
|
|
|
|
|
<a-select-option :value="4">原地降落</a-select-option>
|
|
|
|
|
</a-select>
|
|
|
|
|
<a-input style="width:100px;" placeholder="" v-model:value="folder.autoFlightSpeed"></a-input>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="unit"> m/s</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
@ -120,7 +165,9 @@
|
|
|
|
|
<script lang="ts" setup>
|
|
|
|
|
import {ref,defineEmits,defineProps} from 'vue'
|
|
|
|
|
import { SaveOutlined,LeftOutlined } from '@ant-design/icons-vue';
|
|
|
|
|
const emits = defineEmits(["setFlyPoint"])
|
|
|
|
|
import {missionConfigOptions,folderConfigOptions} from '../waylineConfig/index.ts';
|
|
|
|
|
|
|
|
|
|
const emits = defineEmits(["setFlyPoint","exitDraw"])
|
|
|
|
|
|
|
|
|
|
const props = defineProps(["airInfo","polygonAirForm"])
|
|
|
|
|
|
|
|
|
@ -135,6 +182,46 @@ const setFlyPoint = ()=>{
|
|
|
|
|
emits("setFlyPoint");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 航线基本信息
|
|
|
|
|
const missionConfig = ref(
|
|
|
|
|
{
|
|
|
|
|
"flyToWaylineMode": "safely",
|
|
|
|
|
"finishAction": "goHome",
|
|
|
|
|
"exitOnRCLost": "executeLostAction",
|
|
|
|
|
"executeRCLostAction": "goBack",
|
|
|
|
|
"takeOffSecurityHeight": 20,
|
|
|
|
|
"globalTransitionalSpeed": 15,
|
|
|
|
|
"globalRTHHeight": 100,
|
|
|
|
|
"droneInfo": {
|
|
|
|
|
"droneEnumValue": 100,
|
|
|
|
|
"droneSubEnumValue": 1
|
|
|
|
|
},
|
|
|
|
|
"waylineAvoidLimitAreaMode": 0,
|
|
|
|
|
"payloadInfo": {
|
|
|
|
|
"payloadEnumValue": 99,
|
|
|
|
|
"payloadSubEnumValue": 2,
|
|
|
|
|
"payloadPositionIndex": 0
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// 航点基本信息
|
|
|
|
|
const folder = ref({
|
|
|
|
|
"templateId": 0,
|
|
|
|
|
"executeHeightMode": "WGS84",
|
|
|
|
|
"waylineId": 0,
|
|
|
|
|
"distance": 410.047576904297,
|
|
|
|
|
"duration": 80.3239784240723,
|
|
|
|
|
"autoFlightSpeed": 10,
|
|
|
|
|
"Placemark": []
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 退出绘制
|
|
|
|
|
const backPage = ()=>{
|
|
|
|
|
emits("exitDraw")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
</script>
|
|
|
|
|
<style scoped>
|
|
|
|
|
.container{
|
|
|
|
@ -195,6 +282,32 @@ const setFlyPoint = ()=>{
|
|
|
|
|
gap:10px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.radio-box{
|
|
|
|
|
width:100%;
|
|
|
|
|
display: flex;
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
border:0.5px solid #3B4154 ;
|
|
|
|
|
font-size:12px;
|
|
|
|
|
}
|
|
|
|
|
.radio-box .radio-item{
|
|
|
|
|
flex:1;
|
|
|
|
|
color:#8A92A6 ;
|
|
|
|
|
text-align: center;
|
|
|
|
|
background:#222738 ;
|
|
|
|
|
cursor:pointer;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.radio-box .radio-item-active{
|
|
|
|
|
flex:1;
|
|
|
|
|
color:#fff;
|
|
|
|
|
text-align: center;
|
|
|
|
|
background:#3A57E8 ;
|
|
|
|
|
cursor:pointer;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
::v-deep .ant-radio-group {
|
|
|
|
|
display: block;
|
|
|
|
|
width: 100%;
|
|
|
|
|