From 4a82a5d060f96bb24433367ee3d5532f34ed88d6 Mon Sep 17 00:00:00 2001
From: 罗广辉 <guanghui.luo@foxmail.com>
Date: Wed, 09 Apr 2025 17:57:29 +0800
Subject: [PATCH] feat: 智引即飞80%
---
src/views/Home/AINowFly.vue | 83 +++++++++++++++++++++++++++++++----------
1 files changed, 62 insertions(+), 21 deletions(-)
diff --git a/src/views/Home/AINowFly.vue b/src/views/Home/AINowFly.vue
index b4f4d3e..a11981f 100644
--- a/src/views/Home/AINowFly.vue
+++ b/src/views/Home/AINowFly.vue
@@ -1,32 +1,35 @@
<template>
<div class="AINowFly">
<div>智引即飞</div>
- <div>
- 任务名称
- <el-input type="text" v-model="params.taskName" />
- </div>
- <div>
- 关联算法:
- <el-select v-model="params.ai_types" placeholder="请选择">
- <el-option v-for="item in taskAlgorithm" :key="item.id" :label="item.dictValue" :value="item.dictKey" />
- </el-select>
- </div>
- <div>
- 地址:
- <el-input type="text" v-model="params.dz" />
- </div>
- <el-table :data="list">
+ <el-form ref="ruleFormRef" :model="params" :rules="rules" label-width="auto" size="small" status-icon>
+ <el-form-item label="任务名称" prop="taskName">
+ <el-input v-model="params.taskName" />
+ </el-form-item>
+ <el-form-item label="关联算法" prop="ai_types">
+ <el-select v-model="params.ai_types" placeholder="请选择">
+ <el-option v-for="item in taskAlgorithm" :key="item.id" :label="item.dictValue" :value="item.dictKey" />
+ </el-select>
+ </el-form-item>
+ <el-form-item label="地址" >
+ <el-input disabled type="text" v-model="di" />
+ </el-form-item>
+ </el-form>
+
+ <div>可用机巢列表</div>
+ <el-table :data="list" @selection-change="handleSelectionChange">
+ <el-table-column type="selection" width="55" />
<el-table-column type="index" label="序号" />
<el-table-column prop="nickname" label="机巢名称" />
<el-table-column prop="minute" label="预计飞行时长(分钟)" />
<el-table-column prop="exe_distance" label="预计飞行距离(m)" />
</el-table>
+ <el-button type="primary" @click="nowFly">迅速起飞</el-button>
</div>
</template>
<script setup>
import { getMultipleDictionary } from '@/api/system/dictbiz'
import * as Cesium from 'cesium'
-import { getFlyingNestBy } from '@/api/home/task'
+import { createTask, getFlyingNestBy } from '@/api/home/task'
import { cartesian3Convert } from '@/utils/cesium/mapUtil'
import { Cartesian3 } from 'cesium'
import uavImg from '@/assets/images/home/useUavHome/uavImg.png'
@@ -34,18 +37,54 @@
import lineImg from '@/assets/images/arrow-right-blue.png'
import _ from 'lodash'
import { ElMessage } from 'element-plus'
+import dayjs from 'dayjs'
+import { useStore } from 'vuex'
-const params = ref({
- taskName: '',
+
+
+const now = dayjs().format('YYYY/MM/DD HH:mm')
+
+const paramsInit = {
+ taskName: `智引即飞 ${now}`,
ai_types: '',
- dz: '',
+ longitude: '',
+ latitude: '',
+ dock_sns: [],
+}
+const params = ref(_.cloneDeep(paramsInit))
+const di = computed(() => params.value.longitude + ',' + params.value.latitude)
+
+
+const rules = ref({
+ taskName: [
+ { required: true, message: '请输入任务名称', trigger: 'blur' },
+ { min: 3, max: 50, message: '长度在 3 到 20 个字符', trigger: 'blur' },
+ ],
+ ai_types: [{ required: true, message: '请选择算法', trigger: 'change' }],
})
+
+const ruleFormRef = ref(null)
let handler = null
const taskAlgorithm = ref([])
let viewer
const list = ref([])
let eventPoint = {}
+const store = useStore()
+const handleSelectionChange = val => {
+ params.value.dock_sns = val.map(item => item.device_sn)
+}
+
+const nowFly = async () => {
+ await ruleFormRef.value.validate()
+ if (!params.value.dock_sns.length) return ElMessage.warning('请选择将要飞行的机巢')
+ if (!params.value.longitude) return ElMessage.warning('请选择飞行的点')
+ if (params.value.dock_sns.length === 1){
+ store.commit('setSingleUavHome', { device_sn: params.value.dock_sns[0]})
+ }else{
+ store.commit('setFootActiveIndex', 0)
+ }
+}
const renderingLine = () => {
const { longitude, latitude } = eventPoint
@@ -119,6 +158,7 @@
})
const { longitude, latitude } = cartesian3Convert(earthPosition, viewer)
eventPoint = { longitude, latitude }
+ params.value = {...params.value,longitude, latitude}
getFJList()
}
@@ -133,8 +173,9 @@
// 获取飞机列表
const getFJList = async () => {
- const params = { ...eventPoint, page: 1, limit: 9999, type: 1 }
- const res = await getFlyingNestBy(params)
+ params.value.dock_sns = []
+ const getListParams = { ...eventPoint, page: 1, limit: 9999, type: 1 }
+ const res = await getFlyingNestBy(getListParams)
list.value = (res.data?.data || []).map(item => ({
...item,
minute: _.round(item.estimated_arrival_time / 60, 0),
--
Gitblit v1.9.3