From 74a5a013e87ef5feacf8538d4a4ea116a56ee8c2 Mon Sep 17 00:00:00 2001 From: xiaosi <2652281683@qq.com> Date: Wed, 23 Sep 2026 15:07:50 +0800 Subject: [PATCH] fix(command): send workflow.one_key_landing for one-key return MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The dock button labelled 一键降落 sent workflow.one_key_land, which the dock does not handle, so it fell through to a generic workflow instead of returning home. Rename it to 一键返航 and resolve the shared label by record kind: dock -> workflow.one_key_landing, drone -> drone.return. --- src/components/MonitorDetailPanel.vue | 4 ++-- src/stores/modules/devicesStore.js | 12 +++++++++--- src/views/DeviceDetailView/DeviceDetailView.vue | 2 +- src/views/MonitorView/MonitorView.vue | 2 +- src/views/OperationLogsView/OperationLogsView.vue | 2 +- 5 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/components/MonitorDetailPanel.vue b/src/components/MonitorDetailPanel.vue index ff285fe..a13330f 100644 --- a/src/components/MonitorDetailPanel.vue +++ b/src/components/MonitorDetailPanel.vue @@ -136,9 +136,9 @@ 一键起飞{{ actions.statusText('一键起飞') }} - + - 一键降落{{ actions.statusText('一键降落') }} + 一键返航{{ actions.statusText('一键返航') }} diff --git a/src/stores/modules/devicesStore.js b/src/stores/modules/devicesStore.js index ac4c210..cd1819a 100644 --- a/src/stores/modules/devicesStore.js +++ b/src/stores/modules/devicesStore.js @@ -90,7 +90,6 @@ function coordinate(value, min, max) { // 指令标题 → 后端指令 type const COMMANDS = { '一键起飞': 'workflow.one_key_takeoff', - '一键降落': 'workflow.one_key_land', '起飞准备': 'dock.prepare_takeoff', '起飞准备完成': 'dock.complete_takeoff', '降落准备': 'dock.prepare_landing', @@ -116,6 +115,12 @@ const COMMANDS = { '取消任务': 'drone.mission_cancel' } +// 同名指令在机巢/无人机上语义不同:机巢「一键返航」走 workflow 编排(返航+降落), +// 无人机「一键返航」是 drone.return 直达指令 +const DOCK_COMMANDS = { + '一键返航': 'workflow.one_key_landing' +} + // 经纬度 → 地图百分比坐标(按设备经纬范围动态投影,北向上) function project(lon, lat, bounds) { const lonSpan = bounds.maxLon - bounds.minLon || 1 @@ -158,12 +163,13 @@ export const useDeviceStore = defineStore('devices', () => { return docks.value.find((d) => d.id === key) || drones.value.find((d) => d.id === key) || null } - function commandType(title) { + function commandType(title, kind = '') { + if (kind === 'dock' && DOCK_COMMANDS[title]) return DOCK_COMMANDS[title] return COMMANDS[title] || '' } async function sendCommand(rec, title, params = {}) { - const type = COMMANDS[title] + const type = commandType(title, rec.kind) if (!type) throw new Error('未知指令') if (rec.kind === 'dock') { return request.post(urls.DOCK_COMMAND(rec.id), { type, params }) diff --git a/src/views/DeviceDetailView/DeviceDetailView.vue b/src/views/DeviceDetailView/DeviceDetailView.vue index 4c31009..9f288f2 100644 --- a/src/views/DeviceDetailView/DeviceDetailView.vue +++ b/src/views/DeviceDetailView/DeviceDetailView.vue @@ -603,7 +603,7 @@ const COMMAND_NAMES = { 'drone.mission_cancel': '取消任务', 'workflow.start_task': '执行任务', 'workflow.one_key_takeoff': '一键起飞', - 'workflow.one_key_land': '一键降落', + 'workflow.one_key_landing': '一键返航', 'video.start_stream': '开始直播', 'video.stop_stream': '停止直播' } diff --git a/src/views/MonitorView/MonitorView.vue b/src/views/MonitorView/MonitorView.vue index 5a2e5ab..3fcb24c 100644 --- a/src/views/MonitorView/MonitorView.vue +++ b/src/views/MonitorView/MonitorView.vue @@ -213,7 +213,7 @@ let suppressMapClick = false const dockExtraCommands = [ { title: '一键起飞', desc: '无人机将从机巢起飞并进入待命状态。', icon: '#i-plane', hint: '下发指令' }, - { title: '一键降落', desc: '无人机将返回机巢并自动降落。', icon: '#i-home', hint: '下发指令' }, + { title: '一键返航', desc: '无人机将返回机巢并自动降落。', icon: '#i-home', hint: '下发指令' }, { title: '起飞准备', desc: '将执行开舱并解除归中。', icon: '#i-plane', hint: '下发指令' }, { title: '降落准备', desc: '将开舱并等待无人机返航。', icon: '#i-home', hint: '下发指令' }, { title: '打开舱门', desc: '将打开机巢舱门。', icon: '#i-door', hint: '下发指令' }, diff --git a/src/views/OperationLogsView/OperationLogsView.vue b/src/views/OperationLogsView/OperationLogsView.vue index 132d0a6..7967af2 100644 --- a/src/views/OperationLogsView/OperationLogsView.vue +++ b/src/views/OperationLogsView/OperationLogsView.vue @@ -109,7 +109,7 @@ const COMMAND_NAMES = { 'drone.mission_cancel': '取消任务', 'workflow.start_task': '执行任务', 'workflow.one_key_takeoff': '一键起飞', - 'workflow.one_key_land': '一键降落', + 'workflow.one_key_landing': '一键返航', 'video.start_stream': '开始直播', 'video.stop_stream': '停止直播' }