diff --git a/.DS_Store b/.DS_Store index 8ee0c7c..e68dfc9 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/apis/interfaces/im.js b/apis/interfaces/im.js index 11c75be..47dee85 100644 --- a/apis/interfaces/im.js +++ b/apis/interfaces/im.js @@ -315,14 +315,15 @@ export { getGroupAnnouncement, createGroupAnnouncement, deleteGroupAnnouncement, - topGroupAnnouncement, + topGroupAnnouncement, searchGroup, joinGroupPre, joinGroup, quitGroup, dismissGroup, inviteGroupUser, - removeGroupUser, + removeGroupUser, + transferGroupOwner, setGroupAdmin, removeGroupAdmin, groupMakeSure, // 通过审核 diff --git a/pages/.DS_Store b/pages/.DS_Store index 2c2ce98..dc29784 100644 Binary files a/pages/.DS_Store and b/pages/.DS_Store differ diff --git a/pages/im/.DS_Store b/pages/im/.DS_Store index b089d3f..33ddb79 100644 Binary files a/pages/im/.DS_Store and b/pages/im/.DS_Store differ diff --git a/pages/im/components/groupUserList.vue b/pages/im/components/groupUserList.vue index 281b643..a4009aa 100644 --- a/pages/im/components/groupUserList.vue +++ b/pages/im/components/groupUserList.vue @@ -104,7 +104,10 @@ hideAction(item) { this.actionShow = false }, - showAction(item) { + showAction(item) { + if (item.is_admin == 2) { + return + } this.currentUser = item this.actionTitle = item.name // 只有管理员以上才会弹窗 diff --git a/pages/im/components/sent/sentText.vue b/pages/im/components/sent/sentText.vue index e0fd36d..40b5361 100644 --- a/pages/im/components/sent/sentText.vue +++ b/pages/im/components/sent/sentText.vue @@ -72,11 +72,10 @@ display: flex; flex-direction: row; justify-content: space-between; - .input { background: #F3F6FB; height: 70rpx; - width: 500rpx; + width: 460rpx; border-radius: 10rpx; margin-right: 15rpx; padding: 0 20rpx; diff --git a/pages/im/components/sent/sentVoice.vue b/pages/im/components/sent/sentVoice.vue index e52d040..f435ff2 100644 --- a/pages/im/components/sent/sentVoice.vue +++ b/pages/im/components/sent/sentVoice.vue @@ -2,11 +2,17 @@ 按住说话 - - - - - 录音中 {{recordTime}} s + + + + + 录音中 {{recordTime}} s + + + + 取消 + 试听 + 发送 @@ -32,23 +38,39 @@ }, data() { return { - showRecordTip: false, + showRecordTip: false, + showConfirm: false, recordTime: 60, interval: 0, maxRecordTime: 60, - recorderManager: null + recorderManager: null, + mp3AudioSrc: null, + isBetaPlay: false } }, - created() { + computed: { + sender() { + return this.$store.getters.sender + } + }, + created() { this.recorderManager = uni.getRecorderManager() }, - methods: { + methods: { + onShowLay(){ + // this.showRecordTip = true + uni.vibrateShort({ + complete: com => { + console.log(com) + } + }) + }, // 检查安卓录制权限 async getAndroidPermission() { return await permision.requestAndroidPermission('android.permission.RECORD_AUDIO') }, // 录制语音消息 - startRecord() { + startRecord() { this.getAndroidPermission().then(code => { switch (code) { case 1: @@ -78,21 +100,63 @@ }, // 结束录音 stopRecord(e) { - if (!this.showRecordTip) return - this.recorderManager.stop() - clearInterval(this.interval) - // 监听录音结束 - this.recorderManager.onStop(res => { - im.sentVoice(this.conversationType, this.targetId, res.tempFilePath, (this.maxRecordTime - - this.recordTime), this.sender, () => { - setTimeout(() => { - this.$emit('success') - }, 500) - }) - this.recordTime = this.maxRecordTime - this.showRecordTip = false - }) - }, + if (!this.showRecordTip) return + // 延迟500毫秒结束录音 + setTimeout(()=> { + this.recorderManager.stop() + clearInterval(this.interval) + // 监听录音结束 + this.recorderManager.onStop(res => { + console.log(res) + this.mp3AudioSrc = res.tempFilePath + this.showConfirm = true + this.showRecordTip = false + }) + },500) + }, + // 发送语音消息 + senVoice(){ + if(this.mp3AudioSrc === null) { + uni.showToast({ + title: '发送失败, 暂无音频信息', + icon : 'none' + }) + return + } + im.sentVoice(this.conversationType, this.targetId, this.mp3AudioSrc, (this.maxRecordTime - + this.recordTime), this.sender, () => { + this.recordTime = this.maxRecordTime + this.mp3AudioSrc = null + this.showConfirm = false + setTimeout(() => { + this.$emit('success') + }, 500) + }) + }, + // 试听语音 + startPlay() { + let betaAudio = uni.createInnerAudioContext() + betaAudio.src = this.mp3AudioSrc; + // 在播放中 + if(this.isBetaPlay){ + betaAudio.stop() + betaAudio.onStop(() => { + this.isBetaPlay = false; + betaAudio.destroy() + }) + return + } + // 监听音频播放中 + betaAudio.play() + betaAudio.onPlay(() => { + this.isBetaPlay = true; + }) + // 监听音频结束 + betaAudio.onEnded(() => { + this.isBetaPlay = false; + betaAudio.destroy() + }) + } } } @@ -114,6 +178,37 @@ font-size: 30rpx; color: #333; } + } + .lay{ + position: absolute; + left: 0; + bottom: 0; + z-index: 9; + background: rgba($color: #000000, $alpha: .5); + height: 100vh; + width: 100vw; + padding: 20vh 30rpx; + box-sizing: border-box; + display: flex; + justify-content: space-around; + align-items: flex-end; + flex-direction: row; + .item{ + height: 140rpx; + width: 140rpx; + text-align: center; + line-height: 140rpx; + border-radius: 50%; + background-color: white; + &.red{ + background: #e6576b; + color: white; + } + &.greed{ + background: #34CE98; + color: white; + } + } } .modal { diff --git a/utils/im/listeners.js b/utils/im/listeners.js index ab0260a..0555ba7 100644 --- a/utils/im/listeners.js +++ b/utils/im/listeners.js @@ -55,8 +55,7 @@ const notifyMsgTypes = [ IMLib.ObjectName.Location, IMLib.ObjectName.Voice, IMLib.ObjectName.HQVoice, - IMLib.ObjectName.Sight, - IMLib.ObjectName.GroupNotification + IMLib.ObjectName.Sight ] const imLibListeners = () => { @@ -68,7 +67,7 @@ const imLibListeners = () => { // 添加消息监听函数 IMLib.addReceiveMessageListener((res) => { const message = res.data.message - console.error('[收到消息]', message) + console.error('[收到消息]',IMLib.ObjectName.GroupNotification, message) checkContactExists(message) if (utils.inArray(message.objectName, notifyMsgTypes)) { onReceiveMessage(message) @@ -83,7 +82,8 @@ const imLibListeners = () => { uni.$emit('onNewContactConversation', message) uni.$emit('onNewContactFriends', message) uni.$emit('onNewContactPendings', message) - } else if (message.objectName === IMLib.ObjectName.GroupNotification) { + } else if (message.objectName === IMLib.ObjectName.GroupNotification) { + console.log('踢出用户',message); // 解散群 if (message.content.operation === 'Dismiss') { IMLib.cleanHistoryMessages(message.conversationType, message.targetId, message.sentTime, @@ -93,7 +93,8 @@ const imLibListeners = () => { // 发布群解散的消息 uni.$emit('onGroupDismiss') uni.$emit('onGroupDismiss_' + message.targetId) - } else if (message.content.operation === 'REMOVE') { + } else if (message.content.operation === 'REMOVE') { + console.log('踢出', message.content); // 要判断是否当前用户,然后把当前用户踢出到主页去, 删除聊天记录,会话列表 if (message.content.extra == store.getters.sender.userId) { IMLib.cleanHistoryMessages(message.conversationType, message.targetId, message.sentTime,