132 lines
2.6 KiB
JavaScript
132 lines
2.6 KiB
JavaScript
|
import { fetchHome } from '../../services/home/home';
|
||
|
import { fetchGoodsList } from '../../services/good/fetchGoods';
|
||
|
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: 0,
|
||
|
num: 20,
|
||
|
},
|
||
|
|
||
|
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,
|
||
|
});
|
||
|
fetchHome().then(({ swiper, tabList }) => {
|
||
|
this.setData({
|
||
|
tabList,
|
||
|
imgSrcs: swiper,
|
||
|
pageLoading: false,
|
||
|
});
|
||
|
this.loadGoodsList(true);
|
||
|
});
|
||
|
},
|
||
|
|
||
|
tabChangeHandle(e) {
|
||
|
this.privateData.tabIndex = e.detail;
|
||
|
this.loadGoodsList(true);
|
||
|
},
|
||
|
|
||
|
onReTry() {
|
||
|
this.loadGoodsList();
|
||
|
},
|
||
|
|
||
|
async loadGoodsList(fresh = false) {
|
||
|
if (fresh) {
|
||
|
wx.pageScrollTo({
|
||
|
scrollTop: 0,
|
||
|
});
|
||
|
}
|
||
|
|
||
|
this.setData({ goodsListLoadStatus: 1 });
|
||
|
|
||
|
const pageSize = this.goodListPagination.num;
|
||
|
let pageIndex = this.privateData.tabIndex * pageSize + this.goodListPagination.index + 1;
|
||
|
if (fresh) {
|
||
|
pageIndex = 0;
|
||
|
}
|
||
|
|
||
|
try {
|
||
|
const nextList = await fetchGoodsList(pageIndex, pageSize);
|
||
|
this.setData({
|
||
|
goodsList: fresh ? nextList : this.data.goodsList.concat(nextList),
|
||
|
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}`,
|
||
|
});
|
||
|
},
|
||
|
});
|