WardGuard 是一个综合管理系统,提供员工管理、药品物资管理、体检记录管理、权限控制等功能。系统采用现代化的前后端分离架构,具有良好的用户体验和强大的功能扩展性。
- 员工管理 - 员工信息录入、编辑、查询,支持批量导入导出
- 药品管理 - 药品库存管理、过期提醒、自动计算有效期
- 物资管理 - 消防物资管理、库存监控、过期预警
- 体检记录 - 员工体检数据管理、复查提醒、健康档案
- 用户权限管理 - 基于角色的权限控制(RBAC)
- 操作日志 - 完整的操作记录追踪
- 数据安全 - JWT 认证、密码加密、SQL 注入防护
- 邮件提醒系统 - 药品/物资过期自动邮件通知
- 定时任务 - 支持每日、每周、每月定时提醒
- SMTP 配置 - 灵活的邮件服务器配置
- 仪表盘 - 数据可视化展示
- 统计报表 - 多维度数据分析
- 导入导出 - Excel 格式数据处理
- React 18 - 现代化前端框架
- TypeScript - 类型安全的 JavaScript
- Ant Design - 企业级 UI 组件库
- React Router - 前端路由管理
- Axios - HTTP 请求库
- Node.js - JavaScript 运行时
- Express.js - Web 应用框架
- MySQL - 关系型数据库
- JWT - 身份认证
- bcrypt - 密码加密
- nodemailer - 邮件发送
- nodemon - 开发环境热重载
- cross-env - 跨平台环境变量
- dotenv - 环境配置管理
- Node.js 16.x 或更高版本
- MySQL 5.7 或更高版本
- npm 或 yarn 包管理器
-
克隆项目
git clone <repository-url> cd WardGuard
-
安装依赖
# 安装后端依赖 cd express npm install # 安装前端依赖 cd ../client npm install
-
数据库配置
# 创建数据库 mysql -u root -p CREATE DATABASE wardguard CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; # 导入数据库结构 cd express mysql -u root -p wardguard < migrations/database_init.sql
-
环境配置
# 编辑配置文件,修改数据库连接信息 # DB_HOST=localhost # DB_USER=your_username # DB_PASSWORD=your_password # DB_NAME=your_dbname
-
启动服务
# 启动后端服务(开发模式) cd express npm run dev # 启动前端服务(新终端窗口) cd client npm start
-
访问系统
- 前端地址:http://localhost:3001
- 后端地址:http://localhost:3000
- 默认管理员账号:admin / admin123
WardGuard/
├── client/ # 前端项目
│ ├── public/ # 静态资源
│ ├── src/
│ │ ├── components/ # 通用组件
│ │ ├── pages/ # 页面组件
│ │ ├── config/ # 配置文件
│ │ ├── hooks/ # 自定义 Hooks
│ │ ├── types/ # TypeScript 类型定义
│ │ └── utils/ # 工具函数
│ ├── package.json
│ └── tsconfig.json
├── express/ # 后端项目
│ ├── controllers/ # 控制器
│ ├── middleware/ # 中间件
│ ├── models/ # 数据模型
│ ├── routes/ # 路由定义
│ ├── services/ # 业务服务
│ ├── utils/ # 工具函数
│ ├── migrations/ # 数据库迁移
│ ├── .env.development # 开发环境配置
│ ├── .env.production # 生产环境配置
│ └── package.json
└── README.md # 项目说明文档
# 后端开发服务(支持热重载)
cd express
npm run dev
# 前端开发服务
cd client
npm start# 构建前端
cd client
npm run build
# 启动生产环境后端
cd express
npm run prod# Ubuntu/Debian
sudo apt update
sudo apt install nginx
# CentOS/RHEL
sudo yum install nginx
# 或者使用 dnf (较新版本)
sudo dnf install nginx创建配置文件 /etc/nginx/conf.d/wardguard.conf:
server {
listen 80;
server_name your-domain.com;
location / {
root /opt/WardGuard/client/build;
try_files $uri /index.html;
}
location /api {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}# 全局安装 PM2
npm install -g pm2
# 创建 PM2 配置文件 ecosystem.config.js, 并配置日志路径
cat > ecosystem.config.js << EOF
module.exports = {
apps: [{
name: 'wardguard-backend',
script: 'index.js',
cwd: '/opt/WardGuard/express',
instances: 'max',
exec_mode: 'cluster',
env: {
NODE_ENV: 'production',
PORT: 3000
},
error_file: '/opt/log/pm2/wardguard-error.log',
out_file: '/opt/log/pm2/wardguard-out.log',
log_file: '/opt/log/pm2/wardguard.log',
time: true
}]
};
EOF
# 启动应用
pm2 start ecosystem.config.js
# 保存 PM2 配置
pm2 save
# 设置开机自启
pm2 startup
### 数据库管理
```bash
# 运行数据库迁移
cd express
node migrations/run_migrations.js
# 数据库健康检查
node migrations/health_check.js
# 导出数据库结构
node migrations/export_db_structure.js- admin - 系统管理员,拥有所有权限
- user - 普通用户,根据分配的权限访问功能
- medicines - 药品管理权限
- employees - 员工管理权限
- supplies - 物资管理权限
- medical_examinations - 体检记录权限
- users - 用户管理权限(仅管理员)
- view - 查看权限
- create - 创建权限
- update - 编辑权限
- delete - 删除权限
- export - 导出权限
- import - 导入权限
- 进入系统 → 邮件提醒设置
- 配置 SMTP 服务器信息
- 设置提醒频率和时间
- 测试邮件发送功能
# 查看系统信息
node migrations/show_info.js
# 数据库诊断
node utils/dbDiagnostic.js
# 验证数据完整性
node migrations/validate_init_script.js-
数据库连接失败
- 检查数据库服务是否启动
- 验证 .env 文件中的数据库配置
- 确认数据库用户权限
-
前端无法访问后端
- 检查后端服务是否正常启动(端口 3000)
- 验证 CORS 配置
- 检查防火墙设置
-
邮件发送失败
- 验证 SMTP 配置信息
- 检查邮箱服务商的安全设置
- 确认网络连接正常
-
权限问题
- 检查用户角色设置
- 验证权限分配
- 清除浏览器缓存重新登录
如果这个项目对您有帮助,请给我们一个 ⭐️
