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>


目录
相关文章
|
27天前
|
人工智能 小程序 搜索推荐
uni app下开发AI运动小程序解决方案
本文介绍了在小程序中实现AI运动识别的解决方案。该方案依托于UNI平台,通过高效便捷的插件形式,实现包括相机抽帧控制、人体识别、姿态识别等在内的多项功能,无需依赖后台服务器,大幅提高识别效率和用户体验。方案内置多种运动模式,支持自定义扩展,适用于AI健身、云上赛事、AI体测等多场景,适合新开发和存量改造项目。
|
1月前
|
小程序 前端开发 JavaScript
在线课堂+工具组件小程序uniapp移动端源码
在线课堂+工具组件小程序uniapp移动端源码
33 0
在线课堂+工具组件小程序uniapp移动端源码
|
2月前
|
移动开发 小程序 数据可视化
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
340 3
|
2月前
|
小程序 数据可视化 API
低代码可视化-uniapp商城首页小程序-代码生成器
低代码可视化-uniapp商城首页小程序-代码生成器
33 0
|
2月前
|
存储 移动开发 小程序
uniapp富文本editor输入二次扩展兼容微信小程序
uniapp富文本editor输入二次扩展兼容微信小程序
90 0
|
2月前
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
680 7
|
2月前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
742 1
|
2月前
|
小程序 前端开发 测试技术
微信小程序的开发完整流程是什么?
微信小程序的开发完整流程是什么?
146 7
ly~
|
3月前
|
存储 供应链 小程序
除了微信小程序,PHP 还可以用于开发哪些类型的小程序?
除了微信小程序,PHP 还可用于开发多种类型的小程序,包括支付宝小程序、百度智能小程序、抖音小程序、企业内部小程序及行业特定小程序。在电商、生活服务、资讯、工具、娱乐、营销等领域,PHP 能有效管理商品信息、订单处理、支付接口、内容抓取、复杂计算、游戏数据、活动规则等多种业务。同时,在企业内部,PHP 可提升工作效率,实现审批流程、文件共享、生产计划等功能;在医疗和教育等行业,PHP 能管理患者信息、在线问诊、课程资源、成绩查询等重要数据。
ly~
86 6
|
2月前
|
缓存 小程序 索引
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
244 1
下一篇
DataWorks