From f27ca082eb0a839449dd50c49007b58e5ed6946f Mon Sep 17 00:00:00 2001
From: 罗广辉 <guanghui.luo@foxmail.com>
Date: Thu, 19 Jun 2025 19:08:01 +0800
Subject: [PATCH] feat: 服务名修改

---
 src/components/g-map/DroneControlPanel.vue |  181 +++++++++++++++++++++++++++++++++++++-------
 1 files changed, 151 insertions(+), 30 deletions(-)

diff --git a/src/components/g-map/DroneControlPanel.vue b/src/components/g-map/DroneControlPanel.vue
index ec3722b..a0bf699 100644
--- a/src/components/g-map/DroneControlPanel.vue
+++ b/src/components/g-map/DroneControlPanel.vue
@@ -14,56 +14,56 @@
                             {{ flightController ? '退出控制' : '进入控制' }}
                         </Button>
 
-                      <Button  size="small" @click="flyByPoints">
-                        图斑飞行
-                      </Button>
+<!--                      <Button  size="small" @click="flyByPoints">-->
+<!--                        图斑飞行-->
+<!--                      </Button>-->
                     </div>
                 </div>
                 <div class="row">
                     <div class="drone-control-direction">
-                        <Button size="small" ghost @mousedown="onMouseDown(KeyCode.KEY_Q)" @onmouseup="onMouseUp">
+                        <Button size="small" ghost @mousedown="onMouseDown(KeyCode.KEY_Q)" @mouseup="onMouseUp">
                             <template #icon>
                                 <UndoOutlined/>
                             </template>
                             <span class="word">Q</span>
                         </Button>
-                        <Button size="small" ghost @mousedown="onMouseDown(KeyCode.KEY_W)" @onmouseup="onMouseUp">
+                        <Button size="small" ghost @mousedown="onMouseDown(KeyCode.KEY_W)" @mouseup="onMouseUp">
                             <template #icon>
                                 <UpOutlined/>
                             </template>
                             <span class="word">W</span>
                         </Button>
-                        <Button size="small" ghost @mousedown="onMouseDown(KeyCode.KEY_E)" @onmouseup="onMouseUp">
+                        <Button size="small" ghost @mousedown="onMouseDown(KeyCode.KEY_E)" @mouseup="onMouseUp">
                             <template #icon>
                                 <RedoOutlined/>
                             </template>
                             <span class="word">E</span>
                         </Button>
-                        <Button size="small" ghost @mousedown="onMouseDown(KeyCode.ARROW_UP)" @onmouseup="onMouseUp">
+                        <Button size="small" ghost @mousedown="onMouseDown(KeyCode.ARROW_UP)" @mouseup="onMouseUp">
                             <template #icon>
                                 <ArrowUpOutlined/>
                             </template>
                         </Button>
                         <br/>
-                        <Button size="small" ghost @mousedown="onMouseDown(KeyCode.KEY_A)" @onmouseup="onMouseUp">
+                        <Button size="small" ghost @mousedown="onMouseDown(KeyCode.KEY_A)" @mouseup="onMouseUp">
                             <template #icon>
                                 <LeftOutlined/>
                             </template>
                             <span class="word">A</span>
                         </Button>
-                        <Button size="small" ghost @mousedown="onMouseDown(KeyCode.KEY_S)" @onmouseup="onMouseUp">
+                        <Button size="small" ghost @mousedown="onMouseDown(KeyCode.KEY_S)" @mouseup="onMouseUp">
                             <template #icon>
                                 <DownOutlined/>
                             </template>
                             <span class="word">S</span>
                         </Button>
-                        <Button size="small" ghost @mousedown="onMouseDown(KeyCode.KEY_D)" @onmouseup="onMouseUp">
+                        <Button size="small" ghost @mousedown="onMouseDown(KeyCode.KEY_D)" @mouseup="onMouseUp">
                             <template #icon>
                                 <RightOutlined/>
                             </template>
                             <span class="word">D</span>
                         </Button>
-                        <Button size="small" ghost @mousedown="onMouseDown(KeyCode.ARROW_DOWN)" @onmouseup="onMouseUp">
+                        <Button size="small" ghost @mousedown="onMouseDown(KeyCode.ARROW_DOWN)" @mouseup="onMouseUp">
                             <template #icon>
                                 <ArrowDownOutlined/>
                             </template>
@@ -133,6 +133,34 @@
                                 <div>
                                     <span class="form-label">返回原点高度(m):</span>
                                     <a-input-number v-model:value="takeoffToPointPopoverData.rthAltitude"/>
+                                </div>
+                                <div>
+                                    <span class="form-label">指点飞行高度(m):</span>
+                                    <a-input-number :min="2" :max="8000" v-model:value="takeoffToPointPopoverData.commanderFlightHeight"/>
+                                </div>
+                                <div>
+                                  <span class="form-label">返航模式:</span>
+                                  <a-select
+                                    v-model:value="takeoffToPointPopoverData.rthMode"
+                                    style="width: 120px"
+                                    :options="RthModeOptions"
+                                  ></a-select>
+                                </div>
+                                <div>
+                                  <span class="form-label">指点飞行模式:</span>
+                                  <a-select
+                                    v-model:value="takeoffToPointPopoverData.commanderFlightMode"
+                                    style="width: 120px"
+                                    :options="CommanderFlightModeOptions"
+                                  ></a-select>
+                                </div>
+                                <div>
+                                  <span class="form-label">指点飞行失控动作:</span>
+                                  <a-select
+                                    v-model:value="takeoffToPointPopoverData.commanderModeLostAction"
+                                    style="width: 120px"
+                                    :options="CommanderModeLostActionOptions"
+                                  ></a-select>
                                 </div>
                                 <div>
                                     <span class="form-label">失控操作:</span>
@@ -308,6 +336,9 @@
 } from '/@/api/drone-control/drone'
 import { useDroneControl } from './use-drone-control'
 import {
+  RthModeOptions,
+  CommanderModeLostActionOptions,
+  CommanderFlightModeOptions,
   GimbalResetMode,
   GimbalResetModeOptions,
   LostControlActionInCommandFLightOptions,
@@ -319,13 +350,17 @@
 import { useDockControl } from './use-dock-control'
 import { flyByArea, Point } from '/@/api/wayline'
 import { parseJsonFile } from '/@/utils/geo-utils'
-
+import { cesiumOperation } from '/@/hooks/use-cesium-tsa'
+import * as Cesium from 'cesium'
+import { start } from 'repl'
 const props = defineProps<{
     sn: string,
     deviceInfo: DeviceInfoType,
     payloads: null | PayloadInfo[],
     modelValue: Boolean,
 }>()
+
+const cesiumFunc = cesiumOperation()
 
 const store = useMyStore()
 const clientId = computed(() => {
@@ -425,7 +460,11 @@
   maxSpeed: MAX_SPEED,
   rthAltitude: 100 as null | number,
   rcLostAction: LostControlActionInCommandFLight.RETURN_HOME,
-  exitWaylineWhenRcLost: WaylineLostControlActionInCommandFlight.EXEC_LOST_ACTION
+  exitWaylineWhenRcLost: WaylineLostControlActionInCommandFlight.EXEC_LOST_ACTION,
+  rthMode: 0 as number,
+  commanderModeLostAction: 1 as number,
+  commanderFlightMode: 0 as number,
+  commanderFlightHeight: 100 as number
 })
 
 function onShowTakeoffToPointPopover () {
@@ -458,7 +497,11 @@
         rth_altitude: takeoffToPointPopoverData.rthAltitude,
         max_speed: takeoffToPointPopoverData.maxSpeed,
         rc_lost_action: takeoffToPointPopoverData.rcLostAction,
-        exit_wayline_when_rc_lost: takeoffToPointPopoverData.exitWaylineWhenRcLost
+        exit_wayline_when_rc_lost: takeoffToPointPopoverData.exitWaylineWhenRcLost,
+        rth_mode: takeoffToPointPopoverData.rthMode,
+        commander_mode_lost_action: takeoffToPointPopoverData.commanderModeLostAction,
+        commander_flight_mode: takeoffToPointPopoverData.commanderFlightMode,
+        commander_flight_height: takeoffToPointPopoverData.commanderFlightHeight
       })
     } catch (error) {
     }
@@ -497,26 +540,104 @@
     lat: props.deviceInfo.dock.basic_osd.latitude
   })
   const deviceSn = props.deviceInfo.dock.basic_osd.sub_device?.device_sn
-  const jsonData = await parseJsonFile('../src/assets/jsonData/图斑_FeaturesToJSON(1).json')
+  const jsonPath = 'src/main/resources/jkj(1).json'
   const sn = props.sn
-  const features = jsonData.features
-  const list = []
 
-  features.forEach(feature => {
-    const areaList = []
-    feature.geometry.coordinates[0].forEach(areaPoint => {
-      console.log('areaPoint:', areaPoint)
-      const point = {
-        lon: areaPoint[0],
-        lat: areaPoint[1]
+  console.log(payloadSelectInfo, '-------------')
+  const payloadIndex = payloadSelectInfo.payloadIndex
+  // const jsonData = await parseJsonFile('../src/assets/jsonData/jkj(1).json')
+
+  // const features = jsonData.features
+  // const list = []
+
+  // features.forEach(feature => {
+  //   const areaList = []
+  //   feature.geometry.coordinates[0].forEach(areaPoint => {
+  //     console.log('areaPoint:', areaPoint)
+  //     const point = {
+  //       lon: areaPoint[0],
+  //       lat: areaPoint[1]
+  //     }
+  //     areaList.push(point)
+  //   })
+  //   list.push(areaList)
+  // })
+
+  flyByArea(sn, dockPoint, jsonPath, radius, deviceSn, payloadIndex).then(res => {
+    const targetPoint = res.data || []
+    // 机场位置
+    const startPoint = {
+      lon: props.deviceInfo.dock.basic_osd.longitude,
+      lat: props.deviceInfo.dock.basic_osd.latitude
+    }
+    targetPoint.unshift(startPoint)
+    console.log('targetPoint====', targetPoint)
+    // 获取到点之后在图上绘点
+    targetPoint.forEach((point: { lon: number; lat: number }, index: number) => {
+      console.log(point)
+      const setting = {
+        longitude: point.lon,
+        latitude: point.lat,
+        point: {
+          pixelSize: 8,
+          outlineWidth: 2,
+          color: Cesium.Color.RED,
+          outlineColor: Cesium.Color.BLACK,
+        },
+        label: {
+          text: '位置' + (index + 1),
+          outlineWidth: 20,
+          font: '14px sans-serif',
+          heightReference: 80,
+          pixelOffset: new Cesium.Cartesian2(0, -35),
+          fillColor: Cesium.Color.BLACK
+        },
+        id: 'target' + index,
       }
-      areaList.push(point)
+      cesiumFunc.addPoint(setting)
+      // 根据点画连线
+      let polylineSetting = {}
+      if (index === (targetPoint.length - 1)) {
+        polylineSetting = {
+          polyline: {
+            positions: Cesium.Cartesian3.fromDegreesArrayHeights([
+              point.lon,
+              point.lat,
+              0,
+              targetPoint[0].lon,
+              targetPoint[0].lat,
+              0
+            ]),
+            width: 10,
+            arcType: Cesium.ArcType.NONE,
+            material: new Cesium.PolylineArrowMaterialProperty(
+              Cesium.Color.RED
+            ),
+          },
+          id: 'fxTarget' + index
+        }
+      } else {
+        polylineSetting = {
+          polyline: {
+            positions: Cesium.Cartesian3.fromDegreesArrayHeights([
+              point.lon,
+              point.lat,
+              0,
+              targetPoint[index + 1].lon,
+              targetPoint[index + 1].lat,
+              0
+            ]),
+            width: 10,
+            arcType: Cesium.ArcType.NONE,
+            material: new Cesium.PolylineArrowMaterialProperty(
+              Cesium.Color.RED
+            ),
+          },
+          id: 'fxTarget' + index
+        }
+      }
+      cesiumFunc.addPolyline(polylineSetting)
     })
-    list.push(areaList)
-  })
-
-  flyByArea(sn, dockPoint, list, radius, deviceSn).then(res => {
-    console.log(res, '----------------')
   })
 }
 

--
Gitblit v1.9.3