uniapp列表翻页向上翻滚

后台接口需要传页码数和每页显示条数,直接上代码

1.页面station.vue

<view class="lcbx">
            <view class="wdz" v-if="records&&records.length==0">
                {{zwsj}}
            </view>
            <view class="wdy" v-for="(item, index) in records" :key="index">
                <view class="smc">
                    <image class="xdi" src="../../static/img/sta/green.png" v-if="item.status==1"></image>
                    <image class="xdi" src="../../static/img/sta/red.png" v-if="item.status==2"></image>
                    <image class="xdi" src="../../static/img/sta/hui.png" v-if="item.status==0"></image>
                    {{item.stationName&&item.stationName.length>20?item.stationName.substr(0,6)+'...'+item.stationName.substr(15,item.stationName.length):item.stationName}}
                    <text class="xiz">({{item.power}}kW)</text>
                </view>
                <view class="scad">
                    <!-- @click="togglePopup('center', 'tip')" -->
                    <view class="fff" @click="deleteStation(item)">
                        <image class="bjaz" src="../../static/img/sta/sca.png"></image>
                    </view>
                    <view class="ddd" @click="edit(item.stationName,item.id)">
                        <image class="bja" src="../../static/img/sta/bja.png"></image>
                    </view>
                </view>
                <view class="">
                    <view class="hx"></view>
                    <view @click="detail(item.stationName,item.id)" class="whh">

                        <view class="mrtd" v-if="item.imageList.length==0">
                            <!-- <image class="mrt" :src="solarUrl+item.image.split(';')[0].substr(item.image.split(';')[0].indexOf('/photo'))"
                             @error="errortt(item,index)" v-if="!imgShow&&!imgShowi"></image> -->
                            <image class="mrt" src="../../static/img/sta/0.png" v-if="imgShow&&item.type==1"></image>
                            <image class="mrt" src="../../static/img/sta/03.png" v-if="imgShowi&&item.type==0"></image>
                        </view>
                        <view class="mrtd" v-if="item.imageList.length>0">
                            <!-- <image class="mrt" :src="solarUrl+item.image.split(';')[0].substr(item.image.split(';')[0].indexOf('/photo'))"
                             @error="errortt(item,index)" v-if="!imgShow&&!imgShowi"></image> -->
                            <image class="mrt" :src="solarUrl+item.imageList[0]"></image>

                            <!-- <image class="mrt" src="../../static/img/sta/03.png" ></image> -->
                        </view>
                        <view :class="locale?fdlden:fdld">
                            <!-- 发电功率 -->
                            <view class="fgl">
                                {{i18n.P_Solar_power}}:
                            </view>
                        </view>
                        <view class="fdzd">
                            <view class="fgz">
                                {{item.pvPower}}<text v-if="item.pvPower==0">.0</text>
                                <text class="kwrw">{{item.pvPowerUnit}}</text>
                            </view>
                        </view>
                        <view :class="locale?cndden:cndd">
                            <view class="fgl">
                                <!-- 储能功率 -->
                                {{i18n.P_Battery_power}}:
                            </view>
                        </view>
                        <view class="cnbdd">
                            <view class="fgz">
                                {{item.packPower}}<text v-if="item.packPower==0">.0</text>
                                <text class="kww">{{item.packPowerUnit}}</text>
                            </view>
                        </view>
                        <view class="bwdd">
                            <view class="fgl">
                                <!-- 并网功率 -->
                                {{i18n.P_Grid_power}}:
                            </view>
                        </view>
                        <view class="bwndd">
                            <view class="fgz">
                                {{item.bwPower}}<text v-if="item.bwPower==0">.0</text>
                                <text class="kww">{{item.bwPowerUnit}}</text>
                            </view>
                        </view>
                        <view class="hexx">
                            <view class="hxr"></view>
                        </view>
                    </view>
                </view>
                <view class="dwdr" @click="detail(item.stationName,item.id)">
                    <view class="drdd">
                        <view class="dsz">
                            <text class="dzr">{{i18n.H_Today}}</text>
                        </view>
                    </view>
                    <view class="gsf">
                        <!-- 光伏发电量 -->
                        <view :class="gfdl">
                            {{i18n.P_Solar_generation}}:<text>\n</text>
                            <text class="gff">
                                {{item.pvOut}}<text v-if="item.pvOut==0">.0</text>
                                <text class="lwh">{{item.pvOutUnit}}</text>
                            </text>
                        </view>
                    </view>
                    <view :class="locale?fsfen:fsf">
                        <!-- 储能充电量 -->
                        <view :class="gfdl">
                            {{i18n.P_Battery_charge}}:<text>\n</text>
                            <text class="gff">
                                {{item.packIn}}<text v-if="item.packIn==0">.0</text>
                                <text class="lwh">{{item.packInUnit}}</text>
                            </text>
                        </view>
                    </view>
                    <view :class="locale?dsfen:dsf">
                        <!-- 并网电量 -->
                        <view :class="gfdldd">
                            {{i18n.P_Grid_sells}}:<text>\n</text>
                            <text class="gff">
                                {{item.gridIn}}<text v-if="item.gridIn==0">.0</text>
                                <text class="lwh">{{item.gridInUnit}}</text>
                            </text>
                        </view>
                    </view>
                </view>
            </view>
        </view>
        <view class="uni-loadmore" v-if="showLoadMore">{{loadMoreTexthh}}</view>

2.data(){}里定义变量

data() {
    return {
        records: [],
        recordsRes: [],
        recordsTemp: [], 
        loadMoreText: "",
      loadMoreTexthh: "",
      showLoadMore: false,
      type: '',
    }
},

 

3.跟data(){}同级定义下拉刷新onPullDownRefresh()和向上翻滚onReachBottom()方法

onPullDownRefresh() {
            this.currentStation = 1
            this.showLoadMore=false
            this.loadMoreTexthh = ""
            this.getStatusCount()
            this.getStations()
            //TODO
            if (this.currentStation * 10 >= this.ttbvvhh) {
                this.loadMoreTexthh = this.$t('index').PD_No_more_data
                this.loadMoreText = ""
                return;
            }
            this.showLoadMore = true;
            // setTimeout(() => {
            //     this.setDateStations();
            // }, 300);

            setTimeout(this.showTabBarRedDot, 1500);
            setTimeout(() => {
                uni.stopPullDownRefresh(); //停止下拉刷新动画
            }, 300)
        },
        onReachBottom() {
            // console.log("========onReachBottom==========");
            // console.log("====this.currentStation=======", this.currentStation)
            // console.log("=====ttbvvhh=======", this.ttbvvhh)

            if (this.currentStation * 10 >= this.ttbvvhh) {

                // "已经全部加载完毕"
                this.loadMoreTexthh = this.$t('index').PD_No_more_data
                this.loadMoreText = ""
                return;
            }
            this.showLoadMore = true;
            setTimeout(() => {
                this.setDateStations();
            }, 300);
        },

 4.methods中定义setDateStations()和getStations()和search()方法

setDateStations() {
                uni.showLoading({
                    title: this.$t('index').P_Loading_data + "..."
                })
                this.currentStation += 1
                uni.request({
                    url: this.provider ? (this.locale ? getApp().globalData.url +
                        '/solar/baseinfo/station/getStations?lang=en-US' :
                        getApp().globalData.url + '/solar/baseinfo/station/getStations?lang=zh-CN') : (this
                        .locale ? getApp().globalData
                        .url + '/app/baseinfo/station/getStations?lang=en-US' : getApp().globalData.url +
                        '/app/baseinfo/station/getStations?lang=zh-CN'),
                    method: 'POST',
                    header: {
                        //'access-token': "aea8cdc9-d0a7-472b-8fe7-bd74f46ce4af"
                        'Authorization': getApp().globalData.accessToken
                    },
                    data: {
                        "current": this.currentStation,
                        "size": this.size,
                        "stationName": this.searchValue.value,
                    },
                    success: (res) => {
                        // console.log(res);
                        // console.log("===res.data=====getStations=====", res.data)
                        if (this.currentStation==1) {
                            this.records = []
                        }
                        // console.log("=========this.searchValue.value======", this.searchValue.value)
                        this.recordsRes = res.data.records
                        this.recordsTemp = this.recordsRes
                        this.recordsTemp.map((el, index) => {
                            var imageListTemp = el.image.split(';')
                            var imageList = []
                            imageListTemp.map((ell, indexx) => {
                                if (ell.length > 3) {
                                    if (ell.indexOf("\"") != -1) {
                                        ell = ell.replace("\"", '')
                                    }
                                    imageList.push(ell)
                                }
                            })
                            // console.log("")
                            this.$set(el, 'imageList', imageList)
                        })
                        this.recordsRes = this.recordsTemp

                        if (res.statusCode == 200) {
                            this.records = this.records.concat(this.recordsRes)
                        }
                        
                        // console.log("====res.statusCode=====", res.statusCode)
                        // console.log("====res=====", res)
                        if (res.statusCode != 200) {
                            uni.showToast({
                                icon: 'none',
                                title: res.data.msg,
                            });
                            this.myToken()
                            this.getStatusCount()
                            this.getStations()
                            // this.myTemp=false
                            // this.myTemp=true
                        }
                        // console.log("======this.records===0===", this.records)
                        uni.hideLoading();
                        setTimeout(() => {
                            uni.stopPullDownRefresh(); //停止下拉刷新动画
                        }, 300)
                    },
                    // complete() {
                    //     uni.hideLoading();
                    // }
                })

            },
getStations() {
                // uni.showLoading({
                //     title: this.$t('index').P_Loading_data + "..."
                // })
                uni.request({
                    url: this.provider ? (this.locale ? getApp().globalData.url +
                        '/solar/baseinfo/station/getStations?lang=en-US' :
                        getApp().globalData.url + '/solar/baseinfo/station/getStations?lang=zh-CN') : (this
                        .locale ? getApp().globalData
                        .url + '/app/baseinfo/station/getStations?lang=en-US' : getApp().globalData.url +
                        '/app/baseinfo/station/getStations?lang=zh-CN'),
                    method: 'POST',
                    header: {
                        //'access-token': "aea8cdc9-d0a7-472b-8fe7-bd74f46ce4af"
                        'Authorization': getApp().globalData.accessToken
                    },
                    data: {
                        "current": 1,
                        "size": this.size,
                        "stationName": this.searchValue.value,
                    },
                    success: (res) => {
                        // console.log(res);
                        // console.log("===res.data=====getStations=====", res.data)
                        this.records = []
                        this.recordsRes = res.data.records
                        this.recordsTemp = this.recordsRes
                        this.recordsTemp.map((el, index) => {
                            var imageListTemp = el.image.split(';')
                            var imageList = []
                            imageListTemp.map((ell, indexx) => {
                                if (ell.length > 3) {
                                    if (ell.indexOf("\"") != -1) {
                                        ell = ell.replace("\"", '')
                                    }
                                    imageList.push(ell)
                                }
                            })
                            this.$set(el, 'imageList', imageList)
                        })
                        this.recordsRes = this.recordsTemp

                        if (res.statusCode == 200) {
                            this.records = this.records.concat(this.recordsRes)
                        }
                        this.ttbvvhh = res.data.total
                        // console.log("======this.records===2===", this.records)
                        if (res.statusCode != 200) {

                        }
                        uni.hideLoading();
                        setTimeout(() => {
                            uni.stopPullDownRefresh(); //停止下拉刷新动画
                        }, 300)
                    },
                    // complete() {
                    //     uni.hideLoading();
                    // }
                })

            },
search(res) {
                // uni.showModal({
                //     content: '搜索:' + res.value,
                //     showCancel: false
                // })
                this.currentStation = 1
                this.showLoadMore=false
                this.loadMoreTexthh = ""
                this.records = []
                uni.showLoading({
                    title: this.$t('index').P_Loading_data + "..."
                })
                // console.log("======this.searchValue==1==", this.searchValue.value)
                uni.request({
                    url: this.provider ? (this.locale ? getApp().globalData.url +
                        '/solar/baseinfo/station/getStations?lang=en-US' :
                        getApp().globalData.url + '/solar/baseinfo/station/getStations?lang=zh-CN') : (this
                        .locale ? getApp().globalData
                        .url + '/app/baseinfo/station/getStations?lang=en-US' : getApp().globalData.url +
                        '/app/baseinfo/station/getStations?lang=zh-CN'),
                    method: 'POST',
                    header: {
                        //'access-token': "aea8cdc9-d0a7-472b-8fe7-bd74f46ce4af"
                        'Authorization': getApp().globalData.accessToken
                    },
                    data: {
                        "current": this.currentStation,
                        "size": this.size,
                        "stationName": this.searchValue.value,
                    },
                    success: (res) => {
                        //console.log(res);
                        //console.log("===res.data=====getStations=====", res.data)
                        // if (this.currentStation==1) {
                        //     this.records = []
                        // }
                        this.loadMoreTexthh = ''
                        this.recordsRes = res.data.records
                        this.recordsTemp = this.recordsRes
                        this.recordsTemp.map((el, index) => {
                            var imageListTemp = el.image.split(';')
                            var imageList = []
                            imageListTemp.map((ell, indexx) => {
                                if (ell.length > 3) {
                                    if (ell.indexOf("\"") != -1) {
                                        ell = ell.replace("\"", '')
                                    }
                                    imageList.push(ell)
                                }
                            })
                            this.$set(el, 'imageList', imageList)
                        })
                        this.recordsRes = this.recordsTemp
                        if (res.statusCode == 200) {
                            this.records = this.records.concat(this.recordsRes)
                        }
                        this.ttbvvhh = res.data.total

                        if (1 * 10 >= this.ttbvvhh) {

                            // "已经全部加载完毕"
                            this.loadMoreTexthh = this.$t('index').PD_No_more_data
                            this.showLoadMore = true;
                        }
                        
                        if(this.ttbvvhh==0){
                            this.showLoadMore = false
                        }
                    },
                    complete() {
                        uni.hideLoading();
                        setTimeout(() => {
                            uni.stopPullDownRefresh(); //停止下拉刷新动画
                        }, 300)
                    }
                })
            },

 

posted @ 2021-10-09 13:01  爱粉刷的小星星  阅读(1361)  评论(0编辑  收藏  举报