163 lines
3.3 KiB
JavaScript
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() {
|
|
|
|
}
|
|
}) |