Files
sundynix-plant-mp/pages/profile/exchange/orders/index.js
T
2026-02-25 13:28:17 +08:00

81 lines
2.3 KiB
JavaScript

import request from '../../../../utils/request';
const STATUS_MAP = {
1: { text: '待处理', theme: 'warning' },
2: { text: '处理中', theme: 'primary' },
3: { text: '已发货', theme: 'primary' },
4: { text: '已完成', theme: 'success' },
5: { text: '已取消', theme: 'default' }
};
Page({
data: {
orders: [],
isLoading: true,
hasMore: true,
current: 1,
pageSize: 10,
activeStatus: 0,
statusTabs: [
{ key: 0, label: '全部' },
{ key: 1, label: '待处理' },
{ key: 4, label: '已完成' },
{ key: 5, label: '已取消' }
]
},
onLoad() {
this.fetchOrders();
},
onShow() {
this.fetchOrders();
},
async fetchOrders(append = false) {
if (!append) {
this.setData({ isLoading: true, current: 1, orders: [] });
}
try {
const params = {
current: this.data.current,
pageSize: this.data.pageSize
};
if (this.data.activeStatus) {
params.status = this.data.activeStatus;
}
const res = await request.get('/exchange/orders', params);
let list = (res && res.list) ? res.list : [];
const total = (res && res.total) ? res.total : 0;
// Enrich with status display info
list = list.map(order => ({
...order,
statusInfo: STATUS_MAP[order.status] || { text: '未知', theme: 'default' }
}));
this.setData({
orders: append ? [...this.data.orders, ...list] : list,
hasMore: this.data.orders.length + list.length < total
});
} catch (e) {
console.error('Fetch orders failed', e);
} finally {
this.setData({ isLoading: false });
}
},
switchStatus(e) {
const key = e.currentTarget.dataset.key;
if (key === this.data.activeStatus) return;
this.setData({ activeStatus: key });
this.fetchOrders();
},
onReachBottom() {
if (!this.data.hasMore || this.data.isLoading) return;
this.setData({ current: this.data.current + 1 });
this.fetchOrders(true);
}
});