fix: 新增接口入参

This commit is contained in:
王天骄
2026-06-17 15:11:53 +08:00
parent b951f17658
commit 4a1fb3bc56
8 changed files with 1033 additions and 18 deletions
+53
View File
@@ -32,6 +32,7 @@ export interface InstitutionPayload {
level?: string
province?: string
city?: string
banner_url?: string
}
export interface CreateInstitutionPayload extends InstitutionPayload {
@@ -53,6 +54,18 @@ export interface DisableInstitutionParams {
id: number
}
export interface UploadInstitutionBannerParams {
token: string
id: number
file: File
}
export interface UploadInstitutionBannerResult {
message: string
bannerUrl: string
raw: unknown
}
export interface ImportInstitutionsParams {
token: string
file: File
@@ -102,6 +115,25 @@ function getString(record: Record<string, unknown>, key: string): string {
return ''
}
function getBannerUrlFromResponse(data: unknown): string {
if (!data || typeof data !== 'object') {
return ''
}
const record = data as Record<string, unknown>
const bannerUrl = record.banner_url || record.bannerUrl
if (typeof bannerUrl === 'string') {
return bannerUrl
}
const nested = record.data || record.result || record.payload
if (nested && typeof nested === 'object') {
return getBannerUrlFromResponse(nested)
}
return ''
}
function normalizeInstitution(item: unknown): InstitutionListItem {
const record = item && typeof item === 'object' ? (item as Record<string, unknown>) : {}
const id = record.id
@@ -291,6 +323,27 @@ export async function disableInstitution(params: DisableInstitutionParams): Prom
return parseMutationResponse(response, '停用机构失败')
}
export async function uploadInstitutionBanner(params: UploadInstitutionBannerParams): Promise<UploadInstitutionBannerResult> {
const formData = new FormData()
formData.append('file', params.file)
const response = await fetch(`/server/api/cms/institutions/${params.id}/banner/`, {
method: 'POST',
headers: {
Accept: 'application/json',
Authorization: createAuthorization(params.token)
},
body: formData
})
const data = await parseMutationResponse(response, '上传机构背景图失败')
return {
message: getMessageFromResponse(data),
bannerUrl: getBannerUrlFromResponse(data),
raw: data
}
}
export async function importInstitutions(params: ImportInstitutionsParams): Promise<unknown> {
const formData = new FormData()
formData.append('file', params.file)