feat(admin/user-vm): 流量上限展示加修改入口、网络tab加删除网络操作
缘由: 1) 虚拟机详情页(UserVmDetail.vue / VmDetail.vue)中"流量上限"原仅展示无修改入口,对应 docs/2026.05.08.12.37-update.json 中 update_traffic 接口已支持 traffic_max + traffic_exhausted_rx/tx_mbps 修改,但用户需从"更多 dropdown"绕一道才能到达。 2) /user-goods/vm-detail 网络管理 tab 缺少"删除网络"操作。 修改: - UserVmDetail.vue:流量上限单元格内追加"修改"小按钮,复用既有 updateTraffic 弹窗(已覆盖 update_traffic 全部新字段,不动接口逻辑);网络表格新增"操作"列+删除按钮,调用 host_service/point/network/delete;row 上若缺 service_id/host_id 用 getUserVmNetworkDetail 反查兜底,仍取不到则提示并阻止;二次确认弹窗明示该操作会影响所有绑定该网络的虚拟机。 - VmDetail.vue:流量上限单元格内追加"修改"小按钮,复用 handleUpdateTraffic(host_service/point/vm/update_traffic)。 预期: - 详情页用户在"流量上限"位置可一键进入修改弹窗,无需走 dropdown。 - vm-detail 网络tab 表格每行可触发"删除网络"流程,含强提示与兜底取值。 - 不引入新依赖;trafficVisible 弹窗保持向 docs 字段对齐;UI 微调仅限新增样式 .cfg-edit-btn 与一列操作列。 未测试:未在 admin_dashboard_pc 本地 dev 验证(终端仅运行 user_dashboard_pc),需联调 update_traffic 与 point/network/delete 实际返回。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -222,7 +222,12 @@
|
||||
<div class="config-row">
|
||||
<div class="config-cell">
|
||||
<span class="config-label">流量上限</span>
|
||||
<span class="config-value">{{ formatTrafficMax(detail.traffic_max) }}</span>
|
||||
<span class="config-value">
|
||||
{{ formatTrafficMax(detail.traffic_max) }}
|
||||
<el-button link type="primary" size="small" class="cfg-edit-btn" @click="handleUpdateTraffic" :disabled="isMigrating">
|
||||
<el-icon :size="14"><Edit /></el-icon>修改
|
||||
</el-button>
|
||||
</span>
|
||||
</div>
|
||||
<div class="config-cell">
|
||||
<span class="config-label">快照配额</span>
|
||||
@@ -1564,7 +1569,7 @@
|
||||
import { ref, reactive, computed, onMounted, onActivated, onDeactivated, onBeforeUnmount, nextTick, watch } from 'vue'
|
||||
import { useRoute, useRouter } from 'vue-router'
|
||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||
import { ArrowLeft, Refresh, ArrowDown, Plus, Search, WarningFilled, Loading } from '@element-plus/icons-vue'
|
||||
import { ArrowLeft, Refresh, ArrowDown, Plus, Search, WarningFilled, Loading, Edit } from '@element-plus/icons-vue'
|
||||
import {
|
||||
getVmDetail, getVmStatus,
|
||||
startVm, stopVm, rebootVm, suspendVm, resumeVm,
|
||||
@@ -3692,6 +3697,8 @@ onMounted(() => { isPageActive = true; initPage() })
|
||||
.config-cell:last-child { border-right: none; }
|
||||
.config-label { font-size: 12px; color: #86909c; line-height: 1; }
|
||||
.config-value { font-size: 14px; color: #1d2129; line-height: 1.4; word-break: break-all; }
|
||||
.cfg-edit-btn { margin-left: 8px; padding: 0 4px; height: 18px; vertical-align: middle; }
|
||||
.cfg-edit-btn .el-icon { margin-right: 2px; vertical-align: -2px; }
|
||||
.spec-value { font-size: 13px; color: #4e5969; }
|
||||
.ip-value { color: #165dff; font-weight: 500; }
|
||||
.password-cell { display: flex; align-items: center; gap: 8px; }
|
||||
|
||||
Reference in New Issue
Block a user