vue3封装element中table组件

vue3后台管理系统封装的普通表格组件 ComtableListR.vue组件。1.普通的表格组件效果。 阅读详情

由于本人工作中用的的管理系统较多 

表格+分页的格式很多  封装很有必要

  1. 新建table组件文件   
    <template>
    	<el-table 
    		v-bind="$attrs"
    		:data="data"
    		:height="'calc( 100% - 20px )'"
    	>
    		<!-- 是否需要序号 -->
    		<el-table-column v-if="hasIndex" type="index" width="70" label="序号" />
    		<template
    			v-for="column in columns"
    			:key="column.prop"
    		>
    			<!-- 操作按钮列 -->
    			<el-table-column 
    				v-if="column.prop=='oper'"
    				v-bind="column"
    				#default="scope"
    			>
    				<el-button size="small" v-for="btn in column.operArr" :key="btn" v-bind="btn"  @click="btn.handleClick(scope.row)">
    					{{btn.label}}
    				</el-button>
    			</el-table-column>
    			<el-table-column 
    				v-else
    				v-bind="column"
    				#default="scope"
    			>
    				<el-button v-if="column.clickFun" type="primary" link @click="column.clickFun(scope.row,column.prop)">{{ scope.row[column.prop] }}</el-button>
    				<template  v-else>{{ scope.row[column.prop] }}</template>
    
    				<!-- 组合表头 -->
    				<template v-if="!!column.childrens">
    					<el-table-column show-overflow-tooltip v-for="columnC in column.childrens" :key="columnC.prop"  :prop="columnC.prop" :label="columnC.label">
    						
    						<template #default="scopeI">
    							<el-button v-if="columnC.clickFun" type="primary" link @click="columnC.clickFun(scopeI.row,columnC.prop)">{{ scopeI.row[columnC.prop] }}</el-button>
    							<template  v-else>{{ scopeI.row[columnC.prop] }}</template>
    						</template>
    					</el-table-column>
    				</template>
    			</el-table-column>
    		</template>
    	</el-table>
    	<el-pagination 
    		v-if="hasPage"
    		class="table_pagination"
    		background
    		layout="total, prev, pager, next, sizes"
    		:total="pageProps.total"
    		:current-page="pageProps.currentPage"
    		:page-size="pageProps.pageSize"
    		@size-change="handleSizeChange"
    		@current-change="handleCurrentChange"
    	
    	/>
    </template>
    
    <script lang="ts" setup>
    	const props= defineProps({
        data: {
    			type: Array,
    			default(){
    					return []
    			}
        },
    		columns: {
    			type: Array,
    			default(){
    					return []
    			}
        },
    		pageProps: {
    			default(){
    				return {
    					currentPage: 1,
    					total: 0,
    					pageSize: 10
    				}
    			}
    		},
    		handleSizeChange: {
          type: Function,
        },
    		handleCurrentChange: {
          type: Function,
        },
    		hasIndex: {
    			type: Boolean,
    			default(){
    				return true
    			}
    		},
    		hasPage: {
    			type: Boolean,
    			default(){
    				return true
    			}
    		},
       
      })
    
    
    	
    
    </script>
    <style scoped>
    	.table_pagination{
    		position: relative;
            top: -19px;
            float: right;
            margin-top: 0px;
    		right: 1px;
    	}
    </style>

    我这里表格可配置 序号 操作列 需要加链接的td 普通的td 及分页的数据等

  2. 列表页面引入
    <my-table 
       show-summary
       :data="tableData" 
       :columns="column" 
       stripe
       :pageProps="pageProps"
       :handleCurrentChange="handleCurrentChange"
       :handleSizeChange="handleSizeChange"
      >
     </my-table>

  3. 配置表格表头
    {prop: 'dataTypeDesc',label: '数据类型', },
        {prop: 'errorTypeDesc',label: '按错误量统计', childrens: [
          {prop: 'errorNum', label: '上传错误', clickFun: cellClick},
          {prop: 'finishNum', label: '重新', clickFun: cellClick},
          {prop: 'unFinishNum', label: '问题', clickFun: cellClick},
          {prop: 'unFinishNum', label: '解决成功', clickFun: cellClick},
        ] },
        {prop: 'errorTypeDesc',label: '按ID量统计', childrens: [
          {prop: 'errorNum', label: '上传错误的', clickFun: cellClick},
          {prop: 'finishNum', label: '重新上传成功', clickFun: cellClick},
          {prop: 'unFinishNum', label: '解决进度', clickFun: cellClick},
        ] },
      
        {prop: 'finishRatio', label: '解决率'},

  4. 配置数据

        请求回来给tableData和pageProps.total赋值就可以了

基于 Vue3 + Element-plus 封装的 Table 组件 这篇文章介绍了一个名为vue3-xmw-table的项目,包括项目信息、使用方法、Table属性、Column属性、tableConfig配置项、Page配置项、Slot插槽和Events事件。文章还提供了一些代码示例和配置项说明。该项目已不再维护,但可以将源码拷贝到本地进行拓展。文章没有提到任何建议和缺少的内容。 阅读详情

相关推荐

Vue3实战:Element Plus Table组件二次封装全解析

本文详细解析了Vue3项目中如何对Element Plus Table组件进行二次封装,提升开发效率。通过配置驱动的方式统一管理表格的加载状态、分页逻辑和操作栏样式,减少重复代码。文章还介绍了可编辑表格和跨页多选等高级功能的实现方案,帮助开发者快速构建高效、可维护的后台管理系统。

weixin_29009501的博客 461

Vue3表格(Table)

展示行列数据分页表格组件,支持:加载中;暂无数据;带边框;自定义样式;三种尺寸;列对齐方式;斑马条纹;自定义页头和页脚;单元格自动省略;合并单元格;可编辑单元格;可编辑行;可展开;固定列;固定表头;固定头和列;随页面滚动的固定表头和滚动条;表头分组;表格排序;可选择;总之,功能丰富,简单易用😁😁

Vue Amazing UI(Vue3 + TypeScript + Vite)组件库唯一开发维护者 1万+

别再手动写菜单了!用Vue3+Element-Plus封装一个通用的右键菜单组件(支持Tree/Table)

本文详细介绍了如何使用Vue3和Element-Plus封装一个高复用的右键菜单组件,支持Tree和Table等多种数据展示组件。通过工程化实践,实现配置化、动态菜单和权限控制,显著提升开发效率和维护性。

weixin_30908941的博客 116

vue3 实现关于 el-table 表格组件的封装以及调用

希望我的愚见能够帮助你哦~,若有不足之处,还望指出,你们有更好的解决方法,欢迎大家在评论区下方留言支持,大家一起相互学习参考呀~(4)添加排序(升序、降序)

weixin_50450473的博客 3961

Vue3+Element Plus封装高复用Table组件实战(含搜索/分页/自定义列)

本文详细介绍了如何基于Vue3和Element Plus封装高复用的Table组件,涵盖动态搜索表单、智能分页处理、多样化列渲染等核心功能。通过配置化方式实现90%表格场景的快速开发,显著提升后台管理系统的开发效率和可维护性。

weixin_30415113的博客 467

【Vue3】el-table 组件二次封装,看这一篇就够了

然而,数据的 key 作为列名的情况很少(至少在我们这里,一般是使用中文作为列名的),这就需要我们使用可定制的列名,并且,如果我们不想展示某些字段,上面的写法也是做不到的(它会显示数据的所有字段)。这时候,我们只需要一个映射(mapper)就可以解决这些问题。该对象的每一个属性对应每一列的 prop、key,值对应列的列名 label。javascript。

m0_68271787的博客 5164

Vue3 + Element Plus 二次封装 Table 组件实战指南

在前端开发中,表格(Table)组件是最常用的UI组件之一。Element Plus作为Vue3的流行UI库,提供了功能强大的Table组件。但在实际项目中,直接使用原生Table组件往往会导致代码重复、维护困难。本文将介绍如何基于Vue3和Element Plus二次封装一个更高效、更易用的Table组件。统一风格:保持项目中所有表格样式和行为一致减少重复代码:封装公共逻辑,避免每个页面重复编写相似代码提高开发效率:通过配置化方式快速生成表格便于维护:统一修改点,一处修改全局生效 2、使用示例 进阶功能

孤月葬花魂的博客 1969

vue3企业级项目二次封装el-table、分页

介绍: 1、后台管理系统用到的表格、分页很多,所以不能每个页面都写一次,通过组件通讯方式封装 2、项目选型:vite + ts + vue3 3、全篇采用<script setup>语法糖形式 4、通过带着读者手写简化版 封装技巧,了解 核心原理。全文极简备注!在书写的过程中会摘取整体框架中的核心逻辑,简化代码实现过程,保留核心功能,例如:生命周期、上下文、api使用、资源处理等内容实现。 适合人群: 1、具备一定编程基础,工作1-3年的研发人员 能学到什么: 封装技巧、api使用、 阅读建议: 此资源以开发简化版element-plus学习其原理和内核,不仅是代码编写实现也更注重内容上的需求分析和方案设计,所以在学习的过程要结合这些内容一起来实践,并调试对应的代码。

vue3二次封装element-ui中的table组件

首先,将一个普通的element-plus中的table组件引入进来,表格数据源就是我们通过父组件传递进来的data,所以我们使用defineProps来定义,并且它的数据类型是一个数组;同时我们遵循单向数据流的原则,使用lodash中的深拷贝方法将data拷贝一份出来赋值给变量tableData,将tableData传递给element-plus中的table组件,用来渲染数据。第一步完成了,我们接着再分析,还有什么是可以封装的呢?借助封装table组件的过程来巩固一下vue3相关知识点。

朝夕奔梦 1245

手把手教你用TLP350驱动IGBT:光耦隔离驱动电路完整设计教程

本文详细介绍了如何使用TLP350光耦隔离驱动电路设计IGBT驱动方案。从TLP350芯片特性分析到驱动电路架构设计,包括信号调理、自举电源和栅极控制网络,再到PCB布局优化和保护电路设计,提供了完整的实战指南。通过实测波形分析和故障排查,帮助工程师快速掌握IGBT驱动电路的设计要点和进阶技巧。

weixin_30566063的博客 828

深度学习之基于Pytorch手指静脉识别系统(

一、项目背景与目标手指静脉识别技术是一种新兴的生物特征识别技术,它依据人类手指中流动的血液可吸收特定波长的光线这一科学原理,利用手指内的静脉分布图像来进行身份识别。与传统的生物识别技术(如指纹识别)相比,手指静脉识别技术具有不易伪造、识别精度高、非接触性等特点,因此在安全性要求较高的场景(如金融、医疗、公安等)具有广阔的应用前景。本项目旨在利用PyTorch深度学习框架,构建一套高效、准确的手指静脉识别系统。

Q1744828575的博客 834

vue3 使用element-plus 如何再次封装table组件

创建一个新的 .vue 文件,例如 baseTable.vue,作为你封装后的 Table 组件。• vue3 使用element-plus 如何再次封装table组件。

weixin_43799793的博客 1355

实践指南——【SPSS操作解析】线性混合效应模型在重复测量数据中的应用

本文详细解析了线性混合效应模型在重复测量数据分析中的应用,并提供了SPSS操作指南。文章阐述了该模型如何通过区分固定效应与随机效应,有效处理数据非独立性和缺失值问题,从而获得更可靠的统计推断。

oo7890的博客 553

vue3 + ts element Plus table组件二次封装

关于table组件二次封装的设想与实现

wenyun936的博客 2818

Halcon与C#联合编程(一):使用S7协议实现机器视觉上位机与西门子PLC联动

本项目技术栈:C#基础,多线程,Halcon DirectShow,Halcon形状检测,Halcon QR码识别,西门子S7通讯协议,西门子PLC为核心的下位机及执行元件

虎鲸不是鱼 1万+

LAMMPS GCMC模拟保姆级教程:从fix gcmc命令到吸附等温线实战

本文提供LAMMPS GCMC模拟的详细教程,从fix gcmc命令设置到吸附等温线实战,涵盖巨正则蒙特卡洛模拟的全流程。通过MOF-5吸附甲烷的案例,指导用户构建模拟体系、转换化学势与压力、定义GCMC区域,并绘制出版级吸附等温线,助力材料科学研究。

weixin_33724046的博客 606

vue3 element Table组件+hook封装

vue3+ts封装Element Table

Lidppp的博客 1972

云端全自动AI漫剧生成工作流:从模型选型到完整实现

本文提出了一套云端全自动AI漫剧生成工作流解决方案,旨在解决传统漫剧制作效率低下的问题。该系统采用"编排引擎+模型矩阵"架构,通过集成大语言模型、图像生成、视频合成等技术,实现从剧本输入到成片输出的全流程自动化。 核心内容包括: 模型选型方案:剧本解析采用DeepSeek-V3/GPT-4o,图像生成使用DALL-E 3,视频合成选用Stable Video Diffusion,语音合成采用MiniMax TTS 系统架构设计:基于Celery分布式任务队列的编排层,分解任务至各功能模块

huanghm88的专栏 645

vue3封装Element Plus table表格组件

支持绝大部分Element Plus原有设置属性,支持分页,支持动态适配高度。

six6de6的博客 1260

【乐企-工具篇】有关乐企发票文件生成- OFD和PDF文件生成

有关乐企发票文件生成-OFD和PDF文件生成

九七的博客 2054

【25届数字IC秋招总结】面试经验13——豪威科技面试

25届数字ic面试记录———豪威科技

lalala0635的博客 363

vue3结合element-plus封装table列表组件

效果如下: ok,开始代码,逻辑肯定是公共部分写死,不一样的地方用插槽来完成 table.vue <template> <div class="hy-table"> <div class="header"> <slot name="header"> <div class="title">{{ title }}</div> <div class="handler">

weixin_45389051的博客 4104

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

vue3封装table组件 element Plus

<template> <div class="scTable" ref="scTableMain" :style="{ height: theight }" v-loading="loading"> <div :class="!hideDo ? 'scTable-table' : 'scTable-table-noPag'"> <el-table v-bind="$attrs" :data="tableDat.

qq_41426442的博客 5037

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Vue3-Element表格组件(el-table)的简单封装

饿了么表格组件el-table的简单封装,支持指定列自定义元素布局,待完善

m0_54731428的博客 1785

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

vue3 + ts + vite+ element Plus table 表格组件简单封装

vue3+typescript+vite+element table表格组件封装

weixin_47013239的博客 986

能在VUE3、TYPESCIPT下使用element 的table封装一个具有单选、多选、分页、导出、筛选、排序的TABLE组件吗...

是的,可以在 Vue3 和 TypeScript 下使用 element 的 table 组件封装一个具有单选、多选、分页、导出、筛选、排序功能的表格组件。 首先,安装 element-ui 和 @types/element-ui: npm install element-ui -S npm install @types/element-ui -D ...

weixin_35756624的博客 238
下一篇: 关于uni-app开发鸿蒙的踩坑记录
maxinweb
博客等级 码龄7年 45粉丝 2原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值