vant van-tabs van-pull-refresh van-list 标签栏+上拉加载+下拉刷新

 

<template>
  <div class="huibj">
    <div class="listtab">
      <!--顶部导航-->
      <div class="topdh">
        <topnav topname="余额明细"></topnav>
      </div>
      <!--Tab 标签-->
      <van-tabs v-model="yeactive"
                @change="Tabnav">
        <van-tab v-for="(item,index) in yetabList"
                 :key="index"
                 :title="item.title"
                 :name="item.name">
        </van-tab>
      </van-tabs>
    </div>
    <div class="ye_mxlist">
      <van-pull-refresh
        v-model="ye_isLoading"
        success-text="刷新成功"
        @refresh="ye_onRefresh">
        <van-list
          v-model="ye_loading"
          :finished="ye_finished"
          finished-text="-- END --"
          @load="ye_onLoad">
          <van-cell v-for="(item,index) in ye_list" :key="index">
            <div class="ye_dljl_mx" @click="goyuemx(item)" style="height: 40px">
              {{index}}
            </div>
          </van-cell>
        </van-list>
      </van-pull-refresh>
    </div>
  </div>
</template>
<script>
//以下是组件  #
import topnav from '@/components/topnav/topnav'; //顶部导航

export default {
  name: 'yemxZ',
  data() {
    return {
      //Tab 标签
      yetabList: [
        {
          title: "aa",
          name: "0"
        },
        {
          title: "bb",
          name: '1'
        },
        {
          title: "cc",
          name: '2'
        },
      ],
      yeactive: '0', //tab默认值
      //上拉加载下拉刷新
      ye_isLoading: false, //是否下拉刷新
      ye_loading: false,//是否处于加载状态
      ye_finished: false, //	是否已加载完成
      ye_list: [],
    };
  },
  components: {
    topnav,
  },
  mounted() {
    //this.getData()
  },
  methods: {
    //tab切换
    Tabnav() {
      console.log(2)
      console.log(this.yeactive)
    },
    //下拉刷新
    ye_onRefresh() {
      let that=this
      setTimeout(() => {
        that.ye_isLoading = false;
        that.ye_onLoad();
      }, 1000);
    },
    ye_onLoad() {//   滚动条与底部距离小于 offset 时触发  offset可以自定义
      setTimeout(() => {
        for (let i = 0; i < 10; i++) {
          this.ye_list.push(this.ye_list.length + 1);
        }
        this.ye_loading = false;
        if (this.ye_list.length >= 40) {
          this.ye_finished = true;
        }
      }, 1000);
    },

    goyuemx(val) {
      console.log(5)

    }
  }
};
</script>

<style scoped>

</style>

增加分页:

<template>
  <div class="huibj">
    <div class="listtab">

      <!--Tab 标签-->
      <van-tabs v-model="yeactive" color="#f59a23" title-active-color="#f59a23"
                @change="Tabnav">
        <van-tab v-for="(item,index) in yetabList"
                 :key="index"
                 :title="item.title"
                 :name="item.namep">
        </van-tab>
      </van-tabs>
    </div>
    <div class="ye_mxlist">
      <van-pull-refresh
        v-model="isRefresh"
        success-text="刷新成功"
        @refresh="onRefresh">
        <van-empty v-if="total == 0" description="暂无数据" />
        <van-list
          v-model="loadingMore"
          :finished="isfinished"
          finished-text="-- END --"
          @load="onLoadMore">
          <van-cell v-for="(item,index) in dataList" :key="index">
            <div class="ye_dljl_mx" @click="goyuemx(item)" style="height: 40px">
                <div class="ye_dljl">
                  <p class="ye_dljl_mc">{{item.dealReasonStr}}</p>
                  <p class="ye_dljl_sj">{{item.dealTime}}</p>
                </div>
                <div :class="item.dealType == 1 ? 'ye_jemx ye_add_je':'ye_jemx'">{{item.dealType == 1 ? '+': '-'}}
                  {{item.dealAmount/100}}
                </div>
            </div>
          </van-cell>
        </van-list>
      </van-pull-refresh>
    </div>
  </div>
</template>
<script>

//新的路径josn
import axios from '@/utils/axios';
import url from '@/ui/URL.js';
//新的路径josn end
export default {
  name: 'yemxZ',
  data() {
    return {
      //Tab 标签
      yetabList: [
        {
          title: "全部",
          name: "0"
        },
        {
          title: "收入",
          name: '1'
        },
        {
          title: "支出",
          name: '2'
        },
      ],
      yeactive: '0', //tab默认值
      //上拉加载下拉刷新
      isRefresh: false, //是否下拉刷新
      loadingMore: false,// 加载更多是否显示加载中
      isfinished: false, //	加载是否已经没有更多数据
      dataList: [],//列表
      total: 1,
      pageNum: 0,
      pageSize:10,
    };
  },
  components: {
    topnav,
  },
  mounted() {
  },
  methods: {
    //tab切换
    Tabnav() {
      this.dataList=[];
      this.pageNum=0;
      this.isfinished=false; //	加载是否已经没有更多数据
      this.backtop();
    },
    //下拉刷新
    onRefresh() {
      this.isfinished=true; //	加载是否已经没有更多数据
      this.dataList=[]; // 清空列表数据
      this.pageNum=1;
      this.getList();
    },
    //加载更多
    onLoadMore() {
      console.log('加载更多')
      this.pageNum++;
      this.getList();
    },
    // 获取列表
    getList() {
      //模拟
      // setTimeout(() => {
      //   for (let i = 0; i < 2; i++) {
      //     this.dataList.push(this.dataList.length + 1);
      //   }
      //   this.loadingMore = false;
      //   if (this.dataList.length >= 6) {
      //     this.isfinished = true;
      //   }
      // }, 1000);
      let that=this;
      let bdlx=this.yeactive == 0 ? '': this.yeactive;
      //变动类型:1收入,2支出
      let csData={
        pageNum:that.pageNum,
        pageSize:that.pageSize,
        dealType:bdlx
      };
      axios
        .ajax({
          method: 'get',
          url: url.zzzzz.xxxx,
          params:csData
        })
        .then((res) => {
          if (res.success) {
            // 加载状态结束
            this.loadingMore = false;
            this.isRefresh=false;  //是否下拉刷新
            //数据追加到列表
            if (this.pageNum > 1) {
              this.dataList = this.dataList.concat(res.data.list)
            } else {
              this.dataList = res.data.list
            }
            this.total=res.data.total;
            if (this.total <= this.dataList.length) {
              console.log("没有更多")
              this.isfinished = true
            }else{
              this.isfinished = false
            }
          } else {
            this.$toast(res.message);
          }
        });
    },
    //返回顶部
    backtop () {
      document.documentElement.scrollTop=0
    },
    //说额明细
    goyuemx(val) {
      this.$router.push('yemxxqZ');
    }
  }
};
</script>

<style scoped>

</style>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用 Vant UI 库中的 `van-pull-refresh` 组件和 `van-list` 组件来实现下拉刷新上拉加载的功能。 首先,确保你已经安装了 Vant UI 并成功引入了相关组件。然后,按照以下步骤进行操作: 1. 在页面中引入 `van-pull-refresh` 和 `van-list` 组件: ```html <template> <van-pull-refresh @refresh="onRefresh"> <van-list v-model="listData" :finished="finished" @load="onLoad"> <!-- 列表内容 --> </van-list> </van-pull-refresh> </template> ``` 2. 在页面的 `data` 中定义相关数据和方法: ```javascript export default { data() { return { listData: [], // 列表数据 finished: false, // 是否加载完所有数据 }; }, methods: { onRefresh() { // 下拉刷新回调函数 // 在这里执行刷新操作,比如重新从服务器获取最新数据 // 更新列表数据,并将 finished 设置为 false,表示还有更多数据可以加载 }, onLoad() { // 上拉加载回调函数 // 在这里执行加载更多操作,比如从服务器获取下一页数据 // 更新列表数据,并将 finished 设置为 true,表示没有更多数据可以加载 }, }, }; ``` 3. 在 `onRefresh` 和 `onLoad` 方法中,根据实际业务逻辑执行刷新和加载更多的操作。你可以根据自己的需求,调用接口获取数据并更新 `listData` 数组的内容。 这样,你就可以通过下拉刷新上拉加载来实现列表数据的动态更新了。记得根据实际情况,在请求完成时设置 `finished` 的值,以便在页面中显示加载完成的状态。 希望对你有帮助!如有更多疑问,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值