This commit is contained in:
Your Name
2026-04-22 14:13:21 +08:00
parent e0406b5d0e
commit 7cbde2aa78
145 changed files with 23086 additions and 2243 deletions

View File

@@ -6168,6 +6168,12 @@
<el-option label="control" value="control" />
</el-select>
</el-form-item>
<el-form-item label="SSH 一行录入" class="full-width">
<el-input
v-model="managedNodeForm.ssh_entry"
placeholder="例如 121.204.244.188 root <password> 或 121.204.244.248:22 root <password>"
/>
</el-form-item>
<el-form-item label="SSH Host">
<el-input v-model="managedNodeForm.ssh_host" placeholder="例如 121.204.244.248" />
</el-form-item>
@@ -6183,6 +6189,38 @@
<el-option label="password" value="password" />
</el-select>
</el-form-item>
<el-form-item v-if="managedNodeForm.auth_mode === 'password'" label="SSH 密码" class="full-width">
<el-input
v-model="managedNodeForm.ssh_password"
type="password"
show-password
placeholder="留空表示保留当前密码"
/>
<div class="summary-note" style="margin-top: 6px">
当前状态:{{ managedNodeForm.ssh_password_configured && !managedNodeForm.clear_ssh_password ? "已保存密码" : "未保存密码" }}
</div>
<el-switch
v-model="managedNodeForm.clear_ssh_password"
active-text="清除已保存密码"
inactive-text="保留当前密码"
/>
</el-form-item>
<el-form-item v-else label="SSH 私钥" class="full-width">
<el-input
v-model="managedNodeForm.ssh_private_key"
type="textarea"
:rows="6"
placeholder="可选:粘贴私钥;留空表示保留当前私钥"
/>
<div class="summary-note" style="margin-top: 6px">
当前状态:{{ managedNodeForm.ssh_private_key_configured && !managedNodeForm.clear_ssh_private_key ? "已保存私钥" : "未保存私钥" }}
</div>
<el-switch
v-model="managedNodeForm.clear_ssh_private_key"
active-text="清除已保存私钥"
inactive-text="保留当前私钥"
/>
</el-form-item>
<el-form-item label="发布渠道">
<el-select v-model="managedNodeForm.deploy_channel">
<el-option label="stable" value="stable" />
@@ -6652,10 +6690,17 @@ const managedNodeForm = ref({
title: "",
region: "mainland",
role: "worker",
ssh_entry: "",
ssh_host: "",
ssh_port: 22,
ssh_user: "root",
auth_mode: "key",
ssh_password: "",
ssh_private_key: "",
ssh_password_configured: false,
ssh_private_key_configured: false,
clear_ssh_password: false,
clear_ssh_private_key: false,
deploy_channel: "stable",
is_enabled: true,
metadata: {} as GenericRecord
@@ -12712,10 +12757,17 @@ const resetManagedNodeForm = () => {
title: "",
region: "mainland",
role: "worker",
ssh_entry: "",
ssh_host: "",
ssh_port: 22,
ssh_user: "root",
auth_mode: "key",
ssh_password: "",
ssh_private_key: "",
ssh_password_configured: false,
ssh_private_key_configured: false,
clear_ssh_password: false,
clear_ssh_private_key: false,
deploy_channel: "stable",
is_enabled: true,
metadata: {}
@@ -13696,10 +13748,17 @@ const openManagedNodeDialog = (
title: String(row.title || row.node_code || ""),
region: String(row.region || "mainland"),
role: String(row.role || "worker"),
ssh_entry: "",
ssh_host: String(row.ssh_host || row.cluster_ip || row.agent_ip || row.metadata?.ip || ""),
ssh_port: Number(row.ssh_port || 22) || 22,
ssh_user: String(row.ssh_user || "root"),
auth_mode: String(row.auth_mode || "key"),
ssh_password: "",
ssh_private_key: "",
ssh_password_configured: Boolean(row.ssh_password_configured),
ssh_private_key_configured: Boolean(row.ssh_private_key_configured),
clear_ssh_password: false,
clear_ssh_private_key: false,
deploy_channel: String(row.deploy_channel || "stable"),
is_enabled: Boolean(row.is_managed ? row.is_enabled : true),
metadata: {
@@ -13866,10 +13925,15 @@ const saveManagedNode = async () => {
title: managedNodeForm.value.title.trim() || managedNodeForm.value.node_code.trim(),
region: managedNodeForm.value.region,
role: managedNodeForm.value.role,
ssh_entry: managedNodeForm.value.ssh_entry.trim(),
ssh_host: managedNodeForm.value.ssh_host.trim(),
ssh_port: managedNodeForm.value.ssh_port,
ssh_user: managedNodeForm.value.ssh_user.trim(),
auth_mode: managedNodeForm.value.auth_mode,
ssh_password: managedNodeForm.value.auth_mode === "password" ? managedNodeForm.value.ssh_password : "",
ssh_private_key: managedNodeForm.value.auth_mode === "key" ? managedNodeForm.value.ssh_private_key : "",
clear_ssh_password: Boolean(managedNodeForm.value.clear_ssh_password),
clear_ssh_private_key: Boolean(managedNodeForm.value.clear_ssh_private_key),
deploy_channel: managedNodeForm.value.deploy_channel,
is_enabled: managedNodeForm.value.is_enabled,
metadata: {
@@ -13885,6 +13949,14 @@ const saveManagedNode = async () => {
ssh_port: managedNodeForm.value.ssh_port,
ssh_user: managedNodeForm.value.ssh_user.trim(),
auth_mode: managedNodeForm.value.auth_mode,
ssh_password_configured:
managedNodeForm.value.auth_mode === "password"
? Boolean(managedNodeForm.value.ssh_password || (managedNodeForm.value.ssh_password_configured && !managedNodeForm.value.clear_ssh_password))
: false,
ssh_private_key_configured:
managedNodeForm.value.auth_mode === "key"
? Boolean(managedNodeForm.value.ssh_private_key || (managedNodeForm.value.ssh_private_key_configured && !managedNodeForm.value.clear_ssh_private_key))
: false,
deploy_channel: managedNodeForm.value.deploy_channel,
is_enabled: managedNodeForm.value.is_enabled,
metadata: { ...(managedNodeForm.value.metadata || {}) },