原创

基于springboot2+vue2的医院资源管理系统

温馨提示:
本文最后更新于 2026年05月31日,已超过 10 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

1. 资源

浏览全文可获取

2. 项目简介

医院资源管理系统,旨在帮助医院实现信息化管理,涵盖用户管理、医生管理、药品管理、病史记录、住院管理、医生预约、公告信息等核心功能。系统面向三种角色:管理员医生普通用户,不同角色拥有不同的操作权限。

  • 管理员:可进行管理员账户管理、病史管理、基础数据管理(公告类型、药品类型、科室)、公告信息管理、药品管理、医生管理、用户管理、住院管理、轮播图管理等。
  • 医生:可查看和管理病史、查看公告、查看药品、处理医生预约、管理住院信息等。
  • 用户:可查看病史、公告、药品、医生信息,进行医生预约,查看住院情况等。

项目采用前后端分离架构,后端基于 Spring Boot 构建,前端包含管理端(Vue + Element UI)和用户端(Layui + HTML)两套界面。

3. 技术栈

层次 技术/框架 说明
后端框架 Spring Boot 2.2.2.RELEASE 提供容器、自动配置等
ORM 框架 MyBatis-Plus 2.3 简化数据库操作,分页支持
权限控制 Apache Shiro 1.3.2 身份认证与授权
数据库 MySQL 5.7 关系型数据库
前端管理端 Vue 2.x + Element UI 后台管理界面
前端用户端 Layui + HTML + Vue.js 前台用户端
工具库 Hutool 4.0.12, Fastjson 1.2.8 通用工具、JSON 处理
文件上传 自定义 FileController 支持图片、文件上传
其他 POI 3.9(Excel 导入导出) 办公文档处理

4. 详细介绍

4.1 功能模块

4.1.1 管理员模块

  • 管理员管理:维护系统管理员账号(users 表),支持增删改查。
  • 病史管理:管理用户病史记录(bingshi 表),包含病名、病因、现状、药单、禁忌等。
  • 基础数据管理
    • 公告信息类型(news_types)
    • 药品类型(yaopin_types)
    • 科室(yisheng_types)
  • 公告信息管理:发布、修改、删除公告(news 表)。
  • 药品管理:对药品(yaopin)进行增删改查、库存管理。
  • 医生管理:维护医生信息(yisheng 表),包括工号、姓名、科室、职称、挂号价格等。
  • 用户管理:管理注册用户(yonghu 表)。
  • 医生预约管理:查看所有预约,审核预约结果(同意/拒绝)。
  • 住院管理:分配住院病房、房间号、床号。
  • 轮播图管理:配置前台首页轮播图片(config 表)。

4.1.2 医生模块

  • 查看/管理病史(可新增)。
  • 查看公告
  • 查看药品
  • 处理医生预约(查看预约列表,审核)。
  • 管理住院信息。

4.1.3 用户模块

  • 注册/登录。
  • 查看病史公告药品医生
  • 预约医生(提交预约,等待审核)。
  • 查看个人住院信息。
  • 个人资料管理(修改头像、手机号等)。

4.2 数据库设计

主要数据表如下:

表名 说明
users 系统管理员表
yonghu 用户表
yisheng 医生表
yaopin 药品表
news 公告信息表
bingshi 病史表
yishengyuyue 医生预约表
zhuyuan 住院表
dictionary 字典表(类型数据)
config 轮播图配置表
token 用户 token 表

4.3 核心业务逻辑

  • 登录与鉴权:使用 Shiro + Token 机制,登录成功后生成 token 并存储在 localStorage,后续请求通过 header 携带 Token 进行身份验证。
  • 字典转换:所有涉及字典类型(如性别、科室、预约状态)的字段,在后端通过 DictionaryService.dictionaryConvert() 方法自动将编码转换为对应的中文名称返回给前端。
  • 预约流程:用户选择医生并预约 -> 生成预约记录(状态为“未处理”)-> 医生登录后审核 -> 用户可查看结果。
  • 住院管理:医生为用户分配病房、房间号、床号,用户端可查看自己的住院信息。
  • 文件上传:支持图片上传至 /upload/ 目录,返回文件名用于前端展示。

5. 部分代码

5.1 后端 Controller 示例(医生预约)

@RestController
@RequestMapping("/yishengyuyue")
public class YishengyuyueController {
    @Autowired
    private YishengyuyueService yishengyuyueService;

    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){
        String role = String.valueOf(request.getSession().getAttribute("role"));
        if("用户".equals(role))
            params.put("yonghuId", request.getSession().getAttribute("userId"));
        else if("医生".equals(role))
            params.put("yishengId", request.getSession().getAttribute("userId"));
        PageUtils page = yishengyuyueService.queryPage(params);
        return R.ok().put("data", page);
    }
}

5.2 MyBatis-Plus 分页查询 Mapper XML

<select id="selectListView" resultType="com.entity.view.YishengyuyueView">
    SELECT a.*, yisheng.yisheng_name, yonghu.yonghu_name
    FROM yishengyuyue a
    LEFT JOIN yisheng ON a.yisheng_id = yisheng.id
    LEFT JOIN yonghu ON a.yonghu_id = yonghu.id
    <where>
        <if test="params.yishengId != null">and a.yisheng_id = #{params.yishengId}</if>
        <if test="params.yonghuId != null">and a.yonghu_id = #{params.yonghuId}</if>
    </where>
    order by a.${params.orderBy} desc
</select>

5.3 前端管理端路由配置(Vue)

// router-static.js 部分路由
{
    path: '/yaopin',
    name: '药品',
    component: () => import('@/views/modules/yaopin/list')
},
{
    path: '/yisheng',
    name: '医生',
    component: () => import('@/views/modules/yisheng/list')
},
{
    path: '/yishengyuyue',
    name: '医生预约',
    component: () => import('@/views/modules/yishengyuyue/list')
}

5.4 前端用户端药品列表页面(Layui + Vue)

<div v-for="(item,index) in dataList" class="view view-seventh">
    <a @click="jumpCheck('../yaopin/detail.html?id='+item.id)">
        <img :src="item.yaopinPhoto.split(',')[0]" />
        <div class="mask">
            <h4><b>{{item.yaopinName}}</b><br><b>{{item.yaopinJiangshi}} RMB</b></h4>
        </div>
    </a>
</div>

6. 部分截图

img1
img2
img3
img4
img5
img6
img7
img8
img9
img10
img11
img12
img13
img14
img15
img16
img17
img18
img19
img20
img21
img22
img23
img24
img25
img26
img27
img28
img29
img30
img31
img32
img33
img34

7. 项目总结

本项目实现了一个完整的医院资源管理信息化平台,覆盖了医院日常管理中的主要业务流程,包括用户管理、医生排班、药品库存、病史记录、预约挂号、住院管理等。系统采用 Spring Boot + MyBatis-Plus 作为后端核心,配合 Shiro 实现权限控制,前端提供管理端(Vue + Element UI)和用户端(Layui)两套界面,满足不同角色的使用需求。

主要特点

  • 角色权限清晰,操作流程符合医院管理实际。
  • 字典表设计灵活,便于扩展和维护。
  • 使用 Token 实现无状态登录,支持跨域。
  • 集成了百度 AI 人脸比对(配置后可用)和 Excel 导入导出功能。

整体而言,系统功能完备,代码结构清晰,可作为中小型医院信息化管理的参考实现。

资源获取:https://fifteen.xiaobias.com/source/190

正文到此结束
本文目录