feat: 分页逻辑处理

This commit is contained in:
rd
2025-09-05 10:39:01 +08:00
parent 8b42a67e9f
commit 72dabf9a9e
18 changed files with 76 additions and 127 deletions

View File

@ -22,31 +22,28 @@ export function useTableSelectionWithPagination(options: UseTableSelectionWithPa
const rowKey = options.rowKey || 'id';
const selectedRowKeys = ref<Array<string | number>>([]);
const selectedRows = ref<any[]>([]);
const selectedRows = ref<Array<any>>([]);
const pageInfo = ref(merge({}, DEFAULT_PAGE_INFO, options.pageInfo));
const dataSource = ref<any[]>([]);
// 单行选择
const handleSelect = (selectedKeys: (string | number)[], rowKeyValue: string | number, record: any) => {
const select = selectedKeys.includes(rowKeyValue);
selectedRowKeys.value = selectedKeys;
console.log('handleSelect', selectedKeys, rowKeyValue, record);
const handleSelect = (record: any, select: boolean) => {
const _targetKey = record[rowKey];
if (select) {
if (!selectedRows.value.some((v) => v[rowKey] === record[rowKey])) {
selectedRows.value.push(record);
}
selectedRows.value.push(record);
selectedRowKeys.value.push(_targetKey);
} else {
selectedRows.value = selectedRows.value.filter((v) => v[rowKey] !== record[rowKey]);
selectedRows.value = selectedRows.value.filter((v) => v[rowKey] !== _targetKey);
selectedRowKeys.value = selectedRowKeys.value.filter((key) => key !== _targetKey);
}
options.onSelectChange?.();
};
// 全选/取消全选
const handleSelectAll = (checked: boolean) => {
console.log('handleSelectAll', checked)
const currentPageRows = dataSource.value;
const currentPageKeys = currentPageRows.map((v) => v[rowKey]);
@ -63,7 +60,7 @@ export function useTableSelectionWithPagination(options: UseTableSelectionWithPa
options.onSelectChange?.();
};
const onPageChange = (page: number, pageSize:number) => {
const onPageChange = (page: number, pageSize: number) => {
// console.log('onPageChange', page, pageSize);
pageInfo.value.page = page;
pageInfo.value.page_size = pageSize;
@ -76,8 +73,8 @@ export function useTableSelectionWithPagination(options: UseTableSelectionWithPa
// options.onPageSizeChange?.(size);
};
const resetPageInfo = () => {
pageInfo.value = cloneDeep(DEFAULT_PAGE_INFO)
}
pageInfo.value = cloneDeep(DEFAULT_PAGE_INFO);
};
const rowSelection = computed(() => ({
type: 'checkbox',