const WXAPI = require('apifm-wxapi') const TOOLS = require('../../utils/tools.js') const AUTH = require('../../utils/auth') const APP = getApp() // fixed首次打开不显示标题的bug APP.configLoadOK = () => { wx.setNavigationBarTitle({ title: wx.getStorageSync('mallName') }) } Page({ data: { inputVal: "", // 搜索框内容 goodsRecommend: [], // 推荐商品 kanjiaList: [], //砍价商品列表 pingtuanList: [], //拼团商品列表 loadingHidden: false, // loading selectCurrent: 0, categories: [], activeCategoryId: 0, goods: [], scrollTop: 0, loadingMoreHidden: true, coupons: [], curPage: 1, pageSize: 20, cateScrollTop: 0 }, tabClick: function(e) { wx.setStorageSync("_categoryId", e.currentTarget.dataset.id) wx.switchTab({ url: '/pages/category/category', }) // wx.navigateTo({ // url: '/pages/goods/list?categoryId=' + e.currentTarget.id, // }) }, toDetailsTap: function(e) { wx.navigateTo({ url: "/pages/goods-details/index?id=" + e.currentTarget.dataset.id }) }, tapBanner: function(e) { const url = e.currentTarget.dataset.url if (url) { wx.navigateTo({ url }) } }, adClick: function(e) { const url = e.currentTarget.dataset.url if (url) { wx.navigateTo({ url }) } }, bindTypeTap: function(e) { this.setData({ selectCurrent: e.index }) }, onLoad: function(e) { wx.showShareMenu({ withShareTicket: true }) const that = this // 读取分享链接中的邀请人编号 if (e && e.inviter_id) { wx.setStorageSync('referrer', e.inviter_id) } // 读取小程序码中的邀请人编号 if (e && e.scene) { const scene = decodeURIComponent(e.scene) if (scene) { wx.setStorageSync('referrer', scene.substring(11)) } } // 静默式授权注册/登陆 AUTH.authorize().then(res => { TOOLS.showTabBarBadge() }) wx.setNavigationBarTitle({ title: wx.getStorageSync('mallName') }) this.initBanners() this.categories() WXAPI.goods({ recommendStatus: 1 }).then(res => { if (res.code === 0){ that.setData({ goodsRecommend: res.data }) } }) that.getCoupons() that.getNotice() that.kanjiaGoods() that.pingtuanGoods() this.wxaMpLiveRooms() }, async miaoshaGoods(){ const res = await WXAPI.goods({ miaosha: true }) if (res.code == 0) { res.data.forEach(ele => { const _now = new Date().getTime() if (ele.dateStart) { ele.dateStartInt = new Date(ele.dateStart.replace(/-/g, '/')).getTime() - _now } if (ele.dateEnd) { ele.dateEndInt = new Date(ele.dateEnd.replace(/-/g, '/')).getTime() -_now } }) this.setData({ miaoshaGoods: res.data }) } }, async wxaMpLiveRooms(){ const res = await WXAPI.wxaMpLiveRooms() if (res.code == 0 && res.data.length > 0) { this.setData({ aliveRooms: res.data }) } }, async initBanners(){ const _data = {} // 读取头部轮播图 const res1 = await WXAPI.banners({ type: 'index' }) if (res1.code == 700) { wx.showModal({ title: '提示', content: '请在后台添加 banner 轮播图片,自定义类型填写 index', showCancel: false }) } else { _data.banners = res1.data } this.setData(_data) }, onShow: function(e){ this.setData({ shopInfo: wx.getStorageSync('shopInfo') }) // 获取购物车数据,显示TabBarBadge TOOLS.showTabBarBadge() this.goodsDynamic() this.miaoshaGoods() }, async goodsDynamic(){ const res = await WXAPI.goodsDynamic(0) if (res.code == 0) { this.setData({ goodsDynamic: res.data }) } }, async categories(){ const res = await WXAPI.goodsCategory() let categories = []; if (res.code == 0) { const _categories = res.data.filter(ele => { return ele.level == 1 }) categories = categories.concat(_categories) } this.setData({ categories: categories, activeCategoryId: 0, curPage: 1 }); this.getGoodsList(0); }, onPageScroll(e) { let scrollTop = this.data.scrollTop this.setData({ scrollTop: e.scrollTop }) }, async getGoodsList(categoryId, append) { if (categoryId == 0) { categoryId = ""; } wx.showLoading({ "mask": true }) const res = await WXAPI.goods({ categoryId: categoryId, page: this.data.curPage, pageSize: this.data.pageSize }) wx.hideLoading() if (res.code == 404 || res.code == 700) { let newData = { loadingMoreHidden: false } if (!append) { newData.goods = [] } this.setData(newData); return } let goods = []; if (append) { goods = this.data.goods } for (var i = 0; i < res.data.length; i++) { goods.push(res.data[i]); } this.setData({ loadingMoreHidden: true, goods: goods, }); }, getCoupons: function() { var that = this; WXAPI.coupons().then(function (res) { if (res.code == 0) { that.setData({ coupons: res.data }); } }) }, onShareAppMessage: function() { return { title: '"' + wx.getStorageSync('mallName') + '" ' + wx.getStorageSync('share_profile'), path: '/pages/index/index?inviter_id=' + wx.getStorageSync('uid') } }, getNotice: function() { var that = this; WXAPI.noticeList({pageSize: 5}).then(function (res) { if (res.code == 0) { that.setData({ noticeList: res.data }); } }) }, onReachBottom: function() { this.setData({ curPage: this.data.curPage + 1 }); this.getGoodsList(this.data.activeCategoryId, true) }, onPullDownRefresh: function() { this.setData({ curPage: 1 }); this.getGoodsList(this.data.activeCategoryId) wx.stopPullDownRefresh() }, // 获取砍价商品 async kanjiaGoods(){ const res = await WXAPI.goods({ kanjia: true }); if (res.code == 0) { const kanjiaGoodsIds = [] res.data.forEach(ele => { kanjiaGoodsIds.push(ele.id) }) const goodsKanjiaSetRes = await WXAPI.kanjiaSet(kanjiaGoodsIds.join()) if (goodsKanjiaSetRes.code == 0) { res.data.forEach(ele => { const _process = goodsKanjiaSetRes.data.find(_set => { return _set.goodsId == ele.id }) if (_process) { ele.process = 100 * _process.numberBuy / _process.number ele.process = ele.process.toFixed(0) } }) this.setData({ kanjiaList: res.data }) } } }, goCoupons: function (e) { wx.switchTab({ url: "/pages/coupons/index" }) }, pingtuanGoods(){ // 获取团购商品列表 const _this = this WXAPI.goods({ pingtuan: true }).then(res => { if (res.code === 0) { _this.setData({ pingtuanList: res.data }) } }) }, goSearch(){ wx.navigateTo({ url: '/pages/search/index' }) }, goNotice(e) { const id = e.currentTarget.dataset.id wx.navigateTo({ url: '/pages/notice/show?id=' + id, }) } })