# 增强版首页实施计划
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
**目标:** 扩展首页快捷按钮从3个到6个,添加统计数据预留区域,优化响应式布局
**架构:** 在现有首页基础上扩展,复用 QuickActionCard 组件,新增 QuickActionsGrid 和 StatisticsPlaceholder 组件,使用 CSS Grid 实现响应式布局
**技术栈:** React 18, TypeScript, Ant Design 5.x, UmiJS 4.x, @ant-design/icons
---
## 文件结构
```
src/
├── pages/
│ ├── index.tsx [修改] 增强版首页主组件
│ └── components/
│ ├── QuickActionCard.tsx [保留] 快捷卡片组件(已存在)
│ ├── QuickActionsGrid.tsx [新建] 6按钮网格布局组件
│ └── StatisticsPlaceholder.tsx [新建] 统计数据预留区域组件
└── common/
└── components/
└── layout/
├── QuickActionIcons.tsx [保留] Header快捷图标(保持不变)
└── CustomHeader.tsx [保留] Header组件(保持不变)
```
---
## Task 1: 创建 StatisticsPlaceholder 组件
**Files:**
- Create: `src/pages/components/StatisticsPlaceholder.tsx`
**职责:** 统计数据预留区域组件,当前显示空白,为未来扩展预留空间
- [ ] **Step 1: 创建组件文件**
```bash
touch src/pages/components/StatisticsPlaceholder.tsx
```
- [ ] **Step 2: 实现组件**
```tsx
import React from 'react';
const StatisticsPlaceholder: React.FC = () => {
return (
{/* 未来扩展:统计数据卡片、图表、报表等 */}
{/* 当前阶段:完全空白,便于未来扩展 */}
);
};
export default StatisticsPlaceholder;
```
- [ ] **Step 3: 提交组件**
```bash
git add src/pages/components/StatisticsPlaceholder.tsx
git commit -m "feat: create StatisticsPlaceholder component
Add placeholder component for future statistics area with 60vh height."
```
---
## Task 2: 创建 QuickActionsGrid 组件
**Files:**
- Create: `src/pages/components/QuickActionsGrid.tsx`
**职责:** 6个快捷按钮的网格布局组件,使用 CSS Grid 实现响应式布局
- [ ] **Step 1: 创建组件文件**
```bash
touch src/pages/components/QuickActionsGrid.tsx
```
- [ ] **Step 2: 实现组件**
```tsx
import React from 'react';
import {
BuildOutlined,
ImportOutlined,
TeamOutlined,
BuildColumnsOutlined,
DollarOutlined,
AuditOutlined,
} from '@ant-design/icons';
import QuickActionCard from './QuickActionCard';
const QuickActionsGrid: React.FC = () => {
const quickActions = [
{
icon: ,
title: '添加机构',
description: '快速创建新的机构',
themeColor: '#1890ff',
path: '/company/list',
},
{
icon: ,
title: '导入项目',
description: '批量导入项目数据',
themeColor: '#52c41a',
path: '/asset/list',
},
{
icon: ,
title: '导入员工',
description: '批量导入员工数据',
themeColor: '#fa8c16',
path: '/company/employees',
},
{
icon: ,
title: '导入楼栋',
description: '批量导入楼栋数据',
themeColor: '#722ed1',
path: '/asset/houses',
},
{
icon: ,
title: '创建收费标准',
description: '创建费用收费标准',
themeColor: '#13c2c2',
path: '/charge/standard',
},
{
icon: ,
title: '登记审核',
description: '审核登记申请',
themeColor: '#f5222d',
path: '/examine/house_registers_audit',
},
];
return (
{quickActions.map((action) => (
))}
);
};
export default QuickActionsGrid;
```
- [ ] **Step 3: 添加响应式样式**
在文件末尾添加响应式样式:
```tsx
export default QuickActionsGrid;
// 添加响应式样式到全局 CSS 或使用 style 标签
const style = document.createElement('style');
style.innerHTML = `
@media (max-width: 1200px) {
.quick-actions-grid {
grid-template-columns: repeat(3, 1fr) !important;
gap: 20px !important;
}
}
@media (max-width: 768px) {
.quick-actions-grid {
grid-template-columns: repeat(2, 1fr) !important;
gap: 12px !important;
}
}
`;
document.head.appendChild(style);
```
或者更好的方式,使用内联 style 标签在组件中:
```tsx
return (
<>
{quickActions.map((action) => (
))}
>
);
```
- [ ] **Step 4: 提交组件**
```bash
git add src/pages/components/QuickActionsGrid.tsx
git commit -m "feat: create QuickActionsGrid component with 6 action buttons
Add responsive grid layout for 6 quick action buttons with breakpoints for desktop (6), tablet (3x2), and mobile (2x3)."
```
---
## Task 3: 修改首页主组件 index.tsx
**Files:**
- Modify: `src/pages/index.tsx`
**职责:** 重新设计首页结构,使用新组件,添加统计数据预留区域
- [ ] **Step 1: 备份当前文件**
```bash
cp src/pages/index.tsx src/pages/index.tsx.backup
```
- [ ] **Step 2: 完全替换首页内容**
```tsx
import { useMyState } from '@/common';
import QuickActionsGrid from './components/QuickActionsGrid';
import StatisticsPlaceholder from './components/StatisticsPlaceholder';
export default function Index() {
const { snap } = useMyState();
const username = snap.session?.user?.username || '用户';
return (
{/* 欢迎语区域 */}
欢迎回来,{username}!
这里是您的快捷工作台,点击下方卡片快速开始常用操作
{/* 快捷操作区域 */}
{/* 统计数据预留区域 */}
);
}
```
- [ ] **Step 3: 删除旧的响应式样式**
如果之前的代码中有 `