微信小程序> 小程序:按月份显示记录

小程序:按月份显示记录

浏览量:2844 时间: 来源:冬天D秘密

 

内容:

         一、实现过程

         二、小程序段的逻辑实现


一、实现过程:

1修改数据库查询语句:

eg:当后台提交查询后到数据库SQL的代码大致如下:select * from xx_table where _time like '2012-12%' and id=_id and.....

按照(yyyy-MM)的格式格式化日期然后传递查询就可以了。。从小程序开始,小程序只需要传这种格式的字符串

    //获取当前时间    var date = new Date();    date = util.format(date, "yyyy-MM")    .    .    .     //根据月份查询    net.requestURL(CONST.jcs_base_url + "xx/expend.html", {      date: that.data.date, //这里的date就是格式化后的字符串      pageNo: that.data.pageNo,      pageSize: that.data.pageSize    }, "POST").then(data => {      that.setData({        list: data.data.responseBody.expends,        totalCount: data.data.responseBody.totalCount      });

提交过后Java后台接收到数据

    jsobj.getString("date");//获取小程序传到后台的date。如果为空就查询当前月份的。不为空就直接执行查询了。不知道会有什么安全隐患没有。    String date = jsobj.getString("date");    if(date == null){        date = new SimpleDateFormat("yyyy-MM").format(new Date());    }Pagination pagination = XXRecordMng.getPageByDate(merber.getId(),date, jsobj.getInt("pageNo"), jsobj.getInt("pageSize"));然后将查询到的结果返回到小程序

二、小程序逻辑实现

分三个部分(1)点击时间选择器触发查询。(2)左右箭头表示上个月和下个月。

(1)选择器触发查询

小程序头部的代码  <view class="title">    <image src='/images/mian/left.png' mode='aspectFit' bindtap='preMonth'></image>    <picker mode="date" value="{{date}}"  fields="month" bindchange="bindDateChange">    <view >{{year}}年{{month}}月</view>    </picker>    <image src='/images/mian/right.png' mode='aspectFit' bindtap='nextMonth'></image>  </view>
bindDateChange:function(e){    var that = this     var year = new Date(e.detail.value).getFullYear()//年月的显示是分开的。没有使用更简单的    var month = new Date(e.detail.value).getMonth()    if ((month = month+1) < 10){      month="0"+month;    }    this.setData({      year:year,      month:month,      date: e.detail.value,      totalCount: 0,      pageNo: 1,//更换日期从第一页查询    })    //根据月份查询    net.requestURL(CONST.jcs_base_url + "xxxx/expend.html", {      date: that.data.date,      pageNo: that.data.pageNo,      pageSize: that.data.pageSize    }, "POST").then(data => {      that.setData({        list: data.data.responseBody.expends,        totalCount: data.data.responseBody.totalCount      });    });  },

(2)左右箭头:两种

//转化为正常思维写的代码。nextMonth:function(){    var that = this;    var date = new Date(this.data.date);    var year = date.getFullYear();    var month = date.getMonth();//0-11    var  e={detail:{        value:"666"    }}    month = month + 1;//正常思维1-12    month = month + 1;//下一个月    if ((month) > 12){      //下一年      year = year + 1;      month = month - 12;    }    //将新的日期赋值    date.setFullYear(year);    date.setMonth(month-1);    //上面已经做过赋值,转化为字符串要要在所有运算操作之后,否则需要使用显转    if (month < 10) {      month = "0" + (month);    }    date = util.format(date, "yyyy-MM")    this.setData({      year: year,      month: month,      date:date    })    //由于改变了picker的value不会触发change事件,手动包装触发    var e={      detail:{        value:date      }    }    this.bindDateChange(e);  },
使用逻辑角度直接运算var that = this;var date = new Date(this.data.date);var year = date.getFullYear();var month = date.getMonth();month = month + 1;if ((month) > 11){    //下一年    year = year + 1;    month = month - 12;}//将新的日期赋值date.setFullYear(year);date.setMonth(month);//上面已经做过赋值,转化为字符串要要在所有运算操作之后,否则需要使用显转if (month < 9) {    month = "0" + (month+1);}else{    month = month + 1;} date = util.format(date, "yyyy-MM")this.setData({    year: year,    month: month,    date:date})

記錄為伴,就写到这,有需要再补充!


YQY

ABCDEFAG

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

最新资讯

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎