当前位置:   article > 正文

vue3 使用element-ui实现el-table懒加载_element ui列表懒加载

element ui列表懒加载

目的: 

1.点击表格左侧箭头实现懒加载后端集合数据;

2.后端集合分组每10个展示一行

  1. <template>
  2. <!--
  3. 官网字段解析
  4. https://element-plus.org/zh-CN/component/table.html
  5. row-key: 行数据的 Key,用来优化 Table 的渲染; 在使用reserve-selection功能与显示树形数据时,该属性是必填的。 类型为 String 时,支持多层访问:user.info.id,但不支持 user.info[0].id,此种情况请使用 Function。
  6. expand-change: 当用户对某一行展开或者关闭的时候会触发该事件(展开行时,回调的第二个参数为 expandedRows;树形表格时第二参数为 expanded)
  7. expand-row-keys: 可以通过该属性设置 Table 目前的展开行,需要设置 row-key 属性才能使用,该属性为展开行的 keys 数组。
  8. -->
  9. <el-table :data="listData" border row-key="code" @expand-change="expandChange" :expand-row-keys="expandedRows">
  10. <el-table-column type="expand">
  11. <template #default="scope">
  12. <div v-if="scope.row.detailList">
  13. <span style="margin-left: 10px;">展示码值:</span><br />
  14. <div style="margin-left:60px">
  15. <el-tag-group>
  16. <template v-for="(tag, index) of scope.row.detailList" :key="tag">
  17. <!--自定义展示信息(每10个换行)-->
  18. <el-tag class="custom-tag" type="success">{{ tag.detailCode }}</el-tag>
  19. <br v-if="(index + 1) % 10 === 0">
  20. </template>
  21. </el-tag-group>
  22. </div>
  23. </div>
  24. <div v-else-if="scope.row.loading" style="text-align: center;">加载中...</div>
  25. <div v-else style="text-align: center;">暂无数据</div>
  26. </template>
  27. </el-table-column>
  28. <el-table-column label="编码" align="center" prop="code" width="auto" />
  29. <el-table-column label="名称" align="center" prop="name" width="auto" />
  30. </el-table>
  31. </template>
  32. <script setup>
  33. const listData = ref([
  34. { code: 'code1', name: '名称1' },
  35. { code: 'code2', name: '名称2' },
  36. { code: 'code3', name: '名称2' }
  37. ]);
  38. const expandedRows = ref([]);
  39. /**树形点击事件 */
  40. function expandChange(row, expandedRows) {
  41. const isExpanded = expandedRows.includes(row);
  42. //判断开启下拉和关闭下拉
  43. if (!isExpanded) {
  44. return;
  45. }
  46. //加载状态
  47. row.loading = true;
  48. //TODO 展示没数据效果
  49. if(row.code=='code3'){row.loading = false;return;}
  50. //仿照后端接口赋值
  51. row.detailList = [
  52. { detailCode: '1111111' }, { detailCode: '2222222' }, { detailCode: '3333333' }, { detailCode: '4444444' }, { detailCode: '5555555' }, { detailCode: '6666666' }, { detailCode: '7777777' }, { detailCode: '8888888' }, { detailCode: '9999999' }, { detailCode: '0000000' },
  53. { detailCode: 'ABCDEFG' }, { detailCode: 'ABCDEFG' }, { detailCode: 'ABCDEFG' }, { detailCode: 'ABCDEFG' }, { detailCode: 'ABCDEFG' }, { detailCode: 'ABCDEFG' }, { detailCode: 'ABCDEFG' }, { detailCode: 'ABCDEFG' }, { detailCode: 'ABCDEFG' }, { detailCode: 'ABCDEFG' }
  54. ];
  55. //解除加载状态
  56. row.loading = false;
  57. }
  58. </script>
  59. <style>
  60. .custom-tag {
  61. display: inline-flex;
  62. align-items: center;
  63. justify-content: center;
  64. width: calc(10% - 20px);
  65. margin: 5px 10px 5px 10px;
  66. }
  67. </style>

效果展示:

 

 

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

闽ICP备14008679号