Commit bf61c5f4b1a14075edbf4efa5fa4f015137e82be
1 parent
4ee9880a46
Exists in
master
bug 修复
Showing
1 changed file
with
1 additions
and
1 deletions
Show diff stats
src/components/uni-popup/uni-popup-post.vue
1 | <template> | 1 | <template> |
2 | <view class="uni-popup-post"> | 2 | <view class="uni-popup-post"> |
3 | <image | 3 | <image |
4 | class="uni_post_img" | 4 | class="uni_post_img" |
5 | :src="postUrl" | 5 | :src="postUrl" |
6 | /> | 6 | /> |
7 | <view | 7 | <view |
8 | @tap="saveAndClose" | 8 | @tap="saveAndClose" |
9 | class="uni_post_button_box" | 9 | class="uni_post_button_box" |
10 | > | 10 | > |
11 | 保存图片 | 11 | 保存图片 |
12 | </view> | 12 | </view> |
13 | </view> | 13 | </view> |
14 | </template> | 14 | </template> |
15 | 15 | ||
16 | <script> | 16 | <script> |
17 | export default { | 17 | export default { |
18 | name: 'UniPopupPost', | 18 | name: 'UniPopupPost', |
19 | props: { | 19 | props: { |
20 | postUrl: { | 20 | postUrl: { |
21 | type: String, | 21 | type: String, |
22 | default: 'https://api.glass.xiuyetang.com/adv_pic/428_0_7.png', | 22 | default: 'https://api.glass.xiuyetang.com/adv_pic/428_0_7.png', |
23 | }, | 23 | }, |
24 | }, | 24 | }, |
25 | inject: ['popup'], | 25 | inject: ['popup'], |
26 | data() { | 26 | data() { |
27 | return {} | 27 | return {} |
28 | }, | 28 | }, |
29 | created() { | 29 | created() { |
30 | console.log('dada', this) | 30 | console.log('dada', this) |
31 | }, | 31 | }, |
32 | methods: { | 32 | methods: { |
33 | // 保存图片并关闭窗口 | 33 | // 保存图片并关闭窗口 |
34 | saveAndClose() { | 34 | saveAndClose() { |
35 | // 获取用户保存相册权限 | 35 | // 获取用户保存相册权限 |
36 | const scope = 'scope.writePhotosAlbum' | 36 | const scope = 'scope.writePhotosAlbum' |
37 | const that = this | 37 | const that = this |
38 | uni.getSetting({ | 38 | uni.getSetting({ |
39 | success(res) { | 39 | success(res) { |
40 | console.log('获取用户保存相册权限', res) | 40 | console.log('获取用户保存相册权限', res) |
41 | if (!res.authSetting[scope]) { | 41 | if (!res.authSetting[scope]) { |
42 | uni.authorize({ | 42 | uni.authorize({ |
43 | scope, | 43 | scope, |
44 | success() { | 44 | success() { |
45 | console.log('获取用户保存相册权限---->', '授权成功') | 45 | console.log('获取用户保存相册权限---->', '授权成功') |
46 | // 保存到相册 | 46 | // 保存到相册 |
47 | uni.showLoading({ | 47 | uni.showLoading({ |
48 | title: '保存中', | 48 | title: '保存中', |
49 | }) | 49 | }) |
50 | that.saveImage() | 50 | that.saveImage() |
51 | }, | 51 | }, |
52 | fail() { | 52 | fail() { |
53 | console.log('获取用户保存相册权限---->', '授权失败') | 53 | console.log('获取用户保存相册权限---->', '授权失败') |
54 | that.secondGetPhoteAuthor() | 54 | that.secondGetPhoteAuthor() |
55 | }, | 55 | }, |
56 | }) | 56 | }) |
57 | } else { | 57 | } else { |
58 | console.log('拥有授权权限') | 58 | console.log('拥有授权权限') |
59 | // 保存到相册 | 59 | // 保存到相册 |
60 | uni.showLoading({ | 60 | uni.showLoading({ |
61 | title: '保存中', | 61 | title: '保存中', |
62 | }) | 62 | }) |
63 | that.saveImage() | 63 | that.saveImage() |
64 | } | 64 | } |
65 | 65 | ||
66 | that.popup.close() | 66 | that.popup.close() |
67 | }, | 67 | }, |
68 | fail(res) { | 68 | fail(res) { |
69 | console.log('授权失败------>', res) | 69 | console.log('授权失败------>', res) |
70 | uni.showToast({ | 70 | uni.showToast({ |
71 | title: '保存失败', | 71 | title: '保存失败', |
72 | icon: 'none', | 72 | icon: 'none', |
73 | duration: 2000, | 73 | duration: 2000, |
74 | }) | 74 | }) |
75 | }, | 75 | }, |
76 | }) | 76 | }) |
77 | }, | 77 | }, |
78 | // 保存到相册 | 78 | // 保存到相册 |
79 | saveImage() { | 79 | saveImage() { |
80 | const that = this | 80 | const that = this |
81 | uni.getImageInfo({ | 81 | uni.getImageInfo({ |
82 | src: that.postUrl, | 82 | src: that.postUrl, |
83 | success(res) { | 83 | success(res) { |
84 | console.log('图片读取是否可行', res) | 84 | console.log('图片读取是否可行', res) |
85 | uni.saveImageToPhotosAlbum({ | 85 | uni.saveImageToPhotosAlbum({ |
86 | filePath: res.path, | 86 | filePath: res.path, |
87 | success() { | 87 | success() { |
88 | uni.hideLoading() | ||
88 | uni.showToast({ | 89 | uni.showToast({ |
89 | title: '已保存到相册', | 90 | title: '已保存到相册', |
90 | icon: 'none', | 91 | icon: 'none', |
91 | duration: 2000, | 92 | duration: 2000, |
92 | }) | 93 | }) |
93 | uni.hideLoading() | ||
94 | }, | 94 | }, |
95 | fail(err) { | 95 | fail(err) { |
96 | console.log('用户拒绝', err) | 96 | console.log('用户拒绝', err) |
97 | if (err.errMsg === 'saveImageToPhotosAlbum:fail auth deny') { | 97 | if (err.errMsg === 'saveImageToPhotosAlbum:fail auth deny') { |
98 | console.log('当用户拒绝,再次发起授权') | 98 | console.log('当用户拒绝,再次发起授权') |
99 | that.secondGetPhoteAuthor() | 99 | that.secondGetPhoteAuthor() |
100 | } else if (err.errMsg === 'saveImageToPhotosAlbum:fail cancel') { | 100 | } else if (err.errMsg === 'saveImageToPhotosAlbum:fail cancel') { |
101 | uni.showToast({ | 101 | uni.showToast({ |
102 | title: '已取消保存', | 102 | title: '已取消保存', |
103 | icon: 'none', | 103 | icon: 'none', |
104 | duration: 2000, | 104 | duration: 2000, |
105 | }) | 105 | }) |
106 | uni.hideLoading() | 106 | uni.hideLoading() |
107 | } else { | 107 | } else { |
108 | uni.showToast({ | 108 | uni.showToast({ |
109 | title: '请截屏保存分享', | 109 | title: '请截屏保存分享', |
110 | icon: 'none', | 110 | icon: 'none', |
111 | duration: 2000, | 111 | duration: 2000, |
112 | }) | 112 | }) |
113 | uni.hideLoading() | 113 | uni.hideLoading() |
114 | } | 114 | } |
115 | }, | 115 | }, |
116 | }) | 116 | }) |
117 | }, | 117 | }, |
118 | fail(res) { | 118 | fail(res) { |
119 | console.log('授权失败----->', res) | 119 | console.log('授权失败----->', res) |
120 | uni.hideLoading() | 120 | uni.hideLoading() |
121 | uni.showToast({ | 121 | uni.showToast({ |
122 | title: '保存失败', | 122 | title: '保存失败', |
123 | icon: 'none', | 123 | icon: 'none', |
124 | duration: 2000, | 124 | duration: 2000, |
125 | }) | 125 | }) |
126 | }, | 126 | }, |
127 | }) | 127 | }) |
128 | }, | 128 | }, |
129 | // 二次请求授权 | 129 | // 二次请求授权 |
130 | secondGetPhoteAuthor() { | 130 | secondGetPhoteAuthor() { |
131 | const that = this | 131 | const that = this |
132 | uni.showModal({ | 132 | uni.showModal({ |
133 | title: '保存海报', | 133 | title: '保存海报', |
134 | content: '需要您提供保存相册权限', | 134 | content: '需要您提供保存相册权限', |
135 | success: (res) => { | 135 | success: (res) => { |
136 | if (res.confirm) { | 136 | if (res.confirm) { |
137 | uni.openSetting({ | 137 | uni.openSetting({ |
138 | success(settingdata) { | 138 | success(settingdata) { |
139 | console.log('settingdata 二次弹窗获取', settingdata) | 139 | console.log('settingdata 二次弹窗获取', settingdata) |
140 | if (settingdata.authSetting['scope.writePhotosAlbum']) { | 140 | if (settingdata.authSetting['scope.writePhotosAlbum']) { |
141 | console.log('二次弹窗获取---->', '获取 相册 权限成功,给出再次点击图片保存到相册的提示。') | 141 | console.log('二次弹窗获取---->', '获取 相册 权限成功,给出再次点击图片保存到相册的提示。') |
142 | uni.showLoading({ | 142 | uni.showLoading({ |
143 | title: '保存中', | 143 | title: '保存中', |
144 | }) | 144 | }) |
145 | that.saveImage() | 145 | that.saveImage() |
146 | } else { | 146 | } else { |
147 | uni.showToast({ | 147 | uni.showToast({ |
148 | title: '保存失败', | 148 | title: '保存失败', |
149 | icon: 'none', | 149 | icon: 'none', |
150 | duration: 2000, | 150 | duration: 2000, |
151 | }) | 151 | }) |
152 | console.log('二次弹窗获取', '获取 相册 权限失败,给出不给权限就无法正常使用的提示') | 152 | console.log('二次弹窗获取', '获取 相册 权限失败,给出不给权限就无法正常使用的提示') |
153 | } | 153 | } |
154 | }, | 154 | }, |
155 | }) | 155 | }) |
156 | } else { | 156 | } else { |
157 | uni.showToast({ | 157 | uni.showToast({ |
158 | title: '保存失败', | 158 | title: '保存失败', |
159 | icon: 'none', | 159 | icon: 'none', |
160 | duration: 2000, | 160 | duration: 2000, |
161 | }) | 161 | }) |
162 | } | 162 | } |
163 | }, | 163 | }, |
164 | fail(err) { | 164 | fail(err) { |
165 | uni.showToast({ | 165 | uni.showToast({ |
166 | title: '保存失败', | 166 | title: '保存失败', |
167 | icon: 'none', | 167 | icon: 'none', |
168 | duration: 2000, | 168 | duration: 2000, |
169 | }) | 169 | }) |
170 | console.log('再次失败', err) | 170 | console.log('再次失败', err) |
171 | }, | 171 | }, |
172 | }) | 172 | }) |
173 | }, | 173 | }, |
174 | }, | 174 | }, |
175 | } | 175 | } |
176 | </script> | 176 | </script> |
177 | <style lang="scss" scoped> | 177 | <style lang="scss" scoped> |
178 | .uni-popup-post { | 178 | .uni-popup-post { |
179 | border-radius: 8px 8px 0px 0px; | 179 | border-radius: 8px 8px 0px 0px; |
180 | display: flex; | 180 | display: flex; |
181 | flex-direction: column; | 181 | flex-direction: column; |
182 | justify-content: space-between; | 182 | justify-content: space-between; |
183 | align-items: center; | 183 | align-items: center; |
184 | } | 184 | } |
185 | 185 | ||
186 | .uni_post_img { | 186 | .uni_post_img { |
187 | width: 690rpx; | 187 | width: 690rpx; |
188 | height: 466.667px; | 188 | height: 466.667px; |
189 | margin-top: -180rpx; | 189 | margin-top: -180rpx; |
190 | } | 190 | } |
191 | 191 | ||
192 | .uni_post_button_box { | 192 | .uni_post_button_box { |
193 | height: 112rpx; | 193 | height: 112rpx; |
194 | line-height: 112rpx; | 194 | line-height: 112rpx; |
195 | background-color: #ff6b4a; | 195 | background-color: #ff6b4a; |
196 | border-radius: 4px; | 196 | border-radius: 4px; |
197 | width: 350px; | 197 | width: 350px; |
198 | color: #fff; | 198 | color: #fff; |
199 | text-align: center; | 199 | text-align: center; |
200 | margin-top: 44rpx; | 200 | margin-top: 44rpx; |
201 | font-family: PingFangSC-Medium; | 201 | font-family: PingFangSC-Medium; |
202 | font-size: 14px; | 202 | font-size: 14px; |
203 | color: #ffffff; | 203 | color: #ffffff; |
204 | letter-spacing: -0.26px; | 204 | letter-spacing: -0.26px; |
205 | text-align: center; | 205 | text-align: center; |
206 | } | 206 | } |
207 | </style> | 207 | </style> |