import QRCode from 'qrcode' /** * 生成二维码 * @param {string} text - 要生成二维码的文本内容 * @param {Object} options - 二维码配置选项 * @returns {Promise} 返回base64格式的二维码图片 */ export function generateQRCode(text, options = {}) { const defaultOptions = { width: 200, margin: 2, color: { dark: '#000000', light: '#FFFFFF' }, errorCorrectionLevel: 'M' } const qrOptions = { ...defaultOptions, ...options } return new Promise((resolve, reject) => { QRCode.toDataURL(text, qrOptions, (err, url) => { if (err) { console.error('生成二维码失败:', err) reject(err) } else { resolve(url) } }) }) } /** * 生成核销验证码二维码 * @param {string} subscribeId - 预约ID * @param {Object} options - 二维码配置选项 * @returns {Promise} 返回base64格式的二维码图片 */ export function generateVerificationQRCode(subscribeId, options = {}) { // 构建核销验证码的文本内容 const verificationText = `VERIFY:${subscribeId}` return generateQRCode(verificationText, options) } /** * 生成二维码并保存到本地 * @param {string} text - 要生成二维码的文本内容 * @param {string} filePath - 保存路径 * @param {Object} options - 二维码配置选项 * @returns {Promise} 返回保存的文件路径 */ export function generateQRCodeToFile(text, filePath, options = {}) { return new Promise((resolve, reject) => { QRCode.toFile(filePath, text, options, (err) => { if (err) { console.error('生成二维码文件失败:', err) reject(err) } else { resolve(filePath) } }) }) } /** * 生成二维码的Canvas元素 * @param {string} text - 要生成二维码的文本内容 * @param {Object} options - 二维码配置选项 * @returns {Promise} 返回Canvas元素 */ export function generateQRCodeCanvas(text, options = {}) { return new Promise((resolve, reject) => { QRCode.toCanvas(text, options, (err, canvas) => { if (err) { console.error('生成二维码Canvas失败:', err) reject(err) } else { resolve(canvas) } }) }) }