IM,群组相关页面

This commit is contained in:
2022-02-11 11:51:49 +08:00
parent b9364be40b
commit 8aebe0eef5
9 changed files with 279 additions and 28 deletions

View File

@@ -105,7 +105,8 @@
callShow: false
}
},
onLoad(e) {
onLoad(e) {
console.log(e);
this.targetId = e.targetId
getFriendInfo(e.targetId).then(res => {
this.userInfo = res

View File

@@ -0,0 +1,32 @@
<template>
<view>
<view v-for="(item,index) in announcements" :key="index">
{{ item.content }}
</view>
</view>
</template>
<script>
import {
getGroupAnnouncements
} from '@/apis/interfaces/im.js'
export default {
data() {
return {
targetId: '',
announcements: []
}
},
onLoad(e) {
this.targetId = e.targetId
getGroupAnnouncements(this.targetId).then(res => {
this.announcements = res
})
}
}
</script>
<style>
</style>

View File

@@ -3,7 +3,7 @@
<list class="body" :show-scrollbar="false">
<cell class="cell" v-for="(item, index) in messages" :key="index">
<view class="cell-item" :class="item.messageDirection == 1 ? 'right' : 'left'">
<u-avatar class="avatar" size="36" shape="square" :src="item.content.userInfo.portraitUrl" />
<u-avatar class="avatar" @click="toUser(item)" size="36" shape="square" :src="item.content.userInfo.portraitUrl" />
<view class="msg">
<show-voice v-if="item.objectName === 'RC:HQVCMsg'" :guest="item.messageDirection == 1"
:msg="item.content" :name="item.content.userInfo.name" />
@@ -71,7 +71,13 @@
url: '/pages/im/group/info?targetId=' + this.targetId
})
},
methods: {
methods: {
toUser(item) {
console.log(item);
uni.navigateTo({
url: '/pages/im/friends/info?targetId=' + item.senderUserId
})
},
// 获取消息列表
getMessageList() {
im.getMessageList(

View File

@@ -1,24 +1,40 @@
<template>
<view>
<view class="">
<view class="members">
<view class="users">
<view class="user" v-for="(item, index) in members" :key="index" @click="toUser(item)">
<u-avatar size="44" shape="square" :src="item.portraitUrl"></u-avatar>
<text class="name">{{ item.name }}</text>
</view>
<view class="user">
<u-avatar @click="inviteUser" size="44" shape="square" icon="plus" bg-color="#eeeeee" color="#999999"></u-avatar>
<text class="name">邀请用户</text>
</view>
</view>
</view>
<view>
查看更多群成员
<view class="">
<text @click="loadMore" class="loadmore">查看更多群成员</text>
</view>
</view>
群聊名称
群公告
<u-cell-group>
<u-cell isLink title="群聊名称" :value="group.name"></u-cell>
<u-cell isLink title="群公告" :label="announcement"></u-cell>
<u-cell isLink title="聊天置顶"></u-cell>
<u-cell isLink title="免打扰"></u-cell>
</u-cell-group>
<view class="">
置顶
<view class="actions u-border-top">
<view class="u-border-bottom">
<text>清空聊天记录</text>
</view>
<view class="u-border-bottom">
<text>删除并退出</text>
</view>
<view class="u-border-bottom" v-if="group.is_owner">
<text>解散群聊</text>
</view>
</view>
<view class="">
免打扰
</view>
清空聊天记录
删除并退出
解散群聊
</view>
</template>
@@ -32,21 +48,77 @@
return {
targetId: '',
group: {},
announcement: '',
members: []
}
},
onLoad(e) {
this.targetId = e.targetId
getGroupInfo(this.targetId).then(res => {
this.info = res.group
this.group = res.group
this.announcement = res.announcement
this.members = res.members
}).catch(err => {
console.log(err);
})
},
methods: {
toUser(item) {
uni.navigateTo({
url: '/pages/im/friends/info?targetId=' + item.targetId
})
},
inviteUser() {
},
loadMore() {
uni.navigateTo({
url: '/pages/im/group/users?targetId=' + this.targetId
})
},
toAnnouncement() {
uni.navigateTo({
url: '/pages/im/group/announcement?targetId=' + this.targetId
})
}
}
}
</script>
<style>
<style lang="scss" scoped>
.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;
justify-content: center;
align-items: center;
.name {
width: 126rpx;
text-align: center;
font-size: 28rpx;
overflow: hidden;
text-overflow: ellipsis;
}
}
}
.loadmore {
font-size: 28rpx;
color: $text-gray-m;
text-align: center;
}
}
.actions {
margin-top: $padding;
}
</style>

68
pages/im/group/users.nvue Normal file
View File

@@ -0,0 +1,68 @@
<template>
<view class="members">
<view class="users">
<view class="user" v-for="(item, index) in members" :key="index" @click="toUser(item)">
<u-avatar size="44" shape="square" :src="item.portraitUrl"></u-avatar>
<text class="name">{{ item.name }}</text>
</view>
</view>
</view>
</template>
<script>
import {
getGroupUsers
} from '@/apis/interfaces/im.js'
export default {
data() {
return {
targetId: '',
members: []
}
},
onLoad(e) {
this.targetId = e.targetId
getGroupUsers(this.targetId).then(res => {
this.members = res
})
},
methods: {
toUser(item) {
uni.navigateTo({
url: '/pages/im/friends/info?targetId=' + item.targetId
})
}
}
}
</script>
<style lang="scss" scoped>
.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;
justify-content: center;
align-items: center;
.name {
width: 126rpx;
text-align: center;
font-size: 28rpx;
overflow: hidden;
text-overflow: ellipsis;
}
}
}
}
</style>

View File

@@ -98,7 +98,6 @@
RongIMLib.getConversationList([1, 3], count, timestamp, (res) => {
if (res.code === 0) {
this.conversations = res.conversations
console.log(res.conversations);
}
})
},