67 lines
2.0 KiB
TypeScript
67 lines
2.0 KiB
TypeScript
import { getAssets } from '@/actions/asset';
|
||
import { AddAssetDialog } from '@/components/assets/add-asset-dialog';
|
||
import {
|
||
Table,
|
||
TableBody,
|
||
TableCaption,
|
||
TableCell,
|
||
TableHead,
|
||
TableHeader,
|
||
TableRow,
|
||
} from '@/components/ui/table';
|
||
|
||
export default async function AssetsPage() {
|
||
const assets = await getAssets();
|
||
|
||
const typeLabels: Record<string, string> = {
|
||
STOCK: '股票',
|
||
CRYPTO: '加密货币',
|
||
CASH: '现金',
|
||
};
|
||
|
||
return (
|
||
<div className="space-y-6">
|
||
<div className="flex items-center justify-between">
|
||
<h1 className="text-2xl font-bold">资产列表</h1>
|
||
<AddAssetDialog />
|
||
</div>
|
||
|
||
<div className="rounded-md border">
|
||
<Table>
|
||
<TableCaption>数据库中所有已录入的资产</TableCaption>
|
||
<TableHeader>
|
||
<TableRow>
|
||
<TableHead>资产代码</TableHead>
|
||
<TableHead>类型</TableHead>
|
||
<TableHead>基础币种</TableHead>
|
||
<TableHead>创建时间</TableHead>
|
||
</TableRow>
|
||
</TableHeader>
|
||
<TableBody>
|
||
{assets.length === 0 ? (
|
||
<TableRow>
|
||
<TableCell colSpan={4} className="text-center text-muted-foreground">
|
||
暂无资产,点击"添加资产"按钮录入第一个资产
|
||
</TableCell>
|
||
</TableRow>
|
||
) : (
|
||
assets.map((asset) => (
|
||
<TableRow key={asset.id}>
|
||
<TableCell className="font-medium">{asset.symbol}</TableCell>
|
||
<TableCell>{typeLabels[asset.type] || asset.type}</TableCell>
|
||
<TableCell>{asset.baseCurrency}</TableCell>
|
||
<TableCell>
|
||
{asset.createdAt
|
||
? new Date(asset.createdAt).toLocaleString('zh-CN')
|
||
: '-'}
|
||
</TableCell>
|
||
</TableRow>
|
||
))
|
||
)}
|
||
</TableBody>
|
||
</Table>
|
||
</div>
|
||
</div>
|
||
);
|
||
}
|