247 lines
5.9 KiB
JavaScript
247 lines
5.9 KiB
JavaScript
import orderApi from '../../../api/order';
|
||
import userApi from '../../../api/user';
|
||
|
||
Page({
|
||
/**
|
||
* 页面的初始数据
|
||
*/
|
||
data: {
|
||
statusDic:{
|
||
[orderApi.deliveryTimeType.immediate]:[
|
||
{key:'PENDING',value:orderApi.statusKV['PENDING']},
|
||
{key:'DELIVERING',value:orderApi.statusKV['DELIVERING']},
|
||
{key:'COMPLETED',value:orderApi.statusKV['COMPLETED']}
|
||
],
|
||
[orderApi.deliveryTimeType.scheduled]:[
|
||
{key:'PICKUP_READY',value:orderApi.statusKV['PICKUP_READY']},
|
||
{key:'COMPLETED',value:orderApi.statusKV['COMPLETED']},
|
||
]
|
||
},
|
||
orderStatusList:[],
|
||
orderStatusIndex:0,
|
||
|
||
list:[],
|
||
filterKey:'',
|
||
filtedList:[],
|
||
pager:{limit:10,loading:false,loadAll:false,pageIndex:0,refreshTrigger:false},
|
||
loadMoreText:'已经到底了',
|
||
|
||
orderStatus:orderApi.status,
|
||
genderKV:userApi.genderKV,
|
||
productTypeKV:orderApi.product.typeKV,
|
||
deliveryTimeType:orderApi.deliveryTimeType,
|
||
deliveryTimeTypeKV:orderApi.deliveryTimeTypeKV,
|
||
currentDeliveryTimeType:orderApi.deliveryTimeType.immediate,
|
||
},
|
||
|
||
/**
|
||
* 生命周期函数--监听页面加载
|
||
*/
|
||
onLoad(options) {
|
||
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.setData({
|
||
"pager.loading":true
|
||
});
|
||
let status = this.data.statusDic[this.data.currentDeliveryTimeType][this.data.orderStatusIndex].key;
|
||
let params = {
|
||
skip:this.data.pager.pageIndex*this.data.pager.limit,
|
||
limit:this.data.pager.limit,
|
||
delivery_time_type:this.data.currentDeliveryTimeType,
|
||
status:status
|
||
}
|
||
if(this.needFilterList()){
|
||
//不分页 直接返回全部,供本地搜索
|
||
params.skip = 0;
|
||
params.limit = 1000;
|
||
}else{
|
||
this.setData({
|
||
loadMoreText:'已经到底了'
|
||
})
|
||
}
|
||
orderApi.list(params).then((data)=>{
|
||
if(this.data.pager.pageIndex==0){
|
||
this.data.list = data.items;
|
||
}else{
|
||
this.data.list = this.data.list.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;
|
||
}
|
||
let needSetData = {
|
||
list:this.data.list,
|
||
pager:this.data.pager
|
||
}
|
||
this.setData(needSetData);
|
||
})
|
||
},
|
||
|
||
changeDeliveryTimeType(event){
|
||
const key = event.currentTarget.dataset.key;
|
||
this.setData({
|
||
currentDeliveryTimeType:key,
|
||
orderStatusIndex:0,
|
||
filterKey:''
|
||
})
|
||
this.refreshList();
|
||
},
|
||
changeStatus(event){
|
||
const index = event.currentTarget.dataset.index;
|
||
this.setData({
|
||
orderStatusIndex:index,
|
||
filterKey:''
|
||
})
|
||
this.refreshList();
|
||
},
|
||
|
||
makePhoneCall(event){
|
||
const phone = event.currentTarget.dataset.phone;
|
||
wx.makePhoneCall({
|
||
phoneNumber: phone,
|
||
})
|
||
},
|
||
needFilterList(){
|
||
let status = this.data.statusDic[this.data.currentDeliveryTimeType][this.data.orderStatusIndex].key;
|
||
return status==this.data.orderStatus.pending||
|
||
status==this.data.orderStatus.delivering||
|
||
status==this.data.orderStatus.pickupReady;
|
||
},
|
||
filterOrder(){
|
||
if(!this.needFilterList()){
|
||
return;
|
||
}
|
||
const value = this.data.filterKey;
|
||
let list = this.data.list.filter((item)=>{
|
||
const endNumber = item.address.phone.substr(item.address.phone.length-4,4);
|
||
console.log(endNumber);
|
||
return endNumber.indexOf(value)>-1;
|
||
});
|
||
let loadMoreText = '已经到底了';
|
||
if(value&&list.length==0){
|
||
loadMoreText = `暂无尾号 ${value} 的订单`
|
||
}
|
||
this.setData({
|
||
loadMoreText:loadMoreText,
|
||
filtedList:list
|
||
})
|
||
},
|
||
|
||
//接单
|
||
getOrder(event){
|
||
const item = event.currentTarget.dataset.item;
|
||
const index = event.currentTarget.dataset.index;
|
||
if(item.receiving)return;
|
||
this.setData({
|
||
[`list[${index}].receiving`]:true
|
||
})
|
||
if(item.product.delivery_time_type==this.data.deliveryTimeType.scheduled){
|
||
orderApi.complete(item.order.order_id).then((data)=>{
|
||
wx.showToast({
|
||
icon:'success',
|
||
title: '自提成功',
|
||
})
|
||
this.refreshList();
|
||
})
|
||
}else{
|
||
orderApi.accept(item.order.order_id).then((data)=>{
|
||
wx.showToast({
|
||
icon:'success',
|
||
title: '接单成功',
|
||
})
|
||
this.refreshList();
|
||
})
|
||
}
|
||
},
|
||
|
||
//我已送达
|
||
receivedOrder(event){
|
||
const index = event.currentTarget.dataset.index;
|
||
const item = event.currentTarget.dataset.item;
|
||
orderApi.complete(item.order.order_id).then((data)=>{
|
||
wx.showToast({
|
||
icon:'success',
|
||
title: '取货成功',
|
||
})
|
||
this.refreshList();
|
||
}).catch(()=>{
|
||
this.setData({
|
||
[`list[${index}].receiving`]:false
|
||
})
|
||
})
|
||
},
|
||
|
||
openMap(event){
|
||
const item = event.currentTarget.dataset.item;
|
||
wx.openLocation({
|
||
name:`${item.address.name}${this.data.genderKV[item.address.gender]}:${item.address.phone}`,
|
||
address:`${item.address.community_name}${item.address.address_detail}`,
|
||
latitude:item.address.latitude,
|
||
longitude:item.address.longitude,
|
||
})
|
||
},
|
||
emptyFun(){},
|
||
/**
|
||
* 生命周期函数--监听页面初次渲染完成
|
||
*/
|
||
onReady() {
|
||
|
||
},
|
||
|
||
/**
|
||
* 生命周期函数--监听页面显示
|
||
*/
|
||
onShow() {
|
||
|
||
},
|
||
|
||
/**
|
||
* 生命周期函数--监听页面隐藏
|
||
*/
|
||
onHide() {
|
||
|
||
},
|
||
|
||
/**
|
||
* 生命周期函数--监听页面卸载
|
||
*/
|
||
onUnload() {
|
||
|
||
},
|
||
|
||
/**
|
||
* 页面相关事件处理函数--监听用户下拉动作
|
||
*/
|
||
onPullDownRefresh() {
|
||
|
||
},
|
||
|
||
/**
|
||
* 页面上拉触底事件的处理函数
|
||
*/
|
||
onReachBottom() {
|
||
|
||
},
|
||
|
||
/**
|
||
* 用户点击右上角分享
|
||
*/
|
||
onShareAppMessage() {
|
||
|
||
}
|
||
}) |