140 lines
4.4 KiB
JavaScript
140 lines
4.4 KiB
JavaScript
import request from '../../utils/request.js';
|
|
import { getOrderStatusText } from '../../utils/api-helper.js';
|
|
|
|
const PAGE_SIZE = 15;
|
|
|
|
const TYPE_CONFIG = {
|
|
commission: { title: '佣金记录', statuses: [3, 8] },
|
|
settle: { title: '结算记录', statuses: [3] },
|
|
withdraw: { title: '提现记录', api: 'withdraw' },
|
|
deduct: { title: '扣款记录', api: 'deduct' },
|
|
};
|
|
|
|
Page({
|
|
data: {
|
|
pageTitle: '交易明细',
|
|
type: 'commission',
|
|
statusBar: 20,
|
|
list: [],
|
|
page: 1,
|
|
hasMore: true,
|
|
loading: false,
|
|
refreshing: false,
|
|
},
|
|
|
|
onLoad(options) {
|
|
const sys = wx.getSystemInfoSync();
|
|
const type = (options.type || 'commission').trim();
|
|
const cfg = TYPE_CONFIG[type] || TYPE_CONFIG.commission;
|
|
this.setData({
|
|
type,
|
|
pageTitle: cfg.title,
|
|
statusBar: sys.statusBarHeight || 20,
|
|
});
|
|
this.loadList(true);
|
|
},
|
|
|
|
goBack() {
|
|
wx.navigateBack({ fail: () => wx.switchTab({ url: '/pages/fighter/fighter' }) });
|
|
},
|
|
|
|
onRefresh() {
|
|
this.setData({ refreshing: true });
|
|
this.loadList(true).finally(() => this.setData({ refreshing: false }));
|
|
},
|
|
|
|
onLoadMore() {
|
|
if (this.data.hasMore && !this.data.loading) {
|
|
this.loadList(false);
|
|
}
|
|
},
|
|
|
|
async loadList(refresh) {
|
|
const { type, loading } = this.data;
|
|
if (loading) return;
|
|
const page = refresh ? 1 : this.data.page;
|
|
this.setData({ loading: true });
|
|
try {
|
|
let rows = [];
|
|
let hasMore = false;
|
|
if (type === 'withdraw') {
|
|
const res = await request({
|
|
url: '/yonghu/tixianjiluhq',
|
|
method: 'POST',
|
|
data: { page, limit: PAGE_SIZE },
|
|
});
|
|
const body = res?.data;
|
|
if (body && (body.code === 200 || body.code === 0)) {
|
|
const raw = body.data?.list || [];
|
|
rows = raw.map((item, idx) => ({
|
|
id: item.id || item.jilu_id || `${page}-${idx}`,
|
|
title: item.beizhu || item.status_text || item.zhuangtai_text || '提现',
|
|
time: item.creat_time || item.create_time || item.tijiao_shijian || '',
|
|
amount: `-¥${item.jine || item.amount || item.tixian_jine || '0.00'}`,
|
|
minus: true,
|
|
}));
|
|
hasMore = raw.length >= PAGE_SIZE;
|
|
}
|
|
} else if (type === 'deduct') {
|
|
const res = await request({
|
|
url: '/yonghu/dsfklbhq',
|
|
method: 'POST',
|
|
data: { page, page_size: PAGE_SIZE, zhuangtai: 0 },
|
|
});
|
|
const body = res?.data;
|
|
if (body && (body.code === 200 || body.code === 0)) {
|
|
const raw = body.data?.list || [];
|
|
rows = raw.map((item, idx) => ({
|
|
id: item.fadan_id || item.id || `${page}-${idx}`,
|
|
title: item.yuanyin || item.beizhu || item.fakuan_yuanyin || '扣款',
|
|
time: item.creat_time || item.create_time || '',
|
|
amount: `-¥${item.jine || item.fakuan_jine || item.fakuanjine || '0.00'}`,
|
|
minus: true,
|
|
}));
|
|
hasMore = raw.length >= PAGE_SIZE;
|
|
}
|
|
} else {
|
|
const cfg = TYPE_CONFIG[type] || TYPE_CONFIG.commission;
|
|
const res = await request({
|
|
url: '/dingdan/dshqdingdan',
|
|
method: 'POST',
|
|
data: {
|
|
zhuangtai_list: cfg.statuses,
|
|
page,
|
|
page_size: PAGE_SIZE,
|
|
},
|
|
});
|
|
const body = res?.data;
|
|
if (body && (body.code === 200 || body.code === 0)) {
|
|
const raw = body.data?.list || [];
|
|
rows = raw.map((item) => {
|
|
const amt = item.jine || item.dashou_fencheng || '0.00';
|
|
const brief = (item.jieshao || '').trim();
|
|
const title = brief
|
|
? (brief.length > 18 ? `${brief.slice(0, 18)}…` : brief)
|
|
: `订单 ${item.dingdan_id || ''}`;
|
|
return {
|
|
id: item.dingdan_id,
|
|
title,
|
|
time: item.wancheng_shijian || item.jiesuan_shijian || item.creat_time || getOrderStatusText(item.zhuangtai),
|
|
amount: `+¥${amt}`,
|
|
minus: false,
|
|
};
|
|
});
|
|
hasMore = body.data?.has_more ?? raw.length >= PAGE_SIZE;
|
|
}
|
|
}
|
|
const list = refresh ? rows : [...this.data.list, ...rows];
|
|
this.setData({
|
|
list,
|
|
page: refresh ? 2 : page + 1,
|
|
hasMore,
|
|
});
|
|
} catch (e) {
|
|
console.error('ledger load fail', e);
|
|
} finally {
|
|
this.setData({ loading: false });
|
|
}
|
|
},
|
|
});
|