diff --git a/components/wxAuthLogin/WxAuthLogin.vue b/components/wxAuthLogin/WxAuthLogin.vue index a251881..ff748a3 100644 --- a/components/wxAuthLogin/WxAuthLogin.vue +++ b/components/wxAuthLogin/WxAuthLogin.vue @@ -103,12 +103,19 @@ - + + + + 我已阅读并同意 + + 《隐私协议》 + + @@ -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 diff --git a/packageA/pages/agreement/privacy.vue b/packageA/pages/agreement/privacy.vue new file mode 100644 index 0000000..fcf744f --- /dev/null +++ b/packageA/pages/agreement/privacy.vue @@ -0,0 +1,248 @@ + + + + + \ No newline at end of file diff --git a/packageA/pages/agreement/user.vue b/packageA/pages/agreement/user.vue new file mode 100644 index 0000000..7f5e211 --- /dev/null +++ b/packageA/pages/agreement/user.vue @@ -0,0 +1,322 @@ + + + + + diff --git a/pages.json b/pages.json index 58fc301..ceeaa6a 100644 --- a/pages.json +++ b/pages.json @@ -319,6 +319,18 @@ "navigationBarTitleText": "取消投递", "navigationBarBackgroundColor": "#FFFFFF" } + }, + { + "path": "pages/agreement/user", + "style": { + "navigationBarTitleText": "隐私协议" + } + }, + { + "path": "pages/agreement/privacy", + "style": { + "navigationBarTitleText": "隐私政策" + } } ] }, diff --git a/pages/chat/chat.vue b/pages/chat/chat.vue index 1c42cab..56adf5c 100644 --- a/pages/chat/chat.vue +++ b/pages/chat/chat.vue @@ -60,8 +60,8 @@
- {{ config.appInfo.areaName }}岗位推荐 - + +