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


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 相关文章推荐
初识javascript 文档碎片
Jul 13 Javascript
关于COOKIE个数与大小的问题
Jan 17 Javascript
jQuery表单验证插件formValidator(改进版)
Feb 03 Javascript
jquery自定义属性(类型/属性值)
May 21 Javascript
HTML+CSS+JS实现完美兼容各大浏览器的TABLE固定列
Apr 26 Javascript
jquery仿百度百科底部浮动导航特效
Aug 08 Javascript
js获取html的span标签的值方法(超简单)
Jul 26 Javascript
ionic2中使用自动生成器的方法
Mar 04 Javascript
小试SVG之新手小白入门教程
Jan 08 Javascript
layui问题之自动滚动二级iframe页面到指定位置的方法
Sep 18 Javascript
node使用request请求的方法
Dec 20 Javascript
浅谈js中的attributes和Attribute的用法与区别
Jul 16 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文件中bom的PHP代码
2012/03/13 PHP
PHP+MYSQL会员系统的开发实例教程
2014/08/23 PHP
9段PHP实用功能的代码推荐
2014/10/14 PHP
PHP实现获取客户端IP并获取IP信息
2015/03/17 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
2017/08/28 PHP
laravel框架中控制器的创建和使用方法分析
2019/11/23 PHP
javascript 密码强弱度检测万能插件
2009/02/25 Javascript
JSON语法五大要素图文介绍
2012/12/04 Javascript
js事件冒泡实例分享(已测试)
2013/04/23 Javascript
使用PHP+JQuery+Ajax分页的实现
2013/04/23 Javascript
使用 JavaScript 进行函数式编程 (一) 翻译
2015/10/02 Javascript
JavaScript原生对象常用方法总结(推荐)
2016/05/13 Javascript
JavaScript中匿名函数的用法及优缺点详解
2016/06/01 Javascript
jQuery使用JSONP实现跨域获取数据的三种方法详解
2017/05/04 jQuery
NodeJS 实现手机短信验证模块阿里大于功能
2017/06/19 NodeJs
分析JavaScript数组操作难点
2017/12/18 Javascript
基于Vuex无法观察到值变化的解决方法
2018/03/01 Javascript
vue非父子组件通信问题及解决方法
2018/06/11 Javascript
JS使用H5实现图片预览功能
2019/09/30 Javascript
ES6 十大特性简介
2020/12/09 Javascript
简单介绍Python中用于求最小值的min()方法
2015/05/15 Python
python 实时得到cpu和内存的使用情况方法
2018/06/11 Python
tensorflow 输出权重到csv或txt的实例
2018/06/14 Python
pytorch实现特殊的Module--Sqeuential三种写法
2020/01/15 Python
英国最红的高街时尚品牌:Topshop
2016/08/05 全球购物
英国最受欢迎的手表网站:Watch Shop
2016/10/21 全球购物
澳大利亚UGG工厂直销:Australian Ugg Boots
2017/10/14 全球购物
官方授权图形T恤和服装:Fifth Sun
2019/06/12 全球购物
医学毕业生自荐信
2013/10/11 职场文书
大专学生推荐信范文
2013/11/19 职场文书
文化宣传方案
2014/03/13 职场文书
歌颂党的演讲稿
2014/09/10 职场文书
民主生活会整改措施(党员)
2014/09/18 职场文书
医院感染管理制度
2015/08/05 职场文书
python函数指定默认值的实例讲解
2021/03/29 Python
PyTorch中permute的使用方法
2022/04/26 Python