vue3+ts 结合el-table二次封装表格组件

vue3+element-plus封装表格 阅读详情

效果图

 Table组件

<template>
  <el-table :data="tableData" style="width: 80%" v-bind="{ border: true }">
    <el-table-column type="selection" width="50" align="center" />
    <el-table-column type="index" label="序号" width="100" fixed="left" align="center">
      <template #default="{ $index }">
        <i>{{ $index + 1 }}</i>
      </template>
    </el-table-column>
    <el-table-column
      v-for="col in option"
      :key="col.prop"
      :label="col.label"
      :prop="col.prop"
      :width="col.width"
      :align="col.align"
      v-bind="{ ...col.attrs }"
    >
      <template #header>
        <!-- <span v-if="col.editable"><button>可编辑</button></span> -->
        <span>{{ col.label }}</span>
      </template>
      <template #default="{ row, $index }" v-if="col.slot">
        <slot :name="col.slot" :row="row" :index="$index"></slot>
      </template>
    </el-table-column>
  </el-table>
</template>

<script lang="ts" setup>
import { TableOption, TableData } from './tableData'
type Props = {
  option: Array<TableOption>
  tableData: Array<TableData>
}
const props = defineProps<Props>()
watch(props.tableData, (newVal, oldVal) => {
  console.log(newVal, oldVal)
})
</script>
<style></style>

其中表格的勾选列和序号列也可以添加v-if来控制隐藏

Table的类型接口和列

export interface TableOption {
  // 字段名称
  prop?: string
  // 表头
  label: string
  // 对应列的宽度
  width?: string | number
  // 对齐方式
  align?: 'left' | 'center' | 'right'
  // 自定义列模板的插槽名
  slot?: string
  // 是否是操作项
  action?: boolean
  // 是否可以编辑
  editable?: boolean
  // 属性
  attrs?: object
}

export interface TableData {
  date?: string
  name?: string
  address?: string
}

export interface FormData {
  name?: string
}

export const option: TableOption[] = [
  {
    label: 'Date',
    prop: 'date',
    width: 200,
    slot: 'dateSlot',
    editable: true,
    attrs: {
      sortable: ''
    }
  },
  {
    label: 'Name',
    prop: 'name',
    slot: 'nameSlot',
    attrs: {
      sortable: ''
    }
  },
  {
    label: 'Address',
    prop: 'address',
    slot: 'addressSlot',
    attrs: {
      sortable: ''
    }
  },
  {
    label: 'Edit',
    prop: 'edit',
    slot: 'editSlot'
  }
]

 调用

<template>
  <el-row class="mb-4">
    <el-button type="primary" @click="addRow">新增行</el-button>
    <el-button type="success">Success</el-button>
  </el-row>
  <common-table :option="option" :tableData="tableData">
    <template #dateSlot="{ row }">
      <div>{{ row.date }}</div>
    </template>
    <template #nameSlot="{ row }">
      <div>
        {{ row.name }}
      </div>
    </template>
    <template #addressSlot="{ row }">
      <div>
        {{ row.address }}
      </div>
    </template>
    <template #editSlot="{ row, index }">
      <div>
        <el-button @click="deleteRow(row, index)">删除</el-button>
        <el-button @click="viewRow(row)">查看</el-button>
      </div>
    </template>
  </common-table>
</template>
<script setup lang="ts">
import CommonTable from '../commonTable/CommonTable.vue'
import { option, TableData } from './tableData'
const tableData = reactive<TableData[]>([
  {
    date: '2016-05-03',
    name: '1',
    address: '北京'
  },
  {
    date: '2016-05-02',
    name: '2',
    address: '上海'
  },
  {
    date: '2016-05-04',
    name: '3',
    address: '南京'
  }
])
const addRow = () => { // 添加行
  const data = {
    date: '22222',
    name: 'asjdlasjdlad',
    address: 'asjd;sad'
  }
  tableData.push(data)
}
const deleteRow = (row: TableData, index: number) => { // 删除行
  tableData.splice(index, 1)
}
</script>
<style></style>

从零开始Vue3+Element Plus后台管理系统(16)——组合式函数hook二次封装el-table 终于写到组合式函数了,它类似vue2的mixin,但优于mixin,用好了可以事半功倍。在 Vue 应用的概念中,“组合式函数”(Composables) 是一个利用 Vue 的组合式 API 来封装和复用的函数。是时候写一个自己的组合式函数Demo了,决定从table下手 👋table是后台管理系统最常用的组件,而且基本功能差不多,复用程度高,所以使用hook二次封装table是个相当实用的想法。 阅读详情

相关推荐

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

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

m0_68271787的博客 5164

Vite + Vue3 + Ts 《企业级项目》二次封装 el-table、el-pagination、el-tooltip、el-dialog

封装的功能有哪些? 分页、表格排序、文字居中、溢出隐藏、操作列、开关、宽、最小宽、type类型(selection/index/expand)、格式化 、不同页面不同操作列、vuex、vue持久化插件、(此处没有接口所以用到,还涉及了query与params传值区别) 子组件 说思路:data数据请求接口拿到,表头数据一般也是后台接口,如没,前台可自定义自己写......

技术前端,忠于热爱 @0.活在风浪里 3326

Vue3 - Element Plus 实现表格组件 el-table 拖曳拖动排序功能,支持复杂二级嵌套表格下级子项联动父级拖拽交换顺序位置,Table表格鼠标按住移动行列上移下移排序(详细示例代码

vue3,nuxt3,elementplus,表格,Table表格组件,el-table,拖曳排序,鼠标拖动排序,拖拽排序,改变表格行位置,鼠标拖动表格行row来交换位置,复杂表格,有下级的表格怎么拖曳排序,有二级下级的表格怎么拖曳排序,表格内的数据项拖拽排序,实现拖拽排序,详细教程,sortablejs,表格行拖拽,table表格行列动态拖拽,数据无法更新怎么办,表格太复杂怎么排序,排序后拿不到行数据id,排序后怎么对接后端服务器,能展开二级的行,排序后如何对接接口,拖拽移动,Vue3element

🏆 前端领域优质创作者 1万+

打工日记-Vue3+Ts二次封装el-table

el-table是elementUI中的表格组件,在后台把管理系统中,也是一个比较常用的组件,目前有一个比较好的开源项目,这个项目做的很好,集成了搜索,表格,分页器功能很强大。但在我的实际使用中也有一些需要更改的地方,因此,我也尝试着封装自己的table组件。

qq_43352505的博客 1237

vue3+ts+elementui-plus二次封装树形表格

【代码】vue3+ts+elementui-plus二次封装树形表格。

蜗牛~~ 1985

Unity3D 2022版如何一键安装Newtonsoft.Json?最新Package Manager教程

本文详细介绍了在Unity3D 2022及以上版本中,如何通过Package Manager一键安装和配置Newtonsoft.Json(Json.NET)。教程涵盖了从打开Package Manager、搜索并安装正确包源,到验证安装和基础使用的完整流程,旨在帮助开发者以现代化、可靠的方式集成这一强大的JSON处理框架,提升开发效率并规避手动导入的常见问题。

lg888的博客 921

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

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

wenyun936的博客 2818

别再死记硬背了!用Multisim仿真5分钟搞懂运放电压跟随器到底要不要加反馈电阻

本文通过Multisim仿真实验,深入解析运放电压跟随器中反馈电阻的必要性。实验对比不同阻值对电路性能的影响,揭示反馈电阻在提供偏置电流通路、提升高频稳定性和ESD保护中的关键作用,并给出工程实践中的优化建议,帮助工程师快速掌握运放电路设计要点。

weixin_42641998的博客 371

element-plus el-table表格组件封装记录

昨天初步体验了一把form表单的封装,觉得还是有些浅显且有些地方没有理清,所以今天来试一试B端项目中同样常用的一个组件---el-table的二次封装,1.和el-form组件一样通过传入对象的形式对table表格进行条件渲染2.能够在实际调用场景下通过插槽来自定义标题,提交按钮等一些小东西3.能够通过v-bind绑定属性实现开关组件,编辑/删除,多选框等操作按钮的显示。

weixin_64160020的博客 2604

VS2022下C# WPF项目一键打包成独立exe的完整指南

本文提供了一份在Visual Studio 2022中将C# WPF项目一键打包成独立可执行exe文件的完整指南。通过配置项目属性、启用单文件发布和自包含模式,开发者无需依赖第三方工具,即可生成可在未安装.NET运行时的电脑上直接运行的独立程序,极大简化了桌面应用的分发流程。

weixin_28831399的博客 673

ROS2+MoveIt2+Gazebo仿真实战:从零搭建六轴机械臂控制闭环

本文详细介绍了如何从零搭建一个完整的ROS2+MoveIt2+Gazebo六轴机械臂仿真控制闭环。通过手写URDF模型、配置MoveIt2运动规划、集成Gazebo物理仿真与ROS2 Control控制器,最终实现RViz中规划轨迹、Gazebo中同步执行的完整数字孪生验证平台,为机器人算法开发和硬件验证提供低成本、高效的仿真解决方案。

weixin_29093017的博客 486

Vue3 + TS + Element-Plus 封装Tree组件 《亲测可用》

Vue3 + TS + Element-Plus 封装Tree组件 使用示例

技术前端,忠于热爱 @0.活在风浪里 4524

避开这些坑!用Python ReportLab生成PDF时字体处理与中文排版的5个关键技巧

本文针对Python ReportLab库在PDF自动化生成中常见的中文排版难题,提供了五个关键技巧。内容涵盖字体注册的稳健策略、段落样式的精细控制、表格内中文的换行对齐、页面布局管理以及性能优化,旨在帮助开发者彻底解决中文乱码、排版错位等问题,生成专业美观的PDF文档。

weixin_29250403的博客 624

Vue3+ts+element-plus 组件的二次封装-- el-table的封装,通过json进行配置表单,可用插槽进行拓展

Vue3+ts+element-plus 组件的二次封装-- el-table的二次封装,附带思路讲解以及源码。el-table的封装,通过json进行配置表单,可用插槽进行拓展。

Penk的博客 2550

基于反事实的因果推理Causal inference based on counterfactuals--一万六千字文献详细解读(因果关系的推理应用)【全文总结】

基于反事实的因果推理Causal inference based on counterfactuals--一万六千字文献详细解读(因果关系的推理应用)【全文总结】---来自一位即将入学的准研一,也希望这篇文章能够激励自己不断走下去!!

qq_46044325的博客 4442

历年安徽省省赛AHOI初中组考点分类汇总考点分类汇总

持续更新中.....

weixin_42358969的博客 818

Vue3+TS项目封装一个公共的el-table组件二次封装

Vue3+TS项目封装一个公共的el-table组件二次封装

qq_35641191的博客 976

【Unity 实用工具篇】| Unity中 实现背景模糊效果,简单易用

背景模糊 是一个很实用的功能,它可以帮助游戏在视觉上有更好的专注力和表现力。 实现模糊的种类和方式有很多种,大家自行选择适合自己的就可以了。 下面一起来看下本文实现背景模糊的效果和使用方式吧!

努力前行,总会成为自己心中的那道光 4万+

vue3+ts+element-plus el-table组件二次封装(2024-09-25 TTable组件新增虚拟滚动功能)

vue3+ts+element-plus 2024-04-24 TTable组件多级表头支持单元格编辑功能;新增了单元格编辑功能))新增了单元格编辑键盘事件及第三方组件事件功能;2023-06-08 TTable组件新增整行拖拽排序功能;TTable组件修复表头合并插槽使用失效;TTable组件单元格编辑新增表单校验功能/表格内操作按钮权限配置)新增展开行功能;2024-03-20 TTable组件新增新增第一列既显示(复选、单选)和序列号;TTable组件新增虚拟滚动功能)

wocwin的博客 1万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

精雕软件(JDpaint) 5.5 绿色版

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

vue3的ts项目封装el-table组件

摘要:本文介绍了一个基于element-plus el-table组件封装的Vue表格组件,旨在简化表格开发流程。该组件具有以下特点:1) 支持数据绑定、列配置和表格样式自定义;2) 内置多选、序号、分页等常用功能;3) 提供多种插槽支持自定义内容显示;4) 封装了行选择、排序等常用事件处理;5) 通过ref暴露表格操作方法。组件采用TypeScript开发,配置灵活,适用于各种表格场景,可显著减少重复代码,提高开发效率。

weixin_55973411的博客 906

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

vue3 + ts + element-plus 二次封装 el-table

这种方式的二次封装让el-table组件更加灵活和可复用,同时让你能方便地在多个地方使用表格,减少重复的代码。你可以根据自己的项目需求继续扩展BaseTable,例如添加更多的功能、事件处理、表格样式等。

weixin_44303625的博客 1043

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

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

vue3企业级项目二次封装el-table、分页 去发现同类优质开源项目:https://gitcode.com/ 介绍 在本仓库中,我们将深入探讨如何在后台管理系统中高效地复用表格和分页组件。在众多页面中重复编写这些组件是不现实的,因此,我们采用了组件通讯的方式进行封装。以下是本资源文件的主要内容: 项目选型:采用前端流行的技术栈组合——vite + ts + vue3。 语法糖:全文采用&l...

gitblog_06765的博客 390

vue3 + element-plus + ts el-table封装

vue3 + element-plus + ts el-table封装

weixin_45563734的博客 1476

vue3企业级项目二次封装el-table分页:让表格和分页组件更高效

vue3企业级项目二次封装el-table分页:让表格和分页组件更高效 去发现同类优质开源项目:https://gitcode.com/ 在当前后台管理系统中,表格和分页组件的复用性至关重要。vue3企业级项目二次封装el-table分页正是一款解决这一问题的开源项目,下面为您详细介绍这款项目的核心功能、技术原理和应用场景。 项目介绍 vue3企业级项目二次封装el-table分页项目,致力于在后...

gitblog_06704的博客 264

vue3+ts+element-plus实现el-table二次封装无缝滚动效果

二次封装el-table组件实现表格内容无缝滚动。

hahaha_1314的博客 1002
上一篇: vue3 + ts 使用el-dialog
下一篇: vue中的axios的二次封装(JS)
Lxg-JJJJ
博客等级 码龄7年 960粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值