fix(admin-web): 修复分页参数命名不匹配导致翻页无效

- 前端 PagedRequest 接口 pageIndex 改为 page,与后端 PagedRequest.Page 对齐
- 修复所有管理页面的分页参数:题库、测评类型、报告分类、报告结论、
  用户、订单、轮播图、宣传图、业务页面、规划师、预约、邀请码、佣金、提现
- 原因:前端传 pageIndex,后端绑定不到 Page 属性,始终返回第一页数据
This commit is contained in:
zpc 2026-02-22 22:37:55 +08:00
parent d292368dd3
commit 2d6d0bda6a
15 changed files with 93 additions and 93 deletions

View File

@ -10,7 +10,7 @@
*/
export interface PagedRequest {
/** 页码从1开始 */
pageIndex: number
page: number
/** 每页数量 */
pageSize: number
}

View File

@ -387,7 +387,7 @@ function hasChildren(row: CategoryTreeNode): boolean {
async function loadAssessmentTypes() {
try {
const res = await getAssessmentTypeList({ pageIndex: 1, pageSize: 100 })
const res = await getAssessmentTypeList({ page: 1, pageSize: 100 })
if (res.code === 0) {
state.assessmentTypes = res.data?.list || []
//

View File

@ -372,7 +372,7 @@ function getContentPreview(content: string): string {
async function loadAssessmentTypes() {
try {
const res = await getAssessmentTypeList({ pageIndex: 1, pageSize: 100 })
const res = await getAssessmentTypeList({ page: 1, pageSize: 100 })
if (res.code === 0) {
state.assessmentTypes = res.data?.list || []
//

View File

@ -141,7 +141,7 @@
<!-- 分页 -->
<div class="pagination-wrapper">
<el-pagination
v-model:current-page="queryParams.pageIndex"
v-model:current-page="queryParams.page"
v-model:page-size="queryParams.pageSize"
:page-sizes="[10, 20, 50, 100]"
:total="state.total"
@ -443,7 +443,7 @@ const uploadRef = ref<UploadInstance>()
// ============ State ============
const queryParams = reactive<QuestionQuery>({
pageIndex: 1,
page: 1,
pageSize: 10,
assessmentTypeId: undefined,
questionNo: undefined,
@ -520,7 +520,7 @@ function getContentPreview(content: string): string {
async function loadAssessmentTypes() {
try {
const res = await getAssessmentTypeList({ pageIndex: 1, pageSize: 100 })
const res = await getAssessmentTypeList({ page: 1, pageSize: 100 })
if (res.code === 0) {
state.assessmentTypes = res.data?.list || []
}
@ -533,7 +533,7 @@ async function loadQuestionList() {
state.loading = true
try {
const params: QuestionQuery = {
pageIndex: queryParams.pageIndex,
page: queryParams.page,
pageSize: queryParams.pageSize
}
if (queryParams.assessmentTypeId) {
@ -595,7 +595,7 @@ async function loadQuestionMappings(questionId: number) {
// ============ Event Handlers ============
function handleSearch() {
queryParams.pageIndex = 1
queryParams.page = 1
loadQuestionList()
}
@ -603,18 +603,18 @@ function handleReset() {
queryParams.assessmentTypeId = undefined
queryParams.questionNo = undefined
queryParams.status = undefined
queryParams.pageIndex = 1
queryParams.page = 1
loadQuestionList()
}
function handleSizeChange(size: number) {
queryParams.pageSize = size
queryParams.pageIndex = 1
queryParams.page = 1
loadQuestionList()
}
function handleCurrentChange(page: number) {
queryParams.pageIndex = page
queryParams.page = page
loadQuestionList()
}
@ -645,8 +645,8 @@ async function handleDelete(row: QuestionItem) {
if (res.code === 0) {
ElMessage.success('删除成功')
//
if (state.tableData.length === 1 && queryParams.pageIndex > 1) {
queryParams.pageIndex--
if (state.tableData.length === 1 && queryParams.page > 1) {
queryParams.page--
}
await loadQuestionList()
} else {

View File

@ -159,7 +159,7 @@
<!-- 分页 -->
<div class="pagination-wrapper">
<el-pagination
v-model:current-page="queryParams.pageIndex"
v-model:current-page="queryParams.page"
v-model:page-size="queryParams.pageSize"
:page-sizes="[10, 20, 50, 100]"
:total="state.total"
@ -337,7 +337,7 @@ const formRef = ref<FormInstance>()
// ============ State ============
const queryParams = reactive<AssessmentTypeQuery>({
pageIndex: 1,
page: 1,
pageSize: 10,
name: '',
code: '',
@ -434,7 +434,7 @@ async function loadAssessmentTypeList() {
state.loading = true
try {
const params: AssessmentTypeQuery = {
pageIndex: queryParams.pageIndex,
page: queryParams.page,
pageSize: queryParams.pageSize
}
if (queryParams.name) {
@ -465,7 +465,7 @@ async function loadAssessmentTypeList() {
// ============ Event Handlers ============
function handleSearch() {
queryParams.pageIndex = 1
queryParams.page = 1
loadAssessmentTypeList()
}
@ -473,18 +473,18 @@ function handleReset() {
queryParams.name = ''
queryParams.code = ''
queryParams.status = undefined
queryParams.pageIndex = 1
queryParams.page = 1
loadAssessmentTypeList()
}
function handleSizeChange(size: number) {
queryParams.pageSize = size
queryParams.pageIndex = 1
queryParams.page = 1
loadAssessmentTypeList()
}
function handleCurrentChange(page: number) {
queryParams.pageIndex = page
queryParams.page = page
loadAssessmentTypeList()
}
@ -553,8 +553,8 @@ async function handleDelete(row: AssessmentTypeItem) {
if (res.code === 0) {
ElMessage.success('删除成功')
//
if (state.tableData.length === 1 && queryParams.pageIndex > 1) {
queryParams.pageIndex--
if (state.tableData.length === 1 && queryParams.page > 1) {
queryParams.page--
}
await loadAssessmentTypeList()
} else {

View File

@ -164,7 +164,7 @@
<!-- 分页 -->
<div class="pagination-wrapper">
<el-pagination
v-model:current-page="queryParams.pageIndex"
v-model:current-page="queryParams.page"
v-model:page-size="queryParams.pageSize"
:page-sizes="[10, 20, 50, 100]"
:total="state.total"
@ -335,7 +335,7 @@ const formRef = ref<FormInstance>()
// ============ State ============
const queryParams = reactive<BannerQuery>({
pageIndex: 1,
page: 1,
pageSize: 10,
title: '',
status: undefined
@ -494,7 +494,7 @@ async function loadBannerList() {
state.loading = true
try {
const params: BannerQuery = {
pageIndex: queryParams.pageIndex,
page: queryParams.page,
pageSize: queryParams.pageSize
}
if (queryParams.title) {
@ -566,25 +566,25 @@ async function swapAndUpdateSort(fromIndex: number, toIndex: number) {
// ============ Event Handlers ============
function handleSearch() {
queryParams.pageIndex = 1
queryParams.page = 1
loadBannerList()
}
function handleReset() {
queryParams.title = ''
queryParams.status = undefined
queryParams.pageIndex = 1
queryParams.page = 1
loadBannerList()
}
function handleSizeChange(size: number) {
queryParams.pageSize = size
queryParams.pageIndex = 1
queryParams.page = 1
loadBannerList()
}
function handleCurrentChange(page: number) {
queryParams.pageIndex = page
queryParams.page = page
loadBannerList()
}
@ -652,8 +652,8 @@ async function handleDelete(row: BannerItem) {
if (res.code === 0) {
ElMessage.success('删除成功')
//
if (state.tableData.length === 1 && queryParams.pageIndex > 1) {
queryParams.pageIndex--
if (state.tableData.length === 1 && queryParams.page > 1) {
queryParams.page--
}
await loadBannerList()
} else {

View File

@ -120,7 +120,7 @@
<!-- 分页 -->
<div class="pagination-wrapper">
<el-pagination
v-model:current-page="queryParams.pageIndex"
v-model:current-page="queryParams.page"
v-model:page-size="queryParams.pageSize"
:page-sizes="[10, 20, 50, 100]"
:total="state.total"
@ -241,7 +241,7 @@ const formRef = ref<FormInstance>()
// ============ State ============
const queryParams = reactive({
pageIndex: 1,
page: 1,
pageSize: 10,
title: '',
status: undefined as string | undefined
@ -284,7 +284,7 @@ async function loadList() {
state.loading = true
try {
const params: BusinessPageQuery = {
pageIndex: queryParams.pageIndex,
page: queryParams.page,
pageSize: queryParams.pageSize
}
if (queryParams.title) params.title = queryParams.title
@ -307,10 +307,10 @@ async function loadList() {
// ============ Handlers ============
function handleSearch() { queryParams.pageIndex = 1; loadList() }
function handleReset() { queryParams.title = ''; queryParams.status = undefined; queryParams.pageIndex = 1; loadList() }
function handleSizeChange(size: number) { queryParams.pageSize = size; queryParams.pageIndex = 1; loadList() }
function handleCurrentChange(page: number) { queryParams.pageIndex = page; loadList() }
function handleSearch() { queryParams.page = 1; loadList() }
function handleReset() { queryParams.title = ''; queryParams.status = undefined; queryParams.page = 1; loadList() }
function handleSizeChange(size: number) { queryParams.pageSize = size; queryParams.page = 1; loadList() }
function handleCurrentChange(page: number) { queryParams.page = page; loadList() }
function handleAdd() {
state.isEdit = false
@ -357,7 +357,7 @@ async function handleDelete(row: BusinessPageItem) {
const res = await deleteBusinessPage(row.id)
if (res.code === 0) {
ElMessage.success('删除成功')
if (state.tableData.length === 1 && queryParams.pageIndex > 1) queryParams.pageIndex--
if (state.tableData.length === 1 && queryParams.page > 1) queryParams.page--
await loadList()
} else {
throw new Error(res.message || '删除失败')

View File

@ -146,7 +146,7 @@
<!-- 分页 -->
<div class="pagination-wrapper">
<el-pagination
v-model:current-page="queryParams.pageIndex"
v-model:current-page="queryParams.page"
v-model:page-size="queryParams.pageSize"
:page-sizes="[10, 20, 50, 100]"
:total="state.total"
@ -279,7 +279,7 @@ const formRef = ref<FormInstance>()
/** Query params with string types for DictSelect compatibility */
interface PromotionQueryParams {
pageIndex: number
page: number
pageSize: number
title: string
position: string | undefined
@ -289,7 +289,7 @@ interface PromotionQueryParams {
// ============ State ============
const queryParams = reactive<PromotionQueryParams>({
pageIndex: 1,
page: 1,
pageSize: 10,
title: '',
position: undefined,
@ -357,7 +357,7 @@ async function loadPromotionList() {
state.loading = true
try {
const params: PromotionQuery = {
pageIndex: queryParams.pageIndex,
page: queryParams.page,
pageSize: queryParams.pageSize
}
if (queryParams.title) {
@ -388,7 +388,7 @@ async function loadPromotionList() {
// ============ Event Handlers ============
function handleSearch() {
queryParams.pageIndex = 1
queryParams.page = 1
loadPromotionList()
}
@ -396,18 +396,18 @@ function handleReset() {
queryParams.title = ''
queryParams.position = undefined
queryParams.status = undefined
queryParams.pageIndex = 1
queryParams.page = 1
loadPromotionList()
}
function handleSizeChange(size: number) {
queryParams.pageSize = size
queryParams.pageIndex = 1
queryParams.page = 1
loadPromotionList()
}
function handleCurrentChange(page: number) {
queryParams.pageIndex = page
queryParams.page = page
loadPromotionList()
}
@ -462,8 +462,8 @@ async function handleDelete(row: PromotionItem) {
if (res.code === 0) {
ElMessage.success('删除成功')
//
if (state.tableData.length === 1 && queryParams.pageIndex > 1) {
queryParams.pageIndex--
if (state.tableData.length === 1 && queryParams.page > 1) {
queryParams.page--
}
await loadPromotionList()
} else {

View File

@ -114,7 +114,7 @@
<!-- 分页 -->
<div class="pagination-container">
<el-pagination v-model:current-page="queryParams.pageIndex" v-model:page-size="queryParams.pageSize"
<el-pagination v-model:current-page="queryParams.page" v-model:page-size="queryParams.pageSize"
:page-sizes="[10, 20, 50, 100]" :total="total" layout="total, sizes, prev, pager, next, jumper"
@size-change="handleSizeChange" @current-change="handleCurrentChange" />
</div>
@ -167,7 +167,7 @@ const dateRange = ref<[string, string] | null>(null)
//
const queryParams = reactive<CommissionQuery>({
pageIndex: 1,
page: 1,
pageSize: 10,
userId: undefined,
fromUserId: undefined,
@ -215,7 +215,7 @@ const handleDateChange = (val: [string, string] | null) => {
}
}
const handleSearch = () => { queryParams.pageIndex = 1; fetchData() }
const handleSearch = () => { queryParams.page = 1; fetchData() }
const handleReset = () => {
queryParams.userId = undefined
queryParams.fromUserId = undefined
@ -225,11 +225,11 @@ const handleReset = () => {
queryParams.createTimeStart = undefined
queryParams.createTimeEnd = undefined
dateRange.value = null
queryParams.pageIndex = 1
queryParams.page = 1
fetchData()
}
const handleSizeChange = (size: number) => { queryParams.pageSize = size; fetchData() }
const handleCurrentChange = (page: number) => { queryParams.pageIndex = page; fetchData() }
const handleCurrentChange = (page: number) => { queryParams.page = page; fetchData() }
//
const handleDetail = async (row: CommissionItem) => {

View File

@ -90,7 +90,7 @@
<!-- 分页 -->
<div class="pagination-container">
<el-pagination v-model:current-page="queryParams.pageIndex" v-model:page-size="queryParams.pageSize"
<el-pagination v-model:current-page="queryParams.page" v-model:page-size="queryParams.pageSize"
:page-sizes="[10, 20, 50, 100]" :total="total" layout="total, sizes, prev, pager, next, jumper"
@size-change="handleSizeChange" @current-change="handleCurrentChange" />
</div>
@ -193,7 +193,7 @@ const selectedRows = ref<InviteCodeItem[]>([])
//
const queryParams = reactive<InviteCodeQuery>({
pageIndex: 1,
page: 1,
pageSize: 10,
code: undefined,
batchNo: undefined,
@ -232,13 +232,13 @@ const searchUsers = async (query: string) => {
userSearchLoading.value = true
try {
//
const res = await getUserList({ pageIndex: 1, pageSize: 20, nickname: query })
const res = await getUserList({ page: 1, pageSize: 20, nickname: query })
if (res.code === 0) {
userOptions.value = res.data.list
}
// UID
if (userOptions.value.length === 0) {
const uidRes = await getUserList({ pageIndex: 1, pageSize: 20, uid: query })
const uidRes = await getUserList({ page: 1, pageSize: 20, uid: query })
if (uidRes.code === 0) {
userOptions.value = uidRes.data.list
}
@ -268,17 +268,17 @@ const fetchData = async () => {
}
}
const handleSearch = () => { queryParams.pageIndex = 1; fetchData() }
const handleSearch = () => { queryParams.page = 1; fetchData() }
const handleReset = () => {
queryParams.code = undefined
queryParams.batchNo = undefined
queryParams.assignUserId = undefined
queryParams.status = undefined
queryParams.pageIndex = 1
queryParams.page = 1
fetchData()
}
const handleSizeChange = (size: number) => { queryParams.pageSize = size; fetchData() }
const handleCurrentChange = (page: number) => { queryParams.pageIndex = page; fetchData() }
const handleCurrentChange = (page: number) => { queryParams.page = page; fetchData() }
const handleSelectionChange = (rows: InviteCodeItem[]) => { selectedRows.value = rows }
//

View File

@ -85,7 +85,7 @@
<!-- 分页 -->
<div class="pagination-container">
<el-pagination v-model:current-page="queryParams.pageIndex" v-model:page-size="queryParams.pageSize"
<el-pagination v-model:current-page="queryParams.page" v-model:page-size="queryParams.pageSize"
:page-sizes="[10, 20, 50, 100]" :total="total" layout="total, sizes, prev, pager, next, jumper"
@size-change="handleSizeChange" @current-change="handleCurrentChange" />
</div>
@ -169,7 +169,7 @@ const dateRange = ref<[string, string] | null>(null)
//
const queryParams = reactive<WithdrawalQuery>({
pageIndex: 1,
page: 1,
pageSize: 10,
withdrawalNo: undefined,
userId: undefined,
@ -227,7 +227,7 @@ const handleDateChange = (val: [string, string] | null) => {
}
}
const handleSearch = () => { queryParams.pageIndex = 1; fetchData() }
const handleSearch = () => { queryParams.page = 1; fetchData() }
const handleReset = () => {
queryParams.withdrawalNo = undefined
queryParams.userId = undefined
@ -235,11 +235,11 @@ const handleReset = () => {
queryParams.createTimeStart = undefined
queryParams.createTimeEnd = undefined
dateRange.value = null
queryParams.pageIndex = 1
queryParams.page = 1
fetchData()
}
const handleSizeChange = (size: number) => { queryParams.pageSize = size; fetchData() }
const handleCurrentChange = (page: number) => { queryParams.pageIndex = page; fetchData() }
const handleCurrentChange = (page: number) => { queryParams.page = page; fetchData() }
//
const handleDetail = async (row: WithdrawalItem) => {

View File

@ -172,7 +172,7 @@
<!-- 分页 -->
<div class="pagination-wrapper">
<el-pagination
v-model:current-page="queryParams.pageIndex"
v-model:current-page="queryParams.page"
v-model:page-size="queryParams.pageSize"
:page-sizes="[10, 20, 50, 100]"
:total="state.total"
@ -445,7 +445,7 @@ const dateRange = ref<[string, string] | null>(null)
// Query params with string types for DictSelect compatibility
const queryParams = reactive({
pageIndex: 1,
page: 1,
pageSize: 10,
orderNo: '',
userId: '',
@ -625,7 +625,7 @@ async function loadOrderList() {
state.loading = true
try {
const params: OrderQuery = {
pageIndex: queryParams.pageIndex,
page: queryParams.page,
pageSize: queryParams.pageSize
}
if (queryParams.orderNo) {
@ -692,7 +692,7 @@ async function loadOrderDetail(id: number) {
* 搜索
*/
function handleSearch() {
queryParams.pageIndex = 1
queryParams.page = 1
loadOrderList()
}
@ -708,7 +708,7 @@ function handleReset() {
queryParams.createTimeStart = undefined
queryParams.createTimeEnd = undefined
dateRange.value = null
queryParams.pageIndex = 1
queryParams.page = 1
loadOrderList()
}
@ -732,7 +732,7 @@ function handleDateRangeChange(val: [string, string] | null) {
*/
function handleSizeChange(size: number) {
queryParams.pageSize = size
queryParams.pageIndex = 1
queryParams.page = 1
loadOrderList()
}
@ -741,7 +741,7 @@ function handleSizeChange(size: number) {
* @param page 当前页码
*/
function handleCurrentChange(page: number) {
queryParams.pageIndex = page
queryParams.page = page
loadOrderList()
}
@ -812,7 +812,7 @@ async function handleExport() {
state.exportLoading = true
try {
const params: OrderQuery = {
pageIndex: 1,
page: 1,
pageSize: 10000 //
}
if (queryParams.orderNo) {

View File

@ -75,7 +75,7 @@
<!-- 分页 -->
<div class="pagination-container">
<el-pagination
v-model:current-page="queryParams.pageIndex"
v-model:current-page="queryParams.page"
v-model:page-size="queryParams.pageSize"
:page-sizes="[10, 20, 50, 100]"
:total="total"
@ -165,7 +165,7 @@ const plannerOptions = ref<PlannerItem[]>([])
//
const queryParams = reactive<BookingQuery>({
pageIndex: 1,
page: 1,
pageSize: 10,
plannerId: undefined,
userId: undefined,
@ -201,7 +201,7 @@ const getStatusType = (status: number): '' | 'success' | 'warning' | 'info' | 'd
//
const fetchPlanners = async () => {
const res = await getPlannerList({ pageIndex: 1, pageSize: 100 })
const res = await getPlannerList({ page: 1, pageSize: 100 })
if (res.code === 0) {
plannerOptions.value = res.data.list
}
@ -234,7 +234,7 @@ const handleDateChange = (val: [string, string] | null) => {
//
const handleSearch = () => {
queryParams.pageIndex = 1
queryParams.page = 1
fetchData()
}
@ -246,7 +246,7 @@ const handleReset = () => {
queryParams.bookingDateEnd = undefined
queryParams.status = undefined
dateRange.value = null
queryParams.pageIndex = 1
queryParams.page = 1
fetchData()
}
@ -257,7 +257,7 @@ const handleSizeChange = (size: number) => {
}
const handleCurrentChange = (page: number) => {
queryParams.pageIndex = page
queryParams.page = page
fetchData()
}

View File

@ -67,7 +67,7 @@
<!-- 分页 -->
<div class="pagination-container">
<el-pagination
v-model:current-page="queryParams.pageIndex"
v-model:current-page="queryParams.page"
v-model:page-size="queryParams.pageSize"
:page-sizes="[10, 20, 50, 100]"
:total="total"
@ -143,7 +143,7 @@ const total = ref(0)
//
const queryParams = reactive<PlannerQuery>({
pageIndex: 1,
page: 1,
pageSize: 10,
name: undefined,
status: undefined
@ -200,7 +200,7 @@ const fetchData = async () => {
//
const handleSearch = () => {
queryParams.pageIndex = 1
queryParams.page = 1
fetchData()
}
@ -208,7 +208,7 @@ const handleSearch = () => {
const handleReset = () => {
queryParams.name = undefined
queryParams.status = undefined
queryParams.pageIndex = 1
queryParams.page = 1
fetchData()
}
@ -219,7 +219,7 @@ const handleSizeChange = (size: number) => {
}
const handleCurrentChange = (page: number) => {
queryParams.pageIndex = page
queryParams.page = page
fetchData()
}

View File

@ -178,7 +178,7 @@
<!-- 分页 -->
<div class="pagination-wrapper">
<el-pagination
v-model:current-page="queryParams.pageIndex"
v-model:current-page="queryParams.page"
v-model:page-size="queryParams.pageSize"
:page-sizes="[10, 20, 50, 100]"
:total="state.total"
@ -418,7 +418,7 @@ const dateRange = ref<[string, string] | null>(null)
// Query params with string types for DictSelect compatibility
const queryParams = reactive({
pageIndex: 1,
page: 1,
pageSize: 10,
uid: '',
phone: '',
@ -493,7 +493,7 @@ async function loadUserList() {
state.loading = true
try {
const params: UserQuery = {
pageIndex: queryParams.pageIndex,
page: queryParams.page,
pageSize: queryParams.pageSize
}
if (queryParams.uid) {
@ -556,7 +556,7 @@ async function loadUserDetail(id: number) {
// ============ Event Handlers ============
function handleSearch() {
queryParams.pageIndex = 1
queryParams.page = 1
loadUserList()
}
@ -569,7 +569,7 @@ function handleReset() {
queryParams.createTimeStart = undefined
queryParams.createTimeEnd = undefined
dateRange.value = null
queryParams.pageIndex = 1
queryParams.page = 1
loadUserList()
}
@ -585,12 +585,12 @@ function handleDateRangeChange(val: [string, string] | null) {
function handleSizeChange(size: number) {
queryParams.pageSize = size
queryParams.pageIndex = 1
queryParams.page = 1
loadUserList()
}
function handleCurrentChange(page: number) {
queryParams.pageIndex = page
queryParams.page = page
loadUserList()
}
@ -691,7 +691,7 @@ async function handleExport() {
state.exportLoading = true
try {
const params: UserQuery = {
pageIndex: 1,
page: 1,
pageSize: 10000 //
}
if (queryParams.uid) {