self_mall_xcx/pages/home/home.js
2023-10-14 20:31:40 +08:00

184 lines
3.4 KiB
JavaScript

import {
fetchHome
} from '~/services/home/home';
import {
fetchGoodsList
} from '~/services/good/fetchGoodsList';
import {
getbannerList
} from '~/services/home/getbannerList';
import {
getHomeCategoryListApi
} from '~/services/home/getHomeCategoryListApi';
import Toast from 'tdesign-miniprogram/toast/index';
Page({
data: {
imgSrcs: [],
tabList: [],
goodsList: [],
goodsListLoadStatus: 0,
pageLoading: false,
current: 1,
autoplay: true,
duration: '500',
interval: 5000,
navigation: {
type: 'dots',
},
swiperImageProps: {
mode: 'scaleToFill',
},
},
goodListPagination: {
index: 1,
num: 6,
},
privateData: {
tabIndex: 0,
},
onShow() {
this.getTabBar().init();
},
onLoad() {
this.init();
},
onReachBottom() {
if (this.data.goodsListLoadStatus === 0) {
this.loadGoodsList();
}
},
onPullDownRefresh() {
this.init();
},
init() {
this.loadHomePage();
},
loadHomePage() {
wx.stopPullDownRefresh();
this.setData({
pageLoading: true,
});
// 获取轮播图列表
getbannerList().then((res) => {
if (res.code == 200) {
this.setData({
imgSrcs: res.data.map((v) => v.bannerImg),
});
}
});
// 获取首页推荐类目
getHomeCategoryListApi().then((res) => {
this.setData({
tabList: res.data,
});
this.data.tabList.unshift({
text: "精选推荐",
key: 0,
categoryGuid: 1,
})
this.setData({
tabList: res.data,
pageLoading: false,
});
this.loadGoodsList(true);
});
},
tabChangeHandle(e) {
this.privateData.tabIndex = e.detail;
console.log(e.detail.value, 'tab的看看');
this.loadGoodsList(true, e.detail.value);
},
onReTry() {
this.loadGoodsList();
},
async loadGoodsList(fresh = false, categoryGuid = 0) {
if (fresh) {
wx.pageScrollTo({
scrollTop: 0,
});
}
this.setData({
goodsListLoadStatus: 1,
});
const pageSize = this.goodListPagination.num;
let pageIndex = this.goodListPagination.index + 1;
if (fresh) {
pageIndex = 1;
}
let params = {
pageNum: pageIndex,
pageSize: pageSize,
goodsCategoryGuid: categoryGuid
}
console.log(params, '看看参数');
try {
const nextList = await fetchGoodsList(params);
this.setData({
goodsList: fresh ? nextList.result : this.data.goodsList.concat(nextList.result),
goodsListLoadStatus: 0,
});
this.goodListPagination.index = pageIndex;
this.goodListPagination.num = pageSize;
} catch (err) {
this.setData({
goodsListLoadStatus: 3,
});
}
},
goodListClickHandle(e) {
const {
index
} = e.detail;
const {
spuId
} = this.data.goodsList[index];
wx.navigateTo({
url: `/pages/goods/details/index?spuId=${spuId}`,
});
},
goodListAddCartHandle() {
Toast({
context: this,
selector: '#t-toast',
message: '点击加入购物车',
});
},
navToSearchPage() {
wx.navigateTo({
url: '/pages/goods/search/index',
});
},
navToActivityDetail({
detail
}) {
const {
index: promotionID = 0
} = detail || {};
wx.navigateTo({
url: `/pages/promotion-detail/index?promotion_id=${promotionID}`,
});
},
});