Files
Document_Translator/frontend/src/services/jobs.js
2025-09-04 10:21:16 +08:00

113 lines
2.4 KiB
JavaScript

import { request, uploadRequest } from '@/utils/request'
/**
* 任務相關 API
*/
export const jobsAPI = {
/**
* 上傳檔案
* @param {FormData} formData - 包含檔案和設定的表單資料
*/
uploadFile(formData) {
return uploadRequest.post('/files/upload', formData, {
onUploadProgress: (progressEvent) => {
// 上傳進度回調在外部處理
if (formData.onUploadProgress) {
formData.onUploadProgress(progressEvent)
}
}
})
},
/**
* 取得使用者任務列表
* @param {Object} params - 查詢參數
* @param {number} params.page - 頁數
* @param {number} params.per_page - 每頁數量
* @param {string} params.status - 任務狀態篩選
*/
getJobs(params = {}) {
const defaultParams = {
page: 1,
per_page: 20,
status: 'all'
}
return request.get('/jobs', { params: { ...defaultParams, ...params } })
},
/**
* 取得任務詳細資訊
* @param {string} jobUuid - 任務 UUID
*/
getJobDetail(jobUuid) {
return request.get(`/jobs/${jobUuid}`)
},
/**
* 重試失敗任務
* @param {string} jobUuid - 任務 UUID
*/
retryJob(jobUuid) {
return request.post(`/jobs/${jobUuid}/retry`)
},
/**
* 取消任務
* @param {string} jobUuid - 任務 UUID
*/
cancelJob(jobUuid) {
return request.post(`/jobs/${jobUuid}/cancel`)
},
/**
* 刪除任務
* @param {string} jobUuid - 任務 UUID
*/
deleteJob(jobUuid) {
return request.delete(`/jobs/${jobUuid}`)
}
}
/**
* 檔案相關 API
*/
export const filesAPI = {
/**
* 下載翻譯檔案
* @param {string} jobUuid - 任務 UUID
* @param {string} languageCode - 語言代碼
*/
downloadFile(jobUuid, languageCode) {
return request.get(`/files/${jobUuid}/download/${languageCode}`, {
responseType: 'blob'
})
},
/**
* 批量下載檔案
* @param {string} jobUuid - 任務 UUID
*/
downloadAllFiles(jobUuid) {
return request.get(`/files/${jobUuid}/download/batch`, {
responseType: 'blob'
})
},
/**
* 下載合併檔案
* @param {string} jobUuid - 任務 UUID
*/
downloadCombineFile(jobUuid) {
return request.get(`/files/${jobUuid}/download/combine`, {
responseType: 'blob'
})
},
/**
* 取得檔案資訊
* @param {string} jobUuid - 任務 UUID
*/
getFileInfo(jobUuid) {
return request.get(`/files/${jobUuid}/info`)
}
}