当前位置: 首页 > news >正文

使用Vue和SpringBoot开发实验室耗材智能运维系统

作者主页:Designer 小郑
作者简介:浙江某公司软件工程师,负责开发管理公司OA、CRM业务系统,全栈领域优质创作者,CSDN学院、蓝桥云课认证讲师,开发过20余个前后端分离实战项目,主要发展方向为Vue、SpringBoot、微信小程序,期待你我共同成长!
主打方向:Vue、SpringBoot、微信小程序
项目ID:A22010
文末获取源码

一、项目简介

本项目是基于 Vue 和 Spring Boot 的实验室耗材智能运维系统,包括了耗材档案耗材采购入库耗材领用出库三大核心业务,另外还支持申请耗材审核申请单用户管理文件云盘组织架构日志数据字典修改密码个人中心等扩展功能。本系统主要面向高校实验室管理日常耗材所用,降低实验室管理人员的工作量,提高耗材库存的管理水平。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


二、功能明细

  • 耗材档案:实验室管理者可自由增删改查耗材的数据。
  • 耗材采购入库:实验室耗材采购人员可将采购的耗材入库至系统。
  • 耗材领用出库:学生可按需申请耗材,实验室管理员审核;或者实验室管理员直接分配给学生。
  • 用户权限管控:基于角色的权限控制,可维护每位用户的菜单权限和用户信息。
  • 组织架构维护:对实验室的组织架构进行维护,如教师层、20级、21级等。
  • 文件云盘:统一化管理系统所用到的全部文件,封装了 Vue 组件供其他模块表单调用。
  • 系统日志:根据用户操作,自动化记录日志。
  • 数据字典:管理员可视化修改其他模块的下拉框数据,无需修改前端代码。
  • 个人中心:登陆注册、修改密码、维护自己账号的数据等。

三、使用对象

  • 实验室管理员:管理员可以发布耗材、删改耗材数据、维护实验室人员档案等全部功能。
  • 耗材采购员:可对管理员发布的耗材品类,进行入库操作、对指定学生进行出库领用或审核学生的申请单。
  • 学生:可查看实验室现有耗材的库存情况、申请耗材、查看自己的申请状态。

四、技术选型

前端

Vue:Vue 是构建前端界面的核心框架,本系统采用 2.6.14 版本。

View UI:基于 Vue.js2.0 的组件库,本系统采用 4.7.0 版本。

后端

Spring Boot:构建系统核心逻辑的后端框架,本系统采用 2.7.4 版本。

MyBatis / MyBatis Plus:后端连接数据库的框架,本系统采用 3.5.2 版本。

数据库

MySQL:本项目的主数据库,本系统采用 8.0.30 版本。

Redis:本系统采用基于 Windows 版本的 Redis,用于图形验证码和用户菜单权限的临时存储,采用了 5.0.14.1 版本。

开发环境

VsCode:项目前端的开发工具,使用版本为 1.68.0。

IntelliJ IDEA :项目后端的开发工具,使用版本为 2022.2.2。

Jdk:Java 的开发环境,使用版本为 17.0.4.1。

Maven:后端项目的打包工具,使用版本为 3.6.2。

NodeJs:前端项目的开发环境,使用版本为 16.13.0。


五、系统展示

登录页

用户可使用账号 + 密码 + 图形验证码的方式进行登录,如下图所示。
在这里插入图片描述

注册页

如果用户没有账号,也可以根据手机号、姓名、密码和图形验证码进行注册,如下图所示。
在这里插入图片描述

主页

用户登录成功后,默认进入主页,如下图所示。
在这里插入图片描述
当然不同的用户拥有不同的菜单权限,实验室耗材智能运维系统采用基于角色的访问控制模式,采用同学们可以自定义角色,再分配指定的菜单权限,如下图所示。
在这里插入图片描述

耗材档案

实验室管理员可以在这里维护耗材的数据,其中耗材包括大的耗材(固定资产)和小的耗材(耗材),如下图所示。
在这里插入图片描述

新增编辑耗材

新增耗材的操作界面如下图所示。
在这里插入图片描述

删除耗材

用户可以选择一定数量的耗材,点击删除按钮,进行删除,系统会给与二次确认弹框,如下图所示。
在这里插入图片描述

耗材入库

耗材的来源是采购员买来之后入库,所以采购员可以在这个模块操作入库,如下图所示。
在这里插入图片描述

新增入库

新增入库时,资产是由耗材模块中进行选择,如下图所示。
在这里插入图片描述
新增之后还可以编辑,编辑功能如下图所示。
在这里插入图片描述

耗材领用(管理员)

管理员可以主动将耗材分配给实验室学生,如下图所示。
在这里插入图片描述

新增耗材领用分配

在这里插入图片描述
其中表单的资产名称和领用人可导入选择,资产导入后,型号、单价自动带出,用户只需填写数量和备注即可,如下图所示。
在这里插入图片描述

耗材领用(用户)

除了管理员主动分配耗材给学生,学生也可以主动去申请耗材,如下图所示。
在这里插入图片描述
在这里插入图片描述

领用审核

学生主动申请耗材后,实验室管理员可以对其进行审核,如下图所示。
在这里插入图片描述

审核通过即可完成正常领用,如下图所示。
在这里插入图片描述

用户管理

管理员管理学生,在这里维护,如下图所示。
在这里插入图片描述

云盘(文件管理)

实验室耗材智能运维系统的所有文件都在这里维护,如下图所示。
在这里插入图片描述

系统日志

用户的指定操作(后端代码匹配)可以自动化记录日志,汇总在日志模块,如下图所示。
在这里插入图片描述

修改密码

用户可以修改自己的密码,如下图所示。
在这里插入图片描述

个人门户

用户可以在个人门户中编辑自己的信息,如下图所示。
在这里插入图片描述

图表

系统还支持 ANTV 图表,同学们可以根据自己需要,进行二次开发。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

六、项目总结

智能化人事系统的作用,就是为公司人事事务提供便捷性支持,方便公司对自己人事组织层次,人事数据进行修改、维护、检索信息。本软件是基于 VueSpringBoot 的智能化人事系统,包含了员工模块请假模块通告模块留言模块薪资模块职位职称这六个功能核心模块。

开发本系统的目的,就是为了帮助中小企业提高人事管理效率,降低人力成本,让中小企业获得更多的经济效益


七、核心代码实例

实体类定义

@Data
@Entity
@DynamicInsert
@DynamicUpdate
@Table(name = "a_assets_type")
@TableName("a_assets_type")
@ApiModel(value = "资产种类")
public class AssetsType extends ZwzBaseEntity {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "资产名称")
    private String assetName;

    @ApiModelProperty(value = "性质")
    private String nature;

    @ApiModelProperty(value = "型号")
    private String model;

    @ApiModelProperty(value = "数量")
    private String number;

    @ApiModelProperty(value = "现有数量")
    private String existingNumber;

    @ApiModelProperty(value = "单价")
    private String unitPrice;

    @ApiModelProperty(value = "总价")
    private String totalPrice;

    @ApiModelProperty(value = "备注")
    private String remarks;
}

资产出库

@ApiOperation(value = "资产出库")
@RequestMapping(value = "/outpdate", method = RequestMethod.POST)
public Result<WarehouseOut> outpdate(WarehouseOut warehouseOut){
    WarehouseOut oldWarehouseOut = iWarehouseOutService.getById(warehouseOut.getId());
    double oldNumber = 0.0;
    if(oldWarehouseOut != null){
        oldNumber = Double.parseDouble(oldWarehouseOut.getNumber());
    }
    // outNumber 要出库的数量
    double outNumber = Double.parseDouble(warehouseOut.getNumber());
    AssetsType oldAssetsType = iAssetsTypeService.getById(warehouseOut.getAssetId());
    if(oldAssetsType != null){
        // newNumber 出库后还有的数量 = 仓库原本还有的数量 - 出库单的出库数量 + 原有出库单的出库数量
        Double newNumber = Double.parseDouble(oldAssetsType.getExistingNumber()) - outNumber + oldNumber;
        if(newNumber >= 0){
            oldAssetsType.setExistingNumber(newNumber + "");
            iAssetsTypeService.saveOrUpdate(oldAssetsType);
        }else{
            return ResultUtil.error("手慢啦!库存不足!");
        }
    }
    if(ZwzNullUtils.isNull(warehouseOut.getId())) {
        warehouseOut.setAuditStatus(0);
        warehouseOut.setAuditTime("");
    }
    if(iWarehouseOutService.saveOrUpdate(warehouseOut)){
        return new ResultUtil<WarehouseOut>().setData(warehouseOut);
    }
    return ResultUtil.error();
}

八、免责声明

  • 本项目开源,仅供个人学习使用,遵循 GPL-3.0 开源协议,转发 / 商用授权请联系作者,否则后果自负。
  • 作者拥有本软件构建后的应用系统全部内容所有权及独立的知识产权,欢迎一切有价值的商业合作。
  • 如有问题,欢迎在评论区留言,看到后会第一时间回复。相关意见会酌情考虑,但没有一定被采纳的承诺或保证。
  • 下载本系统代码的用户,必须同意以下内容,否则请勿下载!
  1. 出于自愿而使用/开发本软件,了解使用本软件的风险,且同意自己承担使用本软件的风险。
  2. 利用本软件构建的网站的任何信息内容以及导致的任何版权纠纷和法律争议及后果和作者无关,作者对此不承担任何责任。
  3. 在任何情况下,对于因使用或无法使用本软件而导致的任何难以合理预估的损失(包括但不仅限于商业利润损失、业务中断与业务信息丢失),作者概不承担任何责任。
  4. 必须了解使用本软件的风险,作者不承诺提供一对一的技术支持、使用担保,也不承担任何因本软件而产生的难以预料的问题的相关责任。

相关文章:

  • kubernetes(9)集群安全机制
  • Google Earth Engine (GEE) ——加载2015年乌干达MODIS的LST并绘制时序图
  • 【Linux初阶】Linux下用户的新建和删除 | 查看服务器用户数、在线数、当前用户
  • 2022华为杯研究生数学建模赛题思路分析
  • PTA 3+2 转段考试 数据库mysql(3篇)
  • 【C语言进阶】函数栈帧的创建和销毁(内功修炼)
  • 结构体数组与结构体指针
  • PTA 3+2 转段考试 数据库 mysql(3篇)
  • 技术创新助力港口自动化与智能化
  • 【Day22】力扣LeetCode算法刷题[811. 子域名访问计数]
  • LinkedList - 链表
  • 【MySQL从入门到精通】【高级篇】(二十四)EXPLAIN中select_type,partition,type,key,key_len字段的剖析
  • C | 函数指针数组妙用
  • springboot:生成excel并且通过邮件发送
  • 【自然语言处理】【文本生成】使用Transformers中的BART进行文本摘要
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • 2017年终总结、随想
  • create-react-app项目添加less配置
  • CSS3 变换
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • export和import的用法总结
  • JAVA并发编程--1.基础概念
  • js操作时间(持续更新)
  • js作用域和this的理解
  • MySQL的数据类型
  • Python连接Oracle
  • React-生命周期杂记
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • Ruby 2.x 源代码分析:扩展 概述
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • storm drpc实例
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • Python 之网络式编程
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • ​力扣解法汇总946-验证栈序列
  • #传输# #传输数据判断#
  • (solr系列:一)使用tomcat部署solr服务
  • (ZT)一个美国文科博士的YardLife
  • (搬运以学习)flask 上下文的实现
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • (转载)从 Java 代码到 Java 堆
  • .htaccess配置常用技巧
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .mysql secret在哪_MYSQL基本操作(上)
  • .NET Standard 的管理策略
  • .NET6实现破解Modbus poll点表配置文件
  • .NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)
  • .NET与java的MVC模式(2):struts2核心工作流程与原理
  • /usr/bin/env: node: No such file or directory
  • [BZOJ 3680]吊打XXX(模拟退火)
  • [BZOJ4010]菜肴制作
  • [C# 开发技巧]如何使不符合要求的元素等于离它最近的一个元素