const app = getApp(); let self = null; var os = app.globalData.setting; var ut = require("../../../../utils/util.js"); var regeneratorRuntime = require('../../../../utils/runtime.js'); var oo = app.globalData; let imgDraw = { "width": "650px", "height": "843px", "background": "https://mshopimg.yolipai.net/miniapp/images/zhg/bg-zuhegou.jpg", "views": [ { // 头像 "type": "image", "url": "https://desk-fd.zol-img.com.cn/t_s960x600c5/g5/M00/0F/08/ChMkJlauzXWIDrXBAAdCg2xP7oYAAH9FQOpVAIAB0Kb342.jpg", "css": { "width": "100px", "height": "100px", "top": "20px", "left": "275px", "borderRadius": "100px", "mode": "scaleToFill", "borderWidth": "2px", "borderColor": "#fff", } }, { //昵称 "type": "text", "text": "我是店铺名", "css": { "width": "650px", "color": "#fff", "top": "136px", // "left": "137px", "textAlign": "center", "fontSize": "26px", "maxLines": "1", } }, { //10元任选3件 "type": "text", "text": "10元任选3件", "css": { "color": "#fff", "width": "650px", "top": "270px", "fontSize": "70px", "maxLines": "1", "textAlign": "center", "fontWeight": "bold", } }, { //活动时间 "type": "text", "text": "活动时间:2021.07.06 - 2021.07.08", "css": { "color": "#333", "width": "650px", "top": "440px", "fontSize": "26px", "fontWeight": "normal", "maxLines": "1", "textAlign": "center" } }, { // 码 "type": "image", "url": "https://desk-fd.zol-img.com.cn/t_s960x600c5/g5/M00/0F/08/ChMkJlauzXWIDrXBAAdCg2xP7oYAAH9FQOpVAIAB0Kb342.jpg", "css": { "color": "#000", "width": "200px", "height": "200px", "top": "525px", "left": "225px", } }, { // 扫码提示 "type": "text", "text": "长按扫码即可参与活动", "css": { "color": "#666", "width": "650px", "top": "750px", "fontSize": "26px", "textAlign": "center" } }, ] }; Page({ /** * 页面的初始数据 */ data: { iurl: os.imghost, showRule: false, showMask: false, showNum: false, haveAdded: false, //imgDraw: imgDraw, 分享内容 id: 0, //获得活动id page: 1, //第一页 no_more: 0, //没有更多 loading: 0, //加载中 list:null, //商品列表的显示 act: null, //组合活动 all_price: 0, //合计价格 all_num: 0, //全部数量 sele_pick_id: 0, //默认选择门店,当用户什么商品都没有选,sele_pick_id=0 def_store: null, //用户默认的门店 sele_store: 0, //是不是选择了门店 more_store: 0, //选择门店 sort_store: 0, //门店分类 choice_sort_store: 0, //选择分类门店 fir_pick_index: 0, //门店选择的下标 sec_pick_index: 0 //门店选择的下标,地区选择之后的内页 }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { self = this; this.data.id = options.id; //如果有会员的时候 var userInfo = getApp().globalData.userInfo; if(!userInfo){ getApp().goto("/pages/togoin/togoin"); return false; } }, /** * 生命周期函数--监听页面显示 */ onShow: function () { var th = this, that = this, ee = this; this.data.is_timer = 1; if (this.data.act) this.countDown(); //如果有会员的时候 var userInfo = getApp().globalData.userInfo; if (userInfo) { if(!th.data.is_get_act){ //获取活动信息 var url = "/api/weshop/prom/zhbuy/get/" + os.stoid + "/" + th.data.id+"/"+userInfo.user_id; getApp().request.get(url, { success: function (e) { th.data.is_get_act=1; if (e.data.code == 0 && e.data.data) { self.setData({act: e.data.data}); if(e.data.data.is_show!=1){ th.setData({error:'活动未开启'}); return false; } if(ut.gettimestamp()=th.data.act.end_time ) { return false; } //获取头像的分享 th.get_head_temp(function () { var txt = th.data.act.zhprice + "元任选" + th.data.act.zhbuyqty + "件"; imgDraw.views[0].url = th.data.share_head; imgDraw.views[1].text = userInfo.nickname; imgDraw.views[2].text = txt; var start = ut.formar_no_full(th.data.act.start_time, '.'); var end = ut.formar_no_full(th.data.act.end_time, '.'); txt = "活动时间:" + start + " - " + end; imgDraw.views[3].text = txt; var scene = th.data.id + ""; var user_id = getApp().globalData.user_id; scene += "_" + user_id; ///二微码 var path3 = os.url + "/api/wx/open/app/user/getWeAppEwm/" + os.stoid + "?sceneValue=" + scene + "&pageValue=pages/goods/goodsInfo/goodsInfo"; wx.getImageInfo({ src: path3, success: function (res) { var vpath = res.path; imgDraw.views[4].url = vpath; th.setData({imgDraw: imgDraw}) } }) }) //获取用户的默认门店 getApp().get_user_store(function (e) { if (!e) { th.data.fir_def_store = {}; //赋值空对象 return false; } //获取购物车的内容 th.get_cart_val(e); var ee = JSON.parse(JSON.stringify(e)); var appd = getApp().globalData; //-- 等待定位系统的开启 -- th.waitfor2(15, 'is_get_local_ok', function () { if(!th.data.is_get_local_ok) return false; var e = JSON.parse(JSON.stringify(ee)); //如果有开启近距离的话,同时距离优不一样了 if (that.data.lat != null) { //如果经纬度有变化的话 if (e && appd.lat == that.data.lat && appd.lon == that.data.lon && e.distance > 0) { that.set_def_storage(e); } else { //要用接口是获取距离,js的计算不准 getApp().request.promiseGet("/api/weshop/pickup/list", { data: { store_id: os.stoid, pickup_id: e.pickup_id, lat: th.data.lat, lon: th.data.lon }, }).then(res => { if (res.data.code == 0) { e = res.data.data.pageData[0]; if (e) { e.is_no_dis = ee.is_no_dis; appd.pk_store = e; that.set_def_storage(e); } } }) } appd.lat = that.data.lat; appd.lon = that.data.lon; } else { if (e) { e.distance = null; that.set_def_storage(e); } } }) }); //----获取系统参数----- getApp().getConfig2(function (e) { ee.setData({ bconfig: e, sales_rules: e.sales_rules, }); //设置基本参数 th.wait_for_store_config(e); var json_d = JSON.parse(e.switch_list); ee.setData({ store_config: e, sys_switch: json_d, is_closecoupon: json_d.is_closecoupon, is_newsales_rules: json_d.is_newsales_rules, is_open_offline: json_d.is_pricing_open, sales_rules: e.sales_rules }); //-- 计算等级价相关 -- var swithc_list = e.switch_list; var sw_arr = JSON.parse(swithc_list); //---如果后台又开等级卡的开关--- if (sw_arr.rank_switch && sw_arr.rank_switch == "2") { th.setData({rank_switch: true}); //---回调卡的列表--- th.getPlusCardType(function (ob) { th.setData({card_list: ob.card_list}); var user = getApp().globalData.userInfo; if (!user) return false; if (user.card_field && user['card_expiredate']) { var str = user['card_expiredate'].replace(/-/g, '/'); var end = new Date(str); end = Date.parse(end) / 1000; var now = ut.gettimestamp(); //--- 判断是等级会员,且在有效期范围内 --- if (user.card_field && now < end) { var card_name = ob.name_map.get(user.card_field); th.setData({ card_field: user.card_field, card_name: card_name, card_list: ob.card_list }); } } }) } }, 1); }) } }, onHide: function () { this.data.is_timer = 0; }, //-- 调用接口的LIST,获取商品 -- get_list: function () { var th = this; if (this.data.loading) return false; if (this.data.no_more) return false; this.data.loading = 1; var url = "/api/weshop/prom/zhbuyGoods/page"; var req_data = { page: this.data.page, pageSize: 10, store_id: os.stoid, zh_id: this.data.id } //开始调用接口 getApp().request.get(url, { data: req_data, success: function (res) { th.data.loading = 0; th.setData({is_get: 1}) if (ut.ajax_ok(res)) { th.data.page++; var list = th.data.list; if(!list) list=[]; for (var i in res.data.data.pageData) { list.push(res.data.data.pageData[i]); } th.setData({list: list}); if (res.data.data.total <= 10) { th.setData({no_more: 1}); } } else { th.setData({no_more: 1}); } } }) }, //-- 滚动到底部触发 -- get_more_list: function () { this.get_list(); }, /** * 用户点击右上角分享 */ onShareAppMessage: function () { }, /** * 点击规则详情,弹出规则 */ showRule() { this.setData({ type: 0, //控制显示规则详情还是提示信息,0规则详情,1提示信息 showRule: true, showMask: true, }); }, /** * 点击关闭按钮关闭规则详情弹窗 */ closeRule() { this.setData({ showRule: false, showMask: false, }); }, /** * 点击提示信息 */ showInfo() { this.setData({ type: 1, showRule: true, showMask: true, }); }, /** * 加入购物车 */ addToCart(e) { var th = this; var index = e.currentTarget.dataset.index; var userInfo = getApp().globalData.userInfo; if (!userInfo) { getApp().goto("/pages/togoin/togoin"); return false; } let haveAdded = this.data.list[index].haveAdded; this.data.sele_index = index; let title = ''; self = this; //说明是加入购物车是时候 this.data.is_zuhe_addcart = 1; if (!haveAdded) { th.data.sele_g = this.data.list[index]; if (!th.data.sele_g.num) th.data.goodsInputNum = 1; //如果没有门店,活动商品的配送方式和门店的配送方式不一样 if (!th.data.def_pick_store || (th.data.sele_g.distr_type != 0 && th.data.def_pick_store.distr_type != 0 && th.data.sele_g.distr_type != th.data.def_pick_store.distr_type)) { //选择了门店 if (th.data.sele_store) { wx.showToast({ title: "该商品的物流配送方式和默认门店不匹配!", icon: 'none', duration: 2000 }) } else { wx.showModal({ title: '温馨提示', content: '该商品的物流配送方式和默认门店不匹配,是否要切换门店?', success (res) { if (res.confirm) { //物流的配送方式不一样 th.get_sto(); var set_data = { store: 1 }; if (th.data.def_pick_store) { set_data.is_no_pipei = th.data.def_pick_store.pickup_id; } th.setData(set_data); } } }) } return false; } else { th.setData({is_no_pipei: 0}); th.check_is_in_cart(function () { th.add_cart_func(); }) } } else { var txt = "list[" + index + "].haveAdded"; var txt1 = "list[" + index + "].num"; var txt2 = "list[" + index + "].showNum"; th.data.sele_g = this.data.list[index]; wx.showModal({ title: '温馨提示', content: "确定取消该商品参与活动?", success (res) { if (res.confirm) { console.log('用户点击确定'); if(th.data.sele_g.cart_num){ var updata = { id: th.data.sele_g.cart_id, goods_num: th.data.sele_g.cart_num - th.data.sele_g.num, store_id: os.stoid } getApp().request.put("/api/weshop/cart/update", { data: updata, success:function (rs) { if(rs.data.code==0) { title = '取消成功'; th.setData({ [txt1]: 0, [txt2]: false, [txt]: false, }); wx.showToast({ title: title, icon: 'success', }); th.re_sum_price(); } } }) }else{ var url = '/api/weshop/cart/del/' + os.stoid + '/' + th.data.sele_g.cart_id; getApp().request.delete(url, { success:function (res) { if(res.data.code==0) { title = '取消成功'; th.setData({ [txt1]: 0, [txt2]: false, [txt]: false, }); wx.showToast({ title: title, icon: 'success', }); th.re_sum_price(); } } }); } } else if (res.cancel) { console.log('用户点击取消') self.setData({ haveAdded: true, }); } } }) } }, /** * 增加数量 */ add(e) { var th = this; var userInfo = getApp().globalData.userInfo; if (!userInfo) { getApp().goto("/pages/togoin/togoin"); return false; } if(this.data.changing) return false; this.data.changing=1; var index = e.currentTarget.dataset.index; this.data.sele_g = this.data.list[index]; this.data.sele_index=index; th.data.goodsInputNum = this.data.sele_g.num + 1; if(this.data.sele_g.cart_num){ th.data.s_cart_num = this.data.sele_g.cart_num + 1; } th.add_cart_func(); }, /** * 减少数量 */ sub(e) { var userInfo = getApp().globalData.userInfo; if (!userInfo) { getApp().goto("/pages/togoin/togoin"); return false; } var th = this; var index = e.currentTarget.dataset.index; var item = this.data.list[index]; this.data.sele_g=item; let num = item.num; th.data.s_cart_num = item.cart_num - 1; if (num >= 2) { var check_num = num - 1; //小于起购数 if (check_num < item.zhqty) { wx.showToast({ title: "该商品至少要购买" + item.zhqty + "件", icon: 'none', duration: 2000 }) return false; } if(th.data.changing) return false; th.data.changing=1; th.data.sele_g = item; th.data.sele_index = index; th.data.goodsInputNum = check_num; th.sub_updata_cart(); return false; } var txt = "list[" + index + "].haveAdded"; var txt1 = "list[" + index + "].num"; var txt2 = "list[" + index + "].showNum"; wx.showModal({ title: '温馨提示', content: '确定取消该商品参与活动?', success (res) { if (res.confirm) { if(th.data.s_cart_num){ var updata = { id: th.data.sele_g.cart_id, goods_num:th.data.s_cart_num , store_id: os.stoid } getApp().request.put("/api/weshop/cart/update", { data: updata, success:function (rs) { if(rs.data.code==0) { var title = '取消成功'; th.setData({ [txt1]: 0, [txt2]: false, [txt]: false, }); wx.showToast({ title: title, icon: 'success', }); th.re_sum_price(); } } }) }else { var url = '/api/weshop/cart/del/' + os.stoid + '/' + item.cart_id; getApp().request.delete(url, { success: function (res) { if (res.data.code == 0) { var title = '移除购物车成功'; th.setData({ [txt1]: 0, [txt2]: false, [txt]: false, }); wx.showToast({ title: title, icon: 'success', }); th.re_sum_price();//重新统计数量和总金额 } } }); } } else if (res.cancel) { console.log('用户点击取消') self.setData({ haveAdded: true, }); } } }) return false; }, /** 分享 **/ share() { var th = this; var userInfo = getApp().globalData.userInfo; if (!userInfo) { getApp().goto("/pages/togoin/togoin"); return false; } wx.showLoading(); setTimeout(function () { th.setData({ showMask: true, showPoster: true, }); wx.hideLoading(); }, 1000); }, /** * 关闭海报 */ closePoster() { this.setData({ showMask: false, showPoster: false, }); }, onImgOK(e) { console.log(e.detail.path); this.setData({ myimg: e.detail.path, }); }, //---小于10的格式化函数---- timeFormat(param) { return param < 10 ? '0' + param : param; }, //----倒计时函数----- countDown() { if (!this.data.is_timer) return false; var th = this; // 获取当前时间,同时得到活动结束时间数组 var endTime = this.data.act.end_time; var newTime = ut.gettimestamp(); // 对结束时间进行处理渲染到页面 var obj = null; // 如果活动未结束,对时间进行处理 if (endTime - newTime > 0) { var time = (endTime - newTime); // 获取天、时、分、秒 var day = parseInt(time / (60 * 60 * 24)); var hou = parseInt(time % (60 * 60 * 24) / 3600); var min = parseInt(time % (60 * 60 * 24) % 3600 / 60); var sec = parseInt(time % (60 * 60 * 24) % 3600 % 60); obj = { hou: this.timeFormat(hou), min: this.timeFormat(min), sec: this.timeFormat(sec) } if (day > 0) { obj.day = this.timeFormat(day); } } else { //活动已结束,全部设置为'00' obj = { day: '00', hou: '00', min: '00', sec: '00' } th.setData({ prom_time_text: '活动已经结束:', prom_st: 3 }) th.setData({ djs: obj }); return false; } th.setData({ djs: obj }); setTimeout(function () { th.countDown() }, 1000); }, close_all: function () { this.setData({ showMask: false, showPoster: false, showRule: false }); }, //------定时等待某个值,有值才进行运算-------- waitfor2: function (n, pop_value, func) { var th = this; if (n <= 0) { func() return false } if (th.data[pop_value]) { func(); return false; } setTimeout(function () { --n; th.waitfor2(n, pop_value, func) }, 1000); }, //--获取头像的本地缓存,回调写法-- get_head_temp: function (tt) { var ee = this; if (ee.data.share_head) { tt(); return false; } //---获取分享图片的本地地址,头像和商品图片---- var path2 = getApp().globalData.userInfo.head_pic; if (path2 == "") { ee.data.share_head = "../../../../images/share/hui_hear_pic.png"; tt(); } else { path2 = path2.replace("http://thirdwx.qlogo.cn", "https://wx.qlogo.cn"); path2 = path2.replace("https://thirdwx.qlogo.cn", "https://wx.qlogo.cn"); wx.getImageInfo({ src: path2, success: function (res) { //res.path是网络图片的本地地址 console.log(res); ee.data.share_head = res.path; tt(); }, fail: function () { ee.data.share_head = "../../../../images/share/hui_hear_pic.png"; //分享的图片不能用网络的 tt(); } }); } }, go_url: function (e) { var url = e.currentTarget.dataset.url; getApp().goto(url); }, //-- 加入购物的函数 -- add_cart_func: function () { if (oo.user_id == null) { this.data.changing=0; return getApp().my_warnning("还未登录!", 0, this); } if (!getApp().globalData.userInfo) { this.data.changing=0; return getApp().my_warnning("还未登录!", 0, this); } var e = this, th = e, 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).gd_buynum > th.data.sele_g.viplimited) { wx.showModal({ title: '提示', content: '超出商品限购' }); th.data.changing=0; return false; } if(th.data.s_cart_num){ if (th.data.s_cart_num + th.data.g_buy_num.get(th.data.sele_g.goods_id).gd_buynum > th.data.sele_g.viplimited) { wx.showModal({ title: '提示', content: '超出商品限购' }); th.data.changing=0; return false; } } } //---判断商品是否超出活动限购--- if (th.data.sele_g.buyqty > 0) { if (th.data.goodsInputNum+ th.data.g_buy_num.get(th.data.sele_g.goods_id).prom_buybum > th.data.sele_g.buyqty) { wx.showModal({ title: '提示', content: '超出商品活动限购' }); th.data.changing=0; return false; } } if (th.data.goodsInputNum <= 0){ this.data.changing=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 == "") { th.data.changing=0;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: os.stoid, goods_price: o.shop_price, member_goods_price: o.shop_price, goods_name: o.goods_name, goods_sn: o.goods_sn, }; if(th.data.s_cart_num){ newd.goods_num=th.data.s_cart_num; } //---是不是从收藏夹出来的--- 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; } if (o.store_count <= 0){ th.data.changing=0;return getApp().my_warnning("库存已为空!", 0, th); } if (o.store_count < e.data.goodsInputNum){ th.data.changing=0;return getApp().my_warnning("库存不足!", 0, th); } th.add_cart_next(o, newd); //加入购物车下一步 }) }, //---加入购物车的最后一步--- add_cart_next(o, newd){ var th = this; //如果会员有等级价 if (th.data.card_field) { var card_price = o[th.data.card_field]; if (card_price > 0) { newd.goods_price = card_price; newd.member_goods_price = card_price; } } var index = this.data.sele_index; var txt = "list[" + index + "].haveAdded"; var txt1 = "list[" + index + "].num"; var txt2 = "list[" + index + "].showNum"; var txt3 = "list[" + index + "].current_price"; newd.prom_type = 7; newd.prom_id = th.data.act.id; if (th.data.adding) return false; th.data.adding = 1; //-------如果购物车中有相关的数据--------- if (th.data.goodsInputNum > 1) { var item = th.data.sele_g; if (th.data.goodsInputNum > o.store_count) { th.data.adding = 0; return getApp().my_warnning("库存不足!", 0, th); } if (th.data.goodsInputNum+ th.data.g_buy_num.get(th.data.sele_g.goods_id).prom_buybum > o.buyqty && o.buyqty>0) { th.data.adding = 0; return getApp().my_warnning("超出商品活动限购!", 0, th); } if (th.data.goodsInputNum + th.data.g_buy_num.get(th.data.sele_g.goods_id).prom_buybum > th.data.sele_g.viplimited && th.data.sele_g.viplimited > 0 ) { th.data.adding = 0; return getApp().my_warnning("超出商品限购!", 0, th); } //如果商品没有其他活动,要取一下线下价格 var updata = { id: item.cart_id, goods_num: th.data.goodsInputNum, goods_price: newd.goods_price, member_goods_price: newd.goods_price, store_id: os.stoid, }; if(th.data.s_cart_num){ updata.goods_num=th.data.s_cart_num; } //---是不是从收藏夹出来的--- 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; } } getApp().request.put("/api/weshop/cart/update", { data: updata, success: function (t) { th.setData({ [txt1]: th.data.goodsInputNum, [txt2]: true, [txt]: true, [txt3]: newd.goods_price, }); th.data.adding = 0; th.data.sele_store = 1; if(th.data.s_cart_num){ var txt_temp = "list[" + index + "].cart_num"; th.setData({[txt_temp]:th.data.s_cart_num}) } th.re_sum_price();//重新统计数量和总金额 } }); } else { getApp().request.post("/api/weshop/cart/save", { data: newd, success: function (t) { if (t.data.code == 0) { var txt4 = "list[" + th.data.sele_index + "].cart_id"; th.setData({ [txt1]: newd.goods_num, [txt2]: true, [txt3]: newd.goods_price, [txt]: true, [txt4]: t.data.data.id, }); th.data.adding = 0; th.data.sele_store = 1; th.re_sum_price();//重新统计数量和总金额 } } }); } }, //等待获取配置 wait_for_store_config: function (bconfig) { var th = this; var e = bconfig; if (e && e.is_sort_storage) { wx.getLocation({ type: 'gcj02', success: function (res) { th.data.lat = res.latitude; th.data.lon = res.longitude; th.data.is_get_local_ok = 1; }, fail: function (res) { if (res.errCode == 2) { th.setData({ is_gps: 0 }); if (th.data.is_gps == 0) { getApp().confirmBox("请开启GPS定位", null, 10000, !1); } } else { th.setData({ is_gps: "3" }); } th.data.is_get_local_ok = 1; } }) } else { th.data.is_get_local_ok = 1; } }, //--- 获取卡类列表 --- getPlusCardType: function (func) { var storid = os.stoid; var user = getApp().globalData.userInfo; if (!user) return false; getApp().request.promiseGet("/api/weshop/plus/vip/mem/bership/list?" + "storeId=" + storid, {}).then(res => { var plusCard = res.data.data; var arr = [1219, 2089, 3031]; var new_arr = new Array(); var card_name_map = new Map(); var list = []; for (var i = 0; i < plusCard.length; i++) { if ((!user || user.card_field == null || user.card_field == "") && plusCard[i].IsStopBuy == true) continue; var name = "card" + plusCard[i].CorrPrice.toLowerCase(); card_name_map.set(name, plusCard[i].CardName); list.push(plusCard[i]); } var ob = {"card_list": list, "name_map": card_name_map}; func(ob); }) }, //--- 设置一下默认库存的数量 ---- set_def_storage(ee){ var that = this; that.data.fir_def_store = ee; that.setData({ def_pick_store: ee, sto_sele_name: ee.pickup_name, sto_sele_id: ee.pickup_id, sto_sele_distr: ee.distr_type }) }, //---------拿出门店分类和门店------------ get_sto(e) { var th = this; this.waitfor2(15, 'is_get_local_ok', function () { if (!th.data.sele_g) return false; var dd = null; var g_distr_type =0; if(th.data.sele_g) g_distr_type=th.data.sele_g.distr_type; if (g_distr_type != 0) { dd = { store_id: os.stoid, distr_type: g_distr_type, isstop: 0, pageSize: 2000 } } else { dd = { store_id: os.stoid, isstop: 0, pageSize: 2000 } } //如果有距离的话 if (th.data.lat != null) { dd.lat = th.data.lat; dd.lon = th.data.lon; } //如果会员是有默认的门店话 if (!th.data.def_pick_store && th.data.fir_def_store) { th.setData({def_pick_store: th.data.fir_def_store}); } wx.showLoading({ title: '加载中.' }); //----------获取门店---------------- getApp().request.promiseGet("/api/weshop/pickup/list", { data: dd, }).then(res => { var e = res; if (e.data.code == 0 && e.data.data && e.data.data.pageData && e.data.data.pageData.length > 0) { //如果有开启距离的功能,没有设置默认门店,要用最近的门店作为默认门店 if (dd.lat && (!th.data.def_pick_store || JSON.stringify(th.data.def_pick_store) == '{}') && th.data.bconfig && th.data.bconfig.is_sort_storage) { th.setData({ def_pick_store: e.data.data.pageData[0], sto_sele_name: e.data.data.pageData[0].pickup_name, sto_sele_id: e.data.data.pageData[0].pickup_id, sto_sele_distr: e.data.data.pageData[0].distr_type }); th.data.fir_def_store = e.data.data.pageData[0]; } //-- 如果有默认选择门店的时候,要把默认门店放在第一位,修改不要配送方式的判断 -- if (th.data.def_pick_store && JSON.stringify(th.data.def_pick_store) != '{}') { for (var k = 0; k < e.data.data.pageData.length; k++) { if (e.data.data.pageData[k].pickup_id == th.data.def_pick_store.pickup_id) { e.data.data.pageData.splice(k, 1); //删除 break; } } e.data.data.pageData.splice(0, 0, th.data.def_pick_store); //添加 } th.setData({all_pick_list: e.data.data.pageData}); th.deal_pickup(e); } }) }) }, //------------处理门店--------------- deal_pickup(e){ var th = this; wx.hideLoading(); //单总量超出5个的时候 if (e.data.data.total > 5) { getApp().request.get("/api/weshop/storagecategory/page", { data: { store_id: os.stoid, is_show: 1, pageSize: 1000, orderField: "sort", orderType: 'asc', }, success: function (ee) { if (ee.data.code == 0) { if (ee.data.data && ee.data.data.pageData && ee.data.data.pageData.length > 0) { var def_arr = new Array(); //-- 开始就看5个门店 -- for (var k = 0; k < 5; k++) { if (k == e.data.data.pageData.length) break; def_arr.push(e.data.data.pageData[k]); } th.setData({ def_pickpu_list: def_arr, pickpu_list: ee.data.data.pageData }); var sto_cate = ee.data.data.pageData; var sto_arr = e.data.data.pageData; var newarr = new Array(); var qita = new Array(); //----要进行门店分组-------- for (var i = 0; i < sto_arr.length; i++) { //找一下这个门店有没有在分类数组内 var find2 = 0, find2name = "", sort = 0; for (var m = 0; m < sto_cate.length; m++) { if (sto_arr[i].category_id == sto_cate[m].cat_id) { find2 = sto_cate[m].cat_id; find2name = sto_cate[m].cat_name; sort = sto_cate[m].sort; break; } } if (newarr.length > 0) { var find = 0; //如果有找到,那门店就在这个分组内,否则,分类就要排在其他 if (find2 != 0) { for (var ii = 0; ii < newarr.length; ii++) { if (sto_arr[i].category_id == newarr[ii].cat_id) { newarr[ii].s_arr.push(sto_arr[i]); find = 1; break; } } if (find == 0) { var arr0 = new Array(); arr0.push(sto_arr[i]); var item = { cat_id: find2, name: find2name, sort: sort, s_arr: arr0 }; newarr.push(item); } } else { qita.push(sto_arr[i]); } } else { //如果有找到,那门店就在这个分组内,否则,分类就要排在其他 if (find2 != 0) { var arr0 = new Array(); arr0.push(sto_arr[i]); var item = { cat_id: find2, name: find2name, sort: sort, s_arr: arr0 }; newarr.push(item); } else { qita.push(sto_arr[i]); } } } //门店分类要排序下 function compare(property) { return function (a, b) { var value1 = a[property]; var value2 = b[property]; return value1 - value2; } } if (newarr.length > 0) newarr.sort(compare("sort")); //----安排其他的分类----- if (qita.length > 0) { var item = { cat_id: -1, name: "其他", s_arr: qita }; newarr.push(item); } th.setData({ is_show_sto_cat: 1, all_sto: newarr }); } else { th.setData({ is_show_sto_cat: -1, only_pk: e.data.data.pageData }); //-----如果没有默认门店,要取第一个门店作为默认店.此时没有门店分类的情况------ if (!th.data.def_pick_store) { th.setData({def_pick_store: e.data.data.pageData[0]}) } } } else { th.setData({ is_show_sto_cat: -1, only_pk: e.data.data.pageData }); //-----如果没有默认门店,要取第一个门店作为默认店.此时没有门店分类的情况------ if (!th.data.def_pick_store) { th.setData({def_pick_store: e.data.data.pageData[0]}) } } } }); } else { th.setData({ is_show_sto_cat: 0, only_pk: e.data.data.pageData }); //-----如果没有默认门店,要取第一个门店作为默认店------ if (!th.data.def_pick_store && th.data.bconfig && th.data.bconfig.is_sort_storage) { if (e.data.data && e.data.data.pageData && e.data.data.pageData.length > 0) { th.setData({ def_pick_store: e.data.data.pageData[0], sto_sele_name: e.data.data.pageData[0].pickup_name, sto_sele_id: e.data.data.pageData[0].pickup_id, sto_sele_distr: e.data.data.pageData[0].distr_type }) } } } }, //---选择分类门店--- choice_sort_store: function (e) { var index = e.currentTarget.dataset.index; var region_name = e.currentTarget.dataset.region; var item = this.data.all_sto[index]; this.setData({ region_name: region_name, sort_store: 0, choice_sort_store: 1, sec_sto: item, sec_pick_index: 0 }); }, choose_for_store_fir: function (e) { var index_c = e.currentTarget.dataset.ind; var th = this; th.setData({ fir_pick_index: index_c }) }, //确定def_pick为选择的门店 sure_pick: function (e) { var th = this; var item = null; var openindstore = th.data.open_ind_store; if (th.data.choice_sort_store == 0) { var index = th.data.fir_pick_index; if (th.data.is_show_sto_cat == 1) { item = th.data.def_pickpu_list[index]; } else { item = th.data.only_pk[index]; //当没有门店分类的时候 } } else { var index = th.data.sec_pick_index; item = th.data.sec_sto.s_arr[index]; } if (!th.data.sele_g) return false; //判断门店的配送方式是不是匹配 var g_distr_type = th.data.sele_g.distr_type; if (item.distr_type != 0 && g_distr_type != 0 && item.distr_type != g_distr_type) { wx.showToast({ title: "门店配送方式不匹配", icon: 'none', duration: 2000 }); return false; } th.setData({ def_pick_store: item, sto_sele_name: item.pickup_name, sto_sele_id: item.pickup_id, sto_sele_distr: item.distr_type, store: 0, choice_sort_store: 0, fir_pick_index: 0, sort_store: 0 }); //只是单纯的选择门店 if (this.data.only) { this.data.only = 0; return false; } th.check_is_in_cart(function () { th.add_cart_func(); }) }, //---点击二级之后的选择--- choose_for_store: function (e) { var index_c = e.currentTarget.dataset.ind; var th = this; th.setData({ sec_pick_index: index_c, fir_pick_index: index_c }) }, //把选择的门店设置成默认的门店def_pick set_def_pick: function (e) { var th = this; var item = null; if (th.data.choice_sort_store == 0) { var index = th.data.fir_pick_index; if (th.data.is_show_sto_cat == 1) { item = th.data.def_pickpu_list[index]; } else { item = th.data.only_pk[index]; //当没有门店分类的时候 } } else { var index = th.data.sec_pick_index; item = th.data.sec_sto.s_arr[index]; } //判断门店的配送方式是不是匹配 var g_distr_type = th.data.sele_g.distr_type; if (item.distr_type != 0 && g_distr_type != 0 && item.distr_type != g_distr_type) { wx.showToast({ title: "门店配送方式不匹配", icon: 'none', duration: 2000 }); return false; } //先设置之前,要判断是不是有库存 var user_id = getApp().globalData.user_id; var def_pickup_id = item.pickup_id; getApp().request.put('/api/weshop/users/update', { data: { user_id: user_id, def_pickup_id: def_pickup_id }, success: function (res) { if (res.data.code == 0) { if (th.data.choice_sort_store == 0) th.setData({ fir_pick_index: 0 }); getApp().globalData.pk_store = item; } else { //s.showWarning("设置默认门店地址失败", null, 500, !1); getApp().my_warnning("设置默认门店地址失败", 0, th) } } }); th.setData({ def_pick_store: item, sto_sele_name: item.pickup_name, sto_sele_id: item.pickup_id, sto_sele_distr: item.distr_type, store: 0, choice_sort_store: 0, sort_store: 0, //关闭门店2级 }); th.add_cart_func(); }, // 返回按钮 returns: function () { this.setData({ sort_store: 0, choice_sort_store: 0 }); }, //选择更多门店 more_store: function () { this.setData({ sort_store: 1 }); }, //关闭选择门店 close_popup: function (e) { var th = this; this.setData({ store: 0, choice_sort_store: 0, sort_store: 0, fir_pick_index: 0, sec_pick_index: 0 }) }, //-------------获取购买数量的总函数---------------- get_buy_num: function (gd, func) { var map = this.data.g_buy_num, th = this, user_id = getApp().globalData.user_id; if (user_id == null) { getApp().goto("/pages/togoin/togoin"); return false; } if (map && map.has(gd.goods_id)) { "function" == typeof func && func(); } else { var res1=null; //----获取商品购买数---- getApp().request.promiseGet("/api/weshop/ordergoods/getUserBuyGoodsNum", { data: { store_id: os.stoid, user_id: user_id, goods_id: gd.goods_id, prom_type: 7, prom_id: th.data.act.id }, }).then(res2=>{ var g_buy_num=0; var promgoodsbuynum=0; if (res2.data.code == 0) { var buy_num_data = res2.data.data; if (buy_num_data.promgoodsbuynum) promgoodsbuynum = buy_num_data.promgoodsbuynum; g_buy_num = buy_num_data.goodsbuynum; } if (!map) map = new Map(); var ob={ gd_buynum:g_buy_num, prom_buybum:promgoodsbuynum, } map.set(gd.goods_id, ob); th.setData({ g_buy_num: map }); "function" == typeof func && func(); }) } }, //-- 当是减数量的调用 -- sub_updata_cart(){ var th = this; var index = this.data.sele_index; var txt = "list[" + index + "].haveAdded"; var txt1 = "list[" + index + "].num"; var txt2 = "list[" + index + "].showNum"; var cur_price = this.data.sele_g.shop_price; if (th.data.card_field && this.data.sele_g[th.data.card_field]) { cur_price = this.data.sele_g[th.data.card_field]; } var updata = { id: th.data.sele_g.cart_id, goods_num: th.data.goodsInputNum, goods_price: cur_price, store_id: os.stoid, }; if(th.data.s_cart_num){ updata.goods_num=th.data.s_cart_num; } //---是不是从收藏夹出来的--- 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; } } //调用接口,更新购物车 getApp().request.put("/api/weshop/cart/update", { data: updata, success: function (t) { th.setData({ [txt1]: th.data.goodsInputNum, [txt2]: true, [txt]: true, }); th.data.adding = 0; th.data.sele_store = 1; if(th.data.s_cart_num){ var txt_temp = "list[" + index + "].cart_num"; th.setData({[txt_temp]:th.data.s_cart_num}) } th.re_sum_price();//重新统计数量和总金额 } }); }, //一 开始的选择门店 -- choose_store: function (e) { var userInfo = getApp().globalData.userInfo; if (!userInfo) { getApp().goto("/pages/togoin/togoin"); return false; } this.data.only = 1; this.setData({ store: 1 }) }, // -- 加入之前,先判断有没有在购物车中,没有商品就添加 -- check_is_in_cart: function (func) { var th = this; var index = th.data.sele_index; var txt = "list[" + index + "].haveAdded"; var txt1 = "list[" + index + "].num"; var txt2 = "list[" + index + "].showNum"; var txt3 = "list[" + index + "].cart_id"; var txt4 = "list[" + index + "].current_price"; var txt5 = "list[" + index + "].cart_num"; //----先看会员在购物车中是否加入了该商品----- getApp().request.get("/api/weshop/cart/page", { data: { store_id: os.stoid, user_id: oo.user_id, goods_id: th.data.sele_g.goods_id, pick_id: th.data.sto_sele_id, }, success: function (re) { if (re.data.data.total > 0) { var item = re.data.data.pageData[0]; th.get_buy_num(th.data.sele_g,function () { //当前的价格要更新进去 var cur_price = th.data.sele_g.shop_price; if (th.data.card_field && th.data.sele_g[th.data.card_field]) { cur_price = th.data.sele_g[th.data.card_field]; } var prom_buybum=0; var gd_buynum=0; //加入也要控制一下限购 var check_obj=th.data.g_buy_num.get(th.data.sele_g.goods_id); if(check_obj.gd_buynum && check_obj.gd_buynum>0) gd_buynum=check_obj.gd_buynum; if(check_obj.prom_buybum && check_obj.prom_buybum>0) prom_buybum=check_obj.prom_buybum; if(check_obj){ if(check_obj.prom_buybum && check_obj.prom_buybum>=th.data.sele_g.buyqty && th.data.sele_g.buyqty>0 ){ wx.showToast({ title: "您的已购数量超出活动的限购", icon: 'none', duration: 2000 }); return false; } if(check_obj.gd_buynum && check_obj.gd_buynum>=th.data.sele_g.viplimited && th.data.sele_g.viplimited>0 ){ wx.showToast({ title: "您的已购数量超出商品的限购", icon: 'none', duration: 2000 }); return false; } } item.cbuy='no'; var cbuy=th.data.sele_g.viplimited>0?th.data.sele_g.viplimited-gd_buynum:'no'; if(cbuy!='no') item.cbuy=cbuy; var cbuy2=th.data.sele_g.buyqty>0?th.data.sele_g.buyqty-prom_buybum:'no'; if(cbuy2!='no'){ if(item.cbuy=='no' || item.cbuy>cbuy2) item.cbuy=cbuy2; } var num=item.goods_num; if(item.cbuy>-1 && item.cbuy item.zhqty) { for (var i = 0; i < item.num - item.zhqty; i++) { no_in_arr.push({price: item.current_price,goods_id:item.goods_id}); } } } else { for (var j = 0; j < item.num; j++) { no_in_arr.push({price: item.current_price,goods_id:item.goods_id}); } } } else { if (item.zhqty) need_to_buy += item.zhqty; } } //当满足组合的要求:总数要满足,起购数要满足 if (all_num >= this.data.act.zhbuyqty && !need_to_buy) { function sortData(a, b) { return a.price - b.price } if(no_in_arr.length) no_in_arr.sort(sortData); var aprice = this.data.act.zhprice; if (this.data.act.zhbuyqty > all_zhqty) { for (var n = 0; n < this.data.act.zhbuyqty-all_zhqty; n++) { no_in_arr.pop(); } } //看一下剩下的数量有没有满足组合购的要求,以及要不要倍增 if (this.data.act.is_bz && no_in_arr.length >= this.data.act.zhbuyqty) { //看一下是几倍 var be = parseInt(no_in_arr.length / this.data.act.zhbuyqty); aprice += be * aprice; for (var m = 0; m < be * this.data.act.zhbuyqty; m++) { no_in_arr.pop(); } } //算一下剩余的钱 if (no_in_arr.length) { for (var ii in no_in_arr) { var item = no_in_arr[ii]; aprice += item.price; } } all_price = aprice; } this.data.changing=0; this.setData({ all_price: all_price, need_to_buy: need_to_buy, all_num: all_num }) if(all_num<=0){ this.data.sele_store = 0; //什么都没有选,就没有选择了门店 } }, go_cart:function () { getApp().goto("/pages/cart/cart/cart"); }, //获取购物车中,相应的门店已购买的商品 get_cart_val:function (e) { var th=this; var user_id=getApp().globalData.user_id; var req={ user_id: user_id, store_id: os.stoid, pageSize: 600, state:0, prom_type:7, prom_id:this.data.act.id }; //获取购物车列表 getApp().request.get("/api/weshop/cart/list",{ data:req, success: async function(e) { if (e.data.code == 0 && e.data.data && e.data.data.pageData && e.data.data.pageData.length) { var map={}; var mlist=e.data.data.pageData; for(let i in mlist){ let item=mlist[i]; if(item.prom_type!=7) continue; if(item.prom_id!=th.data.act.id) continue; map[item.goods_id]=item; } for(let j in th.data.list){ let item_j=th.data.list[j]; item_j.current_price=item_j.shop_price; var card_price=0; //如果会员有等级价 if (th.data.card_field) { card_price = item_j[th.data.card_field]; if (card_price > 0) { item_j.current_price=card_price; } } if(map[item_j.goods_id]){ var cart_num=map[item_j.goods_id].goods_num; item_j.num=cart_num; item_j.cart_num=cart_num; item_j.cart_id=map[item_j.goods_id].id; if(item_j.buyqty>0){ var g_buy_num=0; var promgoodsbuynum=0; //----获取商品购买数---- await getApp().request.promiseGet("/api/weshop/ordergoods/getUserBuyGoodsNum", { data: { store_id: os.stoid, user_id: user_id, goods_id: item_j.goods_id, prom_type: 7, prom_id: th.data.act.id }, }).then(res2=>{ if (res2.data.code == 0) { var buy_num_data = res2.data.data; if (buy_num_data.promgoodsbuynum) promgoodsbuynum = buy_num_data.promgoodsbuynum; g_buy_num = buy_num_data.goodsbuynum; } }) if(item_j.viplimited>0){ var cby=item_j.viplimited-g_buy_num; if(cby<=0) continue;//不能买就continue下一个 item_j.num=cby>item_j.num?item_j.num:cby; } if(item_j.buyqty>0){ var cby=item_j.buyqty-promgoodsbuynum; if(cby<=0) continue;//不能买就continue下一个 item_j.num=cby>item_j.num?item_j.num:cby; } } item_j.haveAdded=1; item_j.showNum=true; } } th.setData({list:th.data.list}); th.re_sum_price(); } } }); } })