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

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

一.创建页面

如下是博主自己写的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: '很抱歉,已无预约名额~',
            })
        }
    }
    
})

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

相关推荐
weixin_411191847 分钟前
flutter中WebView的使用及JavaScript桥接的问题记录
javascript·flutter
百***060111 分钟前
SpringMVC 请求参数接收
前端·javascript·算法
用户47949283569151 小时前
Code Review 惊魂:同事的“优雅”重构,差点让管理员全部掉线
javascript
虚伪的空想家2 小时前
arm架构服务器使用kvm创建虚机报错,romfile “efi-virtio.rom“ is empty
linux·运维·服务器·javascript·arm开发·云原生·kvm
0***K8922 小时前
Vue数据挖掘开发
前端·javascript·vue.js
Irene19913 小时前
ES6 export 语句 语法规范
javascript·es6·export
H***99763 小时前
Vue深度学习实战
前端·javascript·vue.js
猴猴不是猴3 小时前
js实现卷轴,中间可滑动方块,左右两侧对比
javascript·css·css3
toooooop83 小时前
Vuex 中 state、mutations 和 actions 的原理和写法
前端·javascript·uni-app
TTGGGFF3 小时前
开源项目分享 : Gitee热榜项目 2025-11-24 日榜
gitee·开源