微信扫一扫以上小程序【许愿灯池】可以查看具体每日签到功能

效果图展示:

        

实现思路:

这里利用了wx.setStorageSynic()缓存,同时在设置缓存的时候赋值给一个变量,之后将这个变量和new Date().getDate()获得的当日的value值进行比较,如果相同则不会执行,如果不同则会实现签到功能。这也就是每天只能签到一次。

①index.wxml

<view class="context">
<view class="top"><image src="../../icon/left.png" bindtap="bindPreMonth"></image><view>{{year}}年{{month}}月</view><image src="../../icon/right.png" bindtap="bindNextMonth"></image>
</view><view  class="middle"><view wx:for="{{data_arr}}" wx:key="index" class="middle_num">{{item}}</view>
</view><view class="calen"><view wx:for="{{startWeek}}" wx:key="index" class="calen_blank"></view><view wx:for="{{currentMonthDays}}" class='{{(index+1 == today[0].today ? "active": "calen_num")}}' wx:key="index">{{index+1}}</view></view></view>
<button bindtap="qiandao">签到</button><view class="date"><text>已连续签到</text><view class="num">{{num}}</view><text>天</text>
</view><view class="fighting"><text>加油!</text>
</view>

②index.wxss

.context{width: 96%;background-color: antiquewhite;margin: 0 auto;padding: 10rpx;border-radius: 20px 20px 20px 20px;margin-top: 20rpx;
}
.top{height: 80rpx;display: flex;justify-content: space-around;
}
.top image{height: 30rpx;width: 30rpx;
}
.middle{display: flex;
}
.middle_num{width: 14%;display: flex;justify-content: center;align-items: center;
}
.calen{display: flex;height: 400rpx;flex-wrap: wrap; /* 必要的时候拆行或拆列。 */
}
.calen_blank{width: 14%;height: 20%;background-color: antiquewhite;
}
.calen_num{width: 14%;height: 20%;display: flex;justify-content: center;align-items: center;
}
.active{background-color:yellow;width: 14%;height: 20%;display: flex;justify-content: center;align-items: center;border-radius: 50%;
}button{position: relative;margin-top: 10%;border-radius: 20px 20px 20px 20px;
}.date{position: relative;left: 3%;margin-top: 130rpx;width: 30%;height: 125rpx;text-align: center;background-color: white;border-radius: 20px 20px 20px 20px;
}
.date .num{color:red;font-weight: 700;
}
.date text{font-size: 32rpx;
}.fighting{position: relative;left: 65%;margin-top: -119rpx;width: 30%;height: 125rpx;text-align: center;background-color: white;border-radius: 20px 20px 20px 20px;line-height: 125rpx;
}
.fighting text{font-size: 55rpx;font-weight: 700;color: red;
}

③index.js

let num =0Page({/*** 页面的初始数据*/data: {data_arr:["日","一","二","三","四","五","六"],year:"",month:"",today:[],num:0,nowlist:[]},qiandao(){ let m = wx.getStorageSync('day')var time = new Date().getDate()if(m!=time){wx.showToast({title: '今日已成功签到',duration:2000})num++let todaylist = this.data.todaytodaylist.push({today:time})this.setData({num:num,today:todaylist})// console.log(todaylist);wx.setStorageSync('day', new Date().getDate()) wx.setStorageSync('month', new Date().getMonth()+1)wx.setStorageSync('num', this.data.num)}
else{wx.showToast({title: '今日已签到',icon:'error',duration:2000})
}},/*** 生命周期函数--监听页面加载*/onLoad: function (options) {   let number = wx.getStorageSync('num')   let day = wx.getStorageSync('day')let nowlist = this.data.nowlistnowlist.push({today:day})this.setData({num:number,today:nowlist})let now = new Date()let year = now.getFullYear()// month获取是从 0~11let month = now.getMonth() + 1this.setData({year,month})this.showCalendar()},showCalendar(){let {year,month} = this.data//以下两个month已经+1let currentMonthDays = new Date(year,month,0).getDate() //获取当前月份的天数let startWeek = new Date(year + '/' + month + '/' + 1).getDay(); //本月第一天是从星期几开始的this.setData({currentMonthDays,startWeek})},//上个月按钮bindPreMonth(){let {year,month} = this.data//判断是否是1月if(month - 1 >= 1){month = month - 1 }else{month = 12year = year - 1}this.setData({month,year})this.showCalendar()},//下个月按钮bindNextMonth(){let {year,month} = this.data//判断是否是12月if(month + 1 <= 12){month = month + 1 }else{month = 1year = year + 1}this.setData({month,year})this.showCalendar()}})

注意:

复制代码后会出现按钮没有显示,这是因为这个按钮是logo图片,需要自行寻找logo来替换代码中的图片路径。

总结:

通过以上代码可以搭建出和【许愿灯池】一样 的每日签到功能。如果想知道具体的签到效果,可以微信搜一搜【许愿灯池】或是二维码扫描如下:

微信小程序实现每日签到功能相关推荐

  1. 微信小程序|简单的签到功能(前端部分)

    微信小程序部分 sign.wxml <!--index.wxml--> <view class="container"><view class=&qu ...

  2. 基于微信小程序的每日签到打卡

    社会的发展和科学技术的进步,互联网技术越来越受欢迎.手机也逐渐受到广大人民群众的喜爱,也逐渐进入了每个用户的使用.手机具有便利性,速度快,效率高,成本低等优点. 因此,构建符合自己要求的操作系统是非常 ...

  3. 微信小程序实现每日签到、连续签到

    昨天在看自己写的小程序项目,无意中打开了CSDN APP,突然间觉得,我去,如果在小程序中加个"签到"功能,岂不美哉!(好吧,其实是买的书昨天没到货,然后闲着无事,就想起了大明湖畔 ...

  4. 微信小程序分析送积分功能如何实现_微信小程序积分商城解决方案(一)

    概念 微信小程序积分商城的"积分商城"概念,是指的用户访问微信小程序经过授权用户信息或是验证注册的用户加入会员,基于微信APP环境使用微信支付等工具进行交易,推出的一种会员奖励计划 ...

  5. java计算机毕业设计基于安卓Android/微信小程序的大学生签到管理系统APP

    项目介绍 随着Internet的发展,人们的日常生活已经离不开网络.未来人们的生活与工作将变得越来越数字化,网络化和电子化.网上管理,它将是直接管理签到系统app的最新形式.本论文是以构建签到系统ap ...

  6. 微信小程序 拍照打卡功能实现

    微信小程序 拍照打卡功能实现 附Java代码 小程序端 签到页面wxml 签到页面js 拍照页面wxml 拍照页面js Java后台 保存照片 保存打卡数据 由于拍照组件是相当于一个块,用隐藏显示的方 ...

  7. 低成本免服务器微信小程序源码多功能集合搭建

    现如今在线副业已经成为一种趋势,越来越多的人选择副业作为起步.小程序凭借不占内存.无论前期投入还是后期维护,成本都较低:如果你想副业来赚钱,选择小程序是非常不错的选择,有很多人可能会问,我不会做小程序 ...

  8. 微信小程序(BDEDU签到工具)项目总结

    本篇博客用于记录微信小程序(BDEDU签到工具)的开发过程 微信小程序的开发入门 1. 申请微信小程序 申请小程序,无非是去微信公众平台选择申请小程序,然后填写一些相关信息即可. 2. 部署开发环境 ...

  9. nodejs android 推送,利用Nodejs怎么实现一个微信小程序消息推送功能

    利用Nodejs怎么实现一个微信小程序消息推送功能 发布时间:2021-01-20 13:55:29 来源:亿速云 阅读:92 作者:Leah 今天就跟大家聊聊有关利用Nodejs怎么实现一个微信小程 ...

  10. php 微信小程序 循环 多选,微信小程序实现多选功能

    本文为大家分享了微信小程序实现多选功能的具体代码,供大家参考,具体内容如下 代码: {{num + 1}}/{{quesyion.length}}{{question[num][0]}} A {{qu ...

最新文章

  1. Linux系统下使用桥接模式,无法ping通外网解决问题方案!
  2. OpenStack 对接 Ceph 环境可以创建卷但不能挂载卷的问题
  3. 软件测试工具按用途分分为哪几类,以测试的形态分软件测试可以分为哪几类?...
  4. ‘torch.nn‘ has no attribute ‘SiLU‘
  5. 用 Ganglia 监控基于 Biginsights 的 HBase 集群性能
  6. Java的拓展包C3P0和DBUtil的使用
  7. OpenCV C++ 03 - Save an Image to a File
  8. c++学习笔记之运算符重载
  9. AOP 中必须明白的概念-切入点(Pointcut)
  10. Android学习2--项目文件列表简单分析
  11. 重新设置Visual Studio 环境
  12. 【系统分析师之路】第五章 复盘软件工程(逆向净室与模型驱动开发)
  13. Android 电子市场
  14. U盘Linux游戏系统,batocera.linux U盘街机游戏系统下载
  15. visio用例图箭头怎么画_visio2010绘制用例图带图例.docx
  16. FMI飞马网【线上直播】持续集成在京东研发的落地及应用
  17. 【LEETCODE】【鱼缸难题】
  18. Efficient Protocols for Set Membership and Range Proof 学习笔记
  19. 深度学习框架之争:TensorFlow退守工业界,PyTorch主导学术界?
  20. Open3d 获取渲染和固定视角json文件及读入

热门文章

  1. 怎样做好微商 怎样推广引流客源效果好
  2. c#利用API读取微信数据
  3. 总结Learning Efficient Single-stage Pedestrian Detectors by Asymptotic Localization Fitting
  4. 秒开路由sam1_野狼SAM机架精编版V1.0官方版-独木成林
  5. Python-GUI界面设计(tkinter)
  6. JAVA_JSP教师信息管理系统
  7. python blp模型 估计_随机系数Logit模型及Stata实现
  8. AI理论知识整理(4)-期望与方差以及联合概率分布
  9. 解决Excel装了excel link 加载宏之后,打开excel就自动打开matlab的方法
  10. JavaScript参考手册