uniapp实现微信小程序隐私协议组件封装

简介: uniapp实现微信小程序隐私协议组件封装

uniapp实现微信小程序隐私协议组件封装

<template>
  <view class="diygw-modal basic" v-if="showPrivacy" :class="showPrivacy?'show':''" style="z-index: 1000000">
    <view class="diygw-dialog diygw-dialog-modal basis-lg">
      <view class="justify-end diygw-bar">
        <view class="content"> {{title}} </view>
      </view>
      <view>
        <view class="flex diygw-dialog-content flex-direction-column privacy-content">
          <view class="diygw-col-24"> {{contentstart}}<text :style="{color:agreebg}"  @tap="handleOpenPrivacyContract">{{privacy}}</text>。{{contentend}} </view>
          <view class="flex diygw-col-24">
            <button id="agree-btn" :style="{background:agreebg,color:agreecolor}" open-type="agreePrivacyAuthorization" @agreeprivacyauthorization="handleAgree" class="diygw-btn  radius flex-sub margin-xs">同意并继续</button>
          </view>
          <view class="flex diygw-col-24">
            <button id="disagree-btn" :style="{background:disagreebg,color:disagreecolor}" class="diygw-btn  radius flex-sub margin-xs" @tap="handleDisagree">不同意</button>
          </view>
        </view>
      </view>
    </view> 
  </view> 
</template>
 
<script>
  export default {
    props: {
      title: {
        type: String,
        default: '用户隐私保护提示'
      },
      contentstart:{
        type: String,
        default:'亲爱的用户,感谢您信任并使用本小程序。请您在点击同意之前仔细阅读并充分理解',
      },
      privacy:{
        type: String,
        default:'《用户隐私保护指引》',
      },
      contentend:{
        type: String,
        default:'当点击同意并继续时,即表示您已理解并同意该条款内容,该条款将对您产生法律约束力;如您不同意,将无法继续使用小程序相关功能。',
      },
      agreebg:{
        type: String,
        default:'#07c160',
      },
      agreecolor:{
        type: String,
        default:'#fff',
      },
      disagreebg:{
        type: String,
        default:'#aaaaaa',
      },
      disagreecolor:{
        type: String,
        default:'#fff',
      },
      isexit:{
        type:Boolean,
        default:true
      },
    },
    data() {
      return {
        showPrivacy: false,
        resolvePrivacyAuthorization: null,
        privacyResolves: new Set()
      }
    },
    mounted() {
      this.init()
    },
    methods: {
      // 监听何时需要提示用户阅读隐私政策
      init() {
        let thiz = this;
        // #ifdef MP-WEIXIN
        if (wx.onNeedPrivacyAuthorization) {
          wx.requirePrivacyAuthorize({
            success: (e) => {
              // 用户同意授权
              // 继续小程序逻辑
              console.log(e)
              // 用户同意授权
              // 继续小程序逻辑
            },
            fail: (e) => {
              console.log(e)
            }, // 用户拒绝授权
            complete: () => {}
          })
          wx.onNeedPrivacyAuthorization((resolve) => {
            thiz.resolvePrivacyAuthorization = resolve
            thiz.openPrivacy()
          })
        }
        // #endif
      },
      //打开隐私协议
      openPrivacyContract() {
        wx.openPrivacyContract({
          success(res) {
            console.log('打开隐私协议', res);
          },
          fail(err) {
            console.error('打开隐私协议失败', err)
          }
        });
      },
      // 不同意
      handleDisagree() {
        this.resolvePrivacyAuthorization({
            event: 'disagree',
            buttonId: 'disagree-btn'
        });
        //关闭弹窗
        this.disopenPrivacy()
        if(this.isexit){
          //退出小程序
          wx.exitMiniProgram();
        }
        
      },
      // 同意并继续
      handleAgree() {
        this.resolvePrivacyAuthorization({
            event: 'agree',
            buttonId: 'agree-btn'
        });
        //关闭弹窗
        this.disopenPrivacy()
      },
      //打开弹窗
      openPrivacy() {
        if (this.showPrivacy === false) {
          this.showPrivacy = true
        }
      },
      //关闭弹窗
      disopenPrivacy() {
        if (this.showPrivacy === true) {
          this.showPrivacy = false
        }
      },
    }
  }
</script>
 
<style>
  .privacy-content{
    padding:10px;
    line-height: 1.5;
    font-size: 28rpx;
  }
</style>

隐私协议封装组件后快速调用。

<diy-privacy></diy-privacy>


目录
相关文章
|
3天前
|
移动开发 小程序 数据可视化
一招学会DIY官网可视化设计支持导出微擎、UNIAPP、H5、微信小程序源码
一招学会DIY官网可视化设计支持导出微擎、UNIAPP、H5、微信小程序源码
17 2
|
2月前
|
移动开发 小程序 前端开发
|
2月前
|
小程序 前端开发
|
2月前
|
存储 小程序 JavaScript
|
2月前
|
小程序 前端开发 Java
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
JavaDog Chat v1.0.0 是一款基于 SpringBoot、MybatisPlus 和 uniapp 的简易聊天软件,兼容 H5、小程序和 APP,提供丰富的注释和简洁代码,适合初学者。主要功能包括登录注册、消息发送、好友管理及群组交流。
75 0
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
|
2月前
|
小程序 前端开发 JavaScript
【项目实战】SpringBoot+uniapp+uview2打造一个企业黑红名单吐槽小程序
【避坑宝】是一款企业黑红名单吐槽小程序,旨在帮助打工人群体辨别企业优劣。该平台采用SpringBoot+MybatisPlus+uniapp+uview2等技术栈构建,具备丰富的注释与简洁的代码结构,非常适合实战练习与学习。通过小程序搜索“避坑宝”即可体验。
74 0
【项目实战】SpringBoot+uniapp+uview2打造一个企业黑红名单吐槽小程序
|
2月前
|
小程序 前端开发 安全
|
3月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的汉服交易小程序的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的汉服交易小程序的详细设计和实现(源码+lw+部署文档+讲解等)
47 7
|
3月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的宠物医院微信小程序的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的宠物医院微信小程序的详细设计和实现(源码+lw+部署文档+讲解等)
66 7
|
3月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的美食推荐小程序的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的美食推荐小程序的详细设计和实现(源码+lw+部署文档+讲解等)