微信小程序连续签到7天积分获得功能的示例代码


Posted in Javascript onAugust 20, 2020

每周每天签到获得积分的案例
功能设计:计算每天签到得1分,显示得到的签到积分,连续签到3天[周一二三]即得+多3分,连续签到7天[周一二三四五六日]+多7分,没有连续即不显示多余的3分或7分的提示…

微信小程序连续签到7天积分获得功能的示例代码
微信小程序连续签到7天积分获得功能的示例代码

wxml结构:

<!--pages/signIn2/signIn2.wxml-->
<view class='sign-new'>
 <view class='in'>
 <view class='new-head'>
  <view class='sig-tl'>
  <view class='tln'>已连续签到<label class='n'>{{newSignNum}}</label>天</view>
  <view class='tlf'>积分:<label class='f'>{{newSignIntegral}}</label></view>
  </view>
 
  <!-- 未签到 -->
  <view wx:if='{{!newSignBtnState}}' class='sig-qiu sig-qiu-no' bindtap='bindSignFn' >
  <label class='ti'>签到</label>
  </view>
  <!-- 已签到 -->
  <view wx:else class='sig-qiu sig-qiu-yes'>
  <label class='ti'>已签到</label>
  </view>
 </view>

 <view class='new-week' >
  <view class='we-mod'>
  <view class='mo-fen'>
   <label class='f f3' wx:if='{{continuityDays3}}'>+3积分</label>
   <label class='f f7' wx:if='{{continuityDays7}}'>+7积分</label>
  </view>
  <view class='mo-line'>
   <block wx:for="{{isNewSignedArr}}" wx:for-item="v" wx:key="k">
   <label class="q {{v.isSigned?'hover':''}}"></label>
   </block>
  </view>
  <view class='mo-ri'>
   <block wx:for="{{isNewSignedArr}}" wx:for-item="v" wx:key="k">
   <label class="t">{{v.day}}</label>
   </block>
  </view>
  </view>
 </view>
 </view>
</view>

js方法:

Page({

 /**
 * 页面的初始数据
 */
 data: {
 newSignBtnState: false, //按钮签到状态
 continuityDays7: false, //连续7
 continuityDays3: false, //连续3 
 myToday: '',   //周几
 newSignNum: 0,  //签到天数
 newSignIntegral:0, //签到积分
 //签到数组
 isNewSignedArr: [
  {
  "day": "一",
  "isSigned": false
  },
  {
  "day": "二",
  "isSigned": false
  },
  {
  "day": "三",
  "isSigned": false
  },
  {
  "day": "四",
  "isSigned": false
  },
  {
  "day": "五",
  "isSigned": false
  },
  {
  "day": "六",
  "isSigned": false
  },
  {
  "day": "日",
  "isSigned": false
  }
 ],
 },

 //-------点击签到---------
 bindSignFn(e){
 var that = this,
  newSignNum = that.data.newSignNum,
  today = that.data.myToday;
 const arr = [],
   newSignArr = [...arr, ...that.data.isNewSignedArr];
 //
 today = today - 1 > 0 ? today - 1 : 6;
 newSignArr[today].isSigned = true;
 
 //当前积分
 newSignNum++;
 var curFen = that.data.newSignIntegral + 1;

 that.setData({
  newSignBtnState: true,
  newSignNum: newSignNum,
  newSignIntegral: curFen,
  isNewSignedArr: newSignArr,
 })

 that.signAddFen();
 },

 //签到积分函数 
 //连续 天数-积分: 周三+3:周一,周二,周三(1+1+3=5); 周六+7:周日到周六(1+1+3+1+1+1+7=15)
 signAddFen(e) {
 var that = this,
  oneIsSigned = that.data.isNewSignedArr[0].isSigned,
  twoIsSigned = that.data.isNewSignedArr[1].isSigned,
  threeIsSigned = that.data.isNewSignedArr[2].isSigned,
  fourIsSigned = that.data.isNewSignedArr[3].isSigned,
  fiveIsSigned = that.data.isNewSignedArr[4].isSigned,
  sixIsSigned = that.data.isNewSignedArr[5].isSigned,
  sevenIsSigned = that.data.isNewSignedArr[6].isSigned;
  
 // 另外加分-黄色小框显示 周三+3 , 周日+7
 if (oneIsSigned && twoIsSigned && that.data.myToday == 3) {
  that.setData({
  continuityDays3: true
  })
 } else if (oneIsSigned && twoIsSigned && threeIsSigned && fourIsSigned && fiveIsSigned && sixIsSigned && that.data.myToday == 0) {
  that.setData({
  continuityDays7: true
  })
 }

 //签到后执行
 if (that.data.newSignBtnState) {
  // 周三 : 一 二 三
  if (oneIsSigned && twoIsSigned && threeIsSigned) {
  var fens = that.data.newSignIntegral + 3 - 1;
  that.setData({
   newSignIntegral: fens
  })
  }
  // 所有签了: 一 二 三 四 五 六 日
  if (oneIsSigned && twoIsSigned && threeIsSigned && fourIsSigned && fiveIsSigned && sixIsSigned && sevenIsSigned) {
  var fens = that.data.newSignIntegral + 7 - 1;
  that.setData({
   newSignIntegral: fens
  })
  }
 }
 },

 /**
 * 生命周期函数--监听页面加载
 */
 onLoad: function (options) {
 var that = this,
  myDate = new Date(),
  myToday = myDate.getDay(); //周几 0 1 2 3 4 5 6
 that.setData({
  myToday: myToday
 })
 that.signAddFen();
 },

})

有什么错误或优化的地方,可以提出来,大家一起学习研究…
完整案例可访问本人github:https://github.com/xiexikang/xcx-signIn

ps:
[微信小程序:以7天为周期,连续签到7天功能效果]

到此这篇关于微信小程序连续签到7天积分获得功能的示例代码的文章就介绍到这了,更多相关微信小程序签到功能内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
载入进度条 效果
Jul 08 Javascript
js判断IE6/IE7/FF的代码[XMLHttpRequest]
Feb 16 Javascript
网页禁用右键菜单和鼠标拖动选择方法小结
Feb 25 Javascript
Javascript中replace()小结
Sep 30 Javascript
jquery+json实现分页效果
Mar 07 Javascript
基于BootStrap Metronic开发框架经验小结【三】下拉列表Select2插件的使用
May 12 Javascript
js+css3制作时钟特效
Oct 16 Javascript
bootstrap table 数据表格行内修改的实现代码
Feb 13 Javascript
Node.js发送HTTP客户端请求并显示响应结果的方法示例
Apr 12 Javascript
关于vue-router的beforeEach无限循环的问题解决
Sep 09 Javascript
javascript 产生随机数的几种方法总结
Sep 26 Javascript
js中null与空字符串&quot;&quot;的区别讲解
Jan 17 Javascript
如何使用JavaScript实现无缝滚动自动播放轮播图效果
Aug 20 #Javascript
JavaScript 空间坐标的使用
Aug 19 #Javascript
vue插件--仿微信小程序showModel实现模态提示窗功能
Aug 19 #Javascript
jQuery实现评论模块
Aug 19 #jQuery
javaScript代码飘红报错看不懂?读完这篇文章再试试
Aug 19 #Javascript
jQuery实现简单评论功能
Aug 19 #jQuery
原生JS实现多条件筛选
Aug 19 #Javascript
You might like
php数组添加元素方法小结
2014/12/20 PHP
PHP中使用正则表达式提取中文实现笔记
2015/01/20 PHP
使用GDB调试PHP代码,解决PHP代码死循环问题
2015/03/02 PHP
PHP中使用curl伪造IP的简单方法
2015/08/07 PHP
javascript 在网页中的运用(asp.net)
2009/11/23 Javascript
高性能web开发 如何加载JS,JS应该放在什么位置?
2010/05/14 Javascript
javascript 冒泡排序 正序和倒序实现代码
2010/12/14 Javascript
jQuery+.net实现浏览更多内容(改编php版本)
2013/03/28 Javascript
Egret引擎开发指南之视觉编程
2014/09/03 Javascript
jquery对象和DOM对象的任意相互转换
2016/02/21 Javascript
jquery实现点击弹出可放大居中及关闭的对话框(附demo源码下载)
2016/05/10 Javascript
浅谈js的url解析函数封装
2016/06/28 Javascript
js enter键激发事件实例代码
2016/08/17 Javascript
jQuery ajax请求struts action实现异步刷新
2017/04/19 jQuery
jQuery+koa2实现简单的Ajax请求的示例
2018/03/06 jQuery
vue watch深度监听对象实现数据联动效果
2018/08/16 Javascript
angularjs使用div模拟textarea文本框的方法
2018/10/02 Javascript
微信小程序 wx.getUserInfo引导用户授权问题实例分析
2020/03/09 Javascript
vue中template的三种写法示例
2020/10/21 Javascript
[01:35]2014DOTA2西雅图邀请赛 专访狐狸妈青春献给刀塔
2014/07/08 DOTA
[02:36]DOTA2亚洲邀请赛小组赛精彩集锦:EE凭借法力虚空拿下4杀
2017/03/30 DOTA
[10:24]郎朗助力完美“圣”典,天籁交织奏响序曲
2016/12/18 DOTA
Python open读写文件实现脚本
2008/09/06 Python
Python实例分享:快速查找出被挂马的文件
2014/06/08 Python
python实现k-means聚类算法
2018/02/23 Python
tensorflow入门:tfrecord 和tf.data.TFRecordDataset的使用
2020/01/20 Python
django ObjectDoesNotExist 和 DoesNotExist的用法
2020/07/09 Python
Python 如何实现数据库表结构同步
2020/09/29 Python
CSS3实现头像旋转效果
2017/03/13 HTML / CSS
惠普加拿大在线商店:HP加拿大
2017/09/15 全球购物
个人自我剖析材料
2014/02/07 职场文书
暑假学习心得体会
2014/09/02 职场文书
中学生的1000字检讨书
2014/10/11 职场文书
毕业典礼邀请函
2015/01/31 职场文书
教你用Python+selenium搭建自动化测试环境
2021/06/18 Python
GTX1650super好不好 gtx1650super显卡属于什么级别
2022/04/08 数码科技