一个功能完善的家庭药品库存管理系统,提供药品信息管理、过期预警、用药记录等功能。
本项目是一个家庭药品库存预警系统,帮助用户管理家庭药品,及时发现即将过期或已过期的药品,避免药品浪费和安全隐患。
- 用户注册与登录
- 账号安全(登录失败锁定)
- 个人信息管理
- 药品信息的增删改查
- 药品照片上传
- 药品导入/导出(Excel)
- 药品库存管理
- 药品存放位置记录
- 药品过期自动检查
- 即将过期药品提醒
- 过期药品通知
- 通知中心(已读/未读)
- 用药记录管理
- 联系人管理
- 操作日志
- 数据可视化(仪表板)
- 框架: Express.js
- 数据库: MySQL
- ORM: mysql2
- 认证: JSON Web Token (JWT)
- 文件上传: Multer
- 定时任务: node-schedule
- 邮件服务: Nodemailer
- 构建工具: Vite
- 框架: Vue 3
- UI 组件库: Element Plus
- 状态管理: Pinia
- 路由: Vue Router
- HTTP 请求: Axios
- 图表: ECharts
- Excel 处理: xlsx
.
├── medicine-node/ # 后端项目目录
│ ├── config/ # 配置文件
│ ├── controllers/ # 控制器
│ ├── models/ # 数据模型
│ ├── routes/ # 路由
│ ├── utils/ # 工具函数
│ ├── .env.example # 环境变量示例
│ ├── app.js # 入口文件
│ └── db.sql # 数据库初始化脚本
├── medicine-web/ # 前端项目目录
│ ├── src/
│ │ ├── api/ # API 接口
│ │ ├── components/ # 公共组件
│ │ ├── config/ # 配置文件
│ │ ├── router/ # 路由
│ │ ├── stores/ # 状态管理
│ │ ├── styles/ # 样式
│ │ └── views/ # 页面
│ ├── .env.development.example
│ └── .env.production.example
└── README.md # 项目说明文档
确保你的开发环境中已经安装了以下软件:
- Node.js (>= 16.x)
- MySQL (>= 8.0)
- Git
-
进入后端目录:
cd medicine-node -
安装依赖:
npm install
-
配置环境变量:
复制
.env.example文件为.env,并根据你的环境修改配置:cp .env.example .env
编辑
.env文件,填入你的数据库和其他配置信息:# 数据库配置 DB_HOST=localhost DB_PORT=3306 DB_USER=root DB_PASSWORD=your_password_here DB_DATABASE=medicine_management # JWT 密钥(请修改为安全的密钥) JWT_SECRET=your_jwt_secret_key_here
-
初始化数据库:
在 MySQL 中创建数据库并执行初始化脚本:
mysql -u root -p
在 MySQL 命令行中执行:
source d:/y/medicine-node/db.sql;
-
启动后端服务:
npm run dev
后端服务将启动在
http://localhost:3000
-
打开新的终端,进入前端目录:
cd medicine-web -
安装依赖:
npm install
-
配置环境变量(可选,已配置默认值):
如需修改,复制
.env.development.example为.env.development:cp .env.development.example .env.development
-
启动前端开发服务器:
npm run dev
前端将启动在
http://localhost:5173(默认端口)
在 medicine-node/.env 文件中配置:
| 变量名 | 说明 | 必填 | 默认值 |
|---|---|---|---|
| DB_HOST | 数据库主机地址 | 否 | localhost |
| DB_PORT | 数据库端口 | 否 | 3306 |
| DB_USER | 数据库用户名 | 否 | root |
| DB_PASSWORD | 数据库密码 | 是 | - |
| DB_DATABASE | 数据库名称 | 否 | medicine_management |
| JWT_SECRET | JWT 签名密钥 | 是 | - |
| EMAIL_HOST | SMTP 服务器地址(可选) | 否 | - |
| EMAIL_PORT | SMTP 端口(可选) | 否 | 587 |
| EMAIL_USER | 邮箱账号(可选) | 否 | - |
| EMAIL_PASS | 邮箱密码(可选) | 否 | - |
在 medicine-web/.env.development 或 .env.production 中配置:
| 变量名 | 说明 | 必填 | 默认值 |
|---|---|---|---|
| VITE_API_BASE_URL | 后端 API 地址 | 否 | http://localhost:3000 |
- 确保 MySQL 服务正在运行
- 创建数据库(如使用 db.sql 脚本会自动创建)
- 执行
medicine-node/db.sql脚本初始化表结构 - 确认数据库连接配置正确
- 在服务器上安装 Node.js 和 MySQL
- 上传代码到服务器
- 安装依赖:
npm install - 配置生产环境变量
- 启动服务:
npm start
推荐使用 PM2 进行进程管理:
npm install -g pm2
pm2 start app.js --name medicine-backend-
构建生产版本:
npm run build
-
将
dist目录的内容部署到 Nginx、Apache 或其他静态文件服务器
本项目采用 ISC 许可证 - 详见 LICENSE 文件
注意: 请务必在生产环境中修改默认的 JWT_SECRET 和数据库密码!






