每周每天簽到獲得積分的案例
功能設計:計算每天簽到得1分,顯示得到的簽到積分,連續簽到3天[周一二三]即得+多3分,連續簽到7天[周一二三四五六日]+多7分,沒有連續即不顯示多余的3分或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天積分獲得功能的示例代碼的文章就介紹到這了,更多相關微信小程序簽到功能內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.csdn.net/weixin_42211816/article/details/84673083