完善模型库权限与工艺数据解析
This commit is contained in:
@@ -12,6 +12,10 @@ type JsTreeNode = {
|
||||
text: string;
|
||||
};
|
||||
|
||||
function isRealFolderId(id: string) {
|
||||
return /^\d+$/.test(id);
|
||||
}
|
||||
|
||||
function selectFolder(node: JsTreeNode) {
|
||||
appState.selectedFolderId = Number(node.id);
|
||||
appState.selectedFolderName = appState.folders.find((folder) => folder.id === Number(node.id))?.name ?? node.text;
|
||||
@@ -60,7 +64,6 @@ async function runFolderAction(action: () => Promise<void>) {
|
||||
}
|
||||
|
||||
export async function loadFolders() {
|
||||
const isAdmin = getCurrentUser()?.role === "admin";
|
||||
const result = await api<FolderTreeResponse>("/api/folders");
|
||||
appState.folders = result.folders;
|
||||
const root = appState.folders.find((folder) => folder.parent_id === null);
|
||||
@@ -73,16 +76,19 @@ export async function loadFolders() {
|
||||
data: result.tree,
|
||||
multiple: false
|
||||
},
|
||||
plugins: isAdmin ? ["contextmenu"] : [],
|
||||
plugins: ["contextmenu"],
|
||||
contextmenu: {
|
||||
items(node: JsTreeNode) {
|
||||
if (!isRealFolderId(node.id)) return {};
|
||||
const folderId = Number(node.id);
|
||||
const folder = appState.folders.find((item) => item.id === folderId);
|
||||
const isRoot = folder?.parent_id === null;
|
||||
const canWrite = Boolean(folder?.permissions.write);
|
||||
const isSystem = Boolean(folder?.is_system);
|
||||
return {
|
||||
create: {
|
||||
label: "新建目录",
|
||||
icon: "tree-menu-icon tree-menu-icon-add",
|
||||
_disabled: !canWrite,
|
||||
action: () => runFolderAction(async () => {
|
||||
selectFolder(node);
|
||||
await createFolder(folderId);
|
||||
@@ -91,7 +97,7 @@ export async function loadFolders() {
|
||||
rename: {
|
||||
label: "重命名",
|
||||
icon: "tree-menu-icon tree-menu-icon-edit",
|
||||
_disabled: isRoot,
|
||||
_disabled: !canWrite || isSystem,
|
||||
action: () => runFolderAction(async () => {
|
||||
selectFolder(node);
|
||||
await renameFolder(folderId);
|
||||
@@ -100,7 +106,7 @@ export async function loadFolders() {
|
||||
remove: {
|
||||
label: "删除",
|
||||
icon: "tree-menu-icon tree-menu-icon-delete",
|
||||
_disabled: isRoot,
|
||||
_disabled: !canWrite || isSystem,
|
||||
action: () => runFolderAction(async () => {
|
||||
selectFolder(node);
|
||||
await deleteFolder(folderId);
|
||||
@@ -110,6 +116,7 @@ export async function loadFolders() {
|
||||
}
|
||||
}
|
||||
}).on("select_node.jstree", async (_event: JQuery.Event, data: { node: { id: string; text: string } }) => {
|
||||
if (!isRealFolderId(data.node.id)) return;
|
||||
appState.selectedFolderId = Number(data.node.id);
|
||||
appState.selectedFolderName = appState.folders.find((folder) => folder.id === appState.selectedFolderId)?.name ?? data.node.text;
|
||||
appState.page = 1;
|
||||
|
||||
Reference in New Issue
Block a user