From 3667807a7b7418efc090ee3fa6a6b734bc3080bf Mon Sep 17 00:00:00 2001
From: xieb <vip_xiaobin810@163.com>
Date: Wed, 13 Sep 2023 20:36:29 +0800
Subject: [PATCH] Merge branch 'develop' of http://s16s652780.51mypc.cn:49896/r/yskj/iot_drone_web into develop
---
src/store/index.ts | 159 ++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 145 insertions(+), 14 deletions(-)
diff --git a/src/store/index.ts b/src/store/index.ts
index ac46e37..56d32af 100644
--- a/src/store/index.ts
+++ b/src/store/index.ts
@@ -1,11 +1,19 @@
import { InjectionKey } from 'vue'
import { ActionTree, createStore, GetterTree, MutationTree, Store, StoreOptions, useStore } from 'vuex'
+import { EDeviceTypeName } from '../types'
+import { Device, DeviceHms, DeviceOsd, DeviceStatus, DockOsd, GatewayOsd, OSDVisible } from '../types/device'
import { getLayers } from '/@/api/layer'
import { LayerType } from '/@/types/mapLayer'
+import { WaylineFile } from '/@/types/wayline'
+import getter from './getters'
+import { DevicesCmdExecuteInfo } from '/@/types/device-cmd'
+import map from './map'
+import common from '/@/store/common'
+
const initStateFunc = () => ({
Layers: [
{
- name: 'default',
+ name: '默认',
id: '',
is_distributed: true,
elements: [],
@@ -14,7 +22,7 @@
type: 1
},
{
- name: 'share',
+ name: '共享',
id: '',
is_distributed: true,
elements: [],
@@ -23,12 +31,6 @@
type: 2
}
],
- GatewayInfo: { // remote controller, dock
-
- },
- DeviceInfo: { // drone
-
- },
layerBaseInfo: {} as {
[key:string]:string
},
@@ -40,7 +42,57 @@
mapElementCreat: {},
mapElementUpdate: {},
mapElementDelete: {}
- }
+ },
+ deviceStatusEvent: {
+ deviceOnline: {} as DeviceStatus,
+ deviceOffline: {}
+ },
+ markerInfo: {
+ coverMap: {} as {
+ [sn: string]: any
+ },
+ pathMap: {} as {
+ [sn: string]: any[]
+ }
+ },
+ deviceState: {
+ // remote controller, dock
+ gatewayInfo: {} as {
+ [sn: string]: GatewayOsd
+ },
+ // drone
+ deviceInfo: {} as {
+ [sn: string]: DeviceOsd
+ },
+ dockInfo: {} as {
+ [sn: string]: DockOsd
+ },
+ currentSn: '',
+ currentType: -1
+ },
+ osdVisible: { // osd 显示设备相关信息
+ sn: '',
+ callsign: '',
+ model: '',
+ visible: false,
+ gateway_sn: '',
+ is_dock: false,
+ payloads: null
+ } as OSDVisible,
+ waylineInfo: {
+
+ } as WaylineFile,
+ dockInfo: {
+
+ } as Device,
+ hmsInfo: {} as {
+ [sn: string]: DeviceHms[]
+ },
+ // 机场指令执行状态信息
+ devicesCmdExecuteInfo: {
+ } as DevicesCmdExecuteInfo,
+ mqttState: null as any, // mqtt 实例
+ clientId: '', // mqtt 连接 唯一客户端id
})
export type RootStateType = ReturnType<typeof initStateFunc>
@@ -52,12 +104,36 @@
state.Layers = info
},
SET_DEVICE_INFO (state, info) {
- state.DeviceInfo = info
- // console.log(state.DeviceInfo)
+ state.deviceState.deviceInfo[info.sn] = info.host
+ state.deviceState.currentSn = info.sn
+ state.deviceState.currentType = EDeviceTypeName.Aircraft
},
SET_GATEWAY_INFO (state, info) {
- state.GatewayInfo = info
- // console.log(state.GatewayInfo)
+ state.deviceState.gatewayInfo[info.sn] = info.host
+ state.deviceState.currentSn = info.sn
+ state.deviceState.currentType = EDeviceTypeName.Gateway
+ },
+ SET_DOCK_INFO (state, info) {
+ if (Object.keys(info.host).length === 0) {
+ return
+ }
+ if (!state.deviceState.dockInfo[info.sn]) {
+ state.deviceState.dockInfo[info.sn] = { } as DockOsd
+ }
+ state.deviceState.currentSn = info.sn
+ state.deviceState.currentType = EDeviceTypeName.Dock
+ const dock = state.deviceState.dockInfo[info.sn]
+ if (info.host.mode_code !== undefined) {
+ dock.basic_osd = info.host
+ return
+ }
+ if (info.host.sdr) {
+ dock.link_osd = info.host
+ return
+ }
+ if (info.host.job_number !== undefined) {
+ dock.work_osd = info.host
+ }
},
SET_DRAW_VISIBLE_INFO (state, bool) {
state.drawVisible = bool
@@ -70,6 +146,56 @@
},
SET_MAP_ELEMENT_DELETE (state, info) {
state.wsEvent.mapElementDelete = info
+ },
+ SET_DEVICE_ONLINE (state, info) {
+ state.deviceStatusEvent.deviceOnline = info
+ },
+ SET_DEVICE_OFFLINE (state, info) {
+ state.deviceStatusEvent.deviceOffline = info
+ delete state.deviceState.gatewayInfo[info.sn]
+ delete state.deviceState.deviceInfo[info.sn]
+ delete state.deviceState.dockInfo[info.sn]
+ delete state.hmsInfo[info.sn]
+ // delete state.markerInfo.coverMap[info.sn]
+ // delete state.markerInfo.pathMap[info.sn]
+ },
+ SET_OSD_VISIBLE_INFO (state, info) {
+ state.osdVisible = info
+ },
+ SET_SELECT_WAYLINE_INFO (state, info) {
+ state.waylineInfo = info
+ },
+ SET_SELECT_DOCK_INFO (state, info) {
+ state.dockInfo = info
+ },
+ SET_DEVICE_HMS_INFO (state, info) {
+ const hmsList: Array<DeviceHms> = state.hmsInfo[info.sn]
+ state.hmsInfo[info.sn] = info.host.concat(hmsList ?? [])
+ },
+ SET_DEVICES_CMD_EXECUTE_INFO (state, info) { // 保存设备指令ws消息推送
+ if (!info.sn) {
+ return
+ }
+ if (state.devicesCmdExecuteInfo[info.sn]) {
+ const index = state.devicesCmdExecuteInfo[info.sn].findIndex(cmdExecuteInfo => cmdExecuteInfo.biz_code === info.biz_code)
+ if (index >= 0) {
+ // 丢弃前面的消息
+ if (state.devicesCmdExecuteInfo[info.sn][index].timestamp > info.timestamp) {
+ return
+ }
+ state.devicesCmdExecuteInfo[info.sn][index] = info
+ } else {
+ state.devicesCmdExecuteInfo[info.sn].push(info)
+ }
+ } else {
+ state.devicesCmdExecuteInfo[info.sn] = [info]
+ }
+ },
+ SET_MQTT_STATE (state, mqttState) {
+ state.mqttState = mqttState
+ },
+ SET_CLIENT_ID (state, clientId) {
+ state.clientId = clientId
},
}
@@ -117,7 +243,12 @@
state: initStateFunc,
getters,
mutations,
- actions
+ actions,
+ modules: {
+ getter,
+ map,
+ common
+ },
}
const rootStore = createStore(storeOptions)
--
Gitblit v1.9.3