原创

基于springboot2+vue2的疫情隔离管理系统

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

1. 参考文章

浏览全文可获取资源

2. 项目简介

疫情隔离管理系统是一套面向疫情隔离管理场景的Web应用系统,主要服务于管理员、供应商和普通用户三个角色。系统通过线上化的方式管理用户隔离信息、行程轨迹、物资申请与审批、问题反馈等核心业务,实现隔离期间人员管控与物资保障的高效协同。

系统功能覆盖:地区风险等级维护、用户行程记录、隔离状态管理、隔离结束申请审批、物品发布与库存管理、物品申请审批、用户问题及供应商问题反馈处理。系统采用前后端分离架构,后端提供RESTful API,前端基于Vue.js实现管理界面。

3. 技术栈

层次 技术选型
后端框架 Spring Boot 2.2.2.RELEASE
ORM框架 MyBatis-Plus 2.3
权限控制 Apache Shiro 1.3.2
数据库 MySQL 5.7.32
前端框架 Vue.js + Element UI
构建工具 Maven

4. 详细介绍

4.1 角色与权限

系统共包含三种角色,不同角色拥有不同的功能模块访问权限:

4.1.1 管理员

  • 基础数据管理:供应商问题类型、用户问题类型、物品类型等字典维护
  • 地区管理:地区名称、风险等级(低/中/高风险)及详情
  • 用户管理:查看、新增、修改、删除用户信息
  • 供应商管理:查看、新增、修改、删除供应商信息
  • 行程管理:查看所有用户的行程记录
  • 用户问题管理:查看、回复、删除用户问题
  • 供应商问题管理:查看、回复、删除供应商问题
  • 隔离管理:查看、新增、修改、删除隔离记录
  • 隔离结束申请管理:查看、审核(同意/拒绝)、删除申请
  • 物品管理:查看、新增、修改、删除物品
  • 物品申请管理:查看、审核物品申请

4.1.2 供应商

  • 供应商问题管理:提交问题、查看回复
  • 物品管理:发布、修改、删除自己供应的物品
  • 物品申请管理:查看用户申请,进行审核(同意/拒绝)

4.1.3 用户

  • 隔离管理:查看本人的隔离记录
  • 隔离结束申请管理:发起隔离结束申请,查看申请状态
  • 物品管理:浏览物品列表
  • 物品申请管理:申请物品,查看申请记录
  • 行程管理:新增、修改、删除本人的行程记录
  • 用户问题管理:提交问题、查看管理员回复

4.2 核心功能模块

4.2.1 地区与风险等级管理

管理员可维护地区信息,每个地区关联一个风险等级(低风险、中风险、高风险)。用户行程中可选择经过的地区,系统可据此进行风险研判。

4.2.2 行程管理

用户可添加行程记录,包括经过的地区、经过时间、行程备注。管理员可查看所有用户的行程。

4.2.3 隔离管理

管理员可为用户指派隔离类型(居家隔离/隔离点隔离),并记录隔离时间。系统保证同一用户只能有一条有效的隔离记录。

4.2.4 隔离结束申请

用户在隔离期间可提交隔离结束申请,填写申请内容。管理员收到申请后可选择“同意”或“拒绝”,并填写审核意见。

4.2.5 物品与库存管理

供应商可以发布物品(名称、照片、类型、库存数量、介绍)。用户可浏览物品并发起申请(填写申请数量、详情)。供应商/管理员审核申请时,若同意则会自动扣减库存,申请数量不能大于库存数量。

4.2.6 问题反馈

  • 用户问题:用户选择问题类型(如问题类型1/2/3),填写问题详情;管理员可回复。
  • 供应商问题:供应商同样可提交问题,管理员回复。

4.2.7 字典管理

系统通过dictionary表统一管理各类下拉选项(性别、风险等级、隔离类型、申请状态、物品类型、问题类型等),支持动态增删改。

4.3 数据库设计概要

表名 说明
yonghu 用户表(账户、密码、姓名、手机号、身份证、头像、性别、邮箱)
gongyingshang 供应商表(账户、密码、名称、地址、介绍)
diqu 地区表(地区名称、风险等级、详情)
xingcheng 行程表(用户、地区、备注、经过时间)
geli 隔离表(用户、隔离类型、备注、隔离时间)
gelishenqing 隔离结束申请表(用户、申请内容、状态、审核意见、申请时间)
wupin 物品表(供应商、名称、照片、类型、库存、逻辑删除、介绍)
wupin_shenqing 物品申请表(申请流水号、用户、物品、申请数量、详情、状态、审核意见)
yonghuwenti 用户问题表(用户、问题名称、类型、详情、回复内容)
gongyingshangwenti 供应商问题表(供应商、问题名称、类型、详情、回复内容)
dictionary 字典表(字段编码、编码索引、索引名称等)
users 管理员表
token 登录token表

5. 部分代码

5.1 物品申请审批核心逻辑(Controller层)

// WupinShenqingController.java - 审批处理方法
@RequestMapping("/shenqing")
public R shenqing(@RequestBody WupinShenqingEntity wupinShenqing, HttpServletRequest request){
    // 若审批同意(状态为2)
    if(wupinShenqing.getWupinShenqingYesnoTypes().intValue() == 2){
        WupinShenqingEntity wupinShenqingEntity = wupinShenqingService.selectById(wupinShenqing.getId());
        WupinEntity wupinEntity = wupinService.selectById(wupinShenqingEntity.getWupinId());
        if(wupinEntity == null)
            return R.error(511,"查不到申请物品");
        int shengyu = wupinEntity.getWupinKucunNumber() - wupinShenqingEntity.getWupinShenqingNumber();
        if(shengyu<0)
            return R.error(511,"申请数量不能大于库存数量");
        wupinEntity.setWupinKucunNumber(shengyu);
        wupinService.updateById(wupinEntity);
    }
    wupinShenqingService.updateById(wupinShenqing);
    return R.ok();
}

5.2 用户隔离唯一性校验(Service层保存方法)

// GeliController.java - 保存隔离记录时检查是否已隔离
Wrapper<GeliEntity> queryWrapper = new EntityWrapper<GeliEntity>()
    .eq("yonghu_id", geli.getYonghuId());
GeliEntity geliEntity = geliService.selectOne(queryWrapper);
if(geliEntity==null){
    geli.setInsertTime(new Date());
    geli.setCreateTime(new Date());
    geliService.insert(geli);
    return R.ok();
}else {
    return R.error(511,"该用户已隔离");
}

5.3 字典表值转换工具方法

// DictionaryServiceImpl.java - 将Types字段转换为Value显示名称
public void dictionaryConvert(Object obj, HttpServletRequest request) {
    // 获取所有以"Types"结尾的Integer字段
    // 通过ServletContext中的dictionaryMap映射为对应的index_name
    // 设置到对应的"Value"字段中
}

5.4 MyBatis-Plus 分页查询XML示例

<!-- GeliDao.xml - 多表联查并支持动态条件 -->
<select id="selectListView" resultType="com.entity.view.GeliView">
    SELECT ...
    FROM geli a
    left JOIN yonghu yonghu ON a.yonghu_id = yonghu.id
    <where>
        <if test="params.yonghuId != null">
            and a.yonghu_id = #{params.yonghuId}
        </if>
        <if test="params.geliTypes != null">
            and a.geli_types = #{params.geliTypes}
        </if>
        ...
    </where>
    order by a.${params.orderBy} desc
</select>

6. 部分截图

img1
img2
img3
img4
img5
img6
img7
img8
img9
img10
img11
img12
img13
img14
img15
img16
img17
img18
img19
img20

7. 项目总结

疫情隔离管理系统是一个功能较为完整、角色划分清晰的Web应用,覆盖了隔离管理中的核心业务流程:人员信息管理、行程追溯、隔离状态控制、物资申请与分发、问题反馈等。

  • 业务完整性:系统从“隔离前(行程记录)→ 隔离中(隔离记录、物资申请、问题反馈)→ 隔离结束(申请解隔)”形成闭环管理。
  • 权限设计合理:管理员、供应商、用户各司其职,供应商可自主管理物资,用户可自查信息并提出申请。
  • 技术实现规范:采用Spring Boot + MyBatis-Plus + Vue主流技术栈,通过token实现无状态认证,字典表动态维护下拉选项,支持Excel批量导入导出。
  • 可扩展性:通过dictionary表统一管理枚举值,新增选项无需修改代码;逻辑删除字段保证数据可恢复。

该项目可作为中小型社区或单位疫情隔离管理的信息化工具,也可作为学习Spring Boot + Vue前后端分离项目的参考案例。

资源:https://fifteen.xiaobias.com/source/224

正文到此结束
本文目录