286 lines
6.7 KiB
Vue
286 lines
6.7 KiB
Vue
<template>
|
|
<div style="height: 100%">
|
|
<div class="jolkp">
|
|
<div class="fan" :style="{ marginRight: statue == 0 ? '56%' : '70%' }">
|
|
<span @click="hui(0)">消息</span>
|
|
</div>
|
|
<!-- <TUIContact v-else-if="statue==1" :stu="2" /> -->
|
|
<div @click="hui(1)" class="jolkp_h" v-if="statue == 0"></div>
|
|
<div @click="fnkiopl" class="jolkp_l"></div>
|
|
<!-- 弹出框 -->
|
|
<div v-if="isPopupVisible" class="popup">
|
|
<ul>
|
|
<li @click="handleAddFriend">添加好友/群聊</li>
|
|
<li @click="handleMenu()">发起群聊</li>
|
|
<li>扫一扫</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="three">
|
|
<div class="con">
|
|
<div class="three_div1"></div>
|
|
<div class="title">点赞</div>
|
|
</div>
|
|
<div class="con">
|
|
<div class="three_div2"></div>
|
|
<div class="title">关注</div>
|
|
</div>
|
|
|
|
<div class="con">
|
|
<div class="three_div3"></div>
|
|
<div class="title">评论</div>
|
|
</div>
|
|
</div>
|
|
<!-- 搜索添加 -->
|
|
<TUIContactsea v-if="statue == 2" />
|
|
<!-- 联系人 -->
|
|
<TUIContact v-else-if="statue == 1" />
|
|
<SelectFriend v-else-if="statue == 3" @con="confn" />
|
|
<SelectFriendqlioa v-else-if="statue == 4" @concen="concen" />
|
|
<!-- 会话 -->
|
|
<TUIConversation v-else />
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
// 导入组件
|
|
import TUIConversation from "@/TUIKit/components/TUIConversation/index";
|
|
import TUIContact from "@/TUIKit/components/TUIContact/index";
|
|
import TUIContactsea from "@/TUIKit/components/TUIContact/indexsea";
|
|
import { TUILogin } from "@tencentcloud/tui-core";
|
|
import ContactSearch from "@/TUIKit/components/TUIContact/contact-search/index.vue";
|
|
import { TUIChatKit } from "@/TUIKit";
|
|
import SelectFriend from "@/TUIKit/components/TUIContact/select-friend/index.vue";
|
|
import SelectFriendqlioa from "@/TUIKit/components/TUIGroup/index.vue";
|
|
import TUICore, { ExtensionInfo, TUIConstants } from "@tencentcloud/tui-core";
|
|
import storage from "@/utils/storage.js";
|
|
import { getUserimInfo } from "@/api/members";
|
|
TUIChatKit.init();
|
|
let vueVersion = 2;
|
|
// vueVersion = 3;
|
|
|
|
export default {
|
|
// 注册组件
|
|
components: {
|
|
TUIConversation,
|
|
TUIContact,
|
|
TUIContactsea,
|
|
ContactSearch,
|
|
SelectFriend,
|
|
SelectFriendqlioa,
|
|
TUIChatKit,
|
|
},
|
|
data() {
|
|
return {
|
|
statue: 0, //1联系人 2添加好友/群聊 0对话记录 3建群 4群名称
|
|
isPopupVisible: false, // 控制弹出框的显示与隐藏
|
|
isq: false,
|
|
};
|
|
},
|
|
created() {},
|
|
onShow() {
|
|
// 每次进入页面时调用的方法
|
|
//获取用户信息
|
|
getUserimInfo()
|
|
.then(({ data }) => {
|
|
console.log(data)
|
|
if (data.code == 200) {
|
|
console.log(data);
|
|
const par = data.result;
|
|
uni.$SDKAppID = par.sdkAppId; // Your SDKAppID
|
|
uni.$userID = par.userID; // Your userID
|
|
uni.$userSig = par.userSig;
|
|
TUILogin.login({
|
|
SDKAppID: uni.$SDKAppID,
|
|
userID: uni.$userID,
|
|
userSig: uni.$userSig,
|
|
useUploadPlugin: true, // If you need to send rich media messages, please set to true.
|
|
framework: `vue${vueVersion}`, // framework used vue2 / vue3
|
|
});
|
|
} else {
|
|
// 接口返回非 200 状态码,跳转登录页面
|
|
uni.navigateTo({
|
|
url: "/pages/passport/login",
|
|
});
|
|
}
|
|
})
|
|
.catch(() => {
|
|
// 请求失败,跳转登录页面
|
|
uni.navigateTo({
|
|
url: "/pages/passport/login",
|
|
});
|
|
});
|
|
},
|
|
mounted() {},
|
|
methods: {
|
|
//完成跳转群名
|
|
confn() {
|
|
this.statue = 4;
|
|
},
|
|
concen() {
|
|
this.statue = 0;
|
|
this.isPopupVisible = false;
|
|
},
|
|
hui(index) {
|
|
this.statue = index;
|
|
},
|
|
fnkiopl() {
|
|
this.isPopupVisible = !this.isPopupVisible;
|
|
},
|
|
handleMenu() {
|
|
const fn = [
|
|
...TUICore.getExtensionList(
|
|
TUIConstants.TUISearch.EXTENSION.SEARCH_MORE.EXT_ID
|
|
),
|
|
];
|
|
const item = fn[1];
|
|
const {
|
|
listener = {
|
|
onClicked: () => {},
|
|
},
|
|
} = item;
|
|
listener?.onClicked?.(item);
|
|
this.statue = 3;
|
|
},
|
|
// 处理添加好友/群聊点击事件
|
|
handleAddFriend() {
|
|
this.statue = 2;
|
|
this.isPopupVisible = false;
|
|
},
|
|
|
|
// // 打开会话列表
|
|
// openConversationList() {
|
|
// uni.navigateTo({
|
|
// url: '/TUIKit/components/TUIConversation/index'
|
|
// });
|
|
// },
|
|
// // 打开联系人
|
|
// openContact() {
|
|
// uni.navigateTo({
|
|
// url: '/TUIKit/components/TUIContact/index'
|
|
// });
|
|
// },
|
|
},
|
|
};
|
|
</script>
|
|
|
|
<style>
|
|
.jolkp {
|
|
height: 66px;
|
|
display: flex;
|
|
font-size: 15px;
|
|
justify-content: end;
|
|
/* 设置背景图 */
|
|
background-image: url("@/static/im/Rectangle.png");
|
|
/* 让背景图覆盖整个元素 */
|
|
background-size: cover;
|
|
/* 背景图不重复 */
|
|
background-repeat: no-repeat;
|
|
}
|
|
|
|
.jolkp_l {
|
|
width: 2rem;
|
|
height: 2rem;
|
|
background-image: url("@/static/im/Frame.png");
|
|
/* 让背景图覆盖整个元素 */
|
|
background-size: cover;
|
|
/* 背景图不重复 */
|
|
background-repeat: no-repeat;
|
|
margin-top: 35px;
|
|
margin-right: 20px;
|
|
}
|
|
|
|
.jolkp_h {
|
|
width: 2rem;
|
|
height: 2rem;
|
|
background-image: url("@/static/im/user.png");
|
|
/* 让背景图覆盖整个元素 */
|
|
background-size: cover;
|
|
/* 背景图不重复 */
|
|
background-repeat: no-repeat;
|
|
margin-top: 35px;
|
|
margin-right: 20px;
|
|
}
|
|
|
|
.popup {
|
|
position: absolute;
|
|
top: 65px;
|
|
/* 调整弹出框的位置 */
|
|
right: 5px;
|
|
background-color: #fff;
|
|
border: 1px solid #ccc;
|
|
border-radius: 4px;
|
|
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
|
z-index: 3;
|
|
}
|
|
|
|
.popup ul {
|
|
list-style-type: none;
|
|
padding: 0;
|
|
margin: 0;
|
|
}
|
|
|
|
.popup li {
|
|
padding: 10px 20px;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.popup li:hover {
|
|
background-color: #f0f0f0;
|
|
}
|
|
|
|
.fan {
|
|
width: 10%;
|
|
height: "100%";
|
|
font-size: 18px;
|
|
display: flex;
|
|
align-items: end;
|
|
padding: 5px;
|
|
}
|
|
|
|
.three {
|
|
width: 100%;
|
|
height: 10%;
|
|
display: flex;
|
|
justify-content: space-around;
|
|
align-items: center;
|
|
background: rgb(255, 255, 255);
|
|
}
|
|
.con{
|
|
width: 100%;
|
|
height: 100%;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
.three_div1 {
|
|
height: 3rem;
|
|
width: 40%;
|
|
background-image: url("@/static/im/kf.png");
|
|
background-size: 100% 100%;
|
|
background-repeat: no-repeat;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: end;
|
|
}
|
|
|
|
.three_div2 {
|
|
width: 40%;
|
|
height: 3rem;
|
|
background-image: url("@/static/im/hy.png");
|
|
background-size: 100% 100%;
|
|
background-repeat: no-repeat;
|
|
width: 40%;
|
|
}
|
|
|
|
.three_div3 {
|
|
height: 3rem;
|
|
background-image: url("@/static/im/da.png");
|
|
background-size: 100% 100%;
|
|
background-repeat: no-repeat;
|
|
width: 40%;
|
|
}
|
|
</style>
|