import http from '@/utils/http' // 缺陷检测请求参数 export interface DefectDetectionRequest { confThreshold: number defectTypeList: string[] imageId: string modelId: string } // 手动添加缺陷请求参数 export interface ManualDefectAddRequest { attachId: string axial: number chordwise: number defectCode: string defectLevel: string defectName: string defectPosition: string defectType: string description: string detectionDate: string labelInfo: string markInfo: { bbox: number[] clsId: number confidence: number label: string } repairIdea: string repairStatus: string source: string } // 缺陷检测结果 export interface DefectDetectionResult { attachId: string attachPath: string axial: number chordwise: number defectCode: string defectId: string defectLevel: string defectLevelLabel: string defectName: string defectPosition: string defectType: string defectTypeLabel: string description: string detectionDate: string imageId: string labelInfo: string markInfo: { bbox: number[] clsId: number confidence: number label: string } repairIdea: string repairStatus: string repairStatusLabel: string source: string sourceLabel: string } // API响应结构 export interface DefectDetectionResponse { code: number data: DefectDetectionResult[] msg: string status: number success: boolean } // 手动添加缺陷响应结构 export interface ManualDefectAddResponse { code: number data: DefectDetectionResult msg: string status: number success: boolean } /** @desc 单图自动标注缺陷 */ export const detectDefects = (params: DefectDetectionRequest) => { return http.post('/defect/detect', params) } /** @desc 手动添加缺陷记录 */ export const addManualDefect = (params: ManualDefectAddRequest, imageId: string) => { return http.post(`/defect/${imageId}`, params) } // 缺陷相关的其他接口 // 缺陷列表查询参数接口 export interface DefectListParams { defectId?: string defectLevel?: string defectType?: string keyword?: string turbineId?: string imageId?: string // 添加imageId参数,用于按图像筛选缺陷 } /** @desc 获取缺陷列表 */ export const getDefectList = (params: DefectListParams) => { return http.get<{ code: number data: DefectDetectionResult[] msg: string status: number success: boolean }>('/defect/list', params) } /** @desc 添加缺陷 */ export const addDefect = (params: Partial) => { return http.post<{ code: number data: DefectDetectionResult msg: string status: number success: boolean }>('/defect/add', params) } /** @desc 更新缺陷 */ export const updateDefect = (defectId: string, params: Partial) => { return http.put<{ code: number data: DefectDetectionResult msg: string status: number success: boolean }>(`/defect/${defectId}`, params) } /** @desc 删除缺陷 */ export const deleteDefect = (defectId: string) => { return http.del<{ code: number msg: string status: number success: boolean }>(`/defect/${defectId}`) } /** @desc 上传标注后的图片作为附件 */ export const uploadAnnotatedImage = (imageBlob: Blob, fileName: string) => { const formData = new FormData() formData.append('file', imageBlob, fileName) return http.post<{ code: number data: AttachInfoData msg: string status: number success: boolean }>('/attach-info/defect_mark_pic', formData, { headers: { 'Content-Type': 'multipart/form-data', }, }) } // 附件信息数据类型 export interface AttachInfoData { attachId: string attachPath: string fileName: string fileSize: number contentType: string uploadTime: string [key: string]: any } // 缺陷信息接口 export interface DefectInfo { id: string defectId?: string defectName?: string defectLevel?: string defectType?: string defectPosition?: string detectionDate?: string description?: string repairStatus?: string repairIdea?: string labelInfo?: string markInfo?: { bbox?: number[] clsId?: number confidence?: number label?: string [key: string]: any } [key: string]: any } // 缺陷等级类型 export interface DefectLevelType { code: string name: string value: string sort: number description?: string } // 缺陷类型 export interface DefectType { code: string name: string value: string sort: number description?: string } // 获取缺陷等级列表 export const getDefectLevels = () => { return http.get<{ code: number data: DefectLevelType[] msg: string status: number success: boolean }>('/common/list/defect-level') } // 获取缺陷类型列表 export const getDefectTypes = () => { return http.get<{ code: number data: DefectType[] msg: string status: number success: boolean }>('/common/list/defect-type') }