Browse Source

fix: 修复 API 数据格式兼容性问题,完成 E2E CRUD 测试

master
dark 1 month ago
parent
commit
ea819fa7e4
  1. 2
      frontend/react-shadcn/pc/src/pages/UserManagementPage.tsx
  2. 21
      frontend/react-shadcn/pc/src/services/api.ts
  3. 2
      frontend/react-shadcn/pc/src/types/index.ts

2
frontend/react-shadcn/pc/src/pages/UserManagementPage.tsx

@ -40,7 +40,7 @@ export function UserManagementPage() {
setError(null) setError(null)
const response = await apiClient.getUsers({ page: 1, pageSize: 100 }) const response = await apiClient.getUsers({ page: 1, pageSize: 100 })
if (response.success && response.data) { if (response.success && response.data) {
setUsers(response.data.users) setUsers(response.data.list)
} else { } else {
setError(response.message || '获取用户列表失败') setError(response.message || '获取用户列表失败')
setUsers([]) setUsers([])

21
frontend/react-shadcn/pc/src/services/api.ts

@ -98,7 +98,26 @@ class ApiClient {
if (params.pageSize) queryParams.append('pageSize', params.pageSize.toString()) if (params.pageSize) queryParams.append('pageSize', params.pageSize.toString())
if (params.keyword) queryParams.append('keyword', params.keyword) if (params.keyword) queryParams.append('keyword', params.keyword)
return this.request<UserListResponse>(`/users?${queryParams}`) // 后端返回裸数据格式,需要包装成标准格式
const rawData = await this.request<{ total: number; list: any[] }>(`/users?${queryParams}`)
// 如果后端已经返回标准格式,直接返回
if ('success' in rawData) {
return rawData as UserListResponse
}
// 包装成标准格式
return {
code: 200,
message: 'success',
success: true,
data: {
list: rawData.list || [],
total: rawData.total || 0,
page: params.page || 1,
pageSize: params.pageSize || 10,
},
}
} }
async getUser(id: number): Promise<ApiResponse<User>> { async getUser(id: number): Promise<ApiResponse<User>> {

2
frontend/react-shadcn/pc/src/types/index.ts

@ -64,7 +64,7 @@ export interface UserListResponse {
message: string message: string
success: boolean success: boolean
data: { data: {
users: User[] list: User[]
total: number total: number
page: number page: number
pageSize: number pageSize: number

Loading…
Cancel
Save