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


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获取dom的高度和宽度(可见区域及部分等等)
Jun 13 Javascript
js中点击空白区域时文本框与隐藏层的显示与影藏问题
Aug 26 Javascript
js操作模态窗口及父子窗口间相互传值示例
Jun 09 Javascript
js实现表单及时验证功能 用户信息立即验证
Sep 13 Javascript
Vue.js快速入门实例教程
Oct 15 Javascript
微信小程序 解析网页内容详解及实例
Feb 22 Javascript
使用jQuery实现页面定时弹出广告效果
Aug 24 jQuery
使用vue-resource进行数据交互的实例
Sep 02 Javascript
Vue框架之goods组件开发详解
Jan 25 Javascript
Vue项目报错:Uncaught SyntaxError: Unexpected token
Nov 10 Javascript
微信小程序生成二维码的示例代码
Mar 29 Javascript
解决echarts中横坐标值显示不全(自动隐藏)问题
Jul 20 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与MySQL开发中页面乱码的产生与解决
2008/03/27 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
2020/03/24 PHP
mapper--图片热点区域高亮组件官方站点
2007/12/22 Javascript
js 新浪的一个图片播放图片轮换效果代码
2008/07/15 Javascript
JQuery 选择器、过滤器介绍
2011/02/14 Javascript
file控件选择上传文件确定后触发的js事件是哪个
2014/03/17 Javascript
Javascript显示和隐藏ul列表的方法
2015/07/15 Javascript
JS实现淡蓝色简洁竖向Tab点击切换效果
2015/10/06 Javascript
js确认框confirm()用法实例详解
2016/01/07 Javascript
利用nvm管理多个版本的node.js与npm详解
2017/11/02 Javascript
基于 Vue 实现一个酷炫的 menu插件
2017/11/14 Javascript
关于echarts在节点显示动态数据及添加提示文本所遇到的问题
2018/04/20 Javascript
如何将HTML字符转换为DOM节点并动态添加到文档中详解
2018/08/19 Javascript
详解vue挂载到dom上会发生什么
2019/01/20 Javascript
layui表格分页 记录勾选的实例
2019/09/02 Javascript
[39:21]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.24
2019/09/10 DOTA
Python实现根据指定端口探测服务器/模块部署的方法
2014/08/25 Python
零基础写python爬虫之使用urllib2组件抓取网页内容
2014/11/04 Python
Python获取某一天是星期几的方法示例
2017/01/17 Python
python和shell监控linux服务器的详细代码
2018/06/22 Python
python实现文件的备份流程详解
2019/06/18 Python
python连接、操作mongodb数据库的方法实例详解
2019/09/11 Python
Python模拟FTP文件服务器的操作方法
2020/02/18 Python
Python IDE环境之 新版Pycharm安装详细教程
2020/03/05 Python
python--shutil移动文件到另一个路径的操作
2020/07/13 Python
详解pycharm配置python解释器的问题
2020/10/15 Python
3D动画《斗罗大陆》上线当日播放过亿
2021/03/16 国漫
美国最大的农村生活方式零售店:Tractor Supply Company(TSC)
2017/05/15 全球购物
事业单位公务员的职业生涯规划
2014/01/15 职场文书
二年级语文教学反思
2014/02/02 职场文书
名企HR怎样看待求职信
2014/02/23 职场文书
羊脂球读书笔记
2015/06/30 职场文书
2019最新版火锅店的创业计划书 !
2019/07/12 职场文书
如何利用STAR法则制作留学文书?
2019/08/26 职场文书
CSS三大特性继承性、层叠性和优先级详解
2022/01/18 HTML / CSS
从结婚开始的恋爱故事。小说《我的美好婚事》TV动画化决定
2022/04/07 日漫