更新记录

1.0.0(2025-08-27) 下载此版本

初版


平台兼容性

云端兼容性

阿里云 腾讯云 支付宝云

uni-app(4.07)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 快应用-华为 快应用-联盟

x-protocol-confirm 组件使用说明

概述

x-protocol-confirm 是一个用于显示用户协议和隐私政策确认弹窗的组件。

Props 属性

属性名 类型 默认值 说明
modelValue Boolean false 弹窗显示状态,支持 v-model 双向绑定 vue2 :model-value.sync
width String '600rpx' 弹窗宽度
height String '' 弹窗高度(为空时自适应内容高度)
radius String '24rpx' 弹窗圆角大小
padding String '32rpx' 弹窗内边距
bgColor String '#fff' 弹窗背景颜色
customStyle Object {} 自定义样式对象
safeArea Boolean true 是否启用安全区域适配

Events 事件

事件名 参数 说明
update:modelValue Boolean 弹窗显示状态变化时触发
accept Event 点击"同意"按钮时触发
reject Event 点击"拒绝"按钮时触发
user-agreement - 点击"用户协议"链接时触发
privacy-policy - 点击"隐私政策"链接时触发

Slots 插槽

插槽名 说明
default 自定义弹窗内容,默认显示协议确认文本

使用自定义插槽

<x-protocol-confirm v-model="showProtocol">
  <view class="custom-content">
    <text>这里是自定义的协议内容</text>
    <text>可以根据需要修改文案</text>
  </view>
</x-protocol-confirm>

样式自定义

通过 Props 自定义

<x-protocol-confirm
  v-model="showProtocol"
  width="700rpx"
  height="500rpx"
  radius="16rpx"
  padding="40rpx"
  bg-color="#f8f9fa"
  :custom-style="{ boxShadow: '0 10rpx 30rpx rgba(0,0,0,0.15)' }"
/>

通过 CSS 覆盖样式

// 修改按钮样式
.x-protocol-confirm .btn .accept {
  background: linear-gradient(135deg, #ff6b6b, #ff8e8e);
}

.x-protocol-confirm .btn .reject {
  background: #e9ecef;
  color: #495057;
}

完整示例

<template>
    <view class="page">
        <button @click="showProtocol = true">显示协议确认</button>

        <x-protocol-confirm v-model="showProtocol" :custom-style="customStyle" @accept="handleAccept" @reject="handleReject" @user-agreement="viewUserAgreement" @privacy-policy="viewPrivacyPolicy">
            <!-- 可选:使用自定义内容 -->
            <!-- <view class="custom-protocol">
                <text class="title-text">欢迎使用我们的服务</text>
                <text class="content-text">
                    请仔细阅读并同意我们的
                    <text class="link" @click="viewUserAgreement">用户协议</text>
                    和
                    <text class="link" @click="viewPrivacyPolicy">隐私政策</text>
                </text>
            </view> -->
        </x-protocol-confirm>
    </view>
</template>

<script>
    export default {
        data() {
            return {
                showProtocol: false,
                customStyle: {
                    boxShadow: '0 16rpx 48rpx rgba(0, 0, 0, 0.15)'
                }
            }
        },
        methods: {
            handleAccept() {
                // 用户同意协议后的处理逻辑
                uni.setStorageSync('protocolAccepted', true)
                uni.showToast({
                    title: '感谢您的同意',
                    icon: 'success'
                })
            },

            handleReject() {
                // 用户拒绝协议后的处理逻辑
                uni.showToast({
                    title: '您已拒绝服务协议',
                    icon: 'none'
                })
            },

            viewUserAgreement() {
                // 跳转到用户协议页面
                uni.navigateTo({
                    url: '/pages/legal/user-agreement'
                })
            },

            viewPrivacyPolicy() {
                // 跳转到隐私政策页面
                uni.navigateTo({
                    url: '/pages/legal/privacy-policy'
                })
            }
        }
    }
</script>

注意事项

  1. 链接点击事件需要在父组件中处理具体的跳转逻辑

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。