1. 项目背景与需求分析
药店作为医疗健康服务的重要终端,其管理水平直接影响药品流通效率和患者用药安全。传统药店管理普遍存在以下痛点:
- 手工记录效率低下:药品入库、销售、盘点等环节依赖纸质记录,易出现数据丢失或错误
- 库存管理粗放:难以及时掌握库存动态,常发生断货或过期药品积压
- 销售分析缺失:缺乏数据支撑,无法精准把握热销药品和滞销品
- 处方管理混乱:处方药销售记录不规范,存在合规风险
本系统针对中小型药店设计,核心解决四大业务场景:
- 药品全生命周期管理(采购→入库→销售→效期监控)
- 实时库存预警与智能补货建议
- 多维度销售统计分析
- 处方药电子化审核流程
关键设计原则:操作界面简化(降低培训成本)、数据可视化(辅助决策)、权限精细化控制(保障数据安全)
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术架构设计
2.1 整体架构方案
采用前后端分离架构,技术栈选型考量:
后端技术栈:
- Spring Boot 2.7:简化配置、快速启动(内嵌Tomcat)、自动依赖管理
- MyBatis-Plus 3.5:增强CRUD操作、动态SQL构建、分页插件
- MySQL 8.0:事务支持完善、JSON数据类型处理药品复杂属性
- Redis 6:缓存热点数据(如药品目录)、分布式锁控制库存并发
前端技术栈:
- Vue 3 + Composition API:响应式数据绑定、逻辑复用性强
- Element Plus:表单验证、表格分页等组件开箱即用
- ECharts 5:销售趋势、库存占比等可视化图表
- Vue Router + Pinia:路由守卫控制权限、集中式状态管理
2.2 数据库设计要点
药品基础表(drug_info)
sql复制CREATE TABLE `drug_info` (
`drug_code` VARCHAR(20) PRIMARY KEY COMMENT '药品编码规则:类别首字母+6位数字(如RX000001)',
`drug_name` VARCHAR(50) NOT NULL COMMENT '需关联国家药品编码库',
`spec` VARCHAR(30) NOT NULL COMMENT '格式:含量-剂型-包装(如10mg*24片/盒)',
`manufacturer` VARCHAR(60) INDEX COMMENT '建立厂商索引便于统计',
`category` ENUM('Rx','OTC','医疗器械') NOT NULL,
`stock_alert` INT DEFAULT 10 COMMENT '可配置不同药品的独立预警值',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
库存变更日志表(stock_log)
sql复制CREATE TABLE `stock_log` (
`log_id` BIGINT AUTO_INCREMENT PRIMARY KEY,
`drug_code` VARCHAR(20) NOT NULL,
`change_type` ENUM('purchase','sale','return','adjust') NOT NULL,
`quantity` INT NOT NULL CO
