微信小程序实现预约生成二维码

业务需求:点击预约按钮即可生成二维码凭码入校参观~

一.创建页面

如下是博主自己写的wxml:

XML 复制代码
<swiper  indicator-dots indicator-color="white" indicator-active-color="blue" 
 autoplay interval="2000" circular
>
<!-- 这部分是实现轮播图下面的小圆点,可以根据两个不同的属性来分别更改样式 -->
<swiper-item>
  <image src="/image/1606976870484.jpg"></image>
</swiper-item>
<swiper-item>
  <image src="/image/1606976921531.jpg"></image>
</swiper-item>
<swiper-item>
  <image src="/image/1606976936035.png"></image>
</swiper-item>
<swiper-item>
  <image src="/image/111.jpg"></image>
</swiper-item>
<swiper-item>
  <image src="/image/222.jpg"></image>
</swiper-item>
</swiper>


<button class="mybt" bindtap="yuyue">预约参观?</button>
<canvas type="2d"id="myQrcode"></canvas>

以及wxss:

css 复制代码
/* pages/youke/youke.wxss */
page{
    background-color:#f3ffff; 
 
   }
swiper{
    margin-top: 50rpx;
    width: 100%;
    height: 430rpx;
    border-radius: 30rpx;
}
swiper-item {
    width: 100%;
    height: 100%;
    border-radius: 50rpx;
  }
.mybt{
    margin-top: 100rpx;
    width:300rpx;
    background-color: rgb(41, 113, 248);
    color: rgb(255, 255, 255);
}
view{
    font-size: 45rpx;
    text-align: center;
    margin-top: 100rpx;
}
canvas{
    width: 230rpx;
    height: 230rpx;
    margin-top: 100rpx;
    margin-left: 260rpx;
}

二.下载并配置第三方库

去Gitee下载工具包:

二维码工具包http:// https://gitee.com/WeiDoctor/weapp-qrcode-canvas-2d下载zip:

将dist文件夹中的js文件全部复制到utils目录下:

三.完成业务

如下代码必须完整的导入再页面JS的最顶部:

javascript 复制代码
import drawQrcode from '../../utils/weapp.qrcode.esm.js'

如下是完整的代码:

javascript 复制代码
// pages/youke/youke.js
import drawQrcode from '../../utils/weapp.qrcode.esm.js'
Page({

    data: {
        yynum:500,
        randomNum:"0"
    },

    onLoad() {
       
    },

    onReady() {

    },

    onShow() {
        
    },

    onHide() {

    },

    onUnload() {

    },

    onPullDownRefresh() {

    },

    onReachBottom() {

    },

    onShareAppMessage() {

    },
    yuyue(msg){
        // console.log("lll")
        if(this.data.yynum>0&&this.data.randomNum=="0")
        {
            wx.showToast({
                icon: 'success',
                title: '预约成功~',
                
              })
             let y=this.data.yynum;
              y--;
              this.setData({
                yynum:y
              })
              let r=(Math.random()*1).toFixed(4)*10000
              this.setData({
                randomNum:r
              }),
              console.log(r);
              const query = wx.createSelectorQuery()
        query.select('#myQrcode')
            .fields({
                node: true,
                size: true
            })
            .exec((res) => {
                var canvas = res[0].node
        
            
                drawQrcode({
                    canvas: canvas,
                    canvasId: 'myQrcode',
                    width: 260,
                    padding: 30,
                    background: '#4169E1',
                    foreground: '#ffffff',
                    text: '个人二维码信息',
                })
        
                wx.canvasToTempFilePath({
                    canvasId: 'myQrcode',
                    canvas: canvas,
                    x: 0,
                    y: 0,
                    width: 260,
                    height: 260,
                    destWidth: 260,
                    destHeight: 260,
                })
            })
              
        }
        else if(this.data.randomNum!="0")
        {
            wx.showToast({
                icon: 'error',
                title: '禁止重复预约~',
              })
        }
        else{
            wx.showToast({
              icon: 'error',
              title: '很抱歉,已无预约名额~',
            })
        }
    }
    
})

点击预约即可成功生成二维码~

相关推荐
为美好的生活献上中指1 小时前
java每日精进 5.11【WebSocket】
java·javascript·css·网络·sql·websocket·网络协议
拖孩3 小时前
【Nova UI】十五、打造组件库之滚动条组件(上):滚动条组件的起步与进阶
前端·javascript·css·vue.js·ui组件库
苹果电脑的鑫鑫3 小时前
element中表格文字剧中可以使用的属性
javascript·vue.js·elementui
一丝晨光3 小时前
数值溢出保护?数值溢出应该是多少?Swift如何让整数计算溢出不抛出异常?类型最大值和最小值?
java·javascript·c++·rust·go·c·swift
Wannaer4 小时前
从 Vue3 回望 Vue2:响应式的内核革命
前端·javascript·vue.js
懒羊羊我小弟4 小时前
手写符合Promise/A+规范的Promise类
前端·javascript
赵大仁4 小时前
React vs Vue:点击外部事件处理的对比与实现
javascript·vue.js·react.js
Mr.app5 小时前
uniapp(微信小程序)>关于父子组件的样式传递问题(自定义组件样式穿透)
微信小程序·uni-app
老李不敲代码5 小时前
榕壹云搭子系统技术解析:基于Spring Boot+MySQL+UniApp的同城社交平台开发实践
spring boot·mysql·微信小程序·uni-app·软件需求
肥肥呀呀呀6 小时前
在Flutter上如何实现按钮的拖拽效果
前端·javascript·flutter