From 752b14d2caa47ccceac328f79389fbf5e2e62ce4 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期三, 24 九月 2025 15:18:39 +0800
Subject: [PATCH] 分析追溯
---
src/components/geek-xd/components/geek-qrcode/geek-qrcode.vue | 205 +++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 205 insertions(+), 0 deletions(-)
diff --git a/src/components/geek-xd/components/geek-qrcode/geek-qrcode.vue b/src/components/geek-xd/components/geek-qrcode/geek-qrcode.vue
new file mode 100644
index 0000000..3fdfe05
--- /dev/null
+++ b/src/components/geek-xd/components/geek-qrcode/geek-qrcode.vue
@@ -0,0 +1,205 @@
+<template xlang="wxml" minapp="mpvue">
+ <view class="geek-qrcode">
+ <canvas class="geek-qrcode-canvas" :canvas-id="cid" :style="{width:cpSize+'px',height:cpSize+'px'}" />
+ <image v-show="show" :src="result" :style="{width:cpSize+'px',height:cpSize+'px'}" />
+ </view>
+</template>
+
+<script>
+import QRCode from "./qrcode.js"
+let qrcode
+export default {
+ name: "geek-qrcode",
+ props: {
+ cid: {
+ type: String,
+ default: 'geek-qrcode-canvas'
+ },
+ size: {
+ type: Number,
+ default: 200
+ },
+ unit: {
+ type: String,
+ default: 'upx'
+ },
+ show: {
+ type: Boolean,
+ default: true
+ },
+ val: {
+ type: String,
+ default: ''
+ },
+ background: {
+ type: String,
+ default: '#ffffff'
+ },
+ foreground: {
+ type: String,
+ default: '#000000'
+ },
+ pdground: {
+ type: String,
+ default: '#000000'
+ },
+ icon: {
+ type: String,
+ default: ''
+ },
+ iconSize: {
+ type: Number,
+ default: 40
+ },
+ lv: {
+ type: Number,
+ default: 3
+ },
+ onval: {
+ type: Boolean,
+ default: false
+ },
+ loadMake: {
+ type: Boolean,
+ default: false
+ },
+ usingComponents: {
+ type: Boolean,
+ default: true
+ },
+ showLoading: {
+ type: Boolean,
+ default: true
+ },
+ loadingText: {
+ type: String,
+ default: '浜岀淮鐮佺敓鎴愪腑'
+ },
+ },
+ data() {
+ return {
+ result: '',
+ }
+ },
+ methods: {
+ _makeCode() {
+ let that = this
+ if (!this._empty(this.val)) {
+ qrcode = new QRCode({
+ context: that, // 涓婁笅鏂囩幆澧�
+ canvasId:that.cid, // canvas-id
+ usingComponents: that.usingComponents, // 鏄惁鏄嚜瀹氫箟缁勪欢
+ showLoading: that.showLoading, // 鏄惁鏄剧ずloading
+ loadingText: that.loadingText, // loading鏂囧瓧
+ text: that.val, // 鐢熸垚鍐呭
+ size: that.cpSize, // 浜岀淮鐮佸ぇ灏�
+ background: that.background, // 鑳屾櫙鑹�
+ foreground: that.foreground, // 鍓嶆櫙鑹�
+ pdground: that.pdground, // 瀹氫綅瑙掔偣棰滆壊
+ correctLevel: that.lv, // 瀹归敊绾у埆
+ image: that.icon, // 浜岀淮鐮佸浘鏍�
+ imageSize: that.iconSize,// 浜岀淮鐮佸浘鏍囧ぇ灏�
+ cbResult: function (res) { // 鐢熸垚浜岀淮鐮佺殑鍥炶皟
+ that._result(res)
+ },
+ });
+ } else {
+ uni.showToast({
+ title: '浜岀淮鐮佸唴瀹逛笉鑳戒负绌�',
+ icon: 'none',
+ duration: 2000
+ });
+ }
+ },
+ _clearCode() {
+ this._result('')
+ qrcode.clear()
+ },
+ _saveCode() {
+ let that = this;
+ if (this.result != "") {
+ uni.saveImageToPhotosAlbum({
+ filePath: that.result,
+ success: function () {
+ uni.showToast({
+ title: '浜岀淮鐮佷繚瀛樻垚鍔�',
+ icon: 'success',
+ duration: 2000
+ });
+ }
+ });
+ }
+ },
+ _result(res) {
+ this.result = res;
+ this.$emit('result', res)
+ },
+ _empty(v) {
+ let tp = typeof v,
+ rt = false;
+ if (tp == "number" && String(v) == "") {
+ rt = true
+ } else if (tp == "undefined") {
+ rt = true
+ } else if (tp == "object") {
+ if (JSON.stringify(v) == "{}" || JSON.stringify(v) == "[]" || v == null) rt = true
+ } else if (tp == "string") {
+ if (v == "" || v == "undefined" || v == "null" || v == "{}" || v == "[]") rt = true
+ } else if (tp == "function") {
+ rt = false
+ }
+ return rt
+ }
+ },
+ watch: {
+ size: function (n, o) {
+ if (n != o && !this._empty(n)) {
+ this.cSize = n
+ if (!this._empty(this.val)) {
+ setTimeout(() => {
+ this._makeCode()
+ }, 100);
+ }
+ }
+ },
+ val: function (n, o) {
+ if (this.onval) {
+ if (n != o && !this._empty(n)) {
+ setTimeout(() => {
+ this._makeCode()
+ }, 0);
+ }
+ }
+ }
+ },
+ computed: {
+ cpSize() {
+ if(this.unit == "upx"){
+ return uni.upx2px(this.size)
+ }else{
+ return this.size
+ }
+ }
+ },
+ mounted: function () {
+ if (this.loadMake) {
+ if (!this._empty(this.val)) {
+ setTimeout(() => {
+ this._makeCode()
+ }, 0);
+ }
+ }
+ },
+}
+</script>
+<style>
+.geek-qrcode {
+ position: relative;
+}
+.geek-qrcode-canvas {
+ position: fixed;
+ top: -99999upx;
+ left: -99999upx;
+ z-index: -99999;
+}
+</style>
--
Gitblit v1.9.3