金页面自动下拉刷新 & 上拉触底 加载下一页 带有加载中提示

<template name="room">
    <view class="todaycheck-box invoiceBox">     
            <view class="bcard" v-for="(item, k) in orderRecordlist" :key="k" v-if="orderRecordlist.length > 0">                    
           

                <view class="bt">
                    <text class="hotel-name">{{ item.hotelName }}</text>
                    <text class="room-num">( {{ item.homeNumber }} )</text>
                </view>
                <view class="bc">
                    <view class="binfo">
                        <text class="pname">{{ item.name }}</text>
                        <text class="phone">{{item.phoneNumber }}</text>
                    </view>
                    <view class="btime">{{ item.entryTime }} ~ {{ item.leaveTime }}<text>{{item.invoiceValue }}</text></view>                
                </view>                                          
            </view>            
    </view>
</template>

<script>

export default {
    name: "room",
  
    data() {
        return {
            whole:true,
            pagename:'orderRecord',
            bottom: true,
            orderRecordlist: [],
            pagenum: 1,
            request:true,
            invoiceStatuses:'',
            dclNumber:0
              
        };
    },
 

    methods: {
      

        orderRecord() {        
           uni.showLoading({
               title: '加载中'
           });
                            
            if(this.request){
                this.$http
                .get("/invoice/landlord/page",{                    
                    invoiceStatuses:this.invoiceStatuses,
                    pageNum:this.pagenum,
                    pageSize:10,
                    })
                .then(res => {
                    let data = res.data.data;
                    if (data.code == 0) {                       
                        if(this.orderRecordlist.length < data.total){                            
                            this.orderRecordlist= this.orderRecordlist.concat(data.rows); //合并数组   新旧数据拼接
                            if(this.orderRecordlist.length == data.total){
                                this.request=false;
                            }
                           
                        }else{
                            this.request=false;
                        }    
                                                                                                                                                    
                    } else {
                        uni.showToast({
                            image: "/static/img/warn.png",
                            title: data.msg,
                            duration: 2000
                        });
                    }
                    uni.hideLoading();    
                     
                    
                })
                .catch(err => {});
                
            }else{
                uni.hideLoading();    
            }
            
            
        }
    },
    onShow() {        
       
        let user = uni.getStorageSync("user");
        if (!user) { //判断登录缓存
            uni.reLaunch({
                url: "/pages/login/login"
            });
        }
         uni.startPullDownRefresh(); //下拉刷新
         
    },
    onLoad() {    
     
    },
    onPullDownRefresh() {         this.pagenum=1;
        this.orderRecordlist=[];
        this.request=true;
        this.orderRecord();
 
        setTimeout(function() {
            uni.stopPullDownRefresh(); //定时停止下拉刷新
        }, 500);
    },
    
       onReachBottom(){ //触底开始下一页                           
          this.pagenum=this.pagenum + 1, //更新当前页数         
           this.orderRecord();//重新调用请求获取下一页数据
        },
   
};
</script>

<style>
    .invoiceBox{
        position: relative;
    }
    
    .invoiceBox .tab{
        width: 100%;
        display: flex;
        padding-bottom: 40upx;
    /*     position: fixed;
        left: 0rpx;
        top: 0rpx; */
    }
    .invoiceBox .tab .item{
        flex: 1 1 auto;
        text-align: center;
    }
    .invoiceBox .tab .item text{        
        font-size: 32upx;
        font-family: PingFang SC;    
        color: #797979;    
        padding-bottom: 10upx;
    }
    .invoiceBox .tab .item text.on{
        border-bottom: 2upx solid #4382FF;
        color: #4382FF;
    }
.page {
    height: 100vh;
}
.todaycheck-box{
    min-height: 100%;
    height: auto;
    background: #fff;
}

.avatar {
    border-radius: 50%;
    height: 100%;
    width: 100%;
}

.userinfo {
    position: relative;
    width: 750rpx;
    height: 320rpx;
    color: #fff;
    display: flex;
    flex-direction: column;
    align-items: center;
}

.userinfo-avatar {
    overflow: hidden;
    display: block;
    width: 160rpx;
    height: 160rpx;
    margin: 20rpx;
    margin-top: 50rpx;
    border-radius: 50%;
    border: 2px solid #fff;
    box-shadow: 3px 3px 10px rgba(0, 0, 0, 0.2);
}

.userinfo {
    /* color: #fff; */
    font-size: 14px;
    background-color: #c0c0c0;
}
.header {
    color: white;
    display: flex;
    justify-content: center;
    align-items: center;
}
.scroll {
    /* margin-top: 40px; */
    padding-top: 60rpx;
    
}
.dateshow {
    display: flex;
    justify-content: center;
    align-items: center;
    height: 115rpx;
}
.dateshow view {
    background: #bdbdbd;
    padding: 5px;
    border-radius: 4px 4px 4px 4px;
    color: white;
}
.todaycard {
    margin:24upx 24upx 0upx 24upx ;
    height: 121px;
    background: rgba(255, 255, 255, 1);
    border-radius: 8px; 
    box-shadow:4upx 5upx 10upx 0upx rgba(0, 0, 0, 0.2);
}
.todaycard .top {
    width: 100%;
    height: 40px;
    background: rgba(230, 230, 230, 1);
    border-radius: 8px 8px 0 0;
}
.todaycard .top .topl {
    font-size: 18px;
    font-family: PingFang SC;
    font-weight: bold;
    color: rgba(121, 121, 121, 1);
    margin-left: 19px;
}
.todaycard .top .topr {
    font-size: 12px;
    font-family: PingFang SC;
    font-weight: 500;
    color: rgba(121, 121, 121, 1);
    margin-right: 19px;
}
.top {
    display: flex;
    justify-content: space-between;
    align-items: center;
}
.todaycard .greyb {
    background: rgba(230, 230, 230, 1);
}
.todaycard .grey {
    color: #797979;
}
.todaycard .redb {
    background: rgba(244, 60, 35, 1);
}
.todaycard .redb .topl,
.todaycard .redb .topr {
    color: white !important;
}
.todaycard .red {
    color: rgba(244, 60, 35, 1);
}
.titem {
    display: flex;
    align-items: center;
}
.bottom {
    padding: 20px;
}
.titem .todayimg {
    height: 20px;
    width: 20px;
}
.tname {
    font-size: 14px;
    font-family: PingFang SC;
    font-weight: bold;
    color: rgba(121, 121, 121, 1);
    margin-left: 10px;
}
.ttip {
    font-size: 10px;
    font-family: PingFang SC;
    font-weight: 500;
    color: rgba(244, 60, 35, 1);
    margin-left: 10px;
}
.zwkf {
    width:380upx ;
    height: 380upx;
    margin-top:208upx;
}
.none {
    margin: auto;
    display: flex;
    justify-content: center
}
.bcard {     
    margin:0px 24upx 24upx 24upx;   
    background:#fff;
    border:1upx solid rgba(245, 245, 245, 1);
    box-shadow:4upx 7upx 10upx 0upx rgba(0, 0, 0, 0.1);
    border-radius:16upx;    
    padding: 40upx;
    position: relative;
    font-family:PingFang SC;
}
.bcard .orderSource{
    position: absolute;
    right: 60upx;
    top: 40upx;
    height:32upx;
/*     border:1px solid #4382FF;
    border-radius:4upx; */
    line-height: 30upx;
    padding: 0 10upx;
    font-size:24upx;
    color:#4382FF;
}
.left-line{
    position:absolute;
    left: 0upx;
    top: 0upx;
    width:8upx;
    height:66upx;
    background:#6585F2;
    border-radius:16upx 0upx 0upx   0upx;
}
.bt {
    font-size: 24upx;    
    height: 28upx;
    line-height: 28upx;
}
.hotel-name {   
    color: #000;    
}
.room-num {
   padding-left:18upx;
   color: #797979;
}
.bc {
  
}
.binfo {
  color: #000;
  padding-top: 8upx;
}
.pname {
   font-size:32upx;
}
.phone {
    font-size:24upx;
    padding-left: 24upx;
}
.btime {
    color: #797979;
    font-size: 24upx;
    padding-top: 12upx;
}

.badd {   
    height:64upx;
    width: 224upx;
    background:#6585F2;
    border-radius:32upx;
    position: fixed;
    left: 50%;
    bottom: 70upx;
    transform: translate(-50%,-50%);
    padding:0 24upx 0upx 80upx;
    line-height: 64upx;
    position: relative;
}
.badd .add {
    font-size: 24upx;
    color: #fff !important;
}
.badd image{
    height: 36upx;
    width: 36upx;
    position: absolute;
    left: 24upx;
    top: 15upx;
}
</style>





 

posted @ 2020-10-09 13:45  Jinsuo  阅读(242)  评论(0编辑  收藏  举报