微信小程序仿支付宝账单列表

支付宝是咋做的 咱也不知道 先把效果实现了再说 

效果图如下: 

 

js代码 后端根据最后的时间 向后查询size条数据

getData() {
    const params = {
      page: 1,
      size: 10,
      type: this.data.navActive + 1
    }
    const list = this.data.dateList;
    if (list.length <= 0) {
      const month = moment().format('YYYY-MM');
      this.setData({
        dateList: [{
          month,
          count: 0,
          list: []
        }]
      })
      this.getMonthCount(month, 0);
      params.beginAt = moment().format('YYYY-MM-DD HH:mm:ss');
    } else {
      // 有效月份
      const validMonths = this.data.dateList.filter(item => item.list.length > 0);
      // 有效月份的最后一条数据索引
      const lastIndex = validMonths[validMonths.length - 1].list.length - 1;
      params.beginAt = validMonths[validMonths.length - 1].list[lastIndex].createdAt;
    }
    app.ajax('GET', '/api/...', params).then(res => {
      res.data.map(item => {
        this.initDate(item)
      })
    })
  },

  initDate(item) {
    const curMonthIndex = this.data.dateList.length - 1;
    const itemMonth = moment(item.createdAt).format('YYYY-MM')
    // 如果早当前月份 将当前项放入当前月
    if (itemMonth === this.data.dateList[curMonthIndex].month) {
      this.setData({
        [`dateList[${curMonthIndex}].list`]: this.data.dateList[curMonthIndex].list.concat(item)
      })
    } else {
      const month = moment(this.data.dateList[curMonthIndex].month).subtract(1, 'months').format('YYYY-MM');
      const obj = {
        month,
        count: 0,
        list: []
      }
      this.setData({
        [`dateList[${curMonthIndex + 1}]`]: obj
      })
      this.getMonthCount(month, curMonthIndex + 1);
      this.initDate(item)
    }
  },

  /**
   * 获取每月总数
   */
  getMonthCount(month, index) {
    app.ajax('GET', '/api/...', {
      type: this.data.navActive + 1,
      month
    }).then(res => {
      this.setData({
        [`dateList[${index}].count`]: res.data
      })
    }).catch(() => {})
  },

html 

 

<van-tabs class="nav" active="{{ navActive }}" title-active-color="#303ff8" bind:change="onChange">
  <van-tab title="全部积分">
    <view class="nav-main">
      <view class="item" wx:for="{{dateList}}" wx:key="title">
        <view class="title">{{item.month}}月获取 <text class="count">{{item.count}}</text></view>
        <van-cell wx:for="{{item.list}}" wx:key="id" wx:for-item="itm" title="{{itm.title}}" value="+{{itm.points}}" label="{{itm.createdAt}}" />
      </view>
    </view>
  </van-tab>
  <van-tab title="已使用">
    <view class="nav-main">
      <view class="item" wx:for="{{dateList}}" wx:key="title">
        <view class="title">{{item.month}}月已使用 <text class="count">{{item.count}}</text></view>
        <van-cell wx:for="{{item.list}}" wx:key="id" wx:for-item="itm" title="{{itm.title}}" value="-{{itm.points}}" label="{{itm.createdAt}}" />
      </view>
    </view>
  </van-tab>
</van-tabs>

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值