购物车
This commit is contained in:
307
pages/bag/bag.js
Normal file
307
pages/bag/bag.js
Normal file
@@ -0,0 +1,307 @@
|
||||
|
||||
var goodsIndex = '',
|
||||
sellerIndex = ''
|
||||
|
||||
Page({
|
||||
/**
|
||||
* 页面的初始数据
|
||||
*/
|
||||
data: {
|
||||
bags : [], // 购物车列表
|
||||
isUser : false, // 是否登录
|
||||
bagId : '',
|
||||
allCheckbox : false,
|
||||
bagNumber : 0,
|
||||
allPrice : '0.00',
|
||||
bagOrderLoading : false
|
||||
},
|
||||
/**
|
||||
* 生命周期函数 - 页面显示
|
||||
*/
|
||||
onShow(){
|
||||
let token = wx.getStorageSync('token') || null
|
||||
this.setData({
|
||||
isUser : token != null,
|
||||
bagOrderLoading : false,
|
||||
allCheckbox : false,
|
||||
bagNumber : 0,
|
||||
allPrice : '0.00',
|
||||
bagId : '',
|
||||
})
|
||||
|
||||
if(token != null){
|
||||
wx.showLoading({
|
||||
title: '加载中...',
|
||||
mask : true
|
||||
})
|
||||
wx.$api.bag.list().then(res => {
|
||||
res.data.map(val => {
|
||||
val.shop.mallState = false
|
||||
val.items.map(val => {
|
||||
val.state = false
|
||||
})
|
||||
})
|
||||
this.setData({
|
||||
pagesLoding: false,
|
||||
bags : res.data
|
||||
})
|
||||
wx.hideLoading()
|
||||
})
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 商品数量加减
|
||||
*/
|
||||
goodsNumber(e){
|
||||
goodsIndex = e.currentTarget.dataset.goods
|
||||
sellerIndex = e.currentTarget.dataset.seller
|
||||
|
||||
let goodsNumber = this.data.bags[sellerIndex].items[goodsIndex].qty
|
||||
|
||||
if (e.currentTarget.dataset.type == 'plus'){
|
||||
goodsNumber = goodsNumber + 1
|
||||
}else{
|
||||
if (goodsNumber > 1){
|
||||
goodsNumber = goodsNumber - 1
|
||||
}else{
|
||||
wx.showToast({
|
||||
title : '商品数量不能小于1',
|
||||
icon : 'none'
|
||||
})
|
||||
return
|
||||
}
|
||||
}
|
||||
this.setnumNumber(goodsIndex, sellerIndex, goodsNumber)
|
||||
},
|
||||
/**
|
||||
* 输入商品数量
|
||||
*/
|
||||
goodsNumberInput(e){
|
||||
goodsIndex = e.currentTarget.dataset.goods
|
||||
sellerIndex = e.currentTarget.dataset.seller
|
||||
|
||||
let setnumNumber = this.data.bags[sellerIndex].items[goodsIndex].number,
|
||||
inputValue = Number()
|
||||
if (e.detail.value > 0){
|
||||
inputValue = Number(e.detail.value)
|
||||
}else{
|
||||
wx.showToast({
|
||||
title : '商品数量不能小于1',
|
||||
icon : 'none'
|
||||
})
|
||||
inputValue = Number(setnumNumber)
|
||||
}
|
||||
this.setnumNumber(goodsIndex, sellerIndex, inputValue)
|
||||
},
|
||||
/**
|
||||
* 更新商品数量
|
||||
*/
|
||||
setnumNumber(goodsIndex, sellerIndex, setnumNumber){
|
||||
wx.showLoading({
|
||||
title: '加载中',
|
||||
})
|
||||
let atGoods = this.data.bags
|
||||
wx.$api.bag.putNum(atGoods[sellerIndex].items[goodsIndex].cart_id, {
|
||||
qty : setnumNumber,
|
||||
sku_id: atGoods[sellerIndex].items[goodsIndex].sku_id
|
||||
}).then(res => {
|
||||
atGoods[sellerIndex].items[goodsIndex].qty = res.data
|
||||
this.setData({
|
||||
bags: atGoods
|
||||
})
|
||||
this.totalPrice()
|
||||
wx.hideLoading()
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 单选
|
||||
*/
|
||||
checkbox(e){
|
||||
goodsIndex = e.currentTarget.dataset.goods
|
||||
sellerIndex = e.currentTarget.dataset.seller
|
||||
|
||||
console.log(e.currentTarget.dataset)
|
||||
|
||||
let goodsList = this.data.bags,
|
||||
checkbox = goodsList[sellerIndex].items[goodsIndex].state,
|
||||
seller = goodsList[sellerIndex].items,
|
||||
sellerLength = 0
|
||||
|
||||
goodsList[sellerIndex].items[goodsIndex].state = !checkbox
|
||||
|
||||
for (let i in seller){
|
||||
if (seller[i].state){
|
||||
sellerLength++
|
||||
if (sellerLength == goodsList[sellerIndex].items.length){
|
||||
goodsList[sellerIndex].shop.mallState = true
|
||||
}
|
||||
}else{
|
||||
goodsList[sellerIndex].shop.mallState = false
|
||||
this.setData({
|
||||
allCheckbox: false
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
this.allCheckbox('checkbox')
|
||||
|
||||
this.setData({
|
||||
bags: goodsList
|
||||
})
|
||||
|
||||
this.totalPrice()
|
||||
},
|
||||
/**
|
||||
* 店铺全选
|
||||
*/
|
||||
sellerCheckbox(e){
|
||||
sellerIndex = e.currentTarget.dataset.seller
|
||||
|
||||
let goodsList = this.data.bags,
|
||||
allCheckbox = this.data.allCheckbox,
|
||||
seller = goodsList[sellerIndex].shop.mallState,
|
||||
sellerLengh = 0
|
||||
|
||||
goodsList[sellerIndex].shop.mallState = !seller
|
||||
|
||||
for (let i in goodsList[sellerIndex].items){
|
||||
goodsList[sellerIndex].items[i].state = !seller
|
||||
}
|
||||
|
||||
for (let j in goodsList){
|
||||
if (goodsList[j].shop.mallState){
|
||||
sellerLengh++
|
||||
if (sellerLengh == goodsList.length){
|
||||
allCheckbox = true
|
||||
}else{
|
||||
allCheckbox = false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.allCheckbox('checkbox')
|
||||
|
||||
this.setData({
|
||||
bags : goodsList,
|
||||
allCheckbox : allCheckbox
|
||||
})
|
||||
|
||||
this.totalPrice()
|
||||
},
|
||||
/**
|
||||
* 全选
|
||||
*/
|
||||
allCheckbox(type){
|
||||
let goodsLenght = 0,
|
||||
allCheckbox = this.data.allCheckbox,
|
||||
goodsList = this.data.bags
|
||||
|
||||
if (type == 'checkbox'){
|
||||
for (let j in goodsList) {
|
||||
if (goodsList[j].shop.mallState) {
|
||||
goodsLenght++
|
||||
if (goodsLenght == goodsList.length) {
|
||||
allCheckbox = true
|
||||
}
|
||||
}
|
||||
}
|
||||
}else{
|
||||
allCheckbox = !allCheckbox
|
||||
for (var i in goodsList){
|
||||
goodsList[i].shop.mallState = allCheckbox
|
||||
|
||||
for (let k in goodsList[i].items){
|
||||
goodsList[i].items[k].state = allCheckbox
|
||||
}
|
||||
}
|
||||
}
|
||||
this.setData({
|
||||
allCheckbox : allCheckbox,
|
||||
bags : goodsList
|
||||
})
|
||||
this.totalPrice()
|
||||
},
|
||||
/**
|
||||
* 计算价格
|
||||
*/
|
||||
totalPrice() {
|
||||
let bagNumber = 0,
|
||||
allPrice = 0,
|
||||
bagIdArr = [],
|
||||
goodsList = this.data.bags
|
||||
|
||||
for (var i in goodsList){
|
||||
for (let j in goodsList[i].items){
|
||||
if (goodsList[i].items[j].state){
|
||||
bagNumber = bagNumber + goodsList[i].items[j].qty
|
||||
allPrice = allPrice + (goodsList[i].items[j].qty * goodsList[i].items[j].price)
|
||||
bagIdArr.push(goodsList[i].items[j].cart_id)
|
||||
}
|
||||
}
|
||||
}
|
||||
this.setData({
|
||||
bagNumber : bagNumber,
|
||||
allPrice : allPrice.toFixed(2),
|
||||
bagId : bagIdArr.join(",")
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 购物车提交
|
||||
*/
|
||||
bagOrder(){
|
||||
this.setData({
|
||||
bagOrderLoading:true
|
||||
})
|
||||
if (this.data.bagId != ''){
|
||||
|
||||
console.log('提交的数据id:' + this.data.bagId)
|
||||
|
||||
// setTimeout(() => {
|
||||
// this.setData({
|
||||
// bagOrderLoading: false
|
||||
// })
|
||||
// }, 2000)
|
||||
}else{
|
||||
wx.showToast({
|
||||
title : '请选择结算商品',
|
||||
icon : 'none'
|
||||
})
|
||||
|
||||
this.setData({
|
||||
bagOrderLoading: false
|
||||
})
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 菜单
|
||||
*/
|
||||
actionSheet(e){
|
||||
goodsIndex = e.currentTarget.dataset.goods
|
||||
sellerIndex = e.currentTarget.dataset.seller
|
||||
|
||||
let goodsList = this.data.bags,
|
||||
cartId = this.data.bags[sellerIndex].items[goodsIndex].cart_id
|
||||
|
||||
wx.showActionSheet({
|
||||
itemList: ['删除'],
|
||||
success : res=>{
|
||||
wx.showLoading({
|
||||
title: '加载中',
|
||||
})
|
||||
wx.$api.bag.del(cartId).then(res => {
|
||||
goodsList[sellerIndex].items.splice([goodsIndex],1)
|
||||
if (goodsList[sellerIndex].items.length == 0){
|
||||
goodsList.splice([sellerIndex], 1)
|
||||
}
|
||||
this.setData({
|
||||
bags: goodsList
|
||||
})
|
||||
this.totalPrice()
|
||||
wx.showToast({
|
||||
title: '已删除'
|
||||
})
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
})
|
||||
Reference in New Issue
Block a user