修复公告模块的TypeScript错误和API调用
- 使用 apiClient 替换不存在的 apiRequest - 修复可能为 undefined 的对象访问 - 添加可选链操作符和默认值 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import { apiRequest } from '@/utils/apiRequest'
|
||||
import { apiClient } from '@/shared/api/client'
|
||||
import type { ApiResponse } from '@/shared/types/types'
|
||||
|
||||
export interface Announcement {
|
||||
id: number
|
||||
@@ -29,14 +30,11 @@ export interface PaginatedResult<T> {
|
||||
}
|
||||
|
||||
export async function fetchAnnouncements(params: AnnouncementListParams = {}): Promise<PaginatedResult<Announcement>> {
|
||||
return apiRequest<PaginatedResult<Announcement>>('/api/announcements', {
|
||||
method: 'GET',
|
||||
params,
|
||||
})
|
||||
const { data } = await apiClient.get<ApiResponse<PaginatedResult<Announcement>>>('/announcements', { params })
|
||||
return data.data
|
||||
}
|
||||
|
||||
export async function fetchAnnouncementDetail(id: number): Promise<Announcement> {
|
||||
return apiRequest<Announcement>(`/api/announcements/${id}`, {
|
||||
method: 'GET',
|
||||
})
|
||||
const { data } = await apiClient.get<ApiResponse<Announcement>>(`/announcements/${id}`)
|
||||
return data.data
|
||||
}
|
||||
|
||||
@@ -68,11 +68,11 @@ function getCategoryLabel(category: string) {
|
||||
size="small"
|
||||
class="category-tag"
|
||||
:style="{
|
||||
borderColor: getCategoryInfo(announcement.category).color,
|
||||
color: getCategoryInfo(announcement.category).color
|
||||
borderColor: getCategoryInfo(announcement.category)?.color || '#94a3b8',
|
||||
color: getCategoryInfo(announcement.category)?.color || '#94a3b8'
|
||||
}"
|
||||
>
|
||||
<el-icon><component :is="getCategoryInfo(announcement.category).icon" /></el-icon>
|
||||
<el-icon><component :is="getCategoryInfo(announcement.category)?.icon || Bell" /></el-icon>
|
||||
{{ getCategoryLabel(announcement.category) }}
|
||||
</el-tag>
|
||||
<el-tag v-if="announcement.is_pinned" type="warning" effect="plain" size="small">置顶</el-tag>
|
||||
|
||||
@@ -110,13 +110,13 @@ function getCategoryLabel(category: string) {
|
||||
<div class="announcement-header">
|
||||
<div class="announcement-meta">
|
||||
<el-tag
|
||||
:type="getCategoryInfo(item.category).value === 'notice' ? 'primary' : 'info'"
|
||||
:type="getCategoryInfo(item.category)?.value === 'notice' ? 'primary' : 'info'"
|
||||
effect="plain"
|
||||
size="small"
|
||||
class="category-tag"
|
||||
:style="{ borderColor: getCategoryInfo(item.category).color, color: getCategoryInfo(item.category).color }"
|
||||
:style="{ borderColor: getCategoryInfo(item.category)?.color || '#94a3b8', color: getCategoryInfo(item.category)?.color || '#94a3b8' }"
|
||||
>
|
||||
<el-icon><component :is="getCategoryInfo(item.category).icon" /></el-icon>
|
||||
<el-icon><component :is="getCategoryInfo(item.category)?.icon || Bell" /></el-icon>
|
||||
{{ getCategoryLabel(item.category) }}
|
||||
</el-tag>
|
||||
<el-tag v-if="item.is_pinned" type="warning" effect="plain" size="small">置顶</el-tag>
|
||||
|
||||
Reference in New Issue
Block a user