首页 > 小程序教程 > 微信小程序肯德基订单外送支付设计制作开发教程

微信小程序肯德基订单外送支付设计制作开发教程

上一篇 下一篇
本文给大家带来的是微信小程序肯德基订单外送支付设计制作开发教程,制作好以后效果图如下:
一、wxml页面代码如下:
<view class="container">
  <view class="title" catchtap="selectElement">
    <view class="weui-cells__title">更改用餐方式</view>
    <view class="title-dots">
      <view class="title__dot title-takeout__dot" data-selected="takeout"></view>
      <view class="title__dot title-hall__dot" data-selected="hall"></view>
    </view>
    <view class="title-descs">
      <view class="title__desc title-takeout__desc" data-selected="takeout">外送</view>
      <view class="title__desc title-hall__desc" data-selected="hall">堂食</view>
    </view>
    <view class="title-icons">
      <view class="title__icon title-takeout__icon" hidden="{{elementToggle}}">
        <image src="../../image/takeout_active.png"></image>
      </view>
      <view class="title__icon title-hall__icon" hidden="{{!elementToggle}}">
        <image src="../../image/hall_active.png"></image>
      </view>
    </view>
  </view>
  <view class="content">
    <view class="address" hidden="{{elementToggle}}">
      <view class="address-icon--left">
        <image src="../../image/position.png"></image>
      </view>
      <view class="address-index--middle">
        <view class="user__desc">{{userName}}<text>{{OrderWay}}</text></view>
        <view class="address__desc">{{address}}</view>
      </view>
      <view class="address--right">
        <view></view>
      </view>
    </view>
    <view class="shopping-list">
      <view class="shopping-item" wx:for="{{shoppingList}}" wx:key="item">
        <view class="item__name">{{item.name}}</view>
        <view class="item__num">{{item.num}}份</view>
        <view class="item__price">¥{{item.price}}</view>
      </view>
      <view class="shopping-footer">
        待支付{{totalPrice}}元
      </view>
    </view>
  </view>

  <view class="shopcart" bindtap="showCart" hidden="{{cartIsHidden}}">
    <view class="shopcart-main">
      <view class="shopcart-left">
        <image src="../../image/shopcart.png" class="shopcart__icon"></image>
        <view class="shopcart__count">{{totalCount}}</view>
      </view>
      <view class="shopcart-middle">
        <view class="shopcart__price">¥
          <text>{{totalPrice}}</text>
        </view>
      </view>
      <view class="shopcart-right" catchtap="toCount">
        <text>支付</text>
      </view>
    </view>
  </view>
</view>
<view class="list-mask" hidden="{{cartIndexIsHidden}}" animation="{{animationData}}">
  <view hidden="{{cartIndexIsHidden}}" class="shopcart__items" wx:for="{{shoppingList}}" wx:for-item="item">
    <view class="shopcart__item" hidden="{{cartIndexIsHidden}}">
      <view class="cart__left">
        <view class="item__h3">{{item.name}}</view>
        <view class="item__price">¥{{item.price}}</view>
      </view>
      <view class="cart__right">
        <view class="food__add food__add--delete" data-foodidx="{{index}}" data-price="{{item.price}}" data-name="{{item.name}}"
          catchtap="deleteShopcartInCart">-</view>
        <text>{{item.num}}</text>
        <view class="food__add" data-foodidx="{{index}}" data-price="{{item.price}}" data-name="{{item.name}}" catchtap="addShopcartInCart">+</view>
      </view>
    </view>
  </view>
</view>
 
二、wxss样式文件代码如下:
.container {
    position: relative;
    display: flex;
    flex-direction: column;
    height: 667px;
    width: 100%;
    overflow-y: hidden;
    background-color: #f2f2f2;
}

.title {
    height: 87px;
    margin-top: 20px;
    display: inline-block;
    width: 100%;
    background-color: #fff;
    box-shadow: 1px gray;
}

.title .weui-cells__title {
    font-size: 12px;
    margin-top: 7;
    margin-bottom: 11px;
}

.title:after,
.title-descs:after,
.title-dots:after {
    content: ' ';
    clear: both;
    display: table;
}

.title__dot {
    margin-right: 82px;
    float: left;
    background-color: #fff;
    height: 6px;
    width: 6px;
    border-radius: 999px;
    border: 4px solid #d6d3d3;
    position: relative;
}

.title__dot[data-selected="takeout"]::after {
    content: ' ';
    height: 5px;
    width: 160px;
    position: absolute;
    top: 0;
    left: 8px;
    background-color: #d6d3d3;
}

.title-takeout__dot {
    margin-left: 95px;
}

.title-hall__dot {
    margin-left: 73px;
}

.title-descs {
    background-color: #fff;
    margin-top: 3px;
    position: relative;
}

.title__desc {
    text-align: center;
    width: 49%;
    display: inline-block;
    font-size: 12px;
    color: #a9a9a9;
}

.title-takeout__desc {
    width: 48%;
    padding-left: 6px;
}

.title__icon {
    text-align: center;
    width: 25%;
    height: 41px;
    position: absolute;
}

.title-takeout__icon {
    top: 50px;
    left: 50px;
}

.title-hall__icon {
    top: 50px;
    left: 230px;
}

.title__icon image {
    background-color: #fff;
    width: 20px;
    height: 20px;
    padding: 5px;
    border-radius: 999px;
    border: 1px solid #d6d3d3;
}

.shopcart {
    position: fixed;
    background-color: #e02d3f;
    height: 45px;
    width: 100%;
    bottom: 0px;
    left: 0;
    z-index: 9;
}

.shopcart-main {
    display: flex;
    height: 45px;
}

.shopcart-left {
    flex: 2;
    position: relative;
}

.shopcart__icon {
    padding-top: 8px;
    height: 32px;
    width: 50px;
}

.shopcart__count {
    position: absolute;
    top: 5px;
    left: 46px;
    height: 15px;
    width: 15px;
    font-size: 12px;
    border-radius: 99px;
    background-color: #ff7b0f;
    color: #fff;
    text-align: center;
    line-height: 15px;
}

.shopcart-middle {
    flex: 5;
    background-color: #e02d3f;
    border-right: 1px solid #fff;
}

.shopcart__price {
    line-height: 45px;
    text-align: left;
    color: #fff;
}

.shopcart__price text {
    font-size: 24px;
}

.shopcart-right {
    position: relative;
    flex: 3;
    line-height: 45px;
}

.shopcart-right text {
    text-align: center;
    color: #fff;
    font-size: 16px;
    font-weight: 300;
    margin-left: 14px;
}

.shopcart-right:after {
    content: '';
    position: absolute;
    top: 15px;
    left: 78px;
    height: 12px;
    width: 12px;
    opacity: .7;
    border-top: 2px solid #fff;
    border-right: 2px solid #fff;
    transform: rotateZ(45deg)
}

.item {
    background-color: rebeccapurple;
}

.list-mask {
    position: fixed;
    width: 100%;
    height: 55px;
    bottom: 0px;
    left: 0px;
    opacity: .8;
    background-color: #fff;
    z-index: 5;
}

.shopcart__items {
    width: 100%;
}

.shopcart__items {
    width: 375px;
    background-color: rgba(0, 0, 0, .7);
}

.shopcart__item {
    height: 65px;
    display: flex;
    background-color: #fff;
    border-bottom: 1px solid #f5f0e9;
}

.food__add {
    float: right;
    width: 24px;
    height: 24px;
    line-height: 22px;
    font-size: 16px;
    text-align: center;
    color: #e02d3f;
    border: 1px solid #d6d3d3;
    border-radius: 37px;
}

.cart__left {
    margin-left: 4px;
    margin-top: 8px;
    flex: 1;
}

.cart__right {
    margin-top: 14px;
}

.cart__right .food__delete,
.cart__right text,
.cart__right .food__add {
    float: left;
    margin-right: 6px;
}

.shopcart__items:after,
.cart__right:after {
    clear: both;
    content: ' ';
    display: table;
}

.item__h3 {
    font-weight: 500;
    font-size: 14px;
}

.item__price {
    font-size: 18px;
    color: #e02d3f;
}

.content {
    margin-top: 22px;
    width: 100%;
    background-color: #f2f2f2;
    text-align: center;
}

.content .address {
    width: 100%;
    padding:6px 14px;
    background-color: #fff;
}
.address::after {
    content: ' ';
    display: table;
    clear: both;
}

.address-icon--left,
.address-index--middle,
.address--right {
    height: 100%;
    float: left;
}

.address-index--middle {
    padding: 0 12px;
    width: 70%;
    vertical-align: middle;
}

.address-icon--left {
    margin-top: 22px;
}
.content .address--right view {
    margin-top: 20px;
    margin-left: 20px;
    height: 12px;
    width: 12px;
    border-top: 1px solid #d6d3d3;
    border-right: 1px solid #d6d3d3;
    transform: rotateZ(45deg);
}
.address-index--middle {
    text-align: left;
    opacity: .7;
}
.address-index--middle .user__desc text {
    font-size: 14px;
    font-weight: 450;
    color: #333;
    margin-left: 20px;
}
.address-index--middle .address__desc{
    font-size: 14px;
    color: #a9a9a9;
}

.address-icon--left image {
    height: 20px;
    width: 20px;
}
.shopping-list {
    background-color: #fff;
    margin-top: 22px;
    padding: 12px 8px;
}
.shopping-item {
    display: flex;
    flex-direction: row;
    padding: 10px 0;
}
.shopping-item .item__name {
    font-size: 16px;
    padding-left: 6px;
    color: #333;
    flex: 6;
    text-align: left;
}
.shopping-item .item__num {
    font-size: 16px;
    flex: 2;
    color: #333;
    text-align: center;
}
.shopping-item .item__price {
    font-size: 16px;
    flex: 2;
    text-align: center;
}
.shopping-list .shopping-footer {
     border-top: 1px solid #d6d3d3;
     padding: 26px 30px 10px 10px;
     font-size: 16px;
     color: #e02d3f;
     text-align: right;
}
三、js页面代码如下:
Page({
  data: {
    elementToggle: null, 
    shoppingList: [],
    totalPrice: 0,
    totalCount: 0,
    movelength: 0,
    address: '',
    userName: '',
    OrderWay: '',
    cartIsHidden: false,
    cartIndexIsHidden: true,
    animationData: {}
  },
  onReady: function () {
    wx.setNavigationBarTitle({
      title: '订单'
    })
  },
  onLoad: function (options) {
    let that = this
    wx.getStorage({
      key: 'OrderMenu',
      success: function (res) {
        console.log(res.data.list);
        that.setData({
          shoppingList: res.data.list,
          totalPrice: res.data.price,
          totalCount: res.data.count,
          movelength: res.data.list.length,
        })
      }
    })
    wx.getStorage({
      key: 'OrderWay',
      success: function (res) {
        console.log(res.data);
        that.setData({
          OrderWay: res.data
        })
      }
    })
    wx.getStorage({
      key: 'OrderAddress',
      success: function (res) {
        console.log(res.data);
        that.setData({
          address: res.data.address[0],
          elementToggle: res.data.isHall
        })
      }
    })
    wx.getUserInfo({
      success: function (res) {
        let userInfo = res.userInfo
        let nickName = userInfo.nickName
        let avatarUrl = userInfo.avatarUrl
        let gender = userInfo.gender //性别 0:未知、1:男、2:女 
        let province = userInfo.province
        let city = userInfo.city
        let country = userInfo.country
        // console.log(nickName)
        that.setData({
          userName: nickName,
        })
      }
    })
  },
  selectElement: function (e) {
    let element_toggle = !this.data.elementToggle
    this.setData({
      elementToggle: element_toggle
    })
  },
  showCart: function (e) {
    let animation = wx.createAnimation({
      duration: 400,
      timingFunction: "linear",
      delay: 0
    });
    let move_length = 0;
    move_length = this.data.movelength * 55;
    if (this.data.movelength > 1) {
      move_length = 55 + (this.data.movelength - 1) * 65;
    }
    this.animation = animation
    animation.bottom(move_length).step()
    let cart_indexIsHidden = !this.data.cartIndexIsHidden;
    this.setData({
      // movelength: move_length,
      cartIndexIsHidden: cart_indexIsHidden,
      animationData: animation.export()
    })
  },
  addShopcartInCart: function (e) {
    let total_count = this.data.totalCount + 1;
    let addTarget = this.data.shoppingList.findIndex(item => item.name === e.target.dataset.name);
    this.data.shoppingList[addTarget].num++;
    let tempPrice = parseInt(this.data.totalPrice) + parseInt(this.data.shoppingList[addTarget].price)
    this.setData({
      shoppingList: this.data.shoppingList,
      totalPrice: tempPrice,
      totalCount: total_count
    })
  },
  deleteShopcartInCart: function (e) {
    let move_length = this.data.movelength;
    let addTarget = this.data.shoppingList.findIndex(item => item.name === e.target.dataset.name);
    let tempPrice = 0;
    let total_count = this.data.totalCount - 1;
    this.data.shoppingList[addTarget].num--;
    if (this.data.shoppingList[addTarget].num < 1) {
      tempPrice = parseInt(this.data.totalPrice) - parseInt(this.data.shoppingList[addTarget].price)
      this.data.shoppingList.splice(addTarget, 1);
      move_length--;
      let animation = wx.createAnimation({
        duration: 400,
        timingFunction: "linear",
        delay: 0
      });
      let mlength = move_length * 61;
      if (move_length < 2) {
        mlength = move_length * 50
      }
      if (move_length < 1) {
        mlength = -55
      }
      console.log(this.data.totalPrice)
      this.animation = animation
      animation.bottom(mlength).step()
      if (total_count == 0) {
        let cart_isHidden = !this.data.cartIsHidden
        console.log(cart_isHidden)
        setTimeout(() => {
          this.setData({
            cartIsHidden: cart_isHidden
          })
          wx.navigateBack()
        }, 1000)

      }
      this.setData({
        shoppingList: this.data.shoppingList,
        movelength: move_length,
        animationData: animation.export(),
        totalPrice: tempPrice
      })
    } else {
      tempPrice = parseInt(this.data.totalPrice) - parseInt(this.data.shoppingList[addTarget].price)
      console.log(this.data.totalPrice)
    }

    this.setData({
      shoppingList: this.data.shoppingList,
      totalPrice: tempPrice,
      totalCount: total_count
    })
  },
  toCount: function (e) {
    // let OrderMenu = {
    //   list: this.data.shoppingList,
    //   price: this.data.totalCount
    // }
    // wx.setStorage({
    //   key: "OrderMenu",
    //   data: OrderMenu
    // });
    wx.navigateTo({
      url: '../order/order'
    })
  }
})

模板简介:该模板名称为【微信小程序肯德基订单外送支付设计制作开发教程】,大小是,文档格式为.,推荐使用打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【小程序教程】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 24,431次
  • 使用软件
  • 文件格式
  • 文件大小
  • 上传时间 08-02
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
微信图片 微信公众平台 微信模板 微信文章 自适应 企业网站 单页式简历模板 html5 微信素材 响应式
您可能会喜欢的其他模板