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