Skip to content

Cen-Yaozu/contact-management-system

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

联系人管理系统

一个基于 Flask + Vue 3 的全栈联系人管理系统,支持联系人的增删改查、分组管理、导入导出和统计分析等功能。

技术栈

后端

  • Flask 3.0+
  • MySQL 8.0+
  • Flask-JWT-Extended (JWT 认证)
  • Flask-CORS (跨域支持)
  • Marshmallow (序列化)
  • SQLAlchemy (ORM)

前端

  • Vue 3 (Composition API)
  • Vite 5
  • Vue Router 4
  • Pinia (状态管理)
  • Ant Design Vue 4
  • Axios (HTTP 客户端)
  • Day.js (日期处理)

功能特性

已实现功能

✅ 用户认证 (US1)

  • 用户注册
  • 用户登录
  • JWT Token 认证
  • 自动登录状态保持

✅ 联系人管理 (US2-4)

  • 查看联系人列表(卡片视图)
  • 添加新联系人
  • 编辑联系人信息
  • 删除联系人(带确认)
  • 支持字段:姓名、电话、邮箱、地址、地区、生日、分组

✅ 搜索与筛选 (US5)

  • 实时搜索(姓名/电话/邮箱)
  • 按分组筛选
  • 搜索防抖优化
  • 清除筛选条件

✅ 分组管理 (US6)

  • 创建/编辑/删除分组
  • 查看分组下的联系人数量
  • 删除前依赖检查(有联系人的分组不可删除)
  • 为联系人分配分组

✅ 导入导出 (US7)

  • 导出联系人为 CSV 文件
  • 从 CSV 文件批量导入联系人
  • 导入结果反馈(成功/失败数量和错误详情)

✅ 统计分析 (US8)

  • 联系人总数
  • 分组数量
  • 本周/本月新增统计
  • 按分组分布展示
  • 按地区分布展示

✅ 系统管理 (Feature 002) - 仅管理员可访问

  • 操作日志: 查看所有用户操作记录,支持按类型、用户名筛选
    • 记录的操作类型: 用户注册、用户登录、联系人增删改、分组增删改、数据备份/恢复
  • 数据备份: 导出整个数据库为 JSON 格式 (用户、联系人、分组、日志、系统设置)
  • 数据恢复: 从备份文件恢复数据(支持合并/覆盖模式)
  • 系统设置: 配置系统名称、分页大小、日志保留天数等参数

项目结构

通讯管理系统/
├── backend/                 # 后端 Flask 应用
│   ├── app/
│   │   ├── modules/        # 业务模块
│   │   │   ├── auth/       # 认证模块
│   │   │   ├── contacts/   # 联系人模块
│   │   │   ├── groups/     # 分组模块
│   │   │   ├── stats/      # 统计模块
│   │   │   ├── logs/       # 操作日志模块
│   │   │   └── system/     # 系统管理模块
│   │   ├── extensions.py   # Flask 扩展配置
│   │   └── __init__.py     # 应用工厂
│   ├── config.py           # 配置文件
│   ├── requirements.txt    # Python 依赖
│   └── run.py             # 启动文件
│
├── frontend/               # 前端 Vue 应用
│   ├── public/
│   │   ├── logo.svg       # 系统 Logo
│   │   └── favicon.svg    # 浏览器图标
│   ├── src/
│   │   ├── components/    # 组件
│   │   ├── pages/         # 页面 (含 system/ 子目录)
│   │   ├── services/      # API 服务
│   │   ├── stores/        # Pinia 状态
│   │   ├── router/        # 路由配置
│   │   ├── utils/         # 工具函数
│   │   ├── App.vue        # 根组件
│   │   └── main.js        # 入口文件
│   ├── package.json       # 依赖配置
│   └── vite.config.js     # Vite 配置
│
├── docs/                  # 文档目录
└── README.md             # 项目说明

快速开始

环境要求

  • Node.js >= 18.0
  • Python >= 3.10
  • MySQL >= 8.0

后端启动

  1. 创建并激活虚拟环境:
cd backend
python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate
  1. 安装依赖:
pip install -r requirements.txt
  1. 配置数据库:

    • 创建 MySQL 数据库: CREATE DATABASE contact_management;
    • 修改 config.py 中的数据库连接配置
  2. 初始化数据库:

flask db init
flask db migrate -m "Initial migration"
flask db upgrade
  1. 启动后端服务:
python run.py

后端将运行在 http://localhost:5000

前端启动

  1. 安装依赖:
cd frontend
npm install
  1. 配置环境变量:

    • 复制 .env.example.env
    • 确认 API 地址配置: VITE_API_BASE_URL=http://localhost:5000/api
  2. 启动开发服务器:

npm run dev

前端将运行在 http://localhost:3000

API 文档

认证接口

方法 路径 说明
POST /api/auth/register 用户注册
POST /api/auth/login 用户登录

联系人接口

方法 路径 说明
GET /api/contacts/ 获取联系人列表
POST /api/contacts/ 创建联系人
GET /api/contacts/:id 获取单个联系人
PUT /api/contacts/:id 更新联系人
DELETE /api/contacts/:id 删除联系人
GET /api/contacts/export 导出联系人为CSV
POST /api/contacts/import 从CSV导入联系人

分组接口

方法 路径 说明
GET /api/groups/ 获取分组列表
POST /api/groups/ 创建分组
PUT /api/groups/:id 更新分组
DELETE /api/groups/:id 删除分组

统计接口

方法 路径 说明
GET /api/stats/ 获取统计数据

系统管理接口 (仅管理员)

方法 路径 说明
GET /api/logs/ 获取操作日志列表
GET /api/system/settings 获取系统设置
PUT /api/system/settings 更新系统设置
POST /api/system/backup 执行数据备份
POST /api/system/restore 执行数据恢复

使用说明

第一次使用

  1. 访问 http://localhost:3000
  2. 点击"注册账号"
  3. 填写用户名和密码完成注册
  4. 使用注册的账号登录系统

管理联系人

  1. 登录后进入"联系人列表"页面
  2. 点击"添加联系人"按钮创建新联系人
  3. 填写联系人信息(姓名为必填项)
  4. 在联系人卡片上可以进行编辑或删除操作

使用分组

  1. 点击侧边栏"分组管理"
  2. 点击"添加分组"创建新分组
  3. 在添加/编辑联系人时,可以选择分组
  4. 在联系人列表页可以按分组筛选

导入导出

  1. 在联系人列表页点击"导出联系人"下载 CSV 文件
  2. 点击"导入联系人"选择 CSV 文件批量导入
  3. 导入时会显示成功和失败的数量

查看统计

  1. 点击侧边栏"统计"
  2. 查看联系人总数、分组分布、地区分布等信息

系统管理 (管理员功能)

操作日志

  1. 使用管理员账号登录
  2. 点击侧边栏"操作日志"
  3. 查看所有用户的操作记录
  4. 可按操作类型、用户名筛选

数据备份与恢复

  1. 点击侧边栏"数据备份"
  2. 选择备份格式(目前支持 JSON)
  3. 点击"立即备份"下载备份文件
  4. 恢复时选择备份文件和恢复模式:
    • 合并模式: 仅添加新数据,保留现有数据
    • 覆盖模式: 清空数据库后完全恢复备份

系统设置

  1. 点击侧边栏"系统设置"
  2. 修改系统名称、分页大小、日志保留天数
  3. 点击"保存设置"应用更改

开发说明

代码规范

  • 前端使用 ESLint + Prettier 进行代码格式化
  • 后端遵循 PEP 8 Python 代码规范
  • 组件命名使用 PascalCase
  • 变量命名使用 camelCase

测试

前端测试:

cd frontend
npm run test

后端测试:

cd backend
pytest

构建部署

前端构建:

cd frontend
npm run build

构建产物将生成在 frontend/dist 目录。

常见问题

Q: 前端无法连接后端 API?

A: 确认后端服务已启动,检查 frontend/.env 中的 API 地址配置是否正确。

Q: 导入 CSV 失败?

A: 确保 CSV 文件格式正确,必须包含"姓名"列,编码为 UTF-8。

Q: 登录后刷新页面需要重新登录?

A: 检查浏览器是否禁用了 LocalStorage,或清除浏览器缓存后重试。

技术支持

如有问题,请提交 Issue 或联系开发团队。

开源协议

MIT License

About

通讯管理系统 - 基于 Flask + Vue 3 的全栈联系人管理系统

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors