微信小程序实战(完结篇)-第8章 一个全面的项目-点餐系统

微信小程序实战(完结篇)-第8章 一个全面的项目-点餐系统

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8.1 开发前准备

8.1.1项目展示

在这里插入图片描述
在这里插入图片描述

8.1.2项目分析

在这里插入图片描述

8.1.3项目初始化

在这里插入图片描述
在这里插入图片描述

8.1.4封装网络请求

在这里插入图片描述
fetch.js页面

module.exports = function(path, data, method) {
  return new Promise((resolve, reject) => {
    wx.request({
      url: '',   // 接口地址
      method: method,  data: data,  header: {'Content-Type': 'json' }, 
      success: resolve,
      fail: function() {// 请求失败执行fail操作
        reject()
        wx.showModal({ showCancel: false, title: '失败' }) }
    })
  }) }

请求接口页面

// 引入fetch.js文件
const fetch = require('../../utils/fetch.js')
// 接口请求
fetch(path).then((res) => {
  // 请求成功的操作
 },() => {
  // 请求失败操作
});

8.2 【任务1】商家首页

8.2.1任务分析

在这里插入图片描述

8.2.2焦点图切换

在首页顶部区域,设置了焦点图切换的效果,图片资源通过请求接口获取数据。焦点图区域的布局:

index.wxml

<block wx:for="{{listData}}">
  <swiper>
      <swiper-item>
        <image></image>
      </swiper-item>
  </swiper>
</block>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8.2.3中间区域单击跳转到菜单列表

首页中间部分展示了手机点餐的推广banner图,单击“开启订餐之旅”跳转到菜单列表,引导顾客进行点餐,中间区域的布局:

index.wxml

<block wx:for="{{listData}}">  
<!-- listData 为后台返回的数据 -->
<view bindtap="gostart">
<image></image>
</block>

在这里插入图片描述
在这里插入图片描述

8.2.4底部商品展示

底部区域的布局:

index.wxml

<block wx:for="{{listData}}">  
<view  wx:for="{{item.image_bottom}}" 
    wx:for-item="bottomItem" >
      <image></image>
    </view>
</block>

在这里插入图片描述

8.3 【任务2】菜单列表

8.3.1任务分析

在这里插入图片描述

8.3.2折扣信息区

展示商家的折扣活动信息或店铺优惠信息,折扣信息区页面结构布局:

list.wxml

<!-- 折扣信息区 -->
<view class="discount">
  <text class="discount-txt"></text>50元减10元(在线支付专享)
</view>

在这里插入图片描述

8.3.3设计菜单列表布局

pages/list/list.wxml文件,左侧菜单列表页面结构布局:

在这里插入图片描述
pages/list/list.wxml文件,右侧菜单列表页面结构布局:

在这里插入图片描述

8.3.4请求数据

list.js

const fetch = require('../../utils/fetch.js')
Page({
 data:{ loading:false }  // false,不显示底部操作菜单
 onLoad: function(options) {
     wx.showLoading({ title: '努力加载中' })
       fetch('food/list').then(res => { 
       wx.hideLoading();
       this.setData({  listData: res.data ,loading:true })
     }, () => {   wx.hideLoading()   })
   }
})

8.3.5实现菜单栏联动单品列表功能

在这里插入图片描述

8.4 【任务3】购物车

8.4.1任务分析

在这里插入图片描述

8.4.2设计底部购物车区域

菜单列表页面数据请求成功后,loading值设为true,显示底部购物车区域。当购物车里商品数量为0时,购物车图标为灰色,处于不可单击状态

在这里插入图片描述

8.4.3添加商品到购物车

单击图标“+”,把商品添加到购物车。

在这里插入图片描述

8.4.4购物车界面

在这里插入图片描述

8.4.5增加商品数量

在这里插入图片描述

8.4.6减少商品数量

在这里插入图片描述

8.4.7清空购物车

在这里插入图片描述

8.4.8满减优惠

总价等于0,并且loading为真,显示“满25立减3元(手机点餐专享)”。总价小于25元,并且总价不等于0,且loading为真,显示 “满25立减3元,还差{{25-总计}}元,去凑单。

在这里插入图片描述

8.4.9跳转到订单确认页面

在这里插入图片描述

8.5 【任务4】订单确认

8.5.1任务分析

在这里插入图片描述

8.5.2订单信息

在这里插入图片描述
balance.js

const fetch = require('../../../utils/fetch.js')
Page({
onLoad: function(options) {
    // 请求订单接口
   fetch('food/order', {: options.order_id}).then(res => {})
} order_id

8.5.3备注功能实现

在这里插入图片描述
balance.js

listenerTextarea: function(e) {
    var note = e.detail.value
  // 存储note值 
    wx.setStorageSync('note', note)
}

detail.js

onLoad: function (options) {
    // 获取note值
    var note = wx.getStorageSync('note')
  }

8.5.4支付功能

在这里插入图片描述

8.5.5支付成功返回订单列表

在这里插入图片描述

8.6 【任务5】订单详情

8.6.1任务分析

在这里插入图片描述

8.6.2取餐部分信息展示

在这里插入图片描述

8.6.3订单详情部分

在这里插入图片描述

8.6.4订单信息部分

在这里插入图片描述

8.7 【任务6】订单列表

8.7.1任务分析

在这里插入图片描述

8.7.2订单列表设计

order/list/list.wxml

<scroll-view class="container" scroll-y="true">
   <block wx:for="{{orderList}}" wx:for-item="item" wx:for-index="idx" wx:key="{{item.order_id}}">
   <view class="orderList" data-postId="{{item.order_id}}">
     <view class="order-content">
        <view class="content-time">下单时间</view></view>
        <view class="content-btm"></view></view>
     </view>
   </view>  
</block>
 <view class="bottom" wx:if="{{is_last}}">到底啦~</view>
</scroll-view>

在这里插入图片描述

8.7.3封装数据情求

order/list/list.js

const fetch = require('../../../utils/fetch')
Page({
  data: {
    orderList: [], // 下拉触底时追加数据
    is_last: false  // 数据是否加载完毕
  },
  last_id: 0,   // 加载文件的标识
  // 定义请求方法,封装请求的公共部分(3个参数:数据、成功、失败)
  loadData: function(data, success, fail) {
    data.row = 10  // 每一页10条数据
    fetch('food/orderlist', data).then((res) => {})
})

8.7.4初始化页面

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8.7.5下拉刷新功能

order/list/list.js

onPullDownRefresh: function() {
 wx.showNavigationBarLoading(); // 显示顶部刷新图标
  this.loadData({
    last_id: 0
  }, data => {
    this.setData({
      orderList: data.list
    }, () => {
   wx.hideNavigationBarLoading(); // 隐藏导航条栏加载框
    })
  })
}

8.7.6上拉触底功能

order/list/list.js

onReachBottom: function() {
  // 判断数据是否到底,如果is_last为true到底了,则不执行请求
  if (this.data.is_last) {return}
 wx.showLoading({ title: '玩命加载中' })
  this.loadData({last_id: this .last_id}, (data) => {
    var orderList = this .data.orderList
    for (var i = 0; i < data.list.length; i++) {orderList.push(data.list[i])}
   this.setData({ orderList: orderList }, () => { 
      wx.hideLoading() // 隐藏加载框 
    })
  })
}

8.8 【任务7】消费记录

8.8.1任务分析

在这里插入图片描述

8.8.2设计消费记录列表

在这里插入图片描述
record/record.js

const fetch=require('../../utils/fetch.js')
Page({
  onLoad: function (options) {
    wx.showLoading({ title: '努力加载中' })
   wx.setNavigationBarTitle({ title: '消费记录' }) // 设置小程序导航栏标题文字内容
    // 请求消费记录接口 
    fetch('food/record').then(res=>{
    wx.hideLoading() // 关闭加载信息
      this.setData({ listData:res.data })
  }) 
}
})

本章总结

点餐系统小程序主要完成底部标签导航的设计、幻灯片轮播效果设计、菜单列表的效果显示、购物车功能实现、订单详情页面设计、订单列表设计、消费记录页面的设计。通过对本章的学习,读者需要重点掌握如何设计一个完整的小程序项目,熟悉项目的开发流程,学会如何在开发中运用所学技术解决实际问题。

需要该项目整体运行源代码的读者可以私信我,免费索取。

本专栏到此结束,希望对感兴趣的读者有所帮助。

在这里插入图片描述

  • 37
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值