From 16213c0f85aa3ac8317797bf4a05fd12940e16d3 Mon Sep 17 00:00:00 2001
From: zhangwei <1504152376@qq.com>
Date: 星期三, 05 三月 2025 17:29:42 +0800
Subject: [PATCH] -

---
 src/uni_modules/uview-plus/components/u-qrcode/qrcode.js |   83 ++++++++++++++++++++++++++++-------------
 1 files changed, 56 insertions(+), 27 deletions(-)

diff --git a/src/uni_modules/uview-plus/components/u-qrcode/qrcode.js b/src/uni_modules/uview-plus/components/u-qrcode/qrcode.js
index ae5f945..7ec89fc 100644
--- a/src/uni_modules/uview-plus/components/u-qrcode/qrcode.js
+++ b/src/uni_modules/uview-plus/components/u-qrcode/qrcode.js
@@ -1031,6 +1031,7 @@
             image: '',
             imageSize: 30,
             canvasId: opt.canvasId,
+            nvueContext: opt.nvueContext,
             context: opt.context,
             usingComponents: opt.usingComponents,
             showLoading: opt.showLoading,
@@ -1090,7 +1091,12 @@
                     mask: true
                 });
             }
-            var ctx = uni.createCanvasContext(options.canvasId, options.context);
+            var ctx = '';
+            if (options.nvueContext) {
+                ctx = options.nvueContext;
+            } else {
+                ctx = uni.createCanvasContext(options.canvasId, options.context);
+            }
             var count = qrCodeAlg.getModuleCount();
             var ratioSize = options.size;
             var ratioImgSize = options.imageSize;
@@ -1141,34 +1147,52 @@
                 ctx.draw(true, () => {
                     // 淇濆瓨鍒颁复鏃跺尯鍩�
                     setTimeout(() => {
-                        uni.canvasToTempFilePath({
-                            width: options.width,
-                            height: options.height,
-                            destWidth: options.width,
-                            destHeight: options.height,
-                            canvasId: options.canvasId,
-                            quality: Number(1),
-                            success: function (res) {
-                                if (options.cbResult) {
-                                    // 鐢变簬瀹樻柟杩樻病鏈夌粺涓�姝ゆ帴鍙g殑杈撳嚭瀛楁锛屾墍浠ュ厛鍒ゅ畾涓�  鏀粯瀹濅负 res.apFilePath
-                                    if (!empty(res.tempFilePath)) {
-                                        options.cbResult(res.tempFilePath)
-                                    } else if (!empty(res.apFilePath)) {
-                                        options.cbResult(res.apFilePath)
-                                    } else {
+                        if (options.nvueContext) {
+                            ctx.toTempFilePath(
+                                0,
+                                0,
+                                options.width,
+                                options.height,
+                                options.width,
+                                options.height,
+                                "",
+                                1,
+                                function(res) {
+                                    if (options.cbResult) {
                                         options.cbResult(res.tempFilePath)
                                     }
                                 }
-                            },
-                            fail: function (res) {
-                                if (options.cbResult) {
-                                    options.cbResult(res)
-                                }
-                            },
-                            complete: function () {
-                                uni.hideLoading();
-                            },
-                        }, options.context);
+                            );
+                        } else {
+                            uni.canvasToTempFilePath({
+                                width: options.width,
+                                height: options.height,
+                                destWidth: options.width,
+                                destHeight: options.height,
+                                canvasId: options.canvasId,
+                                quality: Number(1),
+                                success: function (res) {
+                                    if (options.cbResult) {
+                                        // 鐢变簬瀹樻柟杩樻病鏈夌粺涓�姝ゆ帴鍙g殑杈撳嚭瀛楁锛屾墍浠ュ厛鍒ゅ畾涓�  鏀粯瀹濅负 res.apFilePath
+                                        if (!empty(res.tempFilePath)) {
+                                            options.cbResult(res.tempFilePath)
+                                        } else if (!empty(res.apFilePath)) {
+                                            options.cbResult(res.apFilePath)
+                                        } else {
+                                            options.cbResult(res.tempFilePath)
+                                        }
+                                    }
+                                },
+                                fail: function (res) {
+                                    if (options.cbResult) {
+                                        options.cbResult(res)
+                                    }
+                                },
+                                complete: function () {
+                                    uni.hideLoading();
+                                },
+                            }, options.context);
+                        }
                     }, options.text.length + 100);
                 });
             }, options.usingComponents ? 0 : 150);
@@ -1193,7 +1217,12 @@
         }
     };
     QRCode.prototype.clear = function (fn) {
-        var ctx = uni.createCanvasContext(this.options.canvasId, this.options.context)
+        var ctx = '';
+        if (options.nvueContext) {
+            ctx = options.nvueContext;
+        } else {
+            uni.createCanvasContext(this.options.canvasId, this.options.context)
+        }
         ctx.clearRect(0, 0, this.options.size, this.options.size)
         ctx.draw(false, () => {
             if (fn) {

--
Gitblit v1.9.1