微信小程序连续签到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 相关文章推荐
在第一个input框内输入内容.textarea自动得到第一个文件框的值的javascript代码
Apr 20 Javascript
javascript 学习之旅 (2)
Feb 05 Javascript
jQuery响应鼠标事件并隐藏与显示input默认值
Aug 24 Javascript
jQuery zTree加载树形菜单功能
Feb 25 Javascript
JQuery 传送中文乱码问题的简单解决办法
May 24 Javascript
AngularJs 指令详解及示例代码
Sep 01 Javascript
JS原生带小白点轮播图实例讲解
Jul 22 Javascript
jQuery实现菜单的显示和隐藏功能示例
Jul 24 jQuery
layui从数据库中获取复选框的值并默认选中方法
Aug 15 Javascript
javascript触发模拟鼠标点击事件
Jun 26 Javascript
基于Vant UI框架实现时间段选择器
Dec 24 Javascript
JavaScript模拟实现网易云轮播效果
Apr 04 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生成树的方法
2015/07/28 PHP
PHP用户注册邮件激活账户的实现代码
2017/05/31 PHP
JavaScript基本对象
2007/01/11 Javascript
js模拟实现Array的sort方法
2007/12/11 Javascript
javascript multibox 全选
2009/03/22 Javascript
JSQL 基于客户端的成绩统计实现方法
2010/05/05 Javascript
JS中window.open全屏命令解析及使用示例
2013/12/11 Javascript
jquery实现点击消失的代码
2014/03/03 Javascript
调整小数的格式保留小数点后两位
2014/05/14 Javascript
JavaScript实现数组在指定位置插入若干元素的方法
2015/04/06 Javascript
基于JavaScript将表单序列化类型的数据转化成对象的处理(允许对象中包含对象)
2015/12/28 Javascript
在网页中插入百度地图的步骤详解
2016/12/02 Javascript
bootstrap modal弹出框的垂直居中
2016/12/14 Javascript
ES6学习笔记之正则表达式和字符串正则方法分析
2017/04/25 Javascript
详解js 创建对象的几种方法
2019/03/08 Javascript
如何在JavaScript中谨慎使用代码注释
2019/06/21 Javascript
详解ECMAScript2019/ES10新属性
2019/12/06 Javascript
node.js中fs文件系统模块的使用方法实例详解
2020/02/13 Javascript
python+mysql实现简单的web程序
2014/09/11 Python
Python中使用Boolean操作符做真值测试实例
2015/01/30 Python
浅谈Python中用datetime包进行对时间的一些操作
2016/06/23 Python
python 开发的三种运行模式详细介绍
2017/01/18 Python
NumPy 如何生成多维数组的方法
2018/02/05 Python
对IPython交互模式下的退出方法详解
2019/02/16 Python
pyqt5 comboBox获得下标、文本和事件选中函数的方法
2019/06/14 Python
python自定义函数实现最大值的输出方法
2019/07/09 Python
使用python计算三角形的斜边例子
2020/04/15 Python
美国办公用品购物网站:Quill.com
2016/09/01 全球购物
英国工作场所设备购买网站:Slingsby
2019/05/03 全球购物
研究生考核个人自我鉴定
2014/03/27 职场文书
面试通知短信
2015/04/20 职场文书
实习感想范文
2015/08/10 职场文书
《三国志》赏析
2019/08/27 职场文书
励志语录:你若不勇敢,谁替你坚强
2019/11/08 职场文书
Kubernetes中Deployment的升级与回滚
2022/04/01 Servers
使用CSS实现音波加载效果
2023/05/07 HTML / CSS