useTableColumnSet.ts 738 B

1234567891011121314151617181920212223242526272829
  1. import { Ref } from 'vue'
  2. import { CommonTableColumn } from '~/common'
  3. export default function useTableColumnSet(
  4. tableColumns: Ref<CommonTableColumn[]>
  5. ) {
  6. const filterColumnKeys = ref<string[]>([])
  7. const filteredColumns = ref<CommonTableColumn[]>([])
  8. watchEffect(() => {
  9. filteredColumns.value = tableColumns.value.filter(column => {
  10. if (
  11. column.needShow &&
  12. filterColumnKeys.value.includes(column.columnName)
  13. ) {
  14. column.hidden = false
  15. return column
  16. } else {
  17. column.hidden = true
  18. }
  19. })
  20. })
  21. const columnChecked = (checkedColumnKeys: string[]) => {
  22. filterColumnKeys.value = checkedColumnKeys
  23. }
  24. return {
  25. filteredColumns,
  26. columnChecked,
  27. }
  28. }