| | |
| | | import { Device, DeviceHms, DeviceOsd, DeviceStatus, DockOsd, GatewayOsd, OSDVisible } from '../types/device' |
| | | import { getLayers } from '/@/api/layer' |
| | | import { LayerType } from '/@/types/mapLayer' |
| | | import { ETaskStatus, TaskInfo, WaylineFile } from '/@/types/wayline' |
| | | 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: [], |
| | |
| | | type: 1 |
| | | }, |
| | | { |
| | | name: 'share', |
| | | name: '共享', |
| | | id: '', |
| | | is_distributed: true, |
| | | elements: [], |
| | |
| | | [sn: string]: DockOsd |
| | | }, |
| | | currentSn: '', |
| | | currentType: '' |
| | | currentType: -1 |
| | | }, |
| | | osdVisible: { |
| | | osdVisible: { // osd 显示设备相关信息 |
| | | sn: '', |
| | | callsign: '', |
| | | model: '', |
| | | visible: false, |
| | | gateway_sn: '', |
| | | is_dock: false, |
| | | payloads: null |
| | | } as OSDVisible, |
| | | waylineInfo: { |
| | | |
| | |
| | | dockInfo: { |
| | | |
| | | } as Device, |
| | | taskProgressInfo: { |
| | | |
| | | } as { |
| | | [bid: string]: TaskInfo |
| | | }, |
| | | hmsInfo: {} as { |
| | | [sn: string]: DeviceHms[] |
| | | } |
| | | }, |
| | | // 机场指令执行状态信息 |
| | | devicesCmdExecuteInfo: { |
| | | } as DevicesCmdExecuteInfo, |
| | | mqttState: null as any, // mqtt 实例 |
| | | clientId: '', // mqtt 连接 唯一客户端id |
| | | }) |
| | | |
| | | export type RootStateType = ReturnType<typeof initStateFunc> |
| | |
| | | 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.sdr && state.deviceState.dockInfo[info.sn]) { |
| | | dock.sdr = info.host.sdr |
| | | dock.media_file_detail = info.host.media_file_detail |
| | | if (info.host.mode_code !== undefined) { |
| | | dock.basic_osd = info.host |
| | | return |
| | | } |
| | | const sdr = dock?.sdr |
| | | const mediaFileDetail = dock?.media_file_detail |
| | | state.deviceState.dockInfo[info.sn] = info.host |
| | | state.deviceState.dockInfo[info.sn].sdr = sdr |
| | | state.deviceState.dockInfo[info.sn].media_file_detail = mediaFileDetail |
| | | 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 |
| | |
| | | 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_SELECT_DOCK_INFO (state, info) { |
| | | state.dockInfo = info |
| | | }, |
| | | SET_FLIGHT_TASK_PROGRESS (state, info) { |
| | | const taskInfo: TaskInfo = info.output |
| | | |
| | | if (taskInfo.status === ETaskStatus.OK || taskInfo.status === ETaskStatus.FAILED) { |
| | | taskInfo.status = taskInfo.status.concat('(Code:').concat(info.result).concat(')') |
| | | setTimeout(() => { |
| | | delete state.taskProgressInfo[info.bid] |
| | | }, 60000) |
| | | } |
| | | state.taskProgressInfo[info.bid] = info.output |
| | | }, |
| | | 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 |
| | | }, |
| | | } |
| | | |
| | | const actions: ActionTree<RootStateType, RootStateType> = { |
| | |
| | | state: initStateFunc, |
| | | getters, |
| | | mutations, |
| | | actions |
| | | actions, |
| | | modules: { |
| | | getter, |
| | | map, |
| | | common |
| | | }, |
| | | } |
| | | |
| | | const rootStore = createStore(storeOptions) |