home.ts 1.5 KB

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