diff --git a/src/views/user-vm/UserVmDetail.vue b/src/views/user-vm/UserVmDetail.vue
index 3c351e9..086f220 100644
--- a/src/views/user-vm/UserVmDetail.vue
+++ b/src/views/user-vm/UserVmDetail.vue
@@ -344,7 +344,7 @@
设为主IP
- 删除
+ 解绑
@@ -1807,21 +1807,27 @@ const resolveNetworkServiceHost = async (row) => {
}
const handleDeleteVmNetwork = (row) => {
ElMessageBox.confirm(
- `将删除底层网络「${row.name}」(ID:${row.id}),该操作会影响所有绑定该网络的虚拟机,是否继续?`,
- '删除网络',
- { confirmButtonText: '确定删除', cancelButtonText: '取消', type: 'warning' }
+ `确定从该虚拟机解绑网络「${row.name}」(ID:${row.id}) 吗?`,
+ '解绑网络',
+ { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }
).then(async () => {
deletingNetworkId.value = row.id
try {
- const { serviceId, hostId } = await resolveNetworkServiceHost(row)
- if (!serviceId) { ElMessage.error('无法获取该网络所属服务ID,删除失败'); return }
- const params = { service_id: serviceId, network_id: row.id }
- if (hostId) params.host_id = hostId
- const res = await deletePointNetwork(params)
- if (res?.data?.code === 200) { ElMessage.success('删除成功'); loadDetail() }
- else ElMessage.error(extractApiError(res?.data, '删除失败'))
+ const payload = { user_goods_id: userGoodsId.value }
+ const remainingNetworks = vmNetworks.value.filter(n => n.id !== row.id)
+ const bridgeIds = remainingNetworks.filter(n => n.type === 'bridge').map(n => n.id)
+ const natNet = remainingNetworks.find(n => n.type === 'nat')
+ payload.network_ids = bridgeIds
+ if (natNet) payload.internet_network_id = natNet.id
+ if (vm.value?.rx_bandwidth) payload.rx_bandwidth = vm.value.rx_bandwidth
+ if (vm.value?.tx_bandwidth) payload.tx_bandwidth = vm.value.tx_bandwidth
+ if (vm.value?.ssh_port) payload.ssh_port = vm.value.ssh_port
+ if (inPortGroup.value?.id) payload.port_group_id = inPortGroup.value.id
+ const res = await updateUserVm(payload)
+ if (res?.data?.code === 200) { ElMessage.success('解绑网络成功'); loadDetail() }
+ else ElMessage.error(extractApiError(res?.data, '解绑网络失败'))
} catch (e) {
- ElMessage.error(extractApiError(e?.response?.data, '删除失败'))
+ ElMessage.error(extractApiError(e?.response?.data, '解绑网络失败'))
} finally {
deletingNetworkId.value = 0
}
diff --git a/src/views/user/UserDetail.vue b/src/views/user/UserDetail.vue
index f20c9df..efdd312 100644
--- a/src/views/user/UserDetail.vue
+++ b/src/views/user/UserDetail.vue
@@ -257,7 +257,11 @@
-
+
+
+ {{ row.id }}
+
+
{{ row.good?.name || '-' }}
@@ -280,6 +284,11 @@
{{ formatDate(row.CreatedAt) }}
+
+
+ 详情
+
+