<template>
|
|
<view class="user-container">
|
|
<!-- 用户信息区域 -->
|
|
<view class="user-info-section">
|
|
|
|
<view class="page-title">我的</view>
|
|
<view class="user-info">
|
|
<view class="user-avatar" @click="goLogin">
|
|
<image :src="isLogin ? userInfo.avatar === 'undefined' ? displayInfo.avatar : userInfo.avatar : displayInfo.avatar" mode="aspectFill"></image>
|
|
</view>
|
|
<view class="user-details" @click="clickInfo">
|
|
|
|
<view class="user-name">{{ isLogin ? userInfo.name : displayInfo.name }}</view>
|
|
<view class="user-phone">手机号:{{ isLogin ? userInfo.phone || displayInfo.phone : displayInfo.phone }}</view>
|
|
<!-- <view class="user-desc">{{ displayInfo.description }}</view> -->
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
<!-- 功能菜单列表 -->
|
|
<!-- 第一组菜单 -->
|
|
<!-- 会员中心 -->
|
|
<view class="menu-item special-item" @click="goToMember">
|
|
<view class="menu-left">
|
|
<image src="/static/会员钻石.png" class="menu-icon"></image>
|
|
<text class="menu-title">会员中心</text>
|
|
</view>
|
|
<view class="menu-right">
|
|
<uv-button shape="circle" :customStyle="{
|
|
width: '170rpx',
|
|
height: '70rpx',
|
|
fontSize: '28rpx',
|
|
fontWeight: '500',
|
|
lineHeight: '70rpx',
|
|
letterSpacing: '0%',
|
|
verticalAlign: 'middle',
|
|
backgroundColor: '#06DADC',
|
|
color: '#fff',
|
|
}">查看会员</uv-button>
|
|
</view>
|
|
</view>
|
|
|
|
<view class="menu-list">
|
|
|
|
<!-- 推广中心 -->
|
|
<view class="menu-item" @click="goToPromotion" v-if="userInfo.isPromote === 'Y'">
|
|
<view class="menu-left">
|
|
<image src="/static/推广图标.png" class="menu-icon"></image>
|
|
<text class="menu-title">推广中心</text>
|
|
</view>
|
|
<view class="menu-right">
|
|
<uv-icon name="arrow-right" color="#999" size="16"></uv-icon>
|
|
</view>
|
|
</view>
|
|
|
|
<!-- 我的优惠券 -->
|
|
<view class="menu-item" @click="goToCoupons">
|
|
<view class="menu-left">
|
|
<image src="/static/优惠卷图标.png" class="menu-icon"></image>
|
|
<text class="menu-title">我的优惠券</text>
|
|
</view>
|
|
<view class="menu-right">
|
|
<uv-icon name="arrow-right" color="#999" size="16"></uv-icon>
|
|
</view>
|
|
</view>
|
|
|
|
<!-- 产品介绍 -->
|
|
<view class="menu-item" @click="goToProduct">
|
|
<view class="menu-left">
|
|
<image src="/static/介绍图标.png" class="menu-icon"></image>
|
|
<text class="menu-title">产品介绍</text>
|
|
</view>
|
|
<view class="menu-right">
|
|
<uv-icon name="arrow-right" color="#999" size="16"></uv-icon>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
<!-- 第二组菜单 -->
|
|
<view class="menu-list">
|
|
<!-- 联系我们 -->
|
|
<view class="menu-item" @click="goToContact">
|
|
<view class="menu-left">
|
|
<image src="/static/联系我们图标.png" class="menu-icon"></image>
|
|
<text class="menu-title">联系我们</text>
|
|
</view>
|
|
<view class="menu-right">
|
|
<uv-icon name="arrow-right" color="#999" size="16"></uv-icon>
|
|
</view>
|
|
</view>
|
|
|
|
<!-- 服务协议与隐私政策 -->
|
|
<view class="menu-item" @click="goToPolicy">
|
|
<view class="menu-left">
|
|
<image src="/static/服务隐私图标.png" class="menu-icon"></image>
|
|
<text class="menu-title">服务协议与隐私政策</text>
|
|
</view>
|
|
<view class="menu-right">
|
|
<uv-icon name="arrow-right" color="#999" size="16"></uv-icon>
|
|
</view>
|
|
</view>
|
|
|
|
<!-- 修改信息 -->
|
|
<view class="menu-item" @click="goToBasicInfo">
|
|
<view class="menu-left">
|
|
<image src="/static/修改信息图标.png" class="menu-icon"></image>
|
|
<text class="menu-title">修改信息</text>
|
|
</view>
|
|
<view class="menu-right">
|
|
<uv-icon name="arrow-right" color="#999" size="16"></uv-icon>
|
|
</view>
|
|
</view>
|
|
|
|
<view class="menu-item" @click="logout" v-if="isLogin">
|
|
<view class="menu-left">
|
|
<image src="/static/退出登录图标.png" class="menu-icon"></image>
|
|
<text class="menu-title">退出登录</text>
|
|
</view>
|
|
<view class="menu-right">
|
|
<uv-icon name="arrow-right" color="#999" size="16"></uv-icon>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
<view>
|
|
<uv-popup ref="contactModal" closeIconPos="top-left" closeable round="30rpx" :safeAreaInsetBottom="false">
|
|
<view class="contact-content">
|
|
<view class="title">联系我们</view>
|
|
<view class="contact-item" @click="callPhone">
|
|
<text class="contact-phone">{{ configParamContent('contact_us') }}</text>
|
|
<image src="/static/拨号图标.png" class="contact-icon"></image>
|
|
</view>
|
|
</view>
|
|
</uv-popup>
|
|
</view>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
|
|
export default {
|
|
data() {
|
|
return {
|
|
userInfo: {
|
|
avatar: '/static/默认头像.png',
|
|
name: '请先登录',
|
|
id: 'XXXXX'
|
|
},
|
|
isLogin: uni.getStorageSync('token'),
|
|
// 用户展示信息
|
|
displayInfo: {
|
|
name: '点击登录',
|
|
phone: 'xxxxxxxxx',
|
|
avatar: '/static/默认头像.png'
|
|
}
|
|
}
|
|
},
|
|
computed: {
|
|
// 检查是否已登录
|
|
|
|
},
|
|
onShow() {
|
|
this.isLogin = uni.getStorageSync('token')
|
|
// 如果没登陆过 就别登了
|
|
if (uni.getStorageSync('token')) {
|
|
|
|
this.getUserInfo();
|
|
}
|
|
},
|
|
methods: {
|
|
// 拨打电话
|
|
callPhone() {
|
|
uni.makePhoneCall({
|
|
phoneNumber: this.configParamContent('contact_us'),
|
|
})
|
|
},
|
|
// 跳转登录页面
|
|
goLogin() {
|
|
if (!this.isLogin) {
|
|
uni.navigateTo({
|
|
url: '/subPages/login/login'
|
|
})
|
|
}else {
|
|
uni.navigateTo({
|
|
url: '/subPages/user/profile'
|
|
})
|
|
}
|
|
},
|
|
|
|
// 跳转到基本信息页面
|
|
goToBasicInfo() {
|
|
uni.navigateTo({
|
|
url: '/subPages/user/profile'
|
|
})
|
|
},
|
|
|
|
// 获取用户信息
|
|
async getUserInfo() {
|
|
const res = await this.$api.login.getUserInfo();
|
|
if (res.code === 200) {
|
|
this.userInfo = res.result;
|
|
// 存储用户信息到store
|
|
this.$store.dispatch('updateUserInfo', this.userInfo)
|
|
}
|
|
},
|
|
|
|
// 显示隐私政策弹窗
|
|
showPrivacyPolicy() {
|
|
this.$refs.privacyModal.open()
|
|
},
|
|
|
|
// 跳转到会员页面
|
|
goToMember() {
|
|
uni.switchTab({
|
|
url: '/pages/index/member'
|
|
})
|
|
},
|
|
|
|
// 跳转到推广中心
|
|
goToPromotion() {
|
|
uni.navigateTo({
|
|
url: '/subPages/user/promote'
|
|
})
|
|
},
|
|
|
|
// 跳转到我的优惠券
|
|
goToCoupons() {
|
|
uni.navigateTo({
|
|
url: '/subPages/user/discount'
|
|
})
|
|
},
|
|
|
|
// 跳转到产品介绍
|
|
goToProduct() {
|
|
uni.navigateTo({ url: '/subPages/user/introduce' })
|
|
},
|
|
|
|
//// 跳转到联系我们
|
|
goToContact() {
|
|
this.$refs.contactModal.open('bottom')
|
|
},
|
|
|
|
// 跳转到隐私政策页面
|
|
goToPolicy() {
|
|
uni.navigateTo({
|
|
url: '/subPages/user/policy'
|
|
})
|
|
},
|
|
|
|
// 跳转到登陆页面
|
|
clickInfo() {
|
|
if (!this.isLogin){
|
|
|
|
uni.navigateTo({
|
|
url: '/subPages/login/login'
|
|
})
|
|
}else {
|
|
uni.navigateTo({
|
|
url: '/subPages/user/profile'
|
|
})
|
|
}
|
|
},
|
|
|
|
// 退出登录
|
|
logout() {
|
|
uni.showModal({
|
|
title: '提示',
|
|
content: '确定要退出登录吗?',
|
|
confirmColor: '#06DADC',
|
|
success: (res) => {
|
|
if (res.confirm) {
|
|
// 清除本地存储的用户信息
|
|
uni.removeStorageSync('token')
|
|
// 清空store中的用户信息
|
|
this.$store.commit('updateUserInfo', { })
|
|
|
|
// 重置用户信息
|
|
this.userInfo = {
|
|
avatar: '/static/默认头像.png',
|
|
name: '请先登录',
|
|
id: 'XXXXX'
|
|
}
|
|
|
|
this.isLogin = false;
|
|
|
|
// 显示退出成功提示
|
|
uni.showToast({
|
|
title: '退出成功',
|
|
icon: 'success'
|
|
})
|
|
}
|
|
}
|
|
})
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
.user-container {
|
|
min-height: 100vh;
|
|
background: #fff;
|
|
|
|
/* 用户信息区域 */
|
|
.user-info-section {
|
|
background: linear-gradient(180deg, #ABFFFF 0%, #FFFFFF 100%);
|
|
height: 300rpx;
|
|
// display: flex;
|
|
// align-items: center;
|
|
padding: 60rpx 32rpx 0rpx;
|
|
gap: 40rpx;
|
|
|
|
.user-info {
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
|
|
.page-title {
|
|
text-align: center;
|
|
margin: 0 auto;
|
|
margin-top: 60rpx;
|
|
margin-bottom: 40rpx;
|
|
font-size: 32rpx;
|
|
font-weight: 500;
|
|
}
|
|
}
|
|
|
|
.user-avatar {
|
|
width: 120rpx;
|
|
height: 120rpx;
|
|
border-radius: 50%;
|
|
overflow: hidden;
|
|
margin-right: 30rpx;
|
|
border: 2px solid #FFFFFF;
|
|
|
|
image {
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|
|
}
|
|
|
|
.user-details {
|
|
flex: 1;
|
|
}
|
|
|
|
.user-name {
|
|
font-size: 36rpx;
|
|
line-height: 44rpx;
|
|
font-weight: bold;
|
|
color: #333;
|
|
margin-bottom: 10rpx;
|
|
}
|
|
|
|
.user-phone {
|
|
font-size: 24rpx;
|
|
color: #252545;
|
|
margin-bottom: 8rpx;
|
|
}
|
|
|
|
.user-desc {
|
|
font-size: 24rpx;
|
|
color: #252545;
|
|
}
|
|
|
|
/* 菜单列表 */
|
|
.menu-list {
|
|
background: #F8F8F8;
|
|
border-radius: 32rpx;
|
|
overflow: hidden;
|
|
margin: 0 32rpx;
|
|
margin-bottom: 32rpx;
|
|
|
|
&:last-child {
|
|
margin-bottom: 0;
|
|
}
|
|
}
|
|
|
|
.menu-item {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
padding: 40rpx 30rpx;
|
|
border: 2rpx solid #F2F2F2;
|
|
|
|
&:last-child {
|
|
border-bottom: none;
|
|
}
|
|
|
|
&.special-item {
|
|
background: linear-gradient(180deg, #DEFFFF 0%, #FBFEFF 22.65%, #F0FBFF 100%);
|
|
border: 1px solid #06DADC12;
|
|
height: 98rpx;
|
|
border-radius: 32rpx;
|
|
border-width: 2rpx;
|
|
padding-top: 12rpx;
|
|
padding-right: 40rpx;
|
|
padding-bottom: 12rpx;
|
|
padding-left: 40rpx;
|
|
gap: 24rpx;
|
|
margin: 0 32rpx;
|
|
margin-bottom: 32rpx;
|
|
.menu-icon{
|
|
width: 60rpx;
|
|
height: 60rpx;
|
|
}
|
|
|
|
.menu-title{
|
|
font-size: 36rpx;
|
|
font-weight: 600;
|
|
}
|
|
}
|
|
}
|
|
|
|
.menu-left {
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
|
|
.menu-icon {
|
|
width: 40rpx;
|
|
height: 40rpx;
|
|
margin-right: 20rpx;
|
|
}
|
|
|
|
.menu-title {
|
|
font-size: 32rpx;
|
|
color: #333;
|
|
}
|
|
|
|
.menu-right {
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
|
|
/* 联系我们弹窗样式 */
|
|
.contact-content {
|
|
// padding: 40rpx 0;
|
|
.title{
|
|
height: 90rpx;
|
|
text-align: center;
|
|
line-height: 90rpx;
|
|
font-size: 34rpx;
|
|
font-weight: 500;
|
|
border-bottom: 2rpx solid #EEEEEE
|
|
}
|
|
// text-align: center;
|
|
}
|
|
|
|
.contact-item {
|
|
// background: red;
|
|
height: 240rpx;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: 20rpx;
|
|
}
|
|
|
|
.contact-icon {
|
|
width: 72rpx;
|
|
height: 72rpx;
|
|
}
|
|
|
|
.contact-phone {
|
|
font-size: 36rpx;
|
|
color: #181818;
|
|
|
|
}
|
|
}
|
|
</style>
|