<template> <view class="page" style="background-color: #fff;"> <view v-if="dataList.length == 0" class="empty-wrap"><u-empty text="暂无消息"></u-empty></view> <!-- 记录 --> <u-cell-group v-if="dataList.length > 0"> <u-cell-item v-for="(item, index) in dataList" :key="index" :title="!item.body.content ? '点击查看内容' : item.body.content.length > 15 ? item.body.content.slice(0, 15) + '...' : item.body.content" :title-style="{ fontWeight: item.is_read ? '' : 'bold' }" :label="vk.pubfn.timeFormat(item._add_time, 'yyyy-MM-dd')" :value="item.is_read ? '已读' : '未读'" arrow @click="showDetailPopup(index)" ></u-cell-item> </u-cell-group> <!-- 消息详情 --> <u-popup v-model="detailPopupShow" mode="center" width="80%" height="480rpx" border-radius="20" closeable close-icon-color="#fff"> <view class="bwin-popup"> <view class="popup-header">消息详情</view> <view v-if="detailPopupShow" class="popup-body"> <text class="content" v-if="dataList[currentItemIndex].type == 'text'">{{ dataList[currentItemIndex].body.content }}</text> <u-image v-if="dataList[currentItemIndex].type == 'image'" :src="dataList[currentItemIndex].body.files" mode="widthFix" width="100%"></u-image> <view class="from-info"> <view class="nickname">{{ dataList[currentItemIndex].fromUserInfo.nickname }}</view> <view class="date">{{ dataList[currentItemIndex].fromUserInfo._add_time | date('yyyy-mm-dd hh:MM:ss') }}</view> </view> </view> </view> </u-popup> <u-loadmore v-if="dataList.length > 0" marginTop="20" :line="true" :status="loadmore.status" :loading-text="loadmore.loadingText" :loadmore-text="loadmore.defaultText" :nomore-text="loadmore.nomoreText" /> </view> </template> <script> var that; export default { data() { return { dataList: [], detailPopupShow: false, currentItemIndex: 0, loadmore: { status: 'loadmore', loadingText: '努力加载中', defaultText: '轻轻上拉 查看更多', nomoreText: '实在没有了', currentPage: 1 } }; }, onLoad() { that = this; vk.callFunction({ url: 'client/agent/kh/getMsgList', title: '请求中...', needAlert: false }).then(res => { if (res.list.length < 10) { that.loadmore.status = 'nomore'; } that.dataList = res.list; }); }, onReachBottom() { if (that.loadmore.status == 'nomore') { return; } that.loadmore.currentPage++; vk.callFunction({ url: 'client/agent/kh/getMsgList', title: '请求中...', needAlert: false, data: { pageIndex: that.loadmore.currentPage } }).then(res => { if (res.list.length < 10) { that.loadmore.status = 'nomore'; } that.dataList = that.dataList.concat(res.list); }); }, methods: { showDetailPopup(index) { that.currentItemIndex = index; that.detailPopupShow = true; if (!that.dataList[index].is_read) { vk.callFunction({ url: 'client/agent/kh/updateMsgStatus', needAlert: false, data: { _id: that.dataList[index]._id } }).then(res => { that.dataList[index].is_read = true; // 标记已读 }); } } } }; </script> <style lang="scss"> .popup-body { .content { font-size: $u-p; display: flex; padding: 20rpx; background-color: $u-bg-color; border-radius: 10rpx; width: 100%; } .from-info { padding-top: 20rpx; width: 100%; display: flex; align-items: center; justify-content: space-between; font-size: $u-p1; .nickname { color: $u-main-color; } .date { color: $u-content-color; } } } </style>