From 86d7cb9f6c9667c002c7c63b599a7f5c2a96ab07 Mon Sep 17 00:00:00 2001 From: yvan.ni <765199919@qq.com> Date: Tue, 8 Oct 2019 14:43:34 +0800 Subject: [PATCH] 购物车 --- pages/cart/cart/cart.js | 1108 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- pages/cart/cart/cart.wxml | 121 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------- pages/cart/cart/cart.wxss | 286 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------------------------------------------------------- 3 files changed, 902 insertions(+), 613 deletions(-) diff --git a/pages/cart/cart/cart.js b/pages/cart/cart/cart.js index 9b8e343..5f54b62 100644 --- a/pages/cart/cart/cart.js +++ b/pages/cart/cart/cart.js @@ -1,53 +1,81 @@ -var t = getApp(), a = t.request, oo = t.globalData.setting, app = getApp(), rq = t.request; +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(); + data: { + url: t.globalData.setting.url, + resourceUrl: t.globalData.setting.resourceUrl, + iurl: t.globalData.setting.imghost, + requestData: null, + checkAllToggle: 0, + total_fee: 0, + allsto: null, + imgUrl: t.globalData.setting.imghost, + is_has_flash:0, //是否又秒杀活动 + }, + onLoad: function() { + wx.setNavigationBarTitle({title: "购物车", }) + var a = this; + //判断是否有登陆 + t.auth.hadAuth() && t.getUserInfo(function() { + a.getCardList(); + }); + }, + onShow: function() { + var th=this; + this.getCardList(); + //--获取是否又秒杀活动-- + getApp().request.promiseGet("/api/ms/flash_sale/spikepage", { + data: { + store_id: oo.stoid, + timetype: 2, + is_end: 0, + is_show: 1, + pageSize: 1 + }, + }).then(res => { + if(res.data.code==0 && res.data.data && res.data.data.pageData.length>0){ + th.setData({is_has_flash:1}) + } + }); + + }, + + //-------------获取购物车列表,要安装门店进行分类订单----------- + getCardList: function() { + var th = this; + //如果门店还未读出来的时候 + if (th.data.allsto == null) { + //读取门店 + app.get_allsto(function(e) { + th.setData({ + allsto: e }); - }, - 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();} + th.get_cart(); + }) + } else { + th.get_cart(); + } }, //-----真的获取购物车-------- - get_cart:function(){ - var th=this; + 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) { + 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); - + console.log(th.data.allsto); + //按门店分类的数组 var arr = new Array(); var carr = su.data.data.pageData; @@ -55,32 +83,39 @@ Page({ var item = carr[i]; item.original_img = oo.imghost + item.original_img; - item.selected=0; - + 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 (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= a.store_count)) { + var e = { + goods_num: a.goods_num + 1, + id: a.id, + goods_id: a.goods_id, + store_id: oo.stoid + }; + isShowLoading: 0; + 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, + }); } - }, - - //------门店全选按钮,要判断是否门店的匹配方式一致--------- - check_th_all_item:function(ele){ - var e=this,pitems = ele.currentTarget.dataset.pitems,item = this.data.requestData[pitems].goods; - var sele = this.data.requestData[pitems].selected; - - var isok = 1, fir = 0, iarr = item; - if (!sele && item.length > 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; } - } + var fir = 0; + for (var j = 0; j < item.length; j++) { + if (fir == 0) { + fir = item[j].distr_type; + } else { + //如果同一门店有不同门店的商品,不能同一配送 + if (fir != item[j].distr_type && !e.data.checkAllToggle && item[j].distr_type != 0) { + text_arr += item[j].goods_name + " "; + break; } } - } + var txt = "requestData[" + i + "].goods[" + j + "].selected" + e.setData({ + [txt]: !e.data.checkAllToggle, + }) + if (!e.data.checkAllToggle) + tfeel += item[j].goods_num * item[j].goods_price; + } + } - if (!isok) { - wx.showModal({ title: '提示', content: '同一门店自提和物流的商品不能同时结算' }); return false; + if (text_arr != "") { + wx.showModal({ + title: '提示', + content: text_arr + '不能与门店中其他商品一起结算,配送方式不一致' + }); + return false; + e.setData({ + total_fee: tfeel.toFixed(2), + }); + } else { + e.setData({ + checkAllToggle: !e.data.checkAllToggle, + total_fee: tfeel.toFixed(2), + }); + } + }, + + //------门店全选按钮,要判断是否门店的匹配方式一致--------- + check_th_all_item: function(ele) { + var e = this, + pitems = ele.currentTarget.dataset.pitems, + item = this.data.requestData[pitems].goods; + var sele = this.data.requestData[pitems].selected; + + var isok = 1, + fir = 0, + iarr = item; + if (!sele && item.length > 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; + } + } } + } + } - 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: '同一门店自提和物流的商品不能同时结算' + }); + return false; + } + + for (var i = 0; i < item.length; i++) { + var txt = "requestData[" + pitems + "].goods[" + i + "].selected"; + e.setData({ + [txt]: Number(!sele), + }); + } + var txt = "requestData[" + pitems + "].selected"; + e.setData({ + [txt]: Number(!sele), + }); + this.doCheckAll(); + }, + + //---------------单选,也要判断门店的配送方式是否一致-------------- + check_th_item: function(t) { + var e = this, + item = t.currentTarget.dataset.item, + pitems = t.currentTarget.dataset.pitems; + a = this.data.requestData[pitems].goods[item]; + var isok = 1, + fir = 0; + var iarr = e.data.requestData[pitems].goods; + + + //当数量大于1,且是选择的时候 + if (iarr.length > 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(); + } + } + 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; } - }, - //----------检查是否全选--------- - 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), + 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, { + isShowLoading:0, + 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; } - 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, { + isShowLoading: 0, + 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; + } - 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); - } + //--判断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; } - }); - }, - - //更新购物车 - 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"; + + //--活动的限购是不是要判断-- + 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]: t.goods_num, + [txt]: false_data.false_data.buy_limit }); - e.doCheckAll(); + 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, }); - }, - - //-------下拉刷新--------- - 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; + } + } + if (ab == 0) { + t.my_warnning("未选择商品", 0, th); + return false; + } + + glist = glist.substring(0, glist.length - 1); + //--取一下商品的限购 以及活动的限购,redis数量-- + rq.get("/api/weshop/goods/getGoodsListNum", { + data: { + goodsidlist: glist, + store_id: oo.stoid + }, + async success(ee) { + console.log(ee); + if (ee.data.code == 0) { + var ddata = ee.data.data, + isok = 1, + gname = "", + err = ""; + //--组装-- + for (var ij = 0; ij < ddata.length; ij++) { + var val = ddata[ij]; + var obj = map_limit.get(val.goods_id + ""); + if (obj) continue; + + 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: val.goods_id, + prom_type: val.prom_type, + prom_id: val.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 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); } - wx.navigateTo({ - url: "/pages/cart/cart2/cart2" - }); + }); } + } + + }) + } catch (e) { + err = e; } - }); - }, - - //结算到最后一个商品 - 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); + if (isok == 0) { + 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) { + 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", + [_errImg]: oo.imghost + "/miniapp/images/default_g_img.gif", }) } + }, + //设置点击按钮为true或者false + radio_chick: function(checked, num) { + var th = this; + var requestData = th.data.requestData; + + } -}); +}); \ No newline at end of file diff --git a/pages/cart/cart/cart.wxml b/pages/cart/cart/cart.wxml index 7f8d9b3..98f9793 100644 --- a/pages/cart/cart/cart.wxml +++ b/pages/cart/cart/cart.wxml @@ -1,56 +1,91 @@ - + + - - - - - 总计 : {{total_fee}} - - 不包含运费 + + + + + 全选 + + + + 合计: + ¥{{total_fee}} + + + 不含运费 + + + + + + - - 购物车暂无商品 - 去逛逛 + + 购物车暂无商品 + 去逛逛 diff --git a/pages/cart/cart/cart.wxss b/pages/cart/cart/cart.wxss index 2a62032..e315198 100644 --- a/pages/cart/cart/cart.wxss +++ b/pages/cart/cart/cart.wxss @@ -1,144 +1,254 @@ page { - background-color: #fff; + background-color: #fff; + font-family: crosoft yahei; +} + +.padding { + padding: 0rpx 30rpx; +} + +.alend { + align-items: flex-end; +} + +.goods-price { + font-size: 18rpx; +} + +.baseline { + display: flex; + align-items: baseline; +} + +.picture { + width: 100%; + height: 220rpx; } .container { - display: flex; - height: 100%; - align-items: center; - justify-content: center; - background-color: #fff; - padding-bottom: 100rpx; + display: flex; + height: 100%; + align-items: center; + justify-content: center; + background-color: #fff; + padding-bottom: 100rpx; +} + +radio { + transform: scale(0.8); + margin-right: 30rpx; } .login-in { - width: 100%; - box-sizing: border-box; + width: 100%; + box-sizing: border-box; } .order-item { - display: flex; - justify-content: space-around; - height: 200rpx; - padding: 10rpx 0; - border-bottom: 1px solid #ddd; + display: flex; + height: 246rpx; + border-top: 3rpx solid rgb(245, 245, 245); + align-items: center; } .goods-ico { - display: flex; - align-items: center; + display: flex; + align-items: center; } .goods-img { - width: 180rpx; - height: 180rpx; - font-size: 0; - margin-top: 10rpx; + width: 180rpx; + height: 180rpx; + font-size: 0; + overflow: hidden; } .goods-cont { - position: relative; - width: 430rpx; - height: 200rpx; - font-size: 28rpx; + width: 400rpx; + height: 165rpx; + font-size: 28rpx; + margin-left: 35rpx; + padding-top: 10rpx; + padding-bottom: 5rpx; } .goods-name { - width: 370rpx; - height: 64rpx; - margin: 8rpx 0; - line-height: 32rpx; - color: #333; - + line-height: 32rpx; + color: #333; + height: 130rpx; } .goods-attribute { - max-height: 52rpx; - line-height: 26rpx; - font-size: 24rpx; - color: #999; + max-height: 52rpx; + line-height: 26rpx; + font-size: 24rpx; + color: #999; } -.goods-price { - height: 40rpx; - line-height: 40rpx; - margin-top: 10rpx; -} +/* .goods-price { + height: 40rpx; + line-height: 40rpx; + margin-top: 10rpx; +} */ .btn-del { - position: absolute; - right: 0; - top: 8rpx; - width: 34rpx; - height: 34rpx; + position: absolute; + right: 0; + top: 8rpx; + width: 34rpx; + height: 34rpx; } .count { - position: absolute; - right: 0; - bottom: 5rpx; - width: 156rpx; - height: 50rpx; - border: 1px solid #ddd; + display: flex; + bottom: 5rpx; + border: 2rpx solid rgb(236, 236, 236); + margin-bottom: 3rpx; +} + +.count>view, .count>input { + width: 40rpx; + height: 35rpx; + line-height: 34rpx; + text-align: center; + display: flex; + font-size: 18rpx; + justify-content: center; + min-height: 35rpx; } -.count>view,.count>input { - float: left; - width: 50rpx; - height: 50rpx; - line-height: 50rpx; - text-align: center; +.count>.goodadd { + width: 64rpx; + font-size: 24rpx; +} + +.count>.add { + font-size: 32rpx; } .sub { - border-right: 1px solid #ddd; + border-right: 2rpx solid rgb(236, 236, 236); } .add { - border-left: 1px solid #ddd; + border-left: 2rpx solid rgb(236, 236, 236); } .pay-for { - width: 100%; - height: 100rpx; - position: fixed; - left: 0; - bottom: 0; - font-size: 28rpx; - color: #666; - background-color: #f0f2f5; + width: 100%; + height: 100rpx; + position: fixed; + left: 0; + bottom: 0; + font-size: 28rpx; + color: #666; + background-color: rgb(255, 255, 255); + z-index: 2; + border-top: 1rpx solid rgb(236, 236, 236); + border-bottom: 1rpx solid rgb(236, 236, 236); } .pay-for .pay-btn { - float: right; - width: 200rpx; - height: 100rpx; - line-height: 100rpx; - text-align: center; - background-color: #f23030; - color: #fff; - border-radius: 0; + width: 220rpx; + height: 100rpx; + line-height: 100rpx; + background-color: rgb(219, 27, 52); + color: #fff; + border-radius: 0; + font-size: 31rpx; } .pay-for .consumer { - float: right; - margin-right: 20rpx; - line-height: 50rpx; + margin-right: 23rpx; + color: rgb(0, 0, 0); + letter-spacing: 1rpx; +} + +.pay-for .consumer .total { + color: rgb(0, 0, 0); +} + +.pay-for .consumer .tips { + color: rgb(153, 153, 153); } .pay-for .checkbox { - float: left; - padding-left: 40rpx; - line-height: 100rpx; - display: flex; - align-items: center; + float: left; + padding-left: 40rpx; + line-height: 100rpx; + display: flex; + align-items: center; } .pay-for .ico-check { - display: flex; - align-items: center; - margin-right: 20rpx; + display: flex; + align-items: center; + margin-right: 20rpx; +} + +.shmd_m { + height: 80rpx; + line-height: 80rpx; + display: flex; +} + +.shmd_m image { + height: 50rpx; + width: 55rpx; + margin-left: -10rpx; +} + +.shmd_m .goods-ico icon { + margin-top: 26rpx; +} + +.shmd { + margin-left: 5rpx; +} + +.store { + border-top: 7rpx solid rgb(245, 245, 245); +} + +.login-in .Storenum { + height: 80rpx; + color: rgb(51, 51, 51); +} + +.login-in .goods_num { + margin-left: 13rpx; +} + +.allradio { + padding-left: 30rpx; + width: 600rpx; +} + +.allradio .all { + color: rgb(0, 0, 0); +} + +.Specifications { + padding: 3rpx 5rpx; + margin-top: 8rpx; + font-size: 20rpx; + max-width: 105rpx; + height: 30rpx; + line-height: 29rpx; + background-color: rgb(236, 236, 236); + border-radius: 8rpx; + white-space: nowrap; + overflow: hidden; + color: rgb(63, 63, 63); +} + +.abs { + top: 15rpx; + left: -39rpx; + width: 154rpx; + height: 40rpx; + background-color: rgb(16, 202, 220); + transform: rotate(320deg); + color: rgb(255, 255, 255); + line-height: 40rpx; } -.shmd_m{margin-left: 5rpx; height: 80rpx; line-height: 80rpx; display: flex;border-bottom: 1rpx solid #ddd} -.shmd_m .goods-ico icon{margin-top: 26rpx;} -.shmd{margin-left: 20rpx;} \ No newline at end of file -- libgit2 0.21.4