From d10b979bea727e245e28499425e9d4e5e1b5c5f4 Mon Sep 17 00:00:00 2001 From: yj <1336058017@qq.com> Date: Fri, 22 Nov 2024 14:32:04 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/icon10.png | Bin 0 -> 8204 bytes pages/meeting/index.scss | 105 +++++++++++++++++++++++++++++++-------- pages/meeting/index.ts | 42 ++++++++++++++-- pages/meeting/index.wxml | 49 +++++++++++------- utils/agora.ts | 4 ++ 5 files changed, 157 insertions(+), 43 deletions(-) create mode 100644 assets/icon10.png diff --git a/assets/icon10.png b/assets/icon10.png new file mode 100644 index 0000000000000000000000000000000000000000..2b80162674dc70b9934db9723f6b859be7ef7433 GIT binary patch literal 8204 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 Ru!I7Dp}xtvH+nAj{tqdrf#v`J literal 0 HcmV?d00001 diff --git a/pages/meeting/index.scss b/pages/meeting/index.scss index d94f867..88d8847 100644 --- a/pages/meeting/index.scss +++ b/pages/meeting/index.scss @@ -32,9 +32,39 @@ flex-shrink: 0; } + &-audio { + flex-shrink: 0; + position: relative; + width: 16rpx; + height: 16rpx; + + &-image { + width: 100%; + height: 100%; + } + + &-stateImage { + position: absolute; + width: 100%; + height: 0%; + bottom: 0; + left: 0; + overflow: hidden; + + &-image { + position: absolute; + bottom: 0; + left: 0; + width: 16rpx; + height: 16rpx; + } + } + } + &-text { color: white; font-size: 12rpx; + margin-left: 2rpx; } } } @@ -195,9 +225,33 @@ width: 60rpx; box-sizing: border-box; - &-image { + &-view { + position: relative; width: 22rpx; height: 22rpx; + + &-image { + width: 100%; + height: 100%; + } + + &-audioImage { + width: 100%; + height: 0%; + position: absolute; + left: 50%; + bottom: 0; + transform: translate(-50%, 0); + overflow: hidden; + + &-image { + position: absolute; + bottom: 0; + left: 0; + width: 22rpx; + height: 22rpx; + } + } } &-text { @@ -235,36 +289,42 @@ &-view { overflow-y: auto; - display: flex; - align-items: center; - justify-content: space-between; padding: 4rpx 10rpx; + box-sizing: border-box; + flex-grow: 1; - &-avatar { + &-view { display: flex; align-items: center; - flex-grow: 1; + justify-content: space-between; + margin-bottom: 10rpx; - &-text { + &-avatar { + display: flex; + align-items: center; flex-grow: 1; - color: white; - font-size: 14rpx; - margin: 0 2rpx; - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; - width: 0; + + &-text { + flex-grow: 1; + color: white; + font-size: 14rpx; + margin: 0 2rpx; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + width: 0; + } } - } - &-image { - display: flex; - align-items: center; - flex-shrink: 0; + &-image { + display: flex; + align-items: center; + flex-shrink: 0; - &-icon { - width: 16rpx; - height: 16rpx; + &-icon { + width: 16rpx; + height: 16rpx; + } } } } @@ -291,6 +351,7 @@ flex-grow: 1; overflow-y: auto; padding: 0 10rpx; + box-sizing: border-box; &-view { color: white; diff --git a/pages/meeting/index.ts b/pages/meeting/index.ts index 44fdad0..49e1100 100644 --- a/pages/meeting/index.ts +++ b/pages/meeting/index.ts @@ -69,6 +69,8 @@ Page({ channelId: '', roomInfo: '', roomUserList: [], + audioList: [], + userVolume: 0, chatList: [], isAdmin: 0, currentUid: '', @@ -96,11 +98,17 @@ Page({ this.setData({ isAdmin: roomUserList.filter((item: any) => (role.ID.includes(item.roleId) || item.isRoomManager) && item.isRoom).length, userNumer: roomUserList.filter((item: any) => item.isRoom).length, + audioList: roomUserList.map(item => { + return { + volume: 0, + uid: item.uid, + } + }) }) }, 'footerList.**': function (footerList) { const footerListTemplate = [...footerList]; - footerListTemplate[3].show = !footerListTemplate[6].active + footerListTemplate[3].show = footerListTemplate[2].active this.setData({ footerList: footerListTemplate }) @@ -172,6 +180,7 @@ Page({ this.setData({ chatList: [...this.data.chatList, item] }) + this.scrollToBottom() break; // 扩展操作 case 'Operation': @@ -557,6 +566,7 @@ Page({ chatPopupVisible: true, noViewChatList: 0 }) + this.scrollToBottom() break; case '成员': this.setData({ @@ -626,10 +636,24 @@ Page({ } }, playerStateChange(e) { - // console.log(e); + }, recorderStateChange(e) { - // console.log(e); + + }, + playerAudioVolumenotify(e) { + const { uid } = e.currentTarget.dataset; + const { volume } = e.detail; + const audioListTemp = [...this.data.audioList] + const percentage = (volume / 100) * 100 + const item = audioListTemp.find(row => row.uid == uid) + if (item) { + item.volume = Math.floor(percentage) + '%' + } + this.setData({ + audioList: audioListTemp, + userVolume: audioListTemp.find(row => row.uid == this.data.user.uid).volume + }) }, clickChangeVideo(e) { const { item } = e.currentTarget.dataset; @@ -718,6 +742,7 @@ Page({ }], messageStr: '' }) + this.scrollToBottom() } else { this.message('请输入文字!').error() } @@ -726,5 +751,16 @@ Page({ this.setData({ isFullscreen: !this.data.isFullscreen }) + }, + scrollToBottom() { + wx.createSelectorQuery() + .select('#chatView') + .node() + .exec((res) => { + const scrollView = res[0].node; + scrollView.scrollTo({ + top: 10000000000000 + }) + }) } }) \ No newline at end of file diff --git a/pages/meeting/index.wxml b/pages/meeting/index.wxml index 969fefc..c9cd0a0 100644 --- a/pages/meeting/index.wxml +++ b/pages/meeting/index.wxml @@ -25,7 +25,7 @@ - + {{currentUser.userName}} @@ -38,14 +38,20 @@ - - + + - + + + + + + + {{item.userName}} @@ -56,9 +62,14 @@ - + ` - + + + + + + {{item.title}}({{userNumer}}) {{item.title}} {{item.title}}{{noViewChatList ? '('+noViewChatList+')' : '' }} @@ -74,29 +85,31 @@ - + 成员 - - - {{item.avatarName}} - {{item.userName}} - - - - + + + + {{item.avatarName}} + {{item.userName}} + + + + + - + 聊天 - + ({{item.timestamp}}) {{item.me ? item.message : item.userName}} @@ -104,7 +117,7 @@ {{item.me ? item.userName : item.message}} ({{item.timestamp}}) - + {{item}} diff --git a/utils/agora.ts b/utils/agora.ts index f3e1917..d92f25b 100644 --- a/utils/agora.ts +++ b/utils/agora.ts @@ -71,4 +71,8 @@ export const agora = { unmuteLocal: async (target: string) => { await client.unmuteLocal(target) }, + // 设置订阅的视频流类型。 0 大流 1 小流 + setRemoteVideoStreamType: async (uid: number, streamType: 0 | 1) => { + await client.setRemoteVideoStreamType(uid, streamType) + } } \ No newline at end of file