From 5beabdb9659f36d7a3fbf4d02e27b3607e6afd16 Mon Sep 17 00:00:00 2001 From: cheng <545895878@qq.com> Date: Sat, 13 Dec 2025 20:47:02 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=8F=96=E6=B6=88=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E5=BD=93=E5=89=8D=E7=BB=98=E5=88=B6=E5=9B=B4=E6=A0=8F=EF=BC=8C?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=B5=B7=E9=A3=9E=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.vue | 51 +++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 49 insertions(+), 2 deletions(-) diff --git a/src/App.vue b/src/App.vue index 504cbf6..d459c09 100644 --- a/src/App.vue +++ b/src/App.vue @@ -69,6 +69,15 @@ {{ isInFence ? '围栏内' : '围栏外' }} + + {{ isFlying ? '飞行中' : '起飞' }} + { ElMessage.success('无人机数据连接成功(模拟模式)') } +// 起飞处理 +const handleTakeoff = () => { + // 检查是否已有围栏 + if (fences.value.length === 0) { + ElMessage.warning('请先绘制电子围栏后再起飞') + return + } + + // 如果未连接,先连接 + if (!wsConnected.value) { + initWebSocket() + } + + // 设置飞行状态 + isFlying.value = true + ElMessage.success('无人机已起飞') +} + // 切换WebSocket连接 const toggleWebSocket = () => { if (wsConnected.value) { @@ -239,6 +267,7 @@ const toggleWebSocket = () => { wsClient = null } wsConnected.value = false + isFlying.value = false // 断开连接时重置飞行状态 ElMessage.info('已断开连接') conn.close(); } else { @@ -543,8 +572,26 @@ const handleDrawComplete = (event) => { addFenceLabel(fences.value[fenceIndex]) } }).catch(() => { - // 用户取消,保持默认名称(已经在上面设置了) - // 不需要额外操作,标签已经用默认名称创建了 + // 用户取消,清除刚刚添加的围栏 + const cancelledFence = fences.value[fenceIndex] + if (cancelledFence) { + // 从地图上移除围栏和标签 + if (cancelledFence.shape) { + try { + const currentMap = cancelledFence.shape.getMap ? cancelledFence.shape.getMap() : null + if (currentMap) { + currentMap.remove(cancelledFence.shape) + if (cancelledFence.label) { + currentMap.remove(cancelledFence.label) + } + } + } catch (error) { + console.error('清除围栏时出错:', error) + } + } + // 从列表中移除 + fences.value.splice(fenceIndex, 1) + } }) // 重置绘制状态