文章目录
显示
现
动态计算价格
index.js
,
totalPrice: function () {
var list = this.data.list;
var totalPrice = 0.00;
for (var i = 0; i < list.length; i++) {
if ( !list[i].active) {
continue;
}
totalPrice = totalPrice + parseFloat( list[i].price ) * list[i].number;
}
return totalPrice;
},
购物车数量的添加(写入到后端)
定义setCart方法实现数据的统一提交:
,
setCart:function( food_id, number ){
var that = this;
var data = {
"id": food_id,
"number": number
};
wx.request({
url: app.buildUrl("/cart/set"),
header: app.getRequestHeader(),
method: 'POST',
data: data,
success: function (res) {
}
});
}
调用setCart方法
//加数量
jiaBtnTap: function (e) {
var that = this;
var index = e.currentTarget.dataset.index;
var list = that.data.list;
list[parseInt(index)].number++;
that.setPageData(that.getSaveHide(), that.totalPrice(), that.allSelect(), that.noSelect(), list);
this.setCart( list[parseInt(index)].food_id,list[parseInt(index)].number );
},
//减数量
jianBtnTap: function (e) {
var index = e.currentTarget.dataset.index;
var list = this.data.list;
if (list[parseInt(index)].number > 1) {
list[parseInt(index)].number--;
this.setPageData(this.getSaveHide(), this.totalPrice(), this.allSelect(), this.noSelect(), list);
this.setCart( list[parseInt(index)].food_id,list[parseInt(index)].number );
}
},
调用成功后member_cart数据库中的购物车数量就会变化了
购物车删除功能
pages/cart/index.js添加deleteSelected函数处理
//选中删除的数据
deleteSelected: function () {
var list = this.data.list;
var goods = [];
list = list.filter(function ( item ) {
if( item.active ){
goods.push( {
"id":item.food_id
} )
}
return !item.active;
});
this.setPageData( this.getSaveHide(), this.totalPrice(), this.allSelect(), this.noSelect(), list);
//发送请求到后台删除数据
wx.request({
url: app.buildUrl("/cart/del"),
header: app.getRequestHeader(),
method: 'POST',
data: {
goods: JSON.stringify( goods )
},
success: function (res) {
}
});
},
后端添加/cart/del请求,处理后台购物车数据的删除
Cart.py
添加
from common.libs.member.CartService import CartService
import json
@route_api.route("/cart/del", methods=["POST"])
def delCart():
resp = {'code': 200, 'msg': '添加购物车成功~', 'data': {}}
req = request.values
params_goods = req['goods'] if 'goods' in req else None
items = []
if params_goods:
items = json.loads(params_goods)
if not items or len( items ) < 1:
return jsonify(resp)
member_info = g.member_info
if not member_info:
resp['code'] = -1
resp['msg'] = "删除购物车失败-1~~"
return jsonify(resp)
ret = CartService.deleteItem( member_id = member_info.id, items = items )
if not ret:
resp['code'] = -1
resp['msg'] = "删除购物车失败-2~~"
return jsonify(resp)
return jsonify(resp)
CartService.py
添加deleteItem
删除购物车数据
# -*- coding: utf-8 -*-
import hashlib,requests,random,string,json
from application import app,db
from common.models.member.MemberCart import MemberCart
from common.libs.Helper import getCurrentDate
class CartService():
@staticmethod
def deleteItem( member_id = 0,items = None ):
if member_id < 1 or not items:
return False
for item in items:
MemberCart.query.filter_by( food_id = item['id'],member_id = member_id ).delete()
db.session.commit()
return True
去结算
下单功能的实现
购物车里去结算商品跳转
pages/cart/index.js添加去结算的跳转,跳转到 下单
页面后,就需要展示传递过去的json数据
,
//去结算
toPayOrder: function () {
var data = {
type:"cart",
goods: []
};
var list = this.data.list;
for (var i = 0; i < list.length; i++) {
if ( !list[i].active) {
continue;
}
data['goods'].push({
"id": list[i].food_id,
"price": list[i].price,
"number": list[i].number
});
}
wx.navigateTo({
url: "/pages/order/index?data=" + JSON.stringify(data)
});
},
pages/food/info.js添加 立即购买
的下单
页面跳转
,
buyNow: function () {
var data = {
goods: [
{
"id": this.data.info.id,
"price": this.data.info.price,
"number": this.data.buyNumber
}
]
};
this.setData({
hideShopPopup: true
});
wx.navigateTo({
url: "/pages/order/index?data=" + JSON.stringify(data)
});
},