diff --git a/public/locales/zh-CN/dashboard.json b/public/locales/zh-CN/dashboard.json index 457419d..7e35bda 100644 --- a/public/locales/zh-CN/dashboard.json +++ b/public/locales/zh-CN/dashboard.json @@ -745,7 +745,8 @@ "dstFolderPathDes": "要将目录导入到用户文件系统中的路径", "recursivelyImport": "递归导入子目录", "recursivelyImportDes": "是否将目录下的所有子目录递归导入", - "createImportTask": "创建导入任务" + "createImportTask": "创建导入任务", + "unlink": "解除关联(保留物理文件)" }, "share": { "deleted": "分享已删除", diff --git a/src/component/Admin/File/File.js b/src/component/Admin/File/File.js index e934591..52f1ca3 100644 --- a/src/component/Admin/File/File.js +++ b/src/component/Admin/File/File.js @@ -17,7 +17,7 @@ import TableSortLabel from "@material-ui/core/TableSortLabel"; import Toolbar from "@material-ui/core/Toolbar"; import Tooltip from "@material-ui/core/Tooltip"; import Typography from "@material-ui/core/Typography"; -import { Delete, DeleteForever, FilterList } from "@material-ui/icons"; +import { Delete, DeleteForever, FilterList,LinkOff } from "@material-ui/icons"; import React, { useCallback, useEffect, useState } from "react"; import { useDispatch } from "react-redux"; import { useHistory } from "react-router"; @@ -125,9 +125,9 @@ export default function File() { loadList(); }, [page, pageSize, orderBy, filter, search]); - const deletePolicy = (id) => { + const deleteFile = (id, unlink = false) => { setLoading(true); - API.post("/admin/file/delete", { id: [id] }) + API.post("/admin/file/delete", { id: [id], unlink }) .then(() => { loadList(); ToggleSnackbar("top", "right", t("deleteAsync"), "success"); @@ -140,20 +140,22 @@ export default function File() { }); }; - const deleteBatch = (force) => () => { - setLoading(true); - API.post("/admin/file/delete", { id: selected, force: force }) - .then(() => { - loadList(); - ToggleSnackbar("top", "right", t("deleteAsync"), "success"); - }) - .catch((error) => { - ToggleSnackbar("top", "right", error.message, "error"); - }) - .then(() => { - setLoading(false); - }); - }; + const deleteBatch = + (force, unlink = false) => + () => { + setLoading(true); + API.post("/admin/file/delete", { id: selected, force, unlink }) + .then(() => { + loadList(); + ToggleSnackbar("top", "right", t("deleteAsync"), "success"); + }) + .catch((error) => { + ToggleSnackbar("top", "right", error.message, "error"); + }) + .then(() => { + setLoading(false); + }); + }; const handleSelectAllClick = (event) => { if (event.target.checked) { @@ -264,6 +266,15 @@ export default function File() { + + + + + )} @@ -446,13 +457,26 @@ export default function File() { - deletePolicy(row.ID) + deleteFile(row.ID) } size={"small"} > + + + deleteFile(row.ID, true) + } + size={"small"} + > + + + ))}