首页 > 其他分享 >解决element-ui el-select数据过大方案

解决element-ui el-select数据过大方案

时间:2024-03-27 23:24:24浏览次数:26  
标签:el vue res hospital element item ui id select

一、背景

项目中需要用到el-select选择医院,全国医院数据量非常大,通过API读取数据页面直接卡死。

 

二、解决方案

1、组件:el-select + vue虚拟滚动(vue-virtual-scroll-list)

2、安装:npm install vue-virtual-scroll-list --save

3、参考:

    NPM地址:https://www.npmjs.com/package/vue-virtual-scroll-list

    官网地址:https://tangbc.github.io/vue-virtual-scroll-list/#/

三:参考代码

###create.vue

<template> <div> <el-form ref="dataForm" :model="form" :rules="rules" label-width="0px"> <el-descriptions :column="3" border> <el-descriptions-item labelStyle="width: 13%" contentStyle="width: 20%"> <template slot="label"><span class="red">*</span> 医院</template> <el-form-item label="" prop="hospital_id"> <el-select @change="changeValue" remote :remote-method="getListHospital" :loading="loading" v-model="form.hospital_id" :placeholder="'请输入医院'" size="small" filterable clearable> <virtual-list style="height: 150px; overflow-y: auto;" :data-key="'id'" :data-sources="hospitalData" :data-component="itemComponent" /> </el-select> </el-form-item> </el-descriptions-item> </el-descriptions> </el-form> </div> </template> <script> import {allHospital, listHospital} from "@/api/system/hospital"; import Item from "./item"; import VirtualList from 'vue-virtual-scroll-list' export default { props: ["rowData", "dialogStatus"], components: { VirtualList, }, data() { return { itemComponent: Item, hospitalData: [], loading: false, }; }, created() { if (this.dialogStatus === "update" || this.dialogStatus === "detail") { this.form = {...this.rowData}; this.getAllHospital(); } }, methods: { changeValue(id) { if (id) { let item = this.hospitalData.find(item => item.id === id); this.form.hospital_name = item.hospital } }, /** * 获取医院列表 */ getAllHospital() { if (this.form.hospital_id !== '') { let param = { id: this.form.hospital_id, field:"id,hospital" }; allHospital(param).then((res) => { if (res.code === 200) { this.hospitalData = res.data; } }); } }, getListHospital(query) { if (query !== '') { this.loading = true; setTimeout(() => { this.loading = false; let param = { hospital: query, pageSize: 100, field:"id,hospital" }; listHospital(param).then((res) => { if (res.code === 200) { this.hospitalData = res.data.data; } }); }, 200); } }, }, }; </script>



###item.vue
<template>
<el-option :label="source.hospital" :value="source.id"></el-option>
</template>

<script>
export default {
name: 'item-component',
props: {
index: { // index of current item
type: Number
},
source: { // here is: {uid: 'unique_1', text: 'abc'}
type: Object,
default() {
return {}
}
}
}
}
</script>

 

四:解决样式

1、支持el-select一切属性,利用select远程搜索,解决大数据查找问题

 

标签:el,vue,res,hospital,element,item,ui,id,select
From: https://www.cnblogs.com/bpsh/p/18100542

相关文章

  • 各种 IntelliJ IDEA 酷炫插件推荐
    (2)BackgroundImagePlusidea背景修改插件,让你的idea与众不同,可以设置自己喜欢的图片作为code背景。安装成功之后重启,菜单栏的VIew标签>点击SetBackgroundImage(没安装插件是没有这个标签的),在弹框中路由选择到本地图片,点击OK即可。(3)Grepconsole自定义日志颜色,idea控......
  • 推荐一个kafka可视化客户端GUI工具(Kafka King)
    KafkaKing,比较新,只需要填写kafka连接地址就行,不需要什么zookeeper。支持的功能也多:查看集群节点列表(完成)创建主题(支持批量)、删除主题、支持根据消费者组统计每个topic的消息积压量(完成)支持查看topic的分区的详细信息,并为主题添加额外的分区(完成)支持查看每个分区的消息offse......
  • vcf文件可以用excel打开吗?四种解决方案
    vcf文件可以用excel打开吗?当然可以。一、VCF文件简介VCF(vCard)文件是一种用于存储联系人信息的文件格式。它通常包含姓名、电话号码、电子邮件地址、地址等详细信息。VCF文件在多种设备和操作系统中广泛使用,特别是在电子邮件客户端和移动通讯应用中。二、VCF文件与Excel......
  • shell命令解释器
    shell:壳,命令解释器,负责解析用户输入的命令。命令分类①内知命令(shell内置),shell为了完成自我管理和基本的管理,不同的shell内置不同的命令,但是大部分都差不多。②外置命令,在文件系统的某个目录下,有个与命名名称相同的文件。查看命令分类:type命令typecd共有三种类型:fi......
  • SAP:界面程序上的按钮、LABEL、Checkbox等说明在哪里定义
    环境:SAPECC6:1、界面程序上的按钮、LABEL、Checkbox等说明在哪里定义?在事务码T-CODE:SE80创建程序后(如:Z12_06),在工具菜单栏点击“其它对象...”按钮,选择”增强选项“,在对象选择窗口的,选择”程序”标签页的“文本元素”。在“文本符号”标签页里输入文本内容。字段说明:符......
  • ElasticSearch的搜索相关操作
    1、基本介绍Elasticsearch的查询是基于JSON风格的DSL(DomainSpecificLanguage)来实现的。常见的查询类型包括:查询所有:查询出所有数据,一般测试用。例如:match_all全文检索(fulltext)查询:利用分词器对用户输入内容分词,然后去倒排索引库中匹配。例如:match、multi_match精确......
  • 二进制部署elasticsearch集群
    部署elasticsearch7.17.3版本背景:  业务有需求看evenet事件,由于etcd集群中的eventkey频繁打到200w+,对etcd集群压力非常大,每次都需要手动删除eventkey,非常耗时间,而且风险特别好,恢复时间慢等缺点。解决方案:  1,拆分etcd集群中的eventkey,在本机上创建一个新的etcd集群,......
  • help-man-cd命令
    Linux命令定义:在Linux操作系统中,凡是在字符操作界面中输入能够完成特定操作和任务的字符串都可以称为命令。严格来说,命令通常只代表实现某一类功能的程序的名称。格式:命令字+空格+[选项]+空格+[参数]命令字是整条命令中最关键的一部分唯一确定选项短格式选项:使用......
  • 【已解决】vue3+ts使用Element-Plus icon图标不显示|element plus 使用 icon 图标教程
    文章目录使用Element-Plusicon图标不显示的解决方案确保已正确安装和引入Element-Plus及其图标库:检查是否有命名冲突:elementplus使用icon图标教程1.安装ElementPlus2.引入ElementPlus和图标全局引入按需引入3.在组件中使用图标4.自定义图标使用E......
  • 就是这么简单,Selenium StaleElementReferenceException 异常分析与解决
    简介Selenium是一个流行的自动化测试工具,用于模拟用户与网页交互。然而,当我们在使用Selenium时,可能会遇到一个常见的异常,即StaleElementReferenceException。这个异常通常在我们尝试与网页上的元素交互时抛出,可能会导致我们的自动化测试脚本运行失败。本文将深入探讨StaleE......