微信小程序连续签到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 相关文章推荐
JavaScript编程开发中的五个实用小技巧
Jul 22 Javascript
jquery下组织javascript代码(js函数化)
Aug 25 Javascript
javascript如何判断输入的url是否正确
Apr 11 Javascript
Javascript非构造函数的继承
Apr 27 Javascript
JavaScript中的splice()方法使用详解
Jun 09 Javascript
JavaScript取得WEB安全颜色列表的方法
Jul 14 Javascript
jQuery验证插件validate使用方法详解
Sep 13 Javascript
JS快速实现移动端拼图游戏
Sep 05 Javascript
Bootstrap table的使用方法
Nov 02 Javascript
ES6中的迭代器、Generator函数及Generator函数的异步操作方法
May 12 Javascript
JavaScript Array对象基本方法详解
Sep 03 Javascript
JS算法教程之字符串去重与字符串反转
Dec 15 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 攻击方法之谈php+mysql注射语句构造
2009/10/30 PHP
PHP session文件独占锁引起阻塞问题解决方法
2015/05/12 PHP
PHP Ajax跨域问题解决方案代码实例
2020/08/01 PHP
Javascript学习笔记之 函数篇(一) : 函数声明和函数表达式
2014/06/24 Javascript
用javascript读取xml文件读取节点数据
2014/08/12 Javascript
在JavaScript中重写jQuery对象的方法实例教程
2014/08/25 Javascript
XML文件转化成NSData对象的方法
2015/08/12 Javascript
jQuery ajax全局函数处理session过期后的ajax跳转问题
2016/06/03 Javascript
Javascript闭包与函数柯里化浅析
2016/06/22 Javascript
Vue自定义指令介绍(2)
2016/12/08 Javascript
JS实现HTML标签转义及反转义
2020/04/14 Javascript
原生js实现瀑布流布局
2017/03/08 Javascript
浅谈vue.js中v-for循环渲染
2017/07/26 Javascript
使用react-router4.0实现重定向和404功能的方法
2017/08/28 Javascript
浅谈vue路径优化之resolve
2017/10/13 Javascript
JS实现小球的弹性碰撞效果
2017/11/11 Javascript
Vue 将后台传过来的带html字段的字符串转换为 HTML
2018/03/29 Javascript
VueCli4项目配置反向代理proxy的方法步骤
2020/05/17 Javascript
vue使用Sass时报错问题的解决方法
2020/10/14 Javascript
Python输出9*9乘法表的方法
2015/05/25 Python
Python爬取微信小程序通用方法代码实例详解
2020/09/29 Python
html5+svg学习指南之SVG基础知识
2014/12/17 HTML / CSS
ASOS英国官网:英国在线时装和化妆品零售商
2017/05/19 全球购物
选购世界上最好的美妆品:Cult Beauty
2017/11/03 全球购物
锐步美国官方网站:Reebok美国
2018/01/10 全球购物
一套Java笔试题
2016/08/20 面试题
考试不及格检讨书
2014/01/09 职场文书
党的群众路线教育实践活动个人承诺书
2014/05/22 职场文书
党支部书记四风问题整改措施
2014/09/24 职场文书
教师节横幅标语
2014/10/08 职场文书
自查自纠工作情况报告
2014/10/29 职场文书
2015年幼儿园学期工作总结
2015/05/22 职场文书
Python爬取科目四考试题库的方法实现
2021/03/30 Python
SQL Server2019安装的详细步骤实战记录(亲测可用)
2022/06/10 SQL Server
win10如何开启ahci模式?win10开启ahci模式详细操作教程
2022/07/23 数码科技
浅谈css清除浮动(clearfix和clear)的用法
2023/05/21 HTML / CSS