ztTableHeader.vue 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <template>
  2. <div class="w-full" :class="`${prefixCls}__header`">
  3. <div class="flex items-center">
  4. <slot name="tableTitle" v-if="$slots.tableTitle"></slot>
  5. <ZtTableHeaderTitle
  6. :helpMessage="titleHelpMessage"
  7. :title="title"
  8. v-if="!$slots.tableTitle && title"
  9. />
  10. <div :class="`${prefixCls}__toolbar`">
  11. <slot name="toolbar"></slot>
  12. <ElDivider direction="vertical" v-if="$slots.toolbar && showTableSetting" class="setting-vertical"/>
  13. <ZtTableSetting :setting="tableSetting" v-if="showTableSetting" />
  14. <!-- <TableSettingComponent :setting="tableSetting" v-if="showTableSetting" @columns-change="handleColumnChange" /> -->
  15. </div>
  16. </div>
  17. </div>
  18. </template>
  19. <script lang="ts" setup>
  20. import { useDesign } from '@/hooks/web/useDesign'
  21. import ZtTableHeaderTitle from './ztTableHeaderTitle.vue'
  22. import { TableSetting } from '@/types/table'
  23. import ZtTableSetting from './ztTableSetting.vue'
  24. import { ElDivider } from 'element-plus'
  25. const { getPrefixCls } = useDesign()
  26. const prefixCls = getPrefixCls('table')
  27. defineOptions({
  28. name: 'ZtTableHeader',
  29. inheritAttrs: false
  30. })
  31. const props = withDefaults(
  32. defineProps<{
  33. title?: string | ((data: Recordable) => string) //标题
  34. tableSetting?: TableSetting // 设置显示的按钮
  35. titleHelpMessage?: string | string[]
  36. showTableSetting?: boolean
  37. }>(),
  38. {
  39. title: '',
  40. tableSetting: undefined,
  41. titleHelpMessage: '',
  42. showTableSetting: true
  43. }
  44. )
  45. </script>
  46. <style lang="scss" scoped>
  47. $prefix-cls: #{$namespace}-table;
  48. .#{$prefix-cls}__header {
  49. background-color: var(--el-table-bg-color);
  50. padding-bottom: 8px;
  51. }
  52. .#{$prefix-cls}__toolbar {
  53. display: flex;
  54. flex: 1;
  55. align-items: center;
  56. justify-content: flex-end;
  57. .setting-vertical{
  58. margin: 0 10px;
  59. }
  60. }
  61. </style>