feat:add guacamole
Build and Deploy Vue3 / build (push) Successful in 1m8s
Build and Deploy Vue3 / deploy (push) Successful in 4m43s

This commit is contained in:
2025-09-28 23:29:18 +08:00
parent 2b4083c2f1
commit 4fc9a43fd2
5 changed files with 829 additions and 2 deletions
+44 -2
View File
@@ -201,7 +201,31 @@
<div class="form-section-title">认证与展示</div>
<el-form-item v-if="serverForm.server_type === 'dockerContainer'" label="Auth-ID">
<el-input v-model="serverForm.auth_id" placeholder="节点服务器管理员的auth_id" />
<el-input v-model="serverForm.auth_id" placeholder="服务器管理id" />
</el-form-item>
<el-form-item v-if="serverForm.server_type === 'hyperV'" label="Guacamole-ID">
<el-input v-model="serverForm.guacamole_id" placeholder="guacamole服务id" />
</el-form-item>
<el-form-item v-if="serverForm.server_type === 'hyperV'" label="登录用户名">
<el-input v-model="serverForm.username" placeholder="服务器登录用户名" />
</el-form-item>
<el-form-item v-if="serverForm.server_type === 'hyperV'" label="登录密码">
<el-input
v-model="serverForm.password"
placeholder="服务器登录密码"
type="password"
show-password
/>
</el-form-item>
<el-form-item v-if="serverForm.server_type === 'hyperV'" label="端口映射">
<el-switch
v-model="serverForm.allow_port_forward"
:active-value="1"
:inactive-value="0"
active-text="开启"
inactive-text="关闭"
/>
<div class="form-item-description">服务器是否开放端口映射</div>
</el-form-item>
<el-form-item label="Token">
<el-input
@@ -335,6 +359,15 @@ const rules = {
server_ip: [
{ required: true, message: '请输入IP地址', trigger: 'blur' },
{ pattern: /^(\d{1,3}\.){3}\d{1,3}$/, message: '请输入有效的IP地址', trigger: 'blur' }
],
guacamole_id: [
{ required: false, message: '请输入Guacamole服务ID', trigger: 'blur' }
],
username: [
{ required: false, message: '请输入登录用户名', trigger: 'blur' }
],
password: [
{ required: false, message: '请输入登录密码', trigger: 'blur' }
]
}
@@ -418,6 +451,8 @@ const handleAdd = () => {
Object.keys(serverForm).forEach(key => {
if (key === 'hide') {
serverForm[key] = 0
} else if (key === 'allow_port_forward') {
serverForm[key] = 0
} else if (key === 'server_type') {
serverForm[key] = serverType.value
} else {
@@ -534,7 +569,7 @@ const submitForm = async () => {
const formData = { ...serverForm }
// 转换可能的数字字段
const numericFields = ['bandwidth', 'disk', 'memory', 'cpu', 'hide'];
const numericFields = ['bandwidth', 'disk', 'memory', 'cpu', 'hide', 'allow_port_forward'];
numericFields.forEach(field => {
if (formData[field] !== '' && formData[field] !== null && formData[field] !== undefined) {
formData[field] = Number(formData[field])
@@ -985,6 +1020,13 @@ onMounted(async () => {
color: #409EFF;
}
.form-item-description {
font-size: 12px;
color: #909399;
margin-top: 4px;
line-height: 1.2;
}
.form-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);