更新记录
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>
注意事项
- 链接点击事件需要在父组件中处理具体的跳转逻辑