diff --git a/frontend/admin-web/src/app/(dashboard)/notifications/page.tsx b/frontend/admin-web/src/app/(dashboard)/notifications/page.tsx index a410a235..de524ff5 100644 --- a/frontend/admin-web/src/app/(dashboard)/notifications/page.tsx +++ b/frontend/admin-web/src/app/(dashboard)/notifications/page.tsx @@ -108,8 +108,8 @@ export default function NotificationsPage() { // 加载可用标签 const loadTags = useCallback(async () => { try { - const tags = await userTagService.getTags({ isAdvertisable: true, isEnabled: true }); - setAvailableTags(tags); + const response = await userTagService.getTags({ isAdvertisable: true, isEnabled: true }); + setAvailableTags(response.items); } catch (err) { console.error('Failed to load tags:', err); } diff --git a/frontend/admin-web/src/components/features/notifications/AudienceSegmentsTab/AudienceSegmentsTab.tsx b/frontend/admin-web/src/components/features/notifications/AudienceSegmentsTab/AudienceSegmentsTab.tsx index c4377a1f..ba492195 100644 --- a/frontend/admin-web/src/components/features/notifications/AudienceSegmentsTab/AudienceSegmentsTab.tsx +++ b/frontend/admin-web/src/components/features/notifications/AudienceSegmentsTab/AudienceSegmentsTab.tsx @@ -53,12 +53,12 @@ export const AudienceSegmentsTab = () => { const loadData = useCallback(async () => { try { setLoading(true); - const [segmentsData, tagsData] = await Promise.all([ + const [segmentsResponse, tagsResponse] = await Promise.all([ audienceSegmentService.getSegments(), userTagService.getTags({ isAdvertisable: true }), ]); - setSegments(segmentsData); - setTags(tagsData); + setSegments(segmentsResponse.items); + setTags(tagsResponse.items); } catch (err) { toast.error((err as Error).message || '加载失败'); } finally { diff --git a/frontend/admin-web/src/components/features/notifications/UserTagsTab/UserTagsTab.tsx b/frontend/admin-web/src/components/features/notifications/UserTagsTab/UserTagsTab.tsx index e7f43412..7a97751e 100644 --- a/frontend/admin-web/src/components/features/notifications/UserTagsTab/UserTagsTab.tsx +++ b/frontend/admin-web/src/components/features/notifications/UserTagsTab/UserTagsTab.tsx @@ -55,12 +55,12 @@ export const UserTagsTab = () => { const loadData = useCallback(async () => { try { setLoading(true); - const [categoriesData, tagsData] = await Promise.all([ + const [categoriesData, tagsResponse] = await Promise.all([ userTagService.getCategories(), userTagService.getTags({ categoryId: activeCategory ?? undefined }), ]); setCategories(categoriesData); - setTags(tagsData); + setTags(tagsResponse.items); } catch (err) { toast.error((err as Error).message || '加载失败'); } finally { diff --git a/frontend/admin-web/src/services/audienceSegmentService.ts b/frontend/admin-web/src/services/audienceSegmentService.ts index 04d2bf88..c8a0f7b7 100644 --- a/frontend/admin-web/src/services/audienceSegmentService.ts +++ b/frontend/admin-web/src/services/audienceSegmentService.ts @@ -87,6 +87,12 @@ export interface ListSegmentsParams { offset?: number; } +/** 分页响应 */ +export interface PaginatedResponse { + items: T[]; + total: number; +} + // ===================== // 选项常量 // ===================== @@ -140,7 +146,7 @@ export const SEGMENT_FIELD_OPTIONS = [ export const audienceSegmentService = { /** 获取人群包列表 */ - async getSegments(params: ListSegmentsParams = {}): Promise { + async getSegments(params: ListSegmentsParams = {}): Promise> { return apiClient.get(API_ENDPOINTS.AUDIENCE_SEGMENTS.LIST, { params }); }, diff --git a/frontend/admin-web/src/services/userTagService.ts b/frontend/admin-web/src/services/userTagService.ts index 23aabba5..ed37bf56 100644 --- a/frontend/admin-web/src/services/userTagService.ts +++ b/frontend/admin-web/src/services/userTagService.ts @@ -116,6 +116,12 @@ export interface ListTagsParams { offset?: number; } +/** 分页响应 */ +export interface PaginatedResponse { + items: T[]; + total: number; +} + /** 分配标签请求 */ export interface AssignTagRequest { accountSequence: string; @@ -198,7 +204,7 @@ export const userTagService = { // ===================== /** 获取标签列表 */ - async getTags(params: ListTagsParams = {}): Promise { + async getTags(params: ListTagsParams = {}): Promise> { return apiClient.get(API_ENDPOINTS.USER_TAGS.LIST, { params }); },