From 1407d677dec7c5f1f8803c41a0abf48d1f12fcb2 Mon Sep 17 00:00:00 2001 From: Jason Date: Wed, 23 Feb 2022 14:13:38 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BE=A4=E8=A7=A3=E6=95=A3=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E6=97=A0=E8=AE=BA=E5=9C=A8=E7=BE=A4=E7=BB=84=E4=B8=AD=E7=9A=84?= =?UTF-8?q?=E5=93=AA=E4=B8=AA=E9=A1=B5=E9=9D=A2=EF=BC=8C=E9=83=BD=E9=80=80?= =?UTF-8?q?=E5=9B=9E=E5=88=B0=E4=BC=9A=E8=AF=9D=E5=88=97=E8=A1=A8=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App.vue | 2 +- pages/im/components/friendApplyCell.vue | 6 ++- pages/im/components/groupUserList.vue | 9 ++-- pages/im/components/messageCell.vue | 10 ++--- pages/im/components/show/showVoice.vue | 5 --- pages/im/friends/index.vue | 5 ++- pages/im/friends/info.vue | 8 ++-- pages/im/friends/pending.vue | 7 ++- pages/im/group/announceCreate.vue | 4 ++ pages/im/group/announcement.vue | 28 ++++++------ pages/im/group/apply.vue | 10 +++-- pages/im/group/chat.vue | 19 +++++---- pages/im/group/info.vue | 9 ++-- pages/im/group/invite.vue | 42 +++++++++--------- pages/im/group/reviewed.vue | 38 +++++++++-------- pages/im/group/users.vue | 5 +++ pages/im/index.vue | 16 ++++--- pages/im/private/call.nvue | 2 +- pages/im/private/chat.vue | 35 ++++++++------- utils/im/listeners.js | 57 ++++++++++++++----------- utils/im/onGroupDismiss.js | 16 +++++++ 21 files changed, 197 insertions(+), 136 deletions(-) create mode 100644 utils/im/onGroupDismiss.js diff --git a/App.vue b/App.vue index 5a505a9..6445058 100644 --- a/App.vue +++ b/App.vue @@ -7,7 +7,7 @@ export default { onLaunch: function() { im.initIm('lmxuhwaglu76d') - + return //#ifdef APP-PLUS // 获取系统版本号 getVersions({ diff --git a/pages/im/components/friendApplyCell.vue b/pages/im/components/friendApplyCell.vue index 74ecf13..15e0afa 100644 --- a/pages/im/components/friendApplyCell.vue +++ b/pages/im/components/friendApplyCell.vue @@ -69,8 +69,10 @@ // 不管是通过还是拒绝,都要把相关的信息清理 clearMessages() { RongIMLib.deleteMessages(RongIMLib.ConversationType.SYSTEM, this.message.sourceUserId) - this.$emit('success') - uni.$emit('onContactNotification') + this.$emit('success') + uni.$emit('onNewContactConversation', message) + uni.$emit('onNewContactFriends', message) + uni.$emit('onNewContactPendings', message) } } } diff --git a/pages/im/components/groupUserList.vue b/pages/im/components/groupUserList.vue index 112a4d0..3f95dfe 100644 --- a/pages/im/components/groupUserList.vue +++ b/pages/im/components/groupUserList.vue @@ -54,8 +54,8 @@ return { users: [], isOwner: false, - isAdmin: false, - canInvite:false,// 是否可以开启邀请 + isAdmin: false, + canInvite: false, // 是否可以开启邀请 adminUid: 0, members: 0, actionShow: false, @@ -82,8 +82,7 @@ }, mounted() { this.initGroupInfo() - getGroupUsers(this.targetId, this.count).then(res => { - console.log("res..",res) + getGroupUsers(this.targetId, this.count).then(res => { this.users = res res.map(item => { this.$store.dispatch('updateContact', item) @@ -96,7 +95,7 @@ this.isOwner = res.is_owner this.isAdmin = res.is_admin this.adminUid = res.user_id - this.members = res.members + this.members = res.members this.canInvite = res.can_invite }) }, diff --git a/pages/im/components/messageCell.vue b/pages/im/components/messageCell.vue index df717cb..87ec20e 100644 --- a/pages/im/components/messageCell.vue +++ b/pages/im/components/messageCell.vue @@ -6,8 +6,10 @@ - {{ contact(item.targetId).name }} [群] + + {{ contact(item.targetId).name }} + [群] + {{ item.sentTime|timeCustomCN }} { - console.log(res, "获取朋友的信息") this.userInfo = res // 获取到用户信息之后,去检查一下要不要更新 this.$store.dispatch('updateContact', res) @@ -148,7 +147,7 @@ }) }, toPrivate() { - uni.redirectTo({ + uni.navigateTo({ url: '/pages/im/private/chat?targetId=' + this.targetId }); }, @@ -228,8 +227,9 @@ }) }, singleCall(e) { - uni.redirectTo({ - url: '/pages/im/private/call?targetId=' + this.targetId + '&mediaType=' + e.type + '&isCall=true' + uni.navigateTo({ + url: '/pages/im/private/call?targetId=' + this.targetId + '&mediaType=' + e.type + + '&isCall=true' }) } } diff --git a/pages/im/friends/pending.vue b/pages/im/friends/pending.vue index eec097d..eeaba47 100644 --- a/pages/im/friends/pending.vue +++ b/pages/im/friends/pending.vue @@ -35,10 +35,13 @@ }, onLoad() { this.getPendingList() - uni.$on('onContactNotification', this.getPendingList) + uni.$on('onNewContactPendings', this.getPendingList) + }, + onUnload() { + uni.$off('onNewContactPendings') }, methods: { - getPendingList() { + getPendingList() { im.getPendingList((pendings) => { if (pendings.length > 0) { this.bg = '#f9f9f9' diff --git a/pages/im/group/announceCreate.vue b/pages/im/group/announceCreate.vue index 783810a..fd05ae4 100644 --- a/pages/im/group/announceCreate.vue +++ b/pages/im/group/announceCreate.vue @@ -16,8 +16,12 @@ createGroupAnnouncement, getGroupAnnouncement } from '@/apis/interfaces/im.js' + import onGroupDismiss from '@/utils/im/onGroupDismiss.js' export default { + mixins: [ + onGroupDismiss + ], data() { return { targetId: '', diff --git a/pages/im/group/announcement.vue b/pages/im/group/announcement.vue index adceb9d..d45e9ac 100644 --- a/pages/im/group/announcement.vue +++ b/pages/im/group/announcement.vue @@ -35,8 +35,12 @@ deleteGroupAnnouncement, topGroupAnnouncement } from '@/apis/interfaces/im.js' + import onGroupDismiss from '@/utils/im/onGroupDismiss.js' export default { + mixins: [ + onGroupDismiss + ], data() { return { targetId: '', @@ -54,8 +58,8 @@ name: '置顶该公告', disabled: false }], - actionTitle: '请选择操作', - bg:'#fff' + actionTitle: '请选择操作', + bg: '#fff' } }, onLoad(e) { @@ -84,11 +88,11 @@ methods: { // 获取公告信息 initData() { - getGroupAnnouncements(this.targetId).then(res => { - if(res.length>0){ - this.bg = '#f9f9f9' - }else{ - this.bg = '#fff' + getGroupAnnouncements(this.targetId).then(res => { + if (res.length > 0) { + this.bg = '#f9f9f9' + } else { + this.bg = '#fff' } this.announcements = res this.loading = false @@ -183,8 +187,8 @@ .item { background-color: #fff; padding: $padding $padding + 10 10rpx $padding + 10; - border-bottom: $padding solid #f9f9f9; - + border-bottom: $padding solid #f9f9f9; + .user { display: flex; @@ -193,7 +197,7 @@ align-items: center; box-sizing: border-box; font-size: $title-size-m; - color: $text-gray-m; + color: $text-gray-m; padding: 10rpx; .name { @@ -214,8 +218,8 @@ -webkit-box-orient: vertical; -webkit-line-clamp: 3; overflow: hidden; - line-height: 1.5; - border-bottom: solid 1rpx #F9F9F9; + line-height: 1.5; + border-bottom: solid 1rpx #F9F9F9; padding-bottom: 20rpx; span { diff --git a/pages/im/group/apply.vue b/pages/im/group/apply.vue index 15ee523..b288b4f 100644 --- a/pages/im/group/apply.vue +++ b/pages/im/group/apply.vue @@ -20,8 +20,12 @@ joinGroupPre, joinGroup } from '@/apis/interfaces/im.js' - - export default { + import onGroupDismiss from '@/utils/im/onGroupDismiss.js' + + export default { + mixins: [ + onGroupDismiss + ], data() { return { targetId: '', @@ -45,7 +49,7 @@ mask: true, duration: 3000 }) - }) + }) }, methods: { toGroupChat() { diff --git a/pages/im/group/chat.vue b/pages/im/group/chat.vue index 82f2d62..1fb05ce 100644 --- a/pages/im/group/chat.vue +++ b/pages/im/group/chat.vue @@ -21,8 +21,12 @@ import sentMessageBar from '../components/sentMessageBar' import showMessageCell from '../components/showMessageCell' import utils from '@/utils/index.js' - - export default { + import onGroupDismiss from '@/utils/im/onGroupDismiss.js' + + export default { + mixins: [ + onGroupDismiss + ], components: { sentMessageBar, showMessageCell @@ -59,11 +63,9 @@ }) // 获取历史消息列表 this.getMessageList() - // 监听收到本群的消息,追加消息 - uni.$on('onReceiveMessage', (msg) => { - if (msg.targetId == this.targetId) { - this.getNewMessage() - } + // 监听新消息 + uni.$on('onReceiveMessage_' + this.targetId, (message) => { + this.getNewMessage() }) uni.$on('onReceiptRequest', (msg) => { if (msg.targetId == this.targetId) { @@ -101,6 +103,7 @@ }) }, onUnload() { + uni.$off('onReceiveMessage_' + this.targetId) uni.$off('onRecallMessage') uni.$off('onReceiptRequest') uni.$off('onReceiptResponse') @@ -164,7 +167,7 @@ }, onHide() { // console.log(JSON.stringify(this.$refs)) - this.$refs.voice.stopPlay() + // this.$refs.voice.stopPlay() } } diff --git a/pages/im/group/info.vue b/pages/im/group/info.vue index 47d99e3..094e4cd 100644 --- a/pages/im/group/info.vue +++ b/pages/im/group/info.vue @@ -64,12 +64,16 @@ uploads } from '@/apis/interfaces/uploading' import * as RongIMLib from '@/uni_modules/RongCloud-IMWrapper/js_sdk/index' - import groupUserList from '../components/groupUserList' + import groupUserList from '../components/groupUserList' + import onGroupDismiss from '@/utils/im/onGroupDismiss.js' export default { components: { groupUserList - }, + }, + mixins: [ + onGroupDismiss + ], data() { return { targetId: '', @@ -133,7 +137,6 @@ return item.key == res.join_type })[0].name }).catch(err => { - console.log('getGroupInfo ERR', err); uni.showToast({ icon: 'none', title: '群不存在' diff --git a/pages/im/group/invite.vue b/pages/im/group/invite.vue index 0356cab..54769f2 100644 --- a/pages/im/group/invite.vue +++ b/pages/im/group/invite.vue @@ -8,8 +8,9 @@ - + { - if (this.friends[i].length > 0) { - return t - } - }) + this.indexs = this.orignalIndexs.map((t, i) => { + if (this.friends[i].length > 0) { + return t + } + }) } else { this.friends = this.orignalFriends this.indexs = this.orignalIndexs @@ -101,7 +105,7 @@ this.orignalIndexs = res.indexList }) getGroupUsers(this.targetId).then(res => { - res.map(res => { + res.map(res => { console.log(res) this.checkboxValue.push(String(res.targetId)) this.selectValue.push(String(res.targetId)) @@ -122,17 +126,17 @@ } }, - onInvite() { - console.log(this.checkboxValue,'userIds.....') - console.log(this.selectValue,'userIds.....') - let userIds = [] - this.checkboxValue.filter(item=>{ - if(!utils.inArray(item, this.selectValue)){ - userIds.push(item) - } - }) + onInvite() { + console.log(this.checkboxValue, 'userIds.....') + console.log(this.selectValue, 'userIds.....') + let userIds = [] + this.checkboxValue.filter(item => { + if (!utils.inArray(item, this.selectValue)) { + userIds.push(item) + } + }) // console.log(userIds) - inviteGroupUser(this.targetId, this.checkboxValue,userIds).then(res => { + inviteGroupUser(this.targetId, this.checkboxValue, userIds).then(res => { uni.navigateBack({ delta: 1, animationType: 'pop-out', diff --git a/pages/im/group/reviewed.vue b/pages/im/group/reviewed.vue index 2dd2b5b..8f09af0 100644 --- a/pages/im/group/reviewed.vue +++ b/pages/im/group/reviewed.vue @@ -3,7 +3,7 @@ - @@ -34,9 +34,12 @@ } from "@/apis/interfaces/im.js" import im from '@/utils/im/message.js' import * as RongIMLib from '@/uni_modules/RongCloud-IMWrapper/js_sdk/index' - + import onGroupDismiss from '@/utils/im/onGroupDismiss.js' export default { + mixins: [ + onGroupDismiss + ], data() { return { targetId: '', @@ -86,21 +89,21 @@ // icon: 'none', // mask: true, // duration: 2000 - // }) - RongIMLib.deleteMessagesByIds([latestMessageId], ({ - code - }) => { - console.log('code', code) - if (code == 0) { - uni.showToast({ - title:err.message, - icon: 'none', - mask: true, - duration: 2000 - }) - this.getList() - uni.$emit('groupInvitedUser') - } + // }) + RongIMLib.deleteMessagesByIds([latestMessageId], ({ + code + }) => { + console.log('code', code) + if (code == 0) { + uni.showToast({ + title: err.message, + icon: 'none', + mask: true, + duration: 2000 + }) + this.getList() + uni.$emit('groupInvitedUser') + } }) }) // 直接调用通过或拒绝的接口 @@ -153,6 +156,7 @@ } } + .no-lists { padding-top: $padding * 5; display: flex; diff --git a/pages/im/group/users.vue b/pages/im/group/users.vue index f356d8b..0e81fc8 100644 --- a/pages/im/group/users.vue +++ b/pages/im/group/users.vue @@ -4,7 +4,12 @@