123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323 |
- 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,
- })
- }
- })
|