问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

微信小程序开发培训指南:我的订单页面设计

创作时间:
作者:
@小白创作中心

微信小程序开发培训指南:我的订单页面设计

01

1.1 任务描述及实现思路

任务目标

实现包含用户信息展示和订单导航功能的"我的"页面,具备以下功能:

  1. 用户头像和昵称展示
  2. 订单状态导航(全部/待付款/待收货等)
  3. 优惠券数量展示
  4. 页面样式统一规范

功能流程图

graph TD
    A[我的页面] --> B[用户信息模块]
    A --> C[订单导航模块]
    B --> B1(用户头像)
    B --> B2(用户昵称)
    B --> B3(账号信息)
    C --> C1(全部订单)
    C --> C2(待付款)
    C --> C3(待收货)
    C --> C4(售后订单)
    C --> C5(优惠券)

技术路线

  1. 使用flex布局实现导航列表
  2. 通过wx.getUserInfo获取用户信息
  3. 使用绝对定位实现右侧箭头布局
  4. 通过setNavigationBarColor动态修改导航栏样式

02

1.2 对应知识点准备

1.2.1 列表式导航实现技巧

<!-- 典型导航项结构 -->
<view class="item">
  <view class="img">
    <image src="/images/icon.png"/>
  </view>
  <view class="name">菜单名称</view>
  <view class="detail">
    <text class="count">状态数量</text>
    <text>></text>
  </view>
</view>

1.2.2 用户授权流程

// 获取用户信息完整流程
wx.getSetting({
  success(res) {
    if (!res['scope.userInfo']) {
      wx.authorize({
        scope: 'scope.userInfo',
        success() {
          wx.getUserInfo({
            success: function(res) {
              // 更新页面数据
              this.setData({userInfo: res.userInfo})
            }
          })
        }
      })
    }
  }
})

1.2.3 样式设计要点

/* 导航项通用样式 */
.item {
  display: flex;
  align-items: center;
  padding: 15rpx 20rpx;
  background-color: #fff;
  position: relative;
}

/* 右侧箭头定位技巧 */
.detail {
  position: absolute;
  right: 20rpx;
  display: flex;
  align-items: center;
}

知识点拓展:小程序授权策略演进

  1. 2021年后需使用button组件触发授权
  2. 建议使用open-type="getUserInfo"的按钮
  3. 需处理用户拒绝授权的场景

03

1.3 案例实现

1.3.1 页面结构(me.wxml)

<!-- 用户信息模块 -->
<view class="user-section">
  <image class="avatar" src="{{userInfo.avatarUrl}}"/>
  <view class="info">
    <text class="name">{{userInfo.nickName}}</text>
    <text class="account">账号:356725727_k</text>
  </view>
</view>

<!-- 订单导航模块 -->
<view class="nav-list">
  <view class="nav-item" wx:for="{{navList}}" wx:key="index">
    <image class="nav-icon" src="{{item.icon}}"/>
    <text class="nav-text">{{item.title}}</text>
    <view class="nav-extra">
      <text wx:if="{{item.count}}" class="count">{{item.count}}</text>
      <text class="arrow">></text>
    </view>
  </view>
</view>

1.3.2 页面样式(me.wxss)

/* 用户信息模块样式 */
.user-section {
  display: flex;
  align-items: center;
  padding: 30rpx;
  background: #F54844;
}

.avatar {
  width: 120rpx;
  height: 120rpx;
  border-radius: 50%;
  margin-right: 30rpx;
}

.info {
  display: flex;
  flex-direction: column;
}

.name {
  color: #fff;
  font-size: 36rpx;
  margin-bottom: 10rpx;
}

/* 导航项样式 */
.nav-list {
  margin-top: 20rpx;
  background: #fff;
}

.nav-item {
  display: flex;
  align-items: center;
  padding: 25rpx 30rpx;
  border-bottom: 1rpx solid #eee;
}

.nav-icon {
  width: 40rpx;
  height: 40rpx;
  margin-right: 20rpx;
}

.nav-extra {
  margin-left: auto;
  display: flex;
  align-items: center;
}

.count {
  color: #E4393C;
  margin-right: 15rpx;
}

1.3.3 业务逻辑(me.js)

Page({
  data: {
    userInfo: {},
    navList: [
      {icon: '/images/icon/all.png', title: '全部订单'},
      {icon: '/images/icon/pending.png', title: '待付款', count: 2},
      {icon: '/images/icon/receiving.png', title: '待收货'},
      {icon: '/images/icon/after-sale.png', title: '售后订单'},
      {icon: '/images/icon/coupon.png', title: '优惠券', count: 4}
    ]
  },

  onLoad() {
    this.checkAuth()
  },

  // 检查用户授权状态
  checkAuth() {
    wx.getSetting({
      success: res => {
        if (res.authSetting['scope.userInfo']) {
          this.getUserInfo()
        }
      }
    })
  },

  // 获取用户信息
  getUserInfo() {
    wx.getUserInfo({
      success: res => {
        this.setData({
          userInfo: res.userInfo
        })
        wx.setNavigationBarTitle({ title: '我的' })
      }
    })
  }
})

关键代码解析

  1. margin-left: auto 实现右侧元素自动靠右
  2. wx.getSettingwx.authorize 的配合使用
  3. wx:for 循环渲染导航列表数据

04

1.4 习题与实训

基础题

  1. 为导航项添加点击跳转功能,跳转到对应订单列表页
  2. 修改导航栏背景色为渐变色(#FF6B6B 到 #FF8E53)

提高题

  1. 实现用户信息未登录时的默认展示样式
  2. 添加下拉刷新功能更新订单数量

实训项目

  1. 实现订单数量红点提示功能
  2. 开发订单状态筛选组件
  3. 集成微信支付功能到订单页面

附录:常见问题解决方案

  1. 授权弹窗不显示:检查按钮是否使用<button open-type="getUserInfo">
  2. 图片显示异常:使用在线图片或确保本地图片路径正确
  3. 样式兼容问题:使用rpx单位适配不同屏幕
  4. 数据更新延迟:在setData回调中执行后续操作

教学建议:

  1. 使用真实订单数据进行演示
  2. 对比不同导航实现方式的优缺点
  3. 演示微信开发者工具的调试功能
  4. 强调用户隐私保护规范

需要完整可运行的项目源码或特定功能扩展说明,可以进一步补充具体需求。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号