|                                                                                                                                                                                                            |  | <template>  <view class="share-page">    <!-- <uv-status-bar></uv-status-bar> -->        <!-- 主要内容区域 -->    <view class="content">      <uv-loading-icon text="生成中,请耐心等待" textSize="40rpx" size="60rpx" v-if="isLoading"></uv-loading-icon>      <!-- 中间图片 -->      <view class="image-container" v-else>        <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: '',      isLoading: false,    }  },  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() {      this.isLoading = true      uni.getImageInfo({        src: `${this.$config.baseURL}/promotion/qrCode?token=${uni.getStorageSync('token')}`		// #ifdef H5
		+ '&type=official'		// #endif
        ,        success: (image) => {                    this.Qrcode = image.path;          this.$store.commit('setQrcode', this.Qrcode)          this.isLoading = false        },        fail: (err) => {          console.error('获取二维码失败:', err);          this.isLoading = false        }      });    }  },  onLoad() {    if (this.$store.state.Qrcode){      this.Qrcode = this.$store.state.Qrcode    }else {      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>
 |