ladder-table.vue 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <script setup lang="ts">
  2. import { useRenderIcon } from "/@/components/ReIcon/src/hooks";
  3. const emit = defineEmits(["choose", "delete", "update"]);
  4. defineProps<{
  5. ladder: Record<string, any>[];
  6. readonly: boolean;
  7. }>();
  8. </script>
  9. <template>
  10. <ElTable size="small" border :data="ladder">
  11. <ElTableColumn prop="name" label="顺序">
  12. <template #="{ $index }">
  13. {{ $index + 1 }}
  14. </template>
  15. </ElTableColumn>
  16. <ElTableColumn prop="key" label="类型" />
  17. <ElTableColumn prop="value" label="类型值" />
  18. <ElTableColumn v-if="!readonly">
  19. <template #header>
  20. <div class="w-full flex justify-between">
  21. <p>操作</p>
  22. <ElTooltip content="添加阶梯" placement="top">
  23. <ElButton
  24. link
  25. :icon="useRenderIcon('add')"
  26. @click="() => emit('choose')"
  27. />
  28. </ElTooltip>
  29. </div>
  30. </template>
  31. <template #="{ $index, row }">
  32. <ElButton
  33. text
  34. type="primary"
  35. size="small"
  36. @click="() => emit('update', { data: row, index: $index })"
  37. >编辑</ElButton
  38. >
  39. <ElButton
  40. text
  41. type="primary"
  42. size="small"
  43. @click="() => emit('delete', $index)"
  44. >删除</ElButton
  45. >
  46. </template>
  47. </ElTableColumn>
  48. </ElTable>
  49. </template>