用户隐私协议开发

This commit is contained in:
FengHui
2026-02-04 13:17:01 +08:00
parent ece3897927
commit c1f7d510d7
5 changed files with 641 additions and 27 deletions

View File

@@ -103,12 +103,19 @@
</view>
<!-- 用户协议 -->
<!-- <view class="auth-agreement">
<text>登录即表示同意</text>
<text class="link" @click="openAgreement('user')">用户协议</text>
<text></text>
<text class="link" @click="openAgreement('privacy')">隐私政策</text>
</view> -->
<view class="auth-agreement">
<view class="agreement-checkbox" @click="toggleAgreement">
<uni-icons
:type="agreedToAgreement ? 'checkbox-filled' : 'circle'"
size="20"
:color="agreedToAgreement ? '#256BFA' : '#999'"
></uni-icons>
<text class="agreement-text">我已阅读并同意</text>
</view>
<text class="link" @click="openAgreement('user')">隐私协议</text>
<!-- <text></text>
<text class="link" @click="openAgreement('privacy')">隐私政策</text> -->
</view>
</view>
</view>
</uni-popup>
@@ -128,6 +135,7 @@ const popup = ref(null);
const userType = ref(null); // 用户角色1-求职者0-企业
const orgType = ref(null); // 机构类型
const orgTypeOptions = ref([]); // 机构类型选项
const agreedToAgreement = ref(false); // 是否同意用户协议
const emit = defineEmits(['success', 'cancel']);
// 获取机构类型字典
@@ -159,6 +167,10 @@ const open = () => {
popup.value?.open();
userType.value = null; // 重置角色选择
orgType.value = null; // 重置机构类型选择
// 检查是否已同意协议
const agreed = uni.getStorageSync('agreedToUserAgreement');
agreedToAgreement.value = !!agreed;
};
// 关闭弹窗
@@ -191,26 +203,25 @@ const validateRole = () => {
return false;
}
// 验证是否同意用户协议
if (!agreedToAgreement.value) {
$api.msg('请先阅读并同意用户协议');
return false;
}
return true;
};
const getPhoneNumber = (e) => {
console.log('获取手机号:', e);
console.log('userType.value', userType.value)
// 验证角色是否已选择
// 验证角色、机构类型和用户协议
if (!validateRole()) {
return;
}
if (e.detail.errMsg === 'getPhoneNumber:ok') {
if (userType.value === null) {
$api.msg('请先选择您的角色');
return true;
}
// 验证机构类型是否已选择(仅单位角色)
if (userType.value === 0 && orgType.value === null) {
$api.msg('请选择机构类型');
return true;
}
uni.login({
provider: 'weixin',
success: (loginRes) => {
@@ -363,6 +374,11 @@ const wxLogin = () => {
// 测试账号登录(仅开发环境)
const testLogin = () => {
// 验证角色、机构类型和用户协议
if (!validateRole()) {
return;
}
uni.showLoading({ title: '登录中...' });
const params = {
@@ -409,18 +425,21 @@ const testLogin = () => {
});
};
// 切换协议同意状态
const toggleAgreement = () => {
agreedToAgreement.value = !agreedToAgreement.value;
};
// 打开用户协议
const openAgreement = (type) => {
const urls = {
user: '/pages/agreement/user',
privacy: '/pages/agreement/privacy'
user: '/packageA/pages/agreement/user',
privacy: '/packageA/pages/agreement/privacy'
};
if (urls[type]) {
uni.navigateTo({
url: urls[type]
});
}
uni.navigateTo({
url: urls[type]
});
};
// 暴露方法供父组件调用
@@ -596,10 +615,23 @@ defineExpose({
margin-left: 12rpx
.auth-agreement
text-align: center
display: flex
align-items: center
justify-content: center
font-size: 24rpx
color: #999999
line-height: 1.6
flex-wrap: wrap
gap: 8rpx
.agreement-checkbox
display: flex
align-items: center
cursor: pointer
.agreement-text
margin-left: 8rpx
color: #666666
.link
color: #256BFA