当前位置:   article > 正文

vxe-table表格插件的使用(Vue3)_vue excel排座插件

vue excel排座插件

一、官网地址

介绍:

    vxe-table 是一个基于 Vue.js 的强大表格组件库,它提供了许多优点和好处,如下:

  1. 功能丰富:vxe-table 提供了许多强大的功能,包括表格排序、筛选、分页、合并单元格、导出、导入等。这些功能能够满足大部分常见的表格需求,并且可以在组件内灵活配置和定制。

  2. 高性能:vxe-table 的底层采用了虚拟 DOM 技术和批量渲染优化,能够处理大量数据而不影响性能。它支持懒加载和前端分页,可以快速呈现并响应大规模的数据集。

  3. 可定制性强:vxe-table 具有非常灵活的配置选项和事件钩子,可以根据具体需求进行定制和扩展。你可以自定义表头、列样式、操作按钮、单元格渲染等各种外观和行为,满足个性化的展示需求。

地址:vxe-table v4
 

二、代码
 

代码只放了和vxe-table有关的,详细的配置还需看官网!!!

  1. <template>
  2. <vxe-toolbar export :refresh="{ query: findList }">
  3. <template #buttons>
  4. <el-button type="primary" @click="insertEvent(-1)">
  5. <template #icon>
  6. <el-icon>
  7. <Plus />
  8. </el-icon>
  9. </template>
  10. 新增
  11. </el-button>
  12. <el-button type="danger" @click="removeEvent()">
  13. <template #icon>
  14. <el-icon>
  15. <Delete />
  16. </el-icon>
  17. </template>
  18. 清空
  19. </el-button>
  20. </template>
  21. </vxe-toolbar>
  22. <vxe-table border align="center" show-overflow keep-source ref="xTable" height="400px"
  23. :column-config="{ resizable: true }" :export-config="{}" :loading="subTable.loading"
  24. :edit-config="{ trigger: 'click', mode: 'row', showStatus: true }">
  25. <vxe-column type="seq" title="序号" width="60"></vxe-column>
  26. <vxe-column field="noticeNo" title="项目名称">
  27. <template #default="{ row }">
  28. <el-input v-model="row.noticeNo"></el-input>
  29. </template>
  30. </vxe-column>
  31. <vxe-column field="amount" title="工时费">
  32. <template #default="{ row }">
  33. <el-input v-model="row.amount" @input="row.amount = row.amount.replace(/^[^\d]+/g, '')"></el-input>
  34. </template>
  35. </vxe-column>
  36. <vxe-column field="remarksSub" title="材料费">
  37. <template #default="{ row }">
  38. <el-input v-model="row.remarksSub" @input="row.remarksSub = row.remarksSub.replace(/^[^\d]+/g, '')"></el-input>
  39. </template>
  40. </vxe-column>
  41. <vxe-column field="other" title="其他">
  42. <template #default="{ row }">
  43. <el-input v-model="row.other"></el-input>
  44. </template>
  45. </vxe-column>
  46. <vxe-column title="操作" width="120" fixed="right" align="center">
  47. <template #default="{ row }">
  48. <el-button type="danger" :icon="Delete" @click="removeEvent(row)" />
  49. </template>
  50. </vxe-column>
  51. </vxe-table>
  52. </template>
  53. <script lang="ts" setup>
  54. import { ElMessage, ElMessageBox } from 'element-plus';
  55. // 清空or删除
  56. const removeEvent = async (row?: any) => {
  57. const $table = xTable.value;
  58. const type = await ElMessageBox.confirm(
  59. '您确定需要删除该数据?',
  60. row ? '删除数据' : '清空数据',
  61. {
  62. confirmButtonText: '确认',
  63. cancelButtonText: '取消',
  64. type: 'warning',
  65. },
  66. );
  67. if (type === 'confirm') {
  68. $table!.remove(row);
  69. }
  70. };
  71. //用于回显
  72. const findList = async (id?: String) => {
  73. subTable.loading = true;
  74. try {
  75. const { sendOrRepairSub, ...data } = await getDataById({ id });
  76. // 回显除表格外数据
  77. setFieldsValue({ ...data })
  78. const $table = xTable.value;
  79. // 阻断 vue 对大数组的监听,避免 vue 绑定大数据造成短暂的卡顿
  80. if ($table) {
  81. $table.loadData(
  82. sendOrRepairSub.map((item) => {
  83. return {
  84. noticeNo: item.noticeNo,
  85. amount: item.amount,
  86. remarksSub: item.remarksSub,
  87. other: item.other,
  88. };
  89. }),
  90. );
  91. }
  92. } catch (err: any) { }
  93. subTable.loading = false;
  94. };
  95. </script>

三、效果展示

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/140528
推荐阅读
相关标签
  

闽ICP备14008679号