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)
|
|||
|
}
|
|||
|
}
|