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({ options: { addGlobalClass: true, }, 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, 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, title_class: "", container: null, }, lifetimes: { ready: function() { this.setData({ container: () => wx.createSelectorQuery().select('#container') }); }, attached: function() { let myStyle = ''; //要兼容性的写法,因为有些商家都还未更新商品分组的最新的效果~~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; } 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.font_size) { this.data.title_class = this.data.title_class.concat(`font-size:${this.data.object.font_size}px;`); } if (this.data.object.font_color) { this.data.title_class = this.data.title_class.concat(`color:${this.data.object.font_color};`); } if (this.data.object.acitve_font_color) { this.setData({ myStyle: ` --border-color:${this.data.object.acitve_font_color}; --font-color:${this.data.object.acitve_font_color}; `, }); } if (this.data.object.list_border_type == 0) { this.data.title_class = this.data.title_class.concat('border-radius: 80rpx;'); } if (this.data.object.list_border_type == 1) { this.data.title_class = this.data.title_class.concat('border-radius: 0;'); } if (this.data.object.list_border_type == 2) { this.data.title_class = this.data.title_class.concat('border-width: 0;'); } 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 } 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 = []; 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/serviceCard/page?store_id=" + os.stoid + "&goodsidlist=" + str, { await app.request.get("/api/weshop/serviceCard/page?store_id=" + os.stoid + "&ids=" + str, { data: { user_id: user_id, pageSize: th.data.goodscount, }, isShowLoading: false, success: function(res) { th.data.loading = 0; if (res.data.code == 0 && res.data.data) { var goods = res.data.data.pageData; 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', }; 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; 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", { 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() { var that = this; if (this.data.loading) return false; this.data.loading = 1; 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() { }, //--- 获取卡类列表 --- getPlusCardType: function(func) { }, //--- 点击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) { // for (var i = 0; i < this.data.g_id.length; i ++) { 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; 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.goods_name = val.serviceName; item.goods_img = th.data.imghost + val.imgUrl; item.market_price = val.show_price; item.shop_price = val.money; item.sales_sum = val.sales_sum; item.goods_id = val.id; 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拼单 2团购 4积分购 var url = ""; 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 { th.data.requestData.push(item); } } 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, }); } else { th.setData({ goods_array: th.data.requestData, page: th.data.currentPage - 1, }); } }, re_show: function() { if (this.data.object.goodscount * this.data.page < this.data.total) { this.setLoading() } }, go_goods:async function(e) { var gid = e.currentTarget.dataset.gid; var rurl = '/api/weshop/activitylist/listGoodActInfo2New'; var req_d = { "store_id": getApp().globalData.setting.stoid, "goods_id": gid, "user_id": getApp().globalData.user_id, "goods_type":1 } var res= await getApp().request.promiseGet(rurl, {data: req_d}); var url = "/packageH/pages/goodsInfo/goodsInfo?goods_id=" + gid; if (res.data.code == 0 && res.data.data && res.data.data.length > 0) { var arr = res.data.data; let times = new Date().getTime(); //-- 预热也要计算 -- var arr2 = arr.filter(function (e) { return e.s_time < ut.gettimestamp() || (e.warm_uptime && e.warm_uptime < ut.gettimestamp()) }) if(arr2.length==1) { switch(arr2[0].prom_type){ case 1: url+="&prom_type=1&prom_id="+arr[0].act_id; break; case 2: url="/packageG/pages/group_buy/goodsInfo/goodsInfo?goods_id="+gid+"&prom_id="+arr2[0].act_id; break; case 6: url = `/packageA/pages/serviceCard_pd/goodsInfo/goodsInfo?goods_id=${gid}&prom_type=${arr2[0].prom_type}&prom_id=${arr[0].act_id}`; break; case 8: url = `/packageC/pages/presell/cardInfo/goodsInfo?goods_id=${gid}&prom_id=${arr[0].act_id}`; break; } } } getApp().goto(url); }, } })