diff --git a/src/store/modules/trainingNew.js b/src/store/modules/trainingNew.js index b86bf4ca9..2d521b15c 100644 --- a/src/store/modules/trainingNew.js +++ b/src/store/modules/trainingNew.js @@ -14,7 +14,8 @@ const training = { scoringRules: [], // 当前实训评分规则 operateOrder: 0, // 操作order operateErrMsg: '', - scoreList: [] // 实训得分 + scoreList: [], // 实训得分 + draftStepList: null // 显示的步骤列表 }, getters: { teachMode: (state) => { @@ -85,6 +86,9 @@ const training = { }, pushScoreList: (state, scoring) => { state.scoreList.push(scoring); + }, + editDraftStepList: (state, draftStepList) => { + state.draftStepList = draftStepList; } }, actions: { @@ -145,6 +149,9 @@ const training = { }, pushScoreList: ({ commit }, scoring) => { commit('pushScoreList', scoring); + }, + editDraftStepList: ({ commit }, draftStepList) => { + commit('editDraftStepList', draftStepList); } } }; diff --git a/src/views/newMap/display/trainingDesign/designPane.vue b/src/views/newMap/display/trainingDesign/designPane.vue index 6f4f98420..b059b3e5b 100644 --- a/src/views/newMap/display/trainingDesign/designPane.vue +++ b/src/views/newMap/display/trainingDesign/designPane.vue @@ -256,6 +256,7 @@ export default { }, backDesignPane(data) { this.showMode = 'designPane'; + this.$store.dispatch('trainingNew/editDraftStepList', null); }, handleDelete(index, row) { console.log('删除', index, row); @@ -277,6 +278,15 @@ export default { return; } this.$store.dispatch('trainingNew/setTrainingDetail', null); + const list = []; + this.tableData.forEach((item, ind) => { + const obj = { + ...item, + isActive: ind === index + }; + list.push(obj); + }); + this.$store.dispatch('trainingNew/editDraftStepList', list); const member = this.$store.state.training.memberData[row.memberId]; if (!member.userId) { assignUsersPlayRoles([{ userId: this.$store.state.user.id, memberId: member.id}], this.$route.query.group).then(resp => { diff --git a/src/views/newMap/display/trainingDesign/editOperate.vue b/src/views/newMap/display/trainingDesign/editOperate.vue index 769d4ecb4..34082c9f9 100644 --- a/src/views/newMap/display/trainingDesign/editOperate.vue +++ b/src/views/newMap/display/trainingDesign/editOperate.vue @@ -75,6 +75,9 @@ export default { } } }, + beforeDestroy() { + this.$store.dispatch('trainingNew/editDraftStepList', null); + }, methods: { initData(data) { this.editMode = true; diff --git a/src/views/newMap/display/voiceChatBox/index.vue b/src/views/newMap/display/voiceChatBox/index.vue index 9e213ee24..20ebd49ff 100644 --- a/src/views/newMap/display/voiceChatBox/index.vue +++ b/src/views/newMap/display/voiceChatBox/index.vue @@ -3,7 +3,7 @@
-
+
@@ -55,6 +55,7 @@ import { getUserListCommon } from '@/api/rtSimulation'; import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler'; import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate'; import {UserOperationType} from '../../../../scripts/ConstDic'; +import { timestampFormat } from '@/utils/date'; export default { name: 'NewChatBox', components:{ @@ -133,16 +134,16 @@ export default { connect() { return (this.conversitionStateMap[this.myMemberId] || {connect:false}).connect; }, - privateMemberList() { - return (this.conversitionStateMap[this.myMemberId] || {privateMemberList: []}).privateMemberList; - }, - privateMessageList() { - if (this.conversitionStateMap[this.myMemberId] && this.conversitionStateMap[this.myMemberId].connect) { - return (this.conversitionStateMap[this.myMemberId] || {privateMessageList: []}).privateMessageList; - } else { - return []; - } - }, + // privateMemberList() { + // return (this.conversitionStateMap[this.myMemberId] || {privateMemberList: []}).privateMemberList; + // }, + // privateMessageList() { + // if (this.conversitionStateMap[this.myMemberId] && this.conversitionStateMap[this.myMemberId].connect) { + // return (this.conversitionStateMap[this.myMemberId] || {privateMessageList: []}).privateMessageList; + // } else { + // return []; + // } + // }, sendTextId() { return OperationEvent.Conversation.Chat.menu.domId; }, @@ -154,12 +155,12 @@ export default { } }, watch:{ - connect(val) { - if (val) { - this.conversitionMemberList = this.privateMemberList; - this.messageList = [...this.privateMessageList]; - } - }, + // connect(val) { + // if (val) { + // this.conversitionMemberList = this.privateMemberList; + // this.messageList = [...this.privateMessageList]; + // } + // }, // userRole(val) { // if (val == 'AUDIENCE') { // this.goCommonConversation(); @@ -200,33 +201,33 @@ export default { // } // }); // }, - '$store.state.socket.createConversation':function(val) { - val.memberList.forEach(member => { - // if (val.creatorId == member.memberId) { - this.$set(this.conversitionStateMap, member.memberId, {conversitionId: val.id, privateMemberList: val.memberList, privateMessageList: [], connect:member.connect}); - // } - }); - }, - '$store.state.socket.inviteSimulationConversation':function(val) { - this.treeData.forEach(item => { - if (item.children) { - const memberList = Object.values(item.children); - memberList.forEach(data =>{ - data.disabled = true; - }); - if (item.children[val.creatorId]) { - item.children[val.creatorId].isInviting = true; - // const offsetTop = document.getElementById('proper_content_box' + val.creatorId).parentNode.offsetTop; - // document.querySelector('.chat-box-content').scrollTop = (offsetTop - 40) > 0 ? (offsetTop - 80) : 0; - if (!document.querySelector('#voiceName').classList.contains('flash')) { - document.querySelector('#voiceName').classList.add('flash'); - document.querySelector('#teleRing').play(); - } - } + // '$store.state.socket.createConversation':function(val) { + // val.memberList.forEach(member => { + // // if (val.creatorId == member.memberId) { + // this.$set(this.conversitionStateMap, member.memberId, {conversitionId: val.id, privateMemberList: val.memberList, privateMessageList: [], connect:member.connect}); + // // } + // }); + // }, + // '$store.state.socket.inviteSimulationConversation':function(val) { + // this.treeData.forEach(item => { + // if (item.children) { + // const memberList = Object.values(item.children); + // memberList.forEach(data =>{ + // data.disabled = true; + // }); + // if (item.children[val.creatorId]) { + // item.children[val.creatorId].isInviting = true; + // // const offsetTop = document.getElementById('proper_content_box' + val.creatorId).parentNode.offsetTop; + // // document.querySelector('.chat-box-content').scrollTop = (offsetTop - 40) > 0 ? (offsetTop - 80) : 0; + // if (!document.querySelector('#voiceName').classList.contains('flash')) { + // document.querySelector('#voiceName').classList.add('flash'); + // document.querySelector('#teleRing').play(); + // } + // } - } - }); - }, + // } + // }); + // }, '$store.state.map.activeTrainListChange': function (val) { // 按计划行车的列车列表更新标识 this.activeTrains = []; const activeTrainList = this.$store.state.map.activeTrainList; @@ -255,36 +256,37 @@ export default { }); this.myMemberId = this.simulationUsers[this.userId].memberId; } + this.getStepConversition(); }, deep: true }, - '$store.state.socket.exitConversation': function (val) { - for (const memberId in this.conversitionStateMap) { - if (memberId == val.memberId) { - this.conversitionStateMap[memberId].connect = false; - this.conversitionStateMap[memberId].conversitionId = ''; - this.conversitionStateMap[memberId].privateMemberList = []; - this.conversitionStateMap[memberId].privateMessageList = []; - } else if ( this.conversitionStateMap[memberId].conversitionId == val.id ) { - const mList = []; - this.conversitionStateMap[memberId].privateMemberList.forEach(member => { - if (member.memberId != val.memberId) { - mList.push(member); - } - }); - this.conversitionStateMap[memberId].privateMemberList = mList; - } - } - // 有人退出会话更新人员列表 - this.treeData.forEach(item => { - if (item.children && item.children[val.memberId]) { - const member = item.children[val.memberId]; - member.active = false; - member.isConnect = false; - member.disabled = false; - } - }); - }, + // '$store.state.socket.exitConversation': function (val) { + // for (const memberId in this.conversitionStateMap) { + // if (memberId == val.memberId) { + // this.conversitionStateMap[memberId].connect = false; + // this.conversitionStateMap[memberId].conversitionId = ''; + // this.conversitionStateMap[memberId].privateMemberList = []; + // this.conversitionStateMap[memberId].privateMessageList = []; + // } else if ( this.conversitionStateMap[memberId].conversitionId == val.id ) { + // const mList = []; + // this.conversitionStateMap[memberId].privateMemberList.forEach(member => { + // if (member.memberId != val.memberId) { + // mList.push(member); + // } + // }); + // this.conversitionStateMap[memberId].privateMemberList = mList; + // } + // } + // // 有人退出会话更新人员列表 + // this.treeData.forEach(item => { + // if (item.children && item.children[val.memberId]) { + // const member = item.children[val.memberId]; + // member.active = false; + // member.isConnect = false; + // member.disabled = false; + // } + // }); + // }, '$store.state.training.memberList': function (val) { if (val && val.length) { this.memberData = this.$store.state.training.memberData; @@ -523,87 +525,87 @@ export default { } document.querySelector('#teleRing').pause(); }, - '$store.state.socket.acceptConversionInvite':function(val) { - this.conversitionStateMap[val.memberId].connect = true; - this.conversitionStateMap[val.memberId].conversitionId = val.id; - if (this.conversitionId == val.id) { - this.treeData.forEach(data => { - if (data.children && val.memberId != this.myMemberId) { - const member = data.children[val.memberId]; - if (member) { - member.isConnect = true; - member.active ? member.loading = false : member.active = true; - } - } - }); - } - if (this.myMemberId == val.memberId) { - this.connectSuccess = true; - document.querySelector('#voiceName').classList.remove('flash'); - document.querySelector('#teleRing').pause(); - this.treeData.forEach(data => { - if (data.children) { - const member = data.children[val.creatorId]; - if (member) { - member.active = true; - member.isConnect = true; - member.isInviting = false; - } - } - }); - } - }, + // '$store.state.socket.acceptConversionInvite':function(val) { + // this.conversitionStateMap[val.memberId].connect = true; + // this.conversitionStateMap[val.memberId].conversitionId = val.id; + // if (this.conversitionId == val.id) { + // this.treeData.forEach(data => { + // if (data.children && val.memberId != this.myMemberId) { + // const member = data.children[val.memberId]; + // if (member) { + // member.isConnect = true; + // member.active ? member.loading = false : member.active = true; + // } + // } + // }); + // } + // if (this.myMemberId == val.memberId) { + // this.connectSuccess = true; + // document.querySelector('#voiceName').classList.remove('flash'); + // document.querySelector('#teleRing').pause(); + // this.treeData.forEach(data => { + // if (data.children) { + // const member = data.children[val.creatorId]; + // if (member) { + // member.active = true; + // member.isConnect = true; + // member.isInviting = false; + // } + // } + // }); + // } + // }, '$store.state.scriptRecord.audioPlay':function(val) { this.audioPlay = val; - }, - '$store.state.scriptRecord.updateRoleId':function(val) { - if (this.conversitionStateMap[val]) { - this.treeData.forEach(item => { - if (item.children) { - const memberList = Object.values(item.children); - memberList.forEach(data =>{ - const member = this.conversitionStateMap[val]; - // && privateMem.connect; - const memberInfo = member.privateMemberList.find(privateMem=>{ return privateMem.memberId == data.id; }); - // member.connect - if (member && data.id != val && memberInfo) { - data.isConnect = true; - data.active = true; - this.connectSuccess = true; - } else { - data.active = false; - data.isConnect = false; - this.connectSuccess = false; - } - data.loading = false; - data.disabled = false; - data.isInviting = false; - }); - } - }); - if (!this.connect) { - this.memberIdList = []; - this.memberObject = ''; - } - } else { - this.memberIdList = []; - this.memberObject = ''; - this.connectSuccess = false; - this.treeData.forEach(item => { - if (item.children) { - const memberList = Object.values(item.children); - memberList.forEach(data =>{ - data.active = false; - data.isConnect = false; - data.loading = false; - data.disabled = false; - data.isInviting = false; - }); - } - }); - } - } + // '$store.state.scriptRecord.updateRoleId':function(val) { + // if (this.conversitionStateMap[val]) { + // this.treeData.forEach(item => { + // if (item.children) { + // const memberList = Object.values(item.children); + // memberList.forEach(data =>{ + // const member = this.conversitionStateMap[val]; + // // && privateMem.connect; + // const memberInfo = member.privateMemberList.find(privateMem=>{ return privateMem.memberId == data.id; }); + // // member.connect + // if (member && data.id != val && memberInfo) { + // data.isConnect = true; + // data.active = true; + // this.connectSuccess = true; + // } else { + // data.active = false; + // data.isConnect = false; + // this.connectSuccess = false; + // } + // data.loading = false; + // data.disabled = false; + // data.isInviting = false; + // }); + // } + // }); + // if (!this.connect) { + // this.memberIdList = []; + // this.memberObject = ''; + // } + // } else { + // this.memberIdList = []; + // this.memberObject = ''; + // this.connectSuccess = false; + // this.treeData.forEach(item => { + // if (item.children) { + // const memberList = Object.values(item.children); + // memberList.forEach(data =>{ + // data.active = false; + // data.isConnect = false; + // data.loading = false; + // data.disabled = false; + // data.isInviting = false; + // }); + // } + // }); + // } + + // } }, beforeDestroy() { this.$store.dispatch('scriptRecord/updateAudioPlay', false); @@ -873,27 +875,52 @@ export default { } messages.push(message); }); - const tempMessageList = []; - !conversation.over && conversation.messageList.forEach(message => { - message.src = `${message.audioPath}`; - tempMessageList.push(message); - }); - !conversation.over && conversation.memberList.forEach(member => { - const param = { - conversitionId: conversation.id, - privateMemberList: conversation.memberList, - privateMessageList: tempMessageList - }; - this.$set(this.conversitionStateMap, member.memberId, param); - }); + // const tempMessageList = []; + // !conversation.over && conversation.messageList.forEach(message => { + // message.src = `${message.audioPath}`; + // tempMessageList.push(message); + // }); + // !conversation.over && conversation.memberList.forEach(member => { + // const param = { + // conversitionId: conversation.id, + // privateMemberList: conversation.memberList, + // privateMessageList: tempMessageList + // }; + // this.$set(this.conversitionStateMap, member.memberId, param); + // }); }); - this.getUserRole(); } this.commonMessageList = messages.sort(this.sortByMessageTime); - this.messageList = [...this.commonMessageList]; + this.getUserRole(); + this.getStepConversition(); this.initCommonMemberList(); }); }, + // 在编制时--获取之前步骤中会话信息 + getStepConversition() { + const list = []; + const data = this.$store.state.trainingNew.draftStepList; + const simulationTime = this.$store.state.socket.simulationTimeSync; + if (data && !this.$store.state.trainingNew.trainingSwitch) { + for (let index = 0; index < data.length; index++) { + if (data[index].isActive) { + break; + } + data[index].operations.forEach(it => { + if (it.operationType == 'Conversation_Chat_Text') { + list.push({ + content: it.params.content, + id: list.length, + memberId: data[index].memberId, + time: timestampFormat('YYYY-MM-DD HH:mm:ss', simulationTime - (data.length - index) * 2000), + type: 'Text' + }); + } + }); + } + this.messageList = list; + } + }, // 初始化人员列表 initCommonMemberList() { const temDispatcherList = []; @@ -967,11 +994,11 @@ export default { }, changeMessageList(data) { this.commonMessageList.push(data.message); - if (this.conversitionStateMap[data.message.memberId]) { - (this.conversitionStateMap[data.message.memberId].privateMemberList || []).forEach(member => { - this.conversitionStateMap[member.memberId] && this.conversitionStateMap[member.memberId].privateMessageList.push(data.message); - }); - } + // if (this.conversitionStateMap[data.message.memberId]) { + // (this.conversitionStateMap[data.message.memberId].privateMemberList || []).forEach(member => { + // this.conversitionStateMap[member.memberId] && this.conversitionStateMap[member.memberId].privateMessageList.push(data.message); + // }); + // } // if (this.commonConversation) { // this.messageList.push(data.message); // } else if (!this.commonConversation && this.conversitionId === data.id && this.conversitionStateMap[this.myMemberId] && this.conversitionStateMap[this.myMemberId].connect) { @@ -988,8 +1015,8 @@ export default { cancelCommonConversation() { this.commonConversation && this.$refs.chatContent && this.$refs.chatContent.conversationChange(); this.commonConversation = false; - this.conversitionMemberList = this.privateMemberList; - this.messageList = [...this.privateMessageList]; + this.conversitionMemberList = this.commonMemberList; + this.messageList = [...this.commonMessageList]; this.$nextTick(() => { // this.$refs.tree && this.$refs.tree.filter(this.queryMember); this.filterNode();