From ea571563e0f0855e63a0a3cc4baf5260bb1c22e1 Mon Sep 17 00:00:00 2001 From: shiran Date: Wed, 13 May 2026 16:27:52 +0800 Subject: [PATCH] =?UTF-8?q?fix(admin):=20=E5=AE=89=E5=85=A8=E7=BB=84?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E5=99=A8=E6=96=B0=E5=A2=9E=E6=88=90=E5=8A=9F?= =?UTF-8?q?=E6=9C=AA=E5=85=B3=E5=BC=B9=E6=A1=86=20+=20=E6=A6=82=E8=A7=88vC?= =?UTF-8?q?PU/=E5=B8=A6=E5=AE=BD=E5=90=88=E5=B9=B6=E5=B8=83=E5=B1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 缘由: 1) UserVmSecurityGroupSelector 中新增安全组成功后,若后端返回码非严格 200 则 showCreate 不会置 false、列表不会刷新、无成功反馈。 2) /user-goods/vm-detail 概览第一行 vCPU、内存、下行带宽、上行带宽 各占一格, 需求要求 vCPU+内存 合并为一格、上行+下行带宽 合并为一格并加编辑按钮。 修改: - UserVmSecurityGroupSelector.vue submitCreate:响应码判断放宽为 200/201/2xx; catch 块提取 e.response.data.message 作更精确的错误信息。 - UserVmDetail.vue config-row 第一行:vCPU/内存 合并为「vCPU / 内存」单格; 带宽合并为「带宽 ↓ / ↑」单格并内嵌修改按钮(handleMoreCmd('updateTraffic')); 原第二行重复的用户名/远程端口 cell 移至第一行,外网IP/内网IP 独占第二行。 预期: - 安全组选择器中新增安全组后弹框关闭、列表刷新、显示成功消息。 - 概览第一行信息密度提升,带宽格可一键触发修改带宽弹框。 测试:admin_dashboard_pc 本地 HMR 通过,无编译/lint 报错。 安全组新增接口联调需在有后端环境下验证实际 response code。 Co-authored-by: Cursor --- .../admin/UserVmSecurityGroupSelector.vue | 14 ++++++++++---- src/views/user-vm/UserVmDetail.vue | 18 ++++++++++++------ 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/src/components/admin/UserVmSecurityGroupSelector.vue b/src/components/admin/UserVmSecurityGroupSelector.vue index 3531671..1d0a062 100644 --- a/src/components/admin/UserVmSecurityGroupSelector.vue +++ b/src/components/admin/UserVmSecurityGroupSelector.vue @@ -124,13 +124,19 @@ const submitCreate = async () => { lock: createForm.lock, drop_all: createForm.drop_all }) - if (res?.data?.code === 200) { + const code = res?.data?.code + if (code === 200 || code === 201 || (code >= 200 && code < 300)) { ElMessage.success('创建成功') showCreate.value = false Object.assign(createForm, { name: '', direction: 'in', lock: false, drop_all: false }) - loadList() - } else ElMessage.error(res?.data?.message || '创建失败') - } catch { ElMessage.error('创建失败') } finally { createLoading.value = false } + await loadList() + } else { + ElMessage.error(res?.data?.message || res?.data?.error || '创建失败') + } + } catch (e) { + const msg = e?.response?.data?.message || e?.response?.data?.error || e?.message || '创建失败' + ElMessage.error(msg) + } finally { createLoading.value = false } } const handleClose = () => { visible.value = false } diff --git a/src/views/user-vm/UserVmDetail.vue b/src/views/user-vm/UserVmDetail.vue index d7124d9..4f9150d 100644 --- a/src/views/user-vm/UserVmDetail.vue +++ b/src/views/user-vm/UserVmDetail.vue @@ -63,14 +63,20 @@
-
vCPU{{ vm.vcpu || '-' }} 核
-
内存{{ formatMemory(vm.memory) }}
-
下行带宽{{ vm.rx_bandwidth || 0 }} Mbps
-
上行带宽{{ vm.tx_bandwidth || 0 }} Mbps
-
-
+
vCPU / 内存{{ vm.vcpu || '-' }} 核 / {{ formatMemory(vm.memory) }}
+
+ 带宽 ↓ / ↑ + + {{ vm.rx_bandwidth || 0 }} / {{ vm.tx_bandwidth || 0 }} Mbps + + 修改 + + +
用户名{{ isWindows ? 'Administrator' : 'root' }}
远程端口{{ isWindows ? (vm.ssh_port && vm.ssh_port !== 22 ? vm.ssh_port : 3389) : (vm.ssh_port || 22) }}
+
+
外网IP