virtual.vue 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <script setup lang="ts">
  2. import { ref } from "vue";
  3. import { list } from "./virtual/list";
  4. defineOptions({
  5. name: "VxeTable"
  6. });
  7. const selected = ref(0);
  8. function tabClick({ index }) {
  9. selected.value = index;
  10. }
  11. </script>
  12. <template>
  13. <el-card shadow="never">
  14. <template #header>
  15. <div class="card-header">
  16. <span class="font-medium">
  17. 虚拟滚动采用
  18. <el-link
  19. href="https://vxetable.cn/#/table/scroll/scroll"
  20. target="_blank"
  21. style="margin: 0 4px 5px; font-size: 16px"
  22. >
  23. vxe-table
  24. </el-link>
  25. </span>
  26. </div>
  27. <el-link
  28. class="mt-2"
  29. href="https://github.com/pure-admin/vue-pure-admin/blob/main/src/views/table/virtual"
  30. target="_blank"
  31. >
  32. 代码位置 src/views/table/virtual
  33. </el-link>
  34. </template>
  35. <el-tabs @tab-click="tabClick">
  36. <template v-for="(item, index) of list" :key="item.key">
  37. <el-tab-pane :lazy="true">
  38. <template #label>
  39. <span
  40. v-tippy="{
  41. maxWidth: 'none',
  42. content: `(第 ${index + 1} 个示例)${item.content}`
  43. }"
  44. >
  45. {{ item.title }}
  46. </span>
  47. </template>
  48. <component :is="item.component" v-if="selected == index" />
  49. </el-tab-pane>
  50. </template>
  51. </el-tabs>
  52. </el-card>
  53. </template>
  54. <style scoped>
  55. :deep(.el-tabs__nav-wrap)::after {
  56. height: 1px;
  57. }
  58. :deep(.el-tabs__nav-next),
  59. :deep(.el-tabs__nav-prev) {
  60. font-size: 16px;
  61. color: var(--el-text-color-primary);
  62. }
  63. :deep(.el-tabs__nav-next.is-disabled),
  64. :deep(.el-tabs__nav-prev.is-disabled) {
  65. opacity: 0.5;
  66. }
  67. </style>