- feat: Create ASLLayout component with 7-module left navigation - feat: Implement Title Screening Settings page with optimized PICOS layout - feat: Add placeholder pages for Workbench and Results - fix: Fix nested routing structure for React Router v6 - fix: Resolve Spin component warning in MainLayout - fix: Add QueryClientProvider to App.tsx - style: Optimize PICOS form layout (P+I left, C+O+S right) - style: Align Inclusion/Exclusion criteria side-by-side - docs: Add architecture refactoring and routing fix reports Ref: Week 2 Frontend Development Scope: ASL module MVP - Title Abstract Screening
53 lines
1.1 KiB
TypeScript
53 lines
1.1 KiB
TypeScript
import { Result, Button } from 'antd'
|
||
import { useNavigate } from 'react-router-dom'
|
||
import { RocketOutlined } from '@ant-design/icons'
|
||
|
||
interface PlaceholderProps {
|
||
title?: string
|
||
description?: string
|
||
moduleName?: string
|
||
}
|
||
|
||
const Placeholder = ({
|
||
title = '功能开发中',
|
||
description = '该模块正在规划和开发中,敬请期待',
|
||
moduleName
|
||
}: PlaceholderProps) => {
|
||
const navigate = useNavigate()
|
||
|
||
return (
|
||
<div className="flex-1 flex items-center justify-center bg-gray-50">
|
||
<Result
|
||
icon={<RocketOutlined style={{ fontSize: 72, color: '#1890ff' }} />}
|
||
title={<span className="text-2xl">{title}</span>}
|
||
subTitle={
|
||
<div className="space-y-2">
|
||
<p className="text-gray-600">{description}</p>
|
||
{moduleName && (
|
||
<p className="text-sm text-gray-400">
|
||
模块名称:{moduleName}
|
||
</p>
|
||
)}
|
||
</div>
|
||
}
|
||
extra={
|
||
<Button type="primary" onClick={() => navigate('/')}>
|
||
返回首页
|
||
</Button>
|
||
}
|
||
/>
|
||
</div>
|
||
)
|
||
}
|
||
|
||
export default Placeholder
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|