|                                                                                                                                                                                                                                                                                                                                                                                                    |  | <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">0731-599327-8899</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: '0731-599327-8899'      })    },    // 跳转登录页面
    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;      }    },        // 显示隐私政策弹窗
    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: '#C70019',        success: (res) => {          if (res.confirm) {            // 清除本地存储的用户信息
            uni.removeStorageSync('token')                        // 重置用户信息
            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>
 |