rt-sim-training-client/src/store/modules/socket.js

368 lines
12 KiB
JavaScript
Raw Normal View History

2020-04-01 13:47:29 +08:00
import store from '@/store/index_APP_TARGET';
2019-11-05 16:40:36 +08:00
import { Notification } from 'element-ui';
2019-07-26 13:32:43 +08:00
function handle(state, data) {
// console.log(data, 'socket订阅');
2019-11-05 16:40:36 +08:00
const msg = data.body;
const path = window.location.href;
switch (data.type) {
case 'Order_Pay_Result': // 订单支付结果消息
state.payOrder = msg;
break;
case 'JointTraining_Room': // 综合演练室-房间消息
if (!path.includes('/plan') || !path.includes('/dp/')) {
state.jointRoomInfo = msg; // 房间信息
}
break;
case 'JointTraining_User': // 综合演练室-用户消息
handleUserinfo(state, msg); // 分配角色权限消息
break;
case 'JointTraining_Chat': // 综合演练室-群聊消息
handleRecordList(state, msg);
break;
case 'Simulation_DeviceStatus': // 仿真-设备状态消息
state.equipmentStatus = msg;
break;
case 'Simulation_User': // 仿真-聊天界面用户进出仿真消息
handleSimulationUserinfo(state, msg); // 用户进出仿真消息
break;
2020-05-15 16:54:31 +08:00
case 'Simulation_Script_Tip': // 仿真-聊天界面用户进出仿真消息
handleSimulationScriptTipInfo(state, msg); // 用户进出仿真消息
break;
2020-05-15 20:45:59 +08:00
case 'Simulation_Script_Finish': // 剧本执行完成推送消息
state.scriptFinish++; // 剧本执行完成推送消息
break;
2019-11-05 16:40:36 +08:00
case 'Simulation_RunFact': // 仿真-列车实际到发车站消息
// let runFactMsg = msg;
// if (runFactMsg.constructor !== Array ) {
// runFactMsg = [msg];
// }
if (!Array.isArray(msg)) {
// console.log([msg], '列车实际到发车站消息');
state.trainStationList = [msg];
2020-02-27 18:51:48 +08:00
}
2019-11-05 16:40:36 +08:00
break;
case 'Simulation_Error': // 仿真-异常消息
state.simulationError = msg;
break;
case 'Simulation_RunAsPlan_Start': // 仿真-仿真开始按计划行车消息
state.simulationStart = msg;
break;
case 'Simulation_Reset': // 仿真-仿真重置消息 退出计划行车
2020-03-23 16:42:21 +08:00
state.simulationReset = 'reset';
2019-11-05 16:40:36 +08:00
break;
case 'Simulation_Conversation': // 仿真-用户交互消息(聊天/命令)
{ handleSimulationInfo(state, msg);
state.simuConversitionCount++;
break; }
2019-11-05 16:40:36 +08:00
case 'Simulation_PlayBack_Conversation': // 回放-用户交互消息
handleSimulationInfo(state, msg);
break;
case 'Simulation_ApplyHandle': // 请求处理消息
handlePushMsgQueue(state, msg);
break;
case 'JointTraining_User_Permit': // 综合演练室-用户获取权限消息
state.userPermit = msg;
break;
case 'JointTraining_Room_Invite': // 综合演练室-房间邀请消息
state.roomInvite = msg;
break;
case 'Big_Screen_Simulation_DeviceStatus': // 大屏仿真状态数据
state.equipmentStatus = msg;
break;
case 'Big_Screen_Simulation_RunFact': // 大屏仿真运行图状态
state.trainStationList = msg;
break;
case 'Plan_Simulation_DeviceStatus': // 大屏仿真状态数据
state.equipmentStatus = msg;
break;
case 'Plan_Simulation_RunFact': // 大屏仿真运行图状态
state.trainStationList = msg;
break;
case 'Simulation_Permission_Over': // 权限结束
state.permissionOver = msg;
break;
case 'Simulation_Quest_Finish': // 任务结束标志
state.tipOperateCount++;
break;
case 'JointTraining_Device':
state.realDeviceInfo++;
break;
2019-11-18 10:34:18 +08:00
case 'Be_Logged_Out': // 重复登录被登出
state.beLogoutCount++;
break;
case 'Simulation_Run_Plan_Reload': // 运行图变更
state.runPlanReloadCount++;
break;
2019-11-05 16:40:36 +08:00
case 'Simulation_Control_Pause': // 暂停中
store.dispatch('scriptRecord/updateSimulationPause', msg);
break;
case 'BROADCAST': // 升级通知消息
Notification.warning({
title: msg.title,
center: true,
message: msg.message,
position: 'bottom-right',
showClose: msg.showClose,
duration: 0
});
break;
}
2019-07-26 13:32:43 +08:00
}
2019-08-06 10:11:32 +08:00
2019-07-26 13:32:43 +08:00
// 操作聊天信息
function handleRecordList(state, data) {
2019-11-05 16:40:36 +08:00
const userId = store.state.user.id;
let isSelf = false;
if (data.member.id == userId) {
isSelf = true;
}
const myDate = new Date();
const myDate1 = myDate.toLocaleDateString().replace(/\//g, '-');
const param = {
join: false,
value: data.message,
self: isSelf,
voice: data.isAudio,
src: data.isAudio ? `/jlcloud/audio/${data.audioPath}` : '',
2019-11-05 16:40:36 +08:00
other: !isSelf,
userName: data.member.nickName,
chatTime: data.chatTime,
chatInfo: true,
inSimulation: false,
inRoom: true,
date: +new Date(`${myDate1} ${data.chatTime}`)
};
2019-11-08 18:15:52 +08:00
state.chatContent = param;
2019-07-26 13:32:43 +08:00
}
// 仿真内部聊天
function handleSimulationInfo(state, data) {
2019-11-05 16:40:36 +08:00
const userId = store.state.user.id;
let isSelf = false;
if (data.member.userId == userId) {
isSelf = true;
}
const myDate = new Date();
const myDate1 = myDate.toLocaleDateString().replace(/\//g, '-');
const chatTime = /\d{2}:\d{2}:\d{2}/.exec(data.chatTime)[0] || data.chatTime;
const params = {
2020-05-14 19:13:44 +08:00
id:data.conversationId,
2019-11-05 16:40:36 +08:00
self: isSelf,
message: data.message,
2019-11-05 16:40:36 +08:00
voice: data.isAudio,
src: data.isAudio ? `/jlcloud/audio/${data.audioPath}` : '',
2020-05-14 17:58:26 +08:00
member:data.member,
memberOnline:data.member.online,
2019-11-05 16:40:36 +08:00
chatTime: data.chatTime,
targetOnline:data.targetMember ? data.targetMember.online : null,
2020-05-13 19:31:14 +08:00
targetName:data.targetMember ? data.targetMember : 'All',
targetRole:data.targetMember ? data.targetMember.role : null,
group: data.group,
date: +new Date(`${myDate1} ${chatTime}`)
2019-11-05 16:40:36 +08:00
};
state.simulationText = params;
2020-05-15 16:54:31 +08:00
}
2020-05-15 16:54:31 +08:00
// 剧本提示
function handleSimulationScriptTipInfo(state, data) {
state.simulationScriptTip = data;
2019-07-26 13:32:43 +08:00
}
2019-11-08 18:15:52 +08:00
2019-07-26 13:32:43 +08:00
function handleUserinfo(state, data) {
2019-11-08 18:15:52 +08:00
state.roleList = (data instanceof Array) ? data : [data];
2019-07-26 13:32:43 +08:00
}
2019-11-08 18:15:52 +08:00
function handleSimulationUserinfo(state, data) {
state.simulationRoleList = (data instanceof Array) ? data : [data];
}
2019-07-26 13:32:43 +08:00
function handlePushMsgQueue(state, msg) {
2019-11-05 16:40:36 +08:00
if (msg instanceof Array) {
state.msgQueue.concat(msg);
} else {
state.msgQueue.push(msg);
}
if (!state.msgHead) {
state.msgHead = state.msgQueue[0];
}
2019-07-26 13:32:43 +08:00
}
const socket = {
2019-11-05 16:40:36 +08:00
namespaced: true,
state: {
payOrder: {}, // 支付消息
jointRoomInfo: {}, // 受邀请房间信息
2019-11-08 18:15:52 +08:00
chatContent: {}, // 聊天室聊天内容
roleList: [], // 设置角色信息
simulationRoleList:[], // 设置仿真的聊天角色信息
2020-05-15 16:54:31 +08:00
simulationScriptTip:{}, // 剧本推送提示信息
2020-05-15 20:45:59 +08:00
scriptFinish:0, // 剧本执行完成提示信息
2019-11-05 16:40:36 +08:00
jointRoomPrepare: false, // 演练房间准备状态
equipmentStatus: [], // 仿真-设备状态消息
trainStationList: [], // 仿真-列车实际到发车站消息
simulationError: '', // 仿真-异常消息
simulationStart: '', // 仿真-开始消息
simulationReset: '', // 仿真-异常消息
simulationText: {}, // 仿真-用户交互消息(聊天/命令)
// coversitionList:{}, // 历史仿真-用户消息列表
2019-11-08 18:15:52 +08:00
2019-11-05 16:40:36 +08:00
message: {}, // 仿真聊天
msgQueue: [], // 命令请求列表
msgHead: null, // 消息头
userPermit: {}, // 用户获取权限消息
userRoomKickOut: {}, // 用户被踢出房间消息
userInRoom: {}, // 用户从外部进入房间消息
userOutRoom: {}, // 用户退出房间消息
userInSimulation: {}, // 用户进入仿真消息
userBackRoom: {}, // 用户从仿真返回房间消息
roomInvite: {}, // 用户扫码信息
permissionOver: {}, // 权限结束
2020-01-15 13:20:48 +08:00
roomIsSubscribe:false, // 房间是否订阅
assistantIsSubscribe:false, // 综合演练仿真聊天是否订阅
isInRoom:false, // 是否己经进入房间
2020-01-15 13:20:48 +08:00
2019-11-05 16:40:36 +08:00
tipOperateCount: 0, // 任务结束提示消息
2019-11-18 10:34:18 +08:00
realDeviceInfo: 0, // 真实设备信息
beLogoutCount: 0, // 被登出
runPlanReloadCount: 0 // 仿真运行图变更
2019-11-05 16:40:36 +08:00
},
getters: {
},
mutations: {
setJointRoomInfo: (state, jointRoomInfo) => {
state.jointRoomInfo = jointRoomInfo;
},
2019-11-08 18:15:52 +08:00
setChatContent: (state, chatContent) => {
state.chatContent = chatContent;
2019-11-05 16:40:36 +08:00
},
setEquipmentStatus: (state, equipmentStatus) => {
state.equipmentStatus = equipmentStatus;
},
setTrainStationList: (state, trainStationList) => {
state.trainStationList = trainStationList;
},
setSimulationError: (state, simulationError) => {
state.simulationError = simulationError;
},
setSimulationStart: (state, simulationStart) => {
state.simulationStart = simulationStart;
},
setSimulationReset: (state, simulationReset) => {
state.simulationReset = simulationReset;
},
setSimulationTextList: (state, simulationText) => {
state.simulationText = simulationText;
},
setPayOrder: (state, payOrder) => {
state.payOrder = payOrder;
},
shiftMsgQueue: (state) => {
state.msgHead = null;
state.msgQueue.shift();
state.msgHead = state.msgQueue[0];
},
pushMsgQueue: (state, msg) => {
handlePushMsgQueue(state, msg);
},
setRoomInvite: (state, roomInvite) => {
state.roomInvite = roomInvite;
2020-01-15 13:20:48 +08:00
},
setRoomSubscribe:(state, roomIsSubscribe)=>{
state.roomIsSubscribe = roomIsSubscribe;
},
setAssistantSubscribe:(state, assistantIsSubscribe)=>{
state.assistantIsSubscribe = assistantIsSubscribe;
},
setInRoom:(state, isInRoom)=>{
state.isInRoom = isInRoom;
2019-11-05 16:40:36 +08:00
}
},
actions: {
setStomp: ({ state }, res) => {
handle(state, res);
},
2019-11-08 18:15:52 +08:00
setChatContent: ({ commit }, chatContent) => {
commit('setChatContent', chatContent);
2019-11-05 16:40:36 +08:00
},
setJointRoomInfo: ({ commit }) => {
commit('setJointRoomInfo', {});
},
setEquipmentStatus: ({ commit }) => {
commit('setEquipmentStatus', []);
},
setTrainStationList: ({ commit }) => {
commit('setTrainStationList', []);
},
setSimulationError: ({ commit }) => {
commit('setSimulationError', '');
},
setSimulationStart: ({ commit }) => {
commit('setSimulationStart', '');
},
setSimulationReset: ({ commit }) => {
commit('setSimulationReset', '');
},
setSimulationTextList: ({ commit }) => {
commit('setSimulationTextList', {});
},
setRoomInvite: ({ commit }) => {
commit('setRoomInvite', {});
},
setMessage: ({ state }, data) => {
if (!state.message[data.key]) {
state.message[data.key] = [];
}
state.message[data.key].push(data.value);
},
setPayOrder: ({ commit }) => {
commit('setPayOrder', {});
},
shiftMsgQueue: ({ commit }) => {
commit('shiftMsgQueue');
},
pushMsgQueue: ({ commit }, msg) => {
commit('pushMsgQueue', msg);
2020-01-15 13:20:48 +08:00
},
setRoomSubscribe:({ commit }, msg) => {
commit('setRoomSubscribe', msg);
},
setAssistantSubscribe:({ commit }, msg) => {
commit('setAssistantSubscribe', msg);
},
setInRoom:({ commit }, msg) => {
commit('setInRoom', msg);
2019-11-05 16:40:36 +08:00
}
}
2019-07-26 13:32:43 +08:00
};
export default socket;