2026-07-31 17:25:42 +08:00
|
|
|
/**
|
|
|
|
|
* 支付流水假数据
|
|
|
|
|
* 对应接口:GET /admin/finance/paymentFlow/page
|
|
|
|
|
*/
|
2026-08-04 18:26:47 +08:00
|
|
|
import type { PaymentFlowVO, PaymentFlowQueryParams, PaymentFlowPageData } from '@/api/payments';
|
2026-07-31 17:25:42 +08:00
|
|
|
|
|
|
|
|
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,
|
2026-08-04 18:26:47 +08:00
|
|
|
): PaymentFlowPageData {
|
2026-07-31 17:25:42 +08:00
|
|
|
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),
|
|
|
|
|
);
|
|
|
|
|
|
2026-08-04 18:26:47 +08:00
|
|
|
let totalAmount = 0;
|
|
|
|
|
let totalRefundAmount = 0;
|
|
|
|
|
for (const item of filtered) {
|
|
|
|
|
const amt = Number(item.amount) || 0;
|
|
|
|
|
if (item.type === 1) totalAmount += amt;
|
|
|
|
|
else if (item.type === 2) totalRefundAmount += amt;
|
|
|
|
|
}
|
|
|
|
|
|
2026-07-31 17:25:42 +08:00
|
|
|
const total = filtered.length;
|
|
|
|
|
const start = (page - 1) * limit;
|
2026-08-04 18:26:47 +08:00
|
|
|
return {
|
|
|
|
|
total,
|
|
|
|
|
list: filtered.slice(start, start + limit),
|
|
|
|
|
exData: {
|
|
|
|
|
totalAmount: totalAmount.toFixed(2),
|
|
|
|
|
totalRefundAmount: totalRefundAmount.toFixed(2),
|
|
|
|
|
},
|
|
|
|
|
};
|
2026-07-31 17:25:42 +08:00
|
|
|
}
|