小程序按月份查询账单

预览效果

账单导航栏

思路

一般后台接口会提供你两个查询参数:startDate和endDate 那么怎样用这两个参数做一个漂亮的账单页面呢?

1.获取当前时间


```javascript
	var YEAR = util.formatYear(new Date());
    var MONTH = util.formatMonth(new Date());
    var day = util.formatDay(new Date());
    var endTime = new Date();

其中util中的几个方法:

//获取月份
const formatMonth = date => {
  const month = date.getMonth() + 1
  return month;
}
//获取年份
const formatYear = date => {
  const year = date.getFullYear()
  return year;
}
//获取天
const formatDay = date => {
  const day = date.getDate()
  return day;
}

别忘了在module.exports函数中添加方法名

2.转换起止时间的时间格式(时间戳转字符串)

	var StringEndTime = this.DatetoYYYMMDD(endTime);
    var StringStartTime = this.getLastMonthTime(StringEndTime);
//时间格式转换
  DatetoYYYMMDD(dt) {
    var str = dt.toISOString();
    return str.substring(0, str.indexOf("T"));
  },
//获取上月时间字符串
  getLastMonthTime:function(time){
    //console.log(time)
    var year = parseInt(time.substring(0,4))
    var month = parseInt(time.substring(5,7));
    var day = parseInt(time.substring(8, 10));
    var StringDate = '';
   // console.log(year+'年'+month+'月'+day+'日')

    if (month > 10) {
      if (day != 1) {
        StringDate = year + '-' + month + '-01'
      } else {
        StringDate = year + '-' + (month - 1) + '-01'
      }
    } else if (month == 10) {
      if (day != 1) {
        StringDate = year + '-' + month + '-01'
      } else {
        StringDate = year + '-0' + (month - 1) + '-01'
      }
    } else if (month<10 && month>1) {
      if (day != 1) {
        StringDate = year + '-0' + month + '-01'
      } else {
        StringDate = year + '-0' + (month - 1) + '-01'
      }
    }  else if (month == 1) {
      if (day != 1) {
        StringDate = year + '-0' + month + '-01'
      } else {
        StringDate = (year - 1) + '-12' + '-01'
      }
    }
    return StringDate
  },

3.获取数据(传参)

this.loadData(StringStartTime, StringEndTime)
loadData: function (startTime,endTime){
	......
}

4.data赋值

data: {
    TabCur: 0,
    scrollLeft: 0,
    //当前月份
    month:'',
    //当前年份
    year:'',
    //时间
    time:'',
    //时间表
    monthList:[],
    startTime:'',
    endTime:''
  },
this.setData({
      year:YEAR,
      month:MONTH
    });
    for(var i=0; i<12; i++){
     // console.log('结束时间' + StringEndTime)
      //console.log('开始时间'+ StringStartTime)
      var newarray = [{
        month: MONTH + ' 月',
        startTime: StringStartTime,
        endTime: StringEndTime,
      }]
      if(MONTH==0){
        MONTH=12
        var newarray = [{
          month: MONTH + ' 月',
          startTime: StringStartTime,
          endTime: StringEndTime,
        }]
        this.setData({
          monthList:  this .data.monthList.concat(newarray)
        })
      }else{
        this.setData({
          monthList: this.data.monthList.concat(newarray)
        });
      }
      MONTH = MONTH - 1;
      StringEndTime = StringStartTime;
      StringStartTime = this.getLastMonthTime(StringStartTime)
    }
    
   // console.log(this.data.monthList)
  },

5.页面导航渲染

UI组件我用的是colorUI (百度colorUI就可以了)

tabSelect(e) {
    this.setData({
      endTime: e.currentTarget.dataset.endtime,
      startTime: e.currentTarget.dataset.starttime,
      TabCur: e.currentTarget.dataset.id,
      scrollLeft: (e.currentTarget.dataset.id - 1) * 60
    })
    wx.showLoading({ title: '加载中...', mask: true });
    this.setData({
      currentPage: 1
    });
    var startTime = this.data.startTime;
    var endTime = this.data.endTime;
    //获取账单数据
    this.loadData(startTime, endTime);
    wx.hideLoading();
  },

wxml

<!--账单页面-->
<view class="cu-bar bg-white solid-bottom margin-top">
  <view class="action">
    <text class="cuIcon-title text-blue "></text> 我的账单(近一年)
  </view>
</view>
<scroll-view scroll-x class="bg-white nav" scroll-with-animation scroll-left="{{scrollLeft}}">
  <view class="cu-item {{index==TabCur?'text-green cur':''}}" wx:key wx:for="{{monthList}}" bindtap="tabSelect" data-id="{{index}}" data-endtime="{{item.endTime}}" data-starttime="{{item.startTime}}">
     {{item.month}}
  </view>
</scroll-view>
<view wx:for="{{monthList}}" wx:key wx:if="{{index==TabCur}}" >
  <view wx:for="{{contentlist}}" wx:key="id" wx:for-item="i" data-wtype="{{i.wtype}}" data-refoid="{{i.refoid}}" class="bg-grey padding margin" style="height:130rpx;">
      <view class="left">
        
      </view>
      <view class="right"></view>
    </view>
</view>

至此,大功告成。有不明白的同学可以留言。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值