feat: 增加资产主机详情抽屉并统一终端窗口壳
服务器列表可从右侧查看规格、迷你曲线和进程 TOP;SSH 与审计终端改为 macOS 风格标题栏。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
1 parent
2fd1624bec
commit
4658812876
11 files changed
+871
-142
No files matched your search
@@ -52,6 +52,7 @@ import { ExcelServerImport } from "./ExcelServerImport";
|
||||
import { ServerForm, EMPTY_FORM, type ServerFormData } from "./ServerForm";
|
||||
import { getTags } from "./serverHelpers";
|
||||
import { ServerTableRow } from "./ServerTableRow";
|
||||
import { ServerDetailSheet } from "./ServerDetailSheet";
|
||||
import { usePermission } from "@/hooks/usePermission";
|
||||
import { PageShell } from "@/components/layout/PageShell";
|
||||
import { ContentPanel } from "@/components/layout/ContentPanel";
|
||||
@@ -80,6 +81,7 @@ export function ServerManager() {
|
||||
id: number;
|
||||
name: string;
|
||||
ip: string;
|
||||
username?: string;
|
||||
hasAuth?: boolean;
|
||||
} | null>(null);
|
||||
const [rdpOpen, setRdpOpen] = useState(false);
|
||||
@@ -95,6 +97,7 @@ export function ServerManager() {
|
||||
id: number;
|
||||
name: string;
|
||||
} | null>(null);
|
||||
const [detailServer, setDetailServer] = useState<JsonData | null>(null);
|
||||
|
||||
// 分页状态
|
||||
const [page, setPage] = useState(1);
|
||||
@@ -130,6 +133,7 @@ export function ServerManager() {
|
||||
id: server.id,
|
||||
name: getServerDisplayName(server),
|
||||
ip: server.ip,
|
||||
username: server.username || "root",
|
||||
hasAuth: server.has_auth ?? true,
|
||||
});
|
||||
setTerminalOpen(true);
|
||||
@@ -548,6 +552,7 @@ export function ServerManager() {
|
||||
onOpenRdp={openRdp}
|
||||
onOpenFiles={openFileBrowser}
|
||||
onOpenEdit={openEditForm}
|
||||
onOpenDetail={setDetailServer}
|
||||
onDelete={handleDelete}
|
||||
/>
|
||||
))
|
||||
@@ -650,9 +655,29 @@ export function ServerManager() {
|
||||
serverId={terminalServer?.id ?? null}
|
||||
serverName={terminalServer?.name ?? ""}
|
||||
serverIp={terminalServer?.ip ?? ""}
|
||||
username={terminalServer?.username || "root"}
|
||||
hasAuth={terminalServer?.hasAuth ?? true}
|
||||
/>
|
||||
|
||||
<ServerDetailSheet
|
||||
open={!!detailServer}
|
||||
onOpenChange={(v) => {
|
||||
if (!v) setDetailServer(null);
|
||||
}}
|
||||
server={
|
||||
detailServer
|
||||
? servers.find((s) => String(s.id) === String(detailServer.id)) || detailServer
|
||||
: null
|
||||
}
|
||||
onOpenTerminal={openTerminal}
|
||||
onOpenRdp={openRdp}
|
||||
onOpenFiles={openFileBrowser}
|
||||
onOpenEdit={(s) => {
|
||||
setDetailServer(null);
|
||||
openEditForm(s);
|
||||
}}
|
||||
/>
|
||||
|
||||
{/* 文件浏览 Dialog */}
|
||||
<ServerFileBrowser
|
||||
open={fileBrowserOpen}
|
||||
|
||||
Reference in new issue
Block a user