image.ts 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. import request from './request'
  2. // --- 类型定义 ---
  3. export interface ImageCategory {
  4. id: string
  5. type_name: string
  6. parent_id: string
  7. remark?: string
  8. children?: ImageCategory[]
  9. created_time: string
  10. updated_time: string
  11. }
  12. export interface ImageItem {
  13. id: string
  14. image_name: string
  15. image_url: string
  16. image_type: string
  17. description?: string
  18. category_name?: string
  19. creator_name?: string
  20. created_by: string
  21. updated_by?: string
  22. created_time: string
  23. updated_time: string
  24. }
  25. export interface ImageQueryParams {
  26. category_id?: string
  27. page?: number
  28. page_size?: number
  29. }
  30. export interface ApiResponse<T = any> {
  31. code: string | number
  32. message: string
  33. data: T
  34. timestamp: string
  35. }
  36. export interface PageResult<T> {
  37. list: T[]
  38. total: number
  39. page: number
  40. page_size: number
  41. }
  42. // --- API 方法 ---
  43. const API_PREFIX = '/api/v1/images'
  44. export const imageApi = {
  45. // --- 分类管理 ---
  46. // 获取全部分类树
  47. getCategories(): Promise<ApiResponse<ImageCategory[]>> {
  48. return request.get(`${API_PREFIX}/categories`)
  49. },
  50. // 新增分类
  51. addCategory(data: Partial<ImageCategory>): Promise<ApiResponse<{ id: string }>> {
  52. return request.post(`${API_PREFIX}/categories`, data)
  53. },
  54. // 更新分类
  55. updateCategory(id: string, data: Partial<ImageCategory>): Promise<ApiResponse<null>> {
  56. return request.put(`${API_PREFIX}/categories/${id}`, data)
  57. },
  58. // 删除分类
  59. deleteCategory(id: string): Promise<ApiResponse<null>> {
  60. return request.delete(`${API_PREFIX}/categories/${id}`)
  61. },
  62. // --- 图片管理 ---
  63. // 获取图片列表
  64. getList(params: ImageQueryParams): Promise<ApiResponse<PageResult<ImageItem>>> {
  65. return request.get(API_PREFIX, { params })
  66. },
  67. // 保存图片信息
  68. add(data: Partial<ImageItem>): Promise<ApiResponse<null>> {
  69. return request.post(API_PREFIX, data)
  70. },
  71. // 删除图片
  72. delete(id: string): Promise<ApiResponse<null>> {
  73. return request.delete(`${API_PREFIX}/${id}`)
  74. },
  75. // 获取上传链接
  76. getUploadUrl(filename: string, contentType: string, prefix?: string): Promise<ApiResponse<{ upload_url: string, file_url: string, object_name: string }>> {
  77. return request.post(`${API_PREFIX}/upload-url`, { filename, content_type: contentType, prefix })
  78. },
  79. // 批量加入任务中心
  80. batchAddToTask(ids: string[], projectName: string, tags?: string[]): Promise<ApiResponse<null>> {
  81. return request.post(`${API_PREFIX}/batch-add-to-task`, {
  82. ids: ids,
  83. project_name: projectName,
  84. tags: tags
  85. })
  86. },
  87. // 按分类批量加入任务中心
  88. categoryBatchAddToTask(categoryId: string, projectName: string, tags?: string[]): Promise<ApiResponse<{ sub_categories?: string[], image_count: number }>> {
  89. return request.post(`${API_PREFIX}/category-batch-add-to-task`, {
  90. category_id: categoryId,
  91. project_name: projectName,
  92. tags: tags
  93. })
  94. },
  95. // 按分类批量推送前的预检查
  96. categoryBatchCheck(categoryId: string): Promise<ApiResponse<{ sub_categories?: string[], image_count: number }>> {
  97. return request.get(`${API_PREFIX}/category-batch-check`, {
  98. params: { category_id: categoryId }
  99. })
  100. }
  101. }