ai-c/pages/referrals/orders/orders.js
2026-02-02 18:21:32 +08:00

108 lines
2.8 KiB
JavaScript

const api = require('../../../utils/api')
const util = require('../../../utils/util')
Page({
data: {
userInfo: null,
list: [],
page: 1,
pageSize: 20,
hasMore: true,
loading: false
},
onLoad(options) {
if (options.userInfo) {
try {
const userInfo = JSON.parse(decodeURIComponent(options.userInfo))
this.setData({ userInfo })
wx.setNavigationBarTitle({
title: `${userInfo.name}的订单`
})
} catch (e) {
console.error('解析用户信息失败', e)
}
}
this.loadOrders()
},
onPullDownRefresh() {
this.setData({
page: 1,
hasMore: true,
list: []
}, () => {
this.loadOrders().then(() => {
wx.stopPullDownRefresh()
})
})
},
onReachBottom() {
if (this.data.loading || !this.data.hasMore) return
this.setData({
page: this.data.page + 1
}, () => {
this.loadOrders()
})
},
async loadOrders() {
if (this.data.loading) return
this.setData({ loading: true })
try {
const res = await api.commission.getRecords({
page: this.data.page,
pageSize: this.data.pageSize,
fromUserId: this.data.userInfo?.userId
})
if (res.success) {
const newList = res.data.list.map(item => ({
...item,
orderTypeText: this.getOrderTypeText(item.orderType),
statusText: this.getStatusText(item.status),
statusClass: item.status,
createdAtFormatted: util.formatTime(new Date(item.createdAt))
}))
this.setData({
list: this.data.page === 1 ? newList : [...this.data.list, ...newList],
hasMore: newList.length === this.data.pageSize
})
}
} catch (err) {
console.error('加载订单失败', err)
wx.showToast({
title: '加载失败',
icon: 'none'
})
} finally {
this.setData({ loading: false })
}
},
getOrderTypeText(type) {
const map = {
'recharge': '充值',
'vip': 'VIP会员',
'identity_card': '身份卡',
'agent_purchase': '智能体购买',
'companion_chat': '陪聊'
}
return map[type] || type
},
getStatusText(status) {
const map = {
'pending': '待结算',
'settled': '已结算',
'cancelled': '已取消'
}
return map[status] || status
}
})