diff --git a/web/src/api/fileService.js b/web/src/api/fileService.js index 811d24d..b43ef8f 100644 --- a/web/src/api/fileService.js +++ b/web/src/api/fileService.js @@ -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) } diff --git a/web/src/api/folderService.js b/web/src/api/folderService.js index 545fef7..e131536 100644 --- a/web/src/api/folderService.js +++ b/web/src/api/folderService.js @@ -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 }) } diff --git a/web/src/api/noteService.js b/web/src/api/noteService.js index 54532ba..1d84244 100644 --- a/web/src/api/noteService.js +++ b/web/src/api/noteService.js @@ -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 }) } diff --git a/web/src/api/recycleService.js b/web/src/api/recycleService.js index a4edcdc..a14a096 100644 --- a/web/src/api/recycleService.js +++ b/web/src/api/recycleService.js @@ -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 }) } diff --git a/web/src/api/statsService.js b/web/src/api/statsService.js index 6551bf8..6b8c236 100644 --- a/web/src/api/statsService.js +++ b/web/src/api/statsService.js @@ -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/') } diff --git a/web/src/api/storageBackendService.js b/web/src/api/storageBackendService.js index 3acfb41..ce925aa 100644 --- a/web/src/api/storageBackendService.js +++ b/web/src/api/storageBackendService.js @@ -1,60 +1,59 @@ import service from '@/utils/service' -export default { - // 获取默认存储后端配置(普通用户也可访问) - getDefaultBackend() { - return service.get('/v1/storage-backends/default') - }, - // 获取所有存储后端 - getBackends() { - return service.get('/v1/storage-backends') - }, - - // 获取指定存储后端 - getBackend(id) { - return service.get(`/v1/storage-backends/${id}`) - }, - - // 创建存储后端 - createBackend(data) { - return service.post('/v1/storage-backends', data) - }, - - // 更新存储后端 - updateBackend(id, data) { - return service.put(`/v1/storage-backends/${id}`, data) - }, - - // 删除存储后端 - deleteBackend(id) { - return service.delete(`/v1/storage-backends/${id}`) - }, - - // 设置默认存储后端 - setDefaultBackend(id) { - return service.post(`/v1/storage-backends/${id}/set-default`) - }, - - // 测试存储后端连接 - testBackend(id) { - return service.post(`/v1/storage-backends/${id}/test`) - }, - - // 导出存储配置 - exportConfig() { - return service.get('/v1/storage-backends/export/config') - }, - - // 导入存储配置 - importConfig(formData, replaceExisting = false) { - return service.post( - `/v1/storage-backends/import/config?replace_existing=${replaceExisting}`, - formData, - { - headers: { - 'Content-Type': 'multipart/form-data', - }, +// 获取默认存储后端配置(普通用户也可访问) +export function getDefaultBackend() { + return service.get('/v1/storage-backends/default') +} + +// 获取所有存储后端 +export function getBackends() { + return service.get('/v1/storage-backends') +} + +// 获取指定存储后端 +export function getBackend(id) { + return service.get(`/v1/storage-backends/${id}`) +} + +// 创建存储后端 +export function createBackend(data) { + return service.post('/v1/storage-backends', data) +} + +// 更新存储后端 +export function updateBackend(id, data) { + return service.put(`/v1/storage-backends/${id}`, data) +} + +// 删除存储后端 +export function deleteBackend(id) { + return service.delete(`/v1/storage-backends/${id}`) +} + +// 设置默认存储后端 +export function setDefaultBackend(id) { + return service.post(`/v1/storage-backends/${id}/set-default`) +} + +// 测试存储后端连接 +export function testBackend(id) { + return service.post(`/v1/storage-backends/${id}/test`) +} + +// 导出存储配置 +export function exportConfig() { + return service.get('/v1/storage-backends/export/config') +} + +// 导入存储配置 +export function importConfig(formData, replaceExisting = false) { + return service.post( + `/v1/storage-backends/import/config?replace_existing=${replaceExisting}`, + formData, + { + headers: { + 'Content-Type': 'multipart/form-data', }, - ) - }, + }, + ) } diff --git a/web/src/components/DragUploadZone.vue b/web/src/components/DragUploadZone.vue index 4e77a1e..5a50650 100644 --- a/web/src/components/DragUploadZone.vue +++ b/web/src/components/DragUploadZone.vue @@ -1,6 +1,11 @@