123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- <template>
- <view class="container-conversation">
- <view class="scroll-box">
- <view class="uni-list margintop-bar">
- <view v-for="item in conversationList" :key="item.conversationID" @tap="handleRoute(item.conversationID)">
- <TUI-conversation-item :data-type="item.type" :conversation="item"></TUI-conversation-item>
- </view>
- </view>
- </view>
- <view class="bottom-back">
- <view class="bottom-area">
- <view v-if="showSelectTag" class="conversation-bubble" @tap.stop="handleEditToggle">
- <view v-for="(item, index) in array" :key="index" class="picker" :data-name="item.name" @tap="handleOnTap">{{ item.name }}</view>
- </view>
- <image @tap="showMore" class="btn-show-more" src="/static/static/assets/add.svg"></image>
- <view @tap="learnMore" class="im-link">了解更多IM功能</view>
- </view>
- </view>
- </view>
- </template>
- <!-- 这里有个加载的补丁逻辑待优化,页面向SDK请求conversationList的时候会有时延,
- 造成页面的一个抖动,这里加一个if逻辑打一个补丁,后续继续优化 -->
- <script>
- import logger from '../../../utils/logger';
- import TUIConversationItem from '../../../components/tui-conversation/conversation-item/index';
- import TUIMessageList from '../../../components/tui-chat/message-list/index';
- export default {
- data() {
- return {
- conversationList: [],
- showSelectTag: false,
- array: [
- {
- name: '发起会话'
- },
- {
- name: '发起群聊'
- },
- {
- name: '加入群聊'
- }
- ]
- };
- },
- components: {
- TUIConversationItem,
- TUIMessageList
- },
- props: {},
- /**
- * 生命周期函数--监听页面加载
- */
- onLoad() {
- // 登入后拉去会话列表
- this.getConversationList();
- uni.$TUIKit.on(uni.$TUIKitEvent.CONVERSATION_LIST_UPDATED, this.onConversationListUpdated);
- },
- /**
- * 生命周期函数--监听页面卸载
- */
- onUnload() {
- uni.$TUIKit.off(uni.$TUIKitEvent.SDK_READY, this.onConversationListUpdated);
- },
- methods: {
- handleRoute(id) {
- const url = `../../TUI-Chat/chat?conversationID=${id}`;
- uni.navigateTo({
- url
- });
- },
- onConversationListUpdated(event) {
- logger.log('TUI-conversation | onConversationListUpdated |ok');
- this.setData({
- conversationList: event.data
- });
- },
- getConversationList() {
- uni.$TUIKit.getConversationList().then(imResponse => {
- logger.log(`TUI-conversation | getConversationList | getConversationList-length: ${imResponse.data.conversationList.length}`);
- this.setData({
- conversationList: imResponse.data.conversationList
- });
- });
- },
- showMore() {
- this.setData({
- showSelectTag: !this.showSelectTag
- });
- },
- learnMore() {
- uni.navigateTo({
- url: '../../TUI-User-Center/webview/webview?url=https://cloud.tencent.com/product/im'
- });
- },
- handleOnTap(event) {
- this.setData(
- {
- showSelectTag: false
- },
- () => {
- switch (event.currentTarget.dataset.name) {
- case '发起会话':
- this.$createConversation();
- break;
- case '发起群聊':
- this.$createGroup();
- break;
- case '加入群聊':
- this.$joinGroup();
- default:
- break;
- }
- }
- );
- },
- goHomePage() {
- // uni.navigateTo 不能跳转到 tabbar 页面,使用 uni.switchTab 代替
- uni.switchTab({
- url: '../../TUI-Index/index'
- });
- },
- handleEditToggle() {
- this.setData({
- showSelectTag: false
- });
- },
- $createConversation() {
- uni.navigateTo({
- url: '../create-conversation/create'
- });
- },
- $createGroup() {
- uni.navigateTo({
- url: '../../TUI-Group/create-group/create'
- });
- },
- $joinGroup() {
- uni.navigateTo({
- url: '../../TUI-Group/join-group/join'
- });
- }
- }
- };
- </script>
- <style scoped>
- @import './conversation.css';
- </style>
|