Files
xh-medical-sign-web/clinical-web/src/api/management/document-fonts.ts
T

64 lines
2.3 KiB
TypeScript

import { request } from '@/utils/request'
import { unwrapApiResponse, unwrapNullableApiResponse, isSuccessCode } from '@/utils/api-response'
import type { ApiResponse } from '@/types/common'
import type { DocumentFont } from '../../../../packages/document-fonts'
export type { DocumentFont } from '../../../../packages/document-fonts'
export interface FontRecord extends DocumentFont {
enabled: boolean
createdAt: string
}
export interface FontNodeCheck {
fontId: string
node: string
available: boolean
message: string
checkedAt: string
}
export interface FontSettings {
nodes: FontNodeCheck[]
defaultFontId: string | null
fonts: FontRecord[]
legacyFileReadable: boolean
}
export interface FontFaceInfo {
index: number
name: string
style: string
}
export interface FontCheck {
available: boolean
message: string
node: string
checkedAt: string
}
const base = '/v1/document-fonts'
const longRequest = { timeout: 90000 }
export const getDocumentFontSettings = () =>
request.get<ApiResponse<FontSettings>>(base).then(unwrapApiResponse)
export const getDefaultDocumentFont = () =>
request.get<ApiResponse<DocumentFont | null>>(`${base}/current`).then(unwrapNullableApiResponse)
export const inspectDocumentFont = (file: File) => {
const form = new FormData()
form.append('file', file)
return request
.post<ApiResponse<FontFaceInfo[]>>(`${base}/inspect`, form, longRequest)
.then(unwrapApiResponse)
}
export const uploadDocumentFont = (form: FormData) =>
request.post<ApiResponse<FontRecord>>(base, form, longRequest).then(unwrapApiResponse)
export const checkDocumentFont = (id: string) =>
request
.post<ApiResponse<FontCheck>>(`${base}/${id}/check`, undefined, longRequest)
.then(unwrapApiResponse)
export const previewDocumentFont = (id: string) =>
request.get<Blob>(`${base}/${id}/preview`, { ...longRequest, responseType: 'blob' })
function requireSuccess(response: ApiResponse<unknown>) {
if (!isSuccessCode(response.code)) throw new Error(response.message || '设置失败')
}
export const activateDocumentFont = (id: string) =>
request
.put<ApiResponse<unknown>>(`${base}/${id}/default`, undefined, longRequest)
.then(requireSuccess)
export const setDocumentFontEnabled = (id: string, enabled: boolean) =>
request.put<ApiResponse<unknown>>(`${base}/${id}/status`, { enabled }).then(requireSuccess)