diff --git a/src/views/ops/pages/monitor/environment/index.vue b/src/views/ops/pages/monitor/environment/index.vue new file mode 100644 index 0000000..3d6ce36 --- /dev/null +++ b/src/views/ops/pages/monitor/environment/index.vue @@ -0,0 +1,870 @@ + + + + + + + \ No newline at end of file diff --git a/src/views/ops/pages/monitor/log/index.vue b/src/views/ops/pages/monitor/log/index.vue new file mode 100644 index 0000000..d8ad738 --- /dev/null +++ b/src/views/ops/pages/monitor/log/index.vue @@ -0,0 +1,542 @@ + + + + + + + \ No newline at end of file diff --git a/src/views/ops/pages/monitor/network/index.vue b/src/views/ops/pages/monitor/network/index.vue new file mode 100644 index 0000000..60d6338 --- /dev/null +++ b/src/views/ops/pages/monitor/network/index.vue @@ -0,0 +1,709 @@ + + + + + + + \ No newline at end of file diff --git a/src/views/ops/pages/monitor/safety/index.vue b/src/views/ops/pages/monitor/safety/index.vue new file mode 100644 index 0000000..18fbd3e --- /dev/null +++ b/src/views/ops/pages/monitor/safety/index.vue @@ -0,0 +1,725 @@ + + + + + + + \ No newline at end of file diff --git a/src/views/ops/pages/monitor/security/index.vue b/src/views/ops/pages/monitor/security/index.vue new file mode 100644 index 0000000..baa3d64 --- /dev/null +++ b/src/views/ops/pages/monitor/security/index.vue @@ -0,0 +1,637 @@ + + + + + + + \ No newline at end of file diff --git a/src/views/ops/pages/monitor/storage/index.vue b/src/views/ops/pages/monitor/storage/index.vue new file mode 100644 index 0000000..69b56a4 --- /dev/null +++ b/src/views/ops/pages/monitor/storage/index.vue @@ -0,0 +1,626 @@ + + + + + \ No newline at end of file diff --git a/src/views/ops/pages/monitor/url/index.vue b/src/views/ops/pages/monitor/url/index.vue new file mode 100644 index 0000000..2912855 --- /dev/null +++ b/src/views/ops/pages/monitor/url/index.vue @@ -0,0 +1,571 @@ + + + + + + + \ No newline at end of file diff --git a/src/views/ops/pages/monitor/virtualization/index.vue b/src/views/ops/pages/monitor/virtualization/index.vue new file mode 100644 index 0000000..42c3954 --- /dev/null +++ b/src/views/ops/pages/monitor/virtualization/index.vue @@ -0,0 +1,730 @@ + + + + + + + \ No newline at end of file diff --git a/src/views/ops/pages/netarch/auto-topology/index.vue b/src/views/ops/pages/netarch/auto-topology/index.vue new file mode 100644 index 0000000..a6c7331 --- /dev/null +++ b/src/views/ops/pages/netarch/auto-topology/index.vue @@ -0,0 +1,650 @@ + + + + + + + diff --git a/src/views/ops/pages/netarch/ip/index.vue b/src/views/ops/pages/netarch/ip/index.vue new file mode 100644 index 0000000..29dfe34 --- /dev/null +++ b/src/views/ops/pages/netarch/ip/index.vue @@ -0,0 +1,695 @@ + + + + + + + \ No newline at end of file diff --git a/src/views/ops/pages/netarch/traffic/index.vue b/src/views/ops/pages/netarch/traffic/index.vue new file mode 100644 index 0000000..434a03f --- /dev/null +++ b/src/views/ops/pages/netarch/traffic/index.vue @@ -0,0 +1,875 @@ + + + + + + + diff --git a/src/views/ops/pages/system-settings/menu-management/index.vue b/src/views/ops/pages/system-settings/menu-management/index.vue index 7e3ebd8..f435e25 100644 --- a/src/views/ops/pages/system-settings/menu-management/index.vue +++ b/src/views/ops/pages/system-settings/menu-management/index.vue @@ -311,19 +311,38 @@ const handleDrop = async (data: { dragNode: MenuNode; targetNode: MenuNode; posi .filter(item => item.parent_id === targetNode.parent_id) .sort((a, b) => (a.order || 0) - (b.order || 0)) - siblings.forEach((item) => { - if (item.id === targetNode.id) { - if (position === 'before') { - sortList.push({ pmn_id: dragNode.id!, sort_key: sortKey++ }) + // 找到拖拽节点和目标节点的索引 + const dragIndex = siblings.findIndex(item => item.id === dragNode.id) + const targetIndex = siblings.findIndex(item => item.id === targetNode.id) + + // 检查是否需要移动 + const isSameParent = dragNode.parent_id === targetNode.parent_id + const isAlreadyBefore = isSameParent && dragIndex === targetIndex - 1 + const isAlreadyAfter = isSameParent && dragIndex === targetIndex + 1 + + // 如果已经在目标位置,不需要更新排序 + const needSort = !(isSameParent && ( + (position === 'before' && dragIndex === targetIndex) || + (position === 'before' && isAlreadyBefore) || + (position === 'after' && dragIndex === targetIndex) || + (position === 'after' && isAlreadyAfter) + )) + + if (needSort) { + siblings.forEach((item) => { + if (item.id === targetNode.id) { + if (position === 'before') { + sortList.push({ pmn_id: dragNode.id!, sort_key: sortKey++ }) + sortList.push({ pmn_id: item.id!, sort_key: sortKey++ }) + } else { + sortList.push({ pmn_id: item.id!, sort_key: sortKey++ }) + sortList.push({ pmn_id: dragNode.id!, sort_key: sortKey++ }) + } + } else if (item.id !== dragNode.id) { sortList.push({ pmn_id: item.id!, sort_key: sortKey++ }) - } else { - sortList.push({ pmn_id: item.id!, sort_key: sortKey++ }) - sortList.push({ pmn_id: dragNode.id!, sort_key: sortKey++ }) } - } else if (item.id !== dragNode.id) { - sortList.push({ pmn_id: item.id!, sort_key: sortKey++ }) - } - }) + }) + } // 更新拖拽节点的 parent_id const { children, ...dragData } = dragNode