import { h } from 'vue' import { ElTag } from 'element-plus' import { $t } from '@/locales' import ArtButtonTable from '@/components/core/forms/art-button-table/index.vue' export function createWaveRuleTableColumns({ handleView, handleEdit, handleDelete }) { return [ { prop: 'code', label: $t('table.code'), minWidth: 180, showOverflowTooltip: true }, { prop: 'typeText', label: $t('pages.manager.waveRule.table.type'), minWidth: 140, formatter: (row) => row.typeText || '-' }, { prop: 'name', label: $t('table.name'), minWidth: 180, showOverflowTooltip: true }, { prop: 'status', label: $t('table.status'), width: 100, formatter: (row) => h(ElTag, { type: row.statusType, effect: 'light' }, () => row.statusText || '-') }, { prop: 'updateByLabel', label: $t('table.updateBy'), width: 120, formatter: (row) => row.updateByLabel || '-' }, { prop: 'updateTimeText', label: $t('table.updateTime'), minWidth: 180, formatter: (row) => row.updateTimeText || '-' }, { prop: 'operation', label: $t('table.operation'), width: handleDelete ? 160 : 120, align: 'right', formatter: (row) => { const buttons = [ h(ArtButtonTable, { type: 'view', onClick: () => handleView(row) }), h(ArtButtonTable, { type: 'edit', onClick: () => handleEdit(row) }) ] if (handleDelete) { buttons.push( h(ArtButtonTable, { type: 'delete', onClick: () => handleDelete(row) }) ) } return h('div', { class: 'flex justify-end' }, buttons) } } ] }