325 lines
7.0 KiB
Vue
325 lines
7.0 KiB
Vue
<template>
|
||
<view>
|
||
<u-navbar :is-back="false" :title-size="36" title="消息">
|
||
<view class="slot-wrap">
|
||
<image src="../../static/pageD/info(3).png" @click="delMessage()"></image>
|
||
<image src="../../static/pageD/info(2).png" @click="kefu()"></image>
|
||
</view>
|
||
</u-navbar>
|
||
<view class="content">
|
||
<!-- 正文内容 -->
|
||
</view>
|
||
<!-- <view class="sousuo"></view> -->
|
||
<view class="backes" style="border-bottom: 1px #ececec solid;">
|
||
<titles :information="information_dles"></titles>
|
||
</view>
|
||
<!-- 消息通知 -->
|
||
<view class="backes">
|
||
<view id="information">
|
||
<view class="information_dl" v-for="(item,index) in information_dl" :key="index" @click="gochat(item)" >
|
||
<view>
|
||
<image :src="item.avatar"></image>
|
||
</view>
|
||
<view class="title">{{item.name}}</view>
|
||
<view class="contentes u-line-1">{{item.text}}</view>
|
||
<view class="times">{{item.time}}</view>
|
||
<view class="tishi" v-if="item.unReadMessage"></view>
|
||
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<u-toast ref="uToast" />
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
import { mapState } from 'vuex';
|
||
import titles from "@/components/informations/titles/titles"
|
||
export default {
|
||
computed: {
|
||
...mapState(["hasLogin,token"])
|
||
},
|
||
data() {
|
||
return {
|
||
information_dles : [{
|
||
id: 0,
|
||
url: '../../static/pageD/info(11).png',
|
||
text: '公告/资讯'
|
||
},
|
||
{
|
||
id: 0,
|
||
url: '../../static/pageD/info(13).png',
|
||
text: '活动消息'
|
||
},
|
||
{
|
||
id: 0,
|
||
url: '../../static/pageD/info(14).png',
|
||
text: '交易物流'
|
||
},
|
||
{
|
||
id: 0,
|
||
url: '../../static/pageD/info(15).png',
|
||
text: '关注消息'
|
||
},
|
||
|
||
],
|
||
// 通知消息
|
||
information_dl: [
|
||
{
|
||
id: 0,
|
||
url: '../../static/pageD/info(11).png',
|
||
text: '通知消息',
|
||
contentes: '亲,您购物车中的 [新鲜盆栽] 降价4.00元。',
|
||
title: '2020-7-21'
|
||
},
|
||
{
|
||
id: 1,
|
||
url: '../../static/pageD/info(11).png',
|
||
text: '通知消息',
|
||
contentes: '亲,您购物车中的 [新鲜盆栽] 降价4.00元。',
|
||
title: '2020-7-21'
|
||
},
|
||
{
|
||
id: 2,
|
||
url: '../../static/pageD/info(11).png',
|
||
text: '通知消息',
|
||
contentes: '亲,您购物车中的 [新鲜盆栽] 降价4.00元。',
|
||
title: '2020-7-21'
|
||
},
|
||
|
||
],
|
||
value: '',
|
||
login: '登录',
|
||
show: false
|
||
};
|
||
},
|
||
onShow(){
|
||
this.information_dl = this.imService.friends;
|
||
this.imService.onFriendListChange=this.onFriendListChange;
|
||
},
|
||
onLoad() {
|
||
// /消息模块的请求
|
||
if (this.hasLogin) {
|
||
this.messageIndex();
|
||
}
|
||
|
||
},
|
||
methods: {
|
||
kefu(){
|
||
if(!this.$store.state.hasLogin){
|
||
this.$refs.uToast.show({
|
||
title: "请先登录",
|
||
type: 'warning'
|
||
})
|
||
}else{
|
||
function Friend(uuid, name, avatar,time = "", text = "",date = "") {
|
||
this.uuid = uuid;
|
||
this.name = name;
|
||
this.avatar = avatar;
|
||
this.online = false;
|
||
this.unReadMessage = 0;
|
||
this.text = text;
|
||
this.time = time;
|
||
this.date = date
|
||
}
|
||
const token = uni.getStorageSync('token');
|
||
let that = this
|
||
uni.request({
|
||
url:"https://dmmall.sdbairui.com/api/Specialci/getAtwillUserInfo",
|
||
data:{
|
||
userId: 1
|
||
},
|
||
method:"POST",
|
||
header:{
|
||
"Authorization" : 'Bearer' + " " + token
|
||
},
|
||
success(res){
|
||
console.log(res)
|
||
res = res.data
|
||
let user = new Friend(res.data.member_id,res.data.member_nickname,res.data.member_avatar)
|
||
that.$u.route({
|
||
url:"/pageD/privateChat/privateChat",
|
||
params:{
|
||
id:JSON.stringify(user)
|
||
}
|
||
})
|
||
}
|
||
})
|
||
}
|
||
|
||
},
|
||
gochat(id){
|
||
this.$u.route({
|
||
url:"/pageD/privateChat/privateChat",
|
||
params:{
|
||
id:JSON.stringify(id)
|
||
}
|
||
|
||
})
|
||
},
|
||
onFriendListChange(onlineFriends) {
|
||
//todo:比较垃圾的处理方式,因为Uniapp的基于MAP的双向绑定在H5端不稳定,H5端偶尔会抽风
|
||
// 下边这一行删掉,有时候页面可以更新,有时候不行,大家有优雅的方式,也欢迎跟我们沟通
|
||
console.log(onlineFriends,121212)
|
||
this.information_dl = onlineFriends;
|
||
|
||
this.$forceUpdate();
|
||
},
|
||
// 选中某个复选框时,由checkbox时触发
|
||
checkboxChange(e) {
|
||
//console.log(e);
|
||
},
|
||
// 选中任一checkbox时,由checkbox-group触发
|
||
checkboxGroupChange(e) {
|
||
// console.log(e);
|
||
},
|
||
mask_u() {
|
||
this.show = !this.show
|
||
},
|
||
// 消息模块的读取
|
||
messageIndex(){
|
||
console.log("消息模块的读取消息模块的读取消息模块的读取")
|
||
this.$u.api.messageIndex({}).then((res)=>{
|
||
console.log(res)
|
||
let data = res.data.allMessages;
|
||
for(let i in data){
|
||
var type = data[i].type;
|
||
console.log(data[i].type)
|
||
var array = []
|
||
array.push(type)
|
||
|
||
}
|
||
console.log( array)
|
||
// 获取到字段的类型 添加到数据中心
|
||
for(let j = 0; j < this.information_dles.length; j++ ){
|
||
console.log()
|
||
// this.information_dles[j].type = type;
|
||
for(let k = 0; k < array.length; k++ ){
|
||
this.information_dles[j].type = array[k];
|
||
console.log( array[k])
|
||
}
|
||
}
|
||
console.log(this.information_dles)
|
||
})
|
||
},
|
||
// 清空消息
|
||
delMessage(){
|
||
|
||
this.$u.api.delMessage({
|
||
type : "all"
|
||
}).then((res)=>{
|
||
console.log(res)
|
||
this.imService.friends = {};
|
||
this.information_dl = [];
|
||
uni.setStorageSync('imlist',JSON.stringify([]));
|
||
if(res.errCode == 0){
|
||
this.$refs.uToast.show({
|
||
title: '清除成功',
|
||
type: 'success'
|
||
})
|
||
}
|
||
})
|
||
}
|
||
|
||
},
|
||
components: {
|
||
titles,
|
||
}
|
||
};
|
||
</script>
|
||
|
||
<style lang="scss" scoped>
|
||
.tishi{
|
||
position: absolute;
|
||
bottom: 30rpx;
|
||
right: 30rpx;
|
||
width: 12rpx;
|
||
height: 12rpx;
|
||
border-radius: 50%;
|
||
background-color: #FF0000;
|
||
}
|
||
.sousuo {
|
||
height: 113rpx;
|
||
border: 1px #f00 solid;
|
||
}
|
||
|
||
.slot-wrap {
|
||
display: flex;
|
||
align-items: center;
|
||
|
||
/* 如果您想让slot内容占满整个导航栏的宽度 */
|
||
/* flex: 1; */
|
||
/* 如果您想让slot内容与导航栏左右有空隙 */
|
||
/* padding: 0 30rpx; */
|
||
image {
|
||
width: 60rpx;
|
||
height: 60rpx;
|
||
position: absolute;
|
||
right: 90rpx;
|
||
}
|
||
|
||
image:nth-child(2) {
|
||
width: 34rpx;
|
||
height: 40rpx;
|
||
position: absolute;
|
||
right: 30rpx;
|
||
}
|
||
}
|
||
|
||
.backes {
|
||
background: #fff;
|
||
margin-bottom: 10rpx;
|
||
}
|
||
|
||
.information_dl {
|
||
width: 710rpx;
|
||
margin: 0 auto;
|
||
overflow: hidden;
|
||
zoom: 1;
|
||
position: relative;
|
||
padding-bottom: 23rpx;
|
||
border-bottom: 1px #ececec solid;
|
||
padding: 20rpx 5rpx 23rpx 5rpx;
|
||
position: relative;
|
||
|
||
image {
|
||
width: 84rpx;
|
||
height: 84rpx;
|
||
margin-right: 16rpx;
|
||
}
|
||
|
||
view {
|
||
float: left;
|
||
display: block;
|
||
}
|
||
|
||
.title {
|
||
font-size: 30rpx;
|
||
color: #333;
|
||
width: 600rpx;
|
||
margin-bottom: 15rpx;
|
||
margin-top: 9rpx;
|
||
}
|
||
|
||
.contentes {
|
||
font-size: 20rpx;
|
||
color: #999;
|
||
width: 600rpx;
|
||
}
|
||
}
|
||
|
||
.times {
|
||
position: absolute;
|
||
top: 30rpx;
|
||
right: 0;
|
||
color: #333333;
|
||
font-size: 20rpx;
|
||
}
|
||
|
||
uni-page-wrapper {}
|
||
|
||
page {
|
||
background: #ececec !important;
|
||
}
|
||
</style>
|