基于 Vue3 + Element-plus 封装的 Table 组件

本文介绍了Vue3xmw-table组件的安装、全局挂载、在页面上的使用示例,详细列出了Table属性、Column属性、tableConfig和Page配置项,以及相关的事件处理。项目已停止维护,建议本地扩展使用。
摘要由CSDN通过智能技术生成

项目信息

使用方法

  • 根目录下执行 npm i vue3-xmw-table 命令
npm i vue3-xmw-table
  • 全局挂载组件
import { createApp } from 'vue'
import App from './App.vue'
import Xmwtable from 'vue3-xmw-table'

createApp(App).use(Xmwtable).mount('#app')
  • 在页面上使用
 <!-- template -->
 <vue3-xmw-table
     stripe
     border
     show-summary
     :summary-method="getSummaries"
     :tableData="state.tableData"
     :loading="state.loading"
     :columns="state.tableColumns"
     :tableConfig="tableConfig"
     :showPagination="false"
   >
     <template v-slot:handler="{ scope }">
       <el-button
         size="small"
         type="primary"
         >编辑</el-button
       >
       <el-button
         type="danger"
         size="small"
         >删除</el-button
       >
     </template>
   </vue3-xmw-table>

Table 属性

除此之外支持所有 el-table属性

参数说明类型默认值
tableData表格数据Array-
columns列配置,详情见下方 Column 属性Array-
loading加载状态Booleanfalse
tableConfig表格配置项,详情见下方 Config 属性Object-
showPagination是否显示分页Booleantrue
paginationConfig分页器配置项,详情见下方 paginationConfig 属性Object-

Column 属性

除此之外支持所有 el-table-column属性

参数说明类型默认值
slotName开启 slot 支持,用于自定义列Booleanfalse

tableConfig 配置项

除此之外支持所有 el-table属性

参数说明类型默认值
rowKey行数据的 Key,用来优化 Table 的渲染,在使用 多选 功能与显示树形数据时,该属性是必填的。类型为 String 时,支持多层访问:user.info.id,但不支持 user.info[0].id,此种情况请使用 Function。Function(row)/String
showSeletion是否支持多选Booleanfalse
showIndexColumn是否显示序号列Booleanfalse
indexLabel自定义索引名String序号
isCheckMemory是否需要跨页勾选Booleanfalse
showHandler是否显示操作列Booleanfalse
showExpand是否是展开行Booleanfalse
showAppend插入至表格最后一行之后,如果需要对表格的内容进行无限滚动操作,可能需要用到这个 slot。 若表格有合计行,该 slot 会位于合计行之上Booleanfalse
appendLabel自定义默认内容String自定义
handlerConfig操作列配置,showHandler 为 true 时有效Object{ label: “操作”, minWidth: 80, fixed: “right” }

Page 配置项

除此之外支持所有 el-pagination 配置项

参数说明类型默认值
total条目数number0
current当前页数number1
pageSize每页显示条目个数number10
pageSizes分页选项设置Array[10, 20, 30, 50]
layout组件布局,子组件名用逗号分隔String“total, sizes, prev, pager, next, jumper”

Slot 插槽

name说明参数
multiSelectMenu多选显示顶部操作栏{ row, column, $index }
handler自定义操作栏的内容{ row, column, $index }
expand自定义展开行内容,必须先指定showExpand为true{ row, column, $index }
append自定义默认内容,必须先指定showAppend为true{ row, column, $index }

Events 事件

除此之外支持所有 el-table事件

注: 因为添加了跨分页多选的功能,selection-change 会在切换分页设置勾选状态时调用多次

事件名称说明参数
current-page-changecurrentPage 改变时会触发当前页
page-size-changepageSize 改变时会触发每页条数

此项目不再维护,如需学习或者使用,可以把源码拷贝到本地进行拓展。

Vue3和Element Plus中封装表格组件,可以使用以下方法: 1. 首先,在Vue3中创建一个新的组件,可以命名为TableWrapper或者其他你喜欢的名称。 2. 在组件中引入Element Plus的Table组件,并在data中定义需要用到的数据,例如tableData和tableHeader。 3. 在template中使用Table组件,并通过props传递数据。使用v-for循环遍历tableHeader来动态生成表头信息。 4. 在Table组件中,可以通过slot插槽自定义表格中的内容,例如添加操作按钮或其他自定义内容。 5. 可以在Table组件中定义一些方法,例如handleEdit和handleDelete,用于处理编辑和删除操作。 6. 最后,在父组件中使用TableWrapper组件,并传递需要显示的数据和其他配置项。 以下是一个示例代码,供参考: ```vue <template> <Table :data="tableData" :columns="tableHeader" border > <template #ksType="{ row }"> <span>{{ row.type }}</span> </template> <template #isDisabled="{ row }"> <el-switch v-model="row.isDisabled" active-text="是" inactive-text="否" :active-value="0" :inactive-value="1" @change="switchChange(row)" ></el-switch> </template> <template #btn="{ row }"> <el-button v-for="(btn, index) in row.btn" :key="index" :type="btn.btnStyle || 'default'" @click="btn.func(row)" > {{ btn.name }} </el-button> </template> </Table> </template> <script> import { Table } from 'element-plus'; export default { components: { Table, }, data() { return { tableData: [], tableHeader: [ { prop: "name", label: "名称" }, { prop: "type", label: "科室类型", slot: "ksType" }, { prop: "isDisabled", label: "是否禁用", slot: "isDisabled" }, { prop: "btn", label: "操作", slot: "btn" }, ], }; }, methods: { switchChange(row) { // 处理开关切换操作 }, handleEdit(row) { // 处理编辑操作 }, handleDelete(row) { // 处理删除操作 }, }, }; </script> ``` 在这个示例中,我们使用了Element Plus的Table组件,并通过slot插槽自定义了表格中的内容。同时,我们在组件中定义了一些方法来处理具体的操作。你可以根据自己的需求进行修改和扩展。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [vue3+element-plus封装表格](https://blog.csdn.net/weixin_50041614/article/details/126702116)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [go语言恶意代码检测系统-对接前端可视化与算法检测部分](https://download.csdn.net/download/liufang_imei/88222624)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白雾茫茫丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值