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


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 相关文章推荐
简单三步,搞掂内存泄漏
Mar 10 Javascript
js获取元素在浏览器中的绝对位置
Jul 24 Javascript
15款优秀的jQuery导航菜单插件分享
Jul 19 Javascript
一个分享按钮的插件使用介绍(可扩展,内附开发制作流程)
Sep 19 Javascript
关于jquery性能最佳实践的讨论,与求教
Mar 30 Javascript
js判断鼠标同时离开两个div的思路及代码
May 31 Javascript
javascript实现锁定网页、密码解锁效果(类似系统屏幕保护效果)
Aug 15 Javascript
javascript表单验证大全
Aug 12 Javascript
jQuery实现的导航动画效果(附demo源码)
Apr 01 Javascript
js 判断一个数字是不是2的n次方幂的实例
Nov 26 Javascript
使用vue制作探探滑动堆叠组件的实例代码
Mar 07 Javascript
Vue.js组件间通信方式总结【推荐】
Nov 23 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计划任务之ignore_user_abort函数实现方法
2015/01/08 PHP
完美解决phpdoc导出文档中@package的warning及Error的错误
2016/05/17 PHP
javascript div 遮罩层封锁整个页面
2009/07/10 Javascript
jQuery学习笔记之Helloworld
2010/12/22 Javascript
按给定几率进行随机抽取的js代码
2010/12/28 Javascript
jquery一句话全选/取消全选
2011/03/01 Javascript
JavaScript 高级篇之闭包、模拟类,继承(五)
2012/04/07 Javascript
Jquery 实现弹出层插件
2015/01/28 Javascript
JS创建对象几种不同方法详解
2016/03/01 Javascript
Bootstrap学习笔记之css组件(3)
2016/06/07 Javascript
CSS3 3D 技术手把手教你玩转
2016/09/02 Javascript
深入学习js瀑布流布局
2016/10/14 Javascript
JS实现提交表单前的数字及邮箱校检功能
2017/11/13 Javascript
Vue中mintui的field实现blur和focus事件的方法
2018/08/25 Javascript
jQuery实现获取及设置CSS样式操作详解
2018/09/05 jQuery
jQuery pagination分页示例详解
2018/10/23 jQuery
Vue infinite update loop的问题解决
2019/04/23 Javascript
express中static中间件的具体使用方法
2019/10/17 Javascript
微信小程序仿抖音视频之整屏上下切换功能的实现代码
2020/05/24 Javascript
javascript前端和后台进行数据交互方法示例
2020/08/07 Javascript
啥是佩奇?使用Python自动绘画小猪佩奇的代码实例
2019/02/20 Python
详解Python计算机视觉 图像扭曲(仿射扭曲)
2019/03/27 Python
django连接mysql数据库及建表操作实例详解
2019/12/10 Python
python进行参数传递的方法
2020/05/12 Python
Python列表去重复项的N种方法(实例代码)
2020/05/12 Python
CSS3 二级导航菜单的制作的示例
2018/04/02 HTML / CSS
集体婚礼证婚词
2014/01/13 职场文书
通信生自我鉴定
2014/01/18 职场文书
面试后的英文感谢信
2014/02/01 职场文书
致铅球运动员加油稿
2014/02/13 职场文书
员工安全承诺书
2014/05/22 职场文书
艾滋病宣传标语
2014/06/25 职场文书
四风问题班子对照检查材料
2014/09/27 职场文书
2014年食品安全工作总结
2014/12/04 职场文书
2014年教研员工作总结
2014/12/23 职场文书
物业保洁员管理制度
2015/08/05 职场文书