feat(k8s): M6 编辑器基础设施 + 基本信息 Tab + YAML编辑器

- DeploymentWorkload: 三模式切换(查看/编辑/YAML编辑)+ EditModeContainer Tab 导航系统
- DeploymentEditBasic: 新增基本信息 Tab — replicas/labels/annotations/selector 编辑
- YamlViewer: 升级为 CodeMirror 6(语法高亮+行号+折叠+括号匹配),新增 inline 内联模式
- DeploymentDetailPage: mode 类型扩展为 view|edit|yaml
- 路由 :mode 参数自动支持 yaml 值
- M7-M9 Tab 预留占位(容器信息/存储/高级/服务)
This commit is contained in:
attacker committed 2026-06-23 05:15:42 +08:00
1 parent 2e66908e20
commit 68a954c1c5
9 files changed
+855 -42

No files matched your search

@@ -1,19 +1,21 @@
// DeploymentDetailPage.tsx — 路由包装:解析 cluster/namespace/mode/name
// 支持 Kuboard 风格双模式路由:
// 支持 Kuboard 风格三模式路由:
// view: /kubernetes/:c/namespace/:n/workload/view/Deployment/:name
// edit: /kubernetes/:c/namespace/:n/workload/edit/Deployment/:name
// yaml: /kubernetes/:c/namespace/:n/workload/yaml/Deployment/:name
// 兼容旧路由: /kubernetes/:c/namespace/:n/deployments/:name(默认 view)
// 作者: Logan <admin@attacker.club>
import { useParams, useNavigate } from 'react-router-dom';
import { DeploymentWorkload } from './DeploymentWorkload';
export type WorkloadMode = 'view' | 'edit' | 'yaml';
export default function DeploymentDetailPage() {
// 兼容两种路由参数命名:旧 :name 与新 :name(路径段不同)
const params = useParams<{
clusterCode: string;
namespace: string;
name: string;
mode?: string; // 'view' | 'edit'(新路由)
mode?: string; // 'view' | 'edit' | 'yaml'(新路由)
workloadKind?: string; // 'Deployment'(新路由,预留扩展)
}>();
@@ -21,10 +23,10 @@ export default function DeploymentDetailPage() {
const clusterCode = params.clusterCode || '';
const namespace = params.namespace || '';
const deploymentName = params.name || '';
const currentMode: 'view' | 'edit' = params.mode === 'edit' ? 'edit' : 'view';
const currentMode: WorkloadMode = (params.mode === 'edit' || params.mode === 'yaml') ? params.mode : 'view';
// 模式切换:在 view/edit 路由间跳转
const handleModeChange = (m: 'view' | 'edit') => {
// 模式切换:在 view/edit/yaml 路由间跳转
const handleModeChange = (m: WorkloadMode) => {
if (m === currentMode) return;
navigate(
`/kubernetes/${clusterCode}/namespace/${namespace}/workload/${m}/Deployment/${deploymentName}`,