From d16b1d59ed0621ae4bc344bd7c1d130c78cdaaf4 Mon Sep 17 00:00:00 2001 From: dengqichen Date: Wed, 17 Dec 2025 19:34:51 +0800 Subject: [PATCH] 1.41 --- .../Team/List/components/K8sRuntimeConfig.tsx | 61 ++++++++++--------- .../List/components/RuntimeConfigSection.tsx | 24 ++++---- .../List/components/TeamApplicationDialog.tsx | 48 +++++++-------- .../TeamApplicationManageDialog.tsx | 8 +-- frontend/src/pages/Deploy/Team/List/types.ts | 8 +-- 5 files changed, 75 insertions(+), 74 deletions(-) diff --git a/frontend/src/pages/Deploy/Team/List/components/K8sRuntimeConfig.tsx b/frontend/src/pages/Deploy/Team/List/components/K8sRuntimeConfig.tsx index 19c12602..9c4d2bb2 100644 --- a/frontend/src/pages/Deploy/Team/List/components/K8sRuntimeConfig.tsx +++ b/frontend/src/pages/Deploy/Team/List/components/K8sRuntimeConfig.tsx @@ -17,20 +17,20 @@ import { getK8sNamespaceList, getK8sDeploymentByNamespace } from '@/pages/Resour interface K8sRuntimeConfigProps { k8sSystemId: number | null; - k8sNamespaceId: number | null; - k8sDeploymentId: number | null; + k8sNamespaceName: string; + k8sDeploymentName: string; onK8sSystemChange: (systemId: number | null) => void; - onK8sNamespaceChange: (namespaceId: number | null) => void; - onK8sDeploymentIdChange: (deploymentId: number | null) => void; + onK8sNamespaceNameChange: (namespaceName: string) => void; + onK8sDeploymentNameChange: (deploymentName: string) => void; } export const K8sRuntimeConfig: React.FC = ({ k8sSystemId, - k8sNamespaceId, - k8sDeploymentId, + k8sNamespaceName, + k8sDeploymentName, onK8sSystemChange, - onK8sNamespaceChange, - onK8sDeploymentIdChange, + onK8sNamespaceNameChange, + onK8sDeploymentNameChange, }) => { const [k8sSystems, setK8sSystems] = useState([]); const [namespaces, setNamespaces] = useState([]); @@ -81,14 +81,21 @@ export const K8sRuntimeConfig: React.FC = ({ // 加载Deployment列表 useEffect(() => { const loadDeployments = async () => { - if (!k8sSystemId || !k8sNamespaceId) { + if (!k8sSystemId || !k8sNamespaceName) { + setDeployments([]); + return; + } + + // 通过namespaceName查找对应的namespace ID + const namespace = namespaces.find(ns => ns.namespaceName === k8sNamespaceName); + if (!namespace) { setDeployments([]); return; } setLoadingDeployments(true); try { - const data = await getK8sDeploymentByNamespace(k8sSystemId, k8sNamespaceId); + const data = await getK8sDeploymentByNamespace(k8sSystemId, namespace.id); setDeployments(data || []); } catch (error) { console.error('加载Deployment失败:', error); @@ -98,7 +105,7 @@ export const K8sRuntimeConfig: React.FC = ({ } }; loadDeployments(); - }, [k8sSystemId, k8sNamespaceId]); + }, [k8sSystemId, k8sNamespaceName, namespaces]); return (
@@ -147,14 +154,11 @@ export const K8sRuntimeConfig: React.FC = ({ disabled={loadingNamespaces || namespaces.length === 0} className={cn( 'w-full justify-between', - !k8sNamespaceId && 'text-muted-foreground' + !k8sNamespaceName && 'text-muted-foreground' )} > - {k8sNamespaceId - ? (() => { - const selectedNs = namespaces.find((ns) => ns.id === k8sNamespaceId); - return selectedNs ? selectedNs.namespaceName : '选择Namespace'; - })() + {k8sNamespaceName + ? k8sNamespaceName : loadingNamespaces ? '加载中...' : namespaces.length === 0 @@ -184,16 +188,16 @@ export const K8sRuntimeConfig: React.FC = ({ key={ns.id} className={cn( 'relative flex cursor-pointer select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none hover:bg-accent hover:text-accent-foreground', - ns.id === k8sNamespaceId && 'bg-accent text-accent-foreground' + ns.namespaceName === k8sNamespaceName && 'bg-accent text-accent-foreground' )} onClick={() => { - onK8sNamespaceChange(ns.id); + onK8sNamespaceNameChange(ns.namespaceName); setNamespaceSearchValue(''); setNamespacePopoverOpen(false); }} > {ns.namespaceName} - {ns.id === k8sNamespaceId && } + {ns.namespaceName === k8sNamespaceName && }
))} @@ -211,7 +215,7 @@ export const K8sRuntimeConfig: React.FC = ({ {/* Deployment选择 */}
- {k8sNamespaceId ? ( + {k8sNamespaceName ? (
))} diff --git a/frontend/src/pages/Deploy/Team/List/components/RuntimeConfigSection.tsx b/frontend/src/pages/Deploy/Team/List/components/RuntimeConfigSection.tsx index fbc42583..aafa98e6 100644 --- a/frontend/src/pages/Deploy/Team/List/components/RuntimeConfigSection.tsx +++ b/frontend/src/pages/Deploy/Team/List/components/RuntimeConfigSection.tsx @@ -18,11 +18,11 @@ interface RuntimeConfigSectionProps { onRuntimeTypeChange: (type: RuntimeType | null) => void; // K8S配置 k8sSystemId: number | null; - k8sNamespaceId: number | null; - k8sDeploymentId: number | null; + k8sNamespaceName: string; + k8sDeploymentName: string; onK8sSystemChange: (systemId: number | null) => void; - onK8sNamespaceChange: (namespaceId: number | null) => void; - onK8sDeploymentIdChange: (deploymentId: number | null) => void; + onK8sNamespaceNameChange: (namespaceName: string) => void; + onK8sDeploymentNameChange: (deploymentName: string) => void; // Docker配置(预留) dockerServerId?: number | null; dockerContainerName?: string; @@ -39,11 +39,11 @@ export const RuntimeConfigSection: React.FC = ({ runtimeType, onRuntimeTypeChange, k8sSystemId, - k8sNamespaceId, - k8sDeploymentId, + k8sNamespaceName, + k8sDeploymentName, onK8sSystemChange, - onK8sNamespaceChange, - onK8sDeploymentIdChange, + onK8sNamespaceNameChange, + onK8sDeploymentNameChange, dockerServerId, dockerContainerName, onDockerServerChange, @@ -84,11 +84,11 @@ export const RuntimeConfigSection: React.FC = ({ {runtimeType === 'K8S' && ( )} diff --git a/frontend/src/pages/Deploy/Team/List/components/TeamApplicationDialog.tsx b/frontend/src/pages/Deploy/Team/List/components/TeamApplicationDialog.tsx index 5d3c3608..5387b436 100644 --- a/frontend/src/pages/Deploy/Team/List/components/TeamApplicationDialog.tsx +++ b/frontend/src/pages/Deploy/Team/List/components/TeamApplicationDialog.tsx @@ -65,8 +65,8 @@ interface TeamApplicationDialogProps { // 运行时配置 runtimeType: RuntimeType | null; k8sSystemId: number | null; - k8sNamespaceId: number | null; - k8sDeploymentId: number | null; + k8sNamespaceName: string; + k8sDeploymentName: string; dockerServerId: number | null; dockerContainerName: string; serverId: number | null; @@ -111,8 +111,8 @@ const TeamApplicationDialog: React.FC = ({ // 运行时配置 runtimeType: null as RuntimeType | null, // 运行时类型 k8sSystemId: null as number | null, // K8S系统ID - k8sNamespaceId: null as number | null, // K8S命名空间ID - k8sDeploymentId: null as number | null, // K8S Deployment ID + k8sNamespaceName: '', // K8S命名空间名称 + k8sDeploymentName: '', // K8S Deployment名称 dockerServerId: null as number | null, // Docker服务器ID dockerContainerName: '', // Docker容器名称 serverId: null as number | null, // 服务器ID @@ -160,8 +160,8 @@ const TeamApplicationDialog: React.FC = ({ // 运行时配置 runtimeType: application.runtimeType || null, k8sSystemId: application.k8sSystemId || null, - k8sNamespaceId: application.k8sNamespaceId || null, - k8sDeploymentId: application.k8sDeploymentId || null, + k8sNamespaceName: application.k8sNamespaceName || '', + k8sDeploymentName: application.k8sDeploymentName || '', dockerServerId: application.dockerServerId || null, dockerContainerName: application.dockerContainerName || '', serverId: application.serverId || null, @@ -216,8 +216,8 @@ const TeamApplicationDialog: React.FC = ({ // 运行时配置 runtimeType: null, k8sSystemId: null, - k8sNamespaceId: null, - k8sDeploymentId: null, + k8sNamespaceName: '', + k8sDeploymentName: '', dockerServerId: null, dockerContainerName: '', serverId: null, @@ -320,8 +320,8 @@ const TeamApplicationDialog: React.FC = ({ // 保留运行时配置 runtimeType: formData.runtimeType, k8sSystemId: formData.k8sSystemId, - k8sNamespaceId: formData.k8sNamespaceId, - k8sDeploymentId: formData.k8sDeploymentId, + k8sNamespaceName: formData.k8sNamespaceName, + k8sDeploymentName: formData.k8sDeploymentName, dockerServerId: formData.dockerServerId, dockerContainerName: formData.dockerContainerName, serverId: formData.serverId, @@ -492,7 +492,7 @@ const TeamApplicationDialog: React.FC = ({ }); return; } - if (!formData.k8sNamespaceId) { + if (!formData.k8sNamespaceName) { toast({ variant: 'destructive', title: '请选择Namespace', @@ -500,7 +500,7 @@ const TeamApplicationDialog: React.FC = ({ }); return; } - if (!formData.k8sDeploymentId) { + if (!formData.k8sDeploymentName) { toast({ variant: 'destructive', title: '请选择Deployment', @@ -528,8 +528,8 @@ const TeamApplicationDialog: React.FC = ({ // 运行时配置 runtimeType: formData.runtimeType, k8sSystemId: formData.k8sSystemId, - k8sNamespaceId: formData.k8sNamespaceId, - k8sDeploymentId: formData.k8sDeploymentId, + k8sNamespaceName: formData.k8sNamespaceName, + k8sDeploymentName: formData.k8sDeploymentName, dockerServerId: formData.dockerServerId, dockerContainerName: formData.dockerContainerName, serverId: formData.serverId, @@ -877,8 +877,8 @@ const TeamApplicationDialog: React.FC = ({ runtimeType: type, // 切换类型时清空所有运行时配置 k8sSystemId: null, - k8sNamespaceId: null, - k8sDeploymentId: null, + k8sNamespaceName: '', + k8sDeploymentName: '', dockerServerId: null, dockerContainerName: '', serverId: null, @@ -886,20 +886,20 @@ const TeamApplicationDialog: React.FC = ({ }); }} k8sSystemId={formData.k8sSystemId} - k8sNamespaceId={formData.k8sNamespaceId} - k8sDeploymentId={formData.k8sDeploymentId} + k8sNamespaceName={formData.k8sNamespaceName} + k8sDeploymentName={formData.k8sDeploymentName} onK8sSystemChange={(systemId) => setFormData(prev => ({ ...prev, k8sSystemId: systemId, - k8sNamespaceId: null, - k8sDeploymentId: null + k8sNamespaceName: '', + k8sDeploymentName: '' }))} - onK8sNamespaceChange={(namespaceId) => setFormData(prev => ({ + onK8sNamespaceNameChange={(namespaceName) => setFormData(prev => ({ ...prev, - k8sNamespaceId: namespaceId, - k8sDeploymentId: null + k8sNamespaceName: namespaceName, + k8sDeploymentName: '' }))} - onK8sDeploymentIdChange={(deploymentId) => setFormData(prev => ({ ...prev, k8sDeploymentId: deploymentId }))} + onK8sDeploymentNameChange={(deploymentName) => setFormData(prev => ({ ...prev, k8sDeploymentName: deploymentName }))} dockerServerId={formData.dockerServerId} dockerContainerName={formData.dockerContainerName} onDockerServerChange={(serverId) => setFormData(prev => ({ ...prev, dockerServerId: serverId }))} diff --git a/frontend/src/pages/Deploy/Team/List/components/TeamApplicationManageDialog.tsx b/frontend/src/pages/Deploy/Team/List/components/TeamApplicationManageDialog.tsx index ca530fc5..7e4e88cf 100644 --- a/frontend/src/pages/Deploy/Team/List/components/TeamApplicationManageDialog.tsx +++ b/frontend/src/pages/Deploy/Team/List/components/TeamApplicationManageDialog.tsx @@ -135,8 +135,8 @@ export const TeamApplicationManageDialog: React.FC< // 运行时配置 runtimeType: 'K8S' | 'DOCKER' | 'SERVER' | null; k8sSystemId: number | null; - k8sNamespaceId: number | null; - k8sDeploymentId: number | null; + k8sNamespaceName: string; + k8sDeploymentName: string; dockerServerId: number | null; dockerContainerName: string; serverId: number | null; @@ -163,8 +163,8 @@ export const TeamApplicationManageDialog: React.FC< // 运行时配置字段 runtimeType: data.runtimeType || undefined, k8sSystemId: data.k8sSystemId || undefined, - k8sNamespaceId: data.k8sNamespaceId || undefined, - k8sDeploymentId: data.k8sDeploymentId || undefined, + k8sNamespaceName: data.k8sNamespaceName || undefined, + k8sDeploymentName: data.k8sDeploymentName || undefined, dockerServerId: data.dockerServerId || undefined, dockerContainerName: data.dockerContainerName || undefined, serverId: data.serverId || undefined, diff --git a/frontend/src/pages/Deploy/Team/List/types.ts b/frontend/src/pages/Deploy/Team/List/types.ts index 6eb596e5..b79e777e 100644 --- a/frontend/src/pages/Deploy/Team/List/types.ts +++ b/frontend/src/pages/Deploy/Team/List/types.ts @@ -206,8 +206,8 @@ export interface TeamApplication extends BaseResponse { // 运行时配置字段 runtimeType?: RuntimeType; // 运行时类型 k8sSystemId?: number; // K8S系统ID - k8sNamespaceId?: number; // K8S命名空间ID - k8sDeploymentId?: number; // K8S Deployment ID + k8sNamespaceName?: string; // K8S命名空间名称 + k8sDeploymentName?: string; // K8S Deployment名称 dockerServerId?: number; // Docker服务器ID dockerContainerName?: string; // Docker容器名称 serverId?: number; // 服务器ID @@ -251,8 +251,8 @@ export interface TeamApplicationRequest { // 运行时配置字段 runtimeType?: RuntimeType; // 运行时类型 k8sSystemId?: number; // K8S系统ID - k8sNamespaceId?: number; // K8S命名空间ID - k8sDeploymentId?: number; // K8S Deployment ID + k8sNamespaceName?: string; // K8S命名空间名称 + k8sDeploymentName?: string; // K8S Deployment名称 dockerServerId?: number; // Docker服务器ID dockerContainerName?: string; // Docker容器名称 serverId?: number; // 服务器ID