基于springboot+vue的医院预约系统(前后端分离)

简介: 本系统采用springboot+vue整合开发,前端主要使用了Vue框架、Element UI和AJAX技术。项目后端主要使用了springboot等一系列框架和MyBatis以及Maven。这一套技术易于学习、操作和管理。数据库方面则是使用了MySQL数据库以及Navicat数据库管理工具,轻量,易于管理。

技术详情:


系统使用技术:springboot+mybatis


前端技术:ElementUI、ajax、node.js、js、css


开发工具:idea


数据库:mysql5.7


项目介绍:



本系统采用springboot+vue整合开发,前端主要使用了Vue框架、Element UI和AJAX技术。项目后端主要使用了springboot等一系列框架和MyBatis以及Maven。这一套技术易于学习、操作和管理。数据库方面则是使用了MySQL数据库以及Navicat数据库管理工具,轻量,易于管理。


功能概述:



本系统基本实现了项目需求中提出的各项内容,主要实现了前台部分、门诊医生部分、医技医生部分、药房部分和系统管理部分五个子系统,还有一个最高权限的超级管理员,所以分为6个角色。其中前台部分包含了现场挂号、退号、费用查询三个子模块;门诊医生部分包含了病历首页、检验申请、门诊确诊、药物处方、费用查询五个子模块;医技医生部分包含了患者检验、医技管理两个子模块;药房管理部分包含出药和药品管理两个子模块;系统管理部分包含科室管理、医生排班管理、用户管理三个子模块;超级管理员包含以上所有功能。


文档详情:



2021090516343341.png


部分功能:



由于角色较多,每个角色仅截图部分,下面我们来看看相关功能。


系统登录:


20210905163535608.png


超级管理员-系统首页


查看系统首页


20210905163559964.png


超级管理员-门诊管理


查看门诊信息,并进行操作


20210905163614266.png


超级管理员-排班


对各个科室的医生进行排班,当天挂号只能预约当天的医生


20210905163636484.png


超级管理员-用户管理


查看用户信息


20210905163708883.png


前台-挂号


对病人进行挂号操作


20210905163935546.png


医生-诊断


对病人进行诊断


20210905163734289.png


医生-开方


开立处方


20210905163757939.png


药师-出药


药师根据医生开具的药方就行出药


20210905163832960.png


药师-药品管理


对药品进行维护


20210905163917256.png


医技-医技维护


对医技进行操作


20210905164002287.png


后台部分代码:



/*
    * 加载挂号科室的信息*/
    @RequestMapping("/reception/regloaddep")
    public Map<String,Object> loading(){
        Map<String,Object> res=new HashMap<>();
        List<Departoptions> list = loadingS.sitRegDep();
        res.put("deps",list);
        return res;
    }
    /*
    * 获取并加载当前科室和号别的医生(有余号的)
    * */
    @RequestMapping("/reception/selbydoc")
    public Map<String,Object> SelBydoc(@RequestBody RegDepart regDepart){
        Map<String,Object> res=new HashMap<>();
        if(regDepart.getValue()==null||regDepart.getRegType()==null){//如果没有科室或号别就直接返回null
            return res;
        }
        //根据科室和号别获取医生(有问题,需要动态查询挂号信息,目前是静态)
        List<User> list = regService.getByDeReg(regDepart.getValue(), regDepart.getRegType());
        List<SelectK> list2= new ArrayList<>();
        for(User user1:list){
            list2.add(new SelectK(user1.getName(),user1.getId()));
        }
        res.put("doc",list2);
        if(regDepart.getRegType().equals("专家号")){
            res.put("type","50");
        }else if(regDepart.getRegType().equals("普通号")){
            res.put("type","20");
        }else res.put("type","");
        return res;
    }
    /**
     * 获取当前医生的余号,已经是实时的,已经判断了上下午
     * @param regDepart
     * @return
     */
    @PostMapping("/reception/getRgeNumber")
    public int getNumber(@RequestBody RegDepart regDepart){
        String docID=regDepart.getOptDoc();
        return regService.getRegNumber(docID)-regService.getNowNum(docID);
    }


前端部分代码:



<template>
  <div>
    <div style="overflow:hidden">
      <el-form ref="form" :model="form" label-width="80px" style="padding-top: 20px;">
        <div style="float: left; padding-left: 200px;">
          <el-form-item label="*科室名" class="kkk">
            <el-input v-model="form.depName" placeholder="请输入内容"></el-input>
          </el-form-item>
          <el-form-item label="*类别" class="kkk">
            <el-input v-model="form.depType" placeholder="请输入内容"></el-input>
          </el-form-item>
          <el-form-item label="*编号" class="kkk">
            <el-input v-model="form.depNum" placeholder="请输入内容"></el-input>
          </el-form-item>
        </div>
      </el-form>
      <el-button icon="el-icon-search" type="primary" v-on:click="onSubmit()" style="width:120px; height: 50px;" round>搜索</el-button>
      <el-button icon="el-icon-plus" type="success" @click="dialogVisible = true" style="width:120px; height: 50px;" round>新增科室</el-button>
      <el-dialog title="提示" :visible.sync="dialogVisible" width="40%" :append-to-body="true"
        :before-close="handleClose">
        <div style=" margin-left:100px ;">
          <el-form ref="form1" :model="childform" label-width="80px" style="padding-top: 20px;">
            <div style="">
              <el-form-item label="科室名称" class="kkk">
                <el-input v-model="childform.depName" placeholder="请输入内容"></el-input>
              </el-form-item>
              <el-form-item label="科室编号" class="kkk">
                <el-input v-model="childform.depNum" placeholder="请输入内容"></el-input>
              </el-form-item>
            </div>
            <div style="">
              <el-form-item label="科室类型" class="kkk">
                <el-input v-model="childform.depType" placeholder="请输入内容"></el-input>
              </el-form-item>
            </div>
          </el-form>
        </div>
        <span slot="footer" class="dialog-footer">
          <el-button @click="dialogVisible = false">取 消</el-button>
          <el-button type="primary" v-on:click="addDepart()">确 定</el-button>
        </span>
      </el-dialog>
    </div>
    <div style="padding-left: 0px; margin-left: 250px; margin-top:20px ;">
      <el-table ref="multipleTable" :data="tableData" height="300" tooltip-effect="dark" border="true"
        :header-cell-style="{'text-align':'center'}"
        style="width: 80%; padding-left: 20px;">
        <el-table-column prop="depNum" label="编号" align="center" width="240">
        </el-table-column>
        <el-table-column prop="depName" label="科室名" align="center" width="240">
          <template slot-scope="scope">
            <span v-if="scope.row.show">
              <el-input size="mini" v-model="scope.row.depName"></el-input>
            </span>
            <span v-else>{{ scope.row.depName }}</span>
          </template>
        </el-table-column>
        <el-table-column prop="depType" label="类别" align="center" width="240">
          <template slot-scope="scope">
            <span v-if="scope.row.show">
              <el-input size="mini" v-model="scope.row.depType"></el-input>
            </span>
            <span v-else>{{ scope.row.depType }}</span>
          </template>
        </el-table-column>
        <el-table-column prop="name" label="操作" align="center" width="340">
          <template slot-scope="scope">
            <span v-if="!scope.row.show">
              <el-button @click="editRow(scope.row)" type="text" size="small">编辑</el-button>
            </span>
            <span v-else><el-button @click="saveRow(scope.row)" type="text" size="small">保存</el-button></span>
            /<el-button @click="canRow(scope.row)" type="text" size="small">取消</el-button>
            <el-button v-on:click="deleteRow(scope.$index, tableData, scope.row)" type="text" size="small" style="width:100px; height: 50px;" round>删除</el-button>
          </template>
        </el-table-column>
      </el-table>
    </div>
  </div>
</template>


以上就是部分功能展示,从整体上来看,本系统功能是十分完整的,而且也与当前的热点话题关联,界面设计简洁大方,交互友好,数据库设计也很合理,规模适中,比较适合毕业设计和课程设计的相关应用。



相关文章
|
16天前
|
XML 安全 Java
掌握SpringBoot单点登录精髓,一键通行多系统,轻松打造无缝用户体验新纪元!
【8月更文挑战第29天】单点登录(SSO)是一种身份认证机制,用户在多个相互信任的应用系统中只需登录一次即可访问所有系统,无需重复输入凭证。本文详细介绍如何利用Spring Security和OAuth2在SpringBoot中实现SSO,并提供示例代码。核心步骤包括:引入依赖、配置认证服务器与资源服务器、实现单点登录拦截器及完成SSO配置。通过合理配置,SSO能显著提升用户体验和系统安全性。
45 2
|
18天前
|
JavaScript 前端开发 开发者
Vue.js 框架大揭秘:响应式系统、组件化与路由管理,震撼你的前端世界!
【8月更文挑战第27天】Vue.js是一款备受欢迎的前端JavaScript框架,以简洁、灵活和高效著称。本文将从三个方面深入探讨Vue.js:响应式系统、组件化及路由管理。响应式系统为Vue.js的核心特性,能自动追踪数据变动并更新视图。例如,通过简单示例代码展示其响应式特性:`{{ message }}`,当`message`值改变,页面随之自动更新。此外,Vue.js支持组件化设计,允许将复杂界面拆分为独立且可复用的组件,提高代码可维护性和扩展性。如创建一个包含标题与内容的简单组件,并在其他页面中重复利用。
38 3
|
7天前
|
JavaScript 前端开发 搜索推荐
推荐5款免费、开箱即用的Vue后台管理系统模板
推荐5款免费、开箱即用的Vue后台管理系统模板
|
11天前
|
存储 JavaScript 前端开发
Vue 3的响应式系统是如何工作的呢
【9月更文挑战第3天】Vue 3的响应式系统是如何工作的呢
21 4
|
11天前
|
缓存 JavaScript API
介绍一下Vue 3的响应式系统
【9月更文挑战第3天】介绍一下Vue 3的响应式系统
30 3
|
15天前
|
JavaScript 前端开发 小程序
【项目实战】SpringBoot+vue+iview打造一个极简个人博客系统
这是一个基于 SpringBoot+MybatisPlus+Vue+Iview 技术栈构建的个人极简博客系统,适合初学者实战练习。项目包含文章分类、撰写文章、标签管理和用户管理等功能,代码简洁并配有详细注释,易于上手。此外,该项目也可作为毕业设计的基础进行二次开发。
61 0
【项目实战】SpringBoot+vue+iview打造一个极简个人博客系统
|
23天前
|
安全 Java 关系型数据库
毕设项目&课程设计&毕设项目:基于springboot+jsp实现的健身房管理系统(含教程&源码&数据库数据)
本文介绍了一款基于Spring Boot和JSP技术实现的健身房管理系统。随着健康生活观念的普及,健身房成为日常锻炼的重要场所,高效管理会员信息、课程安排等变得尤为重要。该系统旨在通过简洁的操作界面帮助管理者轻松处理日常运营挑战。技术栈包括:JDK 1.8、Maven 3.6、MySQL 8.0、JSP、Shiro、Spring Boot 2.0等。系统功能覆盖登录、会员管理(如会员列表、充值管理)、教练管理、课程管理、器材管理、物品遗失管理、商品管理及信息统计等多方面。
|
21天前
|
JavaScript Java 关系型数据库
毕设项目&课程设计&毕设项目:基于springboot+vue实现的前后端分离的考试管理系统(含教程&源码&数据库数据)
在数字化时代背景下,本文详细介绍了如何使用Spring Boot框架结合Vue.js技术栈,实现一个前后端分离的考试管理系统。该系统旨在提升考试管理效率,优化用户体验,确保数据安全及可维护性。技术选型包括:Spring Boot 2.0、Vue.js 2.0、Node.js 12.14.0、MySQL 8.0、Element-UI等。系统功能涵盖登录注册、学员考试(包括查看试卷、答题、成绩查询等)、管理员功能(题库管理、试题管理、试卷管理、系统设置等)。
毕设项目&课程设计&毕设项目:基于springboot+vue实现的前后端分离的考试管理系统(含教程&源码&数据库数据)
|
14天前
|
前端开发 Java Spring
Spring与Angular/React/Vue:当后端大佬遇上前端三杰,会擦出怎样的火花?一场技术的盛宴,你准备好了吗?
【8月更文挑战第31天】Spring框架与Angular、React、Vue等前端框架的集成是现代Web应用开发的核心。通过RESTful API、WebSocket及GraphQL等方式,Spring能与前端框架高效互动,提供快速且功能丰富的应用。RESTful API简单有效,适用于基本数据交互;WebSocket支持实时通信,适合聊天应用和数据监控;GraphQL则提供更精确的数据查询能力。开发者可根据需求选择合适的集成方式,提升用户体验和应用功能。
46 0
|
Java 应用服务中间件 Maven
传统maven项目和现在spring boot项目的区别
Spring Boot:传统 Web 项目与采用 Spring Boot 项目区别
449 0
传统maven项目和现在spring boot项目的区别