117 lines
2.4 KiB
TypeScript
117 lines
2.4 KiB
TypeScript
import { request } from "@/utils/request";
|
|
|
|
/**
|
|
* 轮播图链接类型
|
|
*/
|
|
export type BannerLinkType = 'url' | 'article';
|
|
|
|
/**
|
|
* 轮播图数据
|
|
*/
|
|
export interface Banner {
|
|
id: string;
|
|
title: string;
|
|
image: string;
|
|
linkType: BannerLinkType;
|
|
linkUrl?: string;
|
|
articleContent?: string;
|
|
sort: number;
|
|
status: 'enabled' | 'disabled';
|
|
createTime: string;
|
|
updateTime: string;
|
|
}
|
|
|
|
/**
|
|
* 轮播图列表查询参数
|
|
*/
|
|
export interface BannerQueryParams {
|
|
page?: number;
|
|
pageSize?: number;
|
|
status?: 'enabled' | 'disabled';
|
|
keyword?: string;
|
|
}
|
|
|
|
/**
|
|
* 轮播图列表响应
|
|
*/
|
|
export interface BannerListResponse {
|
|
list: Banner[];
|
|
total: number;
|
|
page: number;
|
|
pageSize: number;
|
|
}
|
|
|
|
/**
|
|
* 创建轮播图参数
|
|
*/
|
|
export interface CreateBannerParams {
|
|
title: string;
|
|
image: string;
|
|
linkType: BannerLinkType;
|
|
linkUrl?: string;
|
|
articleContent?: string;
|
|
sort: number;
|
|
status: 'enabled' | 'disabled';
|
|
}
|
|
|
|
/**
|
|
* 获取轮播图列表
|
|
*/
|
|
export const getBannerList = (params?: BannerQueryParams) => {
|
|
return request.Get<BannerListResponse>('/admin/banners', {
|
|
params
|
|
});
|
|
};
|
|
|
|
/**
|
|
* 获取轮播图详情
|
|
*/
|
|
export const getBannerDetail = (id: string) => {
|
|
return request.Get<Banner>(`/admin/banners/${id}`);
|
|
};
|
|
|
|
/**
|
|
* 创建轮播图
|
|
*/
|
|
export const createBanner = (params: CreateBannerParams) => {
|
|
return request.Post<{ message: string; id: string }>('/admin/banners', params);
|
|
};
|
|
|
|
/**
|
|
* 更新轮播图
|
|
*/
|
|
export const updateBanner = (id: string, params: CreateBannerParams) => {
|
|
return request.Put<{ message: string }>(`/admin/banners/${id}`, params);
|
|
};
|
|
|
|
/**
|
|
* 删除轮播图
|
|
*/
|
|
export const deleteBanner = (id: string) => {
|
|
return request.Delete<{ message: string }>(`/admin/banners/${id}`);
|
|
};
|
|
|
|
/**
|
|
* 更新轮播图状态
|
|
*/
|
|
export const updateBannerStatus = (id: string, status: 'enabled' | 'disabled') => {
|
|
return request.Put<{ message: string }>(`/admin/banners/${id}/status`, { status });
|
|
};
|
|
|
|
/**
|
|
* 更新轮播图排序
|
|
*/
|
|
export const updateBannerSort = (id: string, sort: number) => {
|
|
return request.Put<{ message: string }>(`/admin/banners/${id}/sort`, { sort });
|
|
};
|
|
|
|
/**
|
|
* 上传轮播图图片
|
|
*/
|
|
export const uploadBannerImage = (file: File) => {
|
|
const formData = new FormData();
|
|
formData.append('image', file);
|
|
|
|
return request.Post<{ url: string }>('/admin/upload/banner', formData);
|
|
};
|