feat(web): 提取共享基础组件 — dayjs/format/EntityName/FilterBar/PageContainer/DrawerForm
- utils/dayjs.ts: 集中初始化 relativeTime 插件 + zh-cn locale - utils/format.ts: formatDate/formatDateTime/formatRelative/calcAge - components/EntityName.tsx: UUID→姓名兜底显示 - components/FilterBar.tsx: 统一筛选栏容器 - components/PageContainer.tsx: 统一页面容器(标题+筛选+表格+暗色模式) - components/DrawerForm.tsx: 抽屉式表单容器(分组+双列网格) - AlertList.tsx: 迁移到集中 dayjs 导入
This commit is contained in:
23
apps/web/src/components/EntityName.tsx
Normal file
23
apps/web/src/components/EntityName.tsx
Normal file
@@ -0,0 +1,23 @@
|
||||
import { Tooltip, Typography } from 'antd';
|
||||
|
||||
interface EntityNameProps {
|
||||
name?: string | null;
|
||||
id?: string;
|
||||
fallbackLabel?: string;
|
||||
}
|
||||
|
||||
export function EntityName({ name, id, fallbackLabel = '未知' }: EntityNameProps) {
|
||||
if (name) return <span>{name}</span>;
|
||||
|
||||
if (id) {
|
||||
return (
|
||||
<Tooltip title={`ID: ${id.slice(0, 8)}...`}>
|
||||
<Typography.Text type="secondary" style={{ cursor: 'help' }}>
|
||||
{fallbackLabel}
|
||||
</Typography.Text>
|
||||
</Tooltip>
|
||||
);
|
||||
}
|
||||
|
||||
return <Typography.Text type="secondary">{fallbackLabel}</Typography.Text>;
|
||||
}
|
||||
Reference in New Issue
Block a user