| | |
| | | </div> |
| | | </div> |
| | | <div class="controlBtn"> |
| | | <el-icon class="refresh"><Refresh /></el-icon> |
| | | <el-icon class="refresh"> |
| | | <Refresh /> |
| | | </el-icon> |
| | | <div class="switchBtn" @click="switchBtn"> |
| | | <div :class="{ open: open }">NO</div> |
| | | <div :class="{ open: !open }">OFF</div> |
| | |
| | | |
| | | <script setup> |
| | | import { Refresh } from '@element-plus/icons-vue' |
| | | import { getFlightStatistics } from '@/api/home/machineNest' |
| | | import { throttle } from 'lodash' |
| | | import { getLnglatAltitude } from '@/utils/cesium/mapUtil' |
| | | import _ from 'lodash' |
| | | |
| | | const taskDetailsViewer = inject('taskDetailsViewer') |
| | | const deviceOsdInfo = inject('deviceOsdInfo') |
| | | const dockSn = inject('dockSn') |
| | | const open = ref(true) |
| | | const singleTotal = ref({}) |
| | | const host = computed(() => deviceOsdInfo?.value?.data?.host || {}) |
| | | |
| | | const infoList = computed(() => { |
| | | const { longitude, latitude, height, payloads } = host?.value || {} |
| | | return [ |
| | | { title: '实时真高', value: '0' }, |
| | | { title: '绝对高度', value: _.round(height || 0, 1) + 'm' }, |
| | | { title: '水平速度', value: '0' }, |
| | | { title: '垂直速度', value: '0' }, |
| | | { title: '经度', value: _.round(longitude || 0, 2) }, |
| | | { title: '纬度', value: _.round(latitude || 0, 2) }, |
| | | { title: '4G信号', value: '0' }, |
| | | { title: 'SDR信号', value: '0' }, |
| | | { title: 'GPS搜星数', value: '0' }, |
| | | { title: 'RTK搜星数', value: '0' }, |
| | | { title: '距离机场', value: '0' }, |
| | | { title: '飞行时长', value: (singleTotal.value?.hour_count || 0) + '小时' }, |
| | | { title: '电池电量', value: (host?.value?.battery?.capacity_percent || 0) + '%' }, |
| | | ] |
| | | }) |
| | | |
| | | const switchBtn = () => { |
| | | open.value = !open.value |
| | | } |
| | | const infoList = [ |
| | | { title: '实时真高', value: '0' }, |
| | | { title: '绝对高度', value: '0' }, |
| | | { title: '水平速度', value: '0' }, |
| | | { title: '垂直速度', value: '0' }, |
| | | { title: '经度', value: '0' }, |
| | | { title: '纬度', value: '0' }, |
| | | { title: '4G信号', value: '0' }, |
| | | { title: 'SDR信号', value: '0' }, |
| | | { title: 'GPS搜星数', value: '0' }, |
| | | { title: 'RTK搜星数', value: '0' }, |
| | | { title: '距离机场', value: '0' }, |
| | | { title: '飞行时长', value: '0' }, |
| | | { title: '电池电量', value: '0' }, |
| | | ] |
| | | |
| | | function getFlightStatisticsFun() { |
| | | if (!dockSn.value) return |
| | | getFlightStatistics(dockSn.value).then(res => { |
| | | singleTotal.value = res.data.data |
| | | }) |
| | | } |
| | | |
| | | function getRealTimeReallyHigh() { |
| | | if (!taskDetailsViewer?.value) return |
| | | const { latitude, longitude, height } = host?.value || {} |
| | | if (!latitude) return |
| | | getLnglatAltitude(longitude, latitude, taskDetailsViewer.value).then(res => { |
| | | const findIndex = infoList.value.findIndex(item => item.title === '实时真高') |
| | | infoList.value[findIndex].value = _.round(height - res?.height, 1) + 'm' |
| | | }) |
| | | } |
| | | |
| | | const getRealTimeReallyHighThrottle = throttle(getRealTimeReallyHigh, 500, { leading: true, trailing: true }) |
| | | watch( |
| | | deviceOsdInfo, |
| | | () => { |
| | | getRealTimeReallyHighThrottle() |
| | | }, |
| | | { immediate: true } |
| | | ) |
| | | |
| | | watch( |
| | | dockSn, |
| | | () => { |
| | | getFlightStatisticsFun() |
| | | }, |
| | | { immediate: true } |
| | | ) |
| | | </script> |
| | | |
| | | <style scoped lang="scss"> |
| | |
| | | z-index: 5; |
| | | width: 100%; |
| | | height: 68px; |
| | | background: rgb(0,0,0,.4); /* 半透明背景 */ |
| | | background: rgb(0, 0, 0, 0.4); /* 半透明背景 */ |
| | | backdrop-filter: blur(5px); |
| | | padding: 0 31px; |
| | | display: flex; |
| | |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | |
| | | .refresh{ |
| | | .refresh { |
| | | color: white; |
| | | font-size: 30px; |
| | | cursor: pointer; |