From e6b1d2777aa97317607cf5cec38c8f95ff4e2ce1 Mon Sep 17 00:00:00 2001 From: dong <58670809@qq.com> Date: Mon, 22 May 2023 09:43:36 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=A7=81=E8=81=8A?= =?UTF-8?q?=E5=8F=8A=E6=88=90=E5=91=98=E6=9F=A5=E7=9C=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/newChat.js | 32 ++ src/scripts/cmdPlugin/CommandEnum.js | 4 +- src/views/newMap/display/index.vue | 4 +- .../newMap/display/newChat/addressBook.vue | 138 ++++++ .../newMap/display/newChat/chatContent.vue | 19 +- .../newMap/display/newChat/chatDialog.vue | 450 ++++++++++++++++-- .../newMap/display/newChat/dialogMember.vue | 87 ++++ .../newMap/display/newChat/editGroup.vue | 323 +++---------- 8 files changed, 754 insertions(+), 303 deletions(-) create mode 100644 src/views/newMap/display/newChat/addressBook.vue create mode 100644 src/views/newMap/display/newChat/dialogMember.vue diff --git a/src/api/newChat.js b/src/api/newChat.js index bdcc96501..6ded7fe84 100644 --- a/src/api/newChat.js +++ b/src/api/newChat.js @@ -187,3 +187,35 @@ export function setGroupReadMessage(groupId, data) { data }); } + +/** + * 发送私聊文字信息 + * @param {String} groupId 房间号 + * @param {Object} data + * @param {Number} data.memberId 角色id + * @param {String} data.content 文字内容 + * @returns + */ +export function sendPrivateText(groupId, data) { + return request({ + url: `/simulation/${groupId}/operate/Conversation_Group_Private_Text_Chat`, + method: 'post', + data + }); +} + +/** + * 发送私聊BASE64信息 + * @param {String} groupId 房间号 + * @param {Object} data + * @param {Number} data.memberId 角色id + * @param {String} data.fileBase64Str 文件base64码 + * @returns + */ +export function sendPrivateBase64(groupId, data) { + return request({ + url: `/simulation/${groupId}/operate/Conversation_Group_Private_Audio_Base64`, + method: 'post', + data + }); +} diff --git a/src/scripts/cmdPlugin/CommandEnum.js b/src/scripts/cmdPlugin/CommandEnum.js index f3a89f7b7..ceca49be2 100644 --- a/src/scripts/cmdPlugin/CommandEnum.js +++ b/src/scripts/cmdPlugin/CommandEnum.js @@ -514,7 +514,9 @@ export default { CMD_Conversation_Chat_Text: {value: 'Conversation_Chat_Text', label: '发送文本消息'}, CMD_Conversation_Chat_Audio_Base64: {value: 'Conversation_Chat_Audio_Base64', label: '发送语音消息'}, CMD_Conversation_Group_Text_Chat: {value: 'Conversation_Group_Text_Chat', label: '发送会话群文字消息'}, - CMD_Conversation_Group_Audio_Base64: {value: 'Conversation_Group_Audio_Base64', label: '发送会话群语音消息'} + CMD_Conversation_Group_Audio_Base64: {value: 'Conversation_Group_Audio_Base64', label: '发送会话群语音消息'}, + CMD_Conversation_Group_Private_Text_Chat: {value: 'Conversation_Group_Private_Text_Chat', label: '发送私聊文字消息'}, + CMD_Conversation_Group_Private_Audio_Base64: {value: 'Conversation_Group_Private_Audio_Base64', label: '发送私聊语音消息'} }, PSL: { CMD_PSL_PRESS_BUTTON: {value: 'PSL_PRESS_BUTTON', label: 'PSL按钮操作'} diff --git a/src/views/newMap/display/index.vue b/src/views/newMap/display/index.vue index 7c632e682..93fbdc7b6 100644 --- a/src/views/newMap/display/index.vue +++ b/src/views/newMap/display/index.vue @@ -30,8 +30,8 @@ import TrainingTip from './trainingList/trainingTip'; import TrainingPositionTip from './trainingList/trainingPositionTip.vue'; import TrainingMenu from './trainingList/trainingMenu'; import TrainingDesign from './trainingDesign/designPane.vue'; -// import ChatBox from './newChat/index.vue'; -import ChatBox from './chatBox'; +import ChatBox from './newChat/index.vue'; +// import ChatBox from './chatBox'; import TrainingLeftSlider from './trainingList/trainingLeftSlider'; import LineBoard from './lineBoard'; import BottomTable from './bottomTable'; diff --git a/src/views/newMap/display/newChat/addressBook.vue b/src/views/newMap/display/newChat/addressBook.vue new file mode 100644 index 000000000..919e08620 --- /dev/null +++ b/src/views/newMap/display/newChat/addressBook.vue @@ -0,0 +1,138 @@ + + + + + diff --git a/src/views/newMap/display/newChat/chatContent.vue b/src/views/newMap/display/newChat/chatContent.vue index ec5b057de..1ab489559 100644 --- a/src/views/newMap/display/newChat/chatContent.vue +++ b/src/views/newMap/display/newChat/chatContent.vue @@ -27,7 +27,7 @@
-
+
@@ -25,7 +25,7 @@
{{ item.label }}
-
+
@@ -39,7 +39,7 @@
-
+
@@ -56,28 +56,36 @@
- +
-
文档
-
工作台
-
通讯录
+
+ +
- + + + + + diff --git a/src/views/newMap/display/newChat/editGroup.vue b/src/views/newMap/display/newChat/editGroup.vue index ccf6c815b..c75931693 100644 --- a/src/views/newMap/display/newChat/editGroup.vue +++ b/src/views/newMap/display/newChat/editGroup.vue @@ -2,7 +2,7 @@ {{ selectTreeNode.length }}
- + {{ tag.labelName }}
- + - + 取消 确定 @@ -77,102 +77,56 @@ export default { }, props: { - + memberTreeData: { + type: Array, + default: () => { + return []; + } + } }, data() { return { + title: '创建会话群', dialogVisible: false, queryMember: '', defaultProps: { children: 'children', - label: 'labelName' + label: 'labelName', + disabled: (node) => { + if (node.disabled || this.treeDisabled) { + return true; + } else { + return false; + } + } }, activeTrains: [], + defaultCheckedKeys: [], selectTreeNode: [], - treeData: [{ - labelName: '行调', - children: [] - }, { - labelName: 'NCC调度', - children: [] - }, { - labelName: '车站值班员', - children: [] - }, { - labelName: '司机', - children: [] - }, { - labelName: '通号', - children: [] - }, { - labelName: '车辆段', - children: [] - }, { - labelName: 'CTC操作员', - children: [] - }, { - labelName: '车站助理', - children: [] - }, - { - labelName: '车站站长', - children: [] - }, - { - labelName: '车站信号员', - children: [] - }, - { - labelName: '车站客运员', - children: [] - }, - { - labelName: '车站扳道员', - children: [] - }, - { - labelName: '车站引导员', - children: [] - }, - { - labelName: '车站工务工', - children: [] - }, - { - labelName: '设备管理员', - children: [] - } - ], form: { name: '', imageUrl: '' - } + }, + treeDisabled: false, + nameDisabled: false, + showSubmitBtn: true }; }, computed: { groupId() { return this.$route.query.group; }, - memberList() { - return this.$store.state.training.memberList; - }, memberData() { return this.$store.state.training.memberData; }, myMemberId() { return this.$store.state.training.myMemberId; - }, - defaultCheckedKeys() { - return [this.myMemberId]; } }, watch: { queryMember(val) { this.$refs.tree.filter(val); }, - memberList () { - this.getTreeData(); - }, myMemberId(val) { this.initData(); if (!val) { @@ -181,13 +135,23 @@ export default { }, '$store.state.map.activeTrainListChange': function () { this.getActiveTrains(); + }, + title() { + if (this.title == '创建会话群') { + this.showSubmitBtn = true; + this.treeDisabled = false; + this.nameDisabled = false; + } else { + this.showSubmitBtn = false; + this.treeDisabled = true; + this.nameDisabled = true; + } } }, mounted() { this.initData(); }, created() { - this.getTreeData(); this.getActiveTrains(); }, beforeDestroy() { @@ -215,200 +179,6 @@ export default { } this.$refs.tree && this.$refs.tree.filter(this.queryMember); }, - getTreeData() { - const val = this.memberList; - if (val && val.length) { - // this.memberData = this.$store.state.training.memberData; - const dispatcherList = []; - const nccDispatcherList = []; - const electricDispatcherList = []; - const depotDispatcherList = []; - const stationSupervisorList = []; - const driverList = []; - const maintainerList = []; - const ctcOperatorList = []; - const stationAssistantList = []; - const stationMasterList = []; - const stationSignalerList = []; - const stationPassengerList = []; - const stationSwitchManList = []; - const stationFacilitatorList = []; - const stationWorkerList = []; - const deviceManagerList = []; - const trainMasterList = []; - const stationElectricWorkerList = []; - val.forEach(item => { - const device = this.$store.getters['map/getDeviceByCode'](item.deviceCode); - switch (item.type) { - case 'DISPATCHER': - this.memberData[item.id].labelName = '行调' + (item.name || ''); - dispatcherList.push(this.memberData[item.id]); - break; - case 'NCC_DISPATCHER': - this.memberData[item.id].labelName = 'NCC调度' + (item.name || ''); - nccDispatcherList.push(this.memberData[item.id]); - break; - case 'ELECTRIC_DISPATCHER': - this.memberData[item.id].labelName = '电力调度' + (item.name || ''); - electricDispatcherList.push(this.memberData[item.id]); - break; - case 'DEPOT_DISPATCHER': - this.memberData[item.id].labelName = '信号楼-' + device.name + (item.name || ''); - depotDispatcherList.push(this.memberData[item.id]); - break; - case 'STATION_SUPERVISOR': - this.memberData[item.id].labelName = '值班员-' + device.name + (item.name ? `-${item.name }` : ''); - stationSupervisorList.push(this.memberData[item.id]); - break; - case 'DRIVER': - this.memberData[item.id].labelName = '司机-列车' + item.deviceCode; - driverList.push(this.memberData[item.id]); - break; - case 'MAINTAINER': - this.memberData[item.id].labelName = '通号' + (item.name || ''); - maintainerList.push(this.memberData[item.id]); - break; - case 'RAIL_CTC': - this.memberData[item.id].labelName = 'CTC操作员' + device.name; - ctcOperatorList.push(this.memberData[item.id]); - break; - case 'STATION_ASSISTANT': - this.memberData[item.id].labelName = '车站助理-' + device.name + (item.name ? `-${item.name }` : ''); - stationAssistantList.push(this.memberData[item.id]); - break; - case 'STATION_MASTER': - this.memberData[item.id].labelName = '车站站长-' + device.name + (item.name ? `-${item.name }` : ''); - stationMasterList.push(this.memberData[item.id]); - break; - case 'STATION_SIGNALER': - this.memberData[item.id].labelName = '车站信号员-' + device.name + (item.name ? `-${item.name }` : ''); - stationSignalerList.push(this.memberData[item.id]); - break; - case 'STATION_PASSENGER': - this.memberData[item.id].labelName = '车站客运员-' + device.name + (item.name ? `-${item.name }` : ''); - stationPassengerList.push(this.memberData[item.id]); - break; - case 'STATION_SWITCH_MAN': - this.memberData[item.id].labelName = '车站扳道员-' + device.name + (item.name ? `-${item.name }` : ''); - stationSwitchManList.push(this.memberData[item.id]); - break; - case 'STATION_FACILITATOR': - this.memberData[item.id].labelName = '车站引导员-' + device.name + (item.name ? `-${item.name }` : ''); - stationFacilitatorList.push(this.memberData[item.id]); - break; - case 'STATION_WORKER': - this.memberData[item.id].labelName = '车站工务工-' + device.name + (item.name ? `-${item.name }` : ''); - stationWorkerList.push(this.memberData[item.id]); - break; - case 'DEVICE_MANAGER': - this.memberData[item.id].labelName = '设备管理员-' + device.name + (item.name ? `-${item.name }` : ''); - deviceManagerList.push(this.memberData[item.id]); - break; - case 'TRAIN_MASTER': - // device.name; - this.memberData[item.id].labelName = '车务段段长-' + (item.name ? `-${item.name }` : ''); - trainMasterList.push(this.memberData[item.id]); - break; - case 'PARENT_DEPARTMENT': - this.memberData[item.id].labelName = '上级部门' + (item.name ? `-${item.name }` : ''); - break; - case 'STATION_ELECTRIC_WORKER': - this.memberData[item.id].labelName = '电力工务' + (item.name || ''); - stationElectricWorkerList.push(this.memberData[item.id]); - break; - // DEVICE_MANAGER:'设备管理员' deviceManager - } - }); - this.treeData = [{ - labelName: '行调', - id: 'dispatcher', - children: dispatcherList - }, { - labelName: 'NCC调度', - id: 'nccDispatcher', - children: nccDispatcherList - }, { - labelName: '车站值班员', - id: 'stationSupervisor', - children: stationSupervisorList - }, { - labelName: '司机', - id: 'driver', - children: driverList - }, { - labelName: '通号', - id: 'maintainer', - children: maintainerList - }, { - labelName: '车辆段信号楼', - id: 'depotDispatcher', - children: depotDispatcherList - }, { - labelName: '电力调度', - id: 'electricDispatcher', - children: electricDispatcherList - }, { - labelName: 'CTC操作员', - id: 'ctcOperator', - children: ctcOperatorList - }, { - labelName: '车站助理', - id: 'stationAssistant', - children: stationAssistantList - }, - { - labelName: '车站站长', - id: 'stationMaster', - children: stationMasterList - }, - { - labelName: '车站信号员', - id: 'stationSignaler', - children: stationSignalerList - }, - { - labelName: '车站客运员', - id: 'stationPassenger', - children: stationPassengerList - }, - { - labelName: '车站扳道员', - id: 'stationSwitchMan', - children: stationSwitchManList - }, - { - labelName: '车站引导员', - id: 'stationFacilitator', - children: stationFacilitatorList - }, - { - labelName: '车站工务工', - id: 'stationWorker', - children: stationWorkerList - }, - { - labelName: '设备管理员', - id: 'deviceManager', - children: deviceManagerList - }, - { - labelName: '车务段段长 ', - id: 'trainMaster', - children: trainMasterList - }, - { - labelName: '电力工务 ', - id: 'stationElectricWorker', - children: stationElectricWorkerList - } - ]; - this.$nextTick(() => { - if (this.$refs.tree) { - this.$refs.tree.filter(this.queryMember); - } - }); - } - }, checkChange(data, node, val) { const filter = node.checkedNodes.filter(ii => { return !ii.children; @@ -446,6 +216,7 @@ export default { }, initData() { this.$refs.form && this.$refs.form.resetFields(); + this.defaultCheckedKeys = [this.myMemberId]; this.selectTreeNode = []; const node = this.memberData[this.myMemberId]; node && this.selectTreeNode.push(node); @@ -499,7 +270,9 @@ export default { // fileName:存储文件名 // method:生成链接的请求方式 }, - doShow() { + doShow(info, title) { + this.title = title || '创建会话群'; + this.setInfo(info); this.dialogVisible = true; this.$nextTick(() => { if (this.$refs.tree) { @@ -507,6 +280,21 @@ export default { } }); }, + setInfo(info) { + if (info) { + this.form.name = info.name || ''; + this.form.imageUrl = info.imageUrl || ''; + this.defaultCheckedKeys = []; + this.selectTreeNode = []; + info.memberList.forEach(item => { + this.defaultCheckedKeys.push(item.memberId); + const node = this.memberData[item.memberId]; + node && this.selectTreeNode.push(node); + }); + } else { + this.initData(); + } + }, handleClose() { this.dialogVisible = false; } @@ -549,6 +337,7 @@ $imgHeight: 70px; .disableClose { /deep/ .el-icon-close { cursor: not-allowed; + display: none !important; } } } From 2635ea8c576f173d92494c9fca99f12364d2ea3c Mon Sep 17 00:00:00 2001 From: dong <58670809@qq.com> Date: Mon, 22 May 2023 10:08:13 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=BE=A4=E4=B8=BB?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../newMap/display/newChat/chatDialog.vue | 36 ++++++++++++++----- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/src/views/newMap/display/newChat/chatDialog.vue b/src/views/newMap/display/newChat/chatDialog.vue index 970d72d3b..3cb45fae7 100644 --- a/src/views/newMap/display/newChat/chatDialog.vue +++ b/src/views/newMap/display/newChat/chatDialog.vue @@ -184,6 +184,24 @@ export default { } this.getGroupList(); }, + '$store.state.socket.conversationGroup.UPDATE_NAME': function(val) { + if (val.messageTips) { + this.$message.success(`${val.messageTips}`); + } + this.getGroupList(); + }, + '$store.state.socket.conversationGroup.UPDATE_MEMBER': function(val) { + if (val.messageTips) { + this.$message.success(`${val.messageTips}`); + } + this.getGroupList(); + }, + '$store.state.socket.conversationGroup.EXIT': function(val) { + if (val.messageTips) { + this.$message.success(`${val.messageTips}`); + } + this.getGroupList(); + }, myMemberId() { this.getGroupList(); }, @@ -269,16 +287,16 @@ export default { return item.leaderId != this.myMemberId; }, isShow: (item) => item.type === 'GROUP_CHAT' + }, + { + label: '修改群主', + handler: this.editGroupLeader, + groupInfo: item, + isDisabled: (item) => { + return item.leaderId != this.myMemberId; + }, + isShow: (item) => item.type === 'GROUP_CHAT' } - // { - // label: '修改群主', - // handler: this.editGroupLeader, - // groupInfo: item, - // isDisabled: (item) => { - // return item.leaderId != this.myMemberId; - // }, - // isShow: (item) => item.type === 'GROUP_CHAT' - // } ]; this.menu = []; const list = menuNormal(item); From 77a80c2b2d8b92d8e30113c6c5c42eb26440be1a Mon Sep 17 00:00:00 2001 From: dong <58670809@qq.com> Date: Mon, 22 May 2023 11:02:36 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E7=BE=A4=E9=82=80=E8=AF=B7=E6=88=90?= =?UTF-8?q?=E5=91=98=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../newMap/display/newChat/chatDialog.vue | 9 ++ .../newMap/display/newChat/editGroup.vue | 84 ++++++++++++++----- 2 files changed, 70 insertions(+), 23 deletions(-) diff --git a/src/views/newMap/display/newChat/chatDialog.vue b/src/views/newMap/display/newChat/chatDialog.vue index 3cb45fae7..821073570 100644 --- a/src/views/newMap/display/newChat/chatDialog.vue +++ b/src/views/newMap/display/newChat/chatDialog.vue @@ -296,6 +296,15 @@ export default { return item.leaderId != this.myMemberId; }, isShow: (item) => item.type === 'GROUP_CHAT' + }, + { + label: '邀请成员', + handler: this.groupSet, + groupInfo: item, + isDisabled: (item) => { + return item.leaderId != this.myMemberId; + }, + isShow: (item) => item.type === 'GROUP_CHAT' } ]; this.menu = []; diff --git a/src/views/newMap/display/newChat/editGroup.vue b/src/views/newMap/display/newChat/editGroup.vue index c75931693..0b4a3a466 100644 --- a/src/views/newMap/display/newChat/editGroup.vue +++ b/src/views/newMap/display/newChat/editGroup.vue @@ -41,13 +41,13 @@ {{ selectTreeNode.length }}
- + {{ tag.labelName }}
- +