quanwei
2025-11-21 1db9a4130699636cabe7e0c9f7f15d004aadada0
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
<template>
    <view class="qrcode">
        <image :src="qrcode_url" mode="widthFix"></image>
        <view class="btns-wrap">
            <!-- #ifdef MP || APP-PLUS -->
            <button class="btn-red" type="default" @click="savePosterImg">保存图片</button>
            <!-- #endif  -->
            <!-- #ifdef H5 -->
            <view class="f34 tc ww100" type="default">长按保存图片</view>
            <!-- #endif -->
        </view>
    </view>
</template>
 
<script>
    export default {
        data() {
            return {
                qrcode_url: ''
            }
        },
        mounted() {
            /*获取数据*/
            this.getData();
        },
        methods: {
 
            /*获取数据*/
            getData() {
                let self = this;
                uni.showLoading({
                    title: '加载中',
                });
                let source = self.getPlatform();
                self._get('plus.agent.qrcode/poster', {
                    source: source
                }, function(data) {
                    uni.hideLoading();
                    self.qrcode_url = data.data.qrcode;
                });
            },
            /*保存图片*/
            savePosterImg() {
                let self = this;
                uni.showLoading({
                    title: '加载中'
                });
                // 下载海报图片
                uni.downloadFile({
                    url: self.qrcode_url,
                    success(res) {
                        uni.hideLoading();
                        // 图片保存到本地
                        uni.saveImageToPhotosAlbum({
                            filePath: res.tempFilePath,
                            success(data) {
                                uni.showToast({
                                    title: '保存成功',
                                    icon: 'success',
                                    duration: 2000
                                });
                                // 关闭商品海报
                                self.isCreatedImg = false;
                            },
                            fail(err) {
                                console.log(err.errMsg);
                                if (err.errMsg === 'saveImageToPhotosAlbum:fail auth deny') {
                                    uni.showToast({
                                        title: '请允许访问相册后重试',
                                        icon: 'none',
                                        duration: 1000
                                    });
                                    setTimeout(() => {
                                        uni.openSetting();
                                    }, 1000);
                                }
                            },
                            complete(res) {
                                console.log('complete');
                            }
                        });
                    }
                });
            }
        }
    }
</script>
 
<style>
    .qrcode{
        
    }
    .qrcode image {
        width: 100%;
    }
    .btns-wrap {
        position: fixed;
        height: 88rpx;
        right: 0;
        bottom: 0;
        left: 0;
        display: flex;
        z-index: 10;
    }
.btns-wrap .btn-red{
        width: 100%;
        height: 88rpx;
        line-height: 88rpx;
        border-radius: 0;
    }
</style>