医院信息化与智能化系统(6)
医院信息化与智能化系统(6)
这里只描述对应过程,和可能遇到的问题及解决办法以及对应的参考链接,并不会直接每一步详细配置
如果你想通过文字描述或代码画流程图,可以试试PlantUML
,告诉GPT你的文件结构,让他给你对应的代码
预约挂号微服务模块搭建
前端知识点补充,此章节不会详细讲具体前端的每个知识点
1、npm run dev
在终端输入启动项目的命令npm run dev
语句会直接进入模版网页中,但我们需要了解一下大致的流程。
它会首先找到package.json 文件:
npm 会查看项目根目录下的 package.json 文件,寻找 scripts 部分的 dev 脚本定义。
随后它会执行该脚本:
"dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js"
这条命令的作用是启动一个 Webpack 开发服务器
,支持内联热模块替换
,显示打包进度
,并使用指定的 Webpack 配置文件
进行打包。
在webpack.dev.conf.js
文件中有一个语句
const baseWebpackConfig = require('./webpack.base.conf')
,作用是导入一个通用的 Webpack 配置文件,并允许在当前的配置文件中使用这些基础配置。
那来分析一下这个webpack.base.conf.js
的部分
入口名称:
app
入口文件:
src文件夹下的main.js
filename:
指定输出文件的名称,这里使用 [name].js,其中 [name] 将被入口名称替换(app.js)。
HtmlWebpackPlugin:
该插件生成一个 HTML(index.html)
文件,并自动将打包后的 main.js文件注入到 该HTML,作为用户在浏览器中看到的页面结构。
entry: {app: './src/main.js'},output: {path: config.build.assetsRoot,filename: '[name].js',...}...plugins: [new HtmlWebpackPlugin({filename: 'index.html',template: 'index.html',inject: true,favicon: resolve('favicon.ico'),title: 'vue-admin-template'})]
为了理清楚工程文件
index.html:
项目的入口文件。它包含基本的 HTML 结构,其中<div id="app"></div>
是用于挂载 Vue 实例的元素。所有的 Vue 组件最终都会渲染到这个 div 中。
main.js:
Vue 项目的重要文件,负责初始化应用。它导入 Vue 库、应用的核心组件(如 App.vue
)、路由配置(如 router/index.js
)和状态管理(如 store/index.js
)。在这里,创建 Vue 实例并将其挂载到 #app 元素
上。
App.vue:
应用的核心组件,负责结构和路由管理。它通常包含 <router-view/>
组件,用于动态渲染当前路由对应的视图。App.vue 还可以包含全局样式和布局。通过 Vue Router
,App.vue
控制页面的切换,实现单页面应用的功能。
还有一个理解(可能需要考虑是否正确
):
main.js:
主要负责导入依赖(如 Vue、插件、样式库等),并在此处建立整个应用的模块之间的依赖关系。由于它是应用的入口文件,Webpack 会打包这个文件及其所有导入的依赖,确保这些依赖在浏览器中可用。
App.vue:
主要是作为一个组件的定义,负责导入其他组件并构建应用的 UI 结构。它内部的组件和逻辑将被 main.js 导入并渲染,形成完整的应用视图。
因此,main.js
作为依赖导入的中心文件,负责初始化和设置,而 App.vue
则作为组件的容器,负责构建用户界面。
继续看代码
在webpack.dev.conf.js
中'process.env': require('../config/dev.env')
代码表示了一个全局常量值,该文件是一个js
文件,指定了默认访问后端的接口路径BASE_API
,后续可能要根据自己的路径进行修改。
在该文件的同一目录下,有一个名为index.js
的文件,这里有几个需要关注的值。
host: 'localhost'
当前项目主机名port: 9528
当前项目端口号useEslint: true
代码检查插件,可以改为false
2、登录代码改造
遇到的问题:默认情况下,前端项目已经实现了登录功能,后端连接到远程Mock平台
的模拟数据接口进行登录,而Mock平台地址无效
,导致前端的登录功能无法执行.
解决方法是:修改.\src\store\modules\user.js
中的部分代码
此处主要的问题是调用一个名为login
的函数。当 login 函数成功返回时,执行这个回调,response
是从服务器返回的响应。应对方法是设置一个默认的data
对象,里面包含token
默认值。
actions: {// 登录Login({ commit }, userInfo) {const data = {'token':'admin'}setToken(data.token)commit('SET_TOKEN', data.token)// const username = userInfo.username.trim()// return new Promise((resolve, reject) => {// login(username, userInfo.password).then(response => {// const data = response.data// setToken(data.token)// commit('SET_TOKEN', data.token)// resolve()// }).catch(error => {// reject(error)// })// })}
获取用户信息部分同理,其中roles
表示用户角色
,avatar
表示头像
// 获取用户信息GetInfo({ commit, state }) {const data = {'roles':'admin','name':'admin','avatar':'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif'}if (data.roles && data.roles.length > 0) { // 验证返回的roles是否是一个非空数组commit('SET_ROLES', data.roles)} else {reject('getInfo: roles must be a non-null array !')}commit('SET_NAME', data.name)commit('SET_AVATAR', data.avatar)// return new Promise((resolve, reject) => {// getInfo(state.token).then(response => {// const data = response.data// if (data.roles && data.roles.length > 0) { // 验证返回的roles是否是一个非空数组// commit('SET_ROLES', data.roles)// } else {// reject('getInfo: roles must be a non-null array !')// }// commit('SET_NAME', data.name)// commit('SET_AVATAR', data.avatar)// resolve(response)// }).catch(error => {// reject(error)// })// })},
登出
与前端登出
代码操作同理
在./src/utils/request.js
找到
config.headers['X-Token'] = getToken()
语句,并将X-Token
对应改为我们之前代码中配置的token
3、框架开发流程
第一步是添加路由
在router/index.js
是在 Vue.js 项目中用于配置路由
的文件,负责定义页面访问路径与组件之间的映射关系
。
以其中部分代码作为讲解:
path: '/example'
是定义的一级路由路径
,当用户访问 /example 路径时,系统会匹配到这个路由配置。
redirect: '/example/table'
定义了路由的重定向
行为,当访问/example
时,会自动重定向到 /example/table
,即用户访问 /example 时直接跳转到表格页面。
name: 'Example'
为这个路由配置
指定一个名字。通常 name 属性在需要通过编程导航到该路由时使用,比如 router.push({ name: 'Example' })
meta: { title: 'Example', icon: 'example' }
其中meta
是路由的元信息,可以包含任意自定义属性。这段元数据中的 title
会作为页面标题显示,icon
表示这个页面在菜单中对应的图标
,值为 example
的图标
children: [...]
是这个路由的子路由
配置,表示 ·/example
下包含两个子路由:table
和 tree
,用于展示不同的内容。
第二步是设置跳转页面路径
component: () => import('@/views/table/index'):
使用懒加载
的方式加载组件,只有访问到该路由时,才会异步加载该组件,节省资源。
{path: '/example',component: Layout,redirect: '/example/table',name: 'Example',meta: { title: 'Example', icon: 'example' },children: [{path: 'table',name: 'Table',component: () => import('@/views/table/index'),meta: { title: 'Table', icon: 'table' }},{path: 'tree',name: 'Tree',component: () => import('@/views/tree/index'),meta: { title: 'Tree', icon: 'tree' }}]}
第三步 在api文件夹
创建js
文件,用来封装和后端交互的请求逻辑
以 component: () => import('@/views/table/index')
为例,它跳转的其实是index.vue文件
创建API:
在 api 文件夹中创建一个 table.js
文件,用来封装和后端交互的请求逻辑。
import request from '@/utils/request'; // 通常会有一个封装好的请求工具// 获取表格数据
export function fetchTableData(query) {return request({url: '/api/table/list', // 后端 API 地址method: 'get',params: query});
}
@/utils/request
文件的核心功能就是基于 axios
或其他 HTTP 库
,统一封装 HTTP 请求的逻辑
,包括:
- 配置基础 URL,简化 API 请求路径。
- 请求拦截器,添加 Token 或其他公共请求头。
- 响应拦截器,统一处理响应数据和错误。
- 错误处理,简化每个 API 请求的异常处理。
- 请求超时、取消重复请求等功能,提高用户体验。
第四步 在页面引入js
文件,使用axios
进行调用
调用 API 并展示数据:
在 views/table/index.vue
中,通过引入api/table.js
中的方法获取数据,并将数据展示在页面上。
相关文章:

医院信息化与智能化系统(6)
医院信息化与智能化系统(6) 这里只描述对应过程,和可能遇到的问题及解决办法以及对应的参考链接,并不会直接每一步详细配置 如果你想通过文字描述或代码画流程图,可以试试PlantUML,告诉GPT你的文件结构,让他给你对应的…...
前端学习---(6)js基础--4
Promise Promise 是异步编程的一种新的解决方案和规范。 Promise优点: 1、可以很好地解决ES5中的回调地狱的问题(避免了层层嵌套的回调函数)。 2、统一规范、语法简洁、可读性和和可维护性强。 3、Promise 对象提供了简洁的 API,使得管理异步…...

241026-RHEL如何以root身份卸载Docker
在 RHEL 8.8 中,以 root 身份卸载 Docker 可以通过以下步骤完成: 停止 Docker 服务(如果已启动): sudo systemctl stop docker删除 Docker 包: 运行以下命令卸载 Docker 引擎及其依赖包(docker-…...

iPhone当U盘使用的方法 - iTunes共享文件夹无法复制到电脑怎么办 - 如何100%写入读出
效果图 从iPhone复制文件夹到windows电脑 步骤windows 打开iTunes通过USB连接iPhone和电脑手机允许授权iTunes中点击手机图标,进入到点击左边“文件共享”,在右边随便选择一个App(随意...)写入U盘:拖动电脑的文件&am…...

jenkins ssh 免密报错Host key verification failed.
jenkins 发布项目,ssh连接远程服务器时报错:Host key verification failed. 解决: 原因是生成的sshkey不是用的jenkins用户,所以切换用户到:jenkins重新生成sshkey su jenkins ssh-keygen -t rsa ssh-copy-id -i ~/…...
智能科学与技术(一级学科)介绍
智能科学与技术:探索智能的边界与未来 智能科学与技术的起源与发展学科定位与内涵学科范围与研究方向培养目标相关学科 在当今这个信息爆炸的时代,人工智能(AI)已经成为科技创新的重要驱动力。随着技术的不断进步,智能…...

iOS调试真机出现的 “__llvm_profile_initialize“ 错误
一、错误形式: app启动就崩溃,如下: Demo__llvm_profile_initialize:0x1045f7ab0 <0>: stp x20, x19, [sp, #-0x20]!0x1045f7ab4 <4>: stp x29, x30, [sp, #0x10]0x1045f7ab8 <8>: add x29, sp, #0x100x1…...
Android SELinux——neverallow问题处理(十六)
上一篇我们介绍了通过添加允许策略处理问题,这里我们主要来看一些 neverallow 策略问题该怎么处理。 一、neverallow介绍 遇到 neverallow 规则问题,千万别急着去注释/剔除里面原有的规则(原生的尽量别动)。增加 allow 规则是常见的解决办法,但是随着 android 版本的升级…...
Vue 关于路由
关于路由 路由的模式与区别 路由的两种模式: hashhistory 区别: 表象不同 hash 模式中,在地址里以 /#/ 分隔;history 模式中,地址里以 / 分隔。关于找不到当前页面发送请求的问题 history 模式会给后端发送一次请…...
香港海洋投资启动创新海洋牧场,领航全球海洋经济
香港,这座国际大都市,以其独特的地理位置和深厚的海洋文化底蕴,再次站在了全球海洋经济发展的前沿。近日,香港海洋投资发展有限公司(以下简称“香港海洋投资”)在万众瞩目中,正式宣布启动其创新…...
C/C++ 每日一练:二分查找
二分查找是一种高效的查找算法,用于在有序数组中定位目标元素的位置。它的核心思想是每次查找时将范围缩小一半。 题目要求 实现一个二分查找算法。给定一个递增排序的整型数组 arr 和一个目标值 target,编写一个函数 binarySearch,若 targe…...

Linux基础IO--重定向--缓冲区
1,为什么语言喜欢做封装? 我们先知道一个概念,显示器叫做字符设备,根据ACSLL码来打印数据,所以我们从键盘输入的 1234,在显示器看来就是一个一个的字符(1,2,3,4)而不是一千两百三十四: 下图输入字符类型数…...
Conda 安装与使用指南
Conda 是一个开源的软件包管理和环境管理系统,主要解决一个系统上同时要使用python2,python3等等多个python环境的切换问题,支持多种编程语言(如 Python、R 等),可以在 Windows、macOS 和 Linux 上运行。它…...
C++中获取硬盘ID的方法
在C++中,直接获取硬盘的ID(通常是硬盘的序列号或唯一标识符)并不是一项简单的任务,因为这通常涉及到低级的硬件访问,这通常是由操作系统或特定的硬件驱动程序管理的。标准C++库并没有提供直接访问硬盘ID的功能。 然而,可以通过以下几种方法来获取硬盘的ID: 操作系统特定…...

OpenRTP 传输增加OpenRTPServer
开源地址 最近增加了OpenRTPServer, 已经修改完成一版放在了目录下,window和linux下编译都成功了,不过由于修改代码CMakefile 需要修改,先放放 OpenRTP开源地址 vlc得纠错传输方式 我发现我代码写错以后,vlc 依然能…...
使用vue3+cesium+earthsdk+supermap实现通视分析(有版本报错问题)
main.js: 这个文件是项目的入口文件,主要进行了以下操作: 使用Vue 3的createApp创建应用实例。加载了element-plus UI 组件库。加载了router和store,以及axios用于发送HTTP请求。将@turf/turf和自定义的bus.js注册到全局属性中,便于在组件中使用。环境配置需求: 你需要安…...

python 轮子是什么
此一词语的由来是因为轮子由人类所发明,且在各方面都带来许多便利。既然轮子已被发明,而且在使用上没有什么缺陷,重新再发明一次轮子是没有意义的,只是浪费时间,分散研究者的资源,使其无法投入更有意义及价…...

农作物大豆病虫害识别分类数据集(猫脸码客第227期)
农作物大豆病虫害识别分类数据集 大豆,作为全球重要的粮食作物之一,不仅承载着人类饮食中的重要角色,还深刻影响着农业经济的发展。然而,大豆的生长过程中,常常面临着来自病害和虫害的双重威胁。这些病虫害不仅会影响…...

如何在算家云搭建GPT-SOVITS(语音转换)
一、模型介绍 GPT-SOVITS是一款强大的小样本语音转换和文本转语音 WebUI工具。它集成了声音伴奏分离、自动训练集分割、中文ASR和文本标注等辅助工具。 具有以下特征: 零样本 TTS: 输入 5 秒的声音样本并体验即时文本到语音的转换。少量样本 TTS&…...

ThinkPad T480拆机屏幕改装:便携式显示器DIY指南
ThinkPad T480拆机屏幕改装:便携式显示器DIY指南 本文记录了将旧笔记本电脑 T480 拆机屏幕改装为便携式显示器的全过程。作者在决定升级设备后,选择通过 DIY 方式利用原有的屏幕资源。文章详细介绍了屏幕驱动板的安装、螺丝孔的剪裁、排线连接及固定的步…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...

K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...

如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...

vulnyx Blogger writeup
信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

Unity UGUI Button事件流程
场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...

pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)
目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 (1)输入单引号 (2)万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...