From 419ad623db22db5fa34e88ab771d2161fe12e920 Mon Sep 17 00:00:00 2001 From: 马宇豪 <978517621@qq.com> Date: 星期二, 01 八月 2023 16:08:25 +0800 Subject: [PATCH] 提交上拉加载 --- pages/tabBar/notice/notice.vue | 53 ++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 48 insertions(+), 5 deletions(-) diff --git a/pages/tabBar/notice/notice.vue b/pages/tabBar/notice/notice.vue index 9f64fa3..fbacbc5 100644 --- a/pages/tabBar/notice/notice.vue +++ b/pages/tabBar/notice/notice.vue @@ -11,6 +11,9 @@ <!-- <view style="flex: 1;" @click="loginOut">退出</view> --> </view> </view> + <div v-if="loading" style='display: flex;justify-content: center;position: absolute;width:100%;top: 40%;left: 0'> + <u-loading-icon></u-loading-icon> + </div> <!-- 页面内容 --> <view class="controlBar"> <view class="buttonGroup"> @@ -44,7 +47,9 @@ </view> <view style="display: flex;flex-direction: column;margin-bottom: 55px;"> <view class="noticeList"> - <view class="listContent" v-if="noticeList.length > 0" > +<!-- <view class="listContent" v-if="noticeList.length > 0" >--> + <scroll-view :scroll-top="scrollTop" scroll-y="true" class="listContent" @scrolltoupper="upper" v-if="noticeList.length > 0" + @scrolltolower="lower" @scroll="scroll" lower-threshold="50"> <view v-for="(item, index) in noticeList" :key="index" class="itemContent" > <view class="content" v-if="item.isResponse" > <text style="color:rgb(17, 204, 33);" @click="toDetail(item)">[已叫应]</text> @@ -80,7 +85,8 @@ <!-- </view> --> </view> </view> - </view> + </scroll-view> +<!-- </view>--> <view v-else> <u-empty margin-top="40%" text="数据为空" mode="data"></u-empty> </view> @@ -112,13 +118,16 @@ showDialog: false, data: { pageIndex: 1, - pageSize: 10000000, + pageSize: 10, searchParams: { emergType: null,//1-紧急;2-常规 warningLevel: null,//1-红色预警;2-橙色预警;3-黄色预警;4-蓝色预警 readStatus: null//0-未读,1-已读 } }, + total: 0, + scrollTop: 0, + loading: false, buttons: [{ label: 'red', name: '红' @@ -148,6 +157,7 @@ } }, onShow () { + this.data.pageIndex = 1 this.tabBarLists = uni.getStorageSync('tabBarList'); this.user.name = uni.getStorageSync('user').realName; this.getNoticeList(); @@ -162,6 +172,7 @@ }, methods: { getNoticeList() { + this.loading = true this.noSpeak = 0; // this.data.searchParams.readStatus = this.isReadOnly ? 0 : null; this.data.searchParams.readStatus = null; @@ -169,7 +180,14 @@ this.data.searchParams.warningLevel = this.selectedSaleAnalysis =='all' ? null : this.selectedSaleAnalysis =='red' ? 1 : this.selectedSaleAnalysis =='orange' ? 2: this.selectedSaleAnalysis =='yellow'? 3 : 4; getNotice(this.data).then(res => { if (res.code == 100) { - this.noticeList = res.data ? res.data : []; + // this.noticeList = res.data ? res.data : []; + let list = res.data?res.data: []; + if (res.pageIndex != 1) { + this.noticeList = this.noticeList.concat(list) + } else { + this.noticeList = list; + } + this.total = res.total this.noticeListCopy = this.noticeList; if (this.noticeList.length > 0) { this.noticeList.forEach((item, index) => { @@ -181,11 +199,15 @@ this.noticeList[index].buttonContent = item.responseStatus == 1 ? '待叫应': item.responseStatus == 2 ? '已叫应' : '超时未叫应'; }); } - } + }else{ + uni.$u.toast(res.msg) + } + this.loading = false }).catch(err=>{ }) }, handleButtonClick(button) { + this.data.pageIndex = 1 this.selectedSaleAnalysis = button.label; this.getNoticeList(); }, @@ -236,7 +258,26 @@ this.getNoticeList(); }, 1000); }, + + upper: function(e) { + // console.log(e) + }, + lower: function(e) { + if (this.data.pageIndex * this.data.pageSize >= this.total){ + uni.$u.toast('已加载全部数据') + return + } + //并且让页码+1,调用获取数据的方法获取第二页数据 + this.data.pageIndex++ + //此处调用自己获取数据列表的方法 + this.getNoticeList() + }, + scroll: function(e) { + // console.log(e) + }, + clickSwitch(e) { + this.data.pageIndex = 1 this.getNoticeList(); }, } @@ -386,10 +427,12 @@ .listContent{ display: flex; flex-direction: column; + width: calc(100% - 24px); margin: 0 12px; background: #fff; border-radius: 5px; box-shadow: 0 3px 12px rgba(0,0,0,0.05); + height: 100%; } .itemContent{ font-size: 16px; -- Gitblit v1.9.2