使用elementUI组件实现表格的分页以及搜索功能

news2025/7/10 12:08:39

主要的UI组件:el-input、el-table、el-pagination

效果展示:

 主要功能:

① 完成列表与分页组件的联动,可以通过分页来实现列表数据翻页。

② 通过在搜索栏输入关键词,在列表中展示出与关键词有关数据。

基础设置:

一、el-input组件的设置

主要代码:

<el-input  v-model="inputContent" class="searchinput" placeholder="请输入姓名或身份证进行查询" prefix-icon="el-icon-search" >
    <el-button slot="append" class="searchbtn" @click="searchput">搜索</el-button>
</el-input>

二、el-table组件的设置

主要代码:

<el-table
      :data="tables[0].slice((currentPage - 1) * pageSize, currentPage*pageSize)"
      style="width: 100%">
      <el-table-column
        prop="name"
        label="姓名"
        width="150">
      </el-table-column>
      <el-table-column
        prop="idcount"
        label="身份证号"
        width="300">
      </el-table-column>
      <el-table-column
        prop="address"
        label="所属地区">
      </el-table-column>
<el-table-column
        prop="cla"
        label="风险预警场景">
      </el-table-column>
<el-table-column
        prop="level"
        label="风险预警等级"
		width="120">
      </el-table-column>
<el-table-column
        prop="time"
        label="风险预警时间"
		width="120">
      </el-table-column>
<el-table-column
        prop="result"
        label="风险预警因素"
		width="280">
      </el-table-column>
    </el-table>

在data中声明tableData的数据:

 tableData: [{
            name: '张李某',
            idcount: '123456789012345678',
            address: '上海市普陀区金沙江路 1518 弄',
			cla:'重点信访风险人员',
			level:'高',
			time:'2022-05-27',
			result:'维稳人员,近3年矛盾纠纷频发…'
          }, {
            name: '张某某',
            idcount: '123456789012345678',
            address: '上海市普陀区金沙江路 1518 弄',
			cla:'重点信访风险人员',
			level:'高',
			time:'2022-05-27',
			result:'维稳人员,近3年矛盾纠纷频发…'
          },
					   {
            name: '张某某',
            idcount: '123456789012345678',
            address: '上海市普陀区金沙江路 1518 弄',
			cla:'重点信访风险人员',
			level:'高',
			time:'2022-05-27',
			result:'维稳人员,近3年矛盾纠纷频发…'
          },
					   {
            name: '张某某',
            idcount: '123456789012345678',
            address: '上海市普陀区金沙江路 1518 弄',
			cla:'重点信访风险人员',
			level:'高',
			time:'2022-05-27',
			result:'维稳人员,近3年矛盾纠纷频发…'
          },
					   {
            name: '张某某',
            idcount: '123456789012345678',
            address: '上海市普陀区金沙江路 1518 弄',
			cla:'重点信访风险人员',
			level:'高',
			time:'2022-05-27',
			result:'维稳人员,近3年矛盾纠纷频发…'
          },.............

三、el-pagination组件的设置

主要代码:

<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-size="pageSize"
  background="true"
  layout="prev, pager, next"
  :total="count"
  class="fenye">
</el-pagination>

@size-change为改变每个页面展示的数据量的方法。

@current-change为改变当前页的方法。

在data中声明变量currentPage,pageSize,分别为默认页,以及默认尺寸。

currentPage: 1,
pageSize: 12
------------------------------- 
methods: {
        handleSizeChange(val){
		this.pageSize=val;
		},
		  handleCurrentChange(val){
		this.currentPage=val;
		}

total为整个table一共拥有的数据量,该数据量的值会改变分页组件页码的个数。

 相关功能实现:

一、el-pagination与el-table联动实现列表分页

两者联动较为简单,只需要将列表的整体数据根据currentPage和pageSize的值进行分割:

<el-table
      :data="tables[0].slice((currentPage - 1) * pageSize, currentPage*pageSize)"
      style="width: 100%">

tables[0]为处理好的整体列表数据(tables与tableData的关系与搜索功能有关,下面会介绍)。

二、el-input与el-table联动实现列表搜索

首先,需要对el-input中输入的值进行v-model双向绑定,这样可以得到输入的值,并在按钮中建立一个点击事件,因为我们要实现的功能是点击搜索按钮进行搜索,所以防止在input框中输入值后自动完成搜索,所以需要设立点击事件,以及将inputContent的值转给searchContent。

<el-input  v-model="inputContent" class="searchinput" placeholder="请输入姓名或身份证进行查询" prefix-icon="el-icon-search" >
		 <el-button slot="append" class="searchbtn" @click="searchput">搜索</el-button>
		</el-input>
---------------
searchput(){
		this.searchContent=this.inputContent
		  console.log(this.searchContent)
		}  
---------------
searchContent:'',
inputContent:'',

 定义一个computed值tables替代tableData,首先,为了使el-pagination的total跟随搜索后的数据总数改变,所以我们要返回两个值,用数组的形式代替,tables[0]为返回的数据值,tables[1]为返回数据的长度也就是数量。

tables我们首先将searchContent的值传递给search,然后判断,当搜索栏输入为空时,返回的就是tableData的原始数据;当搜索栏不为空时,首先用filter过滤tableData内的每一个对象数组,然后在通过keys拿到每一列数据的key值,再通过some()和indexof()判断每一列数据中的每一个key值所对应的值中有没有与search相同的元素,并返回该元素所在的数据组,这样就得到所有存在该关键字的数据。

computed:{
tables() {
      const search = this.searchContent;
 //当将input框清空时,使列表自动展示搜索前的完整数据,并返回至首页,防止叠加搜索
	  if(this.inputContent==''){
		this.searchContent=''
		this.currentPage=1
	  return [this.tableData,this.count=this.tableData.length];
	  }
      if (search!=='') {
        return [this.tableData.filter((dataNews) => {
          return Object.keys(dataNews).some((key) => {
            return String(dataNews[key]).toLowerCase().indexOf(search) > -1;
          });
        }),
				this.count = this.tableData.filter((dataNews) => {
          return Object.keys(dataNews).some((key) => {
            return String(dataNews[key]).toLowerCase().indexOf(search) > -1;
          });
        }).length];
      }
      return [this.tableData,this.count=this.tableData.length];
	}
}

三、效果展示

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微信小程序实现滑动/点击切换Tab

背景 &#x1f44f; swiperscroll-view实现滑动/点击切换Tab&#xff0c;以及scroll-left的使用~ &#x1f947;文末分享源代码。记得点赞关注收藏&#xff01; 1.实现效果 2.实现步骤 2.1 scroll-view实现tab列表 scroll-view&#xff1a; 可滚动视图区域。使用竖向滚动时…

jsPDF + html2canvas A4分页截断 完美解决方案(含代码 + 案例)

业务需求 网页html生成A4大小分页的pdf&#xff0c;翻遍了整个互联网发现没有很系统的整理与分析&#xff0c;甚至对jsPDF的解析也没有几篇。遇到过几次&#xff0c;用的比较多&#xff0c;完成代码编写后特此整理分析&#xff0c;自我记录。 业务难点 1.存在图片/组件/文字…

vue弹窗如何嵌入其它vue页面

文章目录说明子组件&#xff0c;将要引入到弹框内的页面父页面思考组件 v-if 和 v-show 切换时生命周期钩子的执行说明 【1】实现方式&#xff0c;将其他页面作为组件传入 【2】在父页面&#xff0c;将该组件引入到弹框内&#xff0c;并通过动态渲染进行切换 子组件&#xff0…

使用宝塔面板快速搭建web网站,并内网穿透实现公网远程访问

目录 1. 环境安装 2. 安装cpolar内网穿透 3. 内网穿透 4. 固定http地址 5. 配置二级子域名 6. 创建一个测试页面 宝塔面板简单几步搭建本地web站点&#xff0c;并做内网穿透&#xff0c;实现公网用户也可以正常远程访问&#xff0c;无需公网IP&#xff0c;无需设置路由器…

echarts入门基础教程

目录 效果图 1.下载资源 新建项目 2.引入echarts 3.准备一个呈现图表的盒子 4.初始化echarts实例对象 5.准备配置项 6.将配置项设置给echarts实例对象 7.完整代码 效果图 1.下载资源 新建项目 去官网下载echarts压缩包&#xff0c;在包里的dist文件里找到echarts.min.j…

使用vite构建Vue3组件库,发布npm包

使用vite构建Vue3组件库&#xff0c;发布npm包 在国内用vue框架开发的是非常之多的&#xff0c;使用vue开发组件封装是一个很普片的事情了&#xff0c;封装好一个组件可以在项目的任意地方去使用&#xff0c;我们还可以从npm仓库下载别人封装的组件进行使用&#xff0c;比如ele…

基于Java+Springboot+vue高校资源共享交流平台设计和实现

博主介绍&#xff1a;✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

【完整代码】用HTML/CSS制作一个美观的个人简介网页

【完整代码】用HTML/CSS制作一个美观的个人简介网页整体结构完整代码用HTML/CSS制作一个美观的个人简介网页——学习周记1HELLO&#xff01;大家好&#xff0c;由于《用HTML/CSS制作一个美观的个人简介网页》这篇笔记有幸被很多伙伴关注&#xff0c;于是特意去找了之前写的完整…

web前端框架——Vue的特性

目录 前言&#xff1a; 一.vue 二.特性 1.轻量级 2.数据绑定 3.指令 4.插件 三.比较Angular 、React 、Vue 框架之间的比较 1. Angular Angular的优点&#xff1a; 2. React React 的优点&#xff1a; 3.vue 3.Vue的优点&#xff1a; 前言&#xff1a; 本篇文章…

【Vue】初识Vue,Vue简介及Vue Devtools配置

目录1. Vue是什么2. Vue的特点3. Vue的引入方式4. 安装Vue Devtools5. 第一个Vue案例1. Vue是什么 关于这个问题官方给了我们答案&#xff1a; 一套用于构建用户界面的渐进式JavaScript框架 渐进式框架是指我们可以在项目中一点点来引入和使用Vue&#xff0c;而不一定需要全部…

【vue2】使用vue常见的业务流程与实现思路

&#x1f973;博 主&#xff1a;初映CY的前说(前端领域) &#x1f31e;个人信条&#xff1a;想要变成得到&#xff0c;中间还有做到&#xff01; &#x1f918;本文核心&#xff1a;vue的业务处理思路。前台数据渲染与后台的增删改查操作 【前言】当大家会点开这一篇文章…

手把手教你基于HTML、CSS搭建我的相册(下)

The sand accumulates to form a pagoda⭐ 写在前面⭐ 相册中心部分⭐ 添加照片⭐ 图片展示样式⭐ 搭建底部版权模块⭐ 写在最后⭐ 写在前面 经常有一些粉丝咨询前端该从什么开始学&#xff0c;那当然是我们的前端基础三件套开始学起&#xff0c;HTML、CSS、javaScript&#x…

Java Web 实战 15 - 计算机网络之网络编程套接字

文章目录一 . 网络编程中的基本概念1.1 网络编程1.2 客户端(client) / 服务器(server)1.3 请求(request) / 响应(response)1.4 客户端和服务器之间的交互数据1.4.1 一问一答1.4.2 多问一答1.4.3 一问多答1.4.4 多问多答二 . socket 套接字2.1 UDP 的 Socket API2.1.1 引子2.1.2…

网络安全工具大合集

还是一句话&#xff0c;功夫再高&#xff0c;也怕菜刀首先&#xff0c;恭喜你发现了宝藏。本文章集成了全网优秀的开源攻防武器项目&#xff0c;包含&#xff1a;信息收集工具&#xff08;自动化利用工具、资产发现工具、目录扫描工具、子域名收集工具、指纹识别工具、端口扫描…

为什么说网络安全是风口行业?是IT行业最后的红利?

前言 “没有网络安全就没有国家安全”。当前&#xff0c;网络安全已被提升到国家战略的高度&#xff0c;成为影响国家安全、社会稳定至关重要的因素之一。 网络安全行业特点 1、就业薪资非常高&#xff0c;涨薪快 2021年猎聘网发布网络安全行业就业薪资行业最高人均33.77万&…

2023最新高频前端面试题总结(附答案)

目录 1.vue双向数据绑定的原理&#xff1f; 2.vue的生命周期有哪些 3.v-if 和v-show有什么区别&#xff1f; 4.async await 是什么&#xff1f;它有哪些作用&#xff1f; 5、数组常用的方法&#xff1f;哪些方法会改变原数组&#xff0c;哪些不会 6.什么是原型链&#xf…

脱不下孔乙己的长衫,现代的年轻人该怎么办?

“如果我没读过书&#xff0c;我还可以做别的工作&#xff0c;可我偏偏读过书” “学历本该是我的敲门砖&#xff0c;却成了我脱不下的长衫。” 最近&#xff0c;“脱下孔乙己的长衫”在网上火了。在鲁迅的原著小说中&#xff0c;孔乙己属于知识阶级&#xff08;长衫客&#xf…

国产ChatGPT大战弱智吧效果实测!网页端小程序均已上线,人人可玩

杨净 萧箫 发自 凹非寺量子位 | 公众号 QbitAI“中国版ChatGPT首发”&#xff0c;争得不可开交&#xff0c;热闹却一直没个结果——自ChatGPT发布以来&#xff0c;目前进展最快的国内产品也仅是开启了内测&#xff0c;不知道啥时候才能玩上。结果现在有读者跟我们爆料&#xff…

Vue3+TypeScript项目报错: 找不到名称“require”。是否需要为节点安装类型定义?

Vue3TypeScript项目编写代码时报错&#xff1a;找不到名称“require”。是否需要为节点安装类型定义?请尝试使用 npm i --save-dev types/node。 描述&#xff1a;今天在开发项目时&#xff08;项目框架为Vue3TypeScript&#xff09;需要 动态引入静态资源&#xff0c;也就是…

Vue--Router--嵌套路由(children)的用法

原文网址&#xff1a;Vue--Router--嵌套路由(children)的用法_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍Vue Router的嵌套路由的用法。 嵌套路由就是父路由里面嵌套他的子路由&#xff0c;父路由有自己的路由导航和路由容器&#xff08;router-link、router-view&#x…