home.ts 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import axios from 'axios';
  2. import type {
  3. KnowInfo
  4. } from '../../share/types.ts';
  5. const API_BASE_URL = '/api';
  6. // 首页数据相关类型定义
  7. interface HomeBannersResponse {
  8. message: string;
  9. data: KnowInfo[];
  10. }
  11. interface HomeNewsResponse {
  12. message: string;
  13. data: KnowInfo[];
  14. pagination: {
  15. total: number;
  16. current: number;
  17. pageSize: number;
  18. totalPages: number;
  19. };
  20. }
  21. interface HomeNoticesResponse {
  22. message: string;
  23. data: {
  24. id: number;
  25. title: string;
  26. content: string;
  27. created_at: string;
  28. }[];
  29. pagination: {
  30. total: number;
  31. current: number;
  32. pageSize: number;
  33. totalPages: number;
  34. };
  35. }
  36. // 首页API
  37. export const HomeAPI = {
  38. // 获取轮播图
  39. getBanners: async (): Promise<HomeBannersResponse> => {
  40. try {
  41. const response = await axios.get(`${API_BASE_URL}/home/banners`);
  42. return response.data;
  43. } catch (error) {
  44. throw error;
  45. }
  46. },
  47. // 获取新闻列表
  48. getNews: async (params?: {
  49. page?: number,
  50. pageSize?: number,
  51. category?: string
  52. }): Promise<HomeNewsResponse> => {
  53. try {
  54. const response = await axios.get(`${API_BASE_URL}/home/news`, { params });
  55. return response.data;
  56. } catch (error) {
  57. throw error;
  58. }
  59. },
  60. // 获取通知列表
  61. getNotices: async (params?: {
  62. page?: number,
  63. pageSize?: number
  64. }): Promise<HomeNoticesResponse> => {
  65. try {
  66. const response = await axios.get(`${API_BASE_URL}/home/notices`, { params });
  67. return response.data;
  68. } catch (error) {
  69. throw error;
  70. }
  71. }
  72. };