微信小程序-记账本

版权声明:本文为CSDN博主「张金城大呵呵」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/weixin_46008509/article/details/107071988

  • 项目说明

 

这是一款具有记账功能的小程序-记账本,简单分为四个模块:首页、记账、报表、我的。首页页面初始数据显示当月的收入支出和结余的情况、以及当日收支,有列表可以选择其他日期的记账信息。记账页面有记账类型、消费类型、支付类型和记账信息可选择,记账信息选择记账时间、金额和备注,最后选择保存。报表模块页面有年列表、月列表和日列表选择记账的日期,选择支出或收入会分别显示当年的收支总额,以及显示百分比饼图可直观看到年度的消费类型比例。最后是我的模块,提供授权登录来显示用户的头像及昵称。

 

 

  • 模块概览

 

 

 

 

 

  • 详细设计

首页

 

分为本月结余、本月支出、本月收入,以及本日支出收入和详情列表,还有时间选择可以选择其他日期的详细收入支出。

代码分析:

.fl{

  float:left;

}

.fr{

  float:right;

}

.clearfix::after{

  content: "";

  display: block;

  clear: both;

}

 向左向右浮,,浮动会脱离文档流,这时候父元素没有高度的话父元素高度不为0,所以需要清除浮动影响。

 

  data: {

    dateRange: {

      start: "",

      end: ""

    },

    msgData: [], 

    isFristShow: true,   

    currentDate: "",    

    isToday: true,      

    cost: {           

      shouru: 0,

      zhichu:0

    },

    monthDate: "",     /

    monthCost: {      

      shouru: 0,

      zhichu: 0

    },

  dateRange为日期范围数据,msgData: []是获取的记账记录信息,isFristShow: true用来判断是否页面首次加载,currentDate表选中的日期,isToday: true, 判断选中日期是否是当天,cost是选中日期的收入与支出总额,初始值0,monthDate、monthCost是选中的月份以及该月的收入与支出。

 

 

在获取时间范围函数setDate里设置开始日期和结束日期

实例化var timer = new Date();获取年var year = timer.getFullYear();获取月份, 因为月份从0开始,真实月份需要加一 var month = timer.getMonth() + 1; 获取日var date = timer.getDate();

接着设置开始日期和结束日期var start = year - 1 + "-" + this.addZero(month) + "-" + this.addZero(date); var end = year + "-" + this.addZero(month) + "-" + this.addZero(date);

最后调用这些方法设置data里的值,   

this.setData({

      dateRange: {

        start,

        end

      }

写一个更改日期时间函数selectDate

先重新获取数据this.getMsgData(e.detail.value); 获取选择的月份,如果选择的月份和上一次选择的月份相同,则不执行getMonMsgData

if (e.detail.value.substring(0, 7) != this.data.monthDate){

      this.data.monthDate = e.detail.value.substring(0, 7)

      this.getMonMsgData(this.data.monthDate)

    }

getMsgData:函数是获取某天记账记录信息

先let that = this; 收入支出累加前清零    that.data.cost.zhichu = 0;

    that.data.cost.shouru = 0;

调用get_msg_data 云函数

wx.cloud.callFunction({

      name: "get_msg_data",

      data: {

        date: time

      },

      success: function(res){

        wx.hideLoading();

        console.log("调用get_msg_data 云函数成功-->",res)

        let data = res.result.data;

        data.forEach(v =>{

         if(v.costType == "zhichu"){

         that.data.cost.zhichu += Number(v.money)

          }else{

         that.data.cost.shouru += Number(v.money)

        }

      也可简写为 that.data.cost[v.costType] += Number(v.money);

   v.money = Number(v.money).toFixed(2);保留小数位,调用对象只能是数字,Number() 强制转换为数字类型,然后将收入与支出转千分位 toLocaleString(),只能是数字类型调用。

     that.data.cost.zhichu = that.data.cost.zhichu.toLocaleString();

     that.data.cost.shouru = that.data.cost.shouru.toLocaleString();

接着判断选择的日期是否是当天       

if(time == that.data.dateRange.end){

          that.data.isToday = true;

        }else{

          that.data.isToday = false;

        }

<

评论 32
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值