# 客户报备管理系统 - 前端界面
基于 React + Ant Design 5 的现代化管理界面。
## 🎨 功能特性
### ✅ 已实现功能
- **用户认证**
- 登录/登出
- Token 管理
- 权限控制
- **工作台**
- 数据统计卡片
- 即将到期客户提醒
- 个人业绩展示
- **客户管理**
- 客户列表(搜索、筛选、分页)
- 报备客户(实时查重)
- 客户详情
- 跟进记录
- 状态更新
- **公海池管理**
- 公海池客户列表
- 领取客户
- 多维度筛选
- **审批流程**
- 我的申请列表
- 创建审批申请
- 待审批列表(经理)
- 审批处理
- **统计报表**
- 团队统计(趋势图表)
- 成员业绩排名
- 客户来源分析
- 可视化图表
## 🚀 快速开始
### 1. 安装依赖
```bash
cd client
npm install
```
### 2. 启动开发服务器
```bash
npm run dev
```
前端服务将运行在:http://localhost:3001
### 3. 构建生产版本
```bash
npm run build
```
构建文件将输出到 `../public/admin` 目录。
## 📁 项目结构
```
client/
├── src/
│ ├── components/ # 公共组件
│ │ └── Layout/ # 布局组件
│ ├── pages/ # 页面组件
│ │ ├── Login/ # 登录页
│ │ ├── Dashboard/ # 工作台
│ │ ├── Customer/ # 客户管理
│ │ ├── Pool/ # 公海池
│ │ ├── Approval/ # 审批管理
│ │ └── Stats/ # 统计报表
│ ├── utils/ # 工具函数
│ │ ├── request.js # axios 封装
│ │ └── constants.js # 常量定义
│ ├── App.jsx # 根组件
│ ├── main.jsx # 入口文件
│ └── index.css # 全局样式
├── index.html # HTML 模板
├── vite.config.js # Vite 配置
└── package.json # 依赖配置
```
## 🎯 页面路由
| 路径 | 页面 | 权限 |
|------|------|------|
| `/login` | 登录页 | 公开 |
| `/` | 工作台 | 全部 |
| `/customers` | 客户列表 | 全部 |
| `/customers/create` | 报备客户 | 全部 |
| `/customers/:id` | 客户详情 | 全部 |
| `/pool` | 公海池 | 全部 |
| `/my-approvals` | 我的申请 | 全部 |
| `/approvals` | 待审批 | 经理+ |
| `/stats/team` | 团队统计 | 经理+ |
| `/stats/source` | 来源分析 | 经理+ |
## 🛠️ 技术栈
- **框架**: React 18
- **UI 库**: Ant Design 5
- **路由**: React Router 6
- **HTTP 客户端**: Axios
- **图表**: Recharts
- **构建工具**: Vite
- **日期处理**: Day.js
## 🎨 主要组件
### 1. Layout 布局
- 顶部导航栏
- 侧边菜单
- 内容区域
- 用户信息展示
### 2. 客户列表
- 表格展示
- 搜索和筛选
- 分页
- 状态标签
### 3. 客户报备
- 表单验证
- 实时查重
- 冲突提示
- 自动提交
### 4. 客户详情
- 基本信息
- 跟进记录时间线
- 快速操作
- 状态更新
### 5. 统计图表
- 折线图(趋势分析)
- 饼图(来源分布)
- 数据表格
- 日期筛选
## 📝 开发说明
### 添加新页面
1. 在 `src/pages/` 下创建页面组件
2. 在 `src/App.jsx` 中添加路由
3. 在 `src/components/Layout/` 中添加菜单项
### API 请求
使用封装好的 `request` 工具:
```javascript
import request from '@/utils/request'
// GET 请求
const data = await request.get('/api/customers')
// POST 请求
await request.post('/api/customers', { name: 'xxx' })
// 带参数
await request.get('/api/customers', { params: { page: 1 } })
```
### 常量使用
```javascript
import { CUSTOMER_STATUS, USER_ROLES } from '@/utils/constants'
// 渲染状态标签
{CUSTOMER_STATUS[status]?.text}
```
## 🎯 开发规范
1. **组件命名**: 使用 PascalCase
2. **文件命名**: 组件用 PascalCase,工具用 camelCase
3. **样式**: 优先使用 Ant Design 主题,必要时使用 CSS Modules
4. **状态管理**: 使用 React Hooks (useState, useEffect)
5. **错误处理**: 统一在 request.js 中处理
6. **代码格式**: 建议使用 ESLint + Prettier
## 🔌 API 代理配置
开发环境下,Vite 会自动代理 API 请求:
```javascript
// vite.config.js
proxy: {
'/api': {
target: 'http://localhost:3000',
changeOrigin: true
}
}
```
## 🎨 自定义主题
修改 `src/main.jsx` 中的 ConfigProvider:
```javascript
```
## 📱 响应式设计
所有页面已适配移动端:
- 使用 Ant Design 的 Grid 系统
- 表格支持横向滚动
- 弹窗自适应宽度
## ⚡ 性能优化
- 路由懒加载
- 图片懒加载
- 分页加载数据
- 防抖/节流搜索
- 组件 memo 优化
## 🐛 常见问题
### Q1: 页面空白
**A**: 检查后端服务是否启动,查看浏览器控制台错误。
### Q2: API 请求失败
**A**: 确认后端运行在 `http://localhost:3000`,检查代理配置。
### Q3: 登录后刷新页面返回登录页
**A**: 检查 localStorage 中的 token 是否存在,可能是 token 过期。
### Q4: 样式不生效
**A**: 清除缓存重新启动开发服务器:`npm run dev`
## 🚀 部署
### 开发环境
```bash
npm run dev
```
### 生产环境
```bash
# 构建
npm run build
# 构建产物在 ../public/admin 目录
# 直接访问后端服务器的 /admin 路径即可
```
### Nginx 配置示例
```nginx
location /admin {
root /path/to/public;
try_files $uri $uri/ /admin/index.html;
}
```
## 📞 技术支持
遇到问题请查看:
1. 浏览器控制台
2. 网络请求(Network)
3. 后端日志
---
**祝开发愉快!** 🎉