main
徐景良 2025-07-12 16:02:39 +08:00
parent cd1e0cd8ba
commit 77a3aade09
4 changed files with 73 additions and 24 deletions

View File

@ -1,7 +1,7 @@
<template> <template>
<div class="container"> <div class="container">
<div class="title"> <div class="title" @click="closeAirLine()">
<LeftOutlined @click="checkAriLine(null)" v-show="props.title=='线'" /> {{props.title}} <LeftOutlined v-show="props.title=='线'" /> {{props.title}}
</div> </div>
<div class="filter-container"> <div class="filter-container">
@ -188,7 +188,7 @@
import { getAirLineList,uploadXmlFile,deleteAirLine,addAirLine} from '@/api/sys/workplan'; import { getAirLineList,uploadXmlFile,deleteAirLine,addAirLine} from '@/api/sys/workplan';
import { Modal, message } from 'ant-design-vue'; import { Modal, message } from 'ant-design-vue';
const emit = defineEmits(["checkAriLine","createAirLine","previewAirLine"]) const emit = defineEmits(["checkAriLine","createAirLine","previewAirLine","closeAirLine"])
const props = defineProps(["title"]) const props = defineProps(["title"])
@ -199,6 +199,11 @@
import { XMLParser, XMLBuilder } from 'fast-xml-parser'; import { XMLParser, XMLBuilder } from 'fast-xml-parser';
// 线
const closeAirLine = () => {
emit("closeAirLine");
}
// //
const importAirLineShow = ref(false); const importAirLineShow = ref(false);
const fileList = ref([]); const fileList = ref([]);
@ -405,6 +410,7 @@
.title{ .title{
padding:15px; padding:15px;
color:#fff; color:#fff;
cursor:pointer;
} }
.filter-container{ .filter-container{
padding:0px 15px; padding:0px 15px;
@ -436,7 +442,7 @@
display:flex; display:flex;
font-size:14px; font-size:14px;
border-top:1px solid rgba(204, 204, 204, 0.219) ; border-top:1px solid rgba(204, 204, 204, 0.219) ;
height: 100%; height: calc( 100% - 120px);
} }
.file-container{ .file-container{

View File

@ -1,6 +1,6 @@
<template> <template>
<div> <div class="container">
<div class="title"> <div class="title" @click="closeAirCraft()">
<div style="flex:1;"> <div style="flex:1;">
<LeftOutlined @click="checkAriLine(null);"/> &nbsp; 选择飞行器 <LeftOutlined @click="checkAriLine(null);"/> &nbsp; 选择飞行器
</div> </div>
@ -50,12 +50,16 @@
import {ref,defineEmits} from 'vue' import {ref,defineEmits} from 'vue'
import { getUavPageList,getPortList } from '@/api/sys/workplan'; import { getUavPageList,getPortList } from '@/api/sys/workplan';
const emit = defineEmits(["checkAriLine"]) const emit = defineEmits(["checkAriLine","closeAirCraft"])
const checkAriLine = (item)=> { const checkAriLine = (item)=> {
emit("checkAriLine",item); emit("checkAriLine",item);
} }
const closeAirCraft = () => {
emit("closeAirCraft");
}
const ariLineList = ref([]) const ariLineList = ref([])
const pageQuery = ref({ const pageQuery = ref({
@ -73,11 +77,19 @@
</script> </script>
<style scoped> <style scoped>
.container{
width:100%;
height:100%;
background: #0D0E15;
box-shadow: 0px 10px 30px 0px rgba(0,0,6,0.15), 0px 10px 30px 1px rgba(0,0,6,0.15), inset 0px 0px 20px 8px rgba(58,87,232,0.73);
border-radius: 6px;
}
.title{ .title{
padding:15px; padding:15px;
color:#fff; color:#fff;
font-size:14px; font-size:14px;
display:flex; display:flex;
cursor:pointer;
} }
.filter-container{ .filter-container{
padding:0px 15px; padding:0px 15px;
@ -138,13 +150,15 @@
flex:1; flex:1;
} }
.ari-line{ .ari-line{
background:#3F4150;
color:#fff; color:#fff;
padding:5px 10px; padding:5px 10px;
margin-bottom:10px; margin-bottom:10px;
position:relative; position:relative;
font-size: 13px; font-size: 13px;
border-radius: 3px; border-radius: 3px;
background: linear-gradient( 132deg, #323D62 0%, #525F83 100%);
box-shadow: 0px 10px 30px 0px rgba(0,0,6,0.15);
border-radius: 10px;
} }
.ari-line::before{ .ari-line::before{

View File

@ -39,8 +39,8 @@
<div class="select-item" v-show="submitForm.airLineId"> <div class="select-item" v-show="submitForm.airLineId">
<div class="item-name">{{submitForm.taskAirLineName}}</div> <div class="item-name">{{submitForm.taskAirLineName}}</div>
<div class="item-operate"> <div class="item-operate" @click="selectAriLine">
<MoreOutlined @click="selectAriLine"/> <MoreOutlined />
</div> </div>
</div> </div>
</a-form-item> </a-form-item>
@ -53,8 +53,8 @@
<div class="select-item" v-show="submitForm.taskDronePort"> <div class="select-item" v-show="submitForm.taskDronePort">
<div class="item-name">{{submitForm.taskDronePortName}}</div> <div class="item-name">{{submitForm.taskDronePortName}}</div>
<div class="item-operate"> <div class="item-operate" @click="selectAircraft">
<MoreOutlined @click="selectAircraft" /> <MoreOutlined />
</div> </div>
</div> </div>
@ -193,7 +193,7 @@ const labelCol = { span: 24 };
const wrapperCol = { span: 24 }; const wrapperCol = { span: 24 };
const props = defineProps(["checkedAriLine","checkedDronePort","formData"]); const props = defineProps(["checkedAriLine","checkedDronePort","formData"]);
const visible = ref(true); const visible = ref(false);
const handleOk = ()=>{ const handleOk = ()=>{
@ -415,7 +415,7 @@ const togglePopover = (e)=> {
background: #0D0E15; background: #0D0E15;
box-shadow: 0px 10px 30px 0px rgba(0,0,6,0.15), 0px 10px 30px 1px rgba(0,0,6,0.15), inset 0px 0px 20px 8px rgba(58,87,232,0.73); box-shadow: 0px 10px 30px 0px rgba(0,0,6,0.15), 0px 10px 30px 1px rgba(0,0,6,0.15), inset 0px 0px 20px 8px rgba(58,87,232,0.73);
border-radius: 6px; border-radius: 6px;
position:relative;
} }
.title{ .title{
padding:15px 15px; padding:15px 15px;

View File

@ -4,28 +4,47 @@
<Map :workPlanFormShow="workPlanFormShow" :airRoute="airRoute" @exitDraw="exitDraw" @flyToThere="flyToThere" :wayline="wayline" :waylineInfo="waylineInfo"></Map> <Map :workPlanFormShow="workPlanFormShow" :airRoute="airRoute" @exitDraw="exitDraw" @flyToThere="flyToThere" :wayline="wayline" :waylineInfo="waylineInfo"></Map>
</div> </div>
<!-- 工作计划列表 --> <div style="position:absolute;top:20px;left:20px;z-index:1;display:flex;gap:15px;">
<div v-show="planListShow" style="width:360px;position:absolute;top:20px;left:20px;z-index:1;height: calc( 100vh - 144px);overflow-y:hidden;">
<planList :planListShow="planListShow" @planDetail="planDetail" @createWorkPlan="toCreateWorkPlan" ></planList> <!-- 工作计划列表 -->
<div v-if="planListShow" style="width:360px;height: calc( 100vh - 144px);flex:1;">
<planList :planListShow="planListShow" @planDetail="planDetail" @createWorkPlan="toCreateWorkPlan" ></planList>
</div>
<!-- 创建计划 -->
<div v-if="workPlanFormShow" style="width:360px;height: calc( 100vh - 144px);flex:1;">
<createWorkPlan :formData="formData" @successCreatePlan="successCreatePlan" @cancleCraete="cancleCraete" @selectAircraft="selectAircraft" @selectAriLine="selectAriLine" :checkedAriLine="checkedAriLine" :checkedDronePort="checkedDronePort"></createWorkPlan>
</div>
<!-- 航线库 -->
<div v-if="ariLineShow" style="width:566px;height: calc( 100vh - 144px);flex:1;">
<airLineList :title="'选择航线'" @checkAriLine="checkAriLine" @previewAirLine="previewAirLine" @createAirLine="handlerCreateAirLine" @closeAirLine="closeAirLine"></airLineList>
</div>
<!-- 设备 -->
<div v-if="aircraftShow" style="width:340px;height: calc( 100vh - 144px);flex:1;">
<aircraft @checkAriLine="checkDronePort" @closeAirCraft="closeAirCraft" ></aircraft>
</div>
</div> </div>
<!-- 创建计划弹窗 --> <!-- 创建计划弹窗 -->
<div v-if="workPlanFormShow" style="width:380px;position:absolute;top:30px;left:30px;z-index:1;height: calc( 100vh - 164px);overflow-y:hidden;"> <!-- <div v-if="workPlanFormShow" style="width:380px;position:absolute;top:30px;left:30px;z-index:1;height: calc( 100vh - 164px);overflow-y:hidden;">
<createWorkPlan :formData="formData" @successCreatePlan="successCreatePlan" @cancleCraete="cancleCraete" @selectAircraft="selectAircraft" @selectAriLine="selectAriLine" :checkedAriLine="checkedAriLine" :checkedDronePort="checkedDronePort"></createWorkPlan> <createWorkPlan :formData="formData" @successCreatePlan="successCreatePlan" @cancleCraete="cancleCraete" @selectAircraft="selectAircraft" @selectAriLine="selectAriLine" :checkedAriLine="checkedAriLine" :checkedDronePort="checkedDronePort"></createWorkPlan>
</div> </div> -->
<!-- 航线库 --> <!-- 航线库 -->
<div v-if="ariLineShow" style="width:566px;position:absolute;top:30px;left:440px;z-index:1;height: calc( 100vh - 164px);overflow-y:hidden;"> <!-- <div v-if="ariLineShow" style="width:566px;position:absolute;top:30px;left:440px;z-index:1;height: calc( 100vh - 164px);overflow-y:hidden;">
<airLineList :title="'选择航线'" @checkAriLine="checkAriLine" @previewAirLine="previewAirLine" @createAirLine="handlerCreateAirLine"></airLineList> <airLineList :title="'选择航线'" @checkAriLine="checkAriLine" @previewAirLine="previewAirLine" @createAirLine="handlerCreateAirLine"></airLineList>
</div> </div> -->
<!-- 飞行器 --> <!-- 飞行器 -->
<div v-if="aircraftShow" style="width:340px;background:#0d0e15c1 ;position:absolute;top:30px;left:440px;z-index:1;height: calc( 100vh - 164px);overflow-y:hidden;"> <!-- <div v-if="aircraftShow" style="width:340px;background:#0d0e15c1 ;position:absolute;top:30px;left:440px;z-index:1;height: calc( 100vh - 164px);overflow-y:hidden;">
<aircraft @checkAriLine="checkDronePort" ></aircraft> <aircraft @checkAriLine="checkDronePort" ></aircraft>
</div> </div> -->
<!-- 新建航线 --> <!-- 新建航线 -->
<div v-if="createAirLineShow" style="width:566px;background:#0d0e15c1 ;position:absolute;top:30px;left:440px;z-index:1;height: calc( 100vh - 164px);overflow-y:hidden;"> <div v-if="createAirLineShow" style="width:566px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:1;height: calc( 100vh - 164px);overflow-y:hidden;">
<createAirLine @createAirLine="handlerCreateAirRoute" @cancle="cancleCreateAirLine"></createAirLine> <createAirLine @createAirLine="handlerCreateAirRoute" @cancle="cancleCreateAirLine"></createAirLine>
</div> </div>
@ -70,6 +89,16 @@ const selectAriLine = ()=> {
aircraftShow.value = false; aircraftShow.value = false;
} }
// 线
const closeAirLine = ()=>{
ariLineShow.value = false;
}
//
const closeAirCraft = ()=>{
aircraftShow.value = false;
}
const selectAircraft = ()=>{ const selectAircraft = ()=>{
aircraftShow.value = true; aircraftShow.value = true;
ariLineShow.value = false; ariLineShow.value = false;