feat: 星之界打手端UI与提现/充值/排行榜等页面同步更新

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
XingQue
2026-07-08 22:56:08 +08:00
parent 40bc391f76
commit 2ea2860791
103 changed files with 7856 additions and 6814 deletions

View File

@@ -0,0 +1,139 @@
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 });
}
},
});