var t = getApp(), a = t.request, o = t.globalData.setting, os = o, i = require("../../utils/util.js"), ut = i, s = require("../../utils/common.js"); var regeneratorRuntime = require('../../utils/runtime.js'); Component({ properties: { // 这里定义了innerText属性,属性值可以在组件使用时指定 object: { type: Object, value: null, }, }, data: { // 这里是一些组件内部数据 group: false, imghost: o.imghost, is_recommend: 0, is_hot: 0, is_new: 0, baseUrl: "/api/weshop/goods/page", resourceUrl: t.globalData.setting.resourceUrl, url: t.globalData.setting.imghost, currentPage: 1, requestData: null, requestUrl: "", goods_array: null, total: null, prom_id: 0, classstyle_id: null, g_id: null, wgroup: null, goods_btn: null, loadText: '加载更多', someData: {}, goodscount: null, firist_type_data: null, firist_type_curr: 0, is_nav:0, nav_list:null, title_index:0, swiper_hei:0, }, ready: function () {}, lifetimes: { attached: function() { //要兼容性的写法,因为有些商家都还未更新商品分组的最新的效果~~3.0公众号的html页面所以不用兼容写法 var nav_item=this.data.object; var nav_list= this.data.object.nav_list; //最新的版本才有nav_list if(nav_list){ nav_item=nav_list[0]; //要算一下商品goodsid for(var ij in nav_list){ var item=nav_list[ij]; var idlist=""; //如果商品有手动选择的时候 if(item.data && item.data.length>0){ for(var im in item.data){ idlist+= item.data[im]+","; } } if(idlist) idlist=ut.sub_last(idlist); nav_list[ij].idlist=idlist; } this.setData({nav_list:nav_list,is_nav:parseInt(this.data.object.is_nav)}); } // 在组件实例进入页面节点树时执行 if(nav_item) { this.data.classstyle_id = nav_item.classstyle; this.data.wgroup =nav_item.wgroup; } this.data.goodscount = this.data.object.goodscount; var hei=280; if(this.data.object.goodstit) hei+=80; if(this.data.object.goodsprice) hei+=80; if(this.data.object.goodsnum) hei+=80; this.setData({swiper_hei:hei}); if (nav_item && nav_item.goodsclass == 1) { this.data.is_recommend = 1 } if (nav_item && nav_item.goodsclass == 2) { this.data.is_hot = 1 } if (nav_item && nav_item.goodsclass == 3) { this.data.is_new = 1 } this.data.requestData = new Array(); this.data.g_id = nav_item.data; var arr = []; for (var i = 0; i < this.data.g_id.length; i += this.data.goodscount) { arr.push(this.data.g_id.slice(i, i + this.data.goodscount)); } this.data.firist_type_data = arr; this.init(this.data.classstyle_id, this.data.wgroup); }, detached: function() { // 在组件实例被从页面节点树移除时执行 }, }, pageLifetimes: { //游客登录后,只要更新卡的情况 show: function () { //--初始化卡类-- this.card_init(); }, }, methods: { // 这里是一个自定义方法 init:async function (classstyle_id, wgroup) { this.setData({classstyle_id:classstyle_id}) var th = this; var g_id = this.data.g_id; var len=this.data.firist_type_data.length; if (classstyle_id == 1) { //---手动选择的时候--- g_id = this.data.firist_type_data[th.data.firist_type_curr]; th.data.firist_type_curr++; } var th = this, app = getApp(), index = 0, gdata = []; //--初始化卡类-- th.card_init(); var os=getApp().globalData.setting; classstyle_id = classstyle_id + ""; switch (classstyle_id) { //---手动选择商品--- case "1": var str=""; for (var i = 0; i < g_id.length; i++) { str += g_id[i].goodsid + ","; } str=str.substring(0, str.length - 1); await app.request.get("/api/weshop/goods/getgoodslistOrdby?store_id=" + os.stoid + "&goodsidlist=" + str, { isShowLoading:false, success: function(res) { if(res.data.code==0 && res.data.data){ var rData = th.data.requestData; if (rData == null) rData=[]; var now=ut.gettimestamp(); var new_arr=[]; for (var ii in res.data.data){ var item=res.data.data[ii]; item.goods_img=th.data.imghost + item.original_img; if(item.e_timenow) {item.prom_type=0; item.prom_price=0;} new_arr.push(item); } rData = rData.concat(new_arr); th.data.requestData = rData; if(th.data.object.column==5){ var arr = new Array(); //--三个三个一组--- for(var i=0;i< rData.length;i+=3){ arr.push(rData.slice(i,i+3)); } th.setData({ goods_array: arr }); }else{ th.setData({ goods_array: rData }); } //---控制有没有加载更多的按钮--- if (th.data.firist_type_curr >= len) {th.setData({ goods_btn: [] }); } else th.setData({ goods_btn: [1,2]}); } } }) break; case "2": var item = {}; var r_data={ store_id: os.stoid , pageSize: th.data.goodscount, page: th.data.currentPage, isonsale: 1, }; if(th.data.is_recommend) r_data.is_recommend=th.data.is_recommend; if(th.data.is_hot) r_data.is_hot=th.data.is_hot; if(th.data.is_new) r_data.is_new=th.data.is_new; await app.request.promiseGet("/api/weshop/goods/page", { data:r_data }).then(res => { //商品地址 var goods = res.data.data.pageData; th.setData({ goods_btn: res.data.data.pageData, total: res.data.data.total }) th.data.currentPage++; //设置商品熏染 th.set_good(goods); }) break; case "3": var item = {}; await app.request.promiseGet("/api/weshop/goodsGroup/pageGoodsList", { data: { store_id:os.stoid , gpid: wgroup, pageSize: th.data.goodscount, page: th.data.currentPage, isonsale: 1, } }).then(res => { //商品地址 var goods = res.data.data.pageData; th.setData({ goods_btn: res.data.data.pageData, total: res.data.data.total }) th.data.currentPage++; //设置商品熏染 th.set_good(goods); }) break; } }, setLoading: function () { var that = this; that.init(that.data.classstyle_id, that.data.wgroup); }, //图片失败,默认图片 bind_bnerr3: function (e) { var _errImg = e.target.dataset.errorimg; var _errObj = {}; _errObj[_errImg] = this.data.imghost + "/public/images/default_goods_image_240.gif"; this.setData(_errObj) //注意这里的赋值方式,只是将数据列表中的此项图片路径值替换掉 ; }, //---卡的初始化---- card_init: function() { var th = this,os=getApp().globalData.setting; if(!getApp().globalData.user_id) return false; getApp().request.get("/api/weshop/users/get/" + os.stoid + "/" + getApp().globalData.user_id, { isShowLoading:false, success: function(e) { getApp().globalData.userInfo = e.data.data; getApp().getConfig2(function(e) { 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 ti = setInterval(function() { var user = getApp().globalData.userInfo; if (!user) return false; clearInterval(ti); 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); if (card_name.length > 4) card_name = card_name.substring(0, 4); th.setData({ card_field: user.card_field, card_name: card_name, card_list: ob.card_list }); } } }, 500) }) } }) } }) }, //--- 获取卡类列表 --- getPlusCardType: function(func) { var storid = o.stoid; var th = this; 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 user = getApp().globalData.userInfo; if(plusCard) { 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); new_arr.push(plusCard[i]); } } var ob = { "card_list": new_arr, "name_map": card_name_map }; func(ob); }) }, //--- 点击tab的事件 --- gr_set_nav:function(e){ var title_idx=e.currentTarget.dataset.index; if(title_idx==this.data.title_index) return false; wx.showLoading(); var nav_item=this.data.object.nav_list[title_idx]; this.data.g_id =[]; if(this.data.object.nav_list && this.data.object.nav_list[title_idx] && this.data.object.nav_list[title_idx].data) this.data.g_id=this.data.object.nav_list[title_idx].data; var arr = []; for (var i = 0; i < this.data.g_id.length; i += this.data.goodscount) { arr.push(this.data.g_id.slice(i, i + this.data.goodscount)); } this.data.firist_type_data = arr; this.data.firist_type_curr=0; this.data.requestData=[]; // 在组件实例进入页面节点树时执行 if(nav_item){ this.data.classstyle_id = nav_item.classstyle; this.data.wgroup =nav_item.wgroup; } this.data.is_recommend = this.data.is_hot=this.data.is_new=0; //推荐,热卖,新品 if (nav_item && nav_item.goodsclass == 1) { this.data.is_recommend = 1 } if (nav_item && nav_item.goodsclass == 2) { this.data.is_hot = 1 } if (nav_item && nav_item.goodsclass == 3) { this.data.is_new = 1 } this.data.currentPage=1; this.setData({goods_array:null,total:null,title_index:title_idx}); //初始化 this.init(this.data.classstyle_id, this.data.wgroup); setTimeout(function(){ wx.hideLoading();},1000) }, //--- 设置 --- set_good:async function(goods){ var now=ut.gettimestamp(); var th=this; if(!goods || goods.length==0) return false; for(var i in goods){ var val=goods[i]; var item = {}; var prom_id = null; //app.request.promiseGet("/api/weshop/goods/get/" + os.stoid + "/" + val.goods_id, {}).then(res => { item.goods_name = val.goods_name; item.goods_img = th.data.imghost + val.original_img; item.market_price = val.market_price; item.shop_price = val.shop_price; item.sales_sum = val.sales_sum; item.goods_id = val.goods_id; item.cardprice1 = val.cardprice1; item.cardprice2 = val.cardprice2; item.cardprice3 = val.cardprice3; if(val.prom_price) item.prom_price = val.prom_price; if(val.prom_integral) item.prom_integral = val.prom_integral; prom_id = val.prom_id; var prom_type = val.prom_type; //0普通商品 1秒杀 6拼单 var url = ""; if (prom_type == 6) { url = "/api/weshop/teamlist/get/" + os.stoid + "/" + prom_id; } else if (prom_type == 1) { url = "/api/ms/flash_sale/get/" + os.stoid + "/" + prom_id; } if(url!=null && url!=''){ await getApp().request.promiseGet(url, {}).then(res => { var prom =null; if(res && res.data) res.data.data; if (prom != null && prom.is_end==0 && prom.end_time>now && prom.show_time