feat: 按文档对接账务管理下页面逻辑与字段
This commit is contained in:
@@ -0,0 +1,149 @@
|
||||
/**
|
||||
* 支付流水假数据
|
||||
* 对应接口:GET /admin/finance/paymentFlow/page
|
||||
*/
|
||||
import type { PaymentFlowVO, PaymentFlowQueryParams, PageData } from '@/api/payments';
|
||||
|
||||
const MOCK_LIST: PaymentFlowVO[] = [
|
||||
{
|
||||
serialNo: 'FL20260730001',
|
||||
orderNo: 'OD20260730001',
|
||||
type: 1,
|
||||
nickname: '张三',
|
||||
phone: '12345678997',
|
||||
amount: '99.00',
|
||||
createDate: '2026-07-30 08:00:00',
|
||||
},
|
||||
{
|
||||
serialNo: '',
|
||||
orderNo: '',
|
||||
type: 2,
|
||||
nickname: '李四',
|
||||
phone: '12345678998',
|
||||
amount: '100.00',
|
||||
createDate: '2026-07-30 07:00:00',
|
||||
},
|
||||
{
|
||||
serialNo: 'FL20260729002',
|
||||
orderNo: 'OD20260729002',
|
||||
type: 1,
|
||||
nickname: '王五',
|
||||
phone: '12345678998',
|
||||
amount: '199.00',
|
||||
createDate: '2026-07-29 16:00:00',
|
||||
},
|
||||
{
|
||||
serialNo: '',
|
||||
orderNo: '',
|
||||
type: 2,
|
||||
nickname: '赵六',
|
||||
phone: '13800138000',
|
||||
amount: '50.00',
|
||||
createDate: '2026-07-29 15:20:00',
|
||||
},
|
||||
{
|
||||
serialNo: 'FL20260728003',
|
||||
orderNo: 'OD20260728003',
|
||||
type: 1,
|
||||
nickname: '钱七',
|
||||
phone: '13900139001',
|
||||
amount: '350.00',
|
||||
createDate: '2026-07-28 14:00:00',
|
||||
},
|
||||
{
|
||||
serialNo: '',
|
||||
orderNo: '',
|
||||
type: 2,
|
||||
nickname: '孙八',
|
||||
phone: '18600186001',
|
||||
amount: '120.00',
|
||||
createDate: '2026-07-28 10:30:00',
|
||||
},
|
||||
{
|
||||
serialNo: 'FL20260727004',
|
||||
orderNo: 'OD20260727004',
|
||||
type: 1,
|
||||
nickname: '周九',
|
||||
phone: '15200152000',
|
||||
amount: '88.00',
|
||||
createDate: '2026-07-27 09:00:00',
|
||||
},
|
||||
{
|
||||
serialNo: 'FL20260727005',
|
||||
orderNo: 'OD20260727005',
|
||||
type: 1,
|
||||
nickname: '吴十',
|
||||
phone: '17000170001',
|
||||
amount: '520.00',
|
||||
createDate: '2026-07-27 08:00:00',
|
||||
},
|
||||
{
|
||||
serialNo: '',
|
||||
orderNo: '',
|
||||
type: 2,
|
||||
nickname: '李四',
|
||||
phone: '12345678998',
|
||||
amount: '200.00',
|
||||
createDate: '2026-07-26 17:00:00',
|
||||
},
|
||||
{
|
||||
serialNo: 'FL20260726006',
|
||||
orderNo: 'OD20260726006',
|
||||
type: 1,
|
||||
nickname: '张三',
|
||||
phone: '12345678997',
|
||||
amount: '128.00',
|
||||
createDate: '2026-07-26 11:00:00',
|
||||
},
|
||||
{
|
||||
serialNo: '',
|
||||
orderNo: '',
|
||||
type: 2,
|
||||
nickname: '王五',
|
||||
phone: '12345678998',
|
||||
amount: '80.00',
|
||||
createDate: '2026-07-25 13:00:00',
|
||||
},
|
||||
{
|
||||
serialNo: 'FL20260725007',
|
||||
orderNo: 'OD20260725007',
|
||||
type: 1,
|
||||
nickname: '赵六',
|
||||
phone: '13800138000',
|
||||
amount: '680.00',
|
||||
createDate: '2026-07-25 10:00:00',
|
||||
},
|
||||
];
|
||||
|
||||
function inDateRange(date: string, begin?: string, end?: string): boolean {
|
||||
if (!begin && !end) return true;
|
||||
const d = date.slice(0, 10);
|
||||
if (begin && d < begin) return false;
|
||||
if (end && d > end) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
export function buildMockPaymentFlowPage(
|
||||
page: number,
|
||||
limit: number,
|
||||
params: PaymentFlowQueryParams,
|
||||
): PageData<PaymentFlowVO> {
|
||||
let filtered = [...MOCK_LIST];
|
||||
|
||||
if (params.nickname) {
|
||||
filtered = filtered.filter((item) => item.nickname.includes(params.nickname!));
|
||||
}
|
||||
if (params.phone) {
|
||||
filtered = filtered.filter((item) => item.phone.includes(params.phone!));
|
||||
}
|
||||
if (params.type) {
|
||||
filtered = filtered.filter((item) => item.type === Number(params.type));
|
||||
}
|
||||
filtered = filtered.filter((item) =>
|
||||
inDateRange(item.createDate, params.createDateBegin, params.createDateEnd),
|
||||
);
|
||||
|
||||
const total = filtered.length;
|
||||
const start = (page - 1) * limit;
|
||||
return { total, list: filtered.slice(start, start + limit) };
|
||||
}
|
||||
@@ -0,0 +1,185 @@
|
||||
/**
|
||||
* 钱包列表假数据
|
||||
* 对应接口:GET /admin/finance/wallet/summary
|
||||
*/
|
||||
import type { WalletSummaryVO, WalletQueryParams, PageData } from '@/api/wallet';
|
||||
|
||||
const MOCK_LIST: WalletSummaryVO[] = [
|
||||
{
|
||||
userId: 1001,
|
||||
userNickname: '张三',
|
||||
phone: '12345678997',
|
||||
amount: '0.00',
|
||||
frozenAmount: '0.00',
|
||||
withdrawalAmount: '0.00',
|
||||
totalAmount: '0.00',
|
||||
totalFrozenAmount: '0.00',
|
||||
totalWithdrawalAmount: '0.00',
|
||||
},
|
||||
{
|
||||
userId: 1002,
|
||||
userNickname: '李四',
|
||||
phone: '12345678998',
|
||||
amount: '350.00',
|
||||
frozenAmount: '200.00',
|
||||
withdrawalAmount: '1450.00',
|
||||
totalAmount: '0.00',
|
||||
totalFrozenAmount: '0.00',
|
||||
totalWithdrawalAmount: '0.00',
|
||||
},
|
||||
{
|
||||
userId: 1003,
|
||||
userNickname: '王五',
|
||||
phone: '12345678999',
|
||||
amount: '1280.00',
|
||||
frozenAmount: '0.00',
|
||||
withdrawalAmount: '800.00',
|
||||
totalAmount: '0.00',
|
||||
totalFrozenAmount: '0.00',
|
||||
totalWithdrawalAmount: '0.00',
|
||||
},
|
||||
{
|
||||
userId: 1004,
|
||||
userNickname: '赵六',
|
||||
phone: '13800138000',
|
||||
amount: '560.00',
|
||||
frozenAmount: '100.00',
|
||||
withdrawalAmount: '200.00',
|
||||
totalAmount: '0.00',
|
||||
totalFrozenAmount: '0.00',
|
||||
totalWithdrawalAmount: '0.00',
|
||||
},
|
||||
{
|
||||
userId: 1005,
|
||||
userNickname: '钱七',
|
||||
phone: '13900139001',
|
||||
amount: '4200.00',
|
||||
frozenAmount: '1500.00',
|
||||
withdrawalAmount: '5600.00',
|
||||
totalAmount: '0.00',
|
||||
totalFrozenAmount: '0.00',
|
||||
totalWithdrawalAmount: '0.00',
|
||||
},
|
||||
{
|
||||
userId: 1006,
|
||||
userNickname: '孙八',
|
||||
phone: '12345678997',
|
||||
amount: '880.00',
|
||||
frozenAmount: '0.00',
|
||||
withdrawalAmount: '300.00',
|
||||
totalAmount: '0.00',
|
||||
totalFrozenAmount: '0.00',
|
||||
totalWithdrawalAmount: '0.00',
|
||||
},
|
||||
{
|
||||
userId: 1007,
|
||||
userNickname: '周九',
|
||||
phone: '17000170001',
|
||||
amount: '2100.00',
|
||||
frozenAmount: '800.00',
|
||||
withdrawalAmount: '3200.00',
|
||||
totalAmount: '0.00',
|
||||
totalFrozenAmount: '0.00',
|
||||
totalWithdrawalAmount: '0.00',
|
||||
},
|
||||
{
|
||||
userId: 1008,
|
||||
userNickname: '吴十',
|
||||
phone: '18900189000',
|
||||
amount: '650.00',
|
||||
frozenAmount: '0.00',
|
||||
withdrawalAmount: '450.00',
|
||||
totalAmount: '0.00',
|
||||
totalFrozenAmount: '0.00',
|
||||
totalWithdrawalAmount: '0.00',
|
||||
},
|
||||
{
|
||||
userId: 1009,
|
||||
userNickname: '郑十一',
|
||||
phone: '15200152000',
|
||||
amount: '980.00',
|
||||
frozenAmount: '200.00',
|
||||
withdrawalAmount: '1200.00',
|
||||
totalAmount: '0.00',
|
||||
totalFrozenAmount: '0.00',
|
||||
totalWithdrawalAmount: '0.00',
|
||||
},
|
||||
{
|
||||
userId: 1010,
|
||||
userNickname: '冯十二',
|
||||
phone: '18600186001',
|
||||
amount: '320.00',
|
||||
frozenAmount: '50.00',
|
||||
withdrawalAmount: '100.00',
|
||||
totalAmount: '0.00',
|
||||
totalFrozenAmount: '0.00',
|
||||
totalWithdrawalAmount: '0.00',
|
||||
},
|
||||
{
|
||||
userId: 1011,
|
||||
userNickname: '褚十三',
|
||||
phone: '13500135000',
|
||||
amount: '5800.00',
|
||||
frozenAmount: '0.00',
|
||||
withdrawalAmount: '2000.00',
|
||||
totalAmount: '0.00',
|
||||
totalFrozenAmount: '0.00',
|
||||
totalWithdrawalAmount: '0.00',
|
||||
},
|
||||
{
|
||||
userId: 1012,
|
||||
userNickname: '卫十四',
|
||||
phone: '13700137000',
|
||||
amount: '75.00',
|
||||
frozenAmount: '0.00',
|
||||
withdrawalAmount: '75.00',
|
||||
totalAmount: '0.00',
|
||||
totalFrozenAmount: '0.00',
|
||||
totalWithdrawalAmount: '0.00',
|
||||
},
|
||||
];
|
||||
|
||||
/** 计算汇总值 */
|
||||
function computeSummary(list: WalletSummaryVO[]) {
|
||||
const totalAmount = list.reduce((s, i) => s + Number(i.amount || 0), 0).toFixed(2);
|
||||
const totalFrozenAmount = list.reduce((s, i) => s + Number(i.frozenAmount || 0), 0).toFixed(2);
|
||||
const totalWithdrawalAmount = list
|
||||
.reduce((s, i) => s + Number(i.withdrawalAmount || 0), 0)
|
||||
.toFixed(2);
|
||||
return { totalAmount, totalFrozenAmount, totalWithdrawalAmount };
|
||||
}
|
||||
|
||||
export function buildMockWalletPage(
|
||||
page: number,
|
||||
limit: number,
|
||||
params: WalletQueryParams,
|
||||
): PageData<WalletSummaryVO> {
|
||||
let filtered = [...MOCK_LIST];
|
||||
|
||||
if (params.nickname) {
|
||||
filtered = filtered.filter((item) => item.userNickname.includes(params.nickname!));
|
||||
}
|
||||
if (params.phone) {
|
||||
filtered = filtered.filter((item) => item.phone.includes(params.phone!));
|
||||
}
|
||||
if (params.amountBegin) {
|
||||
filtered = filtered.filter((item) => Number(item.amount) >= Number(params.amountBegin));
|
||||
}
|
||||
if (params.amountEnd) {
|
||||
filtered = filtered.filter((item) => Number(item.amount) <= Number(params.amountEnd));
|
||||
}
|
||||
|
||||
const total = filtered.length;
|
||||
const start = (page - 1) * limit;
|
||||
const pageList = filtered.slice(start, start + limit);
|
||||
|
||||
// 将汇总值写入每条记录(方便前端提取统计卡数据)
|
||||
const summary = computeSummary(filtered);
|
||||
for (const item of pageList) {
|
||||
item.totalAmount = summary.totalAmount;
|
||||
item.totalFrozenAmount = summary.totalFrozenAmount;
|
||||
item.totalWithdrawalAmount = summary.totalWithdrawalAmount;
|
||||
}
|
||||
|
||||
return { total, list: pageList };
|
||||
}
|
||||
@@ -0,0 +1,187 @@
|
||||
/**
|
||||
* 钱包交易明细假数据
|
||||
* 对应接口:GET /admin/finance/wallet/page
|
||||
*
|
||||
* type: 1=报名入账, 2=提现出账, 3=退款出账
|
||||
* status(由 freezeAmount/freezeTime 推导): 1=已解冻, 2=冻结中, 3=正常
|
||||
*/
|
||||
import type { WalletTransactionVO, WalletTransactionQueryParams, PageData } from '@/api/wallet';
|
||||
|
||||
const MOCK_TRANSACTIONS: (WalletTransactionVO & { status: number })[] = [
|
||||
{
|
||||
type: 1,
|
||||
amount: '+100.00',
|
||||
afterAmount: '600.00',
|
||||
withdrawAmount: '500.00',
|
||||
freezeAmount: '100.00',
|
||||
status: 1,
|
||||
freezeTime: '2026-06-10 08:00',
|
||||
unfreezeTime: '2026-06-12 08:00',
|
||||
orderNo: 'SN20260610001',
|
||||
createDate: '2026-06-10 08:00',
|
||||
},
|
||||
{
|
||||
type: 2,
|
||||
amount: '-500.00',
|
||||
afterAmount: '1100.00',
|
||||
withdrawAmount: '500.00',
|
||||
freezeAmount: '600.00',
|
||||
status: 2,
|
||||
freezeTime: '2026-06-10 06:00',
|
||||
unfreezeTime: '',
|
||||
orderNo: 'SN20260610002',
|
||||
createDate: '2026-06-10 06:00',
|
||||
},
|
||||
{
|
||||
type: 3,
|
||||
amount: '-100.00',
|
||||
afterAmount: '500.00',
|
||||
withdrawAmount: '500.00',
|
||||
freezeAmount: '0.00',
|
||||
status: 3,
|
||||
freezeTime: '',
|
||||
unfreezeTime: '',
|
||||
orderNo: 'SN20260610003',
|
||||
createDate: '2026-06-10 05:00',
|
||||
},
|
||||
{
|
||||
type: 1,
|
||||
amount: '+350.00',
|
||||
afterAmount: '850.00',
|
||||
withdrawAmount: '750.00',
|
||||
freezeAmount: '100.00',
|
||||
status: 3,
|
||||
freezeTime: '',
|
||||
unfreezeTime: '',
|
||||
orderNo: 'SN20260609001',
|
||||
createDate: '2026-06-09 17:30',
|
||||
},
|
||||
{
|
||||
type: 2,
|
||||
amount: '-250.00',
|
||||
afterAmount: '600.00',
|
||||
withdrawAmount: '500.00',
|
||||
freezeAmount: '100.00',
|
||||
status: 1,
|
||||
freezeTime: '2026-06-08 10:00',
|
||||
unfreezeTime: '2026-06-09 08:00',
|
||||
orderNo: 'SN20260608001',
|
||||
createDate: '2026-06-08 10:00',
|
||||
},
|
||||
{
|
||||
type: 1,
|
||||
amount: '+800.00',
|
||||
afterAmount: '2000.00',
|
||||
withdrawAmount: '1800.00',
|
||||
freezeAmount: '200.00',
|
||||
status: 3,
|
||||
freezeTime: '',
|
||||
unfreezeTime: '',
|
||||
orderNo: 'SN20260607001',
|
||||
createDate: '2026-06-07 14:00',
|
||||
},
|
||||
{
|
||||
type: 2,
|
||||
amount: '-300.00',
|
||||
afterAmount: '1200.00',
|
||||
withdrawAmount: '1000.00',
|
||||
freezeAmount: '200.00',
|
||||
status: 2,
|
||||
freezeTime: '2026-06-06 09:00',
|
||||
unfreezeTime: '',
|
||||
orderNo: 'SN20260606001',
|
||||
createDate: '2026-06-06 09:00',
|
||||
},
|
||||
{
|
||||
type: 3,
|
||||
amount: '-50.00',
|
||||
afterAmount: '1500.00',
|
||||
withdrawAmount: '1300.00',
|
||||
freezeAmount: '200.00',
|
||||
status: 1,
|
||||
freezeTime: '2026-06-05 10:00',
|
||||
unfreezeTime: '2026-06-07 10:00',
|
||||
orderNo: 'SN20260605001',
|
||||
createDate: '2026-06-05 10:00',
|
||||
},
|
||||
{
|
||||
type: 1,
|
||||
amount: '+200.00',
|
||||
afterAmount: '1550.00',
|
||||
withdrawAmount: '1350.00',
|
||||
freezeAmount: '200.00',
|
||||
status: 3,
|
||||
freezeTime: '',
|
||||
unfreezeTime: '',
|
||||
orderNo: 'SN20260604001',
|
||||
createDate: '2026-06-04 08:30',
|
||||
},
|
||||
{
|
||||
type: 2,
|
||||
amount: '-600.00',
|
||||
afterAmount: '950.00',
|
||||
withdrawAmount: '750.00',
|
||||
freezeAmount: '200.00',
|
||||
status: 1,
|
||||
freezeTime: '2026-06-03 16:00',
|
||||
unfreezeTime: '2026-06-05 16:00',
|
||||
orderNo: 'SN20260603001',
|
||||
createDate: '2026-06-03 16:00',
|
||||
},
|
||||
{
|
||||
type: 1,
|
||||
amount: '+450.00',
|
||||
afterAmount: '1050.00',
|
||||
withdrawAmount: '850.00',
|
||||
freezeAmount: '200.00',
|
||||
status: 1,
|
||||
freezeTime: '2026-06-02 11:00',
|
||||
unfreezeTime: '2026-06-04 11:00',
|
||||
orderNo: 'SN20260602001',
|
||||
createDate: '2026-06-02 11:00',
|
||||
},
|
||||
{
|
||||
type: 3,
|
||||
amount: '-120.00',
|
||||
afterAmount: '600.00',
|
||||
withdrawAmount: '400.00',
|
||||
freezeAmount: '200.00',
|
||||
status: 3,
|
||||
freezeTime: '',
|
||||
unfreezeTime: '',
|
||||
orderNo: 'SN20260601001',
|
||||
createDate: '2026-06-01 15:00',
|
||||
},
|
||||
];
|
||||
|
||||
function inDateRange(date: string, begin?: string, end?: string): boolean {
|
||||
if (!begin && !end) return true;
|
||||
const d = date.slice(0, 10);
|
||||
if (begin && d < begin) return false;
|
||||
if (end && d > end) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
export function buildMockWalletTransactionPage(
|
||||
page: number,
|
||||
limit: number,
|
||||
params: WalletTransactionQueryParams,
|
||||
): PageData<WalletTransactionVO> {
|
||||
let filtered = [...MOCK_TRANSACTIONS];
|
||||
|
||||
if (params.type) {
|
||||
filtered = filtered.filter((item) => item.type === Number(params.type));
|
||||
}
|
||||
if (params.status) {
|
||||
filtered = filtered.filter((item) => item.status === Number(params.status));
|
||||
}
|
||||
filtered = filtered.filter((item) =>
|
||||
inDateRange(item.createDate, params.createDateBegin, params.createDateEnd),
|
||||
);
|
||||
|
||||
const total = filtered.length;
|
||||
const start = (page - 1) * limit;
|
||||
const list = filtered.slice(start, start + limit).map(({ status, ...rest }) => rest);
|
||||
|
||||
return { total, list };
|
||||
}
|
||||
@@ -0,0 +1,150 @@
|
||||
/**
|
||||
* 提现详情假数据
|
||||
* 对应接口:GET /admin/finance/withdraw/info?id=xxx
|
||||
*
|
||||
* 字段对齐 TournamentFinanceWithdrawInfoVO。
|
||||
*/
|
||||
import type { WithdrawInfoVO } from '@/api/withdraw';
|
||||
|
||||
/** 银行卡类型映射 */
|
||||
const BANK_CARD_TYPE_MAP: Record<number, string> = { 1: '个人' };
|
||||
|
||||
const MOCK_DETAILS: Record<number, WithdrawInfoVO> = {
|
||||
1: {
|
||||
nickname: '可乐',
|
||||
phone: '17762466262',
|
||||
realName: '可乐',
|
||||
createDate: '2026-07-30 09:53:00',
|
||||
withdrawType: '银行卡',
|
||||
withdrawAmount: '1000.00',
|
||||
feeRate: '0.006',
|
||||
feeAmount: '6.00',
|
||||
receivedAmount: '994.00',
|
||||
auditStatus: 0,
|
||||
payStatus: 0,
|
||||
bankCardType: 1,
|
||||
cardHolderName: '龚',
|
||||
bankCardNumber: '6215581807006475126',
|
||||
bankName: '交通银行',
|
||||
branchName: '交通银行宜昌西坝支行',
|
||||
payTime: '',
|
||||
orderNo: 'WD04111775872421935100',
|
||||
auditDate: '',
|
||||
auditNickname: '',
|
||||
auditImg: '',
|
||||
auditImgList: [],
|
||||
},
|
||||
2: {
|
||||
nickname: '李四',
|
||||
phone: '12345678998',
|
||||
realName: '李四',
|
||||
createDate: '2026-07-29 14:30:00',
|
||||
withdrawType: '银行卡',
|
||||
withdrawAmount: '200.00',
|
||||
feeRate: '0.006',
|
||||
feeAmount: '1.20',
|
||||
receivedAmount: '198.80',
|
||||
auditStatus: 1,
|
||||
payStatus: 1,
|
||||
bankCardType: 1,
|
||||
cardHolderName: '李四',
|
||||
bankCardNumber: '6222021234567890123',
|
||||
bankName: '工商银行',
|
||||
branchName: '工商银行北京中关村支行',
|
||||
payTime: '2026-07-29 14:35:00',
|
||||
orderNo: 'SN20260729001',
|
||||
auditDate: '2026-07-29 14:32:00',
|
||||
auditNickname: '管理员A',
|
||||
auditImg: '',
|
||||
auditImgList: [
|
||||
'https://via.placeholder.com/200x200?text=Audit1',
|
||||
'https://via.placeholder.com/200x200?text=Audit2',
|
||||
],
|
||||
},
|
||||
3: {
|
||||
nickname: '王五',
|
||||
phone: '13800138000',
|
||||
realName: '王五',
|
||||
createDate: '2026-07-28 11:15:00',
|
||||
withdrawType: '银行卡',
|
||||
withdrawAmount: '500.00',
|
||||
feeRate: '0.006',
|
||||
feeAmount: '3.00',
|
||||
receivedAmount: '497.00',
|
||||
auditStatus: 1,
|
||||
payStatus: 2,
|
||||
bankCardType: 1,
|
||||
cardHolderName: '王五',
|
||||
bankCardNumber: '微信钱包',
|
||||
bankName: '微信支付',
|
||||
branchName: '-',
|
||||
payTime: '',
|
||||
orderNo: 'SN20260728002',
|
||||
auditDate: '2026-07-28 11:20:00',
|
||||
auditNickname: '管理员B',
|
||||
auditImg: '',
|
||||
auditImgList: [],
|
||||
},
|
||||
4: {
|
||||
nickname: '赵六',
|
||||
phone: '13900139001',
|
||||
realName: '赵六',
|
||||
createDate: '2026-07-27 09:45:00',
|
||||
withdrawType: '银行卡',
|
||||
withdrawAmount: '80.00',
|
||||
feeRate: '0.006',
|
||||
feeAmount: '0.48',
|
||||
receivedAmount: '79.52',
|
||||
auditStatus: 2,
|
||||
payStatus: 0,
|
||||
bankCardType: 1,
|
||||
cardHolderName: '赵六',
|
||||
bankCardNumber: '6217858000123456789',
|
||||
bankName: '建设银行',
|
||||
branchName: '建设银行上海陆家嘴支行',
|
||||
payTime: '',
|
||||
orderNo: '',
|
||||
auditDate: '2026-07-27 10:00:00',
|
||||
auditNickname: '管理��A',
|
||||
auditImg: '',
|
||||
auditImgList: ['https://via.placeholder.com/200x200?text=Reject'],
|
||||
},
|
||||
5: {
|
||||
nickname: '孙七',
|
||||
phone: '18600186001',
|
||||
realName: '孙七',
|
||||
createDate: '2026-07-26 16:00:00',
|
||||
withdrawType: '银行卡',
|
||||
withdrawAmount: '3000.00',
|
||||
feeRate: '0.006',
|
||||
feeAmount: '18.00',
|
||||
receivedAmount: '2982.00',
|
||||
auditStatus: 0,
|
||||
payStatus: 0,
|
||||
bankCardType: 1,
|
||||
cardHolderName: '孙七',
|
||||
bankCardNumber: '6228480012345678910',
|
||||
bankName: '农业银行',
|
||||
branchName: '农业银行深圳福田支行',
|
||||
payTime: '',
|
||||
orderNo: 'WD05261775872421935200',
|
||||
auditDate: '',
|
||||
auditNickname: '',
|
||||
auditImg: '',
|
||||
auditImgList: [],
|
||||
},
|
||||
};
|
||||
|
||||
export function buildMockWithdrawInfo(id: number): WithdrawInfoVO {
|
||||
const detail = MOCK_DETAILS[id];
|
||||
if (detail) return { ...detail };
|
||||
|
||||
// 找不到对应 ID 时返回一个默认详情(基于 ID 4 的结构)
|
||||
return {
|
||||
...MOCK_DETAILS[4],
|
||||
nickname: `用户${id}`,
|
||||
phone: `1380000${String(id).padStart(4, '0')}`,
|
||||
realName: `用户${id}`,
|
||||
createDate: '2026-07-27 09:45:00',
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,194 @@
|
||||
/**
|
||||
* 提现列表假数据
|
||||
* 对应接口:GET /admin/finance/withdraw/page
|
||||
*
|
||||
* 前端筛选 + 分页,模拟后端行为。
|
||||
*/
|
||||
import type { WithdrawVO, WithdrawQueryParams, PageData } from '@/api/withdraw';
|
||||
|
||||
const MOCK_LIST: WithdrawVO[] = [
|
||||
{
|
||||
id: 1,
|
||||
nickname: '可乐',
|
||||
phone: '17762466262',
|
||||
realName: '可乐',
|
||||
withdrawType: '银行卡',
|
||||
withdrawAmount: '1000.00',
|
||||
receivedAmount: '994.00',
|
||||
auditStatus: 0,
|
||||
payStatus: 0,
|
||||
serialNumber: '',
|
||||
createDate: '2026-07-30 09:53:00',
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
nickname: '李四',
|
||||
phone: '12345678998',
|
||||
realName: '李四',
|
||||
withdrawType: '银行卡',
|
||||
withdrawAmount: '200.00',
|
||||
receivedAmount: '198.80',
|
||||
auditStatus: 1,
|
||||
payStatus: 1,
|
||||
serialNumber: 'SN20260729001',
|
||||
createDate: '2026-07-29 14:30:00',
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
nickname: '王五',
|
||||
phone: '13800138000',
|
||||
realName: '王五',
|
||||
withdrawType: '银行卡',
|
||||
withdrawAmount: '500.00',
|
||||
receivedAmount: '497.00',
|
||||
auditStatus: 1,
|
||||
payStatus: 2,
|
||||
serialNumber: 'SN20260728002',
|
||||
createDate: '2026-07-28 11:15:00',
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
nickname: '赵六',
|
||||
phone: '13900139001',
|
||||
realName: '赵六',
|
||||
withdrawType: '银行卡',
|
||||
withdrawAmount: '80.00',
|
||||
receivedAmount: '79.52',
|
||||
auditStatus: 2,
|
||||
payStatus: 0,
|
||||
serialNumber: '',
|
||||
createDate: '2026-07-27 09:45:00',
|
||||
},
|
||||
{
|
||||
id: 5,
|
||||
nickname: '孙七',
|
||||
phone: '18600186001',
|
||||
realName: '孙七',
|
||||
withdrawType: '银行卡',
|
||||
withdrawAmount: '3000.00',
|
||||
receivedAmount: '2982.00',
|
||||
auditStatus: 0,
|
||||
payStatus: 0,
|
||||
serialNumber: '',
|
||||
createDate: '2026-07-26 16:00:00',
|
||||
},
|
||||
{
|
||||
id: 6,
|
||||
nickname: '周八',
|
||||
phone: '15200152000',
|
||||
realName: '周八',
|
||||
withdrawType: '银行卡',
|
||||
withdrawAmount: '150.00',
|
||||
receivedAmount: '149.10',
|
||||
auditStatus: 1,
|
||||
payStatus: 1,
|
||||
serialNumber: 'SN20260725003',
|
||||
createDate: '2026-07-25 10:20:00',
|
||||
},
|
||||
{
|
||||
id: 7,
|
||||
nickname: '吴九',
|
||||
phone: '17000170001',
|
||||
realName: '吴九',
|
||||
withdrawType: '银行卡',
|
||||
withdrawAmount: '600.00',
|
||||
receivedAmount: '596.40',
|
||||
auditStatus: 2,
|
||||
payStatus: 0,
|
||||
serialNumber: '',
|
||||
createDate: '2026-07-24 08:30:00',
|
||||
},
|
||||
{
|
||||
id: 8,
|
||||
nickname: '郑十',
|
||||
phone: '18900189000',
|
||||
realName: '郑十',
|
||||
withdrawType: '银行卡',
|
||||
withdrawAmount: '2200.00',
|
||||
receivedAmount: '2186.80',
|
||||
auditStatus: 0,
|
||||
payStatus: 0,
|
||||
serialNumber: '',
|
||||
createDate: '2026-07-23 13:10:00',
|
||||
},
|
||||
{
|
||||
id: 9,
|
||||
nickname: '可乐',
|
||||
phone: '17762466262',
|
||||
realName: '可乐',
|
||||
withdrawType: '银行卡',
|
||||
withdrawAmount: '450.00',
|
||||
receivedAmount: '447.30',
|
||||
auditStatus: 1,
|
||||
payStatus: 2,
|
||||
serialNumber: 'SN20260722004',
|
||||
createDate: '2026-07-22 15:45:00',
|
||||
},
|
||||
{
|
||||
id: 10,
|
||||
nickname: '李四',
|
||||
phone: '12345678998',
|
||||
realName: '李四',
|
||||
withdrawType: '银行卡',
|
||||
withdrawAmount: '1800.00',
|
||||
receivedAmount: '1789.20',
|
||||
auditStatus: 0,
|
||||
payStatus: 0,
|
||||
serialNumber: '',
|
||||
createDate: '2026-07-21 09:00:00',
|
||||
},
|
||||
{
|
||||
id: 11,
|
||||
nickname: '王五',
|
||||
phone: '13800138000',
|
||||
realName: '王五',
|
||||
withdrawType: '银行卡',
|
||||
withdrawAmount: '320.00',
|
||||
receivedAmount: '318.08',
|
||||
auditStatus: 1,
|
||||
payStatus: 1,
|
||||
serialNumber: 'SN20260720005',
|
||||
createDate: '2026-07-20 17:30:00',
|
||||
},
|
||||
{
|
||||
id: 12,
|
||||
nickname: '孙七',
|
||||
phone: '18600186001',
|
||||
realName: '孙七',
|
||||
withdrawType: '银行卡',
|
||||
withdrawAmount: '750.00',
|
||||
receivedAmount: '745.50',
|
||||
auditStatus: 2,
|
||||
payStatus: 0,
|
||||
serialNumber: '',
|
||||
createDate: '2026-07-19 11:00:00',
|
||||
},
|
||||
];
|
||||
|
||||
export function buildMockWithdrawPage(
|
||||
page: number,
|
||||
limit: number,
|
||||
params: WithdrawQueryParams,
|
||||
): PageData<WithdrawVO> {
|
||||
let filtered = [...MOCK_LIST];
|
||||
|
||||
if (params.nickname) {
|
||||
filtered = filtered.filter((item) => item.nickname.includes(params.nickname!));
|
||||
}
|
||||
if (params.phone) {
|
||||
filtered = filtered.filter((item) => item.phone.includes(params.phone!));
|
||||
}
|
||||
if (params.realName) {
|
||||
filtered = filtered.filter((item) => item.realName.includes(params.realName!));
|
||||
}
|
||||
if (params.auditStatus) {
|
||||
filtered = filtered.filter((item) => item.auditStatus === Number(params.auditStatus));
|
||||
}
|
||||
if (params.payStatus) {
|
||||
filtered = filtered.filter((item) => item.payStatus === Number(params.payStatus));
|
||||
}
|
||||
|
||||
const total = filtered.length;
|
||||
const start = (page - 1) * limit;
|
||||
return { total, list: filtered.slice(start, start + limit) };
|
||||
}
|
||||
Reference in New Issue
Block a user