Files
wxapp_escort_admin/components/order-stats/index.js
T
2026-09-03 11:35:21 +08:00

70 lines
1.9 KiB
JavaScript

// components/order-stats/index.js
// 首页订单统计卡片:全部完成 / 本月完成 / 未完成
const API = require('../../utils/api.js')
Component({
data: {
allCount: 0,
allFee: 0,
monthCount: 0,
monthFee: 0,
uncompletedCount: 0,
uncompletedFee: 0
},
lifetimes: {
attached() {
this.load()
}
},
methods: {
/**
* 拉取订单记录并统计三个口径(数量与费用)
* 全部完成:status === 'completed'
* 本月完成:completed 且预约日期在本月
* 未完成:status !== 'completed'
* 费用取 payment.totalFee 合计
*/
load() {
API.escort.getAllRecords({ page: 1, pageSize: 200 })
.then(res => {
if (res.code !== 0) return
const records = res.data.records || []
const now = new Date()
const year = now.getFullYear()
const month = now.getMonth()
const feeOf = (item) => Number(item.payment && item.payment.totalFee) || 0
let allCount = 0
let allFee = 0
let monthCount = 0
let monthFee = 0
let uncompletedCount = 0
let uncompletedFee = 0
records.forEach(item => {
if (item.status === 'completed') {
allCount++
allFee += feeOf(item)
const d = item.schedule && item.schedule.date
? new Date(item.schedule.date)
: null
if (d && !isNaN(d.getTime()) && d.getFullYear() === year && d.getMonth() === month) {
monthCount++
monthFee += feeOf(item)
}
} else {
uncompletedCount++
uncompletedFee += feeOf(item)
}
})
this.setData({ allCount, allFee, monthCount, monthFee, uncompletedCount, uncompletedFee })
})
.catch(err => {
console.error('获取订单统计失败', err)
})
}
}
})