feat(web): 新增媒体库和轮播图 API client
媒体库(media.ts):文件列表/上传/更新/删除/移动/批量删除/裁剪 + 文件夹树形管理 轮播图(banners.ts):列表/创建/更新/删除/排序,字段与后端 DTO 完全对齐
This commit is contained in:
107
apps/web/src/api/health/banners.ts
Normal file
107
apps/web/src/api/health/banners.ts
Normal file
@@ -0,0 +1,107 @@
|
||||
import client from '../client';
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// 轮播图类型
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
export interface BannerItem {
|
||||
id: string;
|
||||
tenant_id: string;
|
||||
media_item_id: string;
|
||||
title?: string;
|
||||
subtitle?: string;
|
||||
link_type?: string;
|
||||
link_target?: string;
|
||||
sort_order: number;
|
||||
status: string;
|
||||
start_time?: string;
|
||||
end_time?: string;
|
||||
image_url?: string;
|
||||
thumbnail_url?: string;
|
||||
media_deleted: boolean;
|
||||
created_at: string;
|
||||
updated_at: string;
|
||||
created_by?: string;
|
||||
updated_by?: string;
|
||||
version: number;
|
||||
}
|
||||
|
||||
export interface CreateBannerReq {
|
||||
media_item_id: string;
|
||||
title?: string;
|
||||
subtitle?: string;
|
||||
link_type?: string;
|
||||
link_target?: string;
|
||||
sort_order?: number;
|
||||
status?: string;
|
||||
start_time?: string;
|
||||
end_time?: string;
|
||||
}
|
||||
|
||||
export interface UpdateBannerReq {
|
||||
media_item_id?: string;
|
||||
title?: string;
|
||||
subtitle?: string;
|
||||
link_type?: string;
|
||||
link_target?: string;
|
||||
sort_order?: number;
|
||||
status?: string;
|
||||
start_time?: string;
|
||||
end_time?: string;
|
||||
version: number;
|
||||
}
|
||||
|
||||
export interface SortBannerReq {
|
||||
items: Array<{ id: string; sort_order: number }>;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// 轮播图 API
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
export const bannerApi = {
|
||||
/** 获取轮播图列表(可按状态筛选) */
|
||||
list: async (status?: string) => {
|
||||
const { data } = await client.get<{
|
||||
success: boolean;
|
||||
data: BannerItem[];
|
||||
}>('/health/banners', { params: status ? { status } : undefined });
|
||||
return data.data;
|
||||
},
|
||||
|
||||
/** 创建轮播图 */
|
||||
create: async (req: CreateBannerReq) => {
|
||||
const { data } = await client.post<{
|
||||
success: boolean;
|
||||
data: BannerItem;
|
||||
}>('/health/banners', req);
|
||||
return data.data;
|
||||
},
|
||||
|
||||
/** 更新轮播图 */
|
||||
update: async (id: string, req: UpdateBannerReq) => {
|
||||
const { data } = await client.put<{
|
||||
success: boolean;
|
||||
data: BannerItem;
|
||||
}>(`/health/banners/${id}`, req);
|
||||
return data.data;
|
||||
},
|
||||
|
||||
/** 删除轮播图 */
|
||||
delete: async (id: string, version: number) => {
|
||||
const { data } = await client.delete<{
|
||||
success: boolean;
|
||||
data: null;
|
||||
}>(`/health/banners/${id}`, { data: { version } });
|
||||
return data.data;
|
||||
},
|
||||
|
||||
/** 轮播图排序 */
|
||||
sort: async (req: SortBannerReq) => {
|
||||
const { data } = await client.put<{
|
||||
success: boolean;
|
||||
data: null;
|
||||
}>('/health/banners/sort', req);
|
||||
return data.data;
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user