From 419ad623db22db5fa34e88ab771d2161fe12e920 Mon Sep 17 00:00:00 2001 From: 马宇豪 <978517621@qq.com> Date: 星期二, 01 八月 2023 16:08:25 +0800 Subject: [PATCH] 提交上拉加载 --- pages/tabBar/current/current.vue | 113 ++++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 76 insertions(+), 37 deletions(-) diff --git a/pages/tabBar/current/current.vue b/pages/tabBar/current/current.vue index e0f559d..2bf9410 100644 --- a/pages/tabBar/current/current.vue +++ b/pages/tabBar/current/current.vue @@ -9,6 +9,9 @@ <view class="barText">信息查看</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"> @@ -38,7 +41,9 @@ </view> <view style="display: flex;flex-direction: column;margin-bottom: 55px;"> <view class="examineList"> - <view class="listContent" v-if="InfoList.length > 0"> +<!-- <view class="listContent" v-if="InfoList.length > 0">--> + <scroll-view :scroll-top="scrollTop" scroll-y="true" class="listContent" @scrolltoupper="upper" v-if="InfoList.length > 0" + @scrolltolower="lower" @scroll="scroll" lower-threshold="50"> <view v-for="(item, index) in InfoList" :key="index" class="itemContent"> <view class="content"> <text>[{{item.colorContent}}]</text> @@ -62,7 +67,8 @@ </view> </view> </view> - </view> + </scroll-view> +<!-- </view>--> <view v-else> <u-empty margin-top="40%" text="数据为空" mode="data"></u-empty> </view> @@ -74,7 +80,7 @@ <script> import tabBar from '../tabBarIndex.vue' - import {getExamine} from '../../../api/examine.js' + import { getPublished } from '../../../api/notice.js' import tebBar from '../tabBarIndex.vue' export default { components:{ @@ -88,9 +94,11 @@ searchParams: { emergType: null,//1-紧急;2-常规 warningLevel: null,//1-红色预警;2-橙色预警;3-黄色预警;4-蓝色预警 - reviewStatus: null//1:未审核,2:已审核,3:审核已驳回 } }, + total: 0, + scrollTop: 0, + loading: false, page: 'pages/tabBar/current/current', checked: false, isReadOnly: false, @@ -115,52 +123,53 @@ ], selectedSaleAnalysis: 'all', InfoList: [], + unitType: '', } }, onLoad() { + this.unitType = uni.getStorageSync('unittype'); + console.log("11",this.unitType) //获取手机状态栏高度 this.statusBarHeight = uni.getSystemInfoSync()['statusBarHeight']; uni.hideTabBar(); }, onShow() { + this.data.pageIndex = 1 this.getInfoList(); }, methods: { goBack() { - console.log("1111") uni.switchTab({ url:'/pages/tabBar/firstPage/firstPage' }); }, getInfoList() { + this.loading = true this.data.searchParams.emergType = this.checked ? 1 : null; this.data.searchParams.warningLevel = this.selectedSaleAnalysis == 'all' ? null : this.selectedSaleAnalysis =='red' ? 1 : this.selectedSaleAnalysis =='orange' ? 2: this.selectedSaleAnalysis =='yellow'? 3 : 4; - // getExamine(this.data).then(res => { - // if(res.code == 100) { - this.InfoList = [ - { - attachment: null, - disasterType: 1, - gmtReviewSubmit: "2023-07-21 14:36:16", - id: 111, - infoSubmitter: "1-1", - infoSubmitterReal: "省级工作人员", - publishingUnit: "自治区自然灾害综合检测预警中心", - reviewStatus: 1, - title: "【20230721】预警信息标题", - warningLevel: 1, - } - ]; - if(this.InfoList.length > 0) { + getPublished(this.data).then(res => { + if(res.code == 100) { + let list = res.data?res.data: []; + if (res.pageIndex != 1) { + this.InfoList = this.InfoList.concat(list) + } else { + this.InfoList = list; + } + this.total = res.total + if(this.InfoList && this.InfoList.length > 0) { this.InfoList.forEach((item, index) => { this.InfoList[index].colorContent = item.warningLevel == 1 ? '红色预警': item.warningLevel == 2 ? '橙色预警': item.warningLevel == 3 ? '黄色预警':'蓝色预警'; this.InfoList[index].warningLevel = item.warningLevel; }); } - // } - // }) + }else{ + uni.$u.toast(res.msg) + } + this.loading = false + }) }, handleButtonClick(button) { + this.data.pageIndex = 1 this.selectedSaleAnalysis = button.label; this.getInfoList(); }, @@ -171,12 +180,22 @@ }) }, toResponsivity(item) { - //县 - uni.navigateTo({ - url: `/pages/tabBar/responsivity/countyResponsivity?data=` + encodeURIComponent(JSON.stringify(item)) - }) - //市 - //村 + console.log("item",item) + + // if(this.unitType == 2 || this.unitType == 1 ){ + // uni.navigateTo({ + // url: `/pages/tabBar/responsivity/countyResponsivity?data=` + encodeURIComponent(JSON.stringify(item)) + // }) + // }else if(this.unitType == 3){ + // uni.navigateTo({ + // url: `/pages/tabBar/responsivity/cityResponsivity?data=` + encodeURIComponent(JSON.stringify(item)) + // }) + // }else if(this.unitType == 4){ + // uni.navigateTo({ + // url: `/pages/tabBar/responsivity/villageResponsivity?data=` + encodeURIComponent(JSON.stringify(item)) + // }) + // } + }, //下拉刷新 onPullDownRefresh() { @@ -187,8 +206,26 @@ }, 1000); }, clickSwitch(e) { + this.data.pageIndex = 1 this.getInfoList(); - } + }, + + 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.getInfoList() + }, + scroll: function(e) { + // console.log(e) + }, } } @@ -329,12 +366,14 @@ align-items: center; } .listContent{ - display: flex; - flex-direction: column; - margin: 0 12px; - background: #fff; - border-radius: 5px; - box-shadow: 0 3px 12px rgba(0,0,0,0.05); + 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