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,
|
},
|
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 = {
|
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;
|