41 lines
1.0 KiB
Vue
41 lines
1.0 KiB
Vue
<script setup lang="ts">
|
|
import type { TableProps, TableRowData } from 'tdesign-vue-next';
|
|
|
|
const emit = defineEmits(['pageChange', 'onRowClick']);
|
|
|
|
const data = defineModel<unknown>('data');
|
|
const columns = defineModel<TableProps['columns']>('columns');
|
|
const loading = defineModel<boolean>('loading');
|
|
const pagination = defineModel<TableProps['pagination']>('pagination');
|
|
|
|
async function onPageChange(pageInfo: { current: number; pageSize: number }) {
|
|
console.log('Page change');
|
|
console.log(pageInfo);
|
|
emit('pageChange', pageInfo);
|
|
}
|
|
function onRowClick(x: any) {
|
|
emit('onRowClick', x);
|
|
}
|
|
function onSelectChange() {
|
|
console.log('Select change');
|
|
}
|
|
</script>
|
|
|
|
<template>
|
|
<t-table
|
|
row-key="index"
|
|
:data="data as TableRowData[]"
|
|
:columns="columns"
|
|
:pagination="pagination"
|
|
:table-layout="'auto'"
|
|
:bordered="true"
|
|
:stripe="true"
|
|
:lazy-load="true"
|
|
:loading="loading"
|
|
@page-change="onPageChange"
|
|
@select-change="onSelectChange"
|
|
@row-click="onRowClick"
|
|
>
|
|
</t-table>
|
|
</template>
|