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


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 相关文章推荐
js用Date对象处理时间实现思路及代码
Jan 31 Javascript
jquery showModelDialog的使用方法示例详解
Nov 19 Javascript
整理Javascript基础入门学习笔记
Nov 29 Javascript
JavaScript实现给定时间相加天数的方法
Jan 25 Javascript
深入理解Ajax的get和post请求
Jun 02 Javascript
前端编码规范(3)JavaScript 开发规范
Jan 21 Javascript
微信小程序中input标签详解及简单实例
May 18 Javascript
js中apply与call简单用法详解
Nov 06 Javascript
javaScript日期工具类DateUtils详解
Dec 08 Javascript
微信小程序实现全局搜索代码高亮的示例
Mar 30 Javascript
使用layui的router来进行传参的实现方法
Sep 06 Javascript
使用Ajax实现无刷新上传文件
Apr 12 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
PHP教程 预定义变量
2009/10/23 PHP
php类中的$this,static,final,const,self这几个关键字使用方法
2015/12/14 PHP
PDO操作MySQL的基础教程(推荐)
2017/08/18 PHP
用js将内容复制到剪贴板兼容浏览器
2014/03/18 Javascript
JavaScript中逗号运算符介绍及使用示例
2015/03/13 Javascript
简单实现异步编程promise模式
2015/07/31 Javascript
JavaScript修改作用域外变量的方法
2016/03/25 Javascript
webuploader实现上传图片到服务器功能
2018/08/16 Javascript
JS实现字符串翻转的方法分析
2018/08/31 Javascript
Vue实现页面添加水印功能
2019/11/09 Javascript
JS运算符优先级与表达式示例详解
2020/09/04 Javascript
vue使用video插件vue-video-player的示例
2020/10/03 Javascript
Python中的zipfile模块使用详解
2015/06/25 Python
Fabric 应用案例
2016/08/28 Python
python字符串与url编码的转换实例
2018/05/10 Python
在Pycharm中将pyinstaller加入External Tools的方法
2019/01/16 Python
python 接口实现 供第三方调用的例子
2019/08/13 Python
python中dict()的高级用法实现
2019/11/13 Python
python实现二分类的卡方分箱示例
2019/11/22 Python
django ListView的使用 ListView中获取url中的参数值方式
2020/03/27 Python
pytorch VGG11识别cifar10数据集(训练+预测单张输入图片操作)
2020/06/24 Python
深入理解HTML的FormData对象
2016/05/17 HTML / CSS
“型”走纽约上东区:Sam Edelman
2017/04/02 全球购物
泰国办公用品购物网站:OfficeMate
2018/02/04 全球购物
Merrell美国官网:美国登山运动鞋品牌
2018/02/07 全球购物
澳洲CFL商城:CHEMIST FOR LESS(中文)
2021/02/28 全球购物
UNIX文件系统分类
2014/11/11 面试题
销售心得体会
2014/01/02 职场文书
奥林匹克的口号
2014/06/13 职场文书
医院我们的节日活动实施方案
2014/08/22 职场文书
市场督导岗位职责
2015/04/10 职场文书
六一晚会主持词开场白
2015/05/28 职场文书
党员转正介绍人意见
2015/06/03 职场文书
2016秋季运动会前导词
2015/11/25 职场文书
MyBatis配置文件解析与MyBatis实例演示
2022/04/07 Java/Android
Golang数据类型和相互转换
2022/04/12 Golang