# 在项目根目录
npm install
编辑 .env 文件,设置MySQL密码:
DB_PASSWORD=你的MySQL密码
npm run init-db
npm run dev
后端运行在:http://localhost:3000
打开新的终端窗口:
cd client
npm install
npm run dev
前端运行在:http://localhost:3001
默认账号:
admin / admin123sales001 / 123456sales002 / 123456manager001 / 123456# 登录获取 Token
curl -X POST http://localhost:3000/api/auth/login \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"admin123"}'
customer-crm/
├── 📁 后端 (根目录)
│ ├── src/
│ │ ├── controllers/ # 业务逻辑
│ │ ├── middleware/ # 中间件
│ │ ├── routes/ # 路由
│ │ ├── config/ # 配置
│ │ └── utils/ # 工具
│ ├── scripts/ # 数据库脚本
│ └── public/ # 静态文件
│
└── 📁 前端 (client/)
├── src/
│ ├── pages/ # 页面组件
│ ├── components/ # 公共组件
│ └── utils/ # 工具函数
└── package.json
| 模块 | 功能 |
|---|---|
| 🔐 用户认证 | 登录、JWT、权限控制 |
| 📊 工作台 | 数据统计、到期提醒 |
| 👥 客户管理 | 列表、报备、查重、详情、跟进 |
| 🏊 公海池 | 客户领取、释放、筛选 |
| ✅ 审批流程 | 延期申请、协同跟进、审批处理 |
| 📈 统计报表 | 团队统计、来源分析、可视化 |
| ⏰ 自动任务 | 保护期检查、到期提醒 |
npm run dev # 开发模式(热重载)
npm start # 生产模式
npm run init-db # 初始化数据库
npm run test-data # 创建测试数据
npm run clean-db # 清空数据库
cd client
npm run dev # 开发模式
npm run build # 构建生产版本
npm run preview # 预览构建结果
npm run test-data
这将创建:
使用以下账号登录前端界面:
sales001 / 123456manager001 / 123456报备客户
查看客户列表
公海池
审批流程
统计报表(经理账号)
| 功能 | 销售 | 经理 | 总监 | 管理员 |
|---|---|---|---|---|
| 报备客户 | ✅ | ✅ | ✅ | ✅ |
| 查看自己客户 | ✅ | ✅ | ✅ | ✅ |
| 查看团队客户 | ❌ | ✅ | ✅ | ✅ |
| 领取公海客户 | ✅ | ✅ | ✅ | ✅ |
| 提交审批 | ✅ | ✅ | ✅ | ✅ |
| 审批处理 | ❌ | ✅ | ✅ | ✅ |
| 团队统计 | ❌ | ✅ | ✅ | ✅ |
| 用户管理 | ❌ | ❌ | ❌ | ✅ |
问题1:数据库连接失败
解决:检查 .env 中的数据库配置
确保 MySQL 服务已启动
问题2:端口被占用
# 查找占用端口的进程
lsof -i :3000
# 杀死进程
kill -9 PID
问题1:依赖安装失败
# 清理缓存重新安装
cd client
rm -rf node_modules package-lock.json
npm install
问题2:API 请求失败
解决:确保后端服务在 http://localhost:3000 运行
检查浏览器控制台 Network 标签
Token 过期
解决:清除浏览器 localStorage
或重新登录
| 服务 | 端口 | 用途 |
|---|---|---|
| 后端 API | 3000 | 提供 RESTful API |
| 前端界面 | 3001 | React 开发服务器 |
生产环境部署前,请修改:
JWT Secret
JWT_SECRET=修改为强随机字符串
数据库密码
DB_PASSWORD=使用强密码
管理员密码
# 首次登录后立即修改
# 使用 PM2
pm2 start src/server.js --name customer-crm
pm2 save
pm2 startup
# 构建
cd client
npm run build
# 构建产物在 ../public/admin
# 配置 Nginx 指向该目录
server {
listen 80;
server_name your-domain.com;
# 前端静态文件
location /admin {
root /path/to/public;
try_files $uri $uri/ /admin/index.html;
}
# API 代理
location /api {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
现在您可以:
admin / admin123 登录有问题随时查看文档或提交 Issue。
祝您使用愉快! 🎊