feat: Replace Card components with PageCard

This commit is contained in:
shiyu
2025-08-26 11:41:37 +08:00
parent dbd87a7c37
commit a998d08a4d
7 changed files with 38 additions and 31 deletions
+8
View File
@@ -0,0 +1,8 @@
import { Card, type CardProps } from 'antd';
import { memo } from 'react';
const PageCard = memo((props: CardProps) => {
return <Card styles={{ body: { overflowY: 'auto', height: 'calc(100vh - 145px)' } }} {...props} />;
});
export default PageCard;
+4 -4
View File
@@ -1,5 +1,6 @@
import { memo, useState, useEffect, useCallback } from 'react'; import { memo, useState, useEffect, useCallback } from 'react';
import { Table, Button, Space, Drawer, Form, Input, Switch, message, Typography, Popconfirm, Select, Card } from 'antd'; import { Table, Button, Space, Drawer, Form, Input, Switch, message, Typography, Popconfirm, Select } from 'antd';
import PageCard from '../components/PageCard';
import { adaptersApi } from '../api/client'; import { adaptersApi } from '../api/client';
interface AdapterItem { interface AdapterItem {
@@ -207,9 +208,8 @@ const AdaptersPage = memo(function AdaptersPage() {
} }
return ( return (
<Card <PageCard
title="存储适配器" title="存储适配器"
style={{ margin: 0 }}
extra={ extra={
<Space> <Space>
<Button onClick={fetchList} loading={loading}></Button> <Button onClick={fetchList} loading={loading}></Button>
@@ -274,7 +274,7 @@ const AdaptersPage = memo(function AdaptersPage() {
{renderConfigFields()} {renderConfigFields()}
</Form> </Form>
</Drawer> </Drawer>
</Card> </PageCard>
); );
}); });
+4 -4
View File
@@ -1,5 +1,6 @@
import { memo, useState, useEffect, useCallback } from 'react'; import { memo, useState, useEffect, useCallback } from 'react';
import { Table, Card, message, Tag, Input, Select, Button, Space, Modal, DatePicker } from 'antd'; import { Table, message, Tag, Input, Select, Button, Space, Modal, DatePicker } from 'antd';
import PageCard from '../components/PageCard';
import { logsApi, type LogItem, type PaginatedLogs } from '../api/logs'; import { logsApi, type LogItem, type PaginatedLogs } from '../api/logs';
import { format, formatISO } from 'date-fns'; import { format, formatISO } from 'date-fns';
@@ -87,9 +88,8 @@ const LogsPage = memo(function LogsPage() {
]; ];
return ( return (
<Card <PageCard
title="系统日志" title="系统日志"
style={{ margin: 0 }}
extra={ extra={
<Space> <Space>
<RangePicker <RangePicker
@@ -148,7 +148,7 @@ const LogsPage = memo(function LogsPage() {
</pre> </pre>
)} )}
</Modal> </Modal>
</Card> </PageCard>
); );
}); });
+4 -4
View File
@@ -1,5 +1,6 @@
import { memo, useState, useEffect, useCallback } from 'react'; import { memo, useState, useEffect, useCallback } from 'react';
import { Table, Button, Space, message, Popconfirm, Card, Tag, Tooltip } from 'antd'; import { Table, Button, Space, message, Popconfirm, Tag, Tooltip } from 'antd';
import PageCard from '../components/PageCard';
import { shareApi, type ShareInfo } from '../api/share'; import { shareApi, type ShareInfo } from '../api/share';
import { format, parseISO } from 'date-fns'; import { format, parseISO } from 'date-fns';
import { LinkOutlined, CopyOutlined, DeleteOutlined } from '@ant-design/icons'; import { LinkOutlined, CopyOutlined, DeleteOutlined } from '@ant-design/icons';
@@ -92,9 +93,8 @@ const SharePage = memo(function SharePage() {
]; ];
return ( return (
<Card <PageCard
title="我的分享" title="我的分享"
style={{ margin: 0 }}
extra={<Button onClick={fetchList} loading={loading}></Button>} extra={<Button onClick={fetchList} loading={loading}></Button>}
> >
<Table <Table
@@ -104,7 +104,7 @@ const SharePage = memo(function SharePage() {
loading={loading} loading={loading}
pagination={false} pagination={false}
/> />
</Card> </PageCard>
); );
}); });
@@ -1,5 +1,6 @@
import { memo, useState } from 'react'; import { memo, useState } from 'react';
import { Card, Button, Typography, Upload, message, Modal } from 'antd'; import { Button, Typography, Upload, message, Modal } from 'antd';
import PageCard from '../../components/PageCard';
import { UploadOutlined, DownloadOutlined } from '@ant-design/icons'; import { UploadOutlined, DownloadOutlined } from '@ant-design/icons';
import { backupApi } from '../../api/backup'; import { backupApi } from '../../api/backup';
@@ -49,13 +50,10 @@ const BackupPage = memo(function BackupPage() {
}; };
return ( return (
<Card> <PageCard title="备份和恢复">
<Title level={4}></Title>
<Paragraph>
</Paragraph>
<div style={{ display: 'flex', gap: '16px' }}> <div style={{ display: 'flex', gap: '16px' }}>
<Card title="导出" style={{ flex: 1 }}> <PageCard title="导出" style={{ flex: 1 }}>
<Paragraph> <Paragraph>
JSON JSON
<Text strong></Text> <Text strong></Text>
@@ -67,8 +65,8 @@ const BackupPage = memo(function BackupPage() {
> >
</Button> </Button>
</Card> </PageCard>
<Card title="恢复" style={{ flex: 1 }}> <PageCard title="恢复" style={{ flex: 1 }}>
<Paragraph> <Paragraph>
JSON文件恢复数据 JSON文件恢复数据
<Text strong type="danger"></Text> <Text strong type="danger"></Text>
@@ -81,9 +79,9 @@ const BackupPage = memo(function BackupPage() {
</Button> </Button>
</Upload> </Upload>
</Card> </PageCard>
</div> </div>
</Card> </PageCard>
); );
}); });
@@ -1,5 +1,6 @@
import { Card, Form, Input, Button, message, Tabs, Space } from 'antd'; import { Form, Input, Button, message, Tabs, Space } from 'antd';
import { useEffect, useState } from 'react'; import { useEffect, useState } from 'react';
import PageCard from '../../components/PageCard';
import { getAllConfig, setConfig } from '../../api/config'; import { getAllConfig, setConfig } from '../../api/config';
import { API_BASE_URL } from '../../api/client'; import { API_BASE_URL } from '../../api/client';
import { AppstoreOutlined, RobotOutlined } from '@ant-design/icons'; import { AppstoreOutlined, RobotOutlined } from '@ant-design/icons';
@@ -42,11 +43,11 @@ export default function SystemSettingsPage() {
// 加载中时不渲染表单 // 加载中时不渲染表单
if (!config) { if (!config) {
return <Card title='系统设置'><div>...</div></Card>; return <PageCard title='系统设置'><div>...</div></PageCard>;
} }
return ( return (
<Card <PageCard
title='系统设置' title='系统设置'
> >
<Space direction="vertical" style={{ width: '100%' }} size={32}> <Space direction="vertical" style={{ width: '100%' }} size={32}>
@@ -121,6 +122,6 @@ export default function SystemSettingsPage() {
]} ]}
/> />
</Space> </Space>
</Card> </PageCard>
); );
} }
+4 -4
View File
@@ -1,5 +1,6 @@
import { memo, useState, useEffect, useCallback } from 'react'; import { memo, useState, useEffect, useCallback } from 'react';
import { Table, Button, Space, Drawer, Form, Input, Switch, message, Typography, Popconfirm, Select, Card } from 'antd'; import { Table, Button, Space, Drawer, Form, Input, Switch, message, Typography, Popconfirm, Select } from 'antd';
import PageCard from '../components/PageCard';
import { tasksApi, type AutomationTask } from '../api/tasks'; import { tasksApi, type AutomationTask } from '../api/tasks';
import { processorsApi, type ProcessorTypeMeta } from '../api/processors'; import { processorsApi, type ProcessorTypeMeta } from '../api/processors';
import { ProcessorConfigForm } from '../components/ProcessorConfigForm'; import { ProcessorConfigForm } from '../components/ProcessorConfigForm';
@@ -109,9 +110,8 @@ const TasksPage = memo(function TasksPage() {
return ( return (
<Card <PageCard
title="自动化任务" title="自动化任务"
style={{ margin: 0 }}
extra={ extra={
<Space> <Space>
<Button onClick={fetchList} loading={loading}></Button> <Button onClick={fetchList} loading={loading}></Button>
@@ -174,7 +174,7 @@ const TasksPage = memo(function TasksPage() {
/> />
</Form> </Form>
</Drawer> </Drawer>
</Card> </PageCard>
); );
}); });