import { defineComponent } from 'vue' import { ElTableColumn } from 'element-plus' import { Column } from './ctable' export default defineComponent({ name: 'DynamicTable', props: { columns: { type: Array, default: [] }, api: { type: String, default: '' } }, setup(props, { slots }) { const renderColumns = (columns: Array) => { return columns.map(column => { if (column.children) { return ( {renderColumns(column.children)} ) } else { return ( {{ default: (row: any) => { // 使用默认插槽 return row[column.prop as string] }, customSlot: (row: any) => { // 使用具名插槽 customSlot return slots.customSlot ? slots.customSlot({ column, row }) : null } }} ) } }) } return renderColumns(props.columns) // return () => {renderColumns(props.columns)} } })