From b4e17cc1931d9689e70818a6fa6dfc12a85e5259 Mon Sep 17 00:00:00 2001 From: Jason Date: Wed, 16 Feb 2022 15:05:17 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BE=A4=E6=88=90=E5=91=98=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=E6=8A=BD=E7=A6=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apis/interfaces/im.js | 2 +- pages/im/components/groupUserList.vue | 300 ++++++++++++++++++++++++++ pages/im/group/info.vue | 197 ++--------------- pages/im/group/users.vue | 150 +------------ {lib => utils}/emoji.js | 0 utils/im/index.js | 1 - 6 files changed, 319 insertions(+), 331 deletions(-) create mode 100644 pages/im/components/groupUserList.vue rename {lib => utils}/emoji.js (100%) diff --git a/apis/interfaces/im.js b/apis/interfaces/im.js index deb8b1c..ba17956 100644 --- a/apis/interfaces/im.js +++ b/apis/interfaces/im.js @@ -259,7 +259,7 @@ const removeGroupAdmin = (groupId, userId) => { */ const transferGroupOwner = (groupId, userId) => { return request({ - method: 'DELETE', + method: 'POST', url: 'im/groups/' + groupId + '/owner/' + userId }) } diff --git a/pages/im/components/groupUserList.vue b/pages/im/components/groupUserList.vue new file mode 100644 index 0000000..c328223 --- /dev/null +++ b/pages/im/components/groupUserList.vue @@ -0,0 +1,300 @@ + + + + + + diff --git a/pages/im/group/info.vue b/pages/im/group/info.vue index f716b78..b86f58a 100644 --- a/pages/im/group/info.vue +++ b/pages/im/group/info.vue @@ -1,22 +1,7 @@ @@ -72,27 +53,24 @@ getGroupInfo, updateGroup, quitGroup, - removeGroupUser, - setGroupAdmin, - removeGroupAdmin, - dismissGroup, - transferGroupOwner, - getGroupUsers + dismissGroup } from '@/apis/interfaces/im.js' import { uploads } from '@/apis/interfaces/uploading' import * as RongIMLib from '@/uni_modules/RongCloud-IMWrapper/js_sdk/index' + import groupUserList from '../components/groupUserList' export default { + components: { + groupUserList + }, data() { return { targetId: '', group: {}, conversationType: 3, announcement: '', - users: [], - members: 0, status: false, isTop: false, loaded: false, @@ -102,24 +80,7 @@ qrContent: 'JOINGROUP|', joinType: '', joinTypeMap: [], - showActions: false, - showUserAction: false, - userActionMap: [{ - key: 0, - name: '移除成员', - disabled: false - }, { - key: 1, - name: '设置管理', - disabled: true - }, - { - key: 2, - name: '转移群主', - disabled: true - } - ], - currentUser: {} + showActions: false } }, onLoad(e) { @@ -139,18 +100,12 @@ } }) this.initData() - this.initUsers() uni.$on('groupAnnouncementCreated', this.initData) }, onUnload() { uni.$off('groupAnnouncementCreated') }, methods: { - initUsers() { - getGroupUsers(this.targetId, 14).then(res => { - this.users = res - }) - }, initData() { getGroupInfo(this.targetId).then(res => { this.group = res.group @@ -190,27 +145,6 @@ }) }) }, - toUser(item) { - if (item.targetId == this.$store.getters.sender.userId) { - uni.navigateTo({ - url: '/pages/im/friends/mine?targetId=' + item.targetId - }) - } else { - uni.navigateTo({ - url: '/pages/im/friends/info?targetId=' + item.targetId - }) - } - }, - inviteUser() { - uni.navigateTo({ - url: '/pages/im/group/invite?targetId=' + this.targetId - }) - }, - loadMore() { - uni.navigateTo({ - url: '/pages/im/group/users?targetId=' + this.targetId - }) - }, toAnnouncement() { uni.navigateTo({ url: '/pages/im/group/announcement?targetId=' + this.targetId @@ -360,86 +294,19 @@ uni.showToast({ icon: 'none', title: '退出群聊成功' - }) - // 移除指定的会话 - RongIMLib.removeConversation(this.conversationType, this.targetId) - + }) + // 移除指定的会话 + RongIMLib.removeConversation(this.conversationType, this.targetId) + uni.switchTab({ url: '/pages/im/index' }) - }).catch(err => { - console.log(err); + }).catch(err => { + console.log(err); }) } } }) - }, - showUserActionSheet(item) { - this.currentUser = item - // 只有管理员以上才会弹窗 - if (this.group.is_admin) { - if (this.group.is_owner) { - this.userActionMap.map((item) => { - item.disabled = false - return item - }) - } - this.showUserAction = true - } - }, - hideUserAction() { - this.currentUser = {} - this.showUserAction = false - }, - handleUserAction(e) { - switch (e.key) { - case 0: - removeGroupUser(this.targetId, this.currentUser.targetId).then(res => { - uni.showToast({ - icon: 'none', - title: '成员移除成功' - }) - }).catch(err => { - uni.showToast({ - icon: 'none', - title: err.message - }) - }).finally(() => { - this.initUsers() - }) - break; - case 1: - setGroupAdmin(this.targetId, this.currentUser.targetId).then(res => { - uni.showToast({ - icon: 'none', - title: '设置管理成功' - }) - }).catch(err => { - uni.showToast({ - icon: 'none', - title: err.message - }) - }).finally(() => { - this.initUsers() - }) - break; - case 2: - transferGroupOwner(this.targetId, this.currentUser.targetId).then(res => { - uni.showToast({ - icon: 'none', - title: '群主转让成功' - }) - }).catch(err => { - uni.showToast({ - icon: 'none', - title: err.message - }) - }).finally(() => { - this.initUsers() - this.initData() - }) - break; - } } } } @@ -459,44 +326,6 @@ .members { background-color: white; padding-bottom: 40rpx; - - .users { - flex-direction: row; - flex-wrap: wrap; - display: flex; - padding: 20rpx 0; - - .user { - width: 126rpx; - margin-left: 20rpx; - margin-bottom: 20rpx; - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - - &.active { - background-color: $window-color; - } - - .name { - color: $text-gray-m; - width: 126rpx; - text-align: center; - font-size: 26rpx; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - word-break: break-word; - } - } - } - - .loadmore { - font-size: 26rpx; - color: $text-gray-m; - text-align: center; - } } .actions { diff --git a/pages/im/group/users.vue b/pages/im/group/users.vue index 6daa258..f356d8b 100644 --- a/pages/im/group/users.vue +++ b/pages/im/group/users.vue @@ -1,164 +1,24 @@ diff --git a/lib/emoji.js b/utils/emoji.js similarity index 100% rename from lib/emoji.js rename to utils/emoji.js diff --git a/utils/im/index.js b/utils/im/index.js index 7fdf5dc..e68329b 100644 --- a/utils/im/index.js +++ b/utils/im/index.js @@ -210,7 +210,6 @@ const newMessage = (msg) => { }) => { if (code === 0) { if (status) { - uni.vibrateLong() triTone() } }