| | |
| | | <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' |
| | |
| | | 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 |
| | |
| | | }) |
| | | const { longitude, latitude } = cartesian3Convert(earthPosition, viewer) |
| | | eventPoint = { longitude, latitude } |
| | | params.value = {...params.value,longitude, latitude} |
| | | getFJList() |
| | | } |
| | | |
| | |
| | | |
| | | // 获取飞机列表 |
| | | 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), |