IM 部分页面逻辑,聊天列表-详情页

This commit is contained in:
2022-01-18 15:12:13 +08:00
parent 7c6916b4ae
commit e85b9c2c0d
12 changed files with 94 additions and 1273 deletions

View File

@@ -1,43 +1,43 @@
<template>
<div>
<u-popup overlay mode="left" closeable closeOnClickOverlay :show="showLeft" @close="showLeft = false">
<leftMenu></leftMenu>
</u-popup>
<div class="container">
<div class="msg-item u-border-bottom" v-for="(item, index) in conversations" @click="toDetail(item)">
<div class="avatar">
<u-badge numberType="ellipsis" max="99" shape="horn" absolute :offset="[-7, -7]"
:value="item.unreadMessageCount" />
<u-avatar shape="square" :src="friend(item.targetId).portraitUrl"></u-avatar>
</div>
<div class="content ">
<div class="name">
<h3>{{ friend(item.targetId).name }}</h3>
<span class="time">{{ item.sentTime|timeCustomCN }}</span>
<div v-if="$store.state.token != ''">
<div class="container">
<div class="msg-item u-border-bottom" v-for="(item, index) in conversations" @click="toDetail(item)">
<div class="avatar">
<u-badge numberType="ellipsis" max="99" shape="horn" absolute :offset="[-7, -7]"
:value="item.unreadMessageCount" />
<u-avatar shape="square" :src="friend(item.targetId).portraitUrl"></u-avatar>
</div>
<div class="content ">
<div class="name">
<h3>{{ friend(item.targetId).name }}</h3>
<span class="time">{{ item.sentTime|timeCustomCN }}</span>
</div>
<div class="u-line-1">{{ item.latestMessage.content }}</div>
</div>
<div class="u-line-1">{{ item.latestMessage.content }}</div>
</div>
</div>
<u-loadmore status="nomore" />
</div>
<div v-else>
<button @click="toLogin">去登录</button>
</div>
<u-loadmore status="nomore" />
</div>
</template>
<script>
import * as RongIMLib from '@rongcloud/imlib-uni'
import im from '@/utils/im/index.js'
import leftMenu from './components/left_menu.vue'
import userAuth from '@/public/userAuth'
import {
getImToken
} from '@/apis/interfaces/im.js'
export default {
components: {
leftMenu
},
data() {
return {
isShown: true, // 当前页面显示状态
conversations: [], // 会话列表
showLeft: false
conversations: [] // 会话列表
}
},
computed: {
@@ -47,7 +47,12 @@
}
}
},
onLoad() {},
onLoad() {
getImToken().then(res => {
im.syncFriends()
im.connect(res.token, res.userInfo)
})
},
onShow() {
this.getConversationList()
this.isShown = true
@@ -57,7 +62,6 @@
},
onNavigationBarButtonTap(e) {
if (e.index == 0) {
this.showLeft = true
}
},
watch: {
@@ -68,6 +72,15 @@
}
},
methods: {
// 检查登录
toLogin() {
if (this.$store.state.token === '') {
const Auth = new userAuth()
Auth.Login()
return false
}
return true
},
getFriend(targetId) {
return this.$store.getters.userInfo(targetId)
},