// pages/cart/cart.js
|
var listData = require('../../data/test-data.js');
|
var utils = require("../../utils/util.js");
|
var app = getApp();
|
Page({
|
|
/**
|
* 页面的初始数据
|
*/
|
data: {
|
goodsList: {
|
edit: true, //是否显示编辑
|
totalPrice: 0, // 总价
|
allSelect: true, // 全选状态
|
noSelect: false, // 全不选状态
|
newMsg:'',
|
list: [] // 购物车数据
|
},
|
delBtnWidth: 140, //删除按钮宽度(rpx)
|
},
|
|
/**
|
* 生命周期函数--监听页面加载
|
*/
|
onLoad: function(options) {
|
this.initEleWidth();
|
this.setData({
|
generateOrderProcess:app.globalData.generateOrderProcess||0
|
})
|
// this.onShow();
|
},
|
|
/**
|
* 生命周期函数--监听页面显示,每次显示刷新购物车数据
|
*/
|
onShow: function() {
|
// console.log(345)
|
this.setData({
|
['goodsList.edit']: true
|
});
|
this.setGoodsList();
|
|
// utils.cartNum();
|
|
|
// var that = this;
|
// // 显示对方发来的最新消息
|
// app.globalData.newMsgCallback = onMessage => {
|
// console.log('购物车页监听WebSocket接受到服务器的消息事件。服务器返回的消息', JSON.parse(onMessage.data))
|
// utils.msgTimer(that);
|
// }
|
// // 页面显示时更新未读消息的值
|
// utils.refreshUnreadMsgNum(this);
|
|
},
|
|
goDetail(e){
|
console.log(e)
|
wx.navigateTo({
|
url: '../detail/detail?matcode='+ e.currentTarget.dataset.matcode,
|
})
|
},
|
|
/**
|
* 生命周期函数--监听页面初次渲染完成
|
*/
|
onReady: function () {
|
|
},
|
|
// // 提交fromid
|
// formIdSubmit: function (e) {
|
// // utils.formIdSubmit(e, this);
|
// wx.navigateTo({
|
// url: '../message/message',
|
// })
|
// },
|
|
// 返回商品推荐页
|
toIndexPage: function() {
|
wx.switchTab({
|
url: "../index/index"
|
});
|
|
},
|
//获取元素自适应后的实际宽度
|
getEleWidth: function(w) {
|
var real = 0;
|
try {
|
var res = wx.getSystemInfoSync().windowWidth;
|
var scale = (750 / 2) / (w / 2); //以宽度750px设计稿做宽度的自适应
|
// console.log(scale);
|
real = Math.floor(res / scale);
|
return real;
|
} catch (e) {
|
return false;
|
// Do something when catch error
|
}
|
},
|
initEleWidth: function() {
|
var delBtnWidth = this.getEleWidth(this.data.delBtnWidth);
|
this.setData({
|
delBtnWidth: delBtnWidth
|
});
|
},
|
|
// 按住开始
|
touchS: function(e) {
|
if (e.touches.length == 1) {
|
this.setData({
|
startX: e.touches[0].clientX
|
});
|
}
|
},
|
// 按住移动
|
touchM: function(e) {
|
var index = e.currentTarget.dataset.index;
|
|
if (e.touches.length == 1) {
|
var moveX = e.touches[0].clientX;
|
var disX = this.data.startX - moveX;
|
var delBtnWidth = this.data.delBtnWidth;
|
var left = "";
|
if (disX == 0 || disX < 50) { //如果移动距离小于等于50,container位置不变
|
left = "margin-left:0px";
|
} else if (disX > 50) { //移动距离大于50,container left值等于手指移动距离
|
left = "margin-left:-" + disX + "px";
|
if (disX >= delBtnWidth) {
|
left = "left:-" + delBtnWidth + "px";
|
}
|
}
|
var list = this.data.goodsList.list;
|
if (index != "" && index != null) {
|
list[parseInt(index)].left = left;
|
this.setData({
|
['goodsList.list']: list
|
});
|
}
|
}
|
},
|
// 按住结束
|
touchE: function(e) {
|
var index = e.currentTarget.dataset.index;
|
if (e.changedTouches.length == 1) {
|
var endX = e.changedTouches[0].clientX;
|
var disX = this.data.startX - endX;
|
var delBtnWidth = this.data.delBtnWidth;
|
//如果距离小于删除按钮的1/2,不显示删除按钮
|
var left = disX > delBtnWidth / 2 ? "margin-left:-" + delBtnWidth + "px" : "margin-left:0px";
|
var list = this.data.goodsList.list;
|
if (index !== "" && index != null) {
|
list[parseInt(index)].left = left;
|
// this.setGoodsList(this.getEdit());
|
this.setData({
|
['goodsList.list']: list
|
});
|
}
|
}
|
},
|
|
// 每个元素的单独删除事件
|
delItem: function(e) {
|
wx.showModal({
|
title: '提示',
|
content: '确定删除所选项吗?',
|
success: res => {
|
if (res.confirm) {
|
let cartId = e.currentTarget.dataset.cartId;
|
wx.showLoading();
|
wx.request({
|
url: utils.getUrl('/shopping/cart.do?m=del&key=' + cartId),
|
header: {
|
"Cookie": "JSESSIONID=" + wx.getStorageSync('sessionID')
|
},
|
// data: {
|
// checkbox:
|
// },
|
success: res => {
|
wx.hideLoading();
|
if(!utils.requestError(res)){
|
return false;
|
}
|
// this.setGoodsList()
|
this.updateGoodsList(res);
|
utils.cartNum();
|
},
|
fail: function (errmsg) {
|
utils.requestFail(errmsg,'/shopping/cart.do');
|
}
|
})
|
} else if (res.cancel) {
|
console.log('用户点击取消')
|
}
|
}
|
})
|
|
|
},
|
// 每个元素的单独选择事件
|
selectTap: function(e) {
|
// let cartId = e.currentTarget.dataset.cartId;
|
// var index = e.currentTarget.dataset.index;
|
// var list = this.data.goodsList.list;
|
// if (index !== "" && index != null) {
|
// list[parseInt(index)].active = !list[parseInt(index)].active;
|
// this.setData({
|
// ['goodsList.list']: list
|
// });
|
// }
|
|
let list = this.data.goodsList.list;
|
|
// 商品的本地选中状态切换
|
let index = e.currentTarget.dataset.index;
|
if (index !== "" && index != null) {
|
list[parseInt(index)].active = !list[parseInt(index)].active;
|
}
|
|
// 保存本地被选中的商品cartid
|
let arrList = [];
|
for (let i = 0; i < list.length; i++) {
|
if (list[i].active == true) {
|
arrList.push(list[i].CartId);
|
}
|
}
|
console.log(arrList)
|
|
let cartID = arrList.join(";")
|
console.log(cartID)
|
wx.showLoading();
|
// 提交本地被选中的商品cartid到服务器同步
|
wx.request({
|
url: utils.getUrl('/shopping/cart.do?m=checkbox&checkbox=' + cartID),
|
header: {
|
"Cookie": "JSESSIONID=" + wx.getStorageSync('sessionID')
|
},
|
// data: {
|
// checkbox:
|
// },
|
success: res => {
|
wx.hideLoading();
|
if(!utils.requestError(res)){
|
return false;
|
}
|
// this.setGoodsList()
|
this.updateGoodsList(res);
|
},
|
fail: function (errmsg) {
|
utils.requestFail(errmsg,'/shopping/cart.do');
|
}
|
})
|
|
},
|
|
// // 数量加
|
// jiaBtnTap: function(e) {
|
// let index = e.currentTarget.dataset.index;
|
// let id = e.currentTarget.dataset.id;
|
// let cartId = e.currentTarget.dataset.cartId;
|
// let list = this.data.goodsList.list;
|
// let Mininum = list[parseInt(index)].Mininum>0?list[parseInt(index)].Mininum:1;
|
// if (index !== "" && index != null) {
|
// if (list[parseInt(index)].Quantity < 10000-Mininum) {
|
// list[parseInt(index)].Quantity+=Mininum;
|
|
// wx.request({
|
// url: utils.getUrl('/shopping/cart.do?m=edit&quantity_' + cartId + '=' + list[parseInt(index)].Quantity),
|
// header: {
|
// "Cookie": "JSESSIONID=" + wx.getStorageSync('sessionID')
|
// },
|
// success: res => {
|
// if(!utils.requestError(res)){
|
// return false;
|
// }
|
// this.setGoodsList();
|
|
// },
|
// fail: function(errmsg) {
|
// utils.requestFail(errmsg,'/shopping/cart.do');
|
// }
|
// })
|
|
// }
|
// }
|
// },
|
// // 数量减
|
// jianBtnTap: function(e) {
|
// let index = e.currentTarget.dataset.index;
|
// let id = e.currentTarget.dataset.id;
|
// let cartId = e.currentTarget.dataset.cartId;
|
// let list = this.data.goodsList.list;
|
// let Mininum = list[parseInt(index)].Mininum>0?list[parseInt(index)].Mininum:1;
|
|
// if (index !== "" && index != null) {
|
// let Quantity = list[parseInt(index)].Quantity;
|
// if (Quantity > Mininum) {
|
// Quantity-=Mininum;
|
// Quantity = Quantity>1 ? Quantity : 1;
|
// wx.request({
|
// url: utils.getUrl('/shopping/cart.do?m=edit&quantity_' + cartId + '=' + Quantity),
|
// header: {
|
// "Cookie": "JSESSIONID=" + wx.getStorageSync('sessionID')
|
// },
|
// success: res => {
|
// if(!utils.requestError(res)){
|
// return false;
|
// }
|
// this.setGoodsList();
|
// },
|
// fail: function(errmsg) {
|
// utils.requestFail(errmsg,'/shopping/cart.do');
|
// }
|
// })
|
|
// }
|
// }
|
// },
|
// // 数量输入
|
// inputNum: function(e) {
|
// // var index = e.currentTarget.dataset.index;
|
// // var list = this.data.goodsList.list;
|
// // if (index !== "" && index != null) {
|
// // list[parseInt(index)].num = parseInt(e.detail.value);
|
// // if (e.detail.value >= 9999) {
|
// // list[parseInt(index)].num = 9999;
|
// // }
|
// // if (e.detail.value <= 1) {
|
// // list[parseInt(index)].num = 1;
|
// // }
|
// // this.setGoodsList();
|
|
// // }
|
// let index = e.currentTarget.dataset.index;
|
// let id = e.currentTarget.dataset.id;
|
// let cartId = e.currentTarget.dataset.cartId;
|
// let list = this.data.goodsList.list;
|
// if (index !== "" && index != null) {
|
// // list[parseInt(index)].Quantity = parseInt(e.detail.value);
|
// if (e.detail.value >= 999999) {
|
// e.detail.value = 999999;
|
// }
|
// if (e.detail.value <= 0) {
|
// e.detail.value = 1;
|
// }
|
// // let num = Math.abs(parseInt(e.detail.value) - list[parseInt(index)].Quantity);
|
|
// let numVal = Math.floor(e.detail.value*100)/100
|
// wx.request({
|
// url: utils.getUrl('/shopping/cart.do?m=edit&quantity_' + cartId + '=' + numVal),
|
// header: {
|
// "Cookie": "JSESSIONID=" + wx.getStorageSync('sessionID')
|
// },
|
// // data: {
|
// // matcode: id,
|
// // quantity: parseInt(e.detail.value)
|
// // },
|
// success: res => {
|
// if(!utils.requestError(res)){
|
// return false;
|
// }
|
// this.setGoodsList();
|
// },
|
// fail: function(errmsg) {
|
// utils.requestFail(errmsg,'/shopping/cart.do');
|
// }
|
// })
|
|
|
// }
|
// },
|
inp: function() {
|
console.log("(*^▽^*)");
|
},
|
|
quantityEdit(e){
|
console.log(e);
|
// let index = e.currentTarget.dataset.index;
|
let newQuantity = parseFloat(e.detail.quantity);
|
// let id = e.currentTarget.dataset.id;
|
let cartId = e.currentTarget.dataset.cartId;
|
// let list = this.data.goodsList.list;
|
console.log('localOrderListData........',this.data.localOrderListData)
|
wx.showLoading();
|
wx.request({
|
url: utils.getUrl('/shopping/cart.do?m=edit&json=true&quantity_' + cartId + '=' + newQuantity),
|
header: {
|
"Cookie": "JSESSIONID=" + wx.getStorageSync('sessionID')
|
},
|
// data: {
|
// matcode: id,
|
// quantity: parseInt(e.detail.value)
|
// },
|
success: res => {
|
wx.hideLoading();
|
if(!utils.requestError(res)){
|
return false;
|
}
|
// this.setGoodsList();
|
this.updateGoodsList(res);
|
},
|
fail: function(errmsg) {
|
utils.requestFail(errmsg,'/shopping/cart.do');
|
}
|
})
|
},
|
|
|
// 删除选中
|
deleteSelected: function() {
|
let list = this.data.goodsList.list;
|
// for (var i in list) {
|
// var cartItem = list[i];
|
// // 对购物车进行遍历,如果当前是选中状态,删除当前元素
|
// if (cartItem.active) {
|
// list.splice(i--, 1);
|
// }
|
// }
|
|
// let cartId = e.currentTarget.dataset.cartId;
|
let arrList = [];
|
for (let i = 0; i < list.length; i++) {
|
if (list[i].isChecked == true) {
|
arrList.push(list[i].CartId);
|
}
|
}
|
|
let cartID = arrList.join(";")
|
|
wx.showModal({
|
title: '提示',
|
content: '确定删除所选项吗?',
|
success: res => {
|
if (res.confirm) {
|
wx.showLoading();
|
wx.request({
|
url: utils.getUrl('/shopping/cart.do?m=del&key=' + cartID),
|
header: {
|
"Cookie": "JSESSIONID=" + wx.getStorageSync('sessionID')
|
},
|
// data: {
|
// checkbox:
|
// },
|
success: res => {
|
wx.hideLoading();
|
if(!utils.requestError(res)){
|
return false;
|
}
|
// this.setGoodsList()
|
this.updateGoodsList(res);
|
utils.cartNum();
|
},
|
fail: function (errmsg) {
|
utils.requestFail(errmsg,'/shopping/cart.do');
|
}
|
})
|
} else if (res.cancel) {
|
console.log('用户点击取消')
|
}
|
}
|
})
|
|
|
|
|
},
|
|
// getSubscribeMsg(e){
|
// utils.subscribeMessage({
|
// callback:()=>{
|
// this.toPayOrder(e);
|
// }
|
// })
|
// },
|
|
getSelectedCartIds(){
|
console.log(this.data.goodsList.list);
|
let cartIdList = [];
|
this.data.goodsList.list.map((item)=>{
|
if (item.isChecked) {
|
cartIdList.push(item.CartId);
|
}
|
})
|
let allCartId = cartIdList.join(';');
|
console.log(allCartId);
|
return allCartId;
|
},
|
|
// 提交订单
|
toPayOrder: function (e) {
|
if (this.data.goodsList.noSelect) {
|
utils.showTip("请至少选择一件商品!", "none");
|
return;
|
}
|
// console.log(this.data.isAuthorize)
|
// utils.isAuthorize(this);
|
// // console.log(this.isAuthorize)
|
// if(!this.data.isAuthorize){
|
// if (!utils.authorize(e, this)){
|
// return;
|
// }
|
// }
|
// wx.showLoading();
|
// // 重新计算价格,判断库存
|
// var shopList = [];
|
// var cartInfo = wx.getStorageSync('cartData');
|
// shopList = cartInfo;
|
// if (shopList.length == 0) {
|
// utils.showTip("请至少选择一件商品!", "none");
|
// return;
|
// }
|
// var orderData = new Array();
|
// for (var i = 0; i < shopList.length; i++) {
|
// //把选择的放进订单存储中
|
// if (shopList[i].active) {
|
// //判断库存
|
// // if (shopList[i].good_number < shopList[i].number) {
|
// // utils.showTip(shopList[i].name + "商品库存不足", "loading");
|
// // return;
|
// // }
|
// // else {
|
// orderData.push(shopList[i]);
|
// // }
|
// }
|
// }
|
// wx.setStorage({
|
// key: "orderData",
|
// data: orderData
|
// })
|
// this.clear();
|
// },
|
// //清除提交订单时选中的购物车商品缓存
|
// clear: function() {
|
|
// // wx.removeStorageSync('cartData')
|
// var cartArr = wx.getStorageSync("cartData");
|
// var newArr = [];
|
// for (var i in cartArr) {
|
// if (!cartArr[i].active) {
|
// newArr.push(cartArr[i]);
|
// }
|
// }
|
// wx.setStorage({
|
// key: 'cartData',
|
// data: newArr
|
// })
|
|
// wx.hideLoading();
|
|
let allCartId = this.getSelectedCartIds();
|
wx.navigateTo({
|
url: '../order/order?selectedCartIds='+allCartId
|
})
|
// wx.request({
|
// url: utils.getUrl('/shopping/confirm.do?m=isLogin'),
|
// header: {
|
// "Cookie": "JSESSIONID=" + wx.getStorageSync('sessionID')
|
// },
|
// success: res => {
|
// wx.hideLoading();
|
// if(!utils.requestError(res)){
|
// return false;
|
// }
|
// if(res.data.isLogin){
|
// wx.navigateTo({
|
// url: '../order/order?selectedCartIds='+allCartId
|
// })
|
// } else {
|
// wx.navigateTo({
|
// url: '../authorize/authorize?fromPage=cart'
|
// })
|
// }
|
|
// },
|
// fail: function (errmsg) {
|
// utils.requestFail(errmsg,'/shopping/confirm.do');
|
// }
|
// })
|
|
},
|
|
|
|
// 全选,全不选事件
|
bindAllSelect: function() {
|
let currentAllSelect = this.data.goodsList.allSelect;
|
let list = this.data.goodsList.list;
|
let arrList = [];
|
// 全不选
|
if (currentAllSelect) {
|
wx.showLoading();
|
wx.request({
|
url: utils.getUrl('/shopping/cart.do?m=checkbox&checkbox='),
|
header: {
|
"Cookie": "JSESSIONID=" + wx.getStorageSync('sessionID')
|
},
|
success: res => {
|
wx.hideLoading();
|
if(!utils.requestError(res)){
|
return false;
|
}
|
// this.setGoodsList()
|
this.updateGoodsList(res);
|
},
|
fail: function (errmsg) {
|
utils.requestFail(errmsg,'/shopping/cart.do');
|
}
|
})
|
}
|
// 全选
|
else {
|
for (let i = 0; i < list.length; i++) {
|
arrList.push(list[i].CartId);
|
}
|
let cartID = arrList.join(";")
|
wx.showLoading();
|
// 提交本地被选中的商品cartid到服务器同步
|
wx.request({
|
url: utils.getUrl('/shopping/cart.do?m=checkbox&checkbox=' + cartID),
|
header: {
|
"Cookie": "JSESSIONID=" + wx.getStorageSync('sessionID')
|
},
|
success: res => {
|
wx.hideLoading();
|
if(!utils.requestError(res)){
|
return false;
|
}
|
// this.setGoodsList()
|
this.updateGoodsList(res);
|
},
|
fail: function (errmsg) {
|
utils.requestFail(errmsg,'/shopping/cart.do');
|
}
|
})
|
}
|
},
|
|
|
// 编辑按钮点击
|
editTap: function() {
|
this.setData({
|
['goodsList.edit']: false
|
});
|
},
|
|
|
// 完成按钮点击
|
saveTap: function() {
|
this.setData({
|
['goodsList.edit']: true
|
});
|
|
},
|
|
updateGoodsList(res){
|
let edit = this.data.goodsList.edit;
|
let num = res.data.CartItems || 0;
|
if (app.globalData.cartIndex>-1||app.globalData.cartIndex<6) {
|
try {
|
wx.setTabBarBadge({
|
index: app.globalData.cartIndex,
|
text: num.toString()
|
})
|
} catch (error) {
|
console.log(error);
|
|
}
|
}
|
let isAllSelect = false;
|
let isNoSelect = false;
|
if (res.data.CartItems == res.data.SelectItems) {
|
isAllSelect = true;
|
isNoSelect = false;
|
} else if (res.data.SelectItems == 0) {
|
isAllSelect = false;
|
isNoSelect = true;
|
}
|
this.setData({
|
goodsList: {
|
edit: edit, //是否显示编辑
|
totalPrice: res.data.SelectTotalAmount, // 总价
|
allSelect: isAllSelect, // 全选状态
|
noSelect: isNoSelect, // 全不选状态
|
list: res.data.list // 购物车数据
|
}
|
})
|
|
|
//初始化 active 更新服务器选中状态为本地商品选中状态
|
let list = this.data.goodsList.list;
|
for (let i = 0; i < list.length; i++) {
|
list[i].active = list[i].isChecked
|
}
|
this.setData({
|
['goodsList.list']: list
|
})
|
},
|
// 获得edit按钮的状态
|
// 更新各种状态的值
|
setGoodsList: function() {
|
// let edit = this.data.goodsList.edit;
|
wx.showLoading();
|
wx.request({
|
url: utils.getUrl('/shopping/cart.do?m=getCartList'),
|
header: {
|
"Cookie": "JSESSIONID=" + wx.getStorageSync('sessionID')
|
},
|
success: res => {
|
wx.hideLoading();
|
if(!utils.requestError(res)){
|
return false;
|
}
|
this.updateGoodsList(res);
|
// let num = res.data.CartItems || 0;
|
// if (app.globalData.cartIndex>-1||app.globalData.cartIndex<6) {
|
// wx.setTabBarBadge({
|
// index: app.globalData.cartIndex,
|
// text: num.toString()
|
// })
|
// }
|
// let isAllSelect = false;
|
// let isNoSelect = false;
|
// if (res.data.CartItems == res.data.SelectItems) {
|
// isAllSelect = true;
|
// isNoSelect = false;
|
// } else if (res.data.SelectItems == 0) {
|
// isAllSelect = false;
|
// isNoSelect = true;
|
// }
|
// this.setData({
|
// goodsList: {
|
// edit: edit, //是否显示编辑
|
// totalPrice: res.data.SelectTotalAmount, // 总价
|
// allSelect: isAllSelect, // 全选状态
|
// noSelect: isNoSelect, // 全不选状态
|
// list: res.data.list // 购物车数据
|
// }
|
// })
|
|
|
// //初始化 active 更新服务器选中状态为本地商品选中状态
|
// let list = this.data.goodsList.list;
|
// for (let i = 0; i < list.length; i++) {
|
// list[i].active = list[i].isChecked
|
// }
|
// this.setData({
|
// ['goodsList.list']: list
|
// })
|
},
|
fail: function(errmsg) {
|
utils.requestFail(errmsg,'/shopping/cart.do');
|
}
|
})
|
|
}
|
|
})
|