feat(邀请函): 添加二维码生成功能

- 新增二维码按钮及弹窗界面
- 实现二维码生成、预览和添加到画布功能
- 支持二维码在画布上的拖拽操作
- 添加相关样式和事件处理
This commit is contained in:
Zhukj
2026-04-25 15:13:15 +08:00
parent 81f63781a9
commit 02f3adb936
4 changed files with 366 additions and 0 deletions

View File

@@ -3172,6 +3172,35 @@
drawTextOnCanvasHD(ctx, textInput, scale);
}
});
// 绘制二维码
const qrImages = container.querySelectorAll('img[data-type="qrcode"]');
for (const qrImg of qrImages) {
if (!qrImg.classList.contains('layer-hidden')) {
const rect = qrImg.getBoundingClientRect();
const containerRect = container.getBoundingClientRect();
const x = (rect.left - containerRect.left) * scale;
const y = (rect.top - containerRect.top) * scale;
const w = rect.width * scale;
const h = rect.height * scale;
// 确保图片已加载
if (qrImg.complete && qrImg.naturalWidth > 0) {
ctx.drawImage(qrImg, x, y, w, h);
} else {
// 等待图片加载完成
await new Promise(resolve => {
qrImg.onload = () => {
ctx.drawImage(qrImg, x, y, w, h);
resolve();
};
qrImg.onerror = () => resolve();
// 超时处理
setTimeout(resolve, 100);
});
}
}
}
// 记录总耗时
const endTime = performance.now();