60 lines
1.8 KiB
TypeScript
60 lines
1.8 KiB
TypeScript
/**
|
|
* 模板相关 API 函数
|
|
* 对接后端模板管理接口
|
|
*/
|
|
import apiClient from "../client"
|
|
import type {
|
|
CopyTemplateResponse,
|
|
GenerateFromTemplateRequest,
|
|
GenerateFromTemplateResponse,
|
|
TemplateItem,
|
|
TemplateListParams,
|
|
TemplateListResponse,
|
|
} from "./types"
|
|
|
|
/** 获取模板列表(支持分页和筛选) */
|
|
export const getTemplates = async (params?: TemplateListParams): Promise<TemplateListResponse> => {
|
|
const { data } = await apiClient.get<TemplateListResponse>("/templates", {
|
|
params,
|
|
})
|
|
return data
|
|
}
|
|
|
|
/** 获取模板列表(兼容旧接口,返回数组) */
|
|
export const getTemplatesList = async (): Promise<TemplateItem[]> => {
|
|
const response = await apiClient.get("/templates")
|
|
return response.data.items || response.data || []
|
|
}
|
|
|
|
/** 获取单个模板详情 */
|
|
export const getTemplate = async (templateId: string): Promise<TemplateItem> => {
|
|
const response = await apiClient.get(`/templates/${templateId}`)
|
|
return response.data
|
|
}
|
|
|
|
/** 收藏 / 取消收藏模板 */
|
|
export const toggleFavoriteTemplate = async (
|
|
templateId: string,
|
|
): Promise<{ is_favorite: boolean }> => {
|
|
const response = await apiClient.post(`/templates/${templateId}/toggle-favorite`)
|
|
return response.data
|
|
}
|
|
|
|
/** 复制模板(创建副本到我的模板) */
|
|
export const copyTemplate = async (templateId: string): Promise<CopyTemplateResponse> => {
|
|
const response = await apiClient.post<CopyTemplateResponse>(`/templates/${templateId}/copy`)
|
|
return response.data
|
|
}
|
|
|
|
/** 从模板生成 */
|
|
export const generateFromTemplate = async (
|
|
templateId: string,
|
|
data?: GenerateFromTemplateRequest,
|
|
): Promise<GenerateFromTemplateResponse> => {
|
|
const response = await apiClient.post<GenerateFromTemplateResponse>(
|
|
`/templates/${templateId}/generate`,
|
|
data,
|
|
)
|
|
return response.data
|
|
}
|