微信小程序连续签到获得积分

微信小程序连续签到获得积分demo

话不多说!!(伸手党的福利)
直接上代码,先看一下实际图
在这里插入图片描述

叮叮叮!!!
wxml代码

<view>
<view class='signIn'>
	<view class='sign-com'>
		<view class='thead'>
			<view class='tt'>已连续签到</view>
			<view class='mm'><label class='n'>{{signNum}}</label></view>
			<view class='pp'>连续签到7日后每日得3<image class="inner_water" src="/images/water.png"></image></view>
		</view>
		<view class='modle'>
			<view class='mol'>
				<view class='mol-line'></view>
				<view class='mol-ites'>
					<view class="ite {{signNum>=min?'hover':''}}" data-n='{{min}}'>
						<label class='n'>+{{min<7?1:3}}</label>
					</view>
					<view class="ite {{signNum>=min+1?'hover':''}}" data-n='{{min+1}}'>
						<label class='n'>+{{min+1<7?1:3}}</label>
					</view>
					<view class="ite {{signNum>=min+2?'hover':''}}" data-n='{{min+2}}'>
						<label class='n'>+{{min+2<7?1:3}}</label>
					</view>
					<view class="ite {{signNum>=min+3?'hover':''}}" data-n='{{min+3}}'>
						<label class='n'>+{{min+3<7?1:3}}</label>
					</view>
					<view class="ite {{signNum>=min+4?'hover':''}}" data-n='{{min+4}}'>
						<label class='n'>+{{min+4<7?1:3}}</label>
					</view>
					<view class="ite {{signNum>=min+5?'hover':''}}" data-n='{{min+5}}'>
						<label class='n'>+{{min+5<7?1:3}}</label>
					</view>
					<view class="ite {{signNum>=min+6?'hover':''}}" data-n='{{max}}'>
						<label class='n'>+{{min+6<7?1:3}}</label>
					</view>
				</view>
			</view>
			<view class='moday'>
				<label class='dd'>{{min}}</label>
				<label class='dd'>{{min+1}}</label>
				<label class='dd'>{{min+2}}</label>
				<label class='dd'>{{min+3}}</label>
				<label class='dd'>{{min+4}}</label>
				<label class='dd'>{{min+5}}</label>
				<label class='dd'>{{max}}</label>
			</view>
		</view>

		<view class='the-btn'>
			<button type='button' class='btn' bindtap='bindSignIn' data-num="{{signNum}}" disabled='{{signState}}' data-be="{{be}}">签到</button>
		</view>
	</view>
</view>

<view class='explax'>
	<view class=''>获得水滴:{{signfens}} <image class="inner_water" src="/images/water.png"></image> </view>
	<view class=''>签到数:{{signNum}}</view>
</view>
</view>

wxss:

/* pages/signIn/signIn.wxss */
.signIn{ width: 100%; height: auto;}
.sign-com{ width: 100%; height: auto; padding: 0 30rpx; box-sizing: border-box; overflow: hidden; }
.sign-com .thead{ width: 100%; text-align: center; padding: 50rpx 0 35rpx;}
.sign-com .thead .tt{ font-size: 24rpx;}
.sign-com .thead .mm{ margin-top: 10rpx; font-size: 24rpx;}
.sign-com .thead .mm .n{ font-size: 66rpx; margin-right: 25rpx;}
.sign-com .thead .pp{ color: #999; font-size: 24rpx; margin-top: 10rpx;}
.sign-com .modle{ width: 100%; height: 100rpx; margin-top: 10rpx; }
.sign-com .modle .mol{ width: 100%; height: 52rpx; position: relative;  }
.sign-com .mol-line{ width: 100%; height: 4rpx; background-color: #e6e6e6; position: absolute; left: 0; top: 50%; transform: translateY(-50%);}
.sign-com .mol-ites{ width: 100%; height: 100%;position: absolute;}
.mol-ites .ite{ width: 52rpx; height: 52rpx; border-radius: 50%; border: 1px solid #f5f5f5;
 background-color: #fff; box-sizing: border-box;  position: absolute; left: 0; top: 0; z-index: 2;}
.mol-ites .ite .n{ width: 44rpx; height: 44rpx; line-height: 44rpx; text-align: center; border-radius: 50%; background-color: #f5f5f5;position: absolute; left: 50%; top: 50%; transform: translate(-50%,-50%); font-size: 22rpx;}
.mol-ites .ite::after{ content: ""; width: 80rpx; height: 4rpx; background-color: transparent; 
position: absolute; left: 52rpx; top: 50%; margin-top: -2rpx; z-index: 2;}
.mol-ites .ite:last-of-type::after{ width: 0;}
.mol-ites .ite:nth-of-type(2){ left: 107rpx;}
.mol-ites .ite:nth-of-type(3){ left: 214rpx;}
.mol-ites .ite:nth-of-type(4){ left: 321rpx;}
.mol-ites .ite:nth-of-type(5){ left: 428rpx;}
.mol-ites .ite:nth-of-type(6){ left: 535rpx;}
.mol-ites .ite:nth-of-type(7){ left: 642rpx;}
.mol-ites .ite.hover{ border-color: #A0E872;}
.mol-ites .ite.hover .n{ background-color: #A0E872; color: #fff;}
.mol-ites .ite.hover::after{ background-color: #A0E872; }
.moday{ width: 100%; height:40rpx; overflow: hidden; position: relative; margin-top:20rpx;}
.moday .dd{ width: 52rpx; height: 40rpx; line-height: 1; text-align: center; font-size: 22rpx;
 position: absolute; left: 0; bottom: 0;}
.moday .dd:nth-of-type(2){ left: 107rpx;}
.moday .dd:nth-of-type(3){ left: 214rpx;}
.moday .dd:nth-of-type(4){ left: 321rpx;}
.moday .dd:nth-of-type(5){ left: 428rpx;}
.moday .dd:nth-of-type(6){ left: 535rpx;}
.moday .dd:nth-of-type(7){ left: 642rpx;}
.the-btn{ margin: 50rpx 0;}
.the-btn .btn{ background-color: #A0E872; color: #fff;}
.the-btn.signed .btn{ background-color: rgba(153, 153, 153, 0.61); }
.explax{ padding: 0 30rpx; font-size: 28rpx; color: #666;}
.inner_water{
  width: 20rpx;
  height: 28rpx;
  vertical-align: middle;
  margin-top: -9rpx;
  margin-left: 4rpx;
 }

js:

// pages/signIn/signIn.js
//获取应用实例
const app = getApp();

Page({

  /**
   * 页面的初始数据
   */
  data: {
    //img_url: config.imgUrl, //图片地址

    //签到模块
    signNum: 0,  //签到数
    signfens: 0,
    signState: false, //签到状态
    min: 1,  //默认值日期第一天1
    max: 7,  //默认值日期最后一天7
    be: 0,    //默认倍数
    // 
    
  },
  getProWeekList: function () {
    let that = this
    let date = new Date()
    let dateTime = date.getTime(); // 获取现在的时间
    let dateDay = date.getDay();// 获取现在的
    let oneDayTime = 24 * 60 * 60 * 1000; //一天的时间
    let proWeekList;
    let weekday;
    console.log(dateTime)
    for (let i = 0; i < 7; i++) {
      let time = dateTime - (dateDay - 1 - i) * oneDayTime;
      proWeekList = new Date(time).getDate(); //date格式转换为yyyy-mm-dd格式的字符串
      weekday = "day[" + i + "].wook"
      that.setData({
        [weekday]: proWeekList,
      })
      //that.data.day[i].wook = new Date(time).getDate();
    }
  },
 
 
  dataTime: function () {
    var date = new Date();
    var year = date.getFullYear();
    var month = date.getMonth();
    var months = date.getMonth() + 1;

    //获取现今年份
    this.data.year = year;

    //获取现今月份
    this.data.month = months;

    //获取今日日期
    this.data.getDate = date.getDate();

    //最后一天是几号
    var d = new Date(year, months, 0);
    this.data.lastDay = d.getDate();

    //第一天星期几
    let firstDay = new Date(year, month, 1);
    this.data.firstDay = firstDay.getDay();
  },

  
  //签到
  bindSignIn(e) {
    var that = this,
      num = e.currentTarget.dataset.num;
    num++

    wx.showToast({
      icon: 'success',
      title: '签到成功',
    })
    that.setData({
      signNum: num,
      //signState: true
    })
    if (this.data.signNum < 7) {
      this.setData({
        signfens: this.data.signfens += 1
      })
      wx.setStorageSync('jifen', this.data.signfens)
    } else {
      this.setData({
        signfens: this.data.signfens += 3
      })
      wx.setStorageSync('jifen', this.data.signfens)
    }
    var be = e.currentTarget.dataset.be;

    if (num % 7 == 0) {
      be += 1;
      that.setData({
        be: be
      })
    }

    if (num == 7 * be + 1) {
      that.setData({
        min: 7 * be + 1,
        max: 7 * be + 7
      })
    }


  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.setData({
      signfens: wx.getStorageSync('jifen') ? wx.getStorageSync('jifen') : 0
    })
  
    var that = this;
    this.setNowDate();
    this.getProWeekList()

    this.dataTime();
    

    /**
     * 获取系统信息
     */
   
  },


  
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },



  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})

嘻嘻嘻嘻嘻!😀如果觉得有帮助到你

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值