task-44(账号/权限页面): 实现用户分页边界行为

新增 user-pagination.ts 纯函数:totalPageCount(空数据=0、非整倍向上取整)、
clampPage(<1→1、超末页→末页、空态留第1页)、isPageOutOfRange;UsersPage
加载后若总页数收缩致当前页越界则回钳末页重新拉取一次。8 用例全过,315 单测 + build 绿。
This commit is contained in:
2026-09-05 14:54:11 +08:00
parent a8c5d357e6
commit 1ae4bb2a36
3 changed files with 93 additions and 0 deletions
@@ -5,6 +5,7 @@ import { http } from '@/api/http'
import type { AdminUser } from '@/types/admin'
import { fetchUserList } from '@/api/users'
import { createUserFilterState, toUserListParams } from './users-filter'
import { totalPageCount } from './user-pagination'
const loading = ref(false)
const rows = ref<AdminUser[]>([])
@@ -17,6 +18,14 @@ async function loadUsers() {
const page = await fetchUserList(toUserListParams(filters))
rows.value = page.items
total.value = page.total
// 数据被删/筛选后总页数收缩:页码越界时回钳到末页并重新加载一次。
const last = totalPageCount(page.total, filters.pageSize)
if (last > 0 && filters.page > last) {
filters.page = last
const retried = await fetchUserList(toUserListParams(filters))
rows.value = retried.items
total.value = retried.total
}
} catch (error) {
ElMessage.error(error instanceof Error ? error.message : '用户列表加载失败')
} finally {