From dde36aa26e7d50b947b4173946566d107ac4d21f Mon Sep 17 00:00:00 2001 From: Jason Date: Mon, 14 Feb 2022 16:58:08 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BE=A4=E5=87=86=E5=85=A5=E8=A7=84=E5=88=99?= =?UTF-8?q?=EF=BC=8C=E7=94=B3=E8=AF=B7=E5=85=A5=E7=BE=A4=E7=9A=84=E5=9F=BA?= =?UTF-8?q?=E7=A1=80=E8=BF=87=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apis/interfaces/im.js | 25 ++++-- pages.json | 7 ++ pages/im/group/apply.vue | 91 ++++++++++++++++++++++ pages/im/group/info.vue | 159 +++++++++++++++++++++++++-------------- pages/im/index.vue | 25 ++++-- 5 files changed, 237 insertions(+), 70 deletions(-) create mode 100644 pages/im/group/apply.vue diff --git a/apis/interfaces/im.js b/apis/interfaces/im.js index fa8ac9e..2eb828a 100644 --- a/apis/interfaces/im.js +++ b/apis/interfaces/im.js @@ -174,10 +174,22 @@ const searchGroup = (name) => { }) } -const joinGroup = (groupId) => { +/** + * 加群前,获取的群信息 + */ +const joinGroupPre = (groupId) => { + return request({ + url: 'im/groups/' + groupId + '/join' + }) +} + +const joinGroup = (groupId, message) => { return request({ method: 'POST', - url: 'im/groups/' + groupId + '/join' + url: 'im/groups/' + groupId + '/join', + data: { + message + } }) } @@ -187,9 +199,9 @@ const quitGroup = (groupId) => { url: 'im/groups/' + groupId + '/quit' }) } - -/** - * 解散群聊 + +/** + * 解散群聊 */ const dismissGroup = (groupId) => { return request({ @@ -220,7 +232,8 @@ export { createGroupAnnouncement, deleteGroupAnnouncement, searchGroup, + joinGroupPre, joinGroup, - quitGroup, + quitGroup, dismissGroup } diff --git a/pages.json b/pages.json index 5053a57..d662e57 100644 --- a/pages.json +++ b/pages.json @@ -467,6 +467,13 @@ } } } + }, + { + "path": "pages/im/group/apply", + "name": "imGroupApply", + "style": { + "navigationBarTitleText": "申请加群" + } }, { "path": "pages/im/group/info", diff --git a/pages/im/group/apply.vue b/pages/im/group/apply.vue new file mode 100644 index 0000000..3f7aa3f --- /dev/null +++ b/pages/im/group/apply.vue @@ -0,0 +1,91 @@ + + + + + diff --git a/pages/im/group/info.vue b/pages/im/group/info.vue index 3e3928b..6997e1a 100644 --- a/pages/im/group/info.vue +++ b/pages/im/group/info.vue @@ -2,7 +2,7 @@ - + {{ item.name }} @@ -13,7 +13,7 @@ - 查看更多群成员 > + 查看更多群成员 > @@ -30,8 +30,9 @@ - + + @@ -52,6 +53,10 @@ + + + @@ -74,14 +79,17 @@ group: {}, conversationType: 3, announcement: '', - members: [], + users: [], status: false, isTop: false, loaded: false, modalShow: false, groupName: '', qrCodeShow: false, - qrContent: 'JOINGROUP|' + qrContent: 'JOINGROUP|', + joinType: '', + joinTypeMap: [], + showActions: false } }, onLoad(e) { @@ -112,8 +120,16 @@ this.group = res.group this.groupName = res.group.name this.announcement = res.announcement + this.users = res.users this.members = res.members this.loaded = true + this.joinTypeMap = res.join_type_map.map(item => { + if (item.key == res.join_type) { + item.disabled = true + } + return item + }) + this.joinType = res.join_type_map.filter(item => item.key == res.join_type)[0].name }).catch(err => { uni.showToast({ icon: 'none', @@ -138,10 +154,16 @@ }) }) }, - toUser(item) { - uni.navigateTo({ - url: '/pages/im/friends/info?targetId=' + item.targetId - }) + 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() { @@ -185,6 +207,78 @@ this.modalShow = false this.groupName = this.group.name }, + // 修改群头像 + onGroupAvatar() { + console.log('onGroupAvatar'); + uni.chooseImage({ + count: 1, + sourceType: ['album'], + crop: { + quality: 100, + width: 128, + height: 128, + resize: true + }, + success: res => { + console.log(res); + let path = res.tempFiles.map((val, index) => { + return { + name: 'uploads' + index, + uri: val.path + } + }) + uploads(path).then(path => { + updateGroup(this.targetId, { + cover: path.path[0] + }).then(res => { + uni.showToast({ + icon: 'none', + title: '群头像修改成功' + }) + this.modalShow = false + this.group.cover = path.url[0] + }) + }).catch(err => { + uni.showToast({ + title: err.message, + icon: 'none' + }) + }) + }, + fail: (err) => { + console.log(err); + } + }) + }, + onChangeJoinType() { + this.showActions = true + }, + doAction(e) { + updateGroup(this.targetId, { + join_type: e.key + }).then(res => { + uni.showToast({ + icon: 'none', + title: '修改成功' + }) + this.joinTypeMap = this.joinTypeMap.map(item => { + if (item.key == e.key) { + item.disabled = true + } else { + item.disabled = false + } + return item + }) + this.joinType = e.name + this.showActions = false + }).catch(err => { + console.log(err); + uni.showToast({ + icon: 'error', + title: err.message + }) + }) + }, onClean() { uni.showModal({ title: '清空聊天记录', @@ -237,53 +331,6 @@ } } }) - }, - // 修改群头像 - onGroupAvatar() { - uni.showToast({ - icon: 'none', - title: '正在打开相册' - }) - uni.chooseImage({ - count: 1, - sizeType: ['original'], - sourceType: ['album'], - crop: { - quality: 100, - width: 128, - height: 128, - resize: true - }, - success: res => { - console.log(res); - let path = res.tempFiles.map((val, index) => { - return { - name: 'uploads' + index, - uri: val.path - } - }) - uploads(path).then(path => { - updateGroup(this.targetId, { - cover: path.path[0] - }).then(res => { - uni.showToast({ - icon: 'none', - title: '群头像修改成功' - }) - this.modalShow = false - this.group.cover = path.url[0] - }) - }).catch(err => { - uni.showToast({ - title: err.message, - icon: 'none' - }) - }) - }, - fail: (err) => { - console.log(err); - } - }) } } } diff --git a/pages/im/index.vue b/pages/im/index.vue index 8e86519..5cb1a75 100644 --- a/pages/im/index.vue +++ b/pages/im/index.vue @@ -72,10 +72,10 @@ uni.$off('onReceiveMessage') }, methods: { - checkNewFriendPending() { - im.getPendingList((pendings) => { - this.hasNewFriends = pendings.length - }) + checkNewFriendPending() { + im.getPendingList((pendings) => { + this.hasNewFriends = pendings.length + }) }, // 检查登录 toLogin() { @@ -101,10 +101,19 @@ uni.scanCode({ success: (res) => { if (res.scanType == 'QR_CODE') { - res.result.substr(0, 10) == 'ADDFRIEND|' - uni.navigateTo({ - url: '/pages/im/friends/info?targetId=' + res.result.substr(10) - }) + if (res.result.substr(0, 10) == 'ADDFRIEND|') { + uni.navigateTo({ + url: '/pages/im/friends/info?targetId=' + res.result.substr(10) + }) + } else if (res.result.substr(0, 10) == 'JOINGROUP|') { + uni.navigateTo({ + url: '/pages/im/group/apply?targetId=' + res.result.substr(10) + }) + } else { + uni.showToast({ + title: '暂不支持的二维码' + }) + } } } })