workOrder.ts 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. // 工单管理API端点
  2. import type { AxiosInstance } from 'axios';
  3. import type {
  4. WorkOrder,
  5. CreateWorkOrderRequest,
  6. UpdateWorkOrderRequest,
  7. WorkOrderQueryParams,
  8. ApiResponse,
  9. PaginatedResponse
  10. } from '@smartcut/types';
  11. export class WorkOrderApi {
  12. constructor(private client: AxiosInstance) {}
  13. /**
  14. * 获取工单列表
  15. */
  16. async getWorkOrders(params?: WorkOrderQueryParams): Promise<PaginatedResponse<WorkOrder>> {
  17. const response = await this.client.get<ApiResponse<PaginatedResponse<WorkOrder>>>('/work-orders', { params });
  18. return response.data.data;
  19. }
  20. /**
  21. * 创建工单
  22. */
  23. async createWorkOrder(data: CreateWorkOrderRequest): Promise<WorkOrder> {
  24. const response = await this.client.post<ApiResponse<WorkOrder>>('/work-orders', data);
  25. return response.data.data;
  26. }
  27. /**
  28. * 获取工单详情
  29. */
  30. async getWorkOrder(id: number): Promise<WorkOrder> {
  31. const response = await this.client.get<ApiResponse<WorkOrder>>(`/work-orders/${id}`);
  32. return response.data.data;
  33. }
  34. /**
  35. * 更新工单(PATCH语义)
  36. */
  37. async updateWorkOrder(id: number, data: UpdateWorkOrderRequest): Promise<WorkOrder> {
  38. const response = await this.client.put<ApiResponse<WorkOrder>>(`/work-orders/${id}`, data);
  39. return response.data.data;
  40. }
  41. /**
  42. * 删除工单
  43. */
  44. async deleteWorkOrder(id: number): Promise<void> {
  45. await this.client.delete<ApiResponse>(`/work-orders/${id}`);
  46. }
  47. /**
  48. * 生成工单二维码
  49. */
  50. async getWorkOrderQRCode(id: number): Promise<Blob> {
  51. const response = await this.client.get(`/work-orders/${id}/qrcode`, {
  52. responseType: 'blob'
  53. });
  54. return response.data;
  55. }
  56. }