72 lines
1.8 KiB
JavaScript
72 lines
1.8 KiB
JavaScript
/**
|
||
* 二维码生成工具类
|
||
*/
|
||
export default {
|
||
/**
|
||
* 生成二维码
|
||
* @param {Object} options 配置参数
|
||
* @param {String} options.text 要生成二维码的文本内容
|
||
* @param {Number} options.size 二维码尺寸,默认200
|
||
* @param {String} options.color 二维码颜色,默认#000000
|
||
* @param {String} options.bgColor 背景颜色,默认#FFFFFF
|
||
* @param {String} options.canvasId canvas标识,默认qrcodeCanvas
|
||
* @param {Function} options.success 成功回调
|
||
*/
|
||
createQRCode(options = {}) {
|
||
// 默认配置
|
||
const defaults = {
|
||
text: '',
|
||
size: 200,
|
||
color: '#000000',
|
||
bgColor: '#FFFFFF',
|
||
canvasId: 'qrcodeCanvas',
|
||
success: () => {}
|
||
}
|
||
|
||
// 合并配置
|
||
const config = { ...defaults, ...options }
|
||
|
||
if (!config.text) {
|
||
console.error('请传入要生成二维码的文本内容')
|
||
return
|
||
}
|
||
|
||
// 引入uQRCode
|
||
const uQRCode = require('@/components/u-qrcode/u-qrcode.js')
|
||
|
||
// 生成二维码
|
||
uQRCode.make({
|
||
canvasId: config.canvasId,
|
||
componentInstance: this,
|
||
text: config.text,
|
||
size: config.size,
|
||
margin: 10,
|
||
foreground: config.color,
|
||
background: config.bgColor,
|
||
success: (res) => {
|
||
config.success(res)
|
||
},
|
||
fail: (err) => {
|
||
console.error('二维码生成失败:', err)
|
||
}
|
||
})
|
||
},
|
||
|
||
/**
|
||
* 将二维码转换为图片路径
|
||
* @param {String} canvasId canvas标识
|
||
* @param {Function} success 成功回调
|
||
*/
|
||
canvasToImage(canvasId = 'qrcodeCanvas', success) {
|
||
uni.canvasToTempFilePath({
|
||
canvasId: canvasId,
|
||
success: (res) => {
|
||
success && success(res.tempFilePath)
|
||
},
|
||
fail: (err) => {
|
||
console.error('canvas转换为图片失败:', err)
|
||
}
|
||
}, this)
|
||
}
|
||
}
|