数据结构优化

This commit is contained in:
李琦
2026-01-19 21:19:35 +08:00
parent 7e918cedd4
commit 356dcf4fa5
14 changed files with 557 additions and 45 deletions

View File

@@ -50,7 +50,7 @@ export interface Work {
desc: string
techStack: { category: string; items: string[] }[]
gallery: string[]
links: { live: string }
links: { live?: string; github?: string; demo?: string }
next: string
}
@@ -405,7 +405,7 @@ export const fetchWorks = async (): Promise<Work[]> => {
desc: work.desc || '',
techStack: Array.isArray(work.techStack) ? work.techStack : [],
gallery: Array.isArray(work.gallery) ? work.gallery : [],
links: work.links || { live: '' },
links: work.links || {},
next: work.next || ''
})) as Work[]
} catch (error) {
@@ -443,7 +443,7 @@ export const fetchWork = async (id: string): Promise<Work> => {
desc: '',
techStack: [],
gallery: [],
links: { live: '#' },
links: {},
next: ''
}
}
@@ -1657,6 +1657,42 @@ export interface AttachmentCategory {
}
// 附件管理API
export const getAdminAttachments = async (params?: {
page?: number
pageSize?: number
categoryId?: number
fileType?: string
keyword?: string
}): Promise<{ list: Attachment[], total: number, page: number, size: number }> => {
try {
const queryParams = new URLSearchParams()
if (params?.page) queryParams.append('page', params.page.toString())
if (params?.pageSize) queryParams.append('pageSize', params.pageSize.toString())
if (params?.categoryId) queryParams.append('categoryId', params.categoryId.toString())
if (params?.fileType) queryParams.append('fileType', params.fileType)
if (params?.keyword) queryParams.append('keyword', params.keyword)
const url = `${API_BASE}/admin/attachments${queryParams.toString() ? '?' + queryParams.toString() : ''}`
const response = await fetch(url, {
headers: getAuthHeaders()
})
if (!response.ok) {
const errorData = await response.json()
throw new Error(errorData.message || '获取附件列表失败')
}
const data = await response.json()
return {
list: data.result?.list || [],
total: data.result?.total || 0,
page: data.result?.page || 1,
size: data.result?.size || 20
}
} catch (error) {
console.error('Get admin attachments error:', error)
throw error
}
}
export const updateAttachment = async (id: number, data: { categoryId?: number | null }): Promise<Attachment> => {
try {
const response = await fetch(`${API_BASE}/admin/attachments/${id}`, {