195 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			Vue
		
	
	
			
		
		
	
	
			195 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			Vue
		
	
	
| <template>
 | |
| 	<view>
 | |
| 		<!-- 状态栏 -->
 | |
| 		<status-nav :titleVal="'消息'" :whereCome="comeNum" :statusTitle="true"></status-nav>
 | |
| 		<view id="daoh" class="bacf pad-zy30 pad-sx20 isTopf fon28 col3 disja" :style="{top:statusHNH+'px'}">
 | |
| 			<view @tap="switchEv(true)" :class="isWen?'isWen bold':'col9'" class="posir">日程提醒</view>
 | |
| 			<view @tap="switchEv(false)" :class="!isWen?'isWen bold':'col9'" class="posir">消息中心</view>
 | |
| 		</view>
 | |
| 		<!-- 列表 -->
 | |
| 		<view :style="{paddingTop: (statusHNH+chuTop+15)+'px'}" class="pad-zy32">
 | |
| 			<view v-if="dataList.length!=0">
 | |
| 				<view v-for="(item,index) in dataList" :key="index">
 | |
| 					<view class="fon24 col6 tc mar-sx50">{{item.time}}</view>
 | |
| 					<view @tap="readMsg(index,indexl)" class="radius10 bacf pad20 mar-x20" v-for="(iteml,indexl) in item.list" :key="indexl">
 | |
| 						<view class="disac">
 | |
| 							<image v-if="iteml.is_read==0" class="message-img" src="/static/public/unread.png" mode=""></image>
 | |
| 							<image v-if="iteml.is_read==1" class="message-img" src="/static/public/read.png" mode=""></image>
 | |
| 							<view class="fon28 col3 bold mar-zy10">{{iteml.title}}</view>
 | |
| 							<view :style="{background:iteml.is_read==1?'rgba(204, 204, 204,1)':'#FF4D4D'}" class="message-status">{{iteml.is_read==1?'已读':'未读'}}</view>
 | |
| 						</view>
 | |
| 						<view v-if="iteml.content!=''" class="fon26 col3 mar-s20">{{iteml.content}}</view>
 | |
| 					</view>
 | |
| 				</view>
 | |
| 			</view>
 | |
| 			<view v-else class="disjcac fc" style="margin-top: 50%;">
 | |
| 				<image src="/static/public/nothingm.png" style="width: 474rpx;height: 273rpx;" mode="aspectFill"></image>
 | |
| 				<view class="fon24 col3">暂无消息</view>
 | |
| 			</view>
 | |
| 		</view>
 | |
| 		<!-- 返回顶部 -->
 | |
| 		<!-- <back-top :showTop="showTop" @backTop="backTop"></back-top> -->
 | |
| 		<!-- 底部客服 -->
 | |
| 		<public-customer :nbottom="100"></public-customer>
 | |
| 	</view>
 | |
| </template>
 | |
| 
 | |
| <script>
 | |
| 	export default {
 | |
| 		data() {
 | |
| 			return {
 | |
| 				statusHNH:uni.getStorageSync('statusHNH'),
 | |
| 				searchVal:'',//输入框的值
 | |
| 				dataList:[],
 | |
| 				showTop:false,//是否显示返回顶部
 | |
| 				chuTop:'',
 | |
| 				isWen:true,
 | |
| 				page:1,
 | |
| 				size:10,
 | |
| 				total:0,
 | |
| 				isZanw:true,
 | |
| 				ntype:'reminders',//默认日程提醒
 | |
| 				comeNum:0
 | |
| 			}
 | |
| 		},
 | |
| 		onPageScroll(e) {
 | |
| 		    e.scrollTop > 360 ? this.showTop = true : this.showTop = false
 | |
| 		},
 | |
| 		onReachBottom() {
 | |
| 			if(this.total!=this.dataList.length){
 | |
| 				this.page++
 | |
| 				this.checkMsg()//调用自主预约列表事件
 | |
| 			} else {
 | |
| 				if(this.isZanw) this.$toolAll.tools.showToast('暂无更多消息','none',1000)
 | |
| 				this.isZanw = false
 | |
| 			}
 | |
| 		},
 | |
| 		onShow() {
 | |
| 			// 禁用小程序分享
 | |
| 			this.$toolAll.tools.disableShareEv();
 | |
| 			this.$toolAll.tools.isLogin();
 | |
| 		},
 | |
| 		onLoad(options) {
 | |
| 			// 从其他方式进入当前页面,点击返回回到我的页面
 | |
| 			if(options.comeNum==undefined) this.comeNum = 2;
 | |
| 			const query = wx.createSelectorQuery()
 | |
| 			query.select('#daoh').boundingClientRect((rect) => {
 | |
| 				// console.log('状态栏+标题栏:',rect);
 | |
| 				this.chuTop = rect.height
 | |
| 			}).exec()
 | |
| 			if(options.index==undefined){this.isWen = false;this.ntype = 'message';}
 | |
| 			this.checkMsg();
 | |
| 			let that = this ;
 | |
| 			wx.showModal({
 | |
| 				title: '温馨提示',
 | |
| 				content: '为及时通知到您,需要向您申请消息发送权限,不会骚扰您的生活!',
 | |
| 				confirmText:"同意",
 | |
| 				cancelText:"拒绝",
 | |
| 				success: function (res) {
 | |
| 					if (res.confirm) {
 | |
| 						//调用订阅消息
 | |
| 						console.log('用户点击确定', '订阅消息授权成功');
 | |
| 						//调用订阅
 | |
| 						wx.requestSubscribeMessage({
 | |
| 							tmplIds: ['d0efR-Ga27c6eIvx9mAwJcnAqzhM_Sq68XiFvjvlBJM','eyxvInLLF3L_wmcSQc_O7XLKF7RoGK1dM3OwKj5fHio'],
 | |
| 							success: (res) => {
 | |
| 								console.log(res, 'success')
 | |
| 							},
 | |
| 							fail: (res) => {
 | |
| 								console.log(res, 'fail')
 | |
| 							},
 | |
| 							complete: (res) => {
 | |
| 								wx.getSetting({
 | |
| 									withSubscriptions: true,
 | |
| 									success: (res) => {
 | |
| 										console.log(res, '获取设置信息')
 | |
| 									}
 | |
| 								})
 | |
| 								console.log(res, 'complete')
 | |
| 							}
 | |
| 						})
 | |
| 					} else if (res.cancel) {
 | |
| 						console.log('用户点击取消', '订阅消息授权');
 | |
| 						///显示第二个弹说明一下
 | |
| 						wx.showModal({
 | |
| 							title: '温馨提示',
 | |
| 							content: '拒绝后您将无法获得及时的消息通知哦',
 | |
| 							confirmText:"知道了",
 | |
| 							showCancel:false,
 | |
| 							success: function (res) {
 | |
| 								///点击知道了的后续操作 
 | |
| 								///如跳转首页面 
 | |
| 							}
 | |
| 						});
 | |
| 					}
 | |
| 				}
 | |
| 			});
 | |
| 		},
 | |
| 		methods: {
 | |
| 			readMsg(index1,index2){
 | |
| 				this.dataList[index1].list[index2].is_read = 1;
 | |
| 			},
 | |
| 			checkMsg(){
 | |
| 				this.$requst.post('user/messages',{page:this.page,size:this.size,type:this.ntype}).then(res=>{
 | |
| 					// console.log('消息列表:',res);
 | |
| 					if(res.code==0){
 | |
| 						if(this.page==1) this.dataList = [];
 | |
| 						this.total = res.data.total;
 | |
| 						if(res.data.list.length!=0){
 | |
| 							res.data.list.forEach(item=>{
 | |
| 								let titleMsg = '';
 | |
| 								if(item.type=='notice') titleMsg = "通知";
 | |
| 								if(item.type=='system') titleMsg = "系统消息";
 | |
| 								let msgObj = {
 | |
| 									time:item.send_at,
 | |
| 									list:[
 | |
| 										{
 | |
| 											is_read:item.is_read,
 | |
| 											title:titleMsg,
 | |
| 											content:item.content,
 | |
| 										}
 | |
| 									]
 | |
| 								}
 | |
| 								this.dataList.push(msgObj)
 | |
| 							})
 | |
| 						}
 | |
| 					}
 | |
| 				},error=>{})
 | |
| 			},
 | |
| 			switchEv(flag){
 | |
| 				this.isWen = flag;
 | |
| 				this.isZanw = true;
 | |
| 				this.page = 1;
 | |
| 				if(flag){
 | |
| 					this.ntype = 'reminders';
 | |
| 					this.checkMsg();
 | |
| 				} else {
 | |
| 					this.ntype = 'message';
 | |
| 					this.checkMsg();
 | |
| 				}
 | |
| 			},
 | |
| 			backTop(){//回到顶部事件
 | |
| 			    uni.pageScrollTo({
 | |
| 			        scrollTop: 0,
 | |
| 			        duration: 300
 | |
| 			    });
 | |
| 			},
 | |
| 		}
 | |
| 	}
 | |
| </script>
 | |
| 
 | |
| <style>
 | |
| 	.isWen{color: #3875F6;}
 | |
| 	.isWen::after{
 | |
| 		content: '';
 | |
| 		display: block;
 | |
| 		height: 8rpx;
 | |
| 		width: 80%;
 | |
| 		position: absolute;
 | |
| 		bottom: -20rpx;
 | |
| 		left: 50%;
 | |
| 		transform: translateX(-50%);
 | |
| 		background: #3875F6;
 | |
| 	}
 | |
| </style>
 |