医院信息化与智能化系统(9)

医院信息化与智能化系统(9)

这里只描述对应过程,和可能遇到的问题及解决办法以及对应的参考链接,并不会直接每一步详细配置
如果你想通过文字描述或代码画流程图,可以试试PlantUML,告诉GPT你的文件结构,让他给你对应的代码

预约挂号微服务模块搭建

前端知识点补充,此章节不会详细讲具体前端的每个知识点

1、Bug修改

Bug:当点击修改按钮后,跳转到添加页面,再点击医院设置添加,医院的数据并不会清空

这里涉及到vue中组件重用问题,vue-router导航切换时,如果两个路由都渲染同个组件,组件的生命周期方法(created或者mounted)不会再被调用, 组件会被重用,显示上一个路由渲染出来的自建。

解决方案:可以简单的在 router-view上加上一个唯一的key,来保证路由切换时都会重新触发生命周期方法,确保组件被重新初始化。·

修改 src/views/layout/components/AppMain.vue 文件如下:

通过生成动态 key,每次路由发生变化时<router-view>都会重新渲染。这种方法可以避免因为路由名称相同导致的缓存问题,从而确保页面在切换时正确刷新。

<router-view:key="key"></router-view>
...
computed: {
key() {
returnthis.$route.name !== undefined? this.$route.name + +newDate(): this.$route + +newDate()}}

接着之前在add.vue的created方法中,在判断完是否存在id值(if)后,添加一个else语句,即如果执行的是添加操作,则表单数据清空,将hospitalSet属性赋值为空。

2、数据字典介绍

数据字典就是管理系统常用的分类数据或者一些固定数据,例如:省市区三级联动数据、民族数据、行业数据、学历数据等,由于该系统大量使用这种数据,所以我们要做一个数据管理方便管理系统数据,一般系统基本都会做数据管理。

表设计及分析

创建yygh_cmn数据库,里面创建dict表,以下除了(创建时间更新时间是否删除字段外)

字段名含义
id自身id,每一个name都对应不同的id
parent_id上级 ID,通过 id 与 parent_id 构建上下级关系
name名称,用于数据字典中的名称展示
value值,用于标识数据字典的具体值
dict_code编码,全局唯一的自定义编码

全部分类是级别最高的,所以它的id是1,并且没有上级;对应医院等级证件类型...,他们属于其下属级别。

value值对应用户填写的信息。1表示医院等级是三级甲等

dict_code的作用是对应医院等级、学历...这一分类,因为它们的parent_id都为1,不好单独区分,所以可以根据编码来获取指定类型数据(比如医院等级都为一级的医院)。
在这里插入图片描述

3、搭建service-cmn模块

和搭建service-hosp类似

在后端创建service-cmn模块,首先仿照service-hosp,创建application.properties配置文件

创建启动类ServiceCmnApplication。添加好@SpringBootApplication@ComponentScan注释和main方法

再创建mappercontrollerserviceconfig文件夹

其中config中创建CmnConfig配置类,用于指定MyBatis Mapper接口所在的包路径以及组件集中声明管理

在model模块已经创建了对数据字典实体类的封装(Dict),对应其表结构(id、paren_id...),所以在mapper接口(DictSetMapper)创建时,继承BaseMapper,指定泛型为它即可

封装类的额外操作

  • 如果希望在前端使用element-ui创建的表格中呈现多级效果,类似于下拉选项,则必须提供hasChildren 字段来指定哪些行是包含子节点
  • 所以在实体类的创建中,需要多添加一个boolean类型属性hasChildren,来表示是否有子节点
  • 但是在数据库中并无该字段,所以需要在该属性上添加注解@TableField(exist = false)
  • 其是 MyBatis-Plus 框架中的一个注解,用于在实体类的字段上标记该字段不与数据库表中的任何字段对应`

紧接着在service文件夹创建DictService接口和对应的DictServiceImpl

在controller文件夹创建DictController,实例化DictService类,设置@RestControllerCrossOrigin等注解

4、数据字典接口-列表功能

DictController创建对应接口函数

  1. 根据数据id查询子数据列表

思路是设置请求方式为get,在url中获取id值,再根据id查找对应paren_id ==idList<Dict>集合

其中,根据id查询对应集合的功能,需要在DictService中声明该方法,并在DictServiceImpl中实现该方法,逻辑是创建QueryWrapper对象构建条件,判断利用wrapper.eq()方法实现paren_id ==id效果,并根据wrapper返回集合List。

这里还需要一个功能是判断id下是否有子节点,这关系到hasChildren字段的值设置。

接着在findChildData中调用该方法,利用集合遍历,并根据集合中的id再次查询它们作为别人的子节点,是否自己也有子节点。

 //根据数据id查询子数据列表@Overridepublic List<Dict> findChildData(Long id) {QueryWrapper<Dict> wrapper = new QueryWrapper<>();wrapper.eq("parent_id",id);List<Dict> dictList = baseMapper.selectList(wrapper);//向list集合每个dist对象中设置hasChildrenfor (Dict dict :dictList){Long dictId = dict.getId();boolean isChildren = this.isChildren(dictId);dict.setHasChildren(isChildren);}return dictList;}//判断id下面是否有子节点private boolean isChildren(Long id){QueryWrapper<Dict> wrapper = new QueryWrapper<>();wrapper.eq("parent_id",id);Integer count = baseMapper.selectCount(wrapper);return count>0;}

在测试时需要注意两个问题

  • 运行时运行的是8202配置运行类,而不是之前8201的了,否则开启的是8201的端口,打不开对应的swagger页面
  • 在两个模块同时声明同一个mybatis-plus插件时,即Spring Boot 应用中定义了两个同名的 @Bean,由于 Spring Boot 默认不允许 Bean 名称冲突,因此应用启动失败。
  • 解决方法:可以选择在一个配置类中重命名 以避免命名冲突。
@Bean(name = "customPaginationInterceptor")
public PaginationInterceptor paginationInterceptor() {return new PaginationInterceptor();
}

前端配置

第一步是在路由router/index.js添加配置,主要包括定义路径、名称、跳转路径等。

其中跳转路径定义为views/dict/list.vue,在api/dict定义接口调用方法

在list.vue中,依旧跟之前一致,在return中初始化变量list:[]作为数据字典列表数组,在method中创建getDictList方法,内部调用dict.js中的dictList方法,在created中,页面渲染前调用getDictList方法,并传id值为1

在前端展示代码中,结合element-ui标签,解释下方内容

:data="list": 绑定了一个名为 list 的数据源,表格会根据这个数据源动态渲染行数据。

:load="getChildrens": 指定当需要加载子节点时调用的函数,这个函数会在懒加载模式下被触发,通常用于获取子节点的数据。

:tree-props="{children: 'children', hasChildren: 'hasChildren'}": 用于定义树形结构的数据属性,children 表示子节点的字段名,hasChildren 表示是否有子节点的字段名。

 <el-table:data="list"style="width: 100%"row-key="id"borderlazy:load="getChildrens":tree-props="{children: 'children', hasChildren: 'hasChildren'}"><el-table-column label="名称" width="230" align="left"><template slot-scope="scope"><span>{{ scope.row.name }}</span></template></el-table-column>...</el-table>

这里getChildrens函数

  • tree:当前树节点的数据对象。tree.id 表示当前节点的唯一标识
  • treeNode:Element UI 树形表格组件传递的节点信息对象。这里并未使用,但可以包含节点的层级、状态等信息。
  • resolve:一个回调函数,用于通知 el-table 加载完成的数据。将异步请求的数据通过 resolve 返回给表格进行渲染。
getChildrens(tree, treeNode, resolve) {dict.dictList(tree.id).then(response => {resolve(response.data)})}

在测试时,需要把dev.env.js中的BASE_API修改为8202,并且修改后需要重新启动npm run dev

还碰到一个问题是,在前端路由定义时,是分为了数据管理数据字典两个部分的,但是在显示过程中并没有下拉菜单,所以在router/index.js添加alwaysShow:true

在这里插入图片描述

在医院等级等下面,并没有下滑按钮显示更下一层级的数据,这里考虑更换element-ui依赖版本,在package.json中,将原有的"element-ui": "2.4.6"改为2.12.0,并在vue-admin-template-master文件夹中找到element-ui文件夹删除(好像不删也可以直接下载覆盖)

如果报错:需要来自administrator的权限才能对此文件夹进行更改参照此处

并且注意把项目关了再删除,随后npm install即可。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/457555.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

改进YOLOv8系列:引入低照度图像增强网络Retinexformer | 优化低光照目标检测那题

改进YOLOv8系列:引入低照度图像增强网络Retinexformer | 优化低光照目标检测那题 🚀论文研究概括🚀加入到网络中的理论研究🚀需要修改的代码1 🍀🍀Retinexformer 代码2🍀🍀tasks里引用🚀创建yaml文件🚀测试是否创建成功前言:这篇论文提出了一种用于低光图像…

STM32应用详解(10)I2C总线初始化

文章目录 前言一、I2C总线初始化二、程序源码与详解1.I2C初始化2.I2C端口初始化及设置IO端口工作模式3.函数I2C_Init4.函数I2C_Cmd5.使能APB1外设时钟6.I2C通信时序图 前言 介绍STM32的I2C总线初始化&#xff0c;给出了代码详解。《i2c.h》文件&#xff0c;由用户编写。定义了…

系统聚类比较——最短距离法、最长距离法、重心法和类平均法

系统聚类概述 系统聚类&#xff0c;又称分层聚类法&#xff0c;是一种用于分析数据的统计方法&#xff0c;在生物学、分类学、社会网络等领域有广泛应用。以下是对系统聚类的详细概述&#xff1a; 一、基本思想 系统聚类的基本思想是将每个样品&#xff08;或数据点&#xf…

OAK相机的RGB-D彩色相机去畸变做对齐

▌低畸变标准镜头的OAK相机RGB-D对齐的方法 OAK相机内置的RGB-D管道会自动将深度图和RGB图对齐。其思想是将深度图像中的每个像素与彩色图像中对应的相应像素对齐。产生的RGB-D图像可以用于OAK内置的图像识别模型将识别到的2D物体自动映射到三维空间中去&#xff0c;或者产生的…

深入理解Python异常处理机制

在Python编程中&#xff0c;异常处理是一个非常重要的概念。它可以帮助我们捕获程序运行过程中出现的错误&#xff0c;防止程序崩溃&#xff0c;并提供友好的错误信息。本文将详细讲解Python的异常处理机制&#xff0c;并提供丰富的代码示例&#xff0c;帮助您更好地理解和应用…

【Spring MVC】响应结果和设置

​ 我的主页&#xff1a;2的n次方_ 1. 返回静态页面 先创建一个 html 页面 ​ 如果还按照之前的方式进行返回的话&#xff0c;返回的并不是一个 html 页面 RequestMapping("/response") RestController public class ResponseController {RequestMapping(&quo…

React基础使用教程

初识JSX React主要使用的就是jsx语法来编写dom&#xff0c;所以我们要先认识jsx&#xff0c;然后再开始学习两者相结合jsx其实就是在JS中编写HTML的一种写法编写jsx要注意以下几个规则&#xff1a; 定义虚拟DOM时&#xff0c;不要写引号标签中混入JS表达式时要用{}样式的类名指…

2024 Rust现代实用教程:1.3获取rust的库国内源以及windows下的操作

文章目录 一、使用Cargo第三方库1.直接修改Cargo.toml2.使用cargo-edit插件3.设置国内源4.与windows下面的rust不同点 参考 一、使用Cargo第三方库 1.直接修改Cargo.toml rust语言的库&#xff1a;crate 黏贴至Cargo.toml 保存完毕之后&#xff0c;自动下载依赖 拷贝crat…

形态学-闭运算

目录 依赖库显示图像的函数读取图像转换为灰度图像应用二值化阈值处理创建结构元素应用形态学闭运算显示结果 依赖库 首先&#xff0c;我们需要导入必要的库&#xff1a; import cv2 import numpy as npcv2 是OpenCV的Python接口&#xff0c;用于图像处理。numpy 是一个用于科…

在时间敏感网络中启用网络诊断:协议、算法和硬件

英文论文标题&#xff1a;Enabling Network Diagnostics in Time-Sensitive Networking: Protocol, Algorithm, and Hardware 作者信息&#xff1a; Zeyu Wang, Xiaowu He, Xiangwen Zhuge, Shen Xu, Fan Dang, Jingao Xu, Zheng Yang所属机构&#xff1a;清华大学软件学院和…

Pytorch笔记--RuntimeError: NCCL communicator was aborted on rank 3.

1--分布式并行训练&#xff0c;出现以下bug&#xff1a; [E ProcessGroupNCCL.cpp:719] [Rank 3] Watchdog caught collective operation timeout: WorkNCCL(SeqNum1721483, OpTypeALLREDUCE, Timeout(ms)1800000) ran for 1805695 milliseconds before timing out. RuntimeErr…

Docker:安装 Syslog-ng 的技术指南

1、简述 Syslog-ng 是一种流行的日志管理工具&#xff0c;能够集中处理和分析日志。通过 Docker 安装 Syslog-ng 可以简化部署和管理过程。本文将介绍如何使用 Docker 安装 Syslog-ng&#xff0c;并提供一个 Java 示例来展示如何将日志发送到 Syslog-ng。 2、安装 2.1 创建…

[mysql]子查询的概述和分类及单行子查询

子查询引入 查询的基本结构已经给大家了,子查询里面也是有一些新的内容,子查询其实就是在查询中嵌套另一个查询,叫嵌套查询可能大家更容易理解一点..,类似与FOR循环和FOR循环的嵌套,这一章是我们查询的最难的部分,大家 难度是查询的顶峰,多表查询和子查询是非常重要,SQL优化里…

【CUDA代码实践02】矩阵加法运算程序

文章目录 main.cu代码工作流程 matrixSum.cuhmatrixSum.cu代码结构说明总体工作流程 近年来&#xff0c;人工智能&#xff08;AI&#xff09;技术&#xff0c;尤其是大模型的快速发展&#xff0c;打开了全新的时代大门。对于想要在这个时代迅速成长并提升自身能力的个人而言&am…

k8s可以部署私有云吗?私有云部署全攻略

k8s可以部署私有云吗&#xff1f;K8S可以部署私有云。Kubernetes是一个开源的容器编排引擎&#xff0c;能够自动化容器的部署、扩展和管理&#xff0c;使得应用可以在各种环境中高效运行。通过使用Kubernetes&#xff0c;企业可以在自己的数据中心或私有云环境中搭建和管理容器…

OpenSSH_8.7 无法使用密码登录问题解决

文章目录 前言SSH 版本 配置 SSH 密码登录其它总结个人简介 前言 最近使用 Crunchbits VPS&#xff08;virt.crunchbits.com&#xff09; 时&#xff0c;由于更换电脑导致认证的 ssh 秘钥丢失&#xff0c;尝试 SSH 密码登录时遇到如下错误提示&#xff1a;Permission denied (…

探索 Python 幽默之源:pyjokes 库全解析

&#x1f680; 探索 Python 幽默之源&#xff1a;pyjokes 库全解析 1. 背景介绍&#xff1a;为何选择 pyjokes&#xff1f; 在紧张的编程工作中&#xff0c;幽默是一种有效的缓解压力的方式。pyjokes 是一个专为程序员设计的 Python 库&#xff0c;它提供了丰富的单行笑话&am…

【Dv2Admin】Django配置线上ws反向代理

在 Web 应用程序的部署过程中,安全性、稳定性和实时通信是开发者们普遍关注的重点。Django 是一个非常流行的 Web 框架,常与 Nginx 配合使用,以便实现反向代理、负载均衡以及 SSL 加密等功能。除此之外,实时功能(如 WebSocket)也是现代应用中经常使用的技术。 在项目中实…

Fast Simulation of Mass-Spring Systems in Rust 论文阅读

参考资料&#xff1a; Fast Simulation of Mass-Spring Systems in Rust 论文阅读&#xff1a;Fast Simulation of Mass-Spring Systems 【论文精读】讲解刘天添2013年的fast simulation of mass spring system(Projective Dynamics最早的论文) Projective Dynamics笔记(一…

uniapp圆形波浪进度效果

uniapp圆形波浪进度效果 背景实现思路代码实现尾巴 背景 最近项目中有些统计的地方需要用到圆形的波浪进度效果&#xff0c;要求是根据百分比值然后在一个圆形内动态的展示一个波浪形的进度&#xff0c;看参考一下效果。 实现思路 这个效果看着挺复杂的&#xff0c;那么我们…