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",
})
}
}
});