|
|
|
@ -1,4 +1,6 @@ |
|
|
|
// pages/order/index.js
|
|
|
|
const API = require('../../utils/api.js'); |
|
|
|
|
|
|
|
Page({ |
|
|
|
// 分享给朋友/群聊
|
|
|
|
onShareAppMessage() { |
|
|
|
@ -34,7 +36,16 @@ Page({ |
|
|
|
page: 1, |
|
|
|
pageSize: 10, |
|
|
|
hasMore: true, |
|
|
|
loadingMore: false |
|
|
|
loadingMore: false, |
|
|
|
// 统计信息
|
|
|
|
statistics: { |
|
|
|
totalOrders: 0, |
|
|
|
totalAmount: 0, |
|
|
|
totalPieces: 0, |
|
|
|
totalWeight: 0, |
|
|
|
unpaidAmount: 0, |
|
|
|
paidAmount: 0 |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
onLoad() { |
|
|
|
@ -47,7 +58,6 @@ Page({ |
|
|
|
onShow() { |
|
|
|
// 页面显示时的逻辑
|
|
|
|
this.loadUserInfo(() => { |
|
|
|
this.loadOrders(); |
|
|
|
// 更新自定义tabBar状态
|
|
|
|
if (typeof this.getTabBar === 'function' && this.getTabBar()) { |
|
|
|
this.getTabBar().setData({ |
|
|
|
@ -109,50 +119,71 @@ Page({ |
|
|
|
|
|
|
|
console.log('loadOrders - activeTab:', activeTab, 'paymentStatus:', paymentStatus, 'page:', page); |
|
|
|
|
|
|
|
wx.request({ |
|
|
|
url: 'http://localhost:3003/api/orders/list', |
|
|
|
method: 'POST', |
|
|
|
header: { |
|
|
|
'Content-Type': 'application/json' |
|
|
|
}, |
|
|
|
data: { |
|
|
|
// 并行请求订单列表和统计数据
|
|
|
|
const orderRequest = API.request('/api/orders/list', 'POST', { |
|
|
|
phoneNumber: phoneNumber, |
|
|
|
startDate: this.data.dateRange.start, |
|
|
|
endDate: this.data.dateRange.end, |
|
|
|
paymentStatus: paymentStatus, |
|
|
|
page: page, |
|
|
|
pageSize: pageSize |
|
|
|
}, |
|
|
|
success: (res) => { |
|
|
|
console.log('获取订单列表成功:', res.data); |
|
|
|
if (res.data.success) { |
|
|
|
const newOrders = res.data.data.orders || []; |
|
|
|
}).then(res => { |
|
|
|
return { data: res }; |
|
|
|
}).catch(err => { |
|
|
|
throw err; |
|
|
|
}); |
|
|
|
|
|
|
|
// 只有在非加载更多时才请求统计数据(加载更多时统计数据不变)
|
|
|
|
const statisticsRequest = isLoadMore ? Promise.resolve(null) : API.request('/api/orders/statistics', 'POST', { |
|
|
|
phoneNumber: phoneNumber, |
|
|
|
startDate: this.data.dateRange.start, |
|
|
|
endDate: this.data.dateRange.end, |
|
|
|
paymentStatus: paymentStatus |
|
|
|
}).then(res => { |
|
|
|
return { data: res }; |
|
|
|
}).catch(err => { |
|
|
|
throw err; |
|
|
|
}); |
|
|
|
|
|
|
|
// 处理所有请求
|
|
|
|
Promise.all([orderRequest, statisticsRequest]) |
|
|
|
.then(([orderRes, statisticsRes]) => { |
|
|
|
console.log('获取订单列表成功:', orderRes.data); |
|
|
|
if (orderRes.data.success) { |
|
|
|
const newOrders = orderRes.data.data.orders || []; |
|
|
|
const totalOrders = isLoadMore ? [...this.data.orders, ...newOrders] : newOrders; |
|
|
|
const hasMore = newOrders.length === pageSize; |
|
|
|
|
|
|
|
// 处理统计数据
|
|
|
|
let statistics = this.data.statistics; |
|
|
|
if (statisticsRes && statisticsRes.data && statisticsRes.data.success) { |
|
|
|
statistics = statisticsRes.data.data; |
|
|
|
console.log('获取统计数据成功:', statistics); |
|
|
|
} |
|
|
|
|
|
|
|
this.setData({ |
|
|
|
orders: totalOrders, |
|
|
|
page: page, |
|
|
|
hasMore: hasMore, |
|
|
|
loading: false, |
|
|
|
loadingMore: false |
|
|
|
loadingMore: false, |
|
|
|
statistics: statistics |
|
|
|
}); |
|
|
|
} else { |
|
|
|
this.setData({ |
|
|
|
error: res.data.message || '获取订单失败', |
|
|
|
error: orderRes.data.message || '获取订单失败', |
|
|
|
loading: false, |
|
|
|
loadingMore: false |
|
|
|
}); |
|
|
|
} |
|
|
|
}, |
|
|
|
fail: (err) => { |
|
|
|
console.error('获取订单列表失败:', err); |
|
|
|
}) |
|
|
|
.catch((err) => { |
|
|
|
console.error('请求失败:', err); |
|
|
|
this.setData({ |
|
|
|
error: '网络请求失败,请稍后重试', |
|
|
|
error: err.message || '网络请求失败,请稍后重试', |
|
|
|
loading: false, |
|
|
|
loadingMore: false |
|
|
|
}); |
|
|
|
} |
|
|
|
}); |
|
|
|
}, |
|
|
|
|
|
|
|
@ -220,6 +251,60 @@ Page({ |
|
|
|
}); |
|
|
|
}, |
|
|
|
|
|
|
|
// 计算统计信息
|
|
|
|
calculateStatistics() { |
|
|
|
const orders = this.data.orders; |
|
|
|
if (!orders || orders.length === 0) { |
|
|
|
this.setData({ |
|
|
|
statistics: { |
|
|
|
totalOrders: 0, |
|
|
|
totalAmount: 0, |
|
|
|
totalPieces: 0, |
|
|
|
unpaidAmount: 0, |
|
|
|
paidAmount: 0 |
|
|
|
} |
|
|
|
}); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
let totalOrders = orders.length; |
|
|
|
let totalAmount = 0; |
|
|
|
let totalPieces = 0; |
|
|
|
let unpaidAmount = 0; |
|
|
|
let paidAmount = 0; |
|
|
|
|
|
|
|
orders.forEach(order => { |
|
|
|
// 累加总金额和总件数
|
|
|
|
if (order.total_amount) { |
|
|
|
totalAmount += parseFloat(order.total_amount) || 0; |
|
|
|
} |
|
|
|
if (order.total_pieces) { |
|
|
|
totalPieces += parseInt(order.total_pieces) || 0; |
|
|
|
} |
|
|
|
|
|
|
|
// 区分未付款和已付款
|
|
|
|
if (order.payment_status === '未收款') { |
|
|
|
if (order.total_amount) { |
|
|
|
unpaidAmount += parseFloat(order.total_amount) || 0; |
|
|
|
} |
|
|
|
} else if (order.payment_status === '全款') { |
|
|
|
if (order.total_amount) { |
|
|
|
paidAmount += parseFloat(order.total_amount) || 0; |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
this.setData({ |
|
|
|
statistics: { |
|
|
|
totalOrders, |
|
|
|
totalAmount: Math.round(totalAmount * 100) / 100, |
|
|
|
totalPieces, |
|
|
|
unpaidAmount: Math.round(unpaidAmount * 100) / 100, |
|
|
|
paidAmount: Math.round(paidAmount * 100) / 100 |
|
|
|
} |
|
|
|
}); |
|
|
|
}, |
|
|
|
|
|
|
|
// 滚动到底部的预加载逻辑
|
|
|
|
onReachBottom() { |
|
|
|
if (!this.data.loadingMore && this.data.hasMore) { |
|
|
|
|