product.ts 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. /**
  2. * 商品管理相关API
  3. */
  4. import { USE_MOCK } from '@/utils/config';
  5. import { mockProductList, mockProductCategories } from '@/mock';
  6. export interface ProductQueryParams {
  7. page?: number;
  8. pageSize?: number;
  9. name?: string;
  10. category?: string;
  11. status?: number;
  12. }
  13. export interface ProductListResponse {
  14. list: any[];
  15. total: number;
  16. page: number;
  17. pageSize: number;
  18. }
  19. /**
  20. * 获取商品列表
  21. */
  22. export async function getProductList(params: ProductQueryParams = {}): Promise<ProductListResponse> {
  23. if (USE_MOCK) {
  24. const { page = 1, pageSize = 10, status, name, category } = params;
  25. let list = [...mockProductList];
  26. // 状态筛选
  27. if (status !== undefined && status !== -1) {
  28. list = list.filter(item => item.status === status);
  29. }
  30. // 分类筛选
  31. if (category) {
  32. list = list.filter(item => item.category === category);
  33. }
  34. // 名称搜索
  35. if (name) {
  36. list = list.filter(item => item.name.includes(name));
  37. }
  38. const total = list.length;
  39. const startIndex = (page - 1) * pageSize;
  40. const endIndex = startIndex + pageSize;
  41. return Promise.resolve({
  42. list: list.slice(startIndex, endIndex),
  43. total,
  44. page,
  45. pageSize
  46. });
  47. }
  48. const { get } = await import('@/utils/request');
  49. return get('/products', params);
  50. }
  51. /**
  52. * 获取商品分类
  53. */
  54. export async function getProductCategories(): Promise<any[]> {
  55. if (USE_MOCK) {
  56. return Promise.resolve(mockProductCategories);
  57. }
  58. const { get } = await import('@/utils/request');
  59. return get('/products/categories');
  60. }
  61. /**
  62. * 获取商品详情
  63. */
  64. export async function getProductDetail(productId: number): Promise<any> {
  65. if (USE_MOCK) {
  66. const product = mockProductList.find(item => item.id === productId);
  67. return Promise.resolve(product || null);
  68. }
  69. const { get } = await import('@/utils/request');
  70. return get(`/products/${productId}`);
  71. }