|
|
- <template>
- <view class="share-page">
- <!-- <uv-status-bar></uv-status-bar> -->
-
- <!-- 主要内容区域 -->
- <view class="content">
- <!-- 中间图片 -->
- <view class="image-container">
- <image
- class="share-image"
- :src="Qrcode"
- mode="aspectFit"
- ></image>
- </view>
- </view>
-
- <!-- 底部固定按钮 -->
- <view class="bottom-button-container">
- <uv-button :custom-style="{
- height: '82rpx',
- borderRadius: '198rpx',
- background: '#06DADC',
- border: '2rpx solid #06DADC',
- lineHeight: '82rpx',
- fontSize: '36rpx'
- }" type="primary" @click="save">保存到相册</uv-button>
- <uv-safe-bottom></uv-safe-bottom>
- </view>
- </view>
- </template>
-
- <script>
- export default {
- data() {
- return {
- Qrcode: '',
- }
- },
- methods: {
- handleShare() {
- // 分享逻辑
- uni.showToast({
- title: '分享功能',
- icon: 'none'
- })
- },
- async save() {
- try {
- // 检查相册权限
- const authResult = await this.checkPhotoAlbumAuth();
-
- if (authResult.authSetting['scope.writePhotosAlbum'] === true) {
- // 已有权限,直接保存
- this.saveToAlbum();
- } else if (authResult.authSetting['scope.writePhotosAlbum'] === false) {
- // 权限被拒绝,引导用户到设置页面
- this.showAuthGuide();
- } else {
- // 未授权,请求权限
- this.requestPhotoAlbumAuth();
- }
- } catch (error) {
- console.error('权限检查失败:', error);
- // 如果权限检查失败,直接尝试保存(兼容处理)
- this.saveToAlbum();
- }
- },
-
- // 检查相册权限
- checkPhotoAlbumAuth() {
- return new Promise((resolve, reject) => {
- uni.getSetting({
- success: (res) => {
- resolve(res);
- },
- fail: (err) => {
- reject(err);
- }
- });
- });
- },
-
- // 请求相册权限
- requestPhotoAlbumAuth() {
- uni.authorize({
- scope: 'scope.writePhotosAlbum',
- success: () => {
- // 权限请求成功,保存图片
- this.saveToAlbum();
- },
- fail: () => {
- // 权限请求被拒绝,引导用户到设置页面
- this.showAuthGuide();
- }
- });
- },
-
- // 显示权限引导
- showAuthGuide() {
- uni.showModal({
- title: '需要相册权限',
- content: '保存图片需要访问您的相册权限,请在设置中开启相册权限后重试',
- confirmText: '去设置',
- cancelText: '取消',
- success: (res) => {
- if (res.confirm) {
- // 打开设置页面
- uni.openSetting({
- success: (settingRes) => {
- if (settingRes.authSetting['scope.writePhotosAlbum']) {
- // 用户在设置页面开启了权限,再次调用保存
- this.saveToAlbum();
- } else {
- uni.showToast({
- title: '未开启相册权限',
- icon: 'none'
- });
- }
- }
- });
- }
- }
- });
- },
-
- // 保存图片到相册
- saveToAlbum() {
- if (!this.Qrcode) {
- uni.showToast({
- title: '图片还未加载完成',
- icon: 'none'
- });
- return;
- }
-
- uni.saveImageToPhotosAlbum({
- filePath: this.Qrcode,
- success: (res) => {
- uni.showToast({
- title: '保存成功',
- icon: 'success'
- });
- },
- fail: (err) => {
- console.error('保存失败:', err);
- if (err.errMsg.includes('auth')) {
- // 如果是权限问题,再次引导用户
- this.showAuthGuide();
- } else {
- uni.showToast({
- title: '保存失败,请重试',
- icon: 'none'
- });
- }
- }
- });
- },
- async getQrcode() {
- // const res = await this.$api.promotion.qrCode()
- // if (res.code === 200) {
- uni.getImageInfo({
- src: `${this.$config.baseURL}/promotion/qrCode?token=${uni.getStorageSync('token')}`,
- success: (image) => {
- console.log(image.width);
- console.log(image.path);
- this.Qrcode = image.path;
- console.log(image.height);
- }
- });
- // }
- }
- },
- onShow() {
- this.getQrcode()
- },
-
- }
- </script>
-
- <style lang="scss" scoped>
- .share-page {
- min-height: 100vh;
- background-color: #f5f5f5;
- display: flex;
- flex-direction: column;
- }
-
- .content {
- height: 100vh;
- flex: 1;
- padding-bottom: 200rpx;
- display: flex;
- align-items: center;
- justify-content: center;
-
- .image-container {
- // background: red;
- display: flex;
- // height: 100%;
- justify-content: center;
- align-items: center;
-
- .share-image {
- height: 90vh;
- width: 670rpx;
- border-radius: 16rpx;
- }
- }
- }
-
- // 底部固定按钮
- .bottom-button-container {
- position: fixed;
- bottom: 0;
- left: 0;
- right: 0;
- padding: 30rpx 40rpx;
- background: rgba(255, 255, 255, 0.95);
- border-top: 1px solid #F1F1F1;
- }
- </style>
|