微信小程序微商城(九):微信授权并实现个人中心页面页面

知了一笑 2018-08-02 09:31:19 ⋅ 263 阅读

上一篇:微信小程序微商城(八):缓存实现商品购物车功能

看效果


开发计划

1、实现微信授权并获取用户信息
2、个人中心页面布局

一、实现微信授权并获取用户信息

mine.js
onLoad: function () {    
   if (app.globalData.userInfo) {      
       this.setData({        
       userInfo: app.globalData.userInfo,        
       hasUserInfo: true      })    } else if (this.data.canIUse) {      // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回      // 所以此处加入 callback 以防止这种情况      app.userInfoReadyCallback = res => {        this.setData({          userInfo: res.userInfo,          hasUserInfo: true        })      }    } else {      // 在没有 open-type=getUserInfo 版本的兼容处理      wx.getUserInfo({        success: res => {          app.globalData.userInfo = res.userInfo          this.setData({            userInfo: res.userInfo,            hasUserInfo: true          })        }      })    }  },  
getUserInfo: function (e) {    
   console.log(e)    app.globalData.userInfo = e.detail.userInfo    
   this.setData({      
       userInfo: e.detail.userInfo,      
       hasUserInfo: true    })  }

二、实现微信授权并获取用户信息

mine.wxml
<view class="userinfo">
  <button wx:if="{{!hasUserInfo && canIUse}}" open-type="getUserInfo" bindgetuserinfo="getUserInfo" class="userinfo-btn"> 点击微信授权 </button>
  <block wx:else>
    <image bindtap="bindViewTap" class="userinfo-avatar" src="{{userInfo.avatarUrl}}" background-size="cover"></image>
    <text class="userinfo-nickname">{{userInfo.nickName}}</text>
  </block></view><view class="separate"></view><view class="order" catchtap="toOrder">
  <text class="myorder-text">我的订单</text>
  <text class="myorderlook-text">查看全部订单</text></view><view class="line"></view><view class="navs">
  <block wx:for-items="{{orderItems}}" wx:key="name">
    <view class="nav-item" catchtap="toOrder" data-type="{{item.name}}" data-typeid="{{item.typeId}}">
      <image src="{{item.imageurl}}" class="nav-image" />
      <text>{{item.name}}</text>
    </view>
  </block></view><view class="separate"></view><view class="person-list">

  <view class="list-item">
    <image class="item-image" src="../../images/person/personal_card.png"></image>
    <text class="item-text">优惠券</text>
  </view>
  <view class="person-line"></view>
  <view class="list-item">
    <image class="item-image" src="../../images/person/personal_favorite.png"></image>
    <text class="item-text">我的收藏</text>
  </view>
  <view class="person-line"></view>
  <view class="list-item">
    <image class="item-image" src="../../images/person/personal_site.png"></image>
    <text class="item-text">收货地址</text>
  </view>
  <view class="person-line"></view>
  <view class="list-item">
    <image class="item-image" src="../../images/person/personal_sale_record.png"></image>
    <text class="item-text">售后记录</text>
  </view>
  <view class="person-line"></view>
  <view class="list-item">
    <image class="item-image" src="../../images/person/personal_evaluated.png"></image>
    <text class="item-text">我的评价</text>
  </view>
  <view class="person-line"></view>
  <view class="list-item">
    <image class="item-image" src="../../images/person/personal_customer.png"></image>
    <text class="item-text">在线客服</text>
  </view></view><view class="separate"></view>
mine.wxss
.userinfo {  
   display: flex;  
   flex-direction: column;  
   align-items: center;  
   background: #f0145a;  
   width: 100%;    height: 300rpx; }
.userinfo-btn{  
   margin-top: 50rpx;  
   background: none !important;  
   color: #fff !important;  
   font-size: 40rpx; }
.account-bg {  
   width: 100%;  
   height: 150rpx; }
.userinfo-avatar {  
   width: 108rpx;  
   height: 108rpx;  
   margin: 40rpx;  
   border-radius: 50%; }
.userinfo-nickname {  
   color: #fff; }
/* 订单 */
.order {  
   display: flex;  
   flex-direction: row;  
   align-items: center;  
   width: 100%;  
   height: 90rpx; }
.myorder-text {  
   font-size: 34rpx;  
   color: gray;  
   margin: 20rpx;  
   width: 40%; }
.myorderlook-text {  
   font-size: 32rpx;  
   color: gray;  
   position: relative;  
   right: 20rpx;  
   width: 60%;  
   text-align: right; }
.next-image {  
   width: 20rpx;  
   height: 25rpx;  
   position: relative;  
   right: 10rpx; }
.navs {  
   display: flex; }
.nav-item {  
   width: 25%;  
   display: flex;  
   align-items: center;  
   flex-direction: column;  
   padding: 20rpx; }
.nav-item .nav-image {  
   width: 55rpx;  
   height: 55rpx;  
   margin: 5rpx; }
.nav-item text {  
   margin-top: 20rpx;  
   font-size: 28rpx;  
   color: gray; }
/* 列表 */
.person-list {  
   display: flex;  
   flex-direction: column;  
   align-items: left; }
.list-item {      
   display: flex;  
   flex-direction: row;  
   align-items: center;  
   height: 80rpx; }
.item-image {  
   width: 40rpx;  
   height: 40rpx;  
   margin: 20rpx; }
.item-text {  
   color: gray;  
   font-size: 30rpx;  
   margin-left: 20rpx; }
.person-line {  
   width: 80%;  
   height: 2rpx;  
   background: lightgray;  
   margin-left: 90rpx; }
mine.js
var app = getApp()
Page({  
   data: {    
       userInfo: {},    
       hasUserInfo: false,        
       canIUse: wx.canIUse('button.open-type.getUserInfo'),    
       orderItems: [      {        
       typeId: 0,        
       name: '待付款',        
       url: 'bill',        
       imageurl: '../../images/person/personal_pay.png',      },      {        
       typeId: 1,        
       name: '待收货',        
       url: 'bill',        
       imageurl: '../../images/person/personal_receipt.png',      },      {        
       typeId: 2,        
       name: '待评价',        
       url: 'bill',        
       imageurl: '../../images/person/personal_comment.png'      },      {        
       typeId: 3,        
       name: '退换/售后',        
       url: 'bill',        
       imageurl: '../../images/person/personal_service.png'      }    ],  },  
   //事件处理函数  toOrder: function () {    wx.navigateTo({      url: '../order/order'    })  } }
mine.json
{  "navigationBarTitleText": "个人中心"}

备注

微信小程序微商城系列 都是通过https 动态获取数据并展示的,建议从第一篇开始阅读。大家多多支持本系列文章会继续更新下去,谢谢各位!大家在使用过程中有哪些建议可以提出来,我们一起学习哈~~~

微信小程序微商城系列

微信小程序微商城:开发者key获取
微信小程序微商城(一):https框架搭建并实现导航功能
微信小程序微商城(二):电商首页轮播、分类导航和新品特卖实现
微信小程序微商城(三):电商首页福利专场无限下拉刷新动态API数据实现
微信小程序微商城(四):动态API实现商品详情页(上)
微信小程序微商城(五):动态API实现商品详情页(下)
微信小程序微商城(六):动态API实现新品特卖商品流式布局
微信小程序微商城(七):动态API实现商品分类
微信小程序微商城(八):缓存实现商品购物车功能

关注我们

如果需要源码和素材可以关注“IT实战联盟”公众号并留言(微商城源码,5个字会收到源码下载地址,一定要看源码里面的操作手册会少走很多弯路),也可以加入交流群和作者互撩哦~~~

---------------END----------------

后续的内容同样精彩

长按关注“IT实战联盟”哦



全部评论: 0

    我有话说:

    程序商城(七):动态API实现商品分类

    程序商品分类页面布局并且调用动态API获取数据加载

    程序实现商品数量加减

    这是一个用程序原生代码实现的数量加减demo,主要是用于商品购物车或者商品详情修改数量使用

    程序实战篇:程序页面数据传递

    我们在写程序的时候经常会遇到子页面向主页面回传数据或者普通页面跳转到tabBar 页面携带数......

    程序商城(一):https框架搭建实现导航功能

    本文将带领大家搭建https的程序框架,实现动态获取数据展示效果!

    程序:最新登录授权获取openid等信息

    为优化用户体验,使用 wx.getUserInfo 接口直接弹出授权框的开发方式将逐步不再支持。从2018年4月30日开始,程序游戏的体验版、开发版调用 wx.getUserInfo 接口,将

    程序商城(四):动态API实现商品详情页(上)

    1、实现商品详情页面布局(这篇实现3个模块,头部商品图片轮播、商品价格和商品描述、商品详情展示) 2、根据用户点击不同的商品请求API动态加载数据

    程序电商实战-商品列表流式布局

    今天给大家分享一下程序商品列表的流式布局方式,根据文章内容操作就可以看到效果哦~~~

    程序抖音实战-首页(上)

    你也可以用程序编写一个抖音

    程序实战篇:商品属性联动选择(案例)

    本期的程序实战篇来做一个电商网站经常用到的-商品属性联动选择的效果,素材参考了一点点

    程序商城(八):缓存实现商品购物车功能

    商品详情页将商品信息放入缓存,购物车页面读取缓存获取商品信息,购物车商品计算和删除缓存商品

    程序电商实战-首页(下)

    上一篇:程序电商实战-首页(上)好了,上一期我们把首页搜索、导航栏和广告轮播给做完了,那么接下来会继续

    程序电商实战-首页(上)

    上一篇:程序电商实战-入门篇 嗨,大家好!经过近两周的精心准备终于开始程序电商实战之路喽。那么最终会做成什么样呢?好了,不啰嗦了 我们先看首页长什么样吧!   首页效果图

    程序电商实战-商品详情(上)

    先看一下今天要实现程序商品详情页吧!

    程序商城(五):动态API实现商品详情页(下)

    加入购物车悬浮框、商品数量、价格计算、收藏和加入购物车功能开发

    程序商城(六):动态API实现新品特卖商品流式布局

    实现新品特卖商品列表布局、调用动态API获取数据加载和点击商品跳转商品详情

    程序-Image的widthFix属性和rpm尺寸的使用

    在做程序商品详情页,商品的详情是图片集合,渲染完成后发现图片加载的很不自然

    程序实战篇:基于wxcharts.js绘制移动报表

    程序图表插件(wx-charts)是基于canvas绘制,体积巧,支持图表类型饼图、线图、柱状图 ......

    程序实战篇:如何解决https域名问题 ?

    开发自己的程序绕不开https问题,为了能在程序中调用我们自己的API服务请打开看一看吧!!!