var t = getApp(), a = t.request, oo = t.globalData.setting, app = getApp(), rq = t.request; var regeneratorRuntime = require('../../../utils/runtime.js'); Page({ data: { url: t.globalData.setting.url, resourceUrl: t.globalData.setting.resourceUrl, requestData: null, checkAllToggle: 0, total_fee:0, allsto:null, imgUrl:t.globalData.setting.imghost, }, onLoad: function() { wx.setNavigationBarTitle({ title: "购物车",}) var a = this; t.auth.hadAuth() && t.getUserInfo(function() { a.getCardList(); }); }, onShow: function() { this.getCardList(); }, //-------------获取购物车列表,要安装门店进行分类订单----------- getCardList: function () { var th = this; //如果门店还未读出来的时候 if (th.data.allsto==null){ //读取门店 app.get_allsto(function(e){ th.setData({ allsto: e}); th.get_cart(); }) }else{ th.get_cart();} }, //-----真的获取购物车-------- get_cart:function(){ var th=this; var rd = Math.random().toString(36).substr(2, 15); getApp().request.get("/api/weshop/cart/list", { data: { user_id: app.globalData.user_id, rd: rd, store_id: oo.stoid,pageSize:600}, success: function (su) { console.log("333"); console.log(th.data.allsto); //按门店分类的数组 var arr = new Array(); var carr = su.data.data.pageData; for (var i = 0; i < carr.length; i++) { var item = carr[i]; item.original_img = oo.imghost + item.original_img; item.selected=0; var pcid = item.pick_id; var find = 0; //---------循环查找门店--- if (arr.length>0){ for (var j = 0; j < arr.length; j++) { if (arr[j].pid == pcid) { arr[j].goods.push(item); find = 1; break; } } } //------如果没有找到----- if (find == 0) { var pikname = ''; //找到门店名称 for (var k=0;k= a.store_count)) { var e = { goods_num: a.goods_num + 1, id: a.id, goods_id:a.goods_id, store_id:oo.stoid }; this.postCardList(e, t.currentTarget.dataset.item, t.currentTarget.dataset.pitems); } }, //-------------减数量--------------------- subNum: function(t) { var a = t.currentTarget.dataset.item; var b = t.currentTarget.dataset.pitems; a = this.data.requestData[b].goods[a]; if(a.goods_num - 1<0) return false; if (1 != a.goods_num) { var e = { goods_num: a.goods_num - 1, id: a.id, goods_id: a.goods_id, store_id:oo.stoid }; this.postCardList(e, t.currentTarget.dataset.item, t.currentTarget.dataset.pitems); } }, //---------------全选,全选的时候要判断是否门店的匹配方式一致-------------- checkAll: function() { var e = this, dda = e.data.requestData, tfeel = 0,text_arr=""; for (var i = 0; i < dda.length; i++) { var item=dda[i].goods; if (!e.data.checkAllToggle){ var txt = "requestData[" +i+ "].selected"; e.setData({ [txt]:0,}); } var fir=0; for(var j=0;j 0 ){ console.log(item); for (var i = 0; i < iarr.length; i++) { if (iarr[i].distr_type != 0) { if (fir == 0) { fir = iarr[i].distr_type; } else { if (fir != iarr[i].distr_type && iarr[i].distr_type!=0 ) { isok = 0; break; } } } } } if (!isok) { wx.showModal({ title: '提示', content: '同一门店自提和物流的商品不能同时结算' }); return false; } for(var i=0;i 1 && !a.selected){ for (var i = 0; i < iarr.length;i++){ //---当不是本身选择项目---- var sel = iarr[i].selected; if (iarr[i].distr_type != 0 && (sel || iarr[i].id==a.id)) { if (fir == 0) { fir = iarr[i].distr_type; } else { if (fir != iarr[i].distr_type && iarr[i].distr_type != 0) { isok = 0; break; } } } } } if(!isok){ wx.showModal({ title: '提示', content: '同一门店自提和物流的商品不能同时结算' }); }else{ var txt = "requestData[" + pitems + "].goods[" + item + "].selected"; e.setData({ [txt]: Number(!a.selected), }); this.doCheckAll(); } }, //----------检查是否全选--------- doCheckAll: function() { var th=this,tfeel=0,ischeck = 1,car = this.data.requestData; for (var a = 0; a < car.length; a++) { var item = car[a].goods; var is_s_sele=1; for (var c = 0; c < item.length;c++){ if(item[c].selected==0){ ischeck=0; is_s_sele=0; } else{ tfeel += item[c].goods_num * item[c].goods_price; } } var txt = "requestData[" + a+ "].selected"; th.setData({ [txt]: Number(is_s_sele), }); } this.setData({ checkAllToggle: ischeck, total_fee: tfeel.toFixed(2), }); }, //----------------------更新购物数量,加减,调用接口--------------------- postCardList: function (t, item, pitem) { var e = this; var user_id=getApp().globalData.user_id; console.log('update'); console.log(t); rq.get("/api/weshop/goods/get/" + oo.stoid + "/" + t.goods_id, { async success(d) { var limit = d.data.data.viplimited; var store_count = d.data.data.store_count; var goodsinfo=e.data.requestData[pitem ].goods[item]; var promgoodsbuynum=0; var goodsbuynum=0; //--要获得商品,该用户买了多少件,同步应用-- await getApp().request.promiseGet("/api/weshop/ordergoods/getUserBuyGoodsNum",{ data: { store_id: oo.stoid, user_id: user_id, goods_id: goodsinfo.goods_id, prom_type:goodsinfo.prom_type, prom_id:goodsinfo.prom_id }, }).then(res=>{ var buy_num_data=res.data.data; if(buy_num_data.promgoodsbuynum) promgoodsbuynum=buy_num_data.promgoodsbuynum; goodsbuynum=buy_num_data.goodsbuynum; }) var buyed_mum2 = t.goods_num + goodsbuynum; if (buyed_mum2>limit && limit>0){ wx.showModal({ title: '提示', content: '购买数量超出商品限购'}); var txt = "requestData[" + pitem + "].goods[" + item + "].goods_num"; var cbuy = limit - buyed_mum; e.setData({ [txt]: cbuy > 0 ? cbuy:0, }); return false; } if (t.goods_num > store_count) { wx.showModal({ title: '提示', content: '购买数量超出商品库存' }); var txt = "requestData[" + pitem + "].goods[" + item + "].goods_num"; e.setData({ [txt]: store_count }); return false; } if(goodsinfo.prom_type==1){ //读取秒杀 rq.get("/api/ms/flash_sale/getFlashSaleOne/" + oo.stoid + "/" + goodsinfo.prom_id, { success: function (res_d) { var false_data=res_d.data.data; //--判断库存-- if (t.goods_num > false_data.goods_num-false_data.buy_num){ wx.showModal({ title: '提示', content: '购买数量超出活动库存' }); var txt = "requestData[" + pitem + "].goods[" + item + "].goods_num"; e.setData({ [txt]: false_data.goods_num-false_data.buy_num }); return false; } //--判断redis数量是否已经超出-- if(t.goods_num >false_data.redisnum){ wx.showModal({ title: '提示', content: '购买数量超出商品库存' }); var txt = "requestData[" + pitem + "].goods[" + item + "].goods_num"; e.setData({ [txt]: false_data.redisnum }); return false; } //--活动的限购是不是要判断-- if(t.goods_num+promgoodsbuynum >false_data.buy_limit && false_data.buy_limit>0){ wx.showModal({ title: '提示', content: '购买数量超出秒杀限购' }); var txt = "requestData[" + pitem + "].goods[" + item + "].goods_num"; e.setData({ [txt]: false_data.false_data.buy_limit }); return false; } e.update_cart(t,pitem,item); } }) }else{ e.update_cart(t,pitem,item); } } }); }, //更新购物车 update_cart:function(t,pitem,item){ var e=this; getApp().request.put("/api/weshop/cart/update", { data: t, success: function (ee) { var txt = "requestData[" + pitem + "].goods[" + item+"].goods_num"; e.setData({ [txt]: t.goods_num, }); e.doCheckAll(); } }); }, //-------下拉刷新--------- onPullDownRefresh: function(t) { this.getCardList(); }, //--------------去结算------------ async checkout() { var glist=""; //用逗号隔开的 var map=new Map(); //使用map值键进行运算 var map_limit=new Map(); //使用map值键进行存储限购 var g_arr = new Array(); //已选的商品列表 var user_id=getApp().globalData.user_id; var th=this; var ab = 0;//选中 console.log('checkout'); for (var i=0;i{ var buy_num_data=res.data.data; if(buy_num_data.promgoodsbuynum) promgoodsbuynum=buy_num_data.promgoodsbuynum; goodsbuynum=buy_num_data.goodsbuynum; }) var ie={promgoodsbuynum:promgoodsbuynum,goodsbuynum:goodsbuynum}; map_limit.set(val.goods_id + "", ie); } try{ ddata.forEach(function(val,ind){ var num = map.get(val.goods_id+""); if (num<=0) { isok = 0; gname = val.goods_name; throw "购买数量不能为0";return false; } if ( num>val.store_count) { isok = 0; gname = val.goods_name; throw "超出库存"; return false; } if ( num>val.redisnum && val.redisnum) { isok = 0; gname = val.goods_name; throw "超出活动库存"; return false; } if ( num>val.goods_num-val.buy_num && val.goods_num) { isok = 0; gname = val.goods_name; throw "超出活动库存";return false; } var buyed=map_limit.get(val.goods_id+""); if (num+buyed.goodsbuynum>val.viplimited && val.viplimited>0) { isok = 0; gname = val.goods_name; throw "超出商品限购";return false; } if (num+buyed.promgoodsbuynum>val.buy_limit && val.buy_limit>0) { isok = 0; gname = val.goods_name; throw "超出活动限购";return false; } for (var i = 0; i < g_arr.length;i++){ if (g_arr[i].goods_id==val.goods_id){ if(g_arr[i].goods_price != val.shop_price && g_arr[i].goods_price!=val.prom_price){ isok = 0; gname = val.goods_name; throw "商品价格已经变化"; } rq.put("/api/weshop/cart/update", { data: { id: g_arr[i].id, selected: 1,store_id:oo.stoid }, success: function (ee) { console.log(ee); } }); } } }) } catch (e) { err=e;} if (isok==0){ if (gname.length > 10) { gname = gname.substr(0, 10); gname+="..."; } t.confirmBox(gname+":"+ err); return false; } wx.navigateTo({ url: "/pages/cart/cart2/cart2" }); } } }); }, //结算到最后一个商品 set_last: function (ab, isok, gname){ if (isok == 0) { t.my_warnning(gname + "商品超出库存",0,this); } else { ab ? wx.navigateTo({ url: "/pages/cart/cart2/cart2" }) : t.my_warnning("还没有选中商品",0,this); } }, //图片失败,默认图片 bind_bnerr2: function (e) { var _errImg = e.target.dataset.errorimg; var _errurl = e.target.dataset.url; var ii = _errurl.indexOf(oo.imghost); if (ii != -1) { this.setData({ [_errImg]: oo.imghost+"/miniapp/images/default_g_img.gif", }) } } });