跳至主要內容

小程序用户页面

起凡大约 3 分钟

小程序用户页面

用户页面
用户页面

用户信息展示

<template>
  <div class="user-page">
    <!-- 背景图片 -->
    <image
      class="background"
      mode="aspectFill"
      src="https://my-resource-share.oss-cn-qingdao.aliyuncs.com/config/BJ.jpg"
    ></image>
    <!-- user-wrapper的作用是让白色的框框在整个页面水平居中。如果不使用user-wrapper,白色框框会靠左,而不是水平居中。 -->
    <!-- 水平居中的方案有好几种,我用的是父亲元素flex让子元素居中,也可以直接让子元素margin: 0 auto;实现水平居中 -->
    <div class="user-wrapper">
      <!-- 白色的框框,让用户的信息在白色框框中垂直居中. -->
      <div class="user-section">
        <!-- 用户的信息包含了 头像+(用户名,箭头),让他们垂直居中 -->
        <div class="user-info" @click="switchPage('user-edit')">
          <user-avatar
            :src="userInfo.avatar"
            radius="50%"
            width="100rpx"
            height="100rpx"
            mode="aspectFill"
          ></user-avatar>
          <!-- 让用户名和箭头垂直居中 -->
          <div class="username">
            <!-- 用户信息不存在时,点击此会加载用户信息。 -->
            <div
              v-if="!userInfo.nickname"
              class="name not-login"
              @click.stop="homeStore.getUserInfo()"
            >
              您还未登录,点击登录
            </div>
            <div v-else class="name">{{ userInfo.nickname }}</div>
            <rect-right class="rect-right" />
          </div>
        </div>
      </div>
    </div>
  <!-- 未注册的用户进入到此页面,获取用户信息失败就会触发注册弹出框 -->
  <register-popup></register-popup>
</template>

菜单列表

<template>
  <div class="user-page">
    <!-- 忽略... -->
    <!-- 分割线 -->
    <div class="divider">
      <div class="front">我的</div>
      <div class="rear">MY SERVICE</div>
    </div>
    <!-- 菜单框 网格布局,四列(1fr 1fr 1fr 1fr),溢出的自动迁移到下行(grid-auto-flow: row) -->
    <div class="functions">
      <div class="function" @tap="switchPage('/pages/order/order-list')">
        <image
          class="icon"
          mode="widthFix"
          src="@/assets/icons/order.png"
        ></image>
        <div class="name">我的订单</div>
      </div>

      <div class="function" @tap="switchPage('/pages/address/address-list')">
        <image
          class="icon"
          mode="widthFix"
          src="@/assets/icons/address.png"
        ></image>
        <div class="name">我的地址</div>
      </div>
      <div class="function" @tap="switchPage('/pages/feedback/index')">
        <image
          class="icon"
          mode="widthFix"
          src="@/assets/icons/feedback.png"
        ></image>
        <div class="name">反馈建议</div>
      </div>
      <div class="function" @tap="switchPage('/pages/invite/index')">
        <image
          class="icon"
          mode="widthFix"
          src="@/assets/icons/user-invite.png"
        ></image>
        <div class="name">我的推广</div>
      </div>
      <div class="function" @tap="switchPage('/pages/invite/index')">
        <image
          class="icon"
          mode="widthFix"
          src="@/assets/icons/user-invite.png"
        ></image>
        <div class="name">我的推广</div>
      </div>
    </div>
  </div>
  <register-popup></register-popup>
</template>