import React, { useEffect, useMemo, useState } from 'react'; import { Card, Table, Typography, Form, Input, DatePicker, Button, Space, Select } from 'antd'; import type { ColumnsType } from 'antd/es/table'; import { FinanceApiService } from '../services/api'; const FinanceTransactionLogs: React.FC = () => { const [data, setData] = useState([]); const [total, setTotal] = useState(0); const [page, setPage] = useState(1); const [size, setSize] = useState(20); const [loading, setLoading] = useState(false); const [form] = Form.useForm(); const buildParams = (p = page, s = size) => { const vals = form.getFieldsValue(); const range = vals.range as any[] | undefined; const start = range?.[0]?.format?.('YYYY-MM-DD') || undefined; const end = range?.[1]?.format?.('YYYY-MM-DD') || undefined; return { page: p, size: s, user_id: vals.user_id, order_id: vals.order_id, type: vals.type, status: vals.status, start, end, } as any; }; const fetchList = async (p = page, s = size) => { setLoading(true); try { const res = await FinanceApiService.listTransactionLogs(buildParams(p, s)); setData(res?.data || res?.list || []); setTotal(res?.total || 0); } finally { setLoading(false); } }; useEffect(() => { fetchList(); }, []); const columns: ColumnsType = useMemo(() => ([ { title: '流水ID', dataIndex: 'transaction_id', key: 'transaction_id' }, { title: '用户id', dataIndex: 'user_id', key: 'user_id' }, { title: '订单id', dataIndex: 'order_id', key: 'order_id' }, { title: '流水类型', dataIndex: 'type', key: 'type' }, { title: '金额(最小单位)', dataIndex: 'amount', key: 'amount' }, { title: '货币', dataIndex: 'currency', key: 'currency' }, { title: '操作前余额', dataIndex: 'balance_before', key: 'balance_before' }, { title: '操作后余额', dataIndex: 'balance_after', key: 'balance_after' }, { title: '状态', dataIndex: 'status', key: 'status' }, { title: '描述', dataIndex: 'description', key: 'description' }, { title: 'PayPal交易ID', dataIndex: 'paypal_transaction_id', key: 'paypal_transaction_id' }, { title: '创建时间', dataIndex: 'created_at', key: 'created_at' }, ]), []); return ( 用户流水}>
fetchList(1, size)} style={{ marginBottom: 20 }} >
{/* 第一行:用户ID、订单编号、流水类型、状态、时间范围 */}
{/* 第二行:时间范围和按钮 */}
r.id || r.transaction_id} columns={columns} dataSource={data} loading={loading} pagination={{ current: page, pageSize: size, total, onChange: (p, s) => { setPage(p); setSize(s); fetchList(p, s); } }} scroll={{ x: 1200 }} /> ); }; export default FinanceTransactionLogs;