fix: 创建数据卷的系统卷展示选择镜像
Build and Deploy Vue3 / build (push) Successful in 6m0s
Build and Deploy Vue3 / deploy (push) Successful in 58s

This commit is contained in:
2026-03-26 17:06:12 +08:00
parent 1a4587f893
commit b7e806cc80
3 changed files with 27 additions and 23 deletions
+20 -16
View File
@@ -217,11 +217,11 @@
<el-tag :type="row.is_system ? 'danger' : ''" size="small">{{ row.is_system ? '系统盘' : '数据盘' }}</el-tag>
</template>
</el-table-column>
<el-table-column label="挂载" width="80">
<!-- <el-table-column label="挂载" width="80">
<template #default="{ row }">
<el-tag :type="row.is_mount ? 'success' : 'info'" size="small">{{ row.is_mount ? '已挂载' : '未挂载' }}</el-tag>
</template>
</el-table-column>
</el-table-column> -->
<el-table-column label="状态" width="80">
<template #default="{ row }">
<el-tag :type="row.status === 'ready' ? 'success' : 'info'" size="small">{{ row.status === 'ready' ? '就绪' : (row.status || '-') }}</el-tag>
@@ -234,7 +234,7 @@
<template #default="{ row }">
<el-button link type="primary" size="small" @click="handleVolDetail(row)">详情</el-button>
<el-button link type="primary" size="small" @click="handleVolResize(row)">调整大小</el-button>
<el-button link type="success" size="small" @click="handleVolMount(row)" v-if="!row.is_mount">挂载</el-button>
<!-- <el-button link type="success" size="small" @click="handleVolMount(row)" v-if="!row.is_mount">挂载</el-button> -->
<el-button link type="warning" size="small" @click="handleVolUnmount(row)" v-if="row.is_mount">卸载</el-button>
<el-button link type="info" size="small" @click="handleVolTransfer(row)">迁移</el-button>
<el-button link type="danger" size="small" @click="handleVolDelete(row)">删除</el-button>
@@ -590,11 +590,11 @@
<el-input-number v-model="editForm.ssh_port" :min="1" :max="65535" controls-position="right" style="width: 200px" />
</el-form-item>
<el-form-item label="网络">
<div style="display: flex; align-items: center; gap: 8px; width: 100%">
<el-tag v-if="editSelectedNetworks.length" closable @close="removeEditNetwork(editSelectedNetworks[0].id)">
{{ editSelectedNetworks[0].name }} (ID:{{ editSelectedNetworks[0].id }})
<div style="display: flex; flex-wrap: wrap; align-items: center; gap: 6px; width: 100%">
<el-tag v-for="net in editSelectedNetworks" :key="net.id" closable @close="removeEditNetwork(net.id)">
{{ net.name }} (ID:{{ net.id }})
</el-tag>
<el-button size="small" @click="showEditNetworkSelector = true">{{ editSelectedNetworks.length ? '更换网络' : '选择网络' }}</el-button>
<el-button size="small" @click="showEditNetworkSelector = true">添加网络</el-button>
</div>
</el-form-item>
<el-form-item label="内网">
@@ -688,11 +688,11 @@
<el-input v-model="refactorForm.vnc_password" placeholder="不填随机" show-password />
</el-form-item>
<el-form-item label="网络">
<div style="display: flex; align-items: center; gap: 8px; width: 100%">
<el-tag v-if="refactorSelectedNetworks.length" closable @close="removeRefactorNetwork(refactorSelectedNetworks[0].id)">
{{ refactorSelectedNetworks[0].name }} (ID:{{ refactorSelectedNetworks[0].id }})
<div style="display: flex; flex-wrap: wrap; align-items: center; gap: 6px; width: 100%">
<el-tag v-for="net in refactorSelectedNetworks" :key="net.id" closable @close="removeRefactorNetwork(net.id)">
{{ net.name }} (ID:{{ net.id }})
</el-tag>
<el-button size="small" @click="showRefactorNetworkSelector = true">{{ refactorSelectedNetworks.length ? '更换网络' : '选择网络' }}</el-button>
<el-button size="small" @click="showRefactorNetworkSelector = true">添加网络</el-button>
</div>
</el-form-item>
<el-form-item label="内网">
@@ -864,7 +864,7 @@
<el-input :model-value="vmHostId ? `宿主机 #${vmHostId}` : '-'" disabled style="width: 100%" />
</el-form-item>
<el-form-item label="系统卷"><el-switch v-model="volCreateForm.is_system" /></el-form-item>
<el-form-item label="镜像">
<el-form-item v-if="volCreateForm.is_system" label="镜像">
<div class="bind-selector-row">
<el-input :model-value="volCreateForm.image_id ? `镜像 #${volCreateForm.image_id}${volCreateForm._imageName ? ' - ' + volCreateForm._imageName : ''}` : '未选择'" disabled style="flex: 1" />
<el-button type="primary" @click="volImageSelectorFromCreate = true; volCreateVisible = false; showVolImageSelector = true" style="margin-left: 8px">选择</el-button>
@@ -1495,7 +1495,9 @@ const editSelectedInternalNetworks = ref([])
const showEditInternalNetworkSelector = ref(false)
const handleEditNetworkConfirm = (network) => {
editSelectedNetworks.value = [{ id: network.id, name: network.name }]
if (!editSelectedNetworks.value.some(n => n.id === network.id)) {
editSelectedNetworks.value = [...editSelectedNetworks.value, { id: network.id, name: network.name }]
}
}
const removeEditNetwork = (id) => {
editSelectedNetworks.value = editSelectedNetworks.value.filter(n => n.id !== id)
@@ -1519,7 +1521,7 @@ const handleEditVm = async () => {
})
const bridgeNets = vmNetworks.value.filter(n => n.type === 'bridge')
const natNets = vmNetworks.value.filter(n => n.type === 'nat')
editSelectedNetworks.value = bridgeNets.length ? [{ id: bridgeNets[0].id, name: bridgeNets[0].name }] : []
editSelectedNetworks.value = bridgeNets.map(n => ({ id: n.id, name: n.name }))
editSelectedInternalNetworks.value = natNets.length ? [{ id: natNets[0].id, name: natNets[0].name }] : []
editDialogVisible.value = true
dialogOptionsLoading.value = true
@@ -1571,7 +1573,9 @@ const onRefactorMemUnitChange = () => {
watch(refactorMemDisplay, (v) => { refactorForm.memory = Math.round(v * refactorMemUnit.value) })
const handleRefactorNetworkConfirm = (network) => {
refactorSelectedNetworks.value = [{ id: network.id, name: network.name }]
if (!refactorSelectedNetworks.value.some(n => n.id === network.id)) {
refactorSelectedNetworks.value = [...refactorSelectedNetworks.value, { id: network.id, name: network.name }]
}
}
const removeRefactorNetwork = (id) => {
refactorSelectedNetworks.value = refactorSelectedNetworks.value.filter(n => n.id !== id)
@@ -1597,7 +1601,7 @@ const handleRefactorVm = async () => {
})
const bridgeNets = vmNetworks.value.filter(n => n.type === 'bridge')
const natNets = vmNetworks.value.filter(n => n.type === 'nat')
refactorSelectedNetworks.value = bridgeNets.length ? [{ id: bridgeNets[0].id, name: bridgeNets[0].name }] : []
refactorSelectedNetworks.value = bridgeNets.map(n => ({ id: n.id, name: n.name }))
refactorSelectedInternalNetworks.value = natNets.length ? [{ id: natNets[0].id, name: natNets[0].name }] : []
const mem = d.memory || 0
if (mem >= 1048576 && mem % 1048576 === 0) { refactorMemUnit.value = 1048576; refactorMemDisplay.value = mem / 1048576 }