微信小程序实现二维码签到考勤系统


Posted in Javascript onJanuary 16, 2020

一。手动生成二维码的.js代码

这里要引入一个官方文档wxapp.qrcode.min.js

let drawQrcode = require('../utils/wxapp.qrcode.min.js');//引入wxapp.qrcode.min.js文件
createQRcode(canvasWidth, canvasHeight, canvasId, url) {
  // 调用qrcode.js里的方法,传入对应参数
  drawQrcode({
   width: canvasWidth,
   height: canvasHeight,
   canvasId: canvasId,
   text: url
  })
  console.log(drawQrcode.width)
 },
 setCanvasSize() {
  let size = {};
  // getSystemInfoSync 微信小程序提供getSystemInfoSync获取设备的信息
  let res = wx.getSystemInfoSync();
  // console.log(res);
  // 获取比例
  let scale = 686 / 750;
  let width = res.windowWidth * scale;
  let height = width;
  size.w = width;
  size.h = height;
  return size;
 },
 formsubmit(e) {
  let url = e.detail.value.url || this.data.placeholder;
  // let url = e.detail.value.url ? e.detail.value.url : this.data.placeholder;
  wx.showToast({
   title: '生成中',
   icon: 'loading',
   duration: 2000
  })
  let that_ = this;

  let timer = setTimeout(() => {
   let size = that_.setCanvasSize();
   //调用createQRcode方法
   that_.createQRcode(size.w, size.h, 'mycanvars', url);
   wx.hideToast();
   clearTimeout(timer);
  }, 2000)},


 /**
  * 生命周期函数--监听页面加载
  */
 onLoad: function (options) {
  //setCanvasSize 拿到画布区域的尺寸(微信小程序不支持dom的操作,所以单独定义方法去获取)
  let size = this.setCanvasSize();
  // console.log(size);
  let url = this.data.placeholder;
  //调用createQRcode方法
  this.createQRcode(size.w, size.h, 'mycanvars', url);
 },

二。准备工作,导入数据库表,和unit.js。获取时间

const DB = wx.cloud.database().collection("cows")
const TB = wx.cloud.database().collection("log")
let i = 0
let id=''
var util = require('../utils/util.js');

三。写入签到签退按钮的.js代码

now(){
  
  var that = this;
  console.log(that.data.nows)
  if (i == 0 && that.data.now =='签到'){
   i=1;
   var time1 = util.formatTime(new Date())
   DB.add({
    data: {
     statctime:time1,
     endtime: ''
    },
    success(res) {
     id=res._id
     console.log("签到成功", res._id)
    },
    fail(res) {
     console.log("签到失败", res)
    }
   })
   that.setData({
    statc: time1,
    now: '已签到',
    color: 'rgb(199, 194, 194)'
   })
   wx.showToast({
    title: '签到成功'
   })
   var timeout= setTimeout(function(){
    wx.switchTab({
     url: '/pages/arrary/first/ones/ones',
    })
   },1000)
   
  }
  else{
   wx.showToast({
    title: '已签到,请勿重复签到',
    icon: 'none'
   })
  }
 },
 nows(){
  var that = this;
  if (i == 1 || that.data.now == '已签到' && that.data.nows == '签退'){
   i=2;
   var time2 = util.formatTime(new Date())
   DB.doc(id).update({
    data: {
     endtime: time2
    },
    success(res) {
     console.log("签退成功", res)
    },
    fail(res) {
     console.log("签退失败", res)
    }
   })
   that.setData({
    ends: time2,
    nows: '已签退',
    colors: 'rgb(199, 194, 194)'
   })
   wx.showToast({
    title: '签退成功'
   })
  }
  else
  {
   if(i==2){
    wx.showToast({
     title: '已签退,请勿重复签退',
     icon: 'none'
    })
   }
   else{
    wx.showToast({
     title: '请先签到,签到之后方可签退!',
     icon: 'none'
    })
   }
  }
 },

第四。页面监听签退后会跳出签退页面。重新进入需要监听。

var that = this
  wx.cloud.callFunction({
   name: "getopenid",
   success(res) {
    var openid = res.result.openid
    DB.get({
     success(e) {
      console.log(e)
      var lenths = e.data.length;
      console.log(lenths);
      var time1 = util.formatTime(new Date())
      for (var i = 0; i < lenths; i++) {
       if (e.data[i]._openid == openid && e.data[i].statctime.substring(0, 10) == time1.substring(0, 10)) {
        var st = e.data[i].statctime
        var en = e.data[i].endtime
        that.setData({
         statc: st,
         now: '已签到',
         color: 'rgb(199, 194, 194)',
        })
       }
      }
     },
     fail(e) {
      console.log("查询失败", e)
     }
    })
    console.log("获取成功", res.result.openid)

   },
   fail(res) {
    console.log("获取成功", res)
   }
  })

到这,一个简单的签到页面就完成了。如有不对的地方,小菜鸟期盼大神的指导。
希望对你们有用处。

总结

以上所述是小编给大家介绍的微信小程序实现二维码签到考勤系统,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
把textarea中字符串里含有的回车换行替换成&amp;lt;br&amp;gt;的javascript代码
Apr 20 Javascript
ExtJS 2.0实用简明教程 之Border区域布局
Apr 29 Javascript
javascript Firefox与IE 替换节点的方法
Feb 24 Javascript
js 多种变量定义(对象直接量,数组直接量和函数直接量)
May 24 Javascript
jquery下checked取值问题的解决方法
Aug 09 Javascript
Javascript编写2048小游戏
Jul 07 Javascript
JavaScript 函数的执行过程
May 09 Javascript
javascript闭包概念简单解析(推荐)
Jun 03 Javascript
vue环境搭建简单教程
Nov 07 Javascript
判断jQuery是否加载完成,没完成继续判断的解决方法
Dec 06 jQuery
AngularJS实现的锚点楼层跳转功能示例
Jan 02 Javascript
如何基于layui的laytpl实现数据绑定的示例代码
Apr 10 Javascript
解决vue+ element ui 表单验证有值但验证失败问题
Jan 16 #Javascript
JavaScript实现简单的计算器
Jan 16 #Javascript
js面向对象之实现淘宝放大镜
Jan 15 #Javascript
js实现简单的打印表格
Jan 15 #Javascript
js实现图片实时时钟
Jan 15 #Javascript
js实现中文实时时钟
Jan 15 #Javascript
JS实现音量控制拖动
Jan 15 #Javascript
You might like
PHP5 操作MySQL数据库基础代码
2009/09/29 PHP
xml在joomla表单中的应用详解分享
2012/07/19 PHP
WordPress中获取指定分类及其子分类下的文章数目
2015/12/31 PHP
PHP中SQL查询语句的id=%d解释(推荐)
2016/12/10 PHP
jquery.boxy插件的iframe扩展代码
2010/07/02 Javascript
js当一个变量为函数时 应该注意的一点细节小结
2011/12/29 Javascript
js创建子窗口并且回传值示例代码
2013/07/02 Javascript
AngularJs根据访问的页面动态加载Controller的解决方案
2015/02/04 Javascript
JavaScript中指定函数名称的相关方法
2015/06/04 Javascript
jQuery实现定时读取分析xml文件的方法
2015/07/16 Javascript
javascript验证手机号和实现星号(*)代替实例
2016/08/16 Javascript
AngularJS动态绑定HTML的方法分析
2016/11/07 Javascript
node+express制作爬虫教程
2016/11/11 Javascript
jquery.uploadView 实现图片预览上传功能
2017/08/10 jQuery
js将键值对字符串转为json字符串的方法
2018/03/30 Javascript
微信小程序访问豆瓣电影api的实现方法
2019/03/31 Javascript
[01:04:06]DOTA2上海特级锦标赛A组资格赛#2 Secret VS EHOME第一局
2016/02/26 DOTA
python快速排序代码实例
2013/11/21 Python
浅谈python中的占位符
2017/11/09 Python
python最长回文串算法
2018/06/04 Python
python 寻找list中最大元素对应的索引方法
2018/06/28 Python
Python中私有属性的定义方式
2020/03/05 Python
Python生成并下载文件后端代码实例
2020/08/31 Python
Python类型转换的魔术方法详解
2020/12/23 Python
HTML5新增的标签和属性归纳总结
2018/05/02 HTML / CSS
HTML5新增form控件和表单属性实例代码详解
2019/05/15 HTML / CSS
GE设备配件:GE Appliance Parts(家电零件、配件和滤水器)
2018/11/28 全球购物
毕业研究生的自我鉴定
2013/11/30 职场文书
行政总监岗位职责
2013/12/05 职场文书
本科生求职信
2014/06/17 职场文书
2014年度党员自我评议
2014/09/13 职场文书
会计求职简历自我评价
2015/03/10 职场文书
立春观后感
2015/06/18 职场文书
实习员工转正的评语汇总,以备不时之需
2019/12/17 职场文书
canvas绘制折线路径动画实现
2021/05/12 Javascript
Python使用OpenCV实现虚拟缩放效果
2022/02/28 Python