54 lines
1.4 KiB
JavaScript
54 lines
1.4 KiB
JavaScript
const { request, ensureLogin, cents } = require('../../utils/api.js')
|
|
|
|
Page({
|
|
data: {
|
|
loading: false,
|
|
errorMessage: '',
|
|
orders: [],
|
|
page: 1,
|
|
pageSize: 20,
|
|
total: 0,
|
|
},
|
|
|
|
onShow() {
|
|
this.loadOrders()
|
|
},
|
|
|
|
async loadOrders() {
|
|
this.setData({ loading: true, errorMessage: '' })
|
|
try {
|
|
await ensureLogin()
|
|
const response = await request(`/orders?page=${this.data.page}&pageSize=${this.data.pageSize}`)
|
|
this.setData({
|
|
orders: (response.data.items || []).map(formatOrder),
|
|
total: response.data.total || 0,
|
|
})
|
|
} catch (error) {
|
|
this.setData({ errorMessage: error.message || '订单加载失败' })
|
|
} finally {
|
|
this.setData({ loading: false })
|
|
}
|
|
},
|
|
|
|
openOrder(event) {
|
|
const orderId = event.currentTarget.dataset.orderId
|
|
if (!orderId) return
|
|
wx.navigateTo({ url: `/pages/orders/detail?orderId=${encodeURIComponent(orderId)}` })
|
|
},
|
|
})
|
|
|
|
function formatOrder(order) {
|
|
return {
|
|
...order,
|
|
totalText: cents(order.totalAmountCents),
|
|
paidText: cents(order.paidAmountCents),
|
|
timeText: `${formatTime(order.startAt)} 至 ${formatTime(order.endAt)}`,
|
|
}
|
|
}
|
|
|
|
function formatTime(value) {
|
|
const date = new Date(value)
|
|
const pad = (input) => String(input).padStart(2, '0')
|
|
return `${pad(date.getMonth() + 1)}-${pad(date.getDate())} ${pad(date.getHours())}:${pad(date.getMinutes())}`
|
|
}
|