From c111be761096eae20f50a47d5b097592638f4379 Mon Sep 17 00:00:00 2001 From: attacker Date: Mon, 15 Jun 2026 07:05:02 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9C=8D=E5=8A=A1=E5=99=A8=E5=AF=BC?= =?UTF-8?q?=E5=85=A5=E5=BC=B9=E7=AA=97=E4=B8=BB=E9=A2=98=E5=8C=96=E2=80=94?= =?UTF-8?q?=E2=80=94CloudServerImport+ExcelServerImport=E5=85=A8=E9=87=8F?= =?UTF-8?q?=E6=9B=BF=E6=8D=A2=E7=A1=AC=E7=BC=96=E7=A0=81slate=E8=89=B2?= =?UTF-8?q?=E4=B8=BACSS=E5=8F=98=E9=87=8F+=E8=A1=A5DialogDescription?= =?UTF-8?q?=E6=B6=88=E9=99=A4Radix=E8=AD=A6=E5=91=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/server/CloudServerImport.tsx | 106 ++++++++-------- .../components/server/ExcelServerImport.tsx | 118 +++++++++--------- 2 files changed, 113 insertions(+), 111 deletions(-) diff --git a/frontend/src/components/server/CloudServerImport.tsx b/frontend/src/components/server/CloudServerImport.tsx index 3d8f056..ffcb42d 100644 --- a/frontend/src/components/server/CloudServerImport.tsx +++ b/frontend/src/components/server/CloudServerImport.tsx @@ -1,6 +1,6 @@ import { useState, useEffect } from 'react'; import { Button } from '@/components/ui/button'; -import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; +import { Card, CardContent } from '@/components/ui/card'; import { Badge } from '@/components/ui/badge'; import { Checkbox } from '@/components/ui/checkbox'; import { @@ -8,6 +8,7 @@ import { DialogContent, DialogHeader, DialogTitle, + DialogDescription, DialogFooter, } from '@/components/ui/dialog'; import { @@ -82,8 +83,8 @@ export function CloudServerImport({ open, onClose }: CloudServerImportProps) { }; const handleServerToggle = (serverId: string) => { - setSelectedServers(prev => - prev.includes(serverId) + setSelectedServers(prev => + prev.includes(serverId) ? prev.filter(id => id !== serverId) : [...prev, serverId] ); @@ -98,7 +99,7 @@ export function CloudServerImport({ open, onClose }: CloudServerImportProps) { }; const handleImport = () => { - // Mock import action + // 云主机发现功能尚未实现,暂以空操作占位 setTimeout(() => { onClose(); setStep(1); @@ -124,9 +125,10 @@ export function CloudServerImport({ open, onClose }: CloudServerImportProps) { return ( - + 导入云主机 + 从云平台批量导入主机资产 {/* Step Indicator */} @@ -134,18 +136,18 @@ export function CloudServerImport({ open, onClose }: CloudServerImportProps) { {steps.map((s, index) => (
s.id - ? 'bg-emerald-600/20 text-emerald-400' - : 'bg-slate-800 text-slate-500' + step === s.id + ? 'bg-blue-600 text-white' + : step > s.id + ? 'bg-emerald-600/20 text-emerald-400' + : 'bg-[var(--dg-bg-secondary)] text-[var(--dg-text-muted)]' }`}> {s.title} {step > s.id && }
{index < steps.length - 1 && ( - + )}
))} @@ -154,15 +156,15 @@ export function CloudServerImport({ open, onClose }: CloudServerImportProps) { {/* Step 1: Select Cloud Provider */} {step === 1 && (
-

请选择要导入云主机的云平台

+

请选择要导入云主机的云平台

{cloudProviders.map((provider) => ( setSelectedProvider(provider.id)} > @@ -170,7 +172,7 @@ export function CloudServerImport({ open, onClose }: CloudServerImportProps) {
{provider.icon}
- {provider.name} + {provider.name}
))} @@ -182,13 +184,13 @@ export function CloudServerImport({ open, onClose }: CloudServerImportProps) { {step === 2 && (
-

请选择访问凭据(AccessKey)

-
- + {filteredAccounts.length > 0 ? (
{filteredAccounts.map((account) => ( @@ -196,8 +198,8 @@ export function CloudServerImport({ open, onClose }: CloudServerImportProps) { key={account.id} className={`cursor-pointer transition-all ${ selectedAccount === account.id - ? 'border-blue-500 ring-1 ring-blue-500/30 bg-slate-800' - : 'border-slate-700 hover:border-slate-600 bg-slate-800/50' + ? 'border-blue-500 ring-1 ring-blue-500/30 bg-[var(--dg-bg-secondary)]' + : 'border-[var(--dg-border)] hover:border-blue-500 bg-[var(--dg-bg-secondary)]' }`} onClick={() => setSelectedAccount(account.id)} > @@ -205,25 +207,25 @@ export function CloudServerImport({ open, onClose }: CloudServerImportProps) {
-

{account.name}

-

{(account.access_key || account.accessKey || '').slice(0, 20)}...

+

{account.name}

+

{(account.access_key || account.accessKey || '').slice(0, 20)}...

{account.region_count ?? account.regionCount ?? 0} 区域 -

{account.server_count ?? account.serverCount ?? 0} 服务器

+

{account.server_count ?? account.serverCount ?? 0} 服务器

))}
) : ( -
+

该云平台暂无有效的访问凭据

-
@@ -235,9 +237,9 @@ export function CloudServerImport({ open, onClose }: CloudServerImportProps) { {step === 3 && (
-

请选择要导入的云主机

+

请选择要导入的云主机

- @@ -249,41 +251,41 @@ export function CloudServerImport({ open, onClose }: CloudServerImportProps) { {isLoading ? (
-

正在获取云主机列表...

+

正在获取云主机列表...

) : ( -
+
- + - - - - - - - + + + + + + - + {cloudServers.length === 0 ? ( ) : ( cloudServers.map((server) => ( - - - - - + + + + +
+ 0} onCheckedChange={handleSelectAll} /> 实例ID主机名IP地址区域规格状态实例ID主机名IP地址区域规格状态
- -

暂无云主机

-

云主机发现功能尚未实现,请手动添加服务器

+ +

暂无云主机

+

云主机发现功能尚未实现,请手动添加服务器

handleServerToggle(server.id)} /> {server.name}{server.hostname}{server.ip}{server.region}{server.spec}{server.name}{server.hostname}{server.ip}{server.region}{server.spec}
{step > 1 && ( - )}
- {step < 3 ? ( - ) : ( - @@ -326,11 +326,11 @@ export function ExcelServerImport({ open, onClose }: ExcelServerImportProps) { {/* Region Selection */}
- +
{selectedFile && ( - +
-

{selectedFile.name}

-

{(selectedFile.size / 1024).toFixed(2)} KB

+

{selectedFile.name}

+

{(selectedFile.size / 1024).toFixed(2)} KB

-