第十节:我的礼物记录

我的礼物记录

需求:用户在该页面可以在该页面查看自己的参与记录,购买记录,获奖记录。

小程序端

1用户点击不同的按钮,请求不同的接口,显示给用户

app.json

 {
  "pages": [
    "pages/index/index",
    "pages/list/list",
    "pages/item/item",
    "pages/login/login",    
    "pages/payment/payresult/payresult",
    "pages/gift/join/join",
    "pages/gift/openresult/openresult",
    "pages/my/my",
  ],
  "window": {
    "backgroundTextStyle": "light",
    "navigationBarBackgroundColor": "#e50e38",
    "navigationBarTitleText": "百步生活",
    "navigationBarTextStyle": "#fff",
    "enablePullDownRefresh": false,
    "backgroundColor": "#e50e38"
  },
}    

my.wxml

<view class="tab-wrap">
    <view class="tab" bindtap='selectTab' data-id='0'><text class='{{tab[0]}}'>我送出的</text></view>
    <view class="tab" bindtap='selectTab' data-id='1'><text class='{{tab[1]}}'>我收到的</text></view>
    <view class="tab" bindtap='selectTab' data-id='2'><text class='{{tab[2]}}'>我参与的</text></view>
</view>
<view class="lists">
    <block wx:if="{{showTab[0]}}">
      <block wx:if="{{list1.length>0}}">
          <block wx:for="{{list1}}" wx:for-index="index" wx:key="key">
              <navigator class="item" data-url="{{item.order_id}}"  bindtap="loadDetail"> 
                  <view class="header">
                      <text class="orderNum">订单号:{{item.order_id}}</text>
                      <text class="status" wx:if="{{item.order_methon.status=='finish'}}">已完成</text>
                      <text class="status" wx:if="{{item.order_methon.status=='begin'}}">进行中</text>
                      <text class="status" wx:if="{{item.order_methon.status=='read'}}">进行中</text>
                  </view>
                  <view class="inner">
                      <block wx:if="{{item.order_item.length>1}}">
                          <block wx:for="{{item.order_item}}" wx:for-index="idx" wx:key="key1" wx:for-item="productItem">
                              <block wx:if="{{idx<3}}">
                                  <image src="{{productItem.image_id.m_url}}"></image>
                              </block>
                          </block>
                      </block>
                      <block wx:else>
                        <image class="p-image" src="{{item.order_item[0].image_id.m_url}}"/> 
                        <view class="caption">
                            <view class="p-name">{{item.order_item[0].name}}</view> 
                            <view class="p-brief">{{item.order_item[0].brief}}</view>
                        </view>  
                      </block>
                      <text class="price1">¥{{item.order_total}}</text>
                      <text class="num1">共{{item.order_item.length}}件</text>
                  </view> 
                  <view class="bottom">
                      <text class="type">
                          <block wx:if="{{item.order_methon.get_method=='定时开奖'}}">{{item.order_methon.opentime}}开奖</block>
                          <block wx:elif="{{item.order_methon.get_method=='满人开奖'}}">满{{item.order_methon.open_number}}人开奖</block>
                          <block wx:else>{{item.order_methon.get_method}}</block>
                      </text>
                      <block wx:if="{{item.order_methon.status!='finish'}}">
                          <navigator url="/pages/payment/payresult/payresult?orderId={{item.order_id}}" class="act">去赠送</navigator>
                      </block>
                  </view>
              </navigator>
          </block>
      </block>
      <block wx:else>
          <view class="empty">
              <text class="nodata">暂无记录</text>
          </view>
      </block>
    </block>
    <block wx:if="{{showTab[1]}}">
      <block wx:if="{{list2.length>0}}">
        <block wx:for="{{list2}}" wx:for-index="index" wx:key="key">
            <navigator class="item" data-url="{{item.order_id}}"  bindtap="loadDetail">
                <view class="header">
                    <text class="orderNum">订单号:{{item.order_id}}</text>
                    <text class="status" wx:if="{{item.status=='send'}}">待发货</text>
                    <text class="status" wx:if="{{item.status=='nosend'}}">未填写收货地址</text>
                    <text class="status" wx:if="{{item.status=='sended'}}">已发货</text>
                </view>
                <view class="inner">
                    <image class="p-image" src="{{item.image_id.m_url}}"/> 
                    <view class="caption">
                        <view class="p-name">{{item.name}}</view> 
                        <view class="p-brief">{{item.brief}}</view>
                    </view>
                </view> 
                <view class="bottom">
                    <text class="type">{{item.buyerInfor.name}}送出</text>
                    <block wx:if="{{item.status=='nosend'}}">
                        <navigator url="/pages/gift/openresult/openresult?orderId={{item.order_id}}" class="act">填写地址</navigator>
                    </block>
                </view>
            </navigator>
        </block>
      </block>
      <block wx:else>
          <view class="empty">
              <text class="nodata">暂无记录</text>
          </view>
      </block>
    </block>
    <block wx:if="{{showTab[2]}}">
      <block wx:if="{{list3.length>0}}">
          <block wx:for="{{list3}}" wx:for-index="index" wx:key="key">
              <navigator  class="item" data-url="{{item.order_id}}"  bindtap="loadDetail">
                  <view class="header">
                      <text class="orderNum">订单号:{{item.order_id}}</text>
                      <text class="status">{{item.status}}</text>
                  </view>
                  <view class="inner">
                      <block wx:if="{{item.order.order_item.length>1}}">
                          <block wx:for="{{item.order.order_item}}" wx:for-index="idx" wx:key="key1" wx:for-item="productItem">
                              <block wx:if="{{idx<3}}">
                                  <image src="{{productItem.image_id.m_url}}"></image>
                              </block>
                          </block>
                      </block>
                      <block wx:else>
                        <image class="p-image" src="{{item.order.order_item[0].image_id.m_url}}"/> 
                        <view class="caption">
                            <view class="p-name">{{item.order.order_item[0].name}}</view> 
                            <view class="p-brief">{{item.order.order_item[0].brief}}</view>
                        </view>  
                      </block>
                      <text class="num">共{{item.order.order_item.length}}件</text>
                  </view> 
                  <view class="bottom">
                      <text class="type">{{item.buyerInfor.name}}送出    <block wx:if="{{item.order_methon.get_method=='定时开奖'}}">{{item.order_methon.opentime}}开奖</block>
                          <block wx:elif="{{item.order_methon.get_method=='满人开奖'}}">满{{item.order_methon.open_number}}人开奖</block>
                          <block wx:else>{{item.order_methon.get_method}}</block></text>
                  </view>
              </navigator>
          </block>
      </block>
      <block wx:else>
          <view class="empty">
              <text class="nodata">暂无记录</text>
          </view>
      </block>
    </block> 
</view>

my.wxss

/* pages/my/my.wxss */
page{
  background: #eee;
  height: 100%;
}
.tab-wrap{
  height: 88rpx;
  line-height: 88rpx;
  position: fixed;
  top: 0;
  background: #fff;
  padding-bottom: 2rpx;
  z-index: 10;
}
.tab-wrap .tab{
  display: inline-block;
  width: 250rpx;
  text-align: center;
  font-size: 32rpx;
  line-height: 86rpx;
  height:88rpx;
}
.tab-wrap .tab .active{
  border-bottom:2rpx solid #e50e38;
  display: inline-block;
  line-height: 86rpx;
}
.lists{
  padding-top:105rpx;
}
.lists .item{
  background: #fff;
  margin-bottom: 17rpx;
}
.lists .item .header{
  border-bottom:2rpx solid #eee;
  padding: 0 20rpx;
  height: 60rpx;
  line-height: 60rpx;
  letter-spacing: 2rpx;
}
.lists .item .header .orderNum{
  font-size: 24rpx;
}
.lists .item .header .status{
  font-size: 24rpx;
  float: right;
}
.lists .item .inner{
  padding: 12rpx 20rpx;
  border-bottom:2rpx solid #eee;
  position: relative;
  letter-spacing: 2rpx;
}
.lists .item .inner image{
  width: 150rpx;
  height: 150rpx;
  margin-left:12rpx;
}
.lists .item .inner .caption{
    display: inline-block;
    width: 380rpx;
    vertical-align: top;
    padding: 25rpx 10rpx;
}
.lists .item .inner .p-name{
    font-size: 24rpx;
    line-height: 50rpx;
    word-break: break-all;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 1;
    overflow: hidden;
}
.lists .item .inner .p-brief{
    font-size: 24rpx;
    line-height: 40rpx;
    color:#999;
}
.lists .item .inner .price{
  position: absolute;
  right:20rpx;
  top:40rpx;
  font-size:24rpx;
}
.lists .item .inner .price1{
  position: absolute;
  right:24rpx;
  top:44rpx;
  font-size:24rpx;
}
.lists .item .inner .num{
  position: absolute;
  right:20rpx;
  top:75rpx;
  color:#999999;
  font-size:24rpx;
}
.lists .item .inner .num1{
  position: absolute;
  right:20rpx;
  top:85rpx;
  color:#999999;
  font-size:24rpx;
}
.lists .item .bottom{
  padding: 0 20rpx;
  height: 80rpx;
  line-height: 80rpx;
  letter-spacing: 2rpx;
  position: relative;
}
.lists .item .bottom .type{
  font-size: 24rpx;
  color: #999999;
  position: relative;
  top: -5rpx;
}
.lists .item .bottom navigator{
  position:absolute;
  right:20rpx;
  font-size:24rpx;
  bottom:14rpx;
  border:2rpx solid #e50e38;
  line-height:40rpx;
  padding:4rpx 10rpx;
  border-radius:4rpx solid #e50e38;
  color: #e50e38;
}
.empty{
  text-align: center;
}
.nodata{
  color: #e50e38;
  text-align: center;
  padding: 4rpx 10rpx;
  border:2rpx solid #e50e38;
  border-radius: 4rpx;
  font-size: 24rpx;
  margin-top: 300rpx;
}

my.js

// pages/my/my.js
const app = getApp();
Page({

  /**
   * 页面的初始数据
   */
  data: {
      'tab':['active','',''],
      'showTab':[true,false,false],
      'list1':[],
      'list2': [],
      'list3': [],
      'price': '36.80',
      'type': "直接送礼"
  },
  selectTab:function(e){
    wx.showLoading({
      title: '加载中',
    })
    var idx = e.currentTarget.dataset.id;
    var _this =this;
    var _tmpArr = [];
    var _tmpShow = [];
    if(idx=="0"){
      _this.buyLists();
      _tmpArr = ['active','',''];
      _tmpShow = [true,false,false];
    }else if(idx=="1"){
      _this.getLists();
      _tmpArr = ['', 'active', ''];
      _tmpShow = [false, true, false];
    } else if (idx == "2"){
      _this.joinLists();
      _tmpArr = ['', '', 'active'];
      _tmpShow = [false, false, true];
    }
    this.setData({
      'tab': _tmpArr,
      'showTab':_tmpShow
    })
  },
  /**
   * 生命周期函数--监听页面加载
   */
  buyLists:function(){
    var _this = this;
    wx.request({
      url: app.globalData.apiDomain + '/api/joinlist/buyList',//buyList joinList getList
      data: {
        'login_key': wx.getStorageSync('login_key')
      },
      method: "POST",
      header: {
        'content-type': 'application/json' // 默认值
      },
      success:function(res){
          wx.hideLoading();
          _this.setData({
            list1:res.data.data
          });
      },
      fail:function(){
          wx.hideLoading();
          wx.showToast({
            title: '网络异常,请稍后再试',
            duration:'2000',
            icon:'none'
          })
      }
    })
  },
  getLists:function(){
    var _this = this;
    wx.request({
      url: app.globalData.apiDomain + '/api/joinlist/getList',//buyList joinList getList
      data: {
        'login_key': wx.getStorageSync('login_key')
      },
      method: "POST",
      header: {
        'content-type': 'application/json' // 默认值
      },
      success: function (res) {
        wx.hideLoading();
        _this.setData({
          list2: res.data.data
        });
      },
      fail: function () {
        wx.hideLoading();
        wx.showToast({
          title: '网络异常,请稍后再试',
          duration: '2000',
          icon: 'none'
        })
      }
    })
  },
  joinLists: function () {
    var _this = this;
    wx.request({
      url: app.globalData.apiDomain + '/api/joinlist/joinList',//buyList joinList getList
      data: {
        'login_key': wx.getStorageSync('login_key')
      },
      method: "POST",
      header: {
        'content-type': 'application/json' // 默认值
      },
      success: function (res) {
        wx.hideLoading();
        _this.setData({
          list3: res.data.data
        });
      },
      fail: function () {
        wx.hideLoading();
        wx.showToast({
          title: '网络异常,请稍后再试',
          duration: '2000',
          icon: 'none'
        })
      }
    })
  },
  onLoad: function (options) {
      var _this = this;
      wx.showLoading({
        title: '加载中',
      })
      wx.checkSession({
        success:function(){//请求接口
          _this.buyLists();
        },
        fail:function(){//登录过期
          wx.login({
            success: res => {
              wx.request({
                url: app.globalData.apiDomain + '/api/member/code/login',
                data: {
                  code: res.code
                },
                method: "POST",
                header: {
                  'content-type': 'application/json' // 默认值
                },
                success: function (res) {
                  wx.setStorageSync('login_key', res.data.data.login_key);
                  _this.buyLists();
                  //更新登录态后请求列表接口
                }
              });
            }
          })
        }
      })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})

服务端

1通过小程序请求不同接口,返回该用户对应的数据。

urls.py

from django.contrib import admin
from django.urls import path
from django.conf.urls import url
from api.views import product,user,order,payment,sharagift,sharerus,delivery,joinlist

urlpatterns = [
    path('admin/', admin.site.urls),
    url(r'^api/indexlist/categoryList$', product.caetgoryList.as_view()),
    url(r'^api/indexlist/IndexProductList$', product.ProductList.as_view()),
    url(r'^api/indexlist/categoryProductsList$', product.categoryProductsList.as_view()),
    url(r'^api/indexlist/detailProduct$', product.detailProduct.as_view()),
    url(r'^api/member/code/login$', user.login.as_view()),
    url(r'^api/member/code/getUserInfo$', user.getUserInfo.as_view()),
    url(r'^api/order/creatOrder$', order.creatOrder.as_view()),
    url(r'^api/payment/returnOrderData$', payment.returnOrderData.as_view()),
    url(r'^api/joinlist/joinList$', joinlist.joinList.as_view()),
    url(r'^api/joinlist/buyList$', joinlist.buyList.as_view()),
    url(r'^api/joinlist/getList$', joinlist.getList.as_view()),
]

joinlist.py

联系管理员微信tutu19192010,注册账号

上一篇
下一篇
Copyright © 2022 Egon的技术星球 egonlin.com 版权所有 帮助IT小伙伴学到真正的技术