@blocklet/payment-react
Version:
Reusable react components for payment kit v2
106 lines (81 loc) • 4.43 kB
Markdown
# 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;
```