You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
109 lines
2.7 KiB
109 lines
2.7 KiB
const district = require('../../utils/address_data.js') |
|
const product = require('../../utils/product.js') |
|
|
|
Page({ |
|
data: { |
|
deleteModalHidden: true, |
|
wantToDeleteItem: '', |
|
address: null, |
|
cartItems: [], |
|
amount: 0 |
|
}, |
|
|
|
onLoad: function (params) { |
|
}, |
|
|
|
onShow: function (params) { |
|
var cartItems = wx.getStorageSync("cartItems") |
|
this.setData({cartItems: cartItems || []}) |
|
|
|
this.changeCartAmount() |
|
|
|
var detailAddress = wx.getStorageSync('detailAddress') |
|
var receiverName = wx.getStorageSync('receiverName') |
|
var receiverMobile = wx.getStorageSync('receiverMobile') |
|
var address = {detail: detailAddress, name: receiverName, mobile: receiverMobile} |
|
|
|
var districtIndex = wx.getStorageSync('currentDistrict') || [0,0,0] |
|
address.province = district.provinces()[districtIndex[0]] |
|
address.city = district.cities(address.province)[districtIndex[1]] |
|
address.county = district.counties(address.province, address.city)[districtIndex[2]] |
|
|
|
this.setData({address: address}) |
|
}, |
|
|
|
bindChangeQuantity: function (e) { |
|
var cartItems = this.data.cartItems |
|
var item = cartItems.find(function(ele){ |
|
return ele.id === e.currentTarget.dataset.id |
|
}) |
|
item.quantity = e.detail.value |
|
this.setData({ cartItems: cartItems }) |
|
wx.setStorage({ |
|
key: 'cartItems', |
|
data: cartItems |
|
}) |
|
this.changeCartAmount() |
|
}, |
|
|
|
// tap on item to delete cart item |
|
catchTapOnItem: function (e) { |
|
this.setData({ |
|
deleteModalHidden: false, |
|
wantToDeleteItem: e.currentTarget.dataset.id |
|
}) |
|
}, |
|
|
|
deleteModalChange: function (e) { |
|
var that = this |
|
if (e.type === "confirm") { |
|
var cartItems = that.data.cartItems |
|
var index = cartItems.findIndex(function(ele){ |
|
return ele.id === that.data.wantToDeleteItem |
|
}) |
|
cartItems.splice(index, 1) |
|
this.setData({ cartItems: cartItems }) |
|
wx.setStorage({ |
|
key: 'cartItems', |
|
data: cartItems |
|
}) |
|
} |
|
this.setData({ |
|
deleteModalHidden: true |
|
}) |
|
this.changeCartAmount() |
|
}, |
|
|
|
bindBilling: function () { |
|
var cartItems = wx.getStorageSync('cartItems') |
|
if (cartItems) { |
|
var cartArray = cartItems.map(function(obj){ |
|
var rObj = {}; |
|
rObj['id'] = obj.id; |
|
rObj['quantity'] = obj.quantity; |
|
return rObj; |
|
}); |
|
|
|
product.postBilling({ |
|
items: cartArray, |
|
address: this.data.address |
|
}, function(result){ |
|
|
|
}) |
|
} |
|
}, |
|
|
|
changeCartAmount: function () { |
|
var amount = 0 |
|
this.data.cartItems.forEach(function(entry){ |
|
amount += entry.quantity * entry.product.price |
|
}) |
|
this.setData({amount: amount}) |
|
}, |
|
|
|
bindTapAddress () { |
|
wx.navigateTo({ |
|
url: '../address/address' |
|
}) |
|
} |
|
})
|
|
|