hookehuyr

feat(profile): 添加隐私政策同意弹框组件及逻辑

新增 PrivacyAgreementModal 组件用于展示隐私政策和服务协议
在个人资料页添加隐私政策弹框逻辑,未完善资料的用户需先同意协议
......@@ -15,6 +15,7 @@ declare module 'vue' {
NavBar: typeof import('./src/components/navBar.vue')['default']
NutActionSheet: typeof import('@nutui/nutui-taro')['ActionSheet']
NutButton: typeof import('@nutui/nutui-taro')['Button']
NutCheckbox: typeof import('@nutui/nutui-taro')['Checkbox']
NutCol: typeof import('@nutui/nutui-taro')['Col']
NutConfigProvider: typeof import('@nutui/nutui-taro')['ConfigProvider']
NutDatePicker: typeof import('@nutui/nutui-taro')['DatePicker']
......@@ -42,6 +43,7 @@ declare module 'vue' {
PayCard: typeof import('./src/components/payCard.vue')['default']
Picker: typeof import('./src/components/time-picker-data/picker.vue')['default']
PosterBuilder: typeof import('./src/components/PosterBuilder/index.vue')['default']
PrivacyAgreementModal: typeof import('./src/components/PrivacyAgreementModal.vue')['default']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
SearchPopup: typeof import('./src/components/SearchPopup.vue')['default']
......
This diff is collapsed. Click to expand it.
......@@ -74,16 +74,23 @@
<!-- 自定义TabBar -->
<TabBar />
<!-- 隐私政策同意弹框 -->
<PrivacyAgreementModal
v-model:visible="showPrivacyModal"
@confirm="onPrivacyConfirm"
@cancel="onPrivacyCancel"
/>
</view>
</template>
<script setup>
import { computed } from 'vue'
import { computed, ref } from 'vue'
import { Heart, Clock, Notice, Cart, Message, Tips, Right, StarN } from '@nutui/icons-vue-taro'
import Taro, { useDidShow } from '@tarojs/taro'
import TabBar from '@/components/TabBar.vue'
import PrivacyAgreementModal from '@/components/PrivacyAgreementModal.vue'
import { useUserStore } from '@/stores/user'
// import { checkPermission, PERMISSION_TYPES } from '@/utils/permission'
// 默认头像
const defaultAvatar = 'https://cdn.ipadbiz.cn/mlaj/images/icon_1.jpeg'
......@@ -94,6 +101,9 @@ const userStore = useUserStore()
// 用户信息计算属性
const userInfo = computed(() => userStore.userInfo)
// 隐私政策弹框状态
const showPrivacyModal = ref(false)
useDidShow(async () => {
await userStore.fetchUserInfo()
})
......@@ -101,10 +111,36 @@ useDidShow(async () => {
/**
* 编辑个人资料
*/
const onEditProfile = () => {
const onEditProfile = async () => {
// 检查用户是否已完善资料
const hasCompleteProfile = userStore.hasCompleteProfile
if (hasCompleteProfile) {
// 已完善资料,直接进入编辑页面
Taro.navigateTo({
url: '/pages/editProfile/index'
})
} else {
// 未完善资料,显示隐私政策同意弹框
showPrivacyModal.value = true
}
}
/**
* 隐私政策确认
*/
const onPrivacyConfirm = () => {
// 用户同意隐私政策后,跳转到编辑资料页面
Taro.navigateTo({
url: '/pages/editProfile/index'
})
}
/**
* 隐私政策取消
*/
const onPrivacyCancel = () => {
// 用户取消,不做任何操作
}
/**
......