当前位置: 首页 > news >正文

微信小程序生成二维码

目前是在开发小程序端 --> 微信小程序。然后接到需求:根据 form 表单填写内容生成二维码(第一版:表单目前需要客户进行自己输入,然后点击生成按钮实时生成二维码,不需要向后端请求,不存如数据库)。然后找了许多大神的笔记,可能是自己第一次开发小程序端,所以一直都不成功。最后找到了下面的一种方法。仅供参考。

首先需要打开终端,然后进行安装 qrcode.js 。

image-20241029093449997

// 安装
// h5
npm install qrcode
// 小程序
npm install uqrcodejs
-----------------------
// 若是安装不成,可以先查看一下镜像路径
npm config get registry
// 然后换成淘宝镜像
npm config set registry https://registry.npmmirror.com/
// 然后再安装

安装完成后页面进行导入

// h5
import QRCode from 'qrcode';
// 小程序
import UQRCode from 'uqrcodejs';

我选择的是点击生成按钮,然后用 popup 弹出框,在弹出框中让最后生成的二维码赋值给 <image :src="qrCodeImage"> 标签。

<view class="generate-code"><button @click="generateCode" type="primary" class="agree-btn">生成二维码</button><u-popup v-model="show" mode="center" width="80%" height="60%" border-radius="14"><view class="content"><view class="item-content"><view class="item-content-title">{{ marketUnit }}</view><view class="item-content-title">批次号:</view><!-- 这里需要注意:image 标签的是 h5 的生成方式,但是不能用于小程序端。想要生成小程序端,需要使用 canvas 标签来接收 --><!-- h5 --><image :src="qrCodeImage" class="item-content-title item-content-title-image"></image><!-- 小程序 --><canvas id="qrcode" canvas-id="qrcode" class="item-content-title item-content-title-image"/></view><button @click="saveOrShare" class="item-content-button">长按保存或分享	</button></view></u-popup><button @click="showQRCodeRecord" style=" background-color: #f0f2f6; color: #55aaff; font-size: 28rpx;text-align: center; padding-top: 10px; width: 50%; height: 76rpx;" >二维码生成记录</button>
</view>
data(){return{show: false,marketUnit: '',qrCodeImage: '',}
},
methods:{generateCode() {// 打开弹框this.show = true;this.createCode(); },async createCode() {// h5try {// 生成二维码const paramsString = JSON.stringify(this.dataForm)this.qrCodeImage = await QRCode.toDataURL(paramsString);} catch (error) {console.error('生成二维码失败:', error);}// 小程序const qr = new UQRCode();qr.data = JSON.stringify(this.dataForm);qr.size = 200;qr.make();const ctx = uni.createCanvasContext('qrcode', this); // 组件内调用需传this,vue3 中 this 为 getCurrentInstance()?.proxyqr.canvasContext = ctx;qr.drawCanvas();this.loading = false;this.marketUnit = "营销单位:";},saveOrShare() {// 长按保存或分享},
}
.generate-code {height: 100px;margin-top: 20%;
}
.agree-btn {color: #fff; border-color:#000; border-radius: 50rpx;width: 90%; height: 76rpx; font-size: 28rpx;
}
.content {background-color: #fffdb7;height: 100%;display: flex;flex-direction: column; /* 子元素垂直排列 */justify-content: center;align-items: center;
}
.item-content {background-color: #fff;width: 80%;height: 70%;
}
.item-content-title {margin-top: 7px; margin-left: 20px;
}
.item-content-title-image {margin-top: 10px;margin-left: 20px;width: 200px; height: 200px;
}
.item-content-button {width: 80%;height: 10%;background-color: #fff;color: #bc7a00;text-align: center;margin-top: 20px;font-size: 16px;/* text-shadow: 0.5px 0.5px 0.5px #000000; /* 字体阴影 */ 
}

效果:打码了

image-20241029095645106

http://www.lryc.cn/news/474652.html

相关文章:

  • 自由软件与开源软件:异同与联系
  • Vue中ref、reactive、toRef、toRefs的区别
  • 凸极式发电机的相量图分析和计算,内功率因数角和外功率因数角和功角的定义。
  • systemctl restart NetworkManager 重启后,文件/etc/resolv.conf修改失败
  • Admin.NET源码学习(5:swagger使用浅析)
  • 在 openEuler 22.03 服务器上搭建 web 服务教程
  • 如何取消自动配置ipv4地址:步骤详解与实用指南
  • 医院信息化与智能化系统(15)
  • 小红书笔记详情API接口系列(概述到示例案例)
  • 跨境电商平台系统开发
  • 开源模型应用落地-qwen模型小试-Qwen2.5-7B-Instruct-玩转ollama-Modelfile文件(二)
  • 链表详解(一)
  • npm入门教程6:npm脚本
  • 用Python脚本执行安卓打包任务
  • 制作安装k8s需要的离线yum源
  • Node学习记录-events
  • Java Collection/Executor DelayedWorkQueue 总结
  • 《TCP/IP网络编程》学习笔记 | Chapter 1:理解网络编程和套接字
  • 服务端监控工具:Nmon使用方法
  • Java中的线程安全问题(如果想知道Java中有关线程安全问题的基本知识,那么只看这一篇就足够了!)
  • 基础设施即代码(IaC)在Python自动化运维中的应用探讨
  • 浅谈路由器
  • openGauss数据库-头歌实验1-1 初识openGauss
  • QT找不到ffmpeg链接库解决方法
  • 消息队列-Rabbitmq(消息发送,消息接收)
  • 2、顶点着色器之视图矩阵
  • crontab实现2026年开始每个月1号执行一次
  • 计算机网络803-(5)运输层
  • 八 MyBatis中接口代理机制及使用
  • 【解决】Ubuntu18.04 卸载python之后桌面异常且终端无法打开,重启后进入tty1,没有图形化界面