<template>
	<view>
		<u-navbar 
		title-color="#fff" 
		:custom-back="customBack" 
		:border-bottom="false" 
		back-icon-color="#CCE8FF"
			:background="{background: 'linear-gradient(99deg, #7A4398 0%, #5A5DB9 100%)' }" title="消息中心" />
		<mescroll-body ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback">
			<scroll-view scroll-y style="height: 100%; width: 100%;" v-for="(messageItem, index) in  messageList"
				:key="messageItem.id">
				<view class="time">{{messageItem.createTime}}</view>
				<view class="page-box">
					<view class="message" @click="goDetails(messageItem)">
						<view class="message-top u-flex">
							<view class="message-top-left u-flex-3">
								<view class="car">{{messageItem.msgType|filterMsgType}}</view>
							</view>
							<view class="message-top-right u-flex-1">
								<u-badge :is-dot="true" type="error" v-if="messageItem.readFlag=='0'"></u-badge>
							</view>
						</view>
						<view class="message-center">
							<view class="message-center-item">
							{{messageItem.content.replace(/<[^>]+>/g,' ')}}
							<text v-if="messageItem.msgType=='1'">--{{messageItem.createBy}}</text>
						</view>
						</view>
						<view class="message-bottom">
							<u-cell-item title="查看详情" style="color: #008CFF;"></u-cell-item>
						</view>
					</view>
				</view>
			</scroll-view>
		</mescroll-body>
		<u-toast ref="uToast" />
	</view>
</template>

<script>
	import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
	export default {
		mixins: [MescrollMixin], // 使用mixin
		data() {
			return {
				messageList: [],
				hasRefresh:false,
			};
		},
		onShow() {
			let that = this;
			// setTimeout(()=>{
			// 	this.mescroll.resetUpScroll();
			// },500)
			let timer1 = setInterval(function(){ // 每 10 毫秒检查一下
			console.log('that.hasRefresh',that.hasRefresh);
				if (that.hasRefresh) {
					clearInterval(timer1); // 取消定时器
				}else{
					that.mescroll.resetUpScroll();
				}
			},300);
		},
		methods: {
			// 返回上一页
			customBack() {
				uni.getStorage({
					key: 'messageBack',
					success: (res) => {
						this.$u.route({
							type: 'switchTab',
							url: res.data
						})
					},
					fail: (err) => {
						uni.switchTab({
							url: '/pages/index/index'
						})
					}
				})
			},
			/*下拉刷新的回调*/
			downCallback() {
				this.hasRefresh = true;
				// 第2种: 下拉刷新和上拉加载调同样的接口, 则不用第1种, 直接mescroll.resetUpScroll()即可
				this.mescroll.resetUpScroll(); // 重置列表为第一页 (自动执行 page.num=1, 再触发upCallback方法 )
			},
			/*上拉加载的回调*/
			upCallback(page) {
				this.hasRefresh = true;
				let pageNum = page.num; // 页码, 默认从1开始
				let pageSize = page.size; // 页长, 默认每页10条
				this.$u.api.inspecmsg({
						pageSize: pageSize,
						pageNum: pageNum
					})
					.then(res => {
						if (res.code == 200) {
							// 接口返回的当前页数据列表 (数组)
							let curPageData = res.data?.rows ?? [];
							// 接口返回的当前页数据长度 (如列表有26个数据,当前页返回8个,则curPageLen=8)
							let curPageLen = curPageData.length;
							// 接口返回的总页数 (如列表有26个数据,每页10条,共3页; 则totalPage=3)
							let totalPage = res.data.pages;
							// 接口返回的总数据量(如列表有26个数据,每页10条,共3页; 则totalSize=26)
							let totalSize = res.data.total;
							// 接口返回的是否有下一页 (true/false)
							let hasNext = res.data.page < res.data.pages;

							//设置列表数据
							if (page.num == 1) this.messageList = []; // 如果是第一页需手动置空列表
							this.messageList = this.messageList.concat(curPageData); // 追加新数据
							// 后台接口有返回列表的总页数 totalPage
							this.mescroll.endByPage(curPageLen, totalPage);
							setTimeout(() => {
								this.mescroll.endSuccess(curPageLen)
							}, 20)
						} else {
							this.mescroll.endErr()
						}
					})
			},
			// 跳转消息详情
			goDetails(item) {
				this.hasRefresh = false;
				if (Number(item.readFlag) === 0) {
					// console.log('item',item);
					// return
					this.$u.api.updateInspecMsgStatus({
							id: item.id
						})
						.then(res => {
							if (res.code == 200) {
								this.mescroll.resetUpScroll();
								this.goLink(item);
							} else {
								this.$refs.uToast.show({
									title: res.msg,
									type: 'error'
								})
							}
						})
				} else {
					this.goLink(item);
				}
			},
			goLink(item){
				if(item.msgType=='0'){
					this.$u.route({
						url: 'pages/center/message/messageInfo',
						params: {
							details: JSON.stringify(item)
						}
					});
				}else if(item.msgType=='1'){
					this.$u.route({
					  url: 'pages/center/reportList/reportDetails',
						params:{
							id:item.tabId,
							// deviceId:item.deviceId,
							// roadNo:this.roadNo,
							// roadName:this.roadName,
							// deviceType:this.deviceType,
						}
					})
				}
			}
		},
	};
</script>

<style>
	/* #ifndef H5 */
	page {
		height: 100%;
		background-color: #F6F6FF;
	}

	/* #endif */
</style>

<style lang="scss" scoped>
	@import "./message.scss";
</style>