var t = require("../../../utils/util.js"), ut = t, e = require("../../../utils/common.js"), a = require("../../../utils/wxParse/wxParse.js"), s = getApp(), i = s.request, rq = i, oo = s.globalData, o = s.globalData.setting, os = o; var utils = require('../../../utils/util.js'),ut=utils; var regeneratorRuntime = require('../../../utils/runtime.js'); Page({ data: { gid: "", stoid: o.stoid, url: o.url, resourceUrl: o.resourceUrl, iurl: o.imghost, defaultAvatar: o.resourceUrl + "/static/images/user68.jpg", data: null, openSpecModal: !1, openPromModal: !1, supportPageScroll: !1, //联系电话 mobile: '', bconfig:null, sales_rules:1, t_time:null, card_field:"", dp_price:0, cut_price:0, open_ind_store:1, goodsInputNum:1, g_buy_num: null, sele_collocation:null, room_id:0, //房间号 }, //------初始化加载---------- onLoad: function(t) { var goods_id=t.goods_id; var room_id=t.room_id; this.setData({gid:goods_id}); if(room_id) this.data.room_id=room_id; //房间号要存起来 var ee=this,th=ee,that=ee; var first_leader=t.first_leader; if(first_leader){ getApp().globalData.first_leader=first_leader; //调用接口判断是不是会员 getApp().request.promiseGet("/api/weshop/shoppingGuide/get/"+os.stoid+"/"+first_leader,{}).then(res=>{ if(res.data.code==0){ getApp().globalData.guide_id=res.data.data.id; } }) } //----获取系统参数,并判断等级价格----- getApp().getConfig2(function(e) { var json_d = JSON.parse(e.switch_list); ee.setData({ store_config: e, bconfig: e, sys_switch:json_d, is_closecoupon: json_d.is_closecoupon, is_newsales_rules:json_d.is_newsales_rules, 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.data.rank_switch=true; } }); //获取用户的默认门店 getApp().get_user_store(function(ee) { if(!ee) { th.data.fir_def_store={}; //赋值空对象 return false; } var appd=getApp().globalData; var w_time = setInterval(function() { if (that.data.is_get_local_ok == 0) return false; if (!that.data.data) return false; clearInterval(w_time); var distance = null; var e=JSON.parse(JSON.stringify(ee)); if(th.data.data) var g_distr_type=th.data.data.distr_type; e.is_no_dis=0; if(e.distr_type!=0 && g_distr_type!=0 && e.distr_type!=g_distr_type ){ e.is_no_dis=1; } //如果有开启近距离的话,同时距离优不一样了 if (that.data.lat != null) { //如果经纬度有变化的话 if( appd.lat==that.data.lat && appd.lon==that.data.lon && e.distance>0 ){ that.data.fir_def_store=e; that.setData({ def_pick_store: e, sto_sele_name: e.pickup_name, sto_sele_id: e.pickup_id, sto_sele_distr: e.distr_type }) }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 && res.data.data && res.data.data.pageData){ e=res.data.data.pageData[0]; if (e){ appd.pk_store=e; that.data.fir_def_store=e; that.setData({ def_pick_store: e, sto_sele_name: e.pickup_name, sto_sele_id: e.pickup_id, sto_sele_distr: e.distr_type }) } } }) } //e.distance = distance; appd.lat=that.data.lat; appd.lon=that.data.lon; }else{ if (e) { e.distance = null; that.data.fir_def_store=e; that.setData({ def_pick_store: e, sto_sele_name: e.pickup_name, sto_sele_id: e.pickup_id, sto_sele_distr: e.distr_type }) } } }, 500) }); }, //---展示--- onShow: function() { var ee=this,th=ee,that=ee; var gid = this.data.gid,i = getApp().request; ee.data.g_buy_num = new Map(); this.wait_for_store_config(); setTimeout(function(){ i.get("/api/weshop/goods/get/" + o.stoid + "/" + ee.data.gid, { failRollback: !0, success: function(t) { if (t.data.code == 0) { if (t.data.data.is_on_sale != 1) { wx.showModal({ title: '商品已经下架', showCancel: !1, complete: function() { wx.navigateBack(); } }); } var timestamp = Date.parse(new Date()); timestamp = timestamp / 1000; if (t.data.data.on_time > timestamp) { wx.showModal({ title: '商品还未上架', showCancel: !1, complete: function() { wx.navigateBack(); } }); } if (t.data.data.down_time > 0) { if (t.data.data.down_time < timestamp) { wx.showModal({ title: '商品已经到期下架', showCancel: !1, complete: function() { wx.navigateBack(); } }); } } t.data.data.on_time = ut.formatTime(t.data.data.on_time, 'yyyy-MM-dd hh:mm:ss'); var txt = (t.data.data.shop_price / t.data.data.market_price * 10).toFixed(2); t.data.data['disc'] = txt; if (t.data.data.original_img.indexOf(o.imghost) == -1) t.data.data.original_img = o.imghost + t.data.data.original_img; if (t.data.data.goods_content == null) t.data.data.goods_content = ""; //计算商品的规格 var gg = ""; if(t.data.data.goods_spec=="null" || t.data.data.goods_spec==null) t.data.data.goods_spec=""; if(t.data.data.goods_color=="null" || t.data.data.goods_color==null) t.data.data.goods_color=""; if (t.data.data.goods_spec != "" && t.data.data.goods_color != "") { gg = t.data.data.goods_spec + "/" + t.data.data.goods_color; } else if (t.data.data.goods_spec != "" || t.data.data.goods_color != "") { gg = t.data.data.goods_spec + t.data.data.goods_color; } else { gg = "规格1"; } t.data.data.gg = gg; //--看一下有没有开启等级卡--- if(ee.data.rank_switch){ //---回调卡的列表--- th.getPlusCardType(function(ob){ var user = getApp().globalData.userInfo; if(user){ 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 && now5) card_name=card_name.substring(0,5); th.setData({card_field:user.card_field,card_name:card_name}); if(t.data.data[user.card_field]>0) t.data.data.shop_price=t.data.data[user.card_field]; } } } ee.setData({ data: t.data.data, }); }) }else{ ee.setData({ data: t.data.data, }); } if(!ee.data.collocationList){ /*---获取活动的重表---*/ //调用接口判断订单优惠, getApp().request.promiseGet("/api/weshop/goods/getGoodsPromList/" + os.stoid+"/"+ee.data.gid+"/2", {}).then(res => { if(res.data.code==0){ var r_data=res.data.data; th.loop_promise(0,r_data.collocationList,function(){ ee.setData({ collocationGoods:r_data.collocationPromList, collocationList:r_data.collocationList, }) }) } }) } //获取统一条形码,普通商品和优惠促销的商品 if ( t.data.data.prom_type == 5){ //默认门店要拿下门店库存 if(that.data.sales_rules==2 && that.data.is_newsales_rules){ //--等待某个值只运行---,这里有可能因为导航的时间太久,而不能计算门店库存 getApp().waitfor2(that,"wait_for_user_store","fir_def_store",function(){ if(th.data.fir_def_store && th.data.fir_def_store.pickup_id ){ var lock=0,plist=null; //先读取门店的lock,采用链式写法,少用await getApp().request.promiseGet("/api/weshop/order/ware/lock/page",{ data:{store_id:os.stoid,wareId:ee.data.data.goods_id,storageId:that.data.fir_def_store.pickup_id,pageSize:1000} }).then(res=>{ if(res.data.code==0 && res.data.data.total>0){ for(var i in res.data.data.pageData) lock+=res.data.data.pageData[i].outQty } //---通过接口获取门店的线下库存信息-- return getApp().request.promiseGet("/api/weshop/goods/getWareStorages",{ data:{storageNos:that.data.fir_def_store.pickup_no,wareIds:encodeURIComponent(th.data.data.erpwareid),storeId:os.stoid,pageSize:2000} }) }).then(res=>{ if(res.data.code==0 && res.data.data.total>0){ plist=res.data.data.pageData[0]; } if(plist && plist.CanOutQty-lock>0){ that.data.fir_def_store.CanOutQty=plist.CanOutQty-lock; }else{ that.data.fir_def_store.CanOutQty=0; } //--给门店赋值线下库存-- th.setData({def_pick_store:that.data.fir_def_store}); //获取门店 ee.get_sto(); }) }else{ //--获取门店-- ee.get_sto(); } }) }else{ //获取门店 ee.get_sto(); } } else { return getApp().my_warnning("商品没有搭配购的活动",0,th) } } } }); },1000) }, onUnload: function() {}, onHide: function() { clearInterval(this.data.t_time); }, //--滚动到顶部-- doScrollTop: function() { wx.pageScrollTo({ scrollTop: 0 }); }, //------------加入购物车-------------- addCart: function(t) { var th = this; th.add_cart_func(t); }, //加入购物的函数 add_cart_func: function(t) { var i = getApp().request; if (oo.user_id == null) { return s.my_warnning("还未登录!", 0, this); } var e = this, th = e, a = 0, o = this.data.data; a = o.goods_id; //----------添加到购物车时,要判断限购数量,-------- e.get_buy_num(o, function(ee) { //---判断商品是否超出限购--- if (th.data.g_buy_num != null && th.data.data.viplimited > 0) { if (th.data.goodsInputNum + th.data.g_buy_num.get(th.data.data.goods_id) > th.data.data.viplimited) { wx.showModal({ title: '提示', content: '超出商品限购' }); return false; } } //---判断商品是否超出活动限购--- if (th.data.prom_buy_num != -1 && th.data.prom_buy_limit > 0) { 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_type: 5, prom_id:o.prom_id }; //---是不是从收藏夹出来的--- 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; } } //如果有导购ID的话 if(newd['guide_id'] && th.data.sele_collocation){ for(var jj in th.data.sele_collocation ){ th.data.sele_collocation[jj]['guide_id']=newd['guide_id']; th.data.sele_collocation[jj]['guide_type']=newd['guide_type']; } } //-- 如果有房间号的时候 -- if(th.data.room_id){ newd['room_id']=th.data.room_id; for(var nn in th.data.sele_collocation ){ th.data.sele_collocation[nn]['room_id']=newd['room_id']; } } //-----如果是秒杀,团购,积分购,拼团----- if (th.data.data.prom_type != 5) { return s.my_warnning("商品不是搭配活动!", 0, th); }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.data.erpwareid),storeId:os.stoid,pageSize:2000}, success:function(res){ if(res.data.code==0){ if(res.data.data.pageData.length>0){ var CanOutQty=res.data.data.pageData[0].CanOutQty; if(CanOutQty0){ 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 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['pick_name'] = th.data.sto_sele_name; newd['pick_dis'] = th.data.sto_sele_distr; newd["collocation_goods"]=th.data.sele_collocation; th.buyNow(newd); }, //----------立即购买----------- buyNow: function(e) { s.set_b_now(e); wx.redirectTo({ url: "/pages/cart/cart2/cart2?is_bnow=1&goods_id=" + e.goods_id, }); }, //----------增加购买数量----------- addCartNum: function(t) { this.checkCartNum(this.data.goodsInputNum + 1); }, //----------减少购买数量----------- subCartNum: function(t) { this.checkCartNum(this.data.goodsInputNum - 1); }, //----------输入框输入购买数量----------- inputCartNum: function(t) { this.checkCartNum(Number(t.detail.value)); }, //------检查数量是不是超出限购------ checkCartNum: function(t) { var th = this; this.get_buy_num(this.data.data, async function() { //--判断商品是否超出限购-- if (th.data.g_buy_num != null && th.data.data.viplimited > 0) { var gd_buy_num=th.data.g_buy_num.get(th.data.data.goods_id); if (t + gd_buy_num > th.data.data.viplimited) { wx.showModal({ title: '超出商品限购', }); var num= th.data.data.viplimited-gd_buy_num; if(num<0) num=0; th.setData({goodsInputNum:num}) return false; } } //--判断商品是否超出活动限购-- if (th.data.prom_buy_num != -1 && th.data.prom_buy_limit > 0) { 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.data.prom_type == 1 || th.data.data.prom_type == 6) { var redis_num = 0; //------判断活动是否抢光----- await getApp().request.promiseGet("/api/weshop/activitylist/getActLen/" + os.stoid + "/" + th.data.data.prom_type + "/" + th.data.data.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.data.store_count; if(th.data.sales_rules==2){ if(!th.data.def_pick_store){ wx.showModal({ title: '请选择门店', }); return false; }else{ e=th.data.def_pick_store.CanOutQty; } } //库存不足,不增加 if(e e || 0 == e ? t = e : t < 1 && (t = 1); th.setData({ goodsInputNum: t }); }) }, closeSpecModal: function() { var th=this; this.setData({ openSpecModal: !1, openSpecModal_pt: !1 }); }, openSpecModel: function(t) { var th = this; this.setData({ store: 0, choice_sort_store: 0, sort_store: 0, }) //--先判断会员状态-- var user_info = getApp().globalData.userInfo; if (user_info == null || user_info.mobile == undefined || user_info.mobile == "" || user_info.mobile == null) { wx.navigateTo({ url: '/pages/togoin/togoin', }) return false; } var collocationList=this.data.collocationList; this.data.sele_collocation=null; for(var i in collocationList){ if(collocationList[i].sele){ collocationList[i].goods_num=1; collocationList[i].prom_type=5; collocationList[i].prom_id=th.data.data.prom_id; collocationList[i].goods_price=collocationList[i].price; collocationList[i].is_collocation=1; if(!th.data.sele_collocation) th.data.sele_collocation=new Array(); th.data.sele_collocation.push(collocationList[i]); var the_dis_t=collocationList[i].distr_type; //如果有默认门店的判断门店匹配情况 if(th.data.def_pick_store && th.data.def_pick_store.distr_type!=0 && the_dis_t!=0 && the_dis_t!=th.data.def_pick_store.distr_type ){ th.data.def_pick_store.is_no_dis=1; th.setData({def_pick_store:th.data.def_pick_store}); }else{ th.data.def_pick_store.is_no_dis=0; th.setData({def_pick_store:th.data.def_pick_store}); } } } if(!th.data.sele_collocation){ return s.my_warnning("请选择搭配商品!", 0, th); } this.setData({ openSpecModal: !0, }); }, closePromModal: function() { this.setData({ openPromModal: !1 }); }, openPromModal: function() { this.setData({ openPromModal: !0 }); }, //--点击分享事件--- onShareAppMessage: function(t) { var curPage=this; var pagePath = curPage.route; //当前页面url if (pagePath.indexOf('/') != 0) { pagePath = '/' + pagePath; } if(getApp().globalData.user_id){ if(pagePath.indexOf("?")>0){ pagePath+="&goods_id="+this.data.gid+" &first_leader="+getApp().globalData.user_id; }else{ pagePath+="?goods_id="+this.data.gid+"&first_leader="+getApp().globalData.user_id; } } console.log("111"); console.log(pagePath); return { title: "搭配购", path: pagePath, } }, //-----图片失败,默认图片----- bind_bnerr: function(e) { var _errImg = e.target.dataset.errorimg; var _errObj = {}; _errObj[_errImg] = this.data.iurl + "/miniapp/images/default_g_img.gif"; this.setData(_errObj) //注意这里的赋值方式,只是将数据列表中的此项图片路径值替换掉 ; }, //-----图片失败,默认图片----- bind_bnerr2: function(e) { var _errImg = e.target.dataset.errorimg; var _errObj = {}; _errObj[_errImg] = this.data.iurl + "/miniapp/images/hui_hear_pic.png" this.setData(_errObj) //注意这里的赋值方式,只是将数据列表中的此项图片路径值替换掉 ; }, //---------拿出门店分类和门店------------ get_sto(e) { var th = this,that=this; var timer_get = setInterval(function() { if (th.data.is_get_local_ok == 0) return false; var dd = null, c_list=th.data.collocationList, i = getApp().request; var g_distr_type = th.data.data.distr_type; var collocationList=th.data.collocationList; //获取所有的门店 if(g_distr_type==0 && collocationList ){ for(var i in collocationList){ if(collocationList[i].sele && collocationList[i].distr_type>0){ g_distr_type=collocationList[i].distr_type; } } } if (g_distr_type != 0) { dd = { store_id: o.stoid, distr_type: g_distr_type, isstop: 0, pageSize: 2000 } } else { dd = { store_id: o.stoid, isstop: 0, pageSize: 2000 } } //如果有距离的话 if (th.data.lat != null) { dd.lat = th.data.lat; dd.lon = th.data.lon; } clearInterval(timer_get); //----------获取门店---------------- getApp().request.promiseGet("/api/weshop/pickup/list", { data: dd, }).then(res => { var e = res; if (e.data.code == 0) { //如果有开启距离的功能,没有设置默认门店,要用最近的门店作为默认门店 if(dd.lat && !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) { 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}); //--获取线下库存,而且不是新的门店规则,同时不能是活动-- if(th.data.sales_rules==2 && !th.data.is_newsales_rules && th.data.prom_type!=1 && th.data.prom_type!=6){ setTimeout(function(){ th.deal_pickup_dline(e); },800) }else{ setTimeout(function(){ th.deal_pickup(e); //--普通门店排版-- },800) } } }) }, 200) }, //------------处理门店--------------- deal_pickup(e){ var th=this; //单总量超出5个的时候 if (e.data.data.total > 5) { getApp().request.get("/api/weshop/storagecategory/page", { data: { store_id: o.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(); var ishas = 0; //-- 开始就看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) { 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 }) } } }, //------------处理线下门店库存-------- deal_pickup_dline(e){ var pkno=[],th=this; if(this.data.def_pick_store){ pkno.push(this.data.def_pick_store.pickup_no); } for(var i in e.data.data.pageData){ var item=e.data.data.pageData[i]; if(pkno.indexOf(item.pickup_no)<0) pkno.push(item.pickup_no); } var pkno_str=pkno.join(","); var o_plist=e.data.data.pageData; var new_list=[]; var is_find_def_store=0; var lock=[]; //先读取门店的lock,采用链式写法,少用await getApp().request.promiseGet("/api/weshop/order/ware/lock/page",{ data:{store_id:os.stoid,wareId:th.data.data.goods_id,pageSize:1000} }).then(res=>{ if(res.data.code==0 && res.data.data.total>0){ lock=res.data.data.pageData } //---通过接口获取门店的线下库存信息-- return getApp().request.promiseGet("/api/weshop/goods/getWareStorages",{ data:{storageNos:pkno_str,wareIds:encodeURIComponent(th.data.data.erpwareid),storeId:os.stoid,pageSize:2000} }) }).then(res=>{ if(res.data.code==0){ if(res.data.data.pageData){ var plist=res.data.data.pageData; var def_pick_store=th.data.def_pick_store; //以原来的数组为外循环,保证距离的顺序 for(var kk in o_plist){ for(var ii in plist){ //线下的门店小心 var n_item=plist[ii]; if(n_item.StorageNo==o_plist[kk].pickup_no){ //拿到锁库的数量 var lock_num=th.find_lock_num(o_plist[kk].pickup_id,lock); //可出库数大于预出库库存的数量,可以判断为有库存 if(n_item.CanOutQty>lock_num){ o_plist[kk].CanOutQty=n_item.CanOutQty-lock_num; new_list.push(o_plist[kk]); //如果找到默认门店 if(th.data.fir_def_store && n_item.StorageNo==th.data.fir_def_store.pickup_no){ th.data.fir_def_store.CanOutQty=n_item.CanOutQty-lock_num; if(def_pick_store.pickup_id==th.data.fir_def_store.pickup_id) th.setData({def_pick_store:th.data.fir_def_store}) is_find_def_store=1; } } break; } } } //数据组装下 var em={};em.data={};em.data.data={}; em.data.data.total=new_list.length; em.data.data.pageData=new_list; if(th.data.fir_def_store && !is_find_def_store && th.data.fir_def_store.pickup_id){ th.data.fir_def_store.CanOutQty=0; //--当选择的门店是客户默认的门店的时候-- if(th.data.def_pick_store && th.data.fir_def_store.pickup_id==th.data.def_pick_store.pickup_id) { th.setData({def_pick_store:th.data.fir_def_store}); em.data.data.pageData.unshift(th.data.def_pick_store); }else{ em.data.data.pageData.splice(1,0,th.data.fir_def_store); } } //---把数组组装进去--- th.deal_pickup(em); }else{ th.setData({def_pick_store:null,all_sto:null,only_pk:null}) } }else{ th.setData({def_pick_store:null,all_sto:null,only_pk:null}) } }) }, find_lock_num(pick_id,lock){ var lock_num=0; if(!lock) return 0; if(lock.length<0) return 0; for(var i in lock){ if(pick_id==lock[i].pickupId){ lock_num+=lock[i].outQty; } } return lock_num; }, //----------取货门店被点击的效果------ getmendian: function(t) { this.setData({ ismend: 1, }); }, //----------隐藏取货门店,选取门店---------- hidemend: function(e) { var pid = e.target.dataset.p_id; var pname = e.target.dataset.p_name; var p_distr_t = e.target.dataset.p_dis; this.setData({ ismend: 0, is_sec_mend: 0, sto_sele_id: pid, sto_sele_name: pname, sto_sele_distr: p_distr_t }); }, //------显示取货2级---------- show_sec: function(t) { var index = t.target.dataset.index; var item = this.data.all_sto[index]; this.setData({ is_sec_mend: 1, sec_sto: item }); }, //------隐藏取货门店2级---- hide_sec_mend: function() { this.setData({ is_sec_mend: 0, }); }, //加载更多是靠这个函数 onReachBottom: function() { }, //--------检查是搭配促销活动是不是结束------- async check_prom(gid, prom_type, prom_id) { }, //-------------获取购买数量的总函数---------------- 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) { map.set(gd.goods_id, 0); th.setData({ g_buy_num: map, prom_buy_num: 0, }); "function" == typeof func && func(); return false; } if (map.has(gd.goods_id)) { "function" == typeof func && func(); } else { //----获取商品购买数---- getApp().request.get("/api/weshop/ordergoods/getUserBuyGoodsNum", { data: { store_id: os.stoid, user_id: user_id, goods_id: gd.goods_id }, success: function(t) { if (t.data.code == 0) { var g_buy_num = t.data.data.goodsbuynum; if (gd.prom_type == 1 || gd.prom_type == 2 || gd.prom_type == 4 || gd.prom_type == 6) { //----获取活动购买数---- getApp().request.get("/api/weshop/ordergoods/getUserBuyGoodsNum", { data: { store_id: os.stoid, user_id: user_id, goods_id: gd.goods_id, prom_type: gd.prom_type, prom_id: gd.prom_id }, //-----获取----- success: function(tt) { if (tt.data.code == 0) { map.set(gd.goods_id, g_buy_num); th.setData({ g_buy_num: map, prom_buy_num: tt.data.data.goodsbuynum, }); "function" == typeof func && func(); } } }); } else { map.set(gd.goods_id, g_buy_num); th.setData({ g_buy_num: map }); "function" == typeof func && func(); } } } }); } }, //--跳转到商品详情页面-- go_goods: function(e) { var gid = e.currentTarget.dataset.gid; var url = "/pages/goods/goodsInfo/goodsInfo?goods_id=" + gid; getApp().goto(url); }, // 选择门店 choice_store: function(ee) { var th = this; var ind=ee.currentTarget.dataset.ind; var bconfig = th.data.bconfig; if(!th.data.only_pk && !th.data.def_pickpu_list){ getApp().confirmBox("门店库存不足", null, 25000, !1); return false; } if(th.data.only_pk && !th.data.only_pk.length){ getApp().confirmBox("门店库存不足", null, 25000, !1); return false; } if(th.data.def_pickpu_list && !th.data.def_pickpu_list.length){ getApp().confirmBox("门店库存不足", null, 25000, !1); return false; } if (bconfig && bconfig.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; th.setData({ is_gps: 1 }); //th.onShow(); th.get_sto(); }, fail: function(res) { //th.onShow(); th.data.is_get_local_ok = 1; th.get_sto(); if (res.errCode == 2) { th.setData({ is_gps: 0 }); if (th.data.is_gps == 0) { getApp().confirmBox("请开启GPS定位", null, 25000, !1); } } else { th.setData({ is_gps: "3" }); } } }) }else{ th.data.is_get_local_ok = 1; th.get_sto(); } if(ind!=undefined && ind!=null ){ this.setData({ open_ind_store: ind, store: 1, openSpecModal: !1, openSpecModal_pt: !1 }) }else{ this.setData({ store: 1, openSpecModal: !1, openSpecModal_pt: !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 }) var openindstore=this.data.open_ind_store; if (openindstore == 1) { th.setData({ openSpecModal: !0, openSpecModal_ind: openindstore, }); } else if (openindstore == 2) { th.setData({ openSpecModal: !0, openSpecModal_ind: openindstore, }); } else if (openindstore == 4) { //4就是拼团 th.setData({ openSpecModal_pt: 1, //打开拼团购买界面 store: 0, //关闭门店 choice_sort_store: 0, //关闭门店2级 sort_store: 0, //关闭门店2级 }); } else { th.setData({ store: 0, choice_sort_store: 0, sort_store: 0 }) } }, //选择更多门店 more_store: function() { this.setData({ sort_store: 1 }); }, //---选择分类门店--- 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 }) }, //如果开启线下库存,已经急速库存才会使用 async check_the_pick(item,func){ var th=this; var goodsinfo=th.data.data; var erpwareid=goodsinfo.erpwareid; var plist=null; var lock=0; //---如果是活动的时候--- if(th.data.prom_type==1 || th.data.prom_type==6){ func(); return false; } if(this.data.sales_rules!=2){ func(); }else{ //先读取门店的lock await getApp().request.promiseGet("/api/weshop/order/ware/lock/page",{ data:{store_id:os.stoid,wareId:goodsinfo.goods_id,storageId:item.pickup_id,pageSize:1000} }).then(res=>{ if(res.data.code==0 && res.data.data.total>0){ for(var i in res.data.data.pageData ) lock+=res.data.data.pageData[i].outQty; } }) //读取线下的门店库存 await getApp().request.promiseGet("/api/weshop/goods/getWareStorages",{ data:{storageNos:item.pickup_no,wareIds:encodeURIComponent(erpwareid),storeId:os.stoid,pageSize:2000} }).then(res=>{ if(res.data.code==0 && res.data.data.total>0){ plist=res.data.data.pageData[0]; } }) if(plist && plist.CanOutQty-lock>0){ item.CanOutQty=plist.CanOutQty-lock; func(); return false; } getApp().my_warnning(item.pickup_name+"库存不足!", 0, th); } }, //确定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]; } //--回调函数的用法-- th.check_the_pick(item,function(){ 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 }); if (openindstore == 1) { th.setData({ openSpecModal: !0, openSpecModal_ind: openindstore, }); } else if (openindstore == 2) { th.setData({ openSpecModal: !0, openSpecModal_ind: openindstore, }); } else if (openindstore == 4) { //4就是拼团 th.setData({ openSpecModal_pt: 1, //打开拼团购买界面 store: 0, //关闭门店 choice_sort_store: 0, //关闭门店2级 sort_store: 0, //关闭门店2级 }); } else { th.setData({ store: 0, choice_sort_store: 0, sort_store: 0 }) } }) }, //---点击二级之后的选择--- 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]; } //先设置之前,要判断是不是有库存 th.check_the_pick(item,function(){ var store_id = o.stoid; var user_id = getApp().globalData.user_id; var def_pickup_id = item.pickup_id; getApp().request.put('/api/weshop/users/update', { data: { user_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 }); var openindstore = th.data.open_ind_store; if (openindstore == 1) { th.setData({ openSpecModal: !0, openSpecModal_ind: openindstore, store: 0, choice_sort_store: 0, sort_store: 0, }); } else if (openindstore == 2) { th.setData({ openSpecModal: !0, openSpecModal_ind: openindstore, store: 0, choice_sort_store: 0, sort_store: 0, }); } else if (openindstore == 4) { //4就是拼团 th.setData({ openSpecModal_pt: 1, //打开拼团购买界面 store: 0, //关闭门店 choice_sort_store: 0, //关闭门店2级 sort_store: 0, //关闭门店2级 }); } else { th.setData({ store: 0, choice_sort_store: 0, sort_store: 0, }) } }) }, wait_for_store_config: function() { var th = this; th.data.t_time = setInterval(function() { if (th.data.bconfig == null) false; var e = th.data.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; } clearInterval(th.data.t_time); }, 500) }, //-- 根据ID拿出门店 -- get_pick_from_list(pid){ var all_pick_list=this.data.all_pick_list; for(var i in all_pick_list){ var item=all_pick_list[i]; if(item.pickup_id==pid){ return item; } } }, //--- 获取卡类列表 --- getPlusCardType: function (func) { var storid = os.stoid; var th = this; getApp().request.promiseGet("/api/weshop/plus/vip/mem/bership/list?" + "storeId=" + storid, {}).then(res => { if(res.data.code!=0 || !res.data.data){ var ob={"card_list":[],"name_map":''}; func(ob); return false; } var plusCard = res.data.data; var arr = [1219, 2089, 3031]; var new_arr = new Array(); var card_name_map=new Map(); for (var i = 0; i < plusCard.length; i++) { var name="card"+plusCard[i].CorrPrice.toLowerCase(); card_name_map.set(name,plusCard[i].CardName); } var ob={"card_list":plusCard,"name_map":card_name_map}; func(ob); }) }, //递归获取商品 loop_promise:function(x,arr,func){ var th=this; getApp().request.promiseGet("/api/weshop/goods/get/" + o.stoid + "/" + arr[x].goods_id, {}).then(res => { arr[x].goods_spec=res.data.data.goods_spec; arr[x].goods_color=res.data.data.goods_color; arr[x].original_img=res.data.data.original_img; arr[x].shop_price=res.data.data.shop_price; if(x==arr.length-1){ func(arr); //循环再最后 }else{ ++x; th.loop_promise(x,arr,func); } }) }, //图片失败,默认图片 bind_bnerr3: function(e) { var _errImg = e.target.dataset.errorimg; var _errObj = {}; _errObj[_errImg] = "/public/images/default_goods_image_240.gif"; this.setData(_errObj) //注意这里的赋值方式,只是将数据列表中的此项图片路径值替换掉 ; }, //判断来个商品的配送的方式是不是一致 check_men_dian(g1,g2){ if(g1.distr_type!=0 && g2.distr_type!=0 && g1.distr_type!=g2.distr_type){ return 0; } return 1; }, set_sele:function (e) { var th=this; var index=e.currentTarget.dataset.ind; var set=e.currentTarget.dataset.set; var text="collocationList["+index+"].sele"; //判断门店匹配不匹配 var click_item=this.data.collocationList[index]; var c_list=this.data.collocationList; if(set==1){ //-- 选择的商品的门店配送方式和主商品比较 -- if(!th.check_men_dian(click_item,th.data.data)){ wx.showToast({ title: "商品的配送方式不一致", icon: 'none', duration: 2000 }) return false; } //-- 判断从商品 -- for(var ij in this.data.collocationList){ if(this.data.collocationList[ij].sele){ if(!th.check_men_dian(click_item,this.data.collocationList[ij])){ wx.showToast({ title: "商品的配送方式不一致", icon: 'none', duration: 2000 }) return false; } } } } var ob={}; ob[text]= parseInt(set); this.setData(ob); var price=parseFloat(this.data.collocationList[index].price); var cut_pirce=this.data.collocationList[index].shop_price-price; if(set==1){ this.data.dp_price=parseFloat(this.data.dp_price)+price; this.data.cut_price=this.data.cut_price+cut_pirce; }else{ this.data.dp_price=parseFloat(this.data.dp_price)-price; this.data.cut_price=this.data.cut_price-cut_pirce; } price=price.toFixed(2); cut_pirce=cut_pirce.toFixed(2); this.setData({dp_price: this.data.dp_price,cut_price:this.data.cut_price}); }, go_goods:function (e) { var gid=e.currentTarget.dataset.gid; var url="/pages/goods/goodsInfo/goodsInfo?goods_id="+gid; getApp().goto(url); } });