high.vue 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <script setup lang="ts">
  2. import { ref } from "vue";
  3. import { list } from "./high/list";
  4. defineOptions({
  5. name: "PureTableHigh"
  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. 高级用法全部采用 TSX 语法,充分发挥
  18. <el-link
  19. href="https://github.com/pure-admin/pure-admin-table"
  20. target="_blank"
  21. style="margin: 0 4px 5px; font-size: 16px"
  22. >
  23. @pureadmin/table
  24. </el-link>
  25. 的灵活性,维护整体表格只需操作 columns 配置即可
  26. </span>
  27. </div>
  28. <el-link
  29. class="mt-2"
  30. href="https://github.com/pure-admin/vue-pure-admin/blob/main/src/views/table/high"
  31. target="_blank"
  32. >
  33. 代码位置 src/views/table/high
  34. </el-link>
  35. </template>
  36. <el-alert
  37. title="高级用法中所有表格都设置了 row-key ,后端需返回唯一值的字段,比如id。作用:1. 用来优化 Table
  38. 的渲染,尤其当字段在深层结构中;2. 防止拖拽后表格组件内部混乱(拖拽必须设置)"
  39. type="info"
  40. :closable="false"
  41. />
  42. <el-tabs @tab-click="tabClick">
  43. <template v-for="(item, index) of list" :key="item.key">
  44. <el-tab-pane :lazy="true">
  45. <template #label>
  46. <span
  47. v-tippy="{
  48. maxWidth: 'none',
  49. content: `(第 ${index + 1} 个示例)${item.content}`
  50. }"
  51. >
  52. {{ item.title }}
  53. </span>
  54. </template>
  55. <component :is="item.component" v-if="selected == index" />
  56. </el-tab-pane>
  57. </template>
  58. </el-tabs>
  59. </el-card>
  60. </template>
  61. <style scoped>
  62. :deep(.el-tabs__nav-wrap)::after {
  63. height: 1px;
  64. }
  65. :deep(.el-tabs__header) {
  66. margin-top: 10px;
  67. }
  68. :deep(.el-alert__title) {
  69. font-size: 15px;
  70. }
  71. :deep(.el-tabs__nav-next),
  72. :deep(.el-tabs__nav-prev) {
  73. font-size: 16px;
  74. color: var(--el-text-color-primary);
  75. }
  76. :deep(.el-tabs__nav-next.is-disabled),
  77. :deep(.el-tabs__nav-prev.is-disabled) {
  78. opacity: 0.5;
  79. }
  80. </style>