import { DeviceCmd, DeviceCmdStatusText,DeviceCmdExecuteStatus } from '@/types/device-cmd'; import { CoverStateEnum, PutterStateEnum, ChargeStateEnum, SupplementLightStateEnum, AlarmModeEnum, BatteryStoreModeEnum, DroneBatteryStateEnum, LinkWorkModeEnum, AirConditioningModeEnum, DroneBatteryModeEnum } from '@/types/airport-tsa'; import { DEFAULT_PLACEHOLDER, SIZES as byteSizes, BYTE_SIZES } from './constants' /** * 根据osd 更新信息 * @param cmdList * @param deviceInfo * @returns */ export function updateDeviceCmdInfoByOsd(cmdList, deviceInfo) { const { device, dock, gateway } = deviceInfo || {}; if (!cmdList || cmdList.length < 1) { return; } cmdList.forEach(cmdItem => { if (cmdItem.loading) { return; } if (cmdItem.cmdKey === DeviceCmd.DeviceReboot) { // 重启 // console.log('DeviceReboot') } else if (cmdItem.cmdKey === DeviceCmd.DroneOpen || cmdItem.cmdKey === DeviceCmd.DroneClose) { // 飞行器开关机 getDroneState(cmdItem, device); } else if (cmdItem.cmdKey === DeviceCmd.CoverOpen || cmdItem.cmdKey === DeviceCmd.CoverClose) { // 舱盖开关 getCoverState(cmdItem, dock); } else if ( cmdItem.cmdKey === DeviceCmd.PutterOpen || cmdItem.cmdKey === DeviceCmd.PutterClose ) { // 推杆闭合展开 getPutterState(cmdItem, dock); } else if ( cmdItem.cmdKey === DeviceCmd.ChargeOpen || cmdItem.cmdKey === DeviceCmd.ChargeClose ) { // 充电状态 getChargeState(cmdItem, dock); } else if (cmdItem.cmdKey === DeviceCmd.DeviceFormat) { // 机场存储 deviceFormat(cmdItem, dock); } else if (cmdItem.cmdKey === DeviceCmd.DroneFormat) { // 飞行器存储 droneFormat(cmdItem, device); } else if ( cmdItem.cmdKey === DeviceCmd.SupplementLightOpen || cmdItem.cmdKey === DeviceCmd.SupplementLightClose ) { // 补光灯开关 getSupplementLightState(cmdItem, dock); } else if (cmdItem.cmdKey === DeviceCmd.AlarmStateSwitch) { // 声光报警 getAlarmState(cmdItem, dock); } else if (cmdItem.cmdKey === DeviceCmd.BatteryStoreModeSwitch) { // 电池保养 getBatteryStoreMode(cmdItem, dock); } else if (cmdItem.cmdKey === DeviceCmd.DroneBatteryModeSwitch) { // 飞行器电池保养 getDroneBatteryMode(cmdItem, dock); } else if (cmdItem.cmdKey === DeviceCmd.SdrWorkModeSwitch) { // 增强图传开关 getSdrWorkNode(cmdItem, dock); } else if (cmdItem.cmdKey === DeviceCmd.AirConditioningModeSwitch) { // 空调模式开关 getAirConditionerSwitch(cmdItem, dock); } }); } // 推杆状态 function getPutterState(cmdItem, airportProperties) { const putterState = airportProperties?.basic_osd?.putter_state; if (putterState === PutterStateEnum.Close || putterState === PutterStateEnum.Failed) { cmdItem.status = DeviceCmdStatusText.DevicePutterCloseNormalText; cmdItem.operateText = DeviceCmdStatusText.DevicePutterCloseBtnText; if (cmdItem.cmdKey !== DeviceCmd.PutterOpen) { exchangeDeviceCmd(cmdItem); } } else if (putterState === PutterStateEnum.Open || putterState === PutterStateEnum.HalfOpen) { cmdItem.status = DeviceCmdStatusText.DevicePutterOpenNormalText; cmdItem.operateText = DeviceCmdStatusText.DevicePutterOpenBtnText; if (cmdItem.cmdKey !== DeviceCmd.PutterClose) { exchangeDeviceCmd(cmdItem); } } } // 飞行器开关机 function getDroneState(cmdItem, droneProperties) { if (!droneProperties) { cmdItem.status = DeviceCmdStatusText.DroneStatusCloseNormalText; cmdItem.operateText = DeviceCmdStatusText.DroneStatusCloseBtnText; if (cmdItem.cmdKey !== DeviceCmd.DroneOpen) { exchangeDeviceCmd(cmdItem); } } else { cmdItem.status = DeviceCmdStatusText.DroneStatusOpenNormalText; cmdItem.operateText = DeviceCmdStatusText.DroneStatusOpenBtnText; if (cmdItem.cmdKey !== DeviceCmd.DroneClose) { exchangeDeviceCmd(cmdItem); } } } // 舱盖开关 function getCoverState(cmdItem, airportProperties) { const coverState = airportProperties?.basic_osd?.cover_state; if (coverState === CoverStateEnum.Close || coverState === CoverStateEnum.Failed) { cmdItem.status = DeviceCmdStatusText.DeviceCoverCloseNormalText; cmdItem.operateText = DeviceCmdStatusText.DeviceCoverCloseBtnText; if (cmdItem.cmdKey !== DeviceCmd.CoverOpen) { exchangeDeviceCmd(cmdItem); } } else if (coverState === CoverStateEnum.Open || coverState === CoverStateEnum.HalfOpen) { cmdItem.status = DeviceCmdStatusText.DeviceCoverOpenNormalText; cmdItem.operateText = DeviceCmdStatusText.DeviceCoverOpenBtnText; if (cmdItem.cmdKey !== DeviceCmd.CoverClose) { exchangeDeviceCmd(cmdItem); } } } // 充电状态 function getChargeState(cmdItem, airportProperties) { const chargeState = airportProperties?.basic_osd?.drone_charge_state; const state = chargeState?.state; if (!state) return; if (state === ChargeStateEnum.Charge) { cmdItem.status = DeviceCmdStatusText.DeviceChargeOpenNormalText; cmdItem.operateText = DeviceCmdStatusText.DeviceChargeOpenBtnText; if (cmdItem.cmdKey !== DeviceCmd.ChargeClose) { exchangeDeviceCmd(cmdItem); } } else if (state === ChargeStateEnum.NotCharge) { cmdItem.status = DeviceCmdStatusText.DeviceChargeCloseNormalText; cmdItem.operateText = DeviceCmdStatusText.DeviceChargeCloseBtnText; if (cmdItem.cmdKey !== DeviceCmd.ChargeOpen) { exchangeDeviceCmd(cmdItem); } } } // 机场存储格式化 function deviceFormat(cmdItem, airportProperties) { const airportStorage = airportProperties?.basic_osd?.storage; const value = getAirportStorage(airportStorage); cmdItem.status = value; } // 机场存储格式化 function droneFormat(cmdItem, droneProperties) { const droneStorage = droneProperties?.storage; const value = getAirportStorage(droneStorage); cmdItem.status = value; } // 获取机场存储容量 // { // "total": 10000, // 单位:KB // "used": 500 // } export function getAirportStorage(storage) { if (!storage) { return DEFAULT_PLACEHOLDER; } const total = storage.total; const used = storage.used; const byteObj = getBytesObject(total * 1024); const _total = byteObj.value; const _used = getBytes(used * 1024, byteObj.index); return `${_used}/${_total} ${byteObj.size}`; } // 获取转化后数据及单位 export function getBytesObject(bytes, holder = DEFAULT_PLACEHOLDER, fix = 1) { if (isNaN(bytes) || bytes === 0) { return { value: holder, size: '', index: -1, }; } // 兼容负数 let prefix = ''; if (bytes < 0) { bytes = 0 - bytes; prefix = '-'; } const k = 1024; const sizes = byteSizes; // ['B', 'K', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y'] const i = Math.floor(Math.log(bytes) / Math.log(k)); return { value: prefix + (bytes / Math.pow(k, i)).toFixed(fix), size: sizes[i], index: i, }; } function getBytes(bytes, index, fixed = 1) { return (bytes / Math.pow(1024, index)).toFixed(fixed); } // 补光灯状态 function getSupplementLightState(cmdItem, airportProperties) { const supplementLightState = airportProperties?.basic_osd?.supplement_light_state; if (supplementLightState === SupplementLightStateEnum.Close) { cmdItem.operateText = DeviceCmdStatusText.DeviceSupplementLightCloseBtnText; cmdItem.status = DeviceCmdStatusText.DeviceSupplementLightCloseNormalText; if (cmdItem.cmdKey !== DeviceCmd.SupplementLightOpen) { exchangeDeviceCmd(cmdItem); } } else if (supplementLightState === SupplementLightStateEnum.Open) { cmdItem.operateText = DeviceCmdStatusText.DeviceSupplementLightOpenBtnText; cmdItem.status = DeviceCmdStatusText.DeviceSupplementLightOpenNormalText; if (cmdItem.cmdKey !== DeviceCmd.SupplementLightClose) { exchangeDeviceCmd(cmdItem); } } } // 声光报警 function getAlarmState(cmdItem, airportProperties) { const alarmState = airportProperties?.basic_osd?.alarm_state; if (alarmState === AlarmModeEnum.CLOSE) { cmdItem.operateText = DeviceCmdStatusText.AlarmStateCloseBtnText; cmdItem.status = DeviceCmdStatusText.AlarmStateCloseNormalText; cmdItem.action = AlarmModeEnum.OPEN; } else if (alarmState === AlarmModeEnum.OPEN) { cmdItem.operateText = DeviceCmdStatusText.AlarmStateOpenBtnText; cmdItem.status = DeviceCmdStatusText.AlarmStateOpenNormalText; cmdItem.action = AlarmModeEnum.CLOSE; } } // 机场电池模式 function getBatteryStoreMode(cmdItem, airportProperties) { const batteryStoreMode = airportProperties?.basic_osd?.battery_store_mode; if (batteryStoreMode === BatteryStoreModeEnum.BATTERY_PLAN_STORE) { cmdItem.operateText = DeviceCmdStatusText.BatteryStoreModePlanBtnText; cmdItem.status = DeviceCmdStatusText.BatteryStoreModePlanNormalText; cmdItem.action = BatteryStoreModeEnum.BATTERY_EMERGENCY_STORE; } else if (batteryStoreMode === BatteryStoreModeEnum.BATTERY_EMERGENCY_STORE) { cmdItem.operateText = DeviceCmdStatusText.BatteryStoreModeEmergencyBtnText; cmdItem.status = DeviceCmdStatusText.BatteryStoreModeEmergencyNormalText; cmdItem.action = BatteryStoreModeEnum.BATTERY_PLAN_STORE; } } // 飞行器电池保养 function getDroneBatteryMode(cmdItem, airportProperties) { const maintenanceState = airportProperties?.work_osd?.drone_battery_maintenance_info?.maintenance_state; if (maintenanceState === DroneBatteryStateEnum.MaintenanceInProgress) { cmdItem.operateText = DeviceCmdStatusText.DroneBatteryModeCloseBtnText; cmdItem.status = DeviceCmdStatusText.DroneBatteryModeMaintenanceInProgressText; cmdItem.action = DroneBatteryModeEnum.CLOSE; cmdItem.disabled = false; } else if (maintenanceState === DroneBatteryStateEnum.NoMaintenanceRequired) { cmdItem.operateText = DeviceCmdStatusText.DroneBatteryModeOpenBtnText; cmdItem.status = DeviceCmdStatusText.DroneBatteryModeMaintenanceNotNeedText; cmdItem.action = DroneBatteryModeEnum.OPEN; cmdItem.disabled = true; } else if (maintenanceState === DroneBatteryStateEnum.MaintenanceRequired) { cmdItem.operateText = DeviceCmdStatusText.DroneBatteryModeOpenBtnText; cmdItem.status = DeviceCmdStatusText.DroneBatteryModeMaintenanceNeedText; cmdItem.action = DroneBatteryModeEnum.OPEN; cmdItem.disabled = false; } } // 增强图传开关 function getSdrWorkNode(cmdItem, airportProperties) { const linkWorkMode = airportProperties?.link_osd?.wireless_link?.link_workmode; if (linkWorkMode === LinkWorkModeEnum.SDR) { cmdItem.operateText = DeviceCmdStatusText.SdrWorkModeFourCloseBtnText; cmdItem.status = DeviceCmdStatusText.SdrWorkModeFourGCloseNormalText; cmdItem.action = LinkWorkModeEnum.FourG_FUSION_MODE; } else if (linkWorkMode === LinkWorkModeEnum.FourG_FUSION_MODE) { cmdItem.operateText = DeviceCmdStatusText.SdrWorkModeFourGOpenBtnText; cmdItem.status = DeviceCmdStatusText.SdrWorkModeFourGOpenNormalText; cmdItem.action = LinkWorkModeEnum.SDR; } } // 空调模式开关 function getAirConditionerSwitch (cmdItem, airportProperties) { const conditionerState = airportProperties?.basic_osd?.air_conditioner?.air_conditioner_state || 0 if (conditionerState === 0) { cmdItem.status = DeviceCmdStatusText.AirConditionerModeCoolNormalText } if (conditionerState === 1) { cmdItem.status = DeviceCmdStatusText.AirConditionerModeCoolText cmdItem.action = AirConditioningModeEnum.CLOSE } if (conditionerState === 2) { cmdItem.status = DeviceCmdStatusText.AirConditionerModeHeatText cmdItem.action = AirConditioningModeEnum.CLOSE } if (conditionerState === 3) { cmdItem.status = DeviceCmdStatusText.AirConditionerModeDehumdidfyText cmdItem.action = AirConditioningModeEnum.CLOSE } } /** * 根据指令执行消息更新信息 * @param cmd * @param deviceCmdExecuteInfo * @returns */ export function updateDeviceCmdInfoByExecuteInfo(cmdList, deviceCmdExecuteInfos) { if (!deviceCmdExecuteInfos || !cmdList) { return; } cmdList.forEach(cmdItem => { // 获取当前设备相应指令信息 const deviceCmdExecuteInfo = deviceCmdExecuteInfos.find( cmdExecuteInfo => cmdExecuteInfo.biz_code === cmdItem.cmdKey ); if (deviceCmdExecuteInfo) { if (cmdItem.cmdKey === DeviceCmd.DeviceReboot) { // 重启 if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.InProgress) { cmdItem.status = DeviceCmdStatusText.DeviceRebootInProgressText; cmdItem.loading = true; } else if (isExecuteFailed(deviceCmdExecuteInfo.output.status)) { cmdItem.status = DeviceCmdStatusText.DeviceRebootFailedText; cmdItem.loading = false; } else if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.OK) { cmdItem.status = DeviceCmdStatusText.DeviceRebootNormalText; cmdItem.loading = false; } } else if (cmdItem.cmdKey === DeviceCmd.DroneOpen) { // 飞行器开关机 if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.InProgress) { cmdItem.status = DeviceCmdStatusText.DroneStatusOpenInProgressText; cmdItem.loading = true; } else if (isExecuteFailed(deviceCmdExecuteInfo.output.status)) { cmdItem.status = DeviceCmdStatusText.DroneStatusOpenFailedText; cmdItem.loading = false; } else if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.OK) { cmdItem.status = DeviceCmdStatusText.DroneStatusOpenNormalText; cmdItem.operateText = DeviceCmdStatusText.DroneStatusOpenBtnText; exchangeDeviceCmd(cmdItem); cmdItem.loading = false; } } else if (cmdItem.cmdKey === DeviceCmd.DroneClose) { if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.InProgress) { cmdItem.status = DeviceCmdStatusText.DroneStatusCloseInProgressText; cmdItem.loading = true; } else if (isExecuteFailed(deviceCmdExecuteInfo.output.status)) { cmdItem.status = DeviceCmdStatusText.DroneStatusCloseFailedText; cmdItem.loading = false; } else if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.OK) { cmdItem.status = DeviceCmdStatusText.DroneStatusCloseNormalText; cmdItem.operateText = DeviceCmdStatusText.DroneStatusCloseBtnText; exchangeDeviceCmd(cmdItem); cmdItem.loading = false; } } else if (cmdItem.cmdKey === DeviceCmd.CoverOpen) { // 舱盖开关 if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.InProgress) { cmdItem.status = DeviceCmdStatusText.DeviceCoverOpenInProgressText; cmdItem.loading = true; } else if (isExecuteFailed(deviceCmdExecuteInfo.output.status)) { cmdItem.status = DeviceCmdStatusText.DeviceCoverOpenFailedText; cmdItem.loading = false; } else if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.OK) { cmdItem.status = DeviceCmdStatusText.DeviceCoverOpenNormalText; cmdItem.operateText = DeviceCmdStatusText.DeviceCoverOpenBtnText; exchangeDeviceCmd(cmdItem); cmdItem.loading = false; } } else if (cmdItem.cmdKey === DeviceCmd.CoverClose) { if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.InProgress) { cmdItem.status = DeviceCmdStatusText.DeviceCoverCloseInProgressText; cmdItem.loading = true; } else if (isExecuteFailed(deviceCmdExecuteInfo.output.status)) { cmdItem.status = DeviceCmdStatusText.DeviceCoverCloseFailedText; cmdItem.loading = false; } else if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.OK) { cmdItem.status = DeviceCmdStatusText.DeviceCoverCloseNormalText; cmdItem.operateText = DeviceCmdStatusText.DeviceCoverCloseBtnText; exchangeDeviceCmd(cmdItem); cmdItem.loading = false; } } else if (cmdItem.cmdKey === DeviceCmd.PutterOpen) { // 推杆闭合展开 if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.InProgress) { cmdItem.status = DeviceCmdStatusText.DevicePutterOpenInProgressText; cmdItem.loading = true; } else if (isExecuteFailed(deviceCmdExecuteInfo.output.status)) { cmdItem.status = DeviceCmdStatusText.DevicePutterOpenFailedText; cmdItem.loading = false; } else if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.OK) { cmdItem.status = DeviceCmdStatusText.DevicePutterOpenNormalText; cmdItem.operateText = DeviceCmdStatusText.DevicePutterOpenBtnText; exchangeDeviceCmd(cmdItem); cmdItem.loading = false; } } else if (cmdItem.cmdKey === DeviceCmd.PutterClose) { if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.InProgress) { cmdItem.status = DeviceCmdStatusText.DevicePutterCloseInProgressText; cmdItem.loading = true; } else if (isExecuteFailed(deviceCmdExecuteInfo.output.status)) { cmdItem.status = DeviceCmdStatusText.DevicePutterCloseFailedText; cmdItem.loading = false; } else if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.OK) { cmdItem.status = DeviceCmdStatusText.DevicePutterCloseNormalText; cmdItem.operateText = DeviceCmdStatusText.DevicePutterCloseBtnText; exchangeDeviceCmd(cmdItem); cmdItem.loading = false; } } else if (cmdItem.cmdKey === DeviceCmd.ChargeOpen) { // 充电状态 if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.InProgress) { cmdItem.status = DeviceCmdStatusText.DeviceChargeOpenInProgressText; cmdItem.loading = true; } else if (isExecuteFailed(deviceCmdExecuteInfo.output.status)) { cmdItem.status = DeviceCmdStatusText.DeviceChargeOpenFailedText; cmdItem.loading = false; } else if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.OK) { cmdItem.status = DeviceCmdStatusText.DeviceChargeOpenNormalText; cmdItem.operateText = DeviceCmdStatusText.DeviceChargeOpenBtnText; exchangeDeviceCmd(cmdItem); cmdItem.loading = false; } } else if (cmdItem.cmdKey === DeviceCmd.ChargeClose) { if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.InProgress) { cmdItem.status = DeviceCmdStatusText.DeviceChargeCloseInProgressText; cmdItem.loading = true; } else if (isExecuteFailed(deviceCmdExecuteInfo.output.status)) { cmdItem.status = DeviceCmdStatusText.DeviceChargeCloseFailedText; cmdItem.loading = false; } else if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.OK) { cmdItem.status = DeviceCmdStatusText.DeviceChargeCloseNormalText; cmdItem.operateText = DeviceCmdStatusText.DeviceChargeCloseBtnText; exchangeDeviceCmd(cmdItem); cmdItem.loading = false; } } else if (cmdItem.cmdKey === DeviceCmd.DeviceFormat) { // 机场存储 if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.InProgress) { cmdItem.status = DeviceCmdStatusText.DeviceFormatInProgressText; cmdItem.loading = true; } else if (isExecuteFailed(deviceCmdExecuteInfo.output.status)) { cmdItem.status = DeviceCmdStatusText.DeviceFormatFailedText; cmdItem.loading = false; } else if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.OK) { cmdItem.loading = false; } } else if (cmdItem.cmdKey === DeviceCmd.DroneFormat) { // 飞行器存储 if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.InProgress) { cmdItem.status = DeviceCmdStatusText.DroneFormatInProgressText; cmdItem.loading = true; } else if (isExecuteFailed(deviceCmdExecuteInfo.output.status)) { cmdItem.status = DeviceCmdStatusText.DroneFormatFailedText; cmdItem.loading = false; } else if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.OK) { cmdItem.loading = false; } } else if (cmdItem.cmdKey === DeviceCmd.AlarmStateSwitch) { // 机场声光报警 if (cmdItem.action === AlarmModeEnum.CLOSE) { if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.InProgress) { cmdItem.status = DeviceCmdStatusText.AlarmStateCloseText; cmdItem.loading = true; } else if (isExecuteFailed(deviceCmdExecuteInfo.output.status)) { cmdItem.status = DeviceCmdStatusText.AlarmStateCloseFailedText; cmdItem.loading = false; } else if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.OK) { cmdItem.loading = false; } } else if (cmdItem.action === AlarmModeEnum.OPEN) { if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.InProgress) { cmdItem.status = DeviceCmdStatusText.AlarmStateOpenText; cmdItem.loading = true; } else if (isExecuteFailed(deviceCmdExecuteInfo.output.status)) { cmdItem.status = DeviceCmdStatusText.AlarmStateOpenFailedText; cmdItem.loading = false; } else if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.OK) { cmdItem.loading = false; } } } else if (cmdItem.cmdKey === DeviceCmd.BatteryStoreModeSwitch) { // 电池保养 if (cmdItem.action === BatteryStoreModeEnum.BATTERY_PLAN_STORE) { if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.InProgress) { cmdItem.status = DeviceCmdStatusText.BatteryStoreModePlanText; cmdItem.loading = true; } else if (isExecuteFailed(deviceCmdExecuteInfo.output.status)) { cmdItem.status = DeviceCmdStatusText.BatteryStoreModePlanFailedText; cmdItem.loading = false; } else if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.OK) { cmdItem.loading = false; } } else if (cmdItem.action === BatteryStoreModeEnum.BATTERY_EMERGENCY_STORE) { if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.InProgress) { cmdItem.status = DeviceCmdStatusText.BatteryStoreModeEmergencyText; cmdItem.loading = true; } else if (isExecuteFailed(deviceCmdExecuteInfo.output.status)) { cmdItem.status = DeviceCmdStatusText.BatteryStoreModeEmergencyFailedText; cmdItem.loading = false; } else if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.OK) { cmdItem.loading = false; } } } else if (cmdItem.cmdKey === DeviceCmd.DroneBatteryModeSwitch) { // 飞行器电池保养 if (cmdItem.action === DroneBatteryModeEnum.OPEN) { if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.InProgress) { cmdItem.status = DeviceCmdStatusText.DroneBatteryModeMaintenanceInProgressText; cmdItem.loading = true; } else if (isExecuteFailed(deviceCmdExecuteInfo.output.status)) { cmdItem.status = DeviceCmdStatusText.DroneBatteryModeMaintenanceNeedText; cmdItem.loading = false; } else if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.OK) { cmdItem.status = DeviceCmdStatusText.DroneBatteryModeMaintenanceNotNeedText; cmdItem.loading = false; } } else if (cmdItem.action === DroneBatteryModeEnum.CLOSE) { if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.InProgress) { cmdItem.status = DeviceCmdStatusText.DroneBatteryModeMaintenanceInProgressText; cmdItem.loading = true; } else if (isExecuteFailed(deviceCmdExecuteInfo.output.status)) { cmdItem.status = DeviceCmdStatusText.DroneBatteryModeMaintenanceInProgressText; cmdItem.loading = false; } else if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.OK) { cmdItem.status = DeviceCmdStatusText.DroneBatteryModeMaintenanceNeedText; cmdItem.loading = false; } } } else if (cmdItem.cmdKey === DeviceCmd.SdrWorkModeSwitch) { // 增强图传 if (cmdItem.action === LinkWorkModeEnum.SDR) { // 关闭 if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.InProgress) { cmdItem.status = DeviceCmdStatusText.SdrWorkModeFourGCloseText; cmdItem.loading = true; } else if (isExecuteFailed(deviceCmdExecuteInfo.output.status)) { cmdItem.status = DeviceCmdStatusText.SdrWorkModeFourGCloseFailedText; cmdItem.loading = false; } else if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.OK) { cmdItem.status = DeviceCmdStatusText.SdrWorkModeFourGCloseNormalText; cmdItem.loading = false; } } else if (cmdItem.action === LinkWorkModeEnum.FourG_FUSION_MODE) { // 开启 if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.InProgress) { cmdItem.status = DeviceCmdStatusText.SdrWorkModeFourGOpenText; cmdItem.loading = true; } else if (isExecuteFailed(deviceCmdExecuteInfo.output.status)) { cmdItem.status = DeviceCmdStatusText.SdrWorkModeFourGOpenFailedText; cmdItem.loading = false; } else if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.OK) { cmdItem.status = DeviceCmdStatusText.SdrWorkModeFourGOpenNormalText; cmdItem.loading = false; } } } } }); } /** * 交换指令 * @param cmd */ function exchangeDeviceCmd(cmdItem) { if (cmdItem.oppositeCmdKey) { const oppositeCmdKey = cmdItem.oppositeCmdKey; cmdItem.oppositeCmdKey = cmdItem.cmdKey; cmdItem.cmdKey = oppositeCmdKey; } } /** * 判断是否执行失败 * @param status * @returns */ function isExecuteFailed(status) { return [ DeviceCmdExecuteStatus.Canceled, DeviceCmdExecuteStatus.Failed, DeviceCmdExecuteStatus.Timeout, ].includes(status); }