beefast-mini-merchant/pages/order/list/index.js
2025-03-28 19:59:47 +08:00

247 lines
5.9 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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() {
}
})