<!-- 表格记录 --> <script lang="ts" setup> import type { PropType } from 'vue' import type { TableColumn } from '@/components/NormalTable/table_interface' const props = defineProps({ loading: { type: Boolean, default: false, }, columns: { type: Array as PropType<TableColumn[]>, required: true, }, list: { type: Array, required: true, }, total: { type: Number, default: 0, }, }) const emits = defineEmits(['changePage']) const searchQuery = ref({ limit: 10, offset: 1, }) // 页数发生变化后的操作,可能是页码变化,可能是每页容量变化,此函数必写 const changePage = (val: { size?: number; page?: number }) => { if (val && val.size) { searchQuery.value.limit = val.size } if (val && val.page) { searchQuery.value.offset = val.page } emits('changePage', searchQuery) } </script> <template> <div> <normal-table :data="list" :total="total" :columns="columns" :query="{ limit: searchQuery.limit, offset: searchQuery.offset }" :list-loading="loading" @change="changePage" > <template #preColumns> <el-table-column label="序号" width="55" align="center"> <template #default="scope"> {{ (searchQuery.offset - 1) * searchQuery.limit + scope.$index + 1 }} </template> </el-table-column> </template> </normal-table> </div> </template>