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

微信小程序实现二维码签到考勤微信小程序实现二维码签到考勤一。手动生成二维码的.js代码这里要引入一个官方文档wxapp.qrcode.min.jsletdrawQrcode=require(‘../utils/wxapp.qrcode.min.js’);//引入wxapp.qrcode.min.js文件createQRcode(canvasWidth,canvasHeight,canvasId,url…

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

一。手动生成二维码的.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)
      }
    })

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

今天的文章微信小程序实现二维码签到考勤分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/24010.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注