Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
148 changes: 78 additions & 70 deletions web/src/api/fileService.js
Original file line number Diff line number Diff line change
@@ -1,73 +1,81 @@
import service from '@/utils/service'

export default {
uploadFiles(formData, params) {
return service.post('/v1/files/', formData, {
headers: {
'Content-Type': 'multipart/form-data',
},
params,
})
},
// 获取预签名上传URL(用于S3直传)
getPresignedUploadUrl(filename, contentType, params) {
return service.post('/v1/files/presigned-upload-url', null, {
params: {
filename,
content_type: contentType,
...params,
},
})
},
// 确认直传完成,创建文件记录
confirmDirectUpload(data) {
return service.post('/v1/files/confirm-direct-upload', null, {
params: data,
})
},
// 直接上传到S3(使用预签名URL)
async uploadToS3(presignedData, file) {
const formData = new FormData()

// 添加预签名字段
Object.keys(presignedData.fields).forEach((key) => {
formData.append(key, presignedData.fields[key])
})

// 添加文件(必须是最后一个)
formData.append('file', file)

// 直接上传到S3
const response = await fetch(presignedData.presigned_url, {
method: 'POST',
body: formData,
})

if (!response.ok) {
throw new Error(`S3上传失败: ${response.statusText}`)
}

return response
},
getFiles(params) {
return service.get('/v1/files/', { params })
},
getFile(id) {
return service.get(`/v1/files/${id}`)
},
deleteFile(id) {
return service.delete(`/v1/files/${id}`)
},
moveFile(id, data) {
return service.put(`/v1/files/${id}/move`, data)
},
renameFile(id, data) {
return service.put(`/v1/files/${id}/rename`, data)
},
batchMoveFiles(data) {
return service.post('/v1/files/batch/move', data)
},
batchDeleteFiles(data) {
return service.post('/v1/files/batch/delete', data)
},
export function uploadFiles(formData, params) {
return service.post('/v1/files/', formData, {
headers: {
'Content-Type': 'multipart/form-data',
},
params,
})
}

// 获取预签名上传URL(用于S3直传)
export function getPresignedUploadUrl(filename, contentType, params) {
return service.post('/v1/files/presigned-upload-url', null, {
params: {
filename,
content_type: contentType,
...params,
},
})
}

// 确认直传完成,创建文件记录
export function confirmDirectUpload(data) {
return service.post('/v1/files/confirm-direct-upload', null, {
params: data,
})
}

// 直接上传到S3(使用预签名URL)
export async function uploadToS3(presignedData, file) {
const formData = new FormData()

// 添加预签名字段
Object.keys(presignedData.fields).forEach((key) => {
formData.append(key, presignedData.fields[key])
})

// 添加文件(必须是最后一个)
formData.append('file', file)

// 直接上传到S3
const response = await fetch(presignedData.presigned_url, {
method: 'POST',
body: formData,
})

if (!response.ok) {
throw new Error(`S3上传失败: ${response.statusText}`)
}

return response
}

export function getFiles(params) {
return service.get('/v1/files/', { params })
}

export function getFile(id) {
return service.get(`/v1/files/${id}`)
}

export function deleteFile(id) {
return service.delete(`/v1/files/${id}`)
}

export function moveFile(id, data) {
return service.put(`/v1/files/${id}/move`, data)
}

export function renameFile(id, data) {
return service.put(`/v1/files/${id}/rename`, data)
}

export function batchMoveFiles(data) {
return service.post('/v1/files/batch/move', data)
}

export function batchDeleteFiles(data) {
return service.post('/v1/files/batch/delete', data)
}
69 changes: 38 additions & 31 deletions web/src/api/folderService.js
Original file line number Diff line number Diff line change
@@ -1,34 +1,41 @@
import service from '@/utils/service'

export default {
createFolder(data) {
return service.post('/v1/folders/', data)
},
getFolders(params) {
return service.get('/v1/folders/', { params })
},
getFolder(id) {
return service.get(`/v1/folders/${id}`)
},
updateFolder(id, data) {
return service.put(`/v1/folders/${id}`, data)
},
deleteFolder(id) {
return service.delete(`/v1/folders/${id}`)
},
batchMoveFolders(data) {
return service.post('/v1/folders/batch/move', data)
},
batchDeleteFolders(data) {
return service.post('/v1/folders/batch/delete', data)
},
getFolderNotes(id) {
return service.get(`/v1/folders/${id}/notes`)
},
attachNotes(id, noteIds) {
return service.post(`/v1/folders/${id}/attach-notes`, { note_ids: noteIds })
},
detachNotes(id, noteIds) {
return service.post(`/v1/folders/${id}/detach-notes`, { note_ids: noteIds })
},
export function createFolder(data) {
return service.post('/v1/folders/', data)
}

export function getFolders(params) {
return service.get('/v1/folders/', { params })
}

export function getFolder(id) {
return service.get(`/v1/folders/${id}`)
}

export function updateFolder(id, data) {
return service.put(`/v1/folders/${id}`, data)
}

export function deleteFolder(id) {
return service.delete(`/v1/folders/${id}`)
}

export function batchMoveFolders(data) {
return service.post('/v1/folders/batch/move', data)
}

export function batchDeleteFolders(data) {
return service.post('/v1/folders/batch/delete', data)
}

export function getFolderNotes(id) {
return service.get(`/v1/folders/${id}/notes`)
}

export function attachNotes(id, noteIds) {
return service.post(`/v1/folders/${id}/attach-notes`, { note_ids: noteIds })
}

export function detachNotes(id, noteIds) {
return service.post(`/v1/folders/${id}/detach-notes`, { note_ids: noteIds })
}
76 changes: 42 additions & 34 deletions web/src/api/noteService.js
Original file line number Diff line number Diff line change
@@ -1,37 +1,45 @@
import service from '@/utils/service'

export default {
createNote(noteData) {
return service.post('/v1/notes/', noteData)
},
getNotes(params) {
return service.get('/v1/notes/', { params })
},
getNote(id) {
return service.get(`/v1/notes/${id}`)
},
getNotesByFileId(fileId) {
return service.get('/v1/notes/', { params: { file_id: fileId } })
},
getNotesByFolderId(folderId) {
return service.get('/v1/notes/', { params: { folder_id: folderId } })
},
updateNote(id, noteData) {
return service.put(`/v1/notes/${id}`, noteData)
},
deleteNote(id) {
return service.delete(`/v1/notes/${id}`)
},
attachFiles(id, fileIds) {
return service.post(`/v1/notes/${id}/attach`, { file_ids: fileIds })
},
detachFiles(id, fileIds) {
return service.post(`/v1/notes/${id}/detach`, { file_ids: fileIds })
},
attachFolders(id, folderIds) {
return service.post(`/v1/notes/${id}/attach-folders`, { folder_ids: folderIds })
},
detachFolders(id, folderIds) {
return service.post(`/v1/notes/${id}/detach-folders`, { folder_ids: folderIds })
},
export function createNote(noteData) {
return service.post('/v1/notes/', noteData)
}

export function getNotes(params) {
return service.get('/v1/notes/', { params })
}

export function getNote(id) {
return service.get(`/v1/notes/${id}`)
}

export function getNotesByFileId(fileId) {
return service.get('/v1/notes/', { params: { file_id: fileId } })
}

export function getNotesByFolderId(folderId) {
return service.get('/v1/notes/', { params: { folder_id: folderId } })
}

export function updateNote(id, noteData) {
return service.put(`/v1/notes/${id}`, noteData)
}

export function deleteNote(id) {
return service.delete(`/v1/notes/${id}`)
}

export function attachFiles(id, fileIds) {
return service.post(`/v1/notes/${id}/attach`, { file_ids: fileIds })
}

export function detachFiles(id, fileIds) {
return service.post(`/v1/notes/${id}/detach`, { file_ids: fileIds })
}

export function attachFolders(id, folderIds) {
return service.post(`/v1/notes/${id}/attach-folders`, { folder_ids: folderIds })
}

export function detachFolders(id, folderIds) {
return service.post(`/v1/notes/${id}/detach-folders`, { folder_ids: folderIds })
}
20 changes: 10 additions & 10 deletions web/src/api/recycleService.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import service from '@/utils/service'

export default {
getItems() {
return service.get('/v1/recycle/items')
},
restoreItems(data) {
return service.post('/v1/recycle/restore', data)
},
permanentDeleteItems(data) {
return service.delete('/v1/recycle/permanent', { data })
},
export function getItems() {
return service.get('/v1/recycle/items')
}

export function restoreItems(data) {
return service.post('/v1/recycle/restore', data)
}

export function permanentDeleteItems(data) {
return service.delete('/v1/recycle/permanent', { data })
}
6 changes: 2 additions & 4 deletions web/src/api/statsService.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
import service from '@/utils/service'

export default {
getStats() {
return service.get('/v1/stats/')
},
export function getStats() {
return service.get('/v1/stats/')
}
Loading
Loading