diff --git a/packageA/pages/goodsInfo/buy_flash_normal.wxml b/packageA/pages/goodsInfo/buy_flash_normal.wxml new file mode 100644 index 0000000..638a9da --- /dev/null +++ b/packageA/pages/goodsInfo/buy_flash_normal.wxml @@ -0,0 +1,141 @@ + + + + + + + + {{data.goods_name}} + + {{data.shop_price}} + + + + + + + + + + + + + + + {{def_pick_store.pickup_name}} + + 距离:{{def_pick_store.distance>1000?filters.toFix(def_pick_store.distance/1000,2)+"km":filters.toFix(def_pick_store.distance,0)+"m"}} + + + + + + + + 选择门店 + + + 更多门店 + + (库存不足) + + (库存不足) + + (配送不匹配) + (库存不足) + + + 地址:{{def_pick_store.fulladdress}} + + + + + + + 购买数量 + + - + + + + + + + + + + + 再买{{hui_condition.need}} + ,免{{hui_condition.money}}元 + ,打{{hui_condition.sale}}折 + ,包邮 + ,送{{hui_condition.intValue}}积分 + ,送优惠券 + ,送赠品 + ,送礼包 + ,送专享礼包 + + + + + + + + + 配送不匹配 + + + + + 库存不足 + + + + + + 库存不足 + + + + 库存不足 + + + + 请先选择门店 + + + + 库存不足 + + + + 加入购物车 + 立即购买 + + + + + + + + + + + + + \ No newline at end of file diff --git a/packageA/pages/goodsInfo/goodsInfo.js b/packageA/pages/goodsInfo/goodsInfo.js index 62ab05e..3d38e5e 100644 --- a/packageA/pages/goodsInfo/goodsInfo.js +++ b/packageA/pages/goodsInfo/goodsInfo.js @@ -8,6 +8,7 @@ var t = require("../../../utils/util.js"), oo = s.globalData, o = s.globalData.setting, os = o; + let self = null; //评价加载更多 @@ -50,7 +51,7 @@ Page({ supportPageScroll: !1, address: { address: "", - district: 0 + district: 0, }, shipping: "", shippingCost: 0, @@ -199,17 +200,17 @@ Page({ sales_rules:1, //默认是线上销售 wait_for_user_store:null, - poster:null, //自定义海报 - share_b_img:'', //自定义分享的背景 - showPoster: false, - hui_condition:null, - sto_sele_name_1:'',//分享的门店名称 + poster:null, //自定义海报 + share_b_img:'', //自定义分享的背景 + showPoster: false, + hui_condition:null, + sto_sele_name_1:'',//分享的门店名称 // 秒杀 - prom_st: 1, + prom_st: 0, prom_r_null: 0, - hiddenCS: true, + hiddenCS: true, //控制客服操作菜单显示和控制 }, //------初始化加载---------- @@ -263,10 +264,10 @@ Page({ first_leader=gid_str[1]; } //-- 如果有room_id的获取 -- - if(gid_str.length>2 && gid_str[2]){ + if(gid_str.length>2 && gid_str[2]) { room_id=gid_str[2]; room_user_share=1; - } + }; }; ee.setData({ gid: gid}); @@ -311,7 +312,7 @@ Page({ is_show_gb: 1 }); } - console.log(e); + // console.log(e); var json_d = JSON.parse(e.switch_list); ee.setData({ store_config: e, @@ -320,6 +321,7 @@ Page({ is_newsales_rules: json_d.is_newsales_rules }); ee.init(gid); + //------几人评价------- //n.init(th, "", "comments"); @@ -372,7 +374,7 @@ Page({ //获取用户的默认门店 getApp().get_user_store(function(e) { - if(!e) { + if(!e) { th.data.fir_def_store={}; //赋值空对象 return false; } @@ -433,7 +435,7 @@ Page({ appd.lat=that.data.lat; appd.lon=that.data.lon; - }else{ + } else { if (e) { e.distance = null; that.data.fir_def_store=e; @@ -458,7 +460,7 @@ Page({ setTimeout(()=>{ wx.createSelectorQuery().selectAll(".showArea, .hideArea").boundingClientRect(res => { - // console.log('node@@@@@@@', res); + if(res.length != 0) { this.setData({ showFold: res[0].height < res[1].height, @@ -519,7 +521,9 @@ Page({ if(prom_type) { // 进入商品详情页地址传参有带goods_id、prom_type、prom_id参数, 即从秒杀入口进入 let prom_id = this.data.options.prom_id; + // 检查活动是否开始 this.check_prom(goods_id, prom_type, prom_id); + } else { // 从非秒杀入口进入,地址不带prom_type、prom_id参数 getApp().request.promiseGet('/api/weshop/activitylist/getGoodActInfo', { data: { @@ -539,20 +543,16 @@ Page({ let prom_id = result[0].act_id; this.setData({ 'options.prom_type': prom_type, + 'options.prom_id': prom_id, }); + // 检查活动是否开始 this.check_prom(goods_id, prom_type, prom_id); } else if(resLength > 1) { //如果数组长度大于1,表示当前商品参加多个活动,以列表形式显示多活动 this.setData({ actList: res.data.data, }); }; - - // console.log('!!!!!!~~~~~~~~~prom~~~~~~~~~~!!!!!!'); - - // this.setData({ - // prom, - // }); - + }; }); }; @@ -671,8 +671,6 @@ Page({ - - i.get("/api/weshop/serviceCard/get/" + o.stoid + "/" + ee.data.gid, { failRollback: !0, @@ -702,6 +700,7 @@ Page({ that.setData({ 'data.goods_name': t.data.data.serviceName, 'data.shop_price': t.data.data.money, + 'data.show_price': t.data.data.show_price, 'data.validDays': t.data.data.validDays, 'data.serviceContent': t.data.data.serviceContent, 'data.image_url': t.data.data.imgUrl, @@ -746,6 +745,9 @@ Page({ }; } }); + + + this.data.enterAddressPage && (this.data.enterAddressPage = !1); this.get_sto(); @@ -817,15 +819,25 @@ Page({ activeCategoryId: 1 }); }, - - + + //获取redis中的数量 + async getactLen(func) { + var r_num = 0, + prom_type = this.data.prom_type, + prom_id = this.data.prom_id; + await getApp().request.promiseGet("/api/weshop/activitylist/getActLen/" + os.stoid + "/" + prom_type + "/" + prom_id, { + 1: 1 + }).then(res => { + var em = res; + if (em.data.code == 0) { + r_num = em.data.data; + } + }) + func(r_num); + }, + //------------加入购物车-------------- addCart: function(t) { - if(this.data.goodsInputNum == 0) { - getApp().my_warnning('购买数量不能为0', 1, th, 450); - return false; - }; - var th = this; var ind = t.currentTarget.dataset.openSpecModal_ind; var action= t.currentTarget.dataset.action; @@ -835,13 +847,10 @@ Page({ open_ind_store: ind }); - if(!th.data.sto_sele_name){ + if(!th.data.sto_sele_name) { getApp().my_warnning('请选择门店', 1, th, 450); return false; } - - - @@ -881,7 +890,7 @@ Page({ }); let num = th.data.sele_g.viplimited - gd_buy_num; - if (num < 0) num = 0; + if (num <= 0) num = 1; th.setData({goodsInputNum: num}); return false; } @@ -894,7 +903,6 @@ Page({ - if(action=="buy"){ //--------------此时操作的数据------------ @@ -912,12 +920,20 @@ Page({ newd['prom_type'] = this.data.prom_type; newd['prom_id'] = this.data.prom_id; newd['prom_price'] = this.data.prom_price; - } + }; + + if(this.data.prom_act.is_shop_buy) { + newd['prom_type'] = 0; + newd['prom_price'] = this.data.data.shop_price; + }; // console.log('newd++++++++', newd); th.buyNow(newd); } else { - + + + + var newd = { service_id: th.data.data.id, service_sn:th.data.data.service_sn, @@ -928,7 +944,7 @@ Page({ store_id:os.stoid, money:th.data.data.shop_price }; - if(getApp().globalData.guide_id){ + if(getApp().globalData.guide_id) { newd['guide_id'] = getApp().globalData.guide_id; newd['guide_type']=0; } @@ -988,14 +1004,16 @@ Page({ } + + }, //----------立即购买----------- buyNow: function(e) { - getApp().globalData.service_now=e; - wx.redirectTo({ - url: "/packageA/pages/cart2_ser/cart2_ser", - }); + getApp().globalData.service_now=e; + wx.redirectTo({ + url: "/packageA/pages/cart2_ser/cart2_ser", + }); }, //----------增加购买数量----------- addCartNum: function(t) { @@ -1012,9 +1030,108 @@ Page({ //------检查数量是不是超出限购------ checkCartNum: function(t) { - if(t<=0) return false; - var th = this; - th.setData({goodsInputNum:t}) + + var th = this; + + // if(this.data.prom_act.is_shop_buy && this.data.options.prom_type != 1) { + // if(th.data.is_normal) { + + if(t<=0) return false; + th.setData({goodsInputNum:t}); + // } else { + + if(this.data.options.prom_type == 1 && !this.data.openSpecModal_flash_normal) { + + this.get_buy_num(this.data.sele_g, async function () { + th.data.sele_g.viplimited = th.data.sele_g.buy_limit; + + //--判断商品是否超出限购-- + // if (th.data.g_buy_num != null && th.data.sele_g.viplimited > 0) { + if(!th.data.prom_act.is_shop_buy) { + + if (th.data.sele_g.viplimited > 0) { + var gd_buy_num = th.data.sele_g.buy_num; + + if (t + gd_buy_num> th.data.sele_g.viplimited) { + wx.showModal({ + title: '超出商品限购', + }); + + var num = th.data.sele_g.viplimited - gd_buy_num; + if (num <= 0) num = 1; + th.setData({goodsInputNum: num}) + return false; + } + } + + }; + + + //如果是普通购买的情况下 + if(th.data.openSpecModal_flash_normal) th.data.is_normal=1; + + //--判断商品是否超出活动限购-- + if (th.data.prom_buy_num != -1 && th.data.prom_buy_limit > 0 && !th.data.is_normal) { + if (t + th.data.prom_buy_num > th.data.prom_buy_limit) { + wx.showModal({ + title: '超出商品活动限购', + }); + + var num = th.data.prom_buy_limit - th.data.prom_buy_num; + if (num < 0) num = 0; + th.setData({goodsInputNum: num}) + return false; + } + } + + if (th.data.sele_g.prom_type == 1 && !th.data.is_normal) { + var redis_num = 0; + //------判断活动是否抢光----- + await getApp().request.promiseGet("/api/weshop/activitylist/getActLen/" + + os.stoid + "/" + th.data.sele_g.prom_type + "/" + th.data.sele_g.prom_id, { + 1: 1 + }).then(res => { + redis_num = res.data.data; + }); + + if (t > redis_num) { + wx.showModal({ + title: '超出商品活动库存', + }); + th.setData({goodsInputNum: redis_num}) + return false; + } + } + var e = th.data.sele_g.store_count; + var p_type = th.data.prom_type; //&& p_type!=1 && p_type!=4 + if (th.data.sales_rules == 2 && (p_type != 1 && p_type != 4 && p_type != 6 || th.data.openSpecModal_inte_normal == 1 || th.data.is_normal == 1)) { + if (!th.data.def_pick_store) { + wx.showModal({title: '请选择门店',}); + return false; + } else { + e = th.data.def_pick_store.CanOutQty; + } + } + if (!e) e = 0; + //库存不足,不增加 + if (e < t) { + wx.showModal({title: '库存不足',}); + if (e < 0) e = 0; + th.setData({goodsInputNum: e}); + return false; + } + t > e || 0 == e ? t = e : t < 1 && (t = 1); + th.setData({goodsInputNum: t}); + // th.is_show_more_buy(); + + }) + + }; + + + + + }, @@ -1026,7 +1143,6 @@ Page({ }, openSpecModel: function(t) { - // console.log('****ttttttt***', t); var th=this; var open_store = t.currentTarget.dataset.ind; this.setData({ @@ -1108,12 +1224,26 @@ Page({ } } }, - //---------联系客服------------ contactService: function () { - getApp().com_call(this); + this.getTel() + .then(() => { + if(self.data.store_tel) { + wx.showModal({ + title: '联系客服', + content: '客服热线:' + self.data.store_tel, + confirmText: '拨打', + success(res) { + if(res.confirm) { + wx.makePhoneCall({ + phoneNumber: self.data.store_tel, + }) + }; + }, + }); + }; + }); }, - // 获取客服电话 getTel() { return new Promise((resolve, reject) => { @@ -1144,8 +1274,6 @@ Page({ }); }); }, - - //-------获取购物车数量---------- requestCardNum: function() { var t = this; @@ -1187,7 +1315,6 @@ Page({ //--点击分享事件--- onShareAppMessage: function(t) { - getApp().globalData.no_clear=1; var th = this; var price = th.data.data.shop_price; @@ -2641,7 +2768,10 @@ Page({ }, previewImage() { - getApp().pre_img(this.data.shareImgPath); + wx.previewImage({ + //将图片预览出来 + urls: [this.data.shareImgPath] + }); }, onShareTimeline() { @@ -2665,7 +2795,13 @@ Page({ //---------联系微信客服------------ con_weixin:function () { - getApp().con_wx(this) + var url=this.data.sys_switch.weapp_customertype_url; + var id=this.data.sys_switch.weapp_customertype_appid; + wx.openCustomerServiceChat({ + extInfo: {url: url}, + corpId: id, + success(res) {} + }) }, //评论的调用 @@ -2862,9 +2998,10 @@ Page({ // b[i] = this.data.iurl + e[i]; // } this.data.show_prew_img = 1; - //调用预览图片 - getApp().pre_img2(b,t); - + wx.previewImage({ + current: b[t.currentTarget.dataset.id], + urls: b + }); }, @@ -2988,38 +3125,45 @@ Page({ }, + //获取redis中的数量 + async getactLen(func) { + var r_num = 0, + prom_type = this.data.prom_type, + prom_id = this.data.prom_id; + await getApp().request.promiseGet("/api/weshop/activitylist/getActLen/" + os.stoid + "/" + prom_type + "/" + prom_id, { + 1: 1 + }).then(res => { + var em = res; + if (em.data.code == 0) { + r_num = em.data.data; + } + }) + func(r_num); + }, + + //--------检查是否活动,活动是否开始,或者是否结束------- async check_prom(gid, prom_type, prom_id) { - console.log('check_prom'); var ee = this, th = ee; var user_id = getApp().globalData.user_id; if (!user_id) user_id = 0; + + if (prom_type == 1 && prom_id == 0) { + // this.setData({ + // prom_type: 0, isshow: 1, + // }); + + // //获取门店 + // this.get_sto(); + // this.get_sku(o.stoid, this.data.data, gid); + // this.check_has_flash(); + // this.data.is_normal = 1; + // this.check_is_youhui(gid, 1); + // return false; + } - // if (prom_type == 3 || prom_type == 0 || prom_type == 5 || prom_type == 7 || prom_type == 9 || prom_type == 10) { - // this.setData({ - // prom_type: 0, isshow: 1, - // }); - // return false; - // } - - - - // if (prom_type == 1 && prom_id == 0) { - // this.setData({ - // prom_type: 0, isshow: 1, - // }); - - // //获取门店 - // this.get_sto(); - // this.get_sku(o.stoid, this.data.data, gid); - // this.check_has_flash(); - // this.data.is_normal = 1; - // this.check_is_youhui(gid, 1); - // return false; - // } - //if (prom_type != 3 && prom_type!=0){ //---判断秒杀---- if (prom_type == 1 && prom_id > 0) { @@ -3028,15 +3172,23 @@ Page({ 1: 1 }).then(res => { var em = res; - if (res.data.code == 0) { - // console.log('!!!!!!res!!!!', res); - if (res.data.data <= 0) ee.setData({ - prom_r_null: 1 - }); + if (em.data.code == 0) { + + if (em.data.data <= 0) { + th.setData({ + prom_r_null: 1, + goodsInputNum: res.data.data, + }); + + // th.setData({goodsInputNum: redis_num}) + }; //拿取价格并且判断时间-- getApp().request.get("/api/ms/flash_sale/getNew/" + os.stoid + "/" + user_id + "/" + prom_id, { success: function (t) { - // console.log('!!!!!!t!!!!', t); + th.setData({ + sele_g: t.data.data, + }); + if (t.data.code != 0) { ee.get_normal(gid); return false; @@ -3063,7 +3215,6 @@ Page({ var prom_start_time = ut.formatTime(t.data.data.start_time, "yyyy-MM-dd hh:mm:ss"); ee.setData({ - 'data.shop_price': t.data.data.user_price, prom_price: t.data.data.user_price, prom_type: 1, prom_id: prom_id, @@ -3081,7 +3232,6 @@ Page({ if (endTime1 > newTime) { ee.setData({ prom_time_text: '距秒杀开始还有', - prom_st: 0, }) ee.countDown(endTime1, 0); } else { @@ -3095,60 +3245,60 @@ Page({ } //如果是进行中的话 - // if (endTime1 < newTime) { - // //-- 获取秒杀活动的多少规格 -- - // ee.get_more_flahs(function (list) { - // if (list && list.length > 1) { - - // var n_item = list[0]; - // var ind = list.findIndex(function (ele) { - // return ele.goods_id == ee.data.data.goods_id; - // }) - // if (ind < 0) return false; - // if (ind > 0) { - // n_item = JSON.parse(JSON.stringify(list[ind])); - // list.splice(ind, 1); - // list.unshift(n_item); - // } - - // ee.data.sele_g.viplimited = n_item.viplimited; - // ee.data.data.viplimited = n_item.viplimited; - - // var gb = 1; - // //-- 显示多规格 -- - // for (let i in list) { - // let item = list[i]; - // var gg = ""; - // if (item.goods_spec == "null" || item.goods_spec == null) item.goods_spec = ""; - // if (item.goods_color == "null" || item.goods_color == null) item.goods_color = ""; - - // if (item.goods_spec != "" && item.goods_color != "") { - // gg = item.goods_spec + "/" + item.goods_color; - // } else if (item.goods_spec != "" || item.goods_color != "") { - // gg = item.goods_spec + item.goods_color; - // } else { - // gg = "规格" + gb; - // gb++; - // } - // item.gg = gg; - // item.prom_id = item.prom_id; - // item.prom_type = 1; - // } - - // ee.setData({ - // sku_g: list, - // }); - - // } - // }) - // } + if (endTime1 < newTime) { + //-- 获取秒杀活动的多少规格 -- + ee.get_more_flahs(function (list) { + if (list && list.length > 1) { + + var n_item = list[0]; + var ind = list.findIndex(function (ele) { + return ele.goods_id == ee.data.data.goods_id; + }) + if (ind < 0) return false; + if (ind > 0) { + n_item = JSON.parse(JSON.stringify(list[ind])); + list.splice(ind, 1); + list.unshift(n_item); + } + + ee.data.sele_g.viplimited = n_item.viplimited; + ee.data.data.viplimited = n_item.viplimited; + + var gb = 1; + //-- 显示多规格 -- + for (let i in list) { + let item = list[i]; + var gg = ""; + if (item.goods_spec == "null" || item.goods_spec == null) item.goods_spec = ""; + if (item.goods_color == "null" || item.goods_color == null) item.goods_color = ""; + + if (item.goods_spec != "" && item.goods_color != "") { + gg = item.goods_spec + "/" + item.goods_color; + } else if (item.goods_spec != "" || item.goods_color != "") { + gg = item.goods_spec + item.goods_color; + } else { + gg = "规格" + gb; + gb++; + } + item.gg = gg; + item.prom_id = item.prom_id; + item.prom_type = 1; + } + + ee.setData({ + sku_g: list, + }); + + } + }) + } } }); } }) } - + }, @@ -3157,86 +3307,739 @@ Page({ let prom_type = e.currentTarget.dataset.promtype; let prom_id = e.currentTarget.dataset.promid; let goods_id = this.data.data.goods_id; - let url = `/packageA/pages/goodsInfo/goodsInfo?goods_id=${goods_id}&prom_type=${prom_type}&prom_id=${prom_id}`; - // console.log('url~~~~', url); + let url = `/packageA/pages/goodsInfo/goodsInfo?goods_id=${goods_id}&prom_type=${prom_type}&prom_id=${prom_id}`;s getApp().goto(url); }, - - //-- 检验商品的活动情况 -- - check_gd_prom_new: function (func) { - var th = this; + //获取更多秒杀 + get_more_flahs: async function (func) { + var f_more = false; var user_id = getApp().globalData.user_id; if (!user_id) user_id = 0; - var url = '/api/weshop/activitylist/listGoodActInfo2'; - var req_d = { - "store_id": os.stoid, - "goods_id": this.data.gid, - "user_id": user_id, + var url = "/api/weshop/goods/listSkuFlash?store_id=" + os.stoid + "&goods_id=" + this.data.data.goods_id + "&user_id=" + user_id; + //获取秒杀的多规格 + await getApp().request.promiseGet(url, {}).then(res => { + if (res.data.code == 0 && res.data.data && res.data.data.length > 0) { + f_more = res.data.data; + } + }) + if (!f_more) { + func(false); + return false; + } + //-- 秒杀的价格要更新 -- + for (let i in f_more) { + + let item = f_more[i]; + f_more[i].prom_id = item.act_id; + f_more[i].prom_type = 1; + if (item.goods_id == this.data.data.goods_id) { + continue; + } + var url = "/api/ms/flash_sale/getNew/" + os.stoid + "/" + user_id + "/" + item.act_id; + await getApp().request.promiseGet(url, {}).then(rs => { + if (rs.data.code == 0) { + f_more[i].price = rs.data.data.user_price; + + } + }) } - getApp().request.get(url, { - data: req_d, - success: function (e) { - if (e.data.code == 0 && e.data.data && e.data.data.length > 0) { - var arr = e.data.data; - var arr2 = arr.filter(function (e) { - return e.s_time < ut.gettimestamp(); + func(f_more); + + }, + + + + + + + //-------------获取购买数量的总函数---------------- + get_buy_num: function (gd, func) { + + var th = this, + user_id = getApp().globalData.user_id; + + + //----获取商品购买数---- + getApp().request.get("/api/weshop/ordergoods/getUserBuyGoodsNum", { + data: { + store_id: os.stoid, + user_id: user_id, + goods_id: this.data.gid, + }, + success: function (t) { + if (t.data.code == 0) { + var g_buy_num = t.data.data.goodsbuynum; + + // 如果是秒杀的时候 + // if (th.data.prom_type == 0 && gd.prom_type == 1) { + // gd.prom_type = 0; + // } + + //----获取活动购买数---- + getApp().request.get("/api/weshop/ordergoods/getUserBuyGoodsNum", { + data: { + store_id: os.stoid, + user_id: user_id, + goods_id: th.data.gid, + prom_type: th.data.prom_type, + prom_id: th.data.prom_id + }, + //-----获取----- + success: function (tt) { + if (tt.data.code == 0) { + th.setData({ + prom_buy_num: tt.data.data.goodsbuynum, + }); + "function" == typeof func && func(); + } + } + }); + + + } + }, + }); + }, + + + + + + // 促销 -> 送礼包 -> 查看详情 + viewLbDetails(e) { + let id = e.currentTarget.dataset.id; // 获取礼包id + let url = `/packageA/pages/myGiftDetails/myGiftDetails?btn=0&index=0&id=${id}`; // btn=0 控制跳转到的页面不显示按钮 + // console.log('myurl', url); + getApp().goto(url); + }, + + go_more_ladder: function (e) { + var prom_id = e.currentTarget.dataset.id; + getApp().goto("/pages/goods/goodsList/goodsList?ladder_id=" + prom_id); + }, + + getHistoryBuy() { + let _this = this; + let req_data = { + store_id: os.stoid, + goods_id: this.data.gid, + pay_status: 1, + rndid: 1 + }; + getApp().request.promiseGet('/api/weshop/ordergoods/list', { + data: req_data, + }) + .then(res => { + if (t.ajax_ok(res)) { + _this.setData({ + historyBuyInfo: res.data.data.pageData, }) - //-- 如果只有一个活动的话 -- - if (arr.length == 1) { - th.data.prom_type = arr[0].prom_type; - th.data.prom_id = arr[0].act_id; + } + }) + }, + + + + //-- 秒杀的普通购买 -- + openSpecModel_Nor: function () { + this.data.g_buy_num = new Map(); + var th = this; + this.setData({open_ind_store: 5, goodsInputNum: 1});//拼团直接给4 + + this.setData({openSpecModal_flash_normal: 1}); + + + // if (th.data.sku_g_pt) { + // // this.get_sto(1) + // this.setData({openSpecModal_flash_normal: 1}); + // } else { + // th.get_sto(1); + // th.get_sku(o.stoid, th.data.data, th.data.gid, 1, function () { + // th.setData({ + // openSpecModal_flash_normal: 1 + // }); + // }); + // } + // this.check_is_youhui(th.data.gid, 1); + }, + + closeSpecModal_flash_normal: function () { + this.setData({openSpecModal_flash_normal: 0}); + }, + + + //打开客服操作菜单 + openCS() { + // csType/在线客服设置: + // 0关闭(如果有设置热线电话,则显示拨打热线电话)、 + // 1小程序客服、 + // 2企业微信客服 + let csType = this.data.sys_switch.weapp_customertype; + if(csType == 0) { + // 获取电话号码 + this.contactService(); + } else { + this.getTel() + .then(() => { + self.setData({ + hiddenCS: false, + }); + }); + + }; + }, + + //关闭客服操作菜单 + closeCS() { + this.setData({ + hiddenCS: true, + }); + }, + + + + + + + + //-- 加入购物的函数 -- + add_cart_func: function (t) { + var i = getApp().request; + if (oo.user_id == null) { + return s.my_warnning("还未登录!", 0, this); + } + + if (!getApp().globalData.userInfo) { + return s.my_warnning("还未登录!", 0, this); + } + + var e = this, + th = e, + a = 0, + o = this.data.sele_g; + a = o.goods_id; + + //----------添加到购物车时,要判断限购数量,-------- + e.get_buy_num(o, function (ee) { + //---判断商品是否超出限购--- + if (th.data.g_buy_num != null && th.data.sele_g.viplimited > 0) { + if (th.data.goodsInputNum + th.data.g_buy_num.get(th.data.sele_g.goods_id) > th.data.sele_g.viplimited) { + wx.showModal({ + title: '提示', + content: '超出商品限购' + }); + return false; + } + } + //---判断商品是否超出活动限购--- + if ((th.data.prom_buy_num != -1 && th.data.prom_buy_limit > 0) && !th.data.is_normal) { + if (th.data.goodsInputNum + th.data.prom_buy_num > th.data.prom_buy_limit) { + wx.showModal({ + title: '提示', + content: '超出商品活动限购' + }); + return false; + } + } + + if (th.data.goodsInputNum <= 0) return s.my_warnning("商品数量不能为0", 0, th); + if (th.data.sto_sele_name == null || th.data.sto_sele_name == undefined) + this.setData({ + sto_sele_name: "" + }); + if (th.data.sto_sele_name == "") return s.my_warnning("请选择门店", 0, th); + + //--------------此时操作的数据------------ + var newd = { + goods_id: o.goods_id, + goods_num: th.data.goodsInputNum, + pick_id: th.data.sto_sele_id, + user_id: oo.user_id, + store_id: th.data.stoid, + goods_price: o.shop_price, + member_goods_price: o.shop_price, + goods_name: o.goods_name, + goods_sn: o.goods_sn, + sku: o.sku, + prom_id: th.data.sele_g.prom_id, + prom_type: th.data.sele_g.prom_type, + }; + + //---是不是从收藏夹出来的--- + if (th.data.c_guide_id) { + newd['guide_id'] = th.data.c_guide_id; + newd['guide_type'] = 2; + if ("add" == t.currentTarget.dataset.action) newd['guide_type'] = 3; + } else { + if (getApp().globalData.guide_id) { + newd['guide_id'] = getApp().globalData.guide_id; + newd['guide_type'] = 0; + if ("add" == t.currentTarget.dataset.action) newd['guide_type'] = 1; + } + } + + //让商品带上房间号 + //让商品带上房间号 + if (th.data.sys_switch.is_skuroom_id == 1) { + if (th.data.data.goods_id == getApp().globalData.room_goods_id) { + newd.room_id = getApp().globalData.room_id; + } + } else { + if (newd.goods_id == getApp().globalData.room_goods_id) newd.room_id = getApp().globalData.room_id; + } + + //如果是积分够,is_integral_normal就要有积分购普通购买字段 + if (o.prom_type == 4) { + newd.is_integral_normal = 1; + } + + //如果有线下取价 + if (o.offline_price) { + newd.offline_price = o.offline_price; + newd.pricing_type = o.pricing_type; + } + + //-----如果是秒杀,团购,积分购,拼团----- + if (th.data.prom_type == 1 || th.data.prom_type == 2) { + + if (th.data.openSpecModal_flash_normal) { + + newd.prom_type = 0; + newd.prom_id = 0; + + //---如果是线下门店销售的时候--- + if (th.data.sales_rules == 2) { + var pick = th.get_pick_from_list(th.data.sto_sele_id) + //---通过接口获取门店的线下库存信息-- + getApp().request.get("/api/weshop/goods/getWareStorages", { + data: { + storageNos: pick.pickup_no, + wareIds: encodeURIComponent(th.data.sele_g.erpwareid), + storeId: os.stoid + }, + success: function (res) { + if (res.data.code == 0) { + if (res.data.data.pageData.length > 0) { + var CanOutQty = res.data.data.pageData[0].CanOutQty; + if (CanOutQty < e.data.goodsInputNum) { + return s.my_warnning("库存不足!", 0, th); + } + //在调一次接口,读取商品的预出库的数量,lock + getApp().request.get("/api/weshop/order/ware/lock/page", { + data: { + store_id: os.stoid, + wareId: th.data.sele_g.goods_id, + storageId: pick.pickup_id, + pageSize: 1000 + }, + success: function (res_data) { + if (res_data.data.code == 0 && res_data.data.data.total > 0) { + + var lock = 0; + for (var i in res_data.data.data.pageData) { + lock += res_data.data.data.pageData[i].outQty; + } + + if (CanOutQty <= lock) { + return s.my_warnning("库存不足!", 0, th); + } + th.add_cart_next(e, t, a, o, newd, CanOutQty - lock); + } else { + th.add_cart_next(e, t, a, o, newd, CanOutQty); + } + } + }) + } else { + return s.my_warnning("库存不足!", 0, th); + } + + } + } + }) + } else { + if (o.store_count <= 0) return s.my_warnning("库存已为空!", 0, th); + if (o.store_count < e.data.goodsInputNum) return s.my_warnning("库存不足!", 0, th); + th.add_cart_next(e, t, a, o, newd); //加入购物车下一步 + } + + return false; + } + + + newd.goods_price = th.data.prom_price; + newd.member_goods_price = th.data.prom_price, + newd.prom_type = th.data.prom_type; + newd.prom_id = th.data.prom_id; + + if (o.store_count <= 0) return s.my_warnning("库存已为空!", 0, th); + if (o.store_count < e.data.goodsInputNum) return s.my_warnning("库存不足!", 0, th); + + th.add_cart_next(e, t, a, o, newd); //加入购物车下一步 + + } else if (o.prom_type == 7) { + + //判断进行中的活动,是不是要判断线下库存 + th.check_zh_acting(function (ee) { + newd.prom_id = 0; + newd.prom_type = 0; + if (ee && th.data.sele_g.act) { + newd.prom_id = th.data.sele_g.act.id; + newd.prom_type = 7; + if (o.store_count <= 0) return s.my_warnning("库存已为空!", 0, th); + if (o.store_count < e.data.goodsInputNum) return s.my_warnning("库存不足!", 0, th); + th.add_cart_next(e, t, a, o, newd); //加入购物车下一步 + return false; + } else { + //---如果是线下门店销售的时候--- + if (th.data.sales_rules == 2) { + var pick = th.get_pick_from_list(th.data.sto_sele_id) + //---通过接口获取门店的线下库存信息-- + getApp().request.get("/api/weshop/goods/getWareStorages", { + data: { + storageNos: pick.pickup_no, + wareIds: encodeURIComponent(th.data.sele_g.erpwareid), + storeId: os.stoid + }, + success: function (res) { + if (res.data.code == 0) { + if (res.data.data.pageData.length > 0) { + var CanOutQty = res.data.data.pageData[0].CanOutQty; + if (CanOutQty < e.data.goodsInputNum) { + return s.my_warnning("库存不足!", 0, th); + } + //在调一次接口,读取商品的预出库的数量,lock + getApp().request.get("/api/weshop/order/ware/lock/page", { + data: { + store_id: os.stoid, + wareId: th.data.sele_g.goods_id, + storageId: pick.pickup_id, + pageSize: 1000 + }, + success: function (res_data) { + if (res_data.data.code == 0 && res_data.data.data.total > 0) { + + var lock = 0; + for (var i in res_data.data.data.pageData) { + lock += res_data.data.data.pageData[i].outQty; + } + + if (CanOutQty <= lock) { + return s.my_warnning("库存不足!", 0, th); + } + th.add_cart_next(e, t, a, o, newd, CanOutQty - lock); + } else { + th.add_cart_next(e, t, a, o, newd, CanOutQty); + } + } + }) + } else { + return s.my_warnning("库存不足!", 0, th); + } + + } + } + }) + } else { + if (o.store_count <= 0) return s.my_warnning("库存已为空!", 0, th); + if (o.store_count < e.data.goodsInputNum) return s.my_warnning("库存不足!", 0, th); + th.add_cart_next(e, t, a, o, newd); //加入购物车下一步 + } + } + }) + + } + else if (th.data.prom_type == 0 || th.data.prom_type == 3 || th.data.prom_type == 4 || th.data.prom_type == 5 || th.data.prom_type == 10) { + newd.prom_type = 0; + newd.prom_id = 0; + + if (th.data.prom_type == 10) { + newd.prom_type = th.data.prom_type; + newd.prom_id = th.data.prom_id; + } + + //---如果是线下门店销售的时候--- + if (th.data.sales_rules == 2) { + var pick = th.get_pick_from_list(th.data.sto_sele_id) + //---通过接口获取门店的线下库存信息-- + getApp().request.get("/api/weshop/goods/getWareStorages", { + data: { + storageNos: pick.pickup_no, + wareIds: encodeURIComponent(th.data.sele_g.erpwareid), + storeId: os.stoid + }, + success: function (res) { + if (res.data.code == 0) { + if (res.data.data.pageData.length > 0) { + var CanOutQty = res.data.data.pageData[0].CanOutQty; + if (CanOutQty < e.data.goodsInputNum) { + return s.my_warnning("库存不足!", 0, th); + } + //在调一次接口,读取商品的预出库的数量,lock + getApp().request.get("/api/weshop/order/ware/lock/page", { + data: { + store_id: os.stoid, + wareId: th.data.sele_g.goods_id, + storageId: pick.pickup_id, + pageSize: 1000 + }, + success: function (res_data) { + if (res_data.data.code == 0 && res_data.data.data.total > 0) { + + var lock = 0; + for (var i in res_data.data.data.pageData) { + lock += res_data.data.data.pageData[i].outQty; + } + + if (CanOutQty <= lock) { + return s.my_warnning("库存不足!", 0, th); + } + th.add_cart_next(e, t, a, o, newd, CanOutQty - lock); + } else { + th.add_cart_next(e, t, a, o, newd, CanOutQty); + } + } + }) + } else { + return s.my_warnning("库存不足!", 0, th); + } + + } + } + }) + } else { + if (o.store_count <= 0) return s.my_warnning("库存已为空!", 0, th); + if (o.store_count < e.data.goodsInputNum) return s.my_warnning("库存不足!", 0, th); + th.add_cart_next(e, t, a, o, newd); //加入购物车下一步 + } + } + }) + }, + + //---加入购物车的最后一步--- + add_cart_next(e, t, a, o, newd, CanOutQty) { + var th = this, i = getApp().request; + //---如果商品不是积分购和拼团,要判断一个是否要进行等级价的判断------ + if ((o.prom_type != 1 || o.prom_id <= 0) && ((o.prom_type != 6 && o.prom_type != 4 && o.prom_type != 2 ) || th.data.is_normal)) { + var conf = th.data.bconfig; + if (conf.switch_list && getApp().globalData.userInfo['card_field'] && getApp().globalData.userInfo['card_expiredate']) { + var s_list = JSON.parse(conf.switch_list); + var now = ut.gettimestamp(); + + + var str = getApp().globalData.userInfo['card_expiredate'].replace(/-/g, '/'); + var end = new Date(str); + end = Date.parse(end) / 1000; + + //--如果后台有开启等级价的功能,而且会员的等级没有过期的情况下-- + if (parseInt(s_list.rank_switch) == 2 && end > now) { + var card_price = o[getApp().globalData.userInfo['card_field']]; + //如果会员有等级价 + if (getApp().globalData.userInfo['card_field'] != undefined && getApp().globalData.userInfo['card_field'] != null + && getApp().globalData.userInfo['card_field'] != "" && card_price > 0) { + newd.goods_price = card_price; + newd.member_goods_price = card_price; } - //-- 如果只有一个进行中的活动的话 -- - else if (arr2.length == 1) { - th.data.prom_type = arr2[0].prom_type; - th.data.prom_id = arr2[0].act_id; + } + } + } + + //if (this.data.data.goods.is_virtual) return this.buyVirtualGoods(d); + if ("add" == t.currentTarget.dataset.action) { + + if (th.data.prom_goods) { + newd.prom_type = 3; + newd.prom_id = th.data.prom_goods[0].prom_id; + } + + //----先看会员在购物车中是否加入了该商品----- + i.get("/api/weshop/cart/page", { + data: { + store_id: e.data.stoid, + user_id: oo.user_id, + goods_id: a, + pick_id: e.data.sto_sele_id, + state: 0 + }, + success: function (re) { + + //-------如果购物车中有相关的数据--------- + if (re.data.data.total > 0) { + + var item = re.data.data.pageData[0]; + + //判断数量,要看下购物车中有没有该商品 + if (CanOutQty) { + if (item.goods_num + th.data.goodsInputNum > CanOutQty) { + return s.my_warnning("库存不足!", 0, th); + } + } else { + if (item.goods_num + th.data.goodsInputNum > o.store_count) { + return s.my_warnning("库存不足!", 0, th); + } + } + + var updata = { + id: item.id, + goods_num: e.data.goodsInputNum + item.goods_num, + goods_price: newd.goods_price, + member_goods_price: newd.goods_price, + store_id: th.data.stoid, + }; + + //---是不是从收藏夹出来的--- + if (th.data.c_guide_id) { + updata['guide_id'] = th.data.c_guide_id; + updata['guide_type'] = 3; //加入购物车之后就变成了3 + } else { + if (getApp().globalData.guide_id) { + updata['guide_id'] = getApp().globalData.guide_id; + updata['guide_type'] = 0; + } + } + + i.put("/api/weshop/cart/update", { + data: updata, + success: function (t) { + getApp().my_warnning('加入购物车成功', 1, th, 450); + var c_num = th.data.cartGoodsNum + th.data.goodsInputNum; + th.setData({ + cartGoodsNum: c_num + }); + th.closeSpecModal(); + } + }); + } else { + + + i.post("/api/weshop/cart/save", { + data: newd, + success: function (t) { + getApp().my_warnning('加入购物车成功', 1, th, 450); + var c_num = th.data.cartGoodsNum + e.data.goodsInputNum; + th.setData({ + cartGoodsNum: c_num + }); + th.closeSpecModal(); + } + }); } } - //-- 调用回调 -- - func(); + }); + + } + else { + + //这一步主要是要让立即购买 走 购物车的逻辑 参与活动 + if (newd.prom_type == 10 || newd.prom_type == 7) { + //----先看会员在购物车中是否加入了该商品,立即购买的----- + getApp().request.get("/api/weshop/cart/page", { + data: { + store_id: e.data.stoid, + user_id: oo.user_id, + state: 1 + }, + success: function (res) { + //-------如果购物车中有相关的数据--------- + if (res.data.code == 0 && res.data.data.total > 0) { + for (let j in res.data.data.pageData) { + let item_j = res.data.data.pageData[j]; + var url = '/api/weshop/cart/del/' + e.data.stoid + '/' + item_j.id; + getApp().request.delete(url, {}); + } + } + newd.state = 1; + getApp().request.post("/api/weshop/cart/save", { + data: newd, + success: function (t) { + th.closeSpecModal(); + getApp().goto("/pages/cart/cart2/cart2?state=1"); + } + }); + } + }) + return false; } - }); + + if (th.data.prom_goods) { + var prom_d = th.data.prom_goods; + for (var i in prom_d) { + //判断活动有俩种条件,0元 1件 + var condition_t = prom_d[i].prom_type; + switch (condition_t) { + case 0: //按钱 + if (newd.goods_price >= condition_t) { + newd.prom_type = 3; + newd.prom_id = prom_d[i].prom_id; + } + break + case 1://按购买数量 + if (newd.goods_num >= condition_t) { + newd.prom_type = 3; + newd.prom_id = prom_d[i].prom_id; + } + break; + } + } + + } + + newd['pick_name'] = th.data.sto_sele_name; + newd['pick_dis'] = th.data.sto_sele_distr; + th.buyNow(newd); + } }, - - click_contact:function () { - getApp().globalData.no_clear=1; - }, - - //打开客服操作菜单 - openCS() { - // csType/在线客服设置: - // 0关闭(如果有设置热线电话,则显示拨打热线电话)、 - // 1小程序客服、 - // 2企业微信客服 - let csType = this.data.sys_switch.weapp_customertype; - if(csType == 0) { - // 获取电话号码 - this.contactService(); - } else { - this.getTel() - .then(() => { - self.setData({ - hiddenCS: false, - }); + + + click_contact:function () { + getApp().globalData.no_clear=1; + }, + + //打开客服操作菜单 + openCS() { + // csType/在线客服设置: + // 0关闭(如果有设置热线电话,则显示拨打热线电话)、 + // 1小程序客服、 + // 2企业微信客服 + let csType = this.data.sys_switch.weapp_customertype; + if(csType == 0) { + // 获取电话号码 + this.contactService(); + } else { + this.getTel() + .then(() => { + self.setData({ + hiddenCS: false, }); - - }; - }, - - //关闭客服操作菜单 - closeCS() { - this.setData({ - hiddenCS: true, }); - }, + + }; + }, + + //关闭客服操作菜单 + closeCS() { + this.setData({ + hiddenCS: true, + }); + }, + + + + + + + + + + + }); diff --git a/packageA/pages/goodsInfo/goodsInfo.wxml b/packageA/pages/goodsInfo/goodsInfo.wxml index 6a8a1fd..64b0378 100644 --- a/packageA/pages/goodsInfo/goodsInfo.wxml +++ b/packageA/pages/goodsInfo/goodsInfo.wxml @@ -101,7 +101,8 @@ - {{filters.toFix(data.shop_price,2)}} + {{filters.toFix(prom_price,2)}} + {{filters.toFix(data.shop_price,2)}} {{data.goods_name}} @@ -506,7 +507,7 @@ - - - - 客服 + + + 客服 @@ -547,44 +548,45 @@ - - - - 加入购物车 - 立即抢购 - - - - - - 单独购买 - 即将开始 - - - 即将开始 - - - + + + + 加入购物车 + 立即抢购 + - + + + + + + 单独购买 + 即将开始 + + + 即将开始 + + - - 单独购买 - 已抢光 - - 已抢光 - - - - - 单独购买 - 活动已经结束 - + + + + 单独购买 + 已抢光 + + 已抢光 + - 活动已经结束 - + + + + 单独购买 + 活动已经结束 + + 活动已经结束 - + + @@ -592,15 +594,9 @@ 加入购物车 立即购买 - - - + - - - - @@ -620,7 +616,8 @@ {{data.goods_name}} - {{data.shop_price}} + {{prom_price}} + {{data.shop_price}} @@ -908,14 +905,35 @@ - - - - + + + diff --git a/packageA/pages/goodsInfo/goodsInfo.wxss b/packageA/pages/goodsInfo/goodsInfo.wxss index 49b3695..c365d9a 100644 --- a/packageA/pages/goodsInfo/goodsInfo.wxss +++ b/packageA/pages/goodsInfo/goodsInfo.wxss @@ -562,7 +562,7 @@ view.cart-btn-lg { .spec-model { position: fixed; bottom: 0; - z-index: 20; + z-index: 19; background: white; width: 100%; /* padding: 0 30rpx; */ @@ -2968,3 +2968,56 @@ button.custom-service::after{ left: -1000px; top: -1000px; } + + + +/* 联系客服操作菜单 */ +.action { + position: fixed; + bottom: 100rpx; + z-index: 1; + width: 100%; + background-color: white; + border-radius: 20rpx 20rpx 0 0; +} + +.action .icon-guan { + position: absolute; + left: 20rpx !important; + right: auto !important; +} + +.action .iconfont { + color: #ff7295; + margin-right: 10rpx; +} + +.action button { + text-align: left; + line-height: normal; +} + +.action button::after { + border-width: 0; +} + +.action .btn2 { + box-sizing: border-box; + height: 100rpx; + display: flex; + align-items: center; +} + +.mask2 { + display: none; + position: fixed; + left: 0; + right: 0; + top: 0; + bottom: 0; + background-color: rgba(0,0,0,.5); +} + +.action.active ~ .mask2 { + display: block; +}