diff --git a/web/src/app/admin/files/page.tsx b/web/src/app/admin/files/page.tsx index e134ab9..3436aff 100644 --- a/web/src/app/admin/files/page.tsx +++ b/web/src/app/admin/files/page.tsx @@ -78,6 +78,7 @@ export default function AdminFilesPage() { const { user, initializing, fetchWithAuth, hasPermission } = useAuth(); const [currentPath, setCurrentPath] = useState("/"); + const [createDirectoryModalOpen, setCreateDirectoryModalOpen] = useState(false); const [newDirectoryName, setNewDirectoryName] = useState(""); const [successMessage, setSuccessMessage] = useState(""); const [errorMessage, setErrorMessage] = useState(""); @@ -123,6 +124,11 @@ export default function AdminFilesPage() { }); }, [queryClient]); + const closeCreateDirectoryModal = useCallback(() => { + setCreateDirectoryModalOpen(false); + setNewDirectoryName(""); + }, []); + const closeRenameModal = useCallback(() => { setRenameTarget(null); setRenameName(""); @@ -135,9 +141,10 @@ export default function AdminFilesPage() { }, [currentPath]); const resetActionPanels = useCallback(() => { + closeCreateDirectoryModal(); closeRenameModal(); closeMoveModal(); - }, [closeMoveModal, closeRenameModal]); + }, [closeCreateDirectoryModal, closeMoveModal, closeRenameModal]); const applyMutationSuccess = useCallback( async (payload: FileOperationResponse, fallbackMessage: string) => { @@ -180,6 +187,7 @@ export default function AdminFilesPage() { }, onSuccess: async (payload) => { setNewDirectoryName(""); + setCreateDirectoryModalOpen(false); await applyMutationSuccess(payload, "目录已创建"); }, onError: (error) => { @@ -382,6 +390,14 @@ export default function AdminFilesPage() { void moveMutation.mutateAsync(moveTarget); }; + const submitCreateDirectory = () => { + if (!newDirectoryName.trim()) { + setErrorMessage("目录名称不能为空"); + return; + } + void createDirectoryMutation.mutateAsync(); + }; + const handleUploadFile = useCallback( (file: File) => { setSuccessMessage(""); @@ -501,18 +517,13 @@ export default function AdminFilesPage() { dataIndex: "name", key: "name", render: (_value, item) => ( - - - {item.is_dir ? : } - {item.is_dir ? ( - handleOpenDirectory(item)}>{item.name} - ) : ( - {item.name} - )} - - - {item.path} - + + {item.is_dir ? : } + {item.is_dir ? ( + handleOpenDirectory(item)}>{item.name} + ) : ( + {item.name} + )} ), }, @@ -709,9 +720,11 @@ export default function AdminFilesPage() {
{pageDisplayName}列表 - - 存储后端:{listData?.current_mount.backend.name ?? "-"}({listData?.current_mount.backend.driver_type ?? "-"}) - + {listData?.current_mount.backend.driver_type !== "VFS" && ( + + 存储后端:{listData?.current_mount.backend.name ?? "-"}({listData?.current_mount.backend.driver_type ?? "-"}) + + )}
+ )} + {canManage && (
-
+
- {canManage && ( -
- - setNewDirectoryName(event.currentTarget.value)} - placeholder="新建目录名" - allowClear - /> - - - - -
- )} -
rowKey={(item) => `${item.path}-${item.id}`} @@ -805,6 +807,34 @@ export default function AdminFilesPage() {
+ +
+ + setNewDirectoryName(event.currentTarget.value)} + placeholder="请输入目录名称" + allowClear + autoFocus + /> + +
+
+