import { EDeviceTypeName } from '@/types'
|
|
const initStateFunc = () => ({
|
Layers: [
|
{
|
name: 'default',
|
id: '',
|
is_distributed: true,
|
elements: [],
|
is_check: false,
|
is_select: false,
|
type: 1,
|
},
|
{
|
name: 'share',
|
id: '',
|
is_distributed: true,
|
elements: [],
|
is_check: false,
|
is_select: false,
|
type: 2,
|
},
|
],
|
layerBaseInfo: {},
|
drawVisible: false,
|
coverList: [],
|
wsEvent: {
|
mapElementCreat: {},
|
mapElementUpdate: {},
|
mapElementDelete: {},
|
},
|
deviceStatusEvent: {
|
deviceOnline: {},
|
deviceOffline: {},
|
},
|
markerInfo: {
|
coverMap: {},
|
pathMap: {},
|
},
|
deviceState: {
|
// remote controller, dock
|
gatewayInfo: {},
|
// drone
|
deviceInfo: {},
|
dockInfo: {},
|
currentSn: '',
|
currentType: -1,
|
},
|
videoSurveillance: {}, // 视频监控相关信息
|
osdVisible: {
|
// osd 显示设备相关信息
|
sn: '',
|
|
callsign: '',
|
model: '',
|
visible: false,
|
gateway_sn: '',
|
is_dock: false,
|
payloads: null,
|
device_domain: '',
|
device_sub_type: '',
|
device_type: '',
|
},
|
waylineInfo: {},
|
dockInfo: {},
|
hmsInfo: {},
|
hmsInfoDetailSn: '',
|
// 机场指令执行状态信息
|
devicesCmdExecuteInfo: {},
|
mqttState: null, // mqtt 实例
|
clientId: '', // mqtt 连接 唯一客户端id,
|
waylineTool: {
|
isShow: false,
|
selectedPoint: undefined,
|
selectedAction: undefined,
|
kmzPath: '',
|
},
|
})
|
|
const mutations = {
|
// 获取视频相关信息
|
SAVE_VIDEO_SURVEILLANCE_INFO (state, info) {
|
console.log('videoSurveillanceInfo', info)
|
state.videoSurveillance = info
|
},
|
SET_LAYER_INFO (state, info) {
|
state.Layers = info
|
},
|
SET_DEVICE_INFO (state, info) {
|
state.deviceState.deviceInfo[info.sn] = info.host
|
state.deviceState.currentSn = info.sn
|
state.deviceState.currentType = EDeviceTypeName.Aircraft
|
},
|
SET_GATEWAY_INFO (state, info) {
|
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] = {}
|
}
|
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_HMSInfo_DetailSn (state, data) {
|
state.hmsInfoDetailSn = data
|
},
|
SET_DRAW_VISIBLE_INFO (state, bool) {
|
state.drawVisible = bool
|
},
|
SET_MAP_ELEMENT_CREATE (state, info) {
|
state.wsEvent.mapElementCreat = info
|
},
|
SET_MAP_ELEMENT_UPDATE (state, info) {
|
state.wsEvent.mapElementUpdate = info
|
},
|
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 = 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
|
},
|
// 设置wayline中的信息
|
SET_WAYLINE_INFO (state, { isShow, selectedPoint, selectedAction }) {
|
isShow !== undefined && (state.waylineTool.isShow = isShow)
|
state.waylineTool.selectedPoint = selectedPoint
|
selectedAction !== undefined && (state.waylineTool.selectedAction = selectedAction)
|
},
|
SET_WAYLINE_KMZPATH (state, kmzPath) {
|
state.waylineTool.kmzPath = kmzPath
|
},
|
}
|
|
const actions = {
|
updateElement ({ state }, content) {
|
const key = content.id.replaceAll('resource__', '')
|
const type = content.type
|
const layers = state.Layers
|
const layer = layers.find(item => item.id === key)
|
if (layer) {
|
layer[type] = content.bool
|
}
|
},
|
|
getLayerInfo ({ state }, id) {
|
return state.layerBaseInfo[id]
|
},
|
}
|
|
const device = {
|
state: initStateFunc,
|
mutations,
|
actions,
|
}
|
|
export default device
|