# CreditTransactionsList

`CreditTransactionsList` 组件渲染了一个包含所有信用额度交易的详细分页表格，提供了信用额度使用和调整的清晰日志。它非常适合在客户门户或管理仪表板中使用，以跟踪信用额度的授予和消耗情况。

该组件会自动处理数据获取、分页和格式化，提供了一种显示交易历史的简单方法。

## 属性

| 属性 | 类型 | 描述 | 默认值 |
| --- | --- | --- | --- |
| `customer_id` | `string` | 要显示的交易记录所属客户的 ID。如果未提供，则默认为来自 `PaymentProvider` 上下文的当前登录用户的 DID。 | `session.user.did` |
| `subscription_id` | `string` | 将交易记录筛选到特定的订阅。 | `undefined` |
| `credit_grant_id` | `string` | 将交易记录筛选到特定的信用额度授予。 | `undefined` |
| `pageSize` | `number` | 每页显示的交易数量。 | `10` |
| `onTableDataChange` | `(data, prevData) => void` | 当表格数据被获取或更新时触发的回调函数。 | `() => {}` |
| `showAdminColumns` | `boolean` | 如果为 `true` 且用户是管理员，则会显示额外的列，例如 'Meter Event'。 | `false` |
| `showTimeFilter` | `boolean` | 如果为 `true`，则会显示一个日期范围选择器，以允许按日期筛选交易记录。 | `false` |
| `source` | `string` | 一个可选的源字符串，用于筛选交易记录。 | `''` |
| `mode` | `'dashboard' \| 'portal'` | 决定相关项目（如信用额度授予）的链接结构。对管理视图使用 `'dashboard'`，对面向客户的视图使用 `'portal'`。 | `'portal'` |

## 客户门户的基本用法

此示例展示了如何显示当前登录用户的信用额度交易历史。当 `customer_id` 被省略时，该组件会自动使用来自 `PaymentProvider` 上下文的用户的 DID。

```jsx MyCreditHistoryPage.tsx icon=logos:react
import React from 'react';
import { CreditTransactionsList, PaymentProvider } from '@blocklet/payment-react';
import { useSessionContext } from '../hooks/session-context'; // 你的会话上下文钩子

function MyCreditHistoryPage() {
  const { session, connectApi } = useSessionContext();

  if (!session || !connectApi) {
    return <div>正在加载会话...</div>;
  }

  return (
    <PaymentProvider session={session} connectApi={connectApi}>
      <h2>我的信用额度交易</h2>
      <CreditTransactionsList />
    </PaymentProvider>
  );
}

export default MyCreditHistoryPage;
```

## 带筛选功能的管理视图

对于管理仪表板，你可以传递一个特定的 `customer_id`，并启用管理列和时间筛选器，以提供用户交易历史的更强大和详细的视图。

```jsx CustomerDetailsPage.tsx icon=logos:react
import React from 'react';
import { CreditTransactionsList, PaymentProvider } from '@blocklet/payment-react';
import { useSessionContext } from '../hooks/session-context'; // 你的会话上下文钩子

function CustomerDetailsPage({ customerId }) {
  const { session, connectApi } = useSessionContext();

  if (!session || !connectApi) {
    return <div>正在加载会话...</div>;
  }

  return (
    <PaymentProvider session={session} connectApi={connectApi}>
      <h3>{customerId} 的交易历史</h3>
      <CreditTransactionsList
        customer_id={customerId}
        showAdminColumns={true}
        showTimeFilter={true}
        pageSize={20}
        mode="dashboard"
      />
    </PaymentProvider>
  );
}

export default CustomerDetailsPage;
```

## 显示特定信用额度授予的交易记录

要显示特定信用额度授予的消耗详情日志，请传递 `credit_grant_id`。这对于显示单个信用额度授予详情的页面非常有用。

```jsx CreditGrantDetailsPage.tsx icon=logos:react
import React from 'react';
import { CreditTransactionsList, PaymentProvider } from '@blocklet/payment-react';
import { useSessionContext } from '../hooks/session-context'; // 你的会话上下文钩子

function CreditGrantDetailsPage({ grantId }) {
  const { session, connectApi } = useSessionContext();

  if (!session || !connectApi) {
    return <div>正在加载会话...</div>;
  }

  return (
    <PaymentProvider session={session} connectApi={connectApi}>
      <h4>授权 {grantId} 的使用详情</h4>
      <CreditTransactionsList credit_grant_id={grantId} />
    </PaymentProvider>
  );
}

export default CreditGrantDetailsPage;
```