rk
8 天以前 8caa1157044d2229e56a288cc5665fadf526dd45
small-program/pages/payment-success/payment-success.vue
@@ -18,8 +18,8 @@
         <view class="pickup-card">
            <text class="pickup-title">核销码</text>
            <view class="qrcode-box">
               <canvas canvas-id="qrcodeCanvas" id="qrcodeCanvas" style="width: 100px; height: 100px;"></canvas>
               <image class="qrcode-image" :src="qrcodeImage" mode="widthFix"></image>
               <canvas v-if="!qrcodeImage" canvas-id="qrcodeCanvas" id="qrcodeCanvas" :style="'width: '+width+'px; height:'+height+'px;'+'opacity: 0;'"></canvas>
               <image v-else class="qrcode-image" :src="qrcodeImage" mode="widthFix"></image>
            </view>
            <text class="pickup-code">{{ orderDetail.memberVerifyCode }}</text>
            <text class="pickup-tip" @tap="copyCode">点击复制核销码</text>
@@ -33,7 +33,10 @@
   export default {
      data() {
         return {
            height:180,
            width:180,
            orderId: '',
            orderDetail: null,
            qrcodeImage: ''
@@ -45,6 +48,8 @@
            title: '支付成功'
         })
         this.getOrderDetail()
         this.width = this.rpxToPx(200)
         this.height = this.rpxToPx(200)
      },
      methods: {
         async getOrderDetail() {
@@ -56,22 +61,38 @@
               }
            }
         },
         rpxToPx(rpx) {
           return rpx * wx.getSystemInfoSync().windowWidth / 750
         },
         generateQrcode(code) {
            drawQrcode({
               canvasId: 'qrcodeCanvas',
               text: code,
               width: 100,
               height: 100,
               correctLevel: 2
            })
            setTimeout(() => {
               uni.canvasToTempFilePath({
            this.$nextTick(() => {
               drawQrcode({
                  canvasId: 'qrcodeCanvas',
                  success: (res) => {
                     this.qrcodeImage = res.tempFilePath
                  }
               }, this)
            }, 100)
                  text: code,
                  width: this.width,
                  height: this.height,
                  correctLevel: 2
               })
               setTimeout(() => {
                  uni.canvasToTempFilePath({
                     canvasId: 'qrcodeCanvas',
                     x: 0,
                     y: 0,
                     width: this.width,
                     height: this.height,
                     destWidth: this.width,
                     destHeight: this.height,
                     success: (res) => {
                        this.qrcodeImage = res.tempFilePath
                     },
                     fail: (err) => {
                        console.error('生成二维码图片失败:', err)
                        // 如果失败,使用 canvas 直接显示
                        this.qrcodeImage = ''
                     }
                  }, this)
               }, 300)
            })
         },
         goHome() {
            uni.switchTab({
@@ -202,11 +223,13 @@
      border-radius: 8rpx;
      box-sizing: border-box;
      position: relative;
      overflow: hidden;
      display: flex;
      align-items: center;
      justify-content: center;
      canvas {
         position: absolute;
         top: 0;
         left: 0;
         opacity: 0;
         width: 200px;
         height: 200px;
      }
   }