设备管理-设备运维-飞行器详细信息展示

main
zhufu 2 months ago
parent 5820971d5c
commit 636b714b3d

@ -2,15 +2,15 @@
<div class="setting-control-title">机场</div>
<div class="setting-control-list" style="gap: 0px;">
<div class="show-info-item">
<div class="info-value">{{ (props.deviceInfoList[props.controlSN].acc_time / 60 / 60 / 24).toFixed(1) }}</div>
<div class="info-value">{{ `${(props.deviceInfoList[props.controlSN]?.acc_time / 60 / 60 / 24).toFixed(1)}` || '--' }}</div>
<div class="info-label">累计运行时长</div>
</div>
<div class="show-info-item">
<div class="info-value">{{ props.deviceInfoList[props.controlSN].job_number }}</div>
<div class="info-value">{{ `${props.deviceInfoList[props.controlSN]?.job_number}` || '--' }}</div>
<div class="info-label">作业架次</div>
</div>
<div class="show-info-item">
<div class="info-value">{{ (props.deviceInfoList[props.controlSN].position_state.gps_number + props.deviceInfoList[props.controlSN].position_state.rtk_number) }}</div>
<div class="info-value">{{ `${(props.deviceInfoList[props.controlSN]?.position_state?.gps_number + props.deviceInfoList[props.controlSN]?.position_state?.rtk_number)}` || '--' }}</div>
<div class="info-label">机场搜星</div>
</div>
<div class="show-info-item">
@ -46,33 +46,73 @@
<div class="info-label">蓄电池温度</div>
</div>
<div class="show-info-item">
<div class="info-value">{{ props.deviceInfoList[props.controlSN].temperature }}</div>
<div class="info-value">{{ `${props.deviceInfoList[props.controlSN]?.temperature}` || '--' }}</div>
<div class="info-label">舱内温度</div>
</div>
<div class="show-info-item">
<div class="info-value">{{ props.deviceInfoList[props.controlSN].humidity }}%RH</div>
<div class="info-value">{{ `${props.deviceInfoList[props.controlSN]?.humidity}%RH` || '--' }}</div>
<div class="info-label">舱内湿度</div>
</div>
<div class="show-info-item">
<div class="info-value">{{ props.deviceInfoList[props.controlSN].environment_temperature }}</div>
<div class="info-value">{{ `${props.deviceInfoList[props.controlSN]?.environment_temperature}` || '--' }}</div>
<div class="info-label">舱外温度</div>
</div>
<div class="show-info-item">
<div class="info-value">{{ rainfallOptions[props.deviceInfoList[props.controlSN].rainfall] }}</div>
<div class="info-value">{{ rainfallOptions[props.deviceInfoList[props.controlSN]?.rainfall] || '--' }}</div>
<div class="info-label">雨量</div>
</div>
<div class="show-info-item">
<div class="info-value">{{ props.deviceInfoList[props.controlSN].wind_speed }}m/s</div>
<div class="info-value">{{ `${props.deviceInfoList[props.controlSN]?.wind_speed}m/s` || '--' }}</div>
<div class="info-label">风速</div>
</div>
</div>
<!-- <div class="setting-control-title">飞行器</div>
<div class="setting-control-title">飞行器</div>
<div class="setting-control-list" style="gap: 0px;">
<div class="show-info-item">
<div class="info-value">{{ (props.deviceInfoList[props.controlSN].acc_time / 60 / 60 / 24).toFixed(1) }}</div>
<div class="info-label">累计运行时长</div>
<div class="info-value">{{ props.deviceInfoList[props.controlChildSN]?.wind_speed || '--' }}m/s</div>
<div class="info-label">累计飞行时长</div>
</div>
<div class="show-info-item">
<div class="info-value">{{ props.deviceInfoList[props.controlChildSN]?.total_flight_sorties || '--' }}</div>
<div class="info-label">飞行架次</div>
</div>
<div class="show-info-item">
<div class="info-value">--</div>
<div class="info-label">图传</div>
</div>
<div class="show-info-item">
<div class="info-value">{{ isFixedOptions[props.deviceInfoList[props.controlChildSN]?.position_state?.is_fixed] || '--' }}</div>
<div class="info-label">搜星状态</div>
</div>
<div class="show-info-item">
<div class="info-value">{{ nightLightsStateOptions[props.deviceInfoList[props.controlChildSN]?.night_lights_state] || '--' }}</div>
<div class="info-label">飞行器夜航灯</div>
</div>
<div class="show-info-item">
<div class="info-value">{{ props.deviceInfoList[props.controlSN]?.alternate_land_point?.safe_land_height || '--' }}</div>
<div class="info-label">备降转移高度</div>
</div>
<div class="show-info-item">
<div class="info-value">{{ props.deviceInfoList[props.controlSN]?.height_limit || '--' }}</div>
<div class="info-label">限高</div>
</div>
<div class="show-info-item">
<div class="info-value">--</div>
<div class="info-label">限远</div>
</div>
</div> -->
<div class="show-info-item">
<div class="info-value">{{ (
props.deviceInfoList[props.controlChildSN]?.obstacle_avoidance?.horizon ||
props.deviceInfoList[props.controlChildSN]?.obstacle_avoidance?.upside ||
props.deviceInfoList[props.controlChildSN]?.obstacle_avoidance?.downside
)? '开启': '关闭' }}</div>
<div class="info-label">避障</div>
</div>
<div class="show-info-item">
<div class="info-value">{{ childModeCodeOptions[props.deviceInfoList[props.controlChildSN]?.mode_code] || '--' }}</div>
<div class="info-label">运行模式</div>
</div>
</div>
<div class="open-control-div">
<div class="control-content">
<span class="open-title">远程调试</span>
@ -275,7 +315,7 @@
<div>
<div class="show-span">
{{
deviceOnlineStatusOptions[props.deviceInfoList[props.controlSN].sub_device.device_online_status]
deviceOnlineStatusOptions[props.deviceInfoList[props.controlSN]?.sub_device?.device_online_status] || '--'
}}
</div>
<div class="show-span">飞行器电源</div>
@ -284,9 +324,9 @@
<div class="button-div">
<a-button
class="control-button"
@click="changeDeviceState(props.deviceInfoList[props.controlSN].sub_device.device_online_status == 0? 'drone_open': 'drone_close')"
@click="changeDeviceState(props.deviceInfoList[props.controlSN]?.sub_device?.device_online_status == 0? 'drone_open': 'drone_close')"
:disabled="props.deviceInfoList[props.controlSN].mode_code != 2">
{{props.deviceInfoList[props.controlSN].sub_device.device_online_status == 0? '开机': '关机'}}
{{props.deviceInfoList[props.controlSN]?.sub_device?.device_online_status == 0? '开机': '关机'}}
</a-button>
</div>
</div>
@ -298,7 +338,7 @@
<div>
<div class="show-span">
{{
droneChargeStateOptions[props.deviceInfoList[props.controlSN].drone_charge_state.state]
droneChargeStateOptions[props.deviceInfoList[props.controlSN]?.drone_charge_state?.state] || '--'
}}
</div>
<div class="show-span">飞行器充电</div>
@ -321,7 +361,7 @@
<div>
<div class="show-span">
{{
fourgLinkStateOptions[props.deviceInfoList[props.controlSN]?.wireless_link['4g_link_state']]
fourgLinkStateOptions[props.deviceInfoList[props.controlSN]?.wireless_link?.['4g_link_state']] || '--'
}}
</div>
<div class="show-span">增强图传</div>
@ -365,7 +405,7 @@
<div>
<div class="show-span">
{{
linkWorkmodeOptions[props.deviceInfoList[props.controlSN].wireless_link.link_workmode]
linkWorkmodeOptions[props.deviceInfoList[props.controlSN]?.wireless_link?.link_workmode] || '--'
}}
</div>
<div class="show-span">飞行器增强图传</div>
@ -390,8 +430,9 @@ import { buildGUID } from '@/utils/uuid';
import Icon from '@/components/Icon/Icon.vue';
import { modeCodeOptions, deviceOnlineStatusOptions, coverStateOptions, airConditionerStateOptions, silentModeOptions,
alarmStateOptions, droneChargeStateOptions, fourgLinkStateOptions, linkWorkmodeOptions, sourceTypeOptions, qualityOptions,
isConfiguredOptions, rainfallOptions } from './util'
const props = defineProps(['deviceInfoList', 'controlSN'])
isConfiguredOptions, rainfallOptions, isFixedOptions, nightLightsStateOptions, childModeCodeOptions } from './util'
const props = defineProps(['deviceInfoList', 'controlSN', 'controlChildSN'])
console.log(props.deviceInfoList,props.controlChildSN)
const openDebug = () => {
let publishUrl = `thing/product/${props.controlSN}/services`

@ -77,4 +77,36 @@ export const rainfallOptions = {
1: '小雨',
2: '中雨',
3: '大雨',
}
export const isFixedOptions = {
0: '未开始',
1: '收敛中',
2: '收敛成功',
3: '收敛失败',
}
export const nightLightsStateOptions = {
0: '关闭',
1: '打开',
}
export const childModeCodeOptions = {
0: '待机',
1: '起飞准备',
2: '起飞准备完毕',
3: '手动飞行',
4: '自动起飞',
5: '航线飞行',
6: '全景拍照',
7: '智能跟随',
8: 'ADS-B 躲避',
9: '自动返航',
10: '自动降落',
11: '强制降落',
12: '三桨叶降落',
13: '升级中',
14: '未连接',
15: 'APAS',
16: '虚拟摇杆状态',
17: '指令飞行',
18: '空中 RTK 收敛模式',
19: '机场选址中',
}

@ -58,7 +58,7 @@
<DeviceWarning />
</a-drawer>
<a-drawer class="feedback-drawer" title="设备运维" v-model:open="deviceControl" width="45%" :closable="false">
<DeviceControl :deviceInfoList="deviceInfoList" :controlSN="controlSN"/>
<DeviceControl :deviceInfoList="deviceInfoList" :controlSN="controlSN" :controlChildSN="controlChildSN"/>
</a-drawer>
<a-modal v-model:open="deviceBindingModal" title="设备绑定码" @ok="handleOk">
<DeviceBindModal />
@ -131,17 +131,25 @@ const deviceInfoList = ref({})
const controlSN = ref()
const editDeviceModal = ref(false)
const editDeviceDate = ref({})
const controlChildSN = ref()
watch(() => [afterFetch.value, props.connected], ([newAfterFetch, newConnected], [oldAfterFetch, oldConnected]) => {
console.log(newAfterFetch,newConnected)
console.log(getDataSource())
if(newConnected && newAfterFetch){
nextTick(() => {
console.log(getDataSource())
getDataSource().forEach(item => {
let topicUrl = `thing/product/${item.sn}/osd`;
let servicesReplyUrl = `thing/product/${item.sn}/services_reply`
clientSubscribe(topicUrl);
clientSubscribe(servicesReplyUrl);
if(item.uavList){
item.uavList.forEach(childItem => {
let childTopicUrl = `thing/product/${childItem.sn}/osd`;
let childServicesReplyUrl = `thing/product/${childItem.sn}/services_reply`
clientSubscribe(childTopicUrl);
clientSubscribe(childServicesReplyUrl);
})
}
})
})
}
@ -213,6 +221,7 @@ const workStatus = (record) => {
}
const openDeviceControl = (record) => {
controlSN.value = record.sn
controlChildSN.value = record.uavList[0].sn
let check = Object.keys(deviceInfoList.value).includes(controlSN.value) && Object.keys(deviceInfoList.value[controlSN.value]).includes('mode_code')
if(!check){
return message.warning('未获取到机场信息')

Loading…
Cancel
Save