// eaterplanet_ecommerce/pages/order/shopCart.js var util = require('../../utils/util.js'); var status = require('../../utils/index.js'); var a = require("../../utils/public"); var app = getApp(); var addFlag = 1; Page({ mixins: [require('../../mixin/globalMixin.js')], data: { allselect: false, community_id: 0, allnum: 0, allcount: "0.00", recount: "0.00", carts: {}, isEmpty: false, needAuth: false, cartNum: 0, isIpx: false, disAmount: 0, totalAmount: 0, tabIdx: 0, updateCart: 0, invalidCarts: {}, tabList: [], groupInfo: { group_name: '社区', owner_name: '团长' } }, /** * 生命周期函数--监听页面加载 */ onLoad: function() { let that = this; status.setGroupInfo().then((groupInfo) => { that.setData({ groupInfo }) }); wx.hideTabBar(); wx.showLoading(); }, /** * 授权成功回调 */ authSuccess: function() { wx.reLaunch({ url: '/eaterplanet_ecommerce/pages/order/shopCart', }) }, authModal: function () { if (this.data.needAuth) { this.setData({ showAuthModal: !this.data.showAuthModal }); } }, /** * 生命周期函数--监听页面显示 */ onShow: function() { let that = this; util.check_login_new().then((res) => { console.log(res) if (res) { var community = wx.getStorageSync('community'); var community_id = community.communityId || ''; that.setData({ needAuth: false, isEmpty: false, tabbarRefresh: true, community_id: community_id, isIpx: app.globalData.isIpx }); (0, status.cartNum)('', true).then((res) => { res.code == 0 && that.setData({ cartNum: res.data }) }); that.showCartGoods(); } else { that.setData({ needAuth: true, isEmpty: true }); wx.hideLoading(); } }) }, /** * 获取购物车信息20190604 */ showCartGoods: function(){ let that = this; var community = wx.getStorageSync('community'); var community_id = community.communityId; console.log('onshow购物车里面的community_id:'); that.setData({ community_id: community_id }) var token = wx.getStorageSync('token'); app.util.request({ 'url': 'entry/wxapp/index', 'data': { controller: 'car.show_cart_goods', token: token, community_id: community_id, buy_type: 'dan', }, dataType: 'json', success: function (res) { // wx.hideLoading(); setTimeout(function(){ wx.hideLoading(); },1000); if (res.data.code == 0) { //20190720 let mult_carts = res.data.mult_carts || []; let carts = {}; let tabIdx = that.data.tabIdx; let showTab = false; // tab名称自定义 let { shopcar_tab_express_name, shopcar_tab_all_name } = res.data; let tabList = [ { id: 0, name: shopcar_tab_all_name || '全部商品', enabled: false }, { id: 1, name: shopcar_tab_express_name || '快递商品', enabled: false }, { id: 2, name: '到店核销', enabled: false }, { id: 3, name: '同城配送', enabled: false } ]; //20200220 let mulCartArr = Object.keys(mult_carts); let objLen = mulCartArr.length; if (objLen > 1){ showTab = true; mulCartArr.forEach((item)=>{ tabList[item].enabled = true; }) carts = mult_carts[tabIdx] || {}; } else if(objLen==1) { tabIdx = mulCartArr[0]; carts = mult_carts[tabIdx] || {}; } let isEmpty = true; if (Object.keys(carts).length != 0) { isEmpty = false; carts = that.sortCarts(carts); } let { man_free_tuanzshipping, delivery_tuanz_money, is_comunity_rest, open_man_orderbuy, man_orderbuy_money, is_show_guess_like, is_open_vipcard_buy, is_vip_card_member, vipcard_save_money, modify_vipcard_name, is_member_level_buy, level_save_money, open_tuan_ship, full_list, is_open_fullreduction, localtown_moneytype_fixed_deliverymoney, localtown_moneytype_fixed_freemoney } = res.data; that.setData({ tabIdx, carts, mult_carts, showTab, isEmpty, is_comunity_rest, open_man_orderbuy, man_orderbuy_money: man_orderbuy_money * 1, is_show_guess_like, man_free_tuanzshipping, // 需要金额 delivery_tuanz_money, //配送费 is_open_vipcard_buy, is_vip_card_member, vipcard_save_money, modify_vipcard_name: modify_vipcard_name?modify_vipcard_name:'天机会员', is_member_level_buy, level_save_money, tabList, open_tuan_ship, full_list, is_open_fullreduction, localtown_moneytype_fixed_deliverymoney, localtown_moneytype_fixed_freemoney }) that.xuan_func(); } else { that.setData({ needAuth: true, isEmpty: true }) } } }) }, onHide: function() { this.setData({ tabbarRefresh: false }) console.log('onHide') }, /** * 商品排序 */ sortCarts: function(carts) { // 先剔除失效(保留原有结构)=>再分出满减 let is_open_fullreduction = 0; let full_reducemoney = 0; let full_money = 0; let invalidCarts = {}; let hasInvalid = 0; for (let i in carts) { is_open_fullreduction = carts[i].is_open_fullreduction; full_reducemoney = carts[i].full_reducemoney; full_money = carts[i].full_money; invalidCarts[i] = { id: carts[i].id, shopcarts: [] }; let shopcarts = carts[i].shopcarts; let oriShopcarts = []; shopcarts.forEach(function(item, index) { if(item.can_buy==0 || item.option_can_buy==0) { invalidCarts[i].shopcarts.push(item); hasInvalid += 1; } else { oriShopcarts.push(item); } }) carts[i].shopcarts = oriShopcarts; oriShopcarts.sort(function(x, y) { if (x.can_man_jian < y.can_man_jian) { return 1; } if (x.can_man_jian > y.can_man_jian) { return -1; } return 0; }); } this.setData({ is_open_fullreduction, full_reducemoney, full_money, invalidCarts, hasInvalid }); return carts; }, xuan_func: function() { var allnum = 0; var allcount = 0 var flag = 1; var allselect = false; var all_cant_buy = 1; for (var i in this.data.carts) { var count = 0; this.data.carts[i].goodstypeselect = 0; this.data.carts[i].goodstype = this.data.carts[i].shopcarts.length; for (var j = 0; j < this.data.carts[i].shopcarts.length; j++) { let shopcartsItem = this.data.carts[i].shopcarts[j]; if (shopcartsItem.isselect == false && shopcartsItem.can_buy == 1 && shopcartsItem.can_buy == 1 && shopcartsItem.option_can_buy == 1) flag = 0; if (shopcartsItem.isselect && shopcartsItem.can_buy == 1 && shopcartsItem.can_buy == 1 && shopcartsItem.option_can_buy == 1) { all_cant_buy = 0; //20190927 count = this.calcVipPrice(count, shopcartsItem); this.data.carts[i].goodstypeselect++; allnum = parseInt(allnum) + parseInt(shopcartsItem.goodsnum); } if (shopcartsItem.can_buy == 0) shopcartsItem.isselect = false; } this.data.carts[i].count = count.toFixed(2); allcount = allcount + count; } if (flag == 1 && all_cant_buy == 0) { //是全部选中 allselect = true; } this.setData({ allselect: allselect, allnum: allnum, allcount: allcount.toFixed(2), carts: this.data.carts }); this.calcAmount(); }, //编辑点击事件处理函数 edit: function(e) { var index = parseInt(e.target.dataset.index); this.data.carts[index].caredit = "none"; this.data.carts[index].finish = "inline"; for (var i = 0; i < this.data.carts[index].shopcarts.length; i++) { this.data.carts[index].shopcarts[i].edit = "none"; this.data.carts[index].shopcarts[i].finish = "inline"; this.data.carts[index].shopcarts[i].description = "onedit-description"; this.data.carts[index].shopcarts[i].cartype = "block"; } this.setData({ carts: this.data.carts }) }, //完成点击事件处理函数 finish: function(e) { var index = parseInt(e.target.dataset.index); this.data.carts[index].caredit = "inline"; this.data.carts[index].finish = "none"; for (var i = 0; i < this.data.carts[index].shopcarts.length; i++) { this.data.carts[index].shopcarts[i].edit = "inline"; this.data.carts[index].shopcarts[i].finish = "none"; this.data.carts[index].shopcarts[i].description = "description"; this.data.carts[index].shopcarts[i].cartype = "inline"; } this.setData({ carts: this.data.carts }) }, goLink: function(event) { let link = event.currentTarget.dataset.link; wx.navigateTo({ url: link }) }, goGoods: function(event) { let id = event.currentTarget.dataset.type; var pages_all = getCurrentPages(); if (pages_all.length > 3) { wx.redirectTo({ url: '/Snailfish_shop/pages/goods/index?id=' + id }) } else { wx.navigateTo({ url: '/Snailfish_shop/pages/goods/index?id=' + id }) } }, //店铺点击选择事件 shopselect: function(e) { var index = parseInt(e.target.dataset.index); var allselect = this.data.allselect; var isselect = this.data.carts[index].isselect; var allnum = 0; var allcount = 0.00; var count = 0.00; if (isselect == true) { //店铺为选中状态 this.data.carts[index].isselect = false; allselect = false; for (var i = 0; i < this.data.carts[index].shopcarts.length; i++) { //循环商店下商品,改成不选中 if (this.data.carts[index].shopcarts[i].isselect == true) { this.data.carts[index].shopcarts[i].isselect = false; allnum = parseInt(allnum) + parseInt(this.data.carts[index].shopcarts[i].goodsnum); this.data.carts[index].goodstypeselect = this.data.carts[index].goodstypeselect - 1; } } allnum = this.data.allnum - allnum; //去除不选中商店的产品数量 allcount = parseFloat(this.data.allcount) - parseFloat(this.data.carts[index].count); this.data.carts[index].count = "0.00"; this.setData({ carts: this.data.carts, allnum: allnum, allcount: allcount.toFixed(2), allselect: allselect }); } else { var addcount = 0.00; this.data.carts[index].isselect = true; for (var i = 0; i < this.data.carts[index].shopcarts.length; i++) { let goodsItem = this.data.carts[index].shopcarts[i]; if (goodsItem.isselect == false) { goodsItem.isselect = true; this.data.carts[index].goodstypeselect = this.data.carts[index].goodstypeselect + 1; allnum = parseInt(allnum) + parseInt(goodsItem.goodsnum); addcount = this.calcVipPrice(addcount, goodsItem); } // 20190927 count = this.calcVipPrice(count, goodsItem); } allnum = this.data.allnum + allnum; allcount = parseFloat(this.data.allcount) + addcount; this.data.carts[index].count = count.toFixed(2); var flag = 1; for (var i in this.data.carts) { for (var j = 0; j < this.data.carts[i].shopcarts.length; j++) if (this.data.carts[i].shopcarts[j].isselect == false) flag = 0; } if (flag == 1) { //是全部选中 allselect = true; } this.setData({ carts: this.data.carts, allnum: allnum, allcount: allcount.toFixed(2), allselect: allselect }); } this.go_record(); }, //点击商品选中事件函数 goodsselect: function(e) { var parentid = parseInt(e.target.dataset.parentid); var index = parseInt(e.target.dataset.index); var allselect = this.data.allselect; let goodsItem = this.data.carts[parentid].shopcarts[index]; var isselect = goodsItem.isselect; if (isselect == true) { //商品选中状态 goodsItem.isselect = false; if (allselect) allselect = false; this.data.carts[parentid].goodstypeselect = parseInt(this.data.carts[parentid].goodstypeselect) - 1; if (this.data.carts[parentid].goodstypeselect <= 0) { //选中商品为0 this.data.carts[parentid].isselect = false; } var allnum = parseInt(this.data.allnum) - parseInt(goodsItem.goodsnum); // 20190927 var allcount = this.calcVipPrice(this.data.allcount, goodsItem, '', 'red'); var count = this.calcVipPrice(this.data.carts[parentid].count, goodsItem, '', 'red'); this.data.carts[parentid].count = count.toFixed(2); this.setData({ carts: this.data.carts, allnum: allnum, allcount: allcount.toFixed(2), allselect: allselect }); } else { //商品为非选中状态 goodsItem.isselect = true; this.data.carts[parentid].goodstypeselect = parseInt(this.data.carts[parentid].goodstypeselect) + 1; if (this.data.carts[parentid].goodstypeselect > 0) { //选中商品个数大于0 this.data.carts[parentid].isselect = true; } var flag = 1; for (var i in this.data.carts) { console.log('in'); for (var j = 0; j < this.data.carts[i].shopcarts.length; j++) if (this.data.carts[i].shopcarts[j].isselect == false && this.data.carts[i].shopcarts[j].can_buy == 1 && this.data.carts[i].shopcarts[j].option_can_buy == 1) flag = 0; } if (flag == 1) { //全部商品选中 allselect = true; } var allnum = parseInt(this.data.allnum) + parseInt(goodsItem.goodsnum); // 20190927 var allcount = this.calcVipPrice(this.data.allcount, goodsItem); var count = this.calcVipPrice(this.data.carts[parentid].count, goodsItem); this.data.carts[parentid].count = count.toFixed(2); this.setData({ carts: this.data.carts, allnum: allnum, allcount: allcount.toFixed(2), allselect: allselect }); } this.go_record(); }, //全部选中事件函数 allselect: function(e) { var allselect = this.data.allselect; var carts = this.data.carts; if (allselect) { //点击前为全部选中状态 allselect = false; var allnum = 0; var allcount = 0.00; for (var i in this.data.carts) { this.data.carts[i].count = "0.00"; this.data.carts[i].isselect = false; this.data.carts[i].goodstypeselect = 0; for (var j in this.data.carts[i].shopcarts) this.data.carts[i].shopcarts[j].isselect = false; } this.setData({ carts: this.data.carts, allnum: allnum, allcount: allcount.toFixed(2), allselect: allselect }); } else { //点击前为不全部选址状态 allselect = true; var allnum = 0; var allcount = 0.00; for (var i in this.data.carts) { var count = 0; this.data.carts[i].isselect = true; let shopcarts = this.data.carts[i].shopcarts; this.data.carts[i].goodstypeselect = shopcarts.length; for (var j in shopcarts) { if (shopcarts[j].can_buy == 1 && shopcarts[j].option_can_buy == 1) { //20190927 count = this.calcVipPrice(count, shopcarts[j]); allnum = parseInt(allnum) + parseInt(this.data.carts[i].shopcarts[j].goodsnum); shopcarts[j].isselect = true; } } this.data.carts[i].count = count.toFixed(2); allcount = allcount + count; } this.setData({ carts: this.data.carts, allnum: allnum, allcount: allcount.toFixed(2), allselect: allselect }); } this.go_record(); }, //减少商品数量函数 regoodsnum: function(e) { var parentid = parseInt(e.currentTarget.dataset.parentid); var index = parseInt(e.currentTarget.dataset.index); let updateCart = this.data.updateCart; let goodsItem = this.data.carts[parentid].shopcarts[index]; // 起购数量 let goods_start_count = goodsItem.goods_start_count || 1; var that = this; var goodsnum = goodsItem.goodsnum; if (goodsnum == 1 || goodsnum<=goods_start_count) { //减少前商品数量为1 that.cofirm_del(parentid, index); } else { //减少前商品的数量不为1 if (goodsItem.isselect == true) { //商品为选中状态 var allnum = parseInt(this.data.allnum) - 1; //20190927 var allcount = this.calcVipPrice(that.data.allcount, goodsItem, 1, 'red'); var count = this.calcVipPrice(this.data.carts[parentid].count, goodsItem, 1, 'red'); that.data.carts[parentid].count = count.toFixed(2); goodsItem.goodsnum = goodsItem.goodsnum - 1; this.setData({ carts: this.data.carts, allnum: allnum, allcount: allcount.toFixed(2) }); } else { //商品为非选中状态 goodsItem.goodsnum = parseInt(goodsItem.goodsnum) - 1; this.setData({ carts: this.data.carts }); } } if (goodsItem.goodstype == '') { let goodsnum = goodsItem.goodsnum * 1; let gid = e.currentTarget.dataset.gid; status.indexListCarCount(gid, goodsnum); that.setData({ updateCart: updateCart + 1 }) } let cur_car_key = goodsItem.key || ''; that.go_record(cur_car_key); }, /** * 确认删除提示框 */ cofirm_del: function(parentid, index, type = 1) { let that = this; let updateCart = this.data.updateCart; let goodsItem = that.data.carts[parentid].shopcarts[index]; // 起购数量 let goods_start_count = goodsItem.goods_start_count || 1; let content = ''; if(goods_start_count>1) content =`该商品的起购数是${goods_start_count},`; wx.showModal({ title: '提示', content: content + '确定删除这件商品吗?', confirmColor: "#4facfe", success: function(res) { if (res.confirm) { if (goodsItem.goodstype == '') { let gid = goodsItem.id; status.indexListCarCount(gid, 0); that.setData({ updateCart: updateCart + 1 }) } var del_car_keys = goodsItem.key; // 起购数量 let goodsnum = goodsItem.goodsnum; let reduceNum = goods_start_count; if(goodsnum { res.code == 0 && that.setData({ cartNum: res.data }) }); if (goodsItem.goodstype == '') { let goodsnum = goodsItem.goodsnum * 1; let gid = e.currentTarget.dataset.gid; status.indexListCarCount(gid, goodsnum); that.setData({ updateCart: updateCart + 1 }) } } else { goodsItem.goodsnum = parseInt(goodsItem.goodsnum) - 1; if (goodsItem.isselect == true) { // 20190927 var allcount_new = that.calcVipPrice(that.data.allcount, goodsItem, 1, 'red'); var count_new = that.calcVipPrice(that.data.carts[parentid].count, goodsItem, 1, 'red'); that.data.carts[parentid].count = count_new.toFixed(2); allnum--; that.setData({ allnum: allnum, allcount: allcount_new.toFixed(2) }); } that.setData({ carts: that.data.carts }); wx.showToast({ title: msg.data.msg, icon: 'none', duration: 2000 }) } addFlag = 1; that.calcAmount(); } }) }, /** * 输入框监控 */ changeNumber: function(e) { if (Object.keys(this.data.carts).length<=0) return; wx.hideLoading(); var that = this; var parentid = parseInt(e.currentTarget.dataset.parentid); var index = parseInt(e.currentTarget.dataset.index); var iptVal = e.detail.value; var newCount = that.count_goods(parentid, index); let goodsItem = this.data.carts[parentid].shopcarts[index]; let lastGoodsnum = goodsItem.goodsnum; console.log(iptVal); let updateCart = this.data.updateCart || 0; if (iptVal > 0) { var max_quantity = parseInt(goodsItem.max_quantity); if (iptVal > max_quantity) { iptVal = max_quantity; wx.showToast({ title: '不能购买更多啦', icon: 'none' }) } goodsItem.goodsnum = iptVal; if (that.data.carts[parentid].shopcarts[index].isselect == true) { //商品为选中状态 newCount = that.count_goods(parentid, index); } this.setData({ carts: this.data.carts, allnum: newCount.allnum, allcount: newCount.allcount }); var token = wx.getStorageSync('token'); var keys_arr = []; var all_keys_arr = []; var allnum = this.data.allnum; var carts = this.data.carts; for (var i in carts) { for (var j in carts[i]['shopcarts']) { keys_arr.push(carts[i]['shopcarts'][j]['key']); all_keys_arr.push(carts[i]['shopcarts'][j]['key'] + '_' + carts[i]['shopcarts'][j]['goodsnum']); } } app.util.request({ 'url': 'entry/wxapp/index', 'data': { controller: 'car.checkout_flushall', token, car_key: keys_arr, community_id: that.data.community_id, all_keys_arr: all_keys_arr, cur_car_key: goodsItem.key || '' }, method: 'POST', dataType: 'json', success: function(msg) { if (msg.data.code == 0) { that.setData({ carts: that.data.carts }); (0, status.cartNum)('', true).then((res) => { res.code == 0 && that.setData({ cartNum: res.data }) }); if (that.data.carts[parentid].shopcarts[index].goodstype == '') { let goodsnum = that.data.carts[parentid].shopcarts[index].goodsnum * 1; let gid = that.data.carts[parentid].shopcarts[index].id; status.indexListCarCount(gid, goodsnum); that.setData({ updateCart: updateCart + 1 }) } that.go_record(); } else { that.data.carts[parentid].shopcarts[index].goodsnum = lastGoodsnum; if (that.data.carts[parentid].shopcarts[index].isselect == true) { //商品为选中状态 newCount = that.count_goods(parentid, index); } that.setData({ carts: that.data.carts, allnum: newCount.allnum, allcount: newCount.allcount }); wx.showToast({ title: msg.data.msg, icon: 'none', duration: 2000 }) } } }) } else { wx.hideLoading(); this.data.carts[parentid].shopcarts[index].goodsnum = 1; if (that.data.carts[parentid].shopcarts[index].isselect == true) { //商品为选中状态 newCount = that.count_goods(parentid, index); } this.setData({ carts: this.data.carts, allnum: newCount.allnum, allcount: newCount.allcount }); var token = wx.getStorageSync('token'); var keys_arr = []; var all_keys_arr = []; var allnum = this.data.allnum; var carts = this.data.carts; for (var i in carts) { for (var j in carts[i]['shopcarts']) { keys_arr.push(carts[i]['shopcarts'][j]['key']); all_keys_arr.push(carts[i]['shopcarts'][j]['key'] + '_' + carts[i]['shopcarts'][j]['goodsnum']); } } app.util.request({ 'url': 'entry/wxapp/index', 'data': { controller: 'car.checkout_flushall', 'token': token, 'car_key': keys_arr, community_id: that.data.community_id, 'all_keys_arr': all_keys_arr, cur_car_key: goodsItem.key || '' }, method: 'POST', dataType: 'json', success: function(msg) { if (msg.data.code == 0) { that.setData({ carts: that.data.carts }); (0, status.cartNum)('', true).then((res) => { res.code == 0 && that.setData({ cartNum: res.data }) }); if (that.data.carts[parentid].shopcarts[index].goodstype == '') { let goodsnum = that.data.carts[parentid].shopcarts[index].goodsnum * 1; let gid = that.data.carts[parentid].shopcarts[index].id; status.indexListCarCount(gid, goodsnum); that.setData({ updateCart: updateCart + 1 }) } that.go_record(); } } }) that.cofirm_del(parentid, index); } }, count_goods: function(parentid, index) { let that = this; let carts = this.data.carts; // let cart = carts[parentid]; let allnum = 0; let allcount = 0; for (let carsKey of Object.keys(carts)) { let cart = carts[carsKey]; cart.shopcarts.forEach(function (item, idx) { if (item.isselect) { allcount = that.calcVipPrice(allcount, item); allnum += parseInt(item.goodsnum); } }) } return { allnum, allcount: allcount.toFixed(2) } }, //删除商品函数 delgoods: function(e) { var parentid = parseInt(e.target.dataset.parentid); var index = parseInt(e.target.dataset.index); var that = this; wx.showModal({ title: '提示', content: '确定删除这件商品吗?', confirmColor: "#4facfe", success: function(res) { if (res.confirm) { let goodsItem = that.data.carts[parentid].shopcarts[index]; var del_car_keys = goodsItem.key; if (goodsItem.isselect == true) { //商品为选中状态 var allnum = parseInt(that.data.allnum) - parseInt(goodsItem.goodsnum); // 20190927 var allcount = that.calcVipPrice(that.data.allcount, goodsItem, 1, 'red'); var count = that.calcVipPrice(that.data.carts[parentid].count, goodsItem, 1, 'red'); that.data.carts[parentid].count = count.toFixed(2); that.data.carts[parentid].goodstype = that.data.carts[parentid].goodstype - 1; that.data.carts[parentid].goodstypeselect = that.data.carts[parentid].goodstypeselect - 1 if (that.data.carts[parentid].goodstype == 0) { console.log(parentid); //that.data.carts.splice(parentid, 1) that.data.carts[parentid].shopcarts.splice(index, 1); } else { that.data.carts[parentid].shopcarts.splice(index, 1); } var num = 0; for (var i = 0; i < that.data.carts.length; i++) { for (var j = 0; j < that.data.carts[i].shopcarts.length; j++) { num = num + that.data.carts[i].shopcarts[j].goodsnum; } } if (allnum == num) that.data.allselect = true; that.setData({ carts: that.data.carts, allnum: allnum, allcount: allcount.toFixed(2), allselect: that.data.allselect }); } else { //商品为选中状态 that.data.carts[parentid].goodstype = that.data.carts[parentid].goodstype - 1; if (that.data.carts[parentid].goodstype == 0) { that.data.carts[parentid].shopcarts.splice(index, 1); } else { that.data.carts[parentid].shopcarts.splice(index, 1); } var num = 0; for (var i = 0; i < that.data.carts.length; i++) { for (var j = 0; j < that.data.carts[i].shopcarts.length; j++) { num = num + that.data.carts[i].shopcarts[j].goodsnum; } } if (that.data.allnum == num) that.data.allselect = true; that.setData({ carts: that.data.carts, allselect: that.data.allselect }); } if (that.data.carts[parentid].shopcarts.length == 0) { delete that.data.carts[parentid]; if (Object.keys(that.data.carts).length == 0) { that.setData({ carts: [] }); } } //删除商品 that.del_car_goods(del_car_keys); } } }) this.go_record(); }, del_car_goods: function (carkey, isLose=0) { var token = wx.getStorageSync('token'); var that = this; let updateCart = this.data.updateCart; console.log('del_car_goods:开始'); var community = wx.getStorageSync('community'); var community_id = community.communityId; console.log('缓存中的:' + community_id); console.log('使用中的:' + that.data.community_id); app.util.request({ 'url': 'entry/wxapp/index', 'data': { controller: 'car.del_car_goods', carkey: carkey, community_id: that.data.community_id, token: token }, method: 'POST', dataType: 'json', success: function(msg) { if (msg.data.code == 0 && isLose != 1) { (0, status.cartNum)('', true).then((res) => { res.code == 0 && that.setData({ cartNum: res.data, updateCart: updateCart + 1 }); }); } } }) }, /** * 提示不可购买并提示是否删除 */ delete: function (e) { var parentid = parseInt(e.currentTarget.dataset.parentid); var index = parseInt(e.currentTarget.dataset.index); var isLost = e.currentTarget.dataset.islost || 0; var that = this; wx.showModal({ title: '提示', content: '确认删除这件商品吗?', confirmColor: "#4facfe", success: function(res) { if (res.confirm) { if (isLost==1) { let {hasInvalid,invalidCarts} = that.data; console.log(parentid) let del_car_keys = invalidCarts[parentid].shopcarts[index].key; invalidCarts[parentid].shopcarts.splice(index, 1); hasInvalid -= 1; that.setData({ invalidCarts, hasInvalid }); that.del_car_goods(del_car_keys, 1); } else { let carts = that.data.carts; let del_car_keys = carts[parentid].shopcarts[index].key; carts[parentid].shopcarts.splice(index, 1); that.setData({ carts: carts }); if (carts[parentid].shopcarts.length == 0) { delete carts[parentid]; if (Object.keys(carts).length == 0) { that.setData({ carts: {} }); } } //删除商品 that.del_car_goods(del_car_keys); } } } }) }, //清空失效商品函数 clearlose: function() { var that = this; wx.showModal({ title: '提示', content: '确认清空失效商品吗?', confirmColor: "#4facfe", success: function(res) { if (res.confirm) { let invalidCarts = that.data.invalidCarts; for (let idx in invalidCarts) { let shopcarts = invalidCarts[idx].shopcarts; shopcarts.forEach(function(item){ let del_car_keys = item.key; that.del_car_goods(del_car_keys, 1); }) } that.setData({ hasInvalid: 0, invalidCarts: {} }); } } }) }, //记录购物车状态值,为了下次进来还是和上次一样 go_record: function(cur_car_key='') { var that = this; var token = wx.getStorageSync('token'); var keys_arr = []; var all_keys_arr = []; var allnum = this.data.allnum; var carts = this.data.carts; for (var i in carts) { for (var j in carts[i]['shopcarts']) { if (carts[i]['shopcarts'][j]['isselect']) { keys_arr.push(carts[i]['shopcarts'][j]['key']); } all_keys_arr.push(carts[i]['shopcarts'][j]['key'] + '_' + carts[i]['shopcarts'][j]['goodsnum']); } } app.util.request({ 'url': 'entry/wxapp/index', 'data': { controller: 'car.checkout_flushall', token: token, car_key: keys_arr, community_id: that.data.community_id, all_keys_arr: all_keys_arr, cur_car_key }, method: 'POST', dataType: 'json', success: function(msg) { if (msg.data.code == 0) { // todo (0, status.cartNum)('', true).then((res) => { res.code == 0 && that.setData({ cartNum: res.data }) }); } else { wx.showToast({ title: msg.data.msg, icon: 'none', duration: 2000 }) } } }) that.calcAmount(); }, //结算跳转页面函数 toorder: function() { var token = wx.getStorageSync('token'); var keys_arr = []; var all_keys_arr = []; var that = this; var allnum = this.data.allnum; if (allnum > 0) { var carts = this.data.carts; for (var i in carts) { for (var j in carts[i]['shopcarts']) { if (carts[i]['shopcarts'][j]['isselect']) { keys_arr.push(carts[i]['shopcarts'][j]['key']); } all_keys_arr.push(carts[i]['shopcarts'][j]['key'] + '_' + carts[i]['shopcarts'][j]['goodsnum']); } } app.util.request({ 'url': 'entry/wxapp/index', 'data': { controller: 'car.checkout_flushall', token: token, community_id: that.data.community_id, car_key: keys_arr, all_keys_arr: all_keys_arr }, method: 'POST', dataType: 'json', success: function(msg) { if (msg.data.code == 0) { let is_limit = msg.data.data || 0; wx.navigateTo({ url: '/eaterplanet_ecommerce/pages/order/placeOrder?type=dan&is_limit=' + is_limit }) } else { that.showCartGoods(); wx.showToast({ title: msg.data.msg, icon: 'none', duration: 2000 }) } } }) } else { wx.showModal({ title: '提示', content: '请选择您要购买的商品', confirmColor: "#4facfe", success: function(res) { if (res.confirm) { } } }) } }, goindex: function() { wx.switchTab({ url: '/eaterplanet_ecommerce/pages/index/index', }) }, /** * 计算优惠 */ calcAmount: function() { let { is_open_vipcard_buy, is_vip_card_member, carts, delivery_tuanz_money, man_free_tuanzshipping, full_list, allcount, tabIdx } = this.data; let totalAmount = 0; //合计 let disAmount = 0; //优惠 let diffMoney = 0; //差多少可满减 let cartsArr = Object.keys(carts); let allReducGoods = []; //所有满减商品 let full_money = 0; let full_reducemoney = 0; let isCanManJian = 0; // 免配送费 let deliveryGoodsTot = 0; let selectGoodsTot = 0; //商品价格合计 // 开通vip优惠提示 let vipFee = 0; let levelFee = 0; let localtown_fee_list = tabIdx==3?{}:''; //同城配送起送优惠信息 cartsArr.forEach(key => { let cart = carts[key]; let shopcarts = cart.shopcarts; full_money = cart.full_money * 1; full_reducemoney = cart.full_reducemoney * 1; let localtown_fixed_list = cart.localtown_fixed_list || ''; let curSelectGoodsTot = 0; //当前平台选中商品合计 // 1选提取所有的满减商品 shopcarts.forEach(function(item) { if (item.isselect && item.can_man_jian) { allReducGoods.push(item); } if (item.isselect && man_free_tuanzshipping > 0 && delivery_tuanz_money > 0) { if (is_open_vipcard_buy == 1 && is_vip_card_member == 1 && item.is_take_vipcard == 1) { accordTot += item.card_price * item.goodsnum * 1; } else if (item.is_mb_level_buy == 1){ accordTot += item.levelprice * item.goodsnum * 1; } else { accordTot += item.currntprice * item.goodsnum * 1; } } //vip优惠 if (is_open_vipcard_buy == 1 && is_vip_card_member == 1 && item.is_take_vipcard == 1 && item.isselect) { vipFee += (item.currntprice - item.card_price) * item.goodsnum * 1; } else if (item.is_mb_level_buy == 1 && item.isselect) { //等级优惠 levelFee += (item.currntprice - item.levelprice) * item.goodsnum * 1; } //自营商品满减配送费商品合计 if (item.isselect && item.store_id==0) { if (is_open_vipcard_buy == 1 && is_vip_card_member == 1 && item.is_take_vipcard == 1) { deliveryGoodsTot += item.card_price * item.goodsnum * 1; } else if (item.is_mb_level_buy == 1){ deliveryGoodsTot += item.levelprice * item.goodsnum * 1; } else { deliveryGoodsTot += item.currntprice * item.goodsnum * 1; } } // 商品合计 if (item.isselect) { selectGoodsTot += item.currntprice * item.goodsnum * 1; } //同城配送 if (item.isselect && tabIdx==3) { curSelectGoodsTot += item.currntprice * item.goodsnum * 1; } }) if(tabIdx==3){ let { localtown_moneytype_fixed_deliverymoney, localtown_moneytype_fixed_freemoney } = localtown_fixed_list; let localtownCanBuy = localtown_moneytype_fixed_deliverymoney - curSelectGoodsTot; //>0显示起送差额 let localtownManJian = localtown_moneytype_fixed_freemoney - curSelectGoodsTot; //>0显示免配送差额 localtown_fee_list[key] = {}; localtown_fee_list[key].localtownCanBuy = localtownCanBuy.toFixed(2); localtown_fee_list[key].localtownManJian = localtownManJian.toFixed(2); localtown_fee_list[key].localtown_moneytype_fixed_deliverymoney = localtown_moneytype_fixed_deliverymoney; localtown_fee_list[key].localtown_moneytype_fixed_freemoney = localtown_moneytype_fixed_freemoney; } }) // 计算满减金额 let accordTot = 0; allReducGoods.forEach(function(item) { if (item.isselect && item.can_man_jian) { if (is_open_vipcard_buy == 1 && is_vip_card_member == 1 && item.is_take_vipcard==1) { accordTot += item.card_price * item.goodsnum * 1; } else if (item.is_mb_level_buy == 1){ accordTot += item.levelprice * item.goodsnum * 1; } else { accordTot += item.currntprice * item.goodsnum * 1; } isCanManJian = 1; } }) let currentMjIdx = -1; //当前满减索引 full_list.forEach((item, index)=>{ if(accordTot >= item.full_money) { full_money = item.full_money*1; full_reducemoney = item.full_reducemoney*1; full_list[index].disable = true; currentMjIdx = index; } else { full_list[index].disable = false; } }) // 未满足 let cur_full_item = null; // 已享 let sucess_full_item = null; let tot_full_len = full_list.length || 0; if(currentMjIdx==-1){ cur_full_item = full_list[0]; } else { if(currentMjIdx= full_money) { disAmount += full_reducemoney; } else { diffMoney = full_money - accordTot; } let nextDiffMoney = 0; if(full_list.length > currentMjIdx+1) { nextDiffMoney = full_list[currentMjIdx+1].full_money*1 - accordTot; } // 优惠金额(包含满减,会员等级优惠) disAmount += vipFee + levelFee; totalAmount = (allcount * 1 - disAmount).toFixed(2); totalAmount = totalAmount <= 0 ? 0 : totalAmount; let canbuy_tot = allcount * 1; //合计 计算满多少下单使用 let canbuy_other = canbuy_tot - this.data.man_orderbuy_money; let vipTotal = selectGoodsTot; let levelToTal = selectGoodsTot; // 团长满配送费 let diffDeliveryMoney = 0; if (deliveryGoodsTot < man_free_tuanzshipping*1) { diffDeliveryMoney = man_free_tuanzshipping*1 - deliveryGoodsTot; } // 同城配送 let localtownCanBuy = true; //是否可以结算 if(tabIdx==3) { Object.keys(localtown_fee_list).forEach(idx=>{ if(localtown_fee_list[idx].localtownCanBuy>0&&carts[idx].isselect) localtownCanBuy = false; }) } console.log('=====carts=====', Object.keys(carts)) // let cartsNull = false; // if(Object.keys(carts).length==0){cartsNull = true;} this.setData({ // cartsNull, isCanManJian, canbuy_tot, totalAmount, disAmount: disAmount.toFixed(2), diffMoney: diffMoney.toFixed(2), canbuy_other: canbuy_other.toFixed(2), diffDeliveryMoney: diffDeliveryMoney.toFixed(2), vipFee: vipFee.toFixed(2), vipTotal: vipTotal.toFixed(2), levelFee: levelFee.toFixed(2), levelToTal: levelToTal.toFixed(2), full_reducemoney, full_list, nextDiffMoney: nextDiffMoney.toFixed(2), cur_full_item, sucess_full_item, localtown_fee_list, localtownCanBuy }) }, /** * vip商品价格计算 * count: 原来总价 * good: 商品 * num: 数量, * type: add 加减 */ calcVipPrice: function(count, good, num=0, type="add"){ let { is_open_vipcard_buy, is_vip_card_member, canLevelBuy } = this.data; let goodsNum = num > 0 ? num : parseFloat(good.goodsnum); if (type === 'red') goodsNum = -1*goodsNum; count = parseFloat(count); // if (is_open_vipcard_buy == 1 && is_vip_card_member == 1 && good.is_take_vipcard==1 ) { // return count += parseFloat(good.card_price) * goodsNum; // } else if (canLevelBuy && good.is_mb_level_buy == 1){ // return count += parseFloat(good.levelprice) * goodsNum; // }else { return count += parseFloat(good.currntprice) * goodsNum; // } }, /** * 大家常卖 */ openSku: function(t) { var that = this, e = t.detail; var goods_id = e.actId; var options = e.skuList; that.setData({ addCar_goodsid: goods_id }) let list = options.list || []; let arr = []; let goods_start_count = e.allData.goods_start_count || 1; if (list.length > 0) { for (let i = 0; i < list.length; i++) { let sku = list[i]['option_value'][0]; let temp = { name: sku['name'], id: sku['option_value_id'], index: i, idx: 0 }; arr.push(temp); } var id = ''; for (let i = 0; i < arr.length; i++) { if (i == arr.length - 1) { id = id + arr[i]['id']; } else { id = id + arr[i]['id'] + "_"; } } var cur_sku_arr = options.sku_mu_list[id]; cur_sku_arr.oneday_limit_count = e.allData.oneday_limit_count || 0; cur_sku_arr.total_limit_count = e.allData.total_limit_count || 0; cur_sku_arr.one_limit_count = e.allData.one_limit_count || 0; cur_sku_arr.goods_start_count = e.allData.goods_start_count || 1; that.setData({ sku: arr, sku_val: goods_start_count, cur_sku_arr: cur_sku_arr, skuList: e.skuList, visible: true, showSku: true }); } else { let goodsInfo = e.allData; that.setData({ sku: [], sku_val: 1, skuList: [], cur_sku_arr: goodsInfo }) let formIds = { detail: { formId: "" } }; formIds.detail.formId = "the formId is a mock one"; that.gocarfrom(formIds); } }, /** * 确认加入购物车 */ gocarfrom: function(e) { var that = this; var is_just_addcar = 1; wx.showLoading(); a.collectFormIds(e.detail.formId); that.goOrder(); }, changeCartNum(e) { let cartNum = e.detail || 0; let updateCart = this.data.updateCart; this.showCartGoods(); this.setData({ cartNum: cartNum, updateCart: updateCart + 1 }) }, goOrder: function() { var that = this; if (that.data.can_car) { that.data.can_car = false; } var token = wx.getStorageSync('token'); var community = wx.getStorageSync('community'); var goods_id = that.data.addCar_goodsid; var community_id = community.communityId; var quantity = that.data.sku_val; var cur_sku_arr = that.data.cur_sku_arr; var sku_str = ''; var is_just_addcar = 1; let updateCart = that.data.updateCart; if (cur_sku_arr && cur_sku_arr.option_item_ids) { sku_str = cur_sku_arr.option_item_ids; } let data = { goods_id, community_id, quantity, sku_str, buy_type: 'dan', pin_id: 0, is_just_addcar } util.addCart(data).then(res=>{ if(res.showVipModal==1) { let { pop_vipmember_buyimage } = res.data; wx.hideLoading(); that.setData({ pop_vipmember_buyimage, showVipModal: true, visible: false }) } else { if (res.data.code == 3 || res.data.code == 7) { wx.showToast({ title: res.data.msg, icon: 'none', duration: 2000 }) } else if (res.data.code == 4) { wx.showToast({ title: '您未登录', duration: 2000, success: () => { that.setData({ needAuth: true, isEmpty: true }) } }) } else if (res.data.code == 6) { let max_quantity = res.data.max_quantity || ''; (max_quantity > 0) && that.setData({ sku_val: max_quantity, updateCart: updateCart + 1 }) var msg = res.data.msg; wx.showToast({ title: msg, icon: 'none', duration: 2000 }) } else { if (is_just_addcar == 1) { that.closeSku(); that.showCartGoods(); status.indexListCarCount(goods_id, res.data.cur_count); (0, status.cartNum)(res.data.total); that.setData({ cartNum: res.data.total, updateCart: updateCart + 1 }) wx.showToast({ title: "已加入购物车", image: "../../images/addShopCart.png" }) } } } }).catch(res=>{ app.util.message(res||'请求失败', '', 'error'); }) }, selectSku: function(event) { var that = this; let str = event.currentTarget.dataset.type; let obj = str.split("_"); let arr = that.data.sku; let temp = { name: obj[3], id: obj[2], index: obj[0], idx: obj[1] }; arr.splice(obj[0], 1, temp); that.setData({ sku: arr }) var id = ''; for (let i = 0; i < arr.length; i++) { if (i == arr.length - 1) { id = id + arr[i]['id']; } else { id = id + arr[i]['id'] + "_"; } } var { skuList, cur_sku_arr } = this.data; cur_sku_arr = Object.assign(cur_sku_arr, skuList.sku_mu_list[id]); that.setData({ cur_sku_arr: cur_sku_arr }); }, /** * 数量加减 */ setNum: function(event) { let types = event.currentTarget.dataset.type; var that = this; var num = 1; let sku_val = this.data.sku_val * 1; if (types == 'add') { num = sku_val + 1; } else if (types == 'decrease') { let goods_start_count = this.data.cur_sku_arr.goods_start_count || 1; if (sku_val > 1) { num = sku_val - 1; if(num 0) { var id = ''; for (let i = 0; i < arr.length; i++) { if (i == arr.length - 1) { id = id + arr[i]['id']; } else { id = id + arr[i]['id'] + "_"; } } } if (options.length > 0) { let cur_sku_arr = options.sku_mu_list[id]; if (num > cur_sku_arr['canBuyNum']) { num = num - 1; } } else { let cur_sku_arr = this.data.cur_sku_arr; if (num > cur_sku_arr['canBuyNum']) { num = num - 1; } } this.setData({ sku_val: num }) }, skuConfirm: function() { this.closeSku(), (0, status.cartNum)().then((res) => { res.code == 0 && that.setData({ cartNum: res.data }) }); }, /** * 关闭购物车选项卡 */ closeSku: function() { this.setData({ visible: 0, stopClick: false, }); }, /** * 切换 */ changeTabs: function(e){ let that = this; let idx = e.currentTarget.dataset.idx || 0; let { tabIdx, carts, mult_carts } = this.data; if (tabIdx != idx) { mult_carts[tabIdx] = carts; carts = mult_carts[idx]; let isEmpty = true; if (carts&&Object.keys(carts).length != 0) isEmpty = false; this.setData({ tabIdx: idx, mult_carts, isEmpty, carts }, ()=>{ that.xuan_func(); }) } }, vipModal: function(t) { this.setData(t.detail) } })