device-cmd.ts 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523
  1. import { DroneBatteryModeEnum, DroneBatteryStateEnum, LinkWorkModeEnum } from './../types/airport-tsa'
  2. import { DeviceInfoType } from '/@/types/device'
  3. import { DeviceCmd, DeviceCmdItem, DeviceCmdExecuteInfo, DeviceCmdStatusText, DeviceCmdExecuteStatus } from '/@/types/device-cmd'
  4. import { AirportStorage, CoverStateEnum, PutterStateEnum, ChargeStateEnum, SupplementLightStateEnum, AlarmModeEnum, BatteryStoreModeEnum } from '/@/types/airport-tsa'
  5. import { getBytesObject } from './bytes'
  6. import { DEFAULT_PLACEHOLDER } from './constants'
  7. /**
  8. * 根据osd 更新信息
  9. * @param cmdList
  10. * @param deviceInfo
  11. * @returns
  12. */
  13. export function updateDeviceCmdInfoByOsd (cmdList: DeviceCmdItem[], deviceInfo: DeviceInfoType) {
  14. const { device, dock, gateway } = deviceInfo || {}
  15. if (!cmdList || cmdList.length < 1) {
  16. return
  17. }
  18. cmdList.forEach(cmdItem => {
  19. if (cmdItem.loading) {
  20. return
  21. }
  22. if (cmdItem.cmdKey === DeviceCmd.DeviceReboot) { // 重启
  23. // console.log('DeviceReboot')
  24. } else if (cmdItem.cmdKey === DeviceCmd.DroneOpen || cmdItem.cmdKey === DeviceCmd.DroneClose) { // 飞行器开关机
  25. getDroneState(cmdItem, device)
  26. } else if (cmdItem.cmdKey === DeviceCmd.CoverOpen || cmdItem.cmdKey === DeviceCmd.CoverClose) { // 舱盖开关
  27. getCoverState(cmdItem, dock)
  28. } else if (cmdItem.cmdKey === DeviceCmd.PutterOpen || cmdItem.cmdKey === DeviceCmd.PutterClose) { // 推杆闭合展开
  29. getPutterState(cmdItem, dock)
  30. } else if (cmdItem.cmdKey === DeviceCmd.ChargeOpen || cmdItem.cmdKey === DeviceCmd.ChargeClose) { // 充电状态
  31. getChargeState(cmdItem, dock)
  32. } else if (cmdItem.cmdKey === DeviceCmd.DeviceFormat) { // 机场存储
  33. deviceFormat(cmdItem, dock)
  34. } else if (cmdItem.cmdKey === DeviceCmd.DroneFormat) { // 飞行器存储
  35. droneFormat(cmdItem, device)
  36. } else if (cmdItem.cmdKey === DeviceCmd.SupplementLightOpen || cmdItem.cmdKey === DeviceCmd.SupplementLightClose) { // 补光灯开关
  37. getSupplementLightState(cmdItem, dock)
  38. } else if (cmdItem.cmdKey === DeviceCmd.AlarmStateSwitch) { // 声光报警
  39. getAlarmState(cmdItem, dock)
  40. } else if (cmdItem.cmdKey === DeviceCmd.BatteryStoreModeSwitch) { // 电池保养
  41. getBatteryStoreMode(cmdItem, dock)
  42. } else if (cmdItem.cmdKey === DeviceCmd.DroneBatteryModeSwitch) { // 飞行器电池保养
  43. getDroneBatteryMode(cmdItem, dock)
  44. } else if (cmdItem.cmdKey === DeviceCmd.SdrWorkModeSwitch) { // 增强图传开关
  45. getSdrWorkNode(cmdItem, dock)
  46. }
  47. })
  48. }
  49. // 飞行器开关机
  50. function getDroneState (cmdItem: DeviceCmdItem, droneProperties: any) {
  51. if (!droneProperties) {
  52. cmdItem.status = DeviceCmdStatusText.DroneStatusCloseNormalText
  53. cmdItem.operateText = DeviceCmdStatusText.DroneStatusCloseBtnText
  54. if (cmdItem.cmdKey !== DeviceCmd.DroneOpen) {
  55. exchangeDeviceCmd(cmdItem)
  56. }
  57. } else {
  58. cmdItem.status = DeviceCmdStatusText.DroneStatusOpenNormalText
  59. cmdItem.operateText = DeviceCmdStatusText.DroneStatusOpenBtnText
  60. if (cmdItem.cmdKey !== DeviceCmd.DroneClose) {
  61. exchangeDeviceCmd(cmdItem)
  62. }
  63. }
  64. }
  65. // 舱盖开关
  66. function getCoverState (cmdItem: DeviceCmdItem, airportProperties: any) {
  67. const coverState = airportProperties?.basic_osd?.cover_state as CoverStateEnum
  68. if (coverState === CoverStateEnum.Close || coverState === CoverStateEnum.Failed) {
  69. cmdItem.status = DeviceCmdStatusText.DeviceCoverCloseNormalText
  70. cmdItem.operateText = DeviceCmdStatusText.DeviceCoverCloseBtnText
  71. if (cmdItem.cmdKey !== DeviceCmd.CoverOpen) {
  72. exchangeDeviceCmd(cmdItem)
  73. }
  74. } else if (coverState === CoverStateEnum.Open || coverState === CoverStateEnum.HalfOpen) {
  75. cmdItem.status = DeviceCmdStatusText.DeviceCoverOpenNormalText
  76. cmdItem.operateText = DeviceCmdStatusText.DeviceCoverOpenBtnText
  77. if (cmdItem.cmdKey !== DeviceCmd.CoverClose) {
  78. exchangeDeviceCmd(cmdItem)
  79. }
  80. }
  81. }
  82. // 推杆状态
  83. function getPutterState (cmdItem: DeviceCmdItem, airportProperties: any) {
  84. const putterState = airportProperties?.basic_osd?.putter_state as PutterStateEnum
  85. if (putterState === PutterStateEnum.Close || putterState === PutterStateEnum.Failed) {
  86. cmdItem.status = DeviceCmdStatusText.DevicePutterCloseNormalText
  87. cmdItem.operateText = DeviceCmdStatusText.DevicePutterCloseBtnText
  88. if (cmdItem.cmdKey !== DeviceCmd.PutterOpen) {
  89. exchangeDeviceCmd(cmdItem)
  90. }
  91. } else if (putterState === PutterStateEnum.Open || putterState === PutterStateEnum.HalfOpen) {
  92. cmdItem.status = DeviceCmdStatusText.DevicePutterOpenNormalText
  93. cmdItem.operateText = DeviceCmdStatusText.DevicePutterOpenBtnText
  94. if (cmdItem.cmdKey !== DeviceCmd.PutterClose) {
  95. exchangeDeviceCmd(cmdItem)
  96. }
  97. }
  98. }
  99. // 充电状态
  100. function getChargeState (cmdItem: DeviceCmdItem, airportProperties: any) {
  101. const chargeState = airportProperties?.basic_osd?.drone_charge_state
  102. const state = chargeState?.state as ChargeStateEnum
  103. if (!state) return
  104. if (state === ChargeStateEnum.Charge) {
  105. cmdItem.status = DeviceCmdStatusText.DeviceChargeOpenNormalText
  106. cmdItem.operateText = DeviceCmdStatusText.DeviceChargeOpenBtnText
  107. if (cmdItem.cmdKey !== DeviceCmd.ChargeClose) {
  108. exchangeDeviceCmd(cmdItem)
  109. }
  110. } else if (state === ChargeStateEnum.NotCharge) {
  111. cmdItem.status = DeviceCmdStatusText.DeviceChargeCloseNormalText
  112. cmdItem.operateText = DeviceCmdStatusText.DeviceChargeCloseBtnText
  113. if (cmdItem.cmdKey !== DeviceCmd.ChargeOpen) {
  114. exchangeDeviceCmd(cmdItem)
  115. }
  116. }
  117. }
  118. // 机场存储格式化
  119. function deviceFormat (cmdItem: DeviceCmdItem, airportProperties: any) {
  120. const airportStorage = airportProperties?.basic_osd?.storage
  121. const value = getAirportStorage(airportStorage)
  122. cmdItem.status = value
  123. }
  124. // 机场存储格式化
  125. function droneFormat (cmdItem: DeviceCmdItem, droneProperties: any) {
  126. const droneStorage = droneProperties?.storage
  127. const value = getAirportStorage(droneStorage)
  128. cmdItem.status = value
  129. }
  130. // 获取机场存储容量
  131. // {
  132. // "total": 10000, // 单位:KB
  133. // "used": 500
  134. // }
  135. export function getAirportStorage (storage: AirportStorage) {
  136. if (!storage) {
  137. return DEFAULT_PLACEHOLDER
  138. }
  139. const total = storage.total
  140. const used = storage.used
  141. const byteObj = getBytesObject(total * 1024)
  142. const _total = byteObj.value
  143. const _used = getBytes(used * 1024, byteObj.index)
  144. return `${_used}/${_total} ${byteObj.size}`
  145. }
  146. function getBytes (bytes: number, index: number, fixed = 1) {
  147. return (bytes / Math.pow(1024, index)).toFixed(fixed)
  148. }
  149. // 补光灯状态
  150. function getSupplementLightState (cmdItem: DeviceCmdItem, airportProperties: any) {
  151. const supplementLightState = airportProperties?.basic_osd?.supplement_light_state
  152. if (supplementLightState === SupplementLightStateEnum.Close) {
  153. cmdItem.operateText = DeviceCmdStatusText.DeviceSupplementLightCloseBtnText
  154. cmdItem.status = DeviceCmdStatusText.DeviceSupplementLightCloseNormalText
  155. if (cmdItem.cmdKey !== DeviceCmd.SupplementLightOpen) {
  156. exchangeDeviceCmd(cmdItem)
  157. }
  158. } else if (supplementLightState === SupplementLightStateEnum.Open) {
  159. cmdItem.operateText = DeviceCmdStatusText.DeviceSupplementLightOpenBtnText
  160. cmdItem.status = DeviceCmdStatusText.DeviceSupplementLightOpenNormalText
  161. if (cmdItem.cmdKey !== DeviceCmd.SupplementLightClose) {
  162. exchangeDeviceCmd(cmdItem)
  163. }
  164. }
  165. }
  166. // 声光报警
  167. function getAlarmState (cmdItem: DeviceCmdItem, airportProperties: any) {
  168. const alarmState = airportProperties?.basic_osd?.alarm_state
  169. if (alarmState === AlarmModeEnum.CLOSE) {
  170. cmdItem.operateText = DeviceCmdStatusText.AlarmStateCloseBtnText
  171. cmdItem.status = DeviceCmdStatusText.AlarmStateCloseNormalText
  172. cmdItem.action = AlarmModeEnum.OPEN
  173. } else if (alarmState === AlarmModeEnum.OPEN) {
  174. cmdItem.operateText = DeviceCmdStatusText.AlarmStateOpenBtnText
  175. cmdItem.status = DeviceCmdStatusText.AlarmStateOpenNormalText
  176. cmdItem.action = AlarmModeEnum.CLOSE
  177. }
  178. }
  179. // 机场电池模式
  180. function getBatteryStoreMode (cmdItem: DeviceCmdItem, airportProperties: any) {
  181. const batteryStoreMode = airportProperties?.basic_osd?.battery_store_mode
  182. if (batteryStoreMode === BatteryStoreModeEnum.BATTERY_PLAN_STORE) {
  183. cmdItem.operateText = DeviceCmdStatusText.BatteryStoreModePlanBtnText
  184. cmdItem.status = DeviceCmdStatusText.BatteryStoreModePlanNormalText
  185. cmdItem.action = BatteryStoreModeEnum.BATTERY_EMERGENCY_STORE
  186. } else if (batteryStoreMode === BatteryStoreModeEnum.BATTERY_EMERGENCY_STORE) {
  187. cmdItem.operateText = DeviceCmdStatusText.BatteryStoreModeEmergencyBtnText
  188. cmdItem.status = DeviceCmdStatusText.BatteryStoreModeEmergencyNormalText
  189. cmdItem.action = BatteryStoreModeEnum.BATTERY_PLAN_STORE
  190. }
  191. }
  192. // 飞行器电池保养
  193. function getDroneBatteryMode (cmdItem: DeviceCmdItem, airportProperties: any) {
  194. const maintenanceState = airportProperties?.work_osd?.drone_battery_maintenance_info?.maintenance_state
  195. if (maintenanceState === DroneBatteryStateEnum.MaintenanceInProgress) {
  196. cmdItem.operateText = DeviceCmdStatusText.DroneBatteryModeCloseBtnText
  197. cmdItem.status = DeviceCmdStatusText.DroneBatteryModeMaintenanceInProgressText
  198. cmdItem.action = DroneBatteryModeEnum.CLOSE
  199. cmdItem.disabled = false
  200. } else if (maintenanceState === DroneBatteryStateEnum.NoMaintenanceRequired) {
  201. cmdItem.operateText = DeviceCmdStatusText.DroneBatteryModeOpenBtnText
  202. cmdItem.status = DeviceCmdStatusText.DroneBatteryModeMaintenanceNotNeedText
  203. cmdItem.action = DroneBatteryModeEnum.OPEN
  204. cmdItem.disabled = true
  205. } else if (maintenanceState === DroneBatteryStateEnum.MaintenanceRequired) {
  206. cmdItem.operateText = DeviceCmdStatusText.DroneBatteryModeOpenBtnText
  207. cmdItem.status = DeviceCmdStatusText.DroneBatteryModeMaintenanceNeedText
  208. cmdItem.action = DroneBatteryModeEnum.OPEN
  209. cmdItem.disabled = false
  210. }
  211. }
  212. // 增强图传开关
  213. function getSdrWorkNode (cmdItem: DeviceCmdItem, airportProperties: any) {
  214. const linkWorkMode = airportProperties?.link_osd?.wireless_link?.link_workmode
  215. if (linkWorkMode === LinkWorkModeEnum.SDR) {
  216. cmdItem.operateText = DeviceCmdStatusText.SdrWorkModeFourCloseBtnText
  217. cmdItem.status = DeviceCmdStatusText.SdrWorkModeFourGCloseNormalText
  218. cmdItem.action = LinkWorkModeEnum.FourG_FUSION_MODE
  219. } else if (linkWorkMode === LinkWorkModeEnum.FourG_FUSION_MODE) {
  220. cmdItem.operateText = DeviceCmdStatusText.SdrWorkModeFourGOpenBtnText
  221. cmdItem.status = DeviceCmdStatusText.SdrWorkModeFourGOpenNormalText
  222. cmdItem.action = LinkWorkModeEnum.SDR
  223. }
  224. }
  225. /**
  226. * 交换指令
  227. * @param cmd
  228. */
  229. function exchangeDeviceCmd (cmdItem: DeviceCmdItem) {
  230. if (cmdItem.oppositeCmdKey) {
  231. const oppositeCmdKey = cmdItem.oppositeCmdKey
  232. cmdItem.oppositeCmdKey = cmdItem.cmdKey
  233. cmdItem.cmdKey = oppositeCmdKey
  234. }
  235. }
  236. // /**
  237. // * 更新简单指令发送情况更新信息
  238. // * @param cmd
  239. // */
  240. // export function updateDeviceSingleCmdInfo (cmdItem: DeviceCmdItem) {
  241. // // 补光灯
  242. // if (cmdItem.cmdKey === DeviceCmd.SupplementLightOpen) {
  243. // cmdItem.status = DeviceCmdStatusText.DeviceSupplementLightOpenNormalText
  244. // cmdItem.operateText = DeviceCmdStatusText.DeviceSupplementLightOpenBtnText
  245. // exchangeDeviceCmd(cmdItem)
  246. // } else if (cmdItem.cmdKey === DeviceCmd.SupplementLightClose) {
  247. // cmdItem.status = DeviceCmdStatusText.DeviceSupplementLightCloseNormalText
  248. // cmdItem.operateText = DeviceCmdStatusText.DeviceSupplementLightCloseBtnText
  249. // exchangeDeviceCmd(cmdItem)
  250. // }
  251. // }
  252. /**
  253. * 根据指令执行消息更新信息
  254. * @param cmd
  255. * @param deviceCmdExecuteInfo
  256. * @returns
  257. */
  258. export function updateDeviceCmdInfoByExecuteInfo (cmdList: DeviceCmdItem[], deviceCmdExecuteInfos?: DeviceCmdExecuteInfo[]) {
  259. if (!deviceCmdExecuteInfos || !cmdList) {
  260. return
  261. }
  262. cmdList.forEach(cmdItem => {
  263. // 获取当前设备相应指令信息
  264. const deviceCmdExecuteInfo = deviceCmdExecuteInfos.find(cmdExecuteInfo => cmdExecuteInfo.biz_code === cmdItem.cmdKey)
  265. if (deviceCmdExecuteInfo) {
  266. if (cmdItem.cmdKey === DeviceCmd.DeviceReboot) { // 重启
  267. if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.InProgress) {
  268. cmdItem.status = DeviceCmdStatusText.DeviceRebootInProgressText
  269. cmdItem.loading = true
  270. } else if (isExecuteFailed(deviceCmdExecuteInfo.output.status)) {
  271. cmdItem.status = DeviceCmdStatusText.DeviceRebootFailedText
  272. cmdItem.loading = false
  273. } else if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.OK) {
  274. cmdItem.status = DeviceCmdStatusText.DeviceRebootNormalText
  275. cmdItem.loading = false
  276. }
  277. } else if (cmdItem.cmdKey === DeviceCmd.DroneOpen) { // 飞行器开关机
  278. if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.InProgress) {
  279. cmdItem.status = DeviceCmdStatusText.DroneStatusOpenInProgressText
  280. cmdItem.loading = true
  281. } else if (isExecuteFailed(deviceCmdExecuteInfo.output.status)) {
  282. cmdItem.status = DeviceCmdStatusText.DroneStatusOpenFailedText
  283. cmdItem.loading = false
  284. } else if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.OK) {
  285. cmdItem.status = DeviceCmdStatusText.DroneStatusOpenNormalText
  286. cmdItem.operateText = DeviceCmdStatusText.DroneStatusOpenBtnText
  287. exchangeDeviceCmd(cmdItem)
  288. cmdItem.loading = false
  289. }
  290. } else if (cmdItem.cmdKey === DeviceCmd.DroneClose) {
  291. if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.InProgress) {
  292. cmdItem.status = DeviceCmdStatusText.DroneStatusCloseInProgressText
  293. cmdItem.loading = true
  294. } else if (isExecuteFailed(deviceCmdExecuteInfo.output.status)) {
  295. cmdItem.status = DeviceCmdStatusText.DroneStatusCloseFailedText
  296. cmdItem.loading = false
  297. } else if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.OK) {
  298. cmdItem.status = DeviceCmdStatusText.DroneStatusCloseNormalText
  299. cmdItem.operateText = DeviceCmdStatusText.DroneStatusCloseBtnText
  300. exchangeDeviceCmd(cmdItem)
  301. cmdItem.loading = false
  302. }
  303. } else if (cmdItem.cmdKey === DeviceCmd.CoverOpen) { // 舱盖开关
  304. if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.InProgress) {
  305. cmdItem.status = DeviceCmdStatusText.DeviceCoverOpenInProgressText
  306. cmdItem.loading = true
  307. } else if (isExecuteFailed(deviceCmdExecuteInfo.output.status)) {
  308. cmdItem.status = DeviceCmdStatusText.DeviceCoverOpenFailedText
  309. cmdItem.loading = false
  310. } else if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.OK) {
  311. cmdItem.status = DeviceCmdStatusText.DeviceCoverOpenNormalText
  312. cmdItem.operateText = DeviceCmdStatusText.DeviceCoverOpenBtnText
  313. exchangeDeviceCmd(cmdItem)
  314. cmdItem.loading = false
  315. }
  316. } else if (cmdItem.cmdKey === DeviceCmd.CoverClose) {
  317. if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.InProgress) {
  318. cmdItem.status = DeviceCmdStatusText.DeviceCoverCloseInProgressText
  319. cmdItem.loading = true
  320. } else if (isExecuteFailed(deviceCmdExecuteInfo.output.status)) {
  321. cmdItem.status = DeviceCmdStatusText.DeviceCoverCloseFailedText
  322. cmdItem.loading = false
  323. } else if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.OK) {
  324. cmdItem.status = DeviceCmdStatusText.DeviceCoverCloseNormalText
  325. cmdItem.operateText = DeviceCmdStatusText.DeviceCoverCloseBtnText
  326. exchangeDeviceCmd(cmdItem)
  327. cmdItem.loading = false
  328. }
  329. } else if (cmdItem.cmdKey === DeviceCmd.PutterOpen) { // 推杆闭合展开
  330. if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.InProgress) {
  331. cmdItem.status = DeviceCmdStatusText.DevicePutterOpenInProgressText
  332. cmdItem.loading = true
  333. } else if (isExecuteFailed(deviceCmdExecuteInfo.output.status)) {
  334. cmdItem.status = DeviceCmdStatusText.DevicePutterOpenFailedText
  335. cmdItem.loading = false
  336. } else if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.OK) {
  337. cmdItem.status = DeviceCmdStatusText.DevicePutterOpenNormalText
  338. cmdItem.operateText = DeviceCmdStatusText.DevicePutterOpenBtnText
  339. exchangeDeviceCmd(cmdItem)
  340. cmdItem.loading = false
  341. }
  342. } else if (cmdItem.cmdKey === DeviceCmd.PutterClose) {
  343. if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.InProgress) {
  344. cmdItem.status = DeviceCmdStatusText.DevicePutterCloseInProgressText
  345. cmdItem.loading = true
  346. } else if (isExecuteFailed(deviceCmdExecuteInfo.output.status)) {
  347. cmdItem.status = DeviceCmdStatusText.DevicePutterCloseFailedText
  348. cmdItem.loading = false
  349. } else if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.OK) {
  350. cmdItem.status = DeviceCmdStatusText.DevicePutterCloseNormalText
  351. cmdItem.operateText = DeviceCmdStatusText.DevicePutterCloseBtnText
  352. exchangeDeviceCmd(cmdItem)
  353. cmdItem.loading = false
  354. }
  355. } else if (cmdItem.cmdKey === DeviceCmd.ChargeOpen) { // 充电状态
  356. if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.InProgress) {
  357. cmdItem.status = DeviceCmdStatusText.DeviceChargeOpenInProgressText
  358. cmdItem.loading = true
  359. } else if (isExecuteFailed(deviceCmdExecuteInfo.output.status)) {
  360. cmdItem.status = DeviceCmdStatusText.DeviceChargeOpenFailedText
  361. cmdItem.loading = false
  362. } else if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.OK) {
  363. cmdItem.status = DeviceCmdStatusText.DeviceChargeOpenNormalText
  364. cmdItem.operateText = DeviceCmdStatusText.DeviceChargeOpenBtnText
  365. exchangeDeviceCmd(cmdItem)
  366. cmdItem.loading = false
  367. }
  368. } else if (cmdItem.cmdKey === DeviceCmd.ChargeClose) {
  369. if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.InProgress) {
  370. cmdItem.status = DeviceCmdStatusText.DeviceChargeCloseInProgressText
  371. cmdItem.loading = true
  372. } else if (isExecuteFailed(deviceCmdExecuteInfo.output.status)) {
  373. cmdItem.status = DeviceCmdStatusText.DeviceChargeCloseFailedText
  374. cmdItem.loading = false
  375. } else if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.OK) {
  376. cmdItem.status = DeviceCmdStatusText.DeviceChargeCloseNormalText
  377. cmdItem.operateText = DeviceCmdStatusText.DeviceChargeCloseBtnText
  378. exchangeDeviceCmd(cmdItem)
  379. cmdItem.loading = false
  380. }
  381. } else if (cmdItem.cmdKey === DeviceCmd.DeviceFormat) { // 机场存储
  382. if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.InProgress) {
  383. cmdItem.status = DeviceCmdStatusText.DeviceFormatInProgressText
  384. cmdItem.loading = true
  385. } else if (isExecuteFailed(deviceCmdExecuteInfo.output.status)) {
  386. cmdItem.status = DeviceCmdStatusText.DeviceFormatFailedText
  387. cmdItem.loading = false
  388. } else if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.OK) {
  389. cmdItem.loading = false
  390. }
  391. } else if (cmdItem.cmdKey === DeviceCmd.DroneFormat) { // 飞行器存储
  392. if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.InProgress) {
  393. cmdItem.status = DeviceCmdStatusText.DroneFormatInProgressText
  394. cmdItem.loading = true
  395. } else if (isExecuteFailed(deviceCmdExecuteInfo.output.status)) {
  396. cmdItem.status = DeviceCmdStatusText.DroneFormatFailedText
  397. cmdItem.loading = false
  398. } else if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.OK) {
  399. cmdItem.loading = false
  400. }
  401. } else if (cmdItem.cmdKey === DeviceCmd.AlarmStateSwitch) { // 机场声光报警
  402. if (cmdItem.action === AlarmModeEnum.CLOSE) {
  403. if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.InProgress) {
  404. cmdItem.status = DeviceCmdStatusText.AlarmStateCloseText
  405. cmdItem.loading = true
  406. } else if (isExecuteFailed(deviceCmdExecuteInfo.output.status)) {
  407. cmdItem.status = DeviceCmdStatusText.AlarmStateCloseFailedText
  408. cmdItem.loading = false
  409. } else if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.OK) {
  410. cmdItem.loading = false
  411. }
  412. } else if (cmdItem.action === AlarmModeEnum.OPEN) {
  413. if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.InProgress) {
  414. cmdItem.status = DeviceCmdStatusText.AlarmStateOpenText
  415. cmdItem.loading = true
  416. } else if (isExecuteFailed(deviceCmdExecuteInfo.output.status)) {
  417. cmdItem.status = DeviceCmdStatusText.AlarmStateOpenFailedText
  418. cmdItem.loading = false
  419. } else if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.OK) {
  420. cmdItem.loading = false
  421. }
  422. }
  423. } else if (cmdItem.cmdKey === DeviceCmd.BatteryStoreModeSwitch) { // 电池保养
  424. if (cmdItem.action === BatteryStoreModeEnum.BATTERY_PLAN_STORE) {
  425. if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.InProgress) {
  426. cmdItem.status = DeviceCmdStatusText.BatteryStoreModePlanText
  427. cmdItem.loading = true
  428. } else if (isExecuteFailed(deviceCmdExecuteInfo.output.status)) {
  429. cmdItem.status = DeviceCmdStatusText.BatteryStoreModePlanFailedText
  430. cmdItem.loading = false
  431. } else if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.OK) {
  432. cmdItem.loading = false
  433. }
  434. } else if (cmdItem.action === BatteryStoreModeEnum.BATTERY_EMERGENCY_STORE) {
  435. if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.InProgress) {
  436. cmdItem.status = DeviceCmdStatusText.BatteryStoreModeEmergencyText
  437. cmdItem.loading = true
  438. } else if (isExecuteFailed(deviceCmdExecuteInfo.output.status)) {
  439. cmdItem.status = DeviceCmdStatusText.BatteryStoreModeEmergencyFailedText
  440. cmdItem.loading = false
  441. } else if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.OK) {
  442. cmdItem.loading = false
  443. }
  444. }
  445. } else if (cmdItem.cmdKey === DeviceCmd.DroneBatteryModeSwitch) { // 飞行器电池保养
  446. if (cmdItem.action === DroneBatteryModeEnum.OPEN) {
  447. if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.InProgress) {
  448. cmdItem.status = DeviceCmdStatusText.DroneBatteryModeMaintenanceInProgressText
  449. cmdItem.loading = true
  450. } else if (isExecuteFailed(deviceCmdExecuteInfo.output.status)) {
  451. cmdItem.status = DeviceCmdStatusText.DroneBatteryModeMaintenanceNeedText
  452. cmdItem.loading = false
  453. } else if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.OK) {
  454. cmdItem.status = DeviceCmdStatusText.DroneBatteryModeMaintenanceNotNeedText
  455. cmdItem.loading = false
  456. }
  457. } else if (cmdItem.action === DroneBatteryModeEnum.CLOSE) {
  458. if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.InProgress) {
  459. cmdItem.status = DeviceCmdStatusText.DroneBatteryModeMaintenanceInProgressText
  460. cmdItem.loading = true
  461. } else if (isExecuteFailed(deviceCmdExecuteInfo.output.status)) {
  462. cmdItem.status = DeviceCmdStatusText.DroneBatteryModeMaintenanceInProgressText
  463. cmdItem.loading = false
  464. } else if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.OK) {
  465. cmdItem.status = DeviceCmdStatusText.DroneBatteryModeMaintenanceNeedText
  466. cmdItem.loading = false
  467. }
  468. }
  469. } else if (cmdItem.cmdKey === DeviceCmd.SdrWorkModeSwitch) { // 增强图传
  470. if (cmdItem.action === LinkWorkModeEnum.SDR) { // 关闭
  471. if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.InProgress) {
  472. cmdItem.status = DeviceCmdStatusText.SdrWorkModeFourGCloseText
  473. cmdItem.loading = true
  474. } else if (isExecuteFailed(deviceCmdExecuteInfo.output.status)) {
  475. cmdItem.status = DeviceCmdStatusText.SdrWorkModeFourGCloseFailedText
  476. cmdItem.loading = false
  477. } else if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.OK) {
  478. cmdItem.status = DeviceCmdStatusText.SdrWorkModeFourGCloseNormalText
  479. cmdItem.loading = false
  480. }
  481. } else if (cmdItem.action === LinkWorkModeEnum.FourG_FUSION_MODE) { // 开启
  482. if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.InProgress) {
  483. cmdItem.status = DeviceCmdStatusText.SdrWorkModeFourGOpenText
  484. cmdItem.loading = true
  485. } else if (isExecuteFailed(deviceCmdExecuteInfo.output.status)) {
  486. cmdItem.status = DeviceCmdStatusText.SdrWorkModeFourGOpenFailedText
  487. cmdItem.loading = false
  488. } else if (deviceCmdExecuteInfo.output.status === DeviceCmdExecuteStatus.OK) {
  489. cmdItem.status = DeviceCmdStatusText.SdrWorkModeFourGOpenNormalText
  490. cmdItem.loading = false
  491. }
  492. }
  493. }
  494. }
  495. })
  496. }
  497. /**
  498. * 判断是否执行失败
  499. * @param status
  500. * @returns
  501. */
  502. function isExecuteFailed (status: DeviceCmdExecuteStatus) {
  503. return [DeviceCmdExecuteStatus.Canceled, DeviceCmdExecuteStatus.Failed, DeviceCmdExecuteStatus.Timeout].includes(status)
  504. }