dm-wechat-mini/pages/shop/index/index.js
2025-02-15 23:33:33 +08:00

163 lines
3.3 KiB
JavaScript

import shop from '../../../api/shop';
import shopApi from '../../../api/shop';
const app = getApp();
Page({
/**
* 页面的初始数据
*/
data: {
tabIndex:0,
categories:[],
shopList:[],
userInfo:{},
lng:null,
lat:null,
scrollViewHeight:0,
pager:{limit:10,loading:false,loadAll:false,pageIndex:0,refreshTrigger:false}
},
changeTab(event){
const tabIndex = event.currentTarget.dataset.index;
const cid = event.currentTarget.dataset.cid;
this.data.pager.pageIndex = 0;
this.data.pager.loadAll = false;
this.setData({tabIndex,pager:this.data.pager})
this.loadList();
},
refreshList(){
this.data.pager.pageIndex = 0;
this.data.pager.loadAll = false;
this.setData({
pager:this.data.pager
});
this.loadList();
},
loadList(){
if(this.data.pager.loading||this.data.pager.loadAll){
return;
}
this.data.pager.loading = true;
this.setData({
pager:this.data.pager
});
const cid = this.data.categories.length>0?this.data.categories[this.data.tabIndex].id:0;
const params = {
skip:this.data.pager.pageIndex*this.data.pager.limit,
limit:this.data.pager.limit
}
if(this.data.lng&&this.data.lat){
params.longitude = this.data.lng;
params.latitude = this.data.lat;
}
if(cid){
params.category_id = cid;
}
shopApi.list(params).then((data)=>{
if(this.data.pager.pageIndex==0){
this.data.shopList = data.items;
}else{
this.data.shopList = this.data.shopList.concat(data.items);
}
this.data.pager.loading = false;
this.data.pager.pageIndex++;
this.data.pager.refreshTrigger = false;
if(data.items.length<this.data.pager.limit){
this.data.pager.loadAll = true;
}
data.items.map((item)=>{
if(item.distance){
if(item.distance>=1000){
item.distance = parseFloat(item.distance/1000).toFixed(1)+'km';
}else{
item.distance = item.distance+'m';
}
}
})
this.setData({
shopList:this.data.shopList,
pager:this.data.pager
})
});
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
const windowInfo = wx.getWindowInfo();
this.setData({
scrollViewHeight:windowInfo.windowHeight-windowInfo.statusBarHeight-44-174
})
app.getLocation().then((data)=>{
this.setData({
lng:data.longitude,
lat:data.latitude
});
this.loadList();
}).catch(()=>{
this.loadList();
})
shopApi.category().then((data)=>{
this.setData({
categories:[{id:0,name:'全部'},...data.items]
});
})
app.getUserInfo().then((data)=>{
this.setData({
userInfo:data
})
})
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})