Files
im-system/im-uniapp/wx/tabbar1/index.vue
2023-09-24 23:26:20 +08:00

259 lines
6.4 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<view>
<watermark></watermark>
<uni-list-wx>
<uni-list-wx :border="true">
<view class="alertTips" v-if="list.length <= 0">暂无消息,快去联系你的好朋友吧</view>
<template v-for="(v, i) in toplist" :key="i">
<uni-list-chat-wx color="#eeeeee" :itemKey="i" :item="v" @longpressItem="longpressItem"
:longTapItemKey="longTapItemKey" @click="clickChat(v)" clickable :title="v.nickName"
:note="v.content" :time="v.time" badge-positon="left" :badge-text="v.num"></uni-list-chat-wx>
</template>
<template v-for="(v, i) in NOTtoplist" :key="i">
<uni-list-chat-wx color="#fff" :itemKey="i" :item="v" @longpressItem="longpressItem"
:longTapItemKey="longTapItemKey" @click="clickChat(v)" clickable :title="v.nickName"
:note="v.content" :time="v.time" badge-positon="left" :badge-text="v.num"></uni-list-chat-wx>
</template>
</uni-list-wx>
</uni-list-wx>
<top-right-tool-wx ref="trtw"></top-right-tool-wx>
</view>
</template>
<script>
const ListenerMap = {
onSocketConnectEvent: (option, status, data) => {
console.log("已建立连接:" + JSON.stringify(status));
},
onSocketErrorEvent: (error) => {
console.log("连接出现错误:" + userId);
},
onSocketReConnectEvent: () => {
console.log("正在重连:");
},
onSocketCloseEvent: () => {
console.log("连接关闭:");
},
onSocketReConnectSuccessEvent: () => {
console.log("重连成功");
},
onTestMessage: (e) => {
console.log("onTestMessage " + e);
},
onP2PMessage: (e) => {
console.log("onP2PMessage " + e);
e = JSON.parse(e)
uni.$emit('P2PMessage', e.data);
},
onLogin: (uid) => {
console.log("用户" + uid + "登陆sdk成功");
}
};
export default {
data() {
return {
longTapItemKey: 0,
tranMsg: '',
list: [],
toplist: [],
NOTtoplist: [],
clickToSubmitSure: null
};
},
computed: {
userInfo() {
return this.$store.state.userInfo;
},
chatlist() {
return this.$store.state.chatlist;
},
chatlistkeys() {
return Object.keys(this.chatlist);
},
chatListNum() {
return this.$store.state.chatListNum;
},
topicReply() {
return this.$store.state.topicReply;
},
friendApply() {
return this.$store.state.friendApply;
}
},
onLoad() {
this.clickToSubmitSure = this.$fc.debounce(
e => {
uni.navigateTo({
url: '../chatWindow/index?userId=' + e.userId + '&windowType=' + e.windowType
});
},
1000,
true
);
},
watch: {
chatListNum: {
deep: true, //深度监听可见听对象中的元素变化例:obj.id
immediate: false, //在进入页面时第一次绑定值不会立刻执行监听只有数据发生改变才会执行handler中的操作
handler(val) {
//watch事件
if (val > 0) {
uni.setTabBarBadge({
index: 0,
text: val.toString()
});
} else {
uni.removeTabBarBadge({
index: 0
});
}
}
},
topicReply: {
deep: true, //深度监听可见听对象中的元素变化例:obj.id
immediate: false, //在进入页面时第一次绑定值不会立刻执行监听只有数据发生改变才会执行handler中的操作
handler(val) {
//watch事件
if (val.count && val.count > 0) {
uni.setTabBarBadge({
index: 2,
text: val.count.toString()
});
} else {
uni.removeTabBarBadge({
index: 2
});
}
}
},
friendApply: {
deep: true, //深度监听可见听对象中的元素变化例:obj.id
immediate: false, //在进入页面时第一次绑定值不会立刻执行监听只有数据发生改变才会执行handler中的操作
handler(val) {
//watch事件
if (val.count && val.count > 0) {
uni.setTabBarBadge({
index: 1,
text: val.count.toString()
});
} else {
uni.removeTabBarBadge({
index: 1
});
}
}
},
chatlist: {
deep: true, //深度监听可见听对象中的元素变化例:obj.id
immediate: false, //在进入页面时第一次绑定值不会立刻执行监听只有数据发生改变才会执行handler中的操作
handler(val) {
//watch事件
var obj = JSON.parse(JSON.stringify(val));
var newarr = [];
var toplist = [];
var NOTtoplist = [];
for (var k in obj) {
obj[k]['xtime'] = new Date(obj[k]['time']).getTime().toString();
if (obj[k]['userId']) {
newarr.push(obj[k]);
}
if (obj[k]['userId'] && obj[k]['top'] == 'Y') {
toplist.push(obj[k]);
}
if (obj[k]['userId'] && obj[k]['top'] == 'N') {
NOTtoplist.push(obj[k]);
}
}
newarr.sort((a, b) => {
return b['xtime'] - a['xtime'];
});
toplist.sort((a, b) => {
return b['xtime'] - a['xtime'];
});
NOTtoplist.sort((a, b) => {
return b['xtime'] - a['xtime'];
});
this.list = newarr;
this.toplist = toplist;
this.NOTtoplist = NOTtoplist;
}
}
},
onShow() {
this.$store.dispatch('tabBarpull');
},
mounted() {
console.log(this.imsdk)
//app服务登录成功去登录im
const lim = this.imsdk
const sdk = lim.im;
var listeners = {};
for (const v in ListenerMap) {
listeners[v] = ListenerMap[v];
}
sdk.init("http://127.0.0.1:28000/v1","10000", "18200702230", "asdasdsd", listeners, function(
sdk) {
if (sdk) {
console.log('sdk 成功连接的回调, 可以使用 sdk 请求数据了.');
return uni.switchTab({
url: "/pages/tabbar/index/index"
})
} else {
console.log('sdk 初始化失败.');
}
})
},
methods: {
longpressItem(e, i, v) {
// console.log(e,i,v)
this.longTapItemKey = i;
},
returnAvatar(text) {
var data = JSON.parse(text);
var avatars = [];
for (var i = 0; i < data.length; i++) {
avatars.push({
url: data[i]
});
}
return avatars;
},
clickChat(e) {
this.clickToSubmitSure(e);
}
},
onNavigationBarButtonTap(e) {
switch (e.index) {
case 0: //更多
this.$refs['trtw'].showTab();
break;
case 1: //搜索
uni.navigateTo({
url: '../search/index'
});
break;
default:
break;
}
}
};
</script>
<style scoped>
.alertTips {
line-height: 80rpx;
background-color: #fcfcfc;
color: #999999;
text-align: center;
font-size: 28rpx;
}
</style>