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'); var g_filter = require('./filter'); Component({ properties: { // 这里定义了innerText属性,属性值可以在组件使用时指定 object: { type: Object, value: null, }, sticky: { type: Number, value: 0, }, container: { type: Function, value: null, }, }, data: { // 这里是一些组件内部数据 group: false, imghost: o.imghost, is_recommend: 0, is_hot: 0, is_new: 0, isyhgoods:0, baseUrl: "/api/weshop/goods/page?isnewwhere=1", resourceUrl: t.globalData.setting.resourceUrl, url: t.globalData.setting.imghost, currentPage: 1, requestData: null, requestUrl: "", goods_array: [], 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, title_class: "", is_no_plus: 1, container: null, //判断接口是不是调用完成 is_get:0, is_retail_price:0, //是否显示零售价 swiperHeight:0, // action_index:0, //选中的tab项 add_purchase:false, }, lifetimes: { ready: function () { this.setData({ container: () => wx.createSelectorQuery().select('#container') }) }, attached: function () { //要兼容性的写法,因为有些商家都还未更新商品分组的最新的效果~~3.0公众号的html页面所以不用兼容写法 var nav_item = this.data.object; var nav_list = this.data.object.nav_list; if (parseInt(nav_item.is_automore)) { if (!getApp().globalData.func_list) getApp().globalData.func_list = []; getApp().globalData.func_list.push(this); } //最新的版本才有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; } // console.error(nav_list); 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; if (this.data.object.title_color) { this.data.title_class = `color:${this.data.object.title_color};` } if (this.data.object.title_font_size) { this.data.title_class = this.data.title_class.concat(`font-size:${this.data.object.title_font_size}px;`) } if (this.data.object.bg_color) { this.setData({ bg_color: this.data.object.bg_color, }) } this.setData({ swiper_hei: hei, title_class: this.data.title_class, }); 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 } if (nav_item && nav_item.goodsclass == 4) { this.data.isyhgoods = 1 } this.data.requestData = new Array(); this.data.g_id = nav_item.data; var arr = []; if(this.data.g_id) { for (var i = 0; i < this.data.g_id.length; i += parseInt(this.data.goodscount)) { arr.push(this.data.g_id.slice(i, i + parseInt(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 = []; var user_id = getApp().globalData.user_id; if (!user_id) user_id = 0; //--初始化卡类-- 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?isnewwhere=1&store_id=" + os.stoid + "&goodsidlist=" + str, { data: { user_id: user_id }, isShowLoading: false, success: function (res) { th.data.loading = 0; if (res.data.code == 0 && res.data.data) { var goods = res.data.data; th.set_good(goods); //---控制有没有加载更多的按钮--- 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, orderField: "sort", orderType: 'asc', isnewwhere: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; if (th.data.isyhgoods) r_data.isyhgoods = th.data.isyhgoods; var user_id = getApp().globalData.user_id; if (!user_id) user_id = 0; r_data.user_id = user_id; await app.request.promiseGet("/api/weshop/goods/page", { data: r_data }).then(res => { th.data.loading = 0; //商品地址 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?isnewwhere=1", { data: { store_id: os.stoid, gpid: wgroup, pageSize: th.data.goodscount, page: th.data.currentPage, isonsale: 1, //orderField: "sort", //orderType: 'asc', user_id: user_id } }).then(res => { th.data.loading = 0; //商品地址 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 () { if(this.data.object.column==5){return} if( this.data.goods_btn.length!=0 || this.data.object.goodscount*this.data.page { if (res.data.code == 0) { var arr = res.data.data.pageData; if (arr.length > 0) { var item = arr[0]; if (item.is_sy == 0) { var now = Date.parse(new Date()); now = now / 1000; if (item.end_time < now) { th.setData({ is_no_plus: 0 }) } } } } }) }, //--- 获取卡类列表 --- 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.isyhgoods = 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 } if (nav_item && nav_item.goodsclass == 4) { this.data.isyhgoods = 1 } this.data.currentPage = 1; this.setData({ goods_array: [], total: null, title_index: title_idx,is_get: 0 }); //初始化 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; var user_id = getApp().globalData.user_id; if (!user_id) user_id = 0; for (var i in goods) { var val = goods[i]; var item = {}; var prom_id = null; item.prom_type = 0; item.prom_id = 0; var url = "/api/weshop/activitylist/listGoodActInfo2New"; var req_data = { store_id: os.stoid, goods_id: val.goods_id, user_id: user_id }; item.prom_type = 0; item.prom_id = 0; //获取商品的实际活动 await getApp().request.promiseGet(url, { data: req_data }).then(ck_res => { if (ck_res.data.code == 0 && ck_res.data.data && ck_res.data.data.length > 0) { var arr = ck_res.data.data; //-- 预热也要计算 -- var arr2 = arr.filter(function (e) { return e.s_time < ut.gettimestamp() || (e.warm_uptime && e.warm_uptime < ut.gettimestamp()) }) if (arr2.length == 1) { item.prom_type = arr2[0].prom_type; item.prom_id = arr2[0].act_id; } } }) 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; // item.prom_type = val.prom_type; // item.prom_id = val.prom_id; if (val.prom_price) item.prom_price = val.prom_price; if (val.prom_integral) item.prom_integral = val.prom_integral; prom_id = item.prom_id; var prom_type = item.prom_type; //0普通商品 1秒杀 6拼单 2团购 4积分购 var url = ""; switch (prom_type) { case 1: var user_id = getApp().globalData.user_id; if (!user_id) user_id = 0; url = "/api/ms/flash_sale/getNew/" + os.stoid + "/" + user_id + "/" + prom_id; break; case 2: url = "/api/weshop/goods/groupBuy/getNewActInfo/" + os.stoid + "/" + val.goods_id + "/" + prom_id+"/"+user_id; break; case 4: url = "/api/weshop/integralbuy/get/" + os.stoid + "/" + prom_id; break; case 6: url = "/api/weshop/teamlist/get/" + os.stoid + "/" + prom_id; break; case 8: var presell_id = prom_id; var url1 = "/api/weshop/marketing/marketingPresellList/list"; var rd = { store_id: os.stoid, presell_id: presell_id, goods_id: val.goods_id } //------获取预售从表---------- await getApp().request.promiseGet(url1, { data: rd }).then(res => { if (res.data.code == 0 && res.data.data && res.data.data.length > 0) { var arr = res.data.data[0]; item.prom_price = arr.luck_goods_price; item.sales_sum = arr.buy_goodnum + (arr.virtual_qty ? arr.virtual_qty : 0); } }) break; default: break } if (url != null && url != '') { await getApp().request.promiseGet(url, {}).then(res => { var prom = null; if (res && res.data) prom = res.data.data; if (prom != null && prom.is_end == 0 && prom.end_time > now && (prom.start_time < now || (prom.show_time && prom.show_time < now))) { item.prom_price = res.data.data.price; if (res.data.data.user_price) item.prom_price = res.data.data.user_price; var vNum = res.data.data.virtual_num ? res.data.data.virtual_num : 0; var vNum1 = res.data.data.virtualNum ? res.data.data.virtualNum : 0; var vNum2 = res.data.data.virtual ? res.data.data.virtual : 0; item.sales_sum = res.data.data.buy_num + (vNum + vNum1 + vNum2); } else { item.prom_type = 0; item.prom_id = 0; item.prom_price = null; } th.data.requestData.push(item); }) } else { item.prom_type = 0; item.prom_id = 0; item.prom_price = null; th.data.requestData.push(item); } } // 新版组件价格处理 th.data.requestData.map(ite=>{ let price = 0 if (ite.prom_price || ite.prom_integral) { price = ite.prom_price + '' }else{ if (g_filter.is_has_rank(th.data.rank_switch,ite)) { if (th.data.card_field) { if (ite[th.data.card_field] > 0) { price = ite[th.data.card_field] + '' }else{ price = ite.shop_price + '' } }else{ price = ite.shop_price + '' } }else{ price = ite.shop_price + '' } } if (price && price.indexOf('.') > -1) { let priceArr = price.split(".") ite.price_n = priceArr[0] ite.price_xs = priceArr[1] }else{ ite.price_n = price } }) // console.error(th.data.requestData); //----------------------- if (th.data.object.column_action_name) { if (th.data.object.style == 6 || th.data.object.style == 5) { var arr = new Array(); var rData = th.data.requestData; //--三个三个一组--- for (var i = 0; i < rData.length; i += 3) { arr.push(rData.slice(i, i + 3)); } th.setData({ goods_array: arr, page: th.data.currentPage - 1,is_get:1 }); } else { th.setData({ goods_array: th.data.requestData, page: th.data.currentPage - 1, is_get:1 }); } }else{ if (th.data.object.column == 5) { var arr = new Array(); var rData = th.data.requestData; //--三个三个一组--- for (var i = 0; i < rData.length; i += 3) { arr.push(rData.slice(i, i + 3)); } th.setData({ goods_array: arr, page: th.data.currentPage - 1,is_get:1 }); } else { th.setData({ goods_array: th.data.requestData, page: th.data.currentPage - 1, is_get:1 }); } } if (th.data.object.style==6) { th.setSwiper_h() } }, setSwiper_h(){ var th=this wx.createSelectorQuery().in(this).select('.swiper_h').boundingClientRect(rect => { if (rect && rect.height) { var sumHeigth=(rect.height+13)+'px' th.setData({ swiperHeight: sumHeigth }) } }).exec(); }, re_show: function () { if (this.data.object.goodscount * this.data.page < this.data.total) { this.setLoading() } }, // 加购方法show addPurchase(even){ this.setData({ add_purchase:true }) let gid = even.currentTarget.dataset.gid let prom_id = even.currentTarget.dataset.prom_id let prom_type = even.currentTarget.dataset.prom_type let add_purchase = this.selectComponent("#add_purchase"); if (add_purchase) { add_purchase.init(gid,prom_type,prom_id) } }, // 加购方法 hide hide_add_purchase(){ // console.error('隐藏加购方法。。。。'); setTimeout(()=>{ this.setData({ add_purchase:false }) },1000) } } })