<template>
	<view>
		<uni-list v-for="(item,index) in list" :key="index">
			<!-- 头像显示圆点 -->
			<uni-list-chat clickable="true" :title="item.msgTitle" avatar="/static/avatar-msg.png" :note="item.msgContent" :time="item.datetime" :badge-positon="item.position" badge-text="dot" @click="gotoDetail(item)"></uni-list-chat>
		</uni-list>
	</view>
</template>

<script>
	import badgeMix from '@/mixins/tabbar-badge.js'
	export default {
		mixins: [badgeMix],
		data() {
			return {
				list: [],
				// 查询对象
				queryObject: {
					pageNum: 1,
					pageSize: 15
				},
				total: 0,
				isLoading: false
			};
		},
		onShow() {
			this.queryObject.pageNum = 1
			this.queryObject.pageSize = 15
			this.list = []
			this.getMsgList()
		},
		methods: {
			async getMsgList(cb) {				
				// 打开节流阀
				this.isLoading = true
				const params = {
					pageNum: this.queryObject.pageNum,
					pageSize: this.queryObject.pageSize
				}
				const { data: result } = await uni.$http.get('/education/mp-inner-msg/queryMsg', params)
				this.isLoading = false
				
				// 加载完数据执行
				cb && cb()
				if (result.data.list !== undefined) {
					this.list = [...this.list, ...result.data.list]
					this.total = result.data.count
				}
			},
			gotoDetail(item) {
				// item.position = 'none'
				uni.navigateTo({
					url: '/subpkg/my/message/my_message_detail?item='+encodeURIComponent(JSON.stringify(item))
				})
			},
			// 触底事件
			onReachBottom() {
				// 判断是否有下一页的数据
				if (this.queryObject.pageNum * this.queryObject.pageSize >= this.total) return uni.$showMsg('数据加载完毕!')
			
				// 判断是否正在请求其他数据
				if (this.isLoading) return
				this.queryObject.pageNum += 1
				// 重新获取数据
				this.getMsgList()
			},
			// 下拉刷新事件
			onPullDownRefresh() {
				// 1. 重置关键数据
				this.queryObject.pageNum = 1
				this.total = 0
				this.list = []
				// 2.重新发起请求
				this.getMsgList(() => uni.stopPullDownRefresh())
			}
		}
	}
</script>

<style lang="scss">

</style>