当前位置: 首页 > news >正文

vue封装el-table表格组件

先上效果图:
在这里插入图片描述

本文包含了具名插槽、作用域插槽、jsx语法三种:

Render.vue(很重要,必须有):

<script>
export default {name: "FreeRender",functional: true,props: {scope:Object,render: Function},render: (h, ctx) => {console.log(222,ctx.props.render);// 通过打印会发现render函数会自动用h函数进行包裹return ctx.props.render ? ctx.props.render( ctx.props.scope) : "";}
};
</script>

Table.vue

<template><div><el-table :data="tableData" style="width: 100%" :stripe="stripe" :border="border" :size="size"v-loading="loading"@selection-change="handleSelectionChange"><!-- 是否支持复选 --><el-table-column v-if="isSelection" width="55" type="selection" /><el-table-column:prop="item.param":label="item.label"v-for="(item, index) in tableColumns":key="index":sortable="item.sortable":width="item.width"><template slot-scope="scope"><div v-if="item.render2"><Render:scope='scope.row':render="item.render2"></Render></div><slot v-else-if="item.slotName" :name="item.slotName" :row2="scope.row"></slot><span v-else>{{scope.row[item.param]}}</span></template></el-table-column><!-- 操作 --><el-table-column v-if="tableOperation.label" :label="tableOperation.label"><template slot-scope="scope"><slot :name="tableOperation.param" :scope="scope"><el-buttonsize="small"v-for="(item, index) in tableOperation.btnList":key="index"@click="handleClick(scope.row, item.type)">{{item.label}}</el-button></slot></template></el-table-column></el-table></div>
</template>
<script>
import Render from "@/components/Render";
export default {name: "Table",props: {tableColumns: {type: Array,required: true,default: () => {return []}},tableData: {type: Array,required: true,default: () => {return []}},tableOperation: {type: Object,default: () => {return {}}},stripe: {type: Boolean,default: true},border: {type: Boolean,default: true},size: {type: String,default: 'small'},loading: {type: Boolean,default: false},isSelection: {type: Boolean,default: false,}},components:{Render,},data() {return {h:'',}},methods: {handleClick(row, type) {this.$emit('handleClick', row, type)},handleSelectionChange(val) {this.$emit('handleSelectionChange', val)}}

使用Table组件

//html<Table:tableData="tableData":isSelection="true":tableColumns="tableColumns":tableOperation="tableOperation"@handleClick="handleClick"@handleSelectionChange="handleSelectionChange"><template #infoInput="scope"><el-input v-model="scope.row2.info"></el-input></template></Table>
// data & methodstableData: [{date: "2016-05-02",name: "王小虎",address: "上海市普陀区金沙江路 1518 弄",age: "1",progress:50,info:'好好学习',},{date: "2016-05-04",name: "王小虎",address: "上海市普陀区金沙江路 1517 弄",age: "0",progress:60,info:'天天向上',},{date: "2016-05-01",name: "王小虎",address: "上海市普陀区金沙江路 1519 弄",age: "1",progress:70,info:'为人名服务',},{date: "2016-05-03",name: "王小虎",address: "上海市普陀区金沙江路 1516 弄",age: "1",progress:80,info:'为人名服务2',},],tableColumns: [{param: "date",label: "日期",width: "100",},{param: "name",label: "姓名",width: "100",},{param: "address",label: "地址",},{param: "age",label: "性别",render2: (row) => {return (<el-radio-group v-model={row.age}><el-radio label={"0"}></el-radio><el-radio label={"1"}></el-radio></el-radio-group>);},},{param:'progress',label:'进度',render2:(row)=>{return(<el-progress percentage={row.progress}></el-progress>)}},{param:'info',label:'信息',slotName:'infoInput',}],tableOperation: {label: "操作",btnList: [{label: "删除",type: "warning",param: "del",type: "del",},{label: "新增",type: "primary",param: "add",type: "add",},],},handleClick(val, type) {console.log("val1", val);console.log("type", type);},handleSelectionChange(val) {console.log("val2", val);},     

相关文章:

vue封装el-table表格组件

先上效果图&#xff1a; 本文包含了具名插槽、作用域插槽、jsx语法三种&#xff1a; Render.vue&#xff08;很重要&#xff0c;必须有&#xff09;: <script> export default {name: "FreeRender",functional: true,props: {scope:Object,render: Functio…...

「Python系列」Python数据结构

文章目录 一、数据结构二、相关链接 一、数据结构 Python提供了多种内置的数据结构&#xff0c;这些数据结构在编程中非常有用。以下是Python中常见的一些数据结构&#xff1a; 列表&#xff08;List&#xff09;: 列表是Python中最常用的数据结构之一&#xff0c;它是一个有…...

MySQL多实例部署:从概念到实操的全面指南

目录 MySQL多实例管理 单实例 什么是多实例 多实例的好处 多实例的弊端 MySQL多实例用在哪些场景 资金紧张的公司 用户并发访问量不大的业务 大型网站也有用多实例 部署MySQL多实例 rpm和源码的优缺点 二进制方式安装mysql 准备二进制mysql运行所需的环境 准备多…...

C++学习Day07之虚函数和纯虚函数

目录 前言一、程序及输出1.1 虚函数1.2 纯虚函数1.2.1 定义、示例1.2.2 引入原因1.2.3 抽象类 二、分析与总结 前言 在 C 中&#xff0c;虚函数和纯虚函数是实现多态性的重要概念。虚函数是在基类中声明为虚函数的函数&#xff0c;在派生类中可以被重写&#xff0c;实现动态联…...

GZ036 区块链技术应用赛项赛题第9套

2023年全国职业院校技能大赛 高职组 “区块链技术应用” 赛项赛卷&#xff08;9卷&#xff09; 任 务 书 参赛队编号&#xff1a; 背景描述 随着异地务工人员的增多&#xff0c;房屋租赁成为一个广阔是市场&#xff1b;目前&#xff0c;现有技术中的房屋租赁是由…...

微服务—RabbitMQ高级(延迟消息)

本博客为个人学习笔记&#xff0c;学习网站&#xff1a;2023黑马程序员RabbitMQ入门到实战教程 高级篇章节 目录 延迟消息 死信交换机 延迟消息插件 下载安装 延迟交换机声明 ​编辑 发送延迟消息 订单状态同步问题 延迟消息 在电商的支付业务中&#xff0c;对于一些库…...

香港服务器如何取消windows的自动更新

大家用过电脑的人对windows系统的自动更新应该都不会陌生&#xff0c;其实香港服务器的使用也是一样的方法。为什么要对香港服 务器windows的自动更新进行关闭呢&#xff1f;其主要原因在于&#xff0c;有些更新是不能更新&#xff0c;一更新话&#xff0c;系统反而会变得不稳定…...

kali虚拟机桥接模式快速设置

第一步&#xff1a;选择 虚拟机 > 设置 > 虚拟机设置&#xff0c;设置桥接模式 不选择复制物理网络连接状态选项&#xff1a; 如果采用DHCP的方式来分配IP地址&#xff0c;当电脑网络从有线或无线网络之间进行移动时&#xff0c;DHCP会重新分配ip地址&#xff0c;即虚拟机…...

「连载」边缘计算(十五)02-18:边缘部分源码(源码分析篇)

&#xff08;接上篇&#xff09; ChannelContext struct定义如下所示。 KubeEdge/beehive/pkg/core/context/context.go // ChannelContext is object for Context channel type ChannelContext struct { //ConfigFactory goarchaius.ConfigurationFactory channels map[…...

MySQL性能调优篇(8)-NoSQL与MySQL的比较

MySQL数据库是一种关系型数据库&#xff0c;而NoSQL是一种非关系型数据库。它们在数据存储和处理方式、数据模型和可扩展性等方面存在一些明显的差异。本文将对MySQL数据库和NoSQL进行比较&#xff0c;并介绍它们的优势和劣势。 首先&#xff0c;MySQL使用表格的形式来存储数据…...

【Linux学习】线程池

目录 23.线程池 23.1 什么是线程池 23.2 为什么需要线程池 23.3 线程池的应用场景 23.4 实现一个简单的线程池 23.4.1 RAII风格信号锁 23.4.2 线程的封装 23.4.3 日志打印 22.4.4 定义队列中存放Task类任务 23.4.5 线程池的实现(懒汉模式) 为什么线程池中需要有互斥锁和条件变…...

利用Docker部署一个简单的springboot项目

文章目录 1、首先利用docker部署一个redis中间件1.1、下载redis镜像1.2、在主机创建redis挂载的目录和文件1.3、部署redis中间件 2、创建springboot项目2.1、修改application.yml2.2、编写controller2.3、启动应用并测试访问 3、将应用打包成镜像3.1、编写Dockerfile3.2、上传文…...

【Java】纯小白的三种工厂模式基础知识学习笔记

工厂模式概念 在Java中&#xff0c;工厂模式是一种设计模式&#xff0c;用于创建对象而无需指定明确的类。工厂模式通过定义一个共同的接口或抽象类来创建对象&#xff0c;然后由工厂类根据特定条件或参数来实例化具体的对象。 工厂模式通常包括三种类型&#xff1a;简单工厂…...

Spring Boot 笔记 006 创建接口_注册

1.1 由于返回数据都是以下这种格式&#xff0c;那么久再编写一个result实体类 报错了&#xff0c;原因是没有构造方法 可以使用lombok的注解自动生成&#xff0c;添加无参的构造器和全参的构造器 package com.geji.pojo;import lombok.AllArgsConstructor; import lombok.NoArg…...

沁恒CH32V30X学习笔记08---基本定时器超时功能

TIM 基本定时器 高级定时器模块包含一个功能强大的 16 位自动重装定时器(TIM1、TIM8、TIM9 和 TIM10) 通用定时器模块包含一个 16 位可自动重装的定时器(TIM2、TIM3、TIM4 和 TIM5) 基本定时器模块包含一个 16 位可自动重装的定时器(TIM6 和 TIM7) 定时器的结构大致可…...

GitHub | 在 GitHub 上在线展示 Vue 项目

简洁版&#xff1a;上传所有代码 << 构建项目并上传 dist 目录 << 设置仓库 << 访问 Step1&#xff1a;在 GitHub 上新建仓库&#xff0c;并将 Vue 项目的代码 push 到该仓库中。坑点在于&#xff0c;如果你是从 GitHub 上 clone 的别人的项目&#xff0c;那…...

Android的Compose

Jetpack Compose 是用于构建原生 Android 界面的新工具包&#xff0c;无需修改任何 XML 布局&#xff0c;也不需要使用布局编辑器。相反&#xff0c;只需调用可组合函数来定义所需的元素&#xff0c;Compose 编译器即会完成后面的所有工作。 简而言之&#xff0c;使用Compose&…...

C++ STL->list模拟实现

theme: smartblue list list文档 list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。list的底层是双向链表结构&#xff0c;双向链表中每个元素存储在互不相关的独立节点中&#xff0c;在节点中通过指针指向 其前一个元素…...

基于python+django+vue.js开发的健身房管理系统

功能介绍 平台采用B/S结构&#xff0c;后端采用主流的Python语言进行开发&#xff0c;前端采用主流的Vue.js进行开发。 功能包括&#xff1a;教练管理、会员管理、场地管理、设备管理、用户管理、日志管理、系统信息模块。 源码地址 https://github.com/geeeeeeeek/python_…...

GPT-4对编程开发的支持

在编程开发领域&#xff0c;GPT-4凭借其强大的自然语言理解和代码生成能力&#xff0c;能够深刻理解开发者的意图&#xff0c;并基于这些需求提供精准的编程指导和解决方案。对于开发者来说&#xff0c;GPT-4能够在代码片段生成、算法思路设计、模块构建和原型实现等方面给予开…...

7个实用技巧让你轻松掌握E-Hentai漫画下载与管理

7个实用技巧让你轻松掌握E-Hentai漫画下载与管理 【免费下载链接】E-Hentai-Downloader Download E-Hentai archive as zip file 项目地址: https://gitcode.com/gh_mirrors/eh/E-Hentai-Downloader 漫画下载痛点与解决方案 作为漫画爱好者&#xff0c;你是否遇到过这些…...

Pads Layout 高效工作流——库管理优化与文件转换实战

1. 库管理优化&#xff1a;从混乱到高效的关键步骤 刚开始用Pads Layout那会儿&#xff0c;我最头疼的就是库文件管理。每次打开不同版本的设计文件&#xff0c;总会出现各种封装丢失、属性错乱的问题。后来才发现&#xff0c;库管理就像整理衣柜——分类清晰才能快速找到需要的…...

系统资源诊断与性能优化:使用Hotkey Detective实现高效热键冲突管理

系统资源诊断与性能优化&#xff1a;使用Hotkey Detective实现高效热键冲突管理 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective …...

什么是战略解码?

在很多企业的战略会上&#xff0c;我常看到这样一幕&#xff1a; 老板在台上挥斥方遒&#xff0c;讲愿景、讲宏图&#xff1b; 台下高管们埋头苦干&#xff0c;把老板定的10 亿目标&#xff0c; 像切蛋糕一样分给销售、研发和市场部。 大家管这个过程叫“战略解码”。 但是…...

3步实现百度网盘链接解析:Baiduwp-PHP工具全功能实践指南

3步实现百度网盘链接解析&#xff1a;Baiduwp-PHP工具全功能实践指南 【免费下载链接】baiduwp-php A tool to get the download link of the Baidu netdisk / 一个获取百度网盘分享链接下载地址的工具 项目地址: https://gitcode.com/gh_mirrors/ba/baiduwp-php Baiduw…...

从Simulink仿真到Altium Designer画板:一个直流电机调速系统的完整诞生记

从算法仿真到电路实现&#xff1a;直流电机双闭环调速系统全流程实战 在实验室里调试电机控制系统时&#xff0c;最令人兴奋的时刻莫过于看到仿真曲线和实际示波器波形完美吻合的瞬间。作为电子工程师&#xff0c;我们每天都在与这种"虚实结合"的挑战打交道——如何在…...

千问3.5-2B AI Agent设计模式:从理论到实现的构建指南

千问3.5-2B AI Agent设计模式&#xff1a;从理论到实现的构建指南 1. 为什么需要AI Agent&#xff1f; 想象一下&#xff0c;你有一个不知疲倦的智能助手&#xff0c;不仅能理解你的需求&#xff0c;还能主动规划任务、调用各种工具、记住历史对话&#xff0c;甚至从错误中学…...

新手福音:在快马平台用AI辅助十分钟搞懂链表基础与实现

今天想和大家分享一个特别适合编程新手的链表学习项目。作为一个刚接触数据结构的小白&#xff0c;我最初对链表也是一头雾水&#xff0c;直到在InsCode(快马)平台上找到了这个AI辅助的学习项目&#xff0c;才真正理解了链表的奥秘。 链表的基本概念 链表就像一列火车&#xff…...

实战演练,基于快马生成跨平台项目掌握keil5下c51与stm32协同开发

最近在做一个物联网温湿度监测项目时&#xff0c;遇到了一个很实际的需求&#xff1a;需要在不同硬件平台上测试同一套业务逻辑。具体来说&#xff0c;既要能在成本较低的51单片机&#xff08;比如STC89C52&#xff09;上运行&#xff0c;又要在性能更强的STM32上验证功能。经过…...

新手友好:基于快马平台从零学习调用阿里悟空AI绘画接口

新手友好&#xff1a;基于快马平台从零学习调用阿里悟空AI绘画接口 作为一个刚接触AI绘画API的新手&#xff0c;我最近尝试了在InsCode(快马)平台上学习调用阿里悟空官网的绘画接口。整个过程比我预想的要简单很多&#xff0c;特别适合像我这样的初学者。下面分享一下我的学习…...