gaoluyang
3 天以前 5f5486731922637d9522b41dc54d932fdd29ebc4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<template xlang="wxml">
    <view class="container">
        <view class="qrimg">
            <view class="qrimg-i">
                <geek-qrcode v-if="ifShow" cid="qrcode1" ref="qrcode" :val="val" :size="size" :unit="unit"
                    :background="background" :foreground="foreground" :pdground="pdground" :icon="icon" :iconSize="iconsize"
                    :lv="lv" :onval="onval" :loadMake="loadMake" :usingComponents="true" @result="qrR" />
            </view>
            <view class="qrimg-i">
                <geek-qrcode v-if="ifShow" cid="qrcode2" ref="qrcode2" val="第二个二维码" :size="size" :onval="onval"
                    :loadMake="loadMake" :usingComponents="true" @result="qrR" />
            </view>
        </view>
        <view class="uni-padding-wrap">
            <view class="uni-title">请输入要生成的二维码内容</view>
        </view>
        <view class="uni-list">
            <input class="uni-input" placeholder="请输入要生成的二维码内容" v-model="val" />
        </view>
        <view class="uni-padding-wrap uni-common-mt">
            <view class="uni-title">设置二维码大小</view>
        </view>
        <view class="body-view">
            <slider :value="size" @change="sliderchange" min="50" max="500" show-value />
        </view>
        <view class="uni-padding-wrap">
            <view class="btns">
                <button type="primary" @tap="selectIcon">选择二维码图标</button>
                <button type="primary" @tap="creatQrcode">生成二维码</button>
                <button type="primary" @tap="saveQrcode">保存到图库</button>
                <button type="warn" @tap="clearQrcode">清除二维码</button>
                <button type="warn" @tap="ifQrcode">显示隐藏二维码</button>
            </view>
        </view>
    </view>
</template>
<script>
export default {
    data() {
        return {
            ifShow: true,
            val: '二维码', // 要生成的二维码值
            size: 200, // 二维码大小
            unit: 'upx', // 单位
            background: '#b4e9e2', // 背景色
            foreground: '#309286', // 前景色
            pdground: '#32dbc6', // 角标色
            icon: '', // 二维码图标
            iconsize: 40, // 二维码图标大小
            lv: 3, // 二维码容错级别 , 一般不用设置,默认就行
            onval: false, // val值变化时自动重新生成二维码
            loadMake: true, // 组件加载完成后自动生成二维码
            src: '' // 二维码生成后的图片地址或base64
        }
    },
    methods: {
        sliderchange(e) {
            this.size = e.detail.value
        },
        creatQrcode() {
            this.$refs.qrcode._makeCode()
        },
        saveQrcode() {
            this.$refs.qrcode._saveCode()
        },
        qrR(res) {
            this.src = res
        },
        clearQrcode() {
            this.$refs.qrcode._clearCode()
            this.val = ''
        },
        ifQrcode() {
            this.ifShow = !this.ifShow
        },
        selectIcon() {
            let that = this
            uni.chooseImage({
                count: 1, //默认9
                sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
                sourceType: ['album'], //从相册选择
                success: function (res) {
                    that.icon = res.tempFilePaths[0]
                    setTimeout(() => {
                        that.creatQrcode()
                    }, 100);
                    // console.log(res.tempFilePaths);
                }
            });
        }
    }
}
</script>
 
<style>
/* @import "../../../common/icon.css"; */
.container {
    display: flex;
    flex-direction: column;
    width: 100%;
}
 
.qrimg {
    display: flex;
    justify-content: center;
}
 
.qrimg-i {
    margin-right: 10px;
}
 
slider {
    width: 100%;
}
 
input {
    width: 100%;
    margin-bottom: 20upx;
}
 
.btns {
    display: flex;
    flex-direction: column;
    width: 100%;
}
 
button {
    width: 100%;
    margin-top: 10upx;
}</style>