214 lines
4.0 KiB
JavaScript
214 lines
4.0 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 {
|
|
getNoticeList
|
|
} from '~/services/home/getNoticeList';
|
|
import Toast from 'tdesign-miniprogram/toast/index';
|
|
|
|
Page({
|
|
data: {
|
|
imgSrcs: [],
|
|
tabList: [],
|
|
noticeList: [],
|
|
marquee: {
|
|
speed: 40,
|
|
loop: -1,
|
|
delay: 0,
|
|
},
|
|
goodsList: [],
|
|
goodsListLoadStatus: 0,
|
|
pageLoading: false,
|
|
current: 0,
|
|
autoplay: true,
|
|
duration: '500',
|
|
interval: 5000,
|
|
navigation: {
|
|
type: 'dots',
|
|
},
|
|
swiperImageProps: {
|
|
mode: 'scaleToFill',
|
|
},
|
|
categoryGuid: 0,
|
|
// 加入购物车
|
|
buyType: 0,
|
|
outOperateStatus: false, // 是否外层加入购物车
|
|
isSpuSelectPopupShow: false,
|
|
},
|
|
|
|
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);
|
|
});
|
|
// 获取公告列表
|
|
getNoticeList().then((res) => {
|
|
if (res.code == 200) {
|
|
const _noticeData = res.data.map((v) => {
|
|
return {
|
|
...v,
|
|
visible: true
|
|
};
|
|
});
|
|
this.setData({
|
|
noticeList: _noticeData,
|
|
});
|
|
}
|
|
});
|
|
},
|
|
|
|
tabChangeHandle(e) {
|
|
this.privateData.tabIndex = e.detail;
|
|
this.setData({
|
|
categoryGuid: e.detail.value,
|
|
});
|
|
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.goodListPagination.index + 1;
|
|
if (fresh) {
|
|
pageIndex = 1;
|
|
}
|
|
|
|
let params = {
|
|
pageNum: pageIndex,
|
|
pageSize: pageSize,
|
|
shopGoodsCategoryGuid: this.data.categoryGuid
|
|
}
|
|
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(type) {
|
|
this.setData({
|
|
buyType: 0,
|
|
outOperateStatus: 1,
|
|
isSpuSelectPopupShow: true,
|
|
});
|
|
},
|
|
|
|
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}`,
|
|
});
|
|
},
|
|
}); |