From be664d7c011a473002c1b413bac8303f7905d160 Mon Sep 17 00:00:00 2001 From: dongyukun <1208714201@qq.com> Date: 星期四, 29 五月 2025 14:26:36 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/views/infra/monitor/components/MonitorMem.vue | 138 ++++++++++++++++++++++++++++++--------------- 1 files changed, 92 insertions(+), 46 deletions(-) diff --git a/src/views/infra/monitor/components/MonitorMem.vue b/src/views/infra/monitor/components/MonitorMem.vue index 768af0e..efd95cd 100644 --- a/src/views/infra/monitor/components/MonitorMem.vue +++ b/src/views/infra/monitor/components/MonitorMem.vue @@ -8,32 +8,35 @@ :inline="true" label-width="68px" > -<!-- <el-form-item label="主机名称" prop="hostName">--> -<!-- <el-input--> -<!-- v-model="queryParams.hostName"--> -<!-- placeholder="请输入主机名称"--> -<!-- clearable--> -<!-- @keyup.enter="handleQuery"--> -<!-- class="!w-120px"--> -<!-- />--> -<!-- </el-form-item>--> + <el-form-item label="主机名称" prop="hostName"> + <el-select v-model="queryParams.hostName" placeholder="请选择" class="!w-180px" @change="getDataList"> + <el-option + v-for="(host, index) in hosts" + :key="index" + :label="host" + :value="host" + /> + </el-select> + </el-form-item> <el-form-item label="服务器IP" prop="hostIp"> - <el-input - v-model="queryParams.hostIp" - placeholder="请输入服务器IP" - clearable - @keyup.enter="handleQuery" - class="!w-120px" - /> + <el-select v-model="queryParams.hostIp" clearable placeholder="请选择" class="!w-160px" @change="getDataList"> + <el-option + v-for="(ip, index) in ips" + :key="index" + :label="ip" + :value="ip" + /> + </el-select> </el-form-item> <el-form-item label="服务名" prop="serverName"> - <el-input - v-model="queryParams.serverName" - placeholder="请输入服务名" - clearable - @keyup.enter="handleQuery" - class="!w-120px" - /> + <el-select v-model="queryParams.serverName" placeholder="请选择" class="!w-160px" @change="getDataList"> + <el-option + v-for="(server, index) in servers" + :key="index" + :label="server" + :value="server" + /> + </el-select> </el-form-item> <el-form-item label="创建时间" prop="createTime"> <el-date-picker @@ -112,13 +115,13 @@ <!-- 列表 --> <ContentWrap v-if="showType == 'data'"> <el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true"> - <el-table-column label="主机名称" align="center" prop="hostName"/> - <el-table-column label="服务器ip" align="center" prop="hostIp"/> + <el-table-column label="主机名称" align="center" prop="hostName" width="160"/> + <el-table-column label="服务器ip" align="center" prop="hostIp" width="150"/> <el-table-column label="服务名" align="center" prop="serverName" width="120"/> <el-table-column label="总内存" align="center" prop="physicalTotal"/> <el-table-column label="已用内存" align="center" prop="physicalUsed"/> <el-table-column label="空闲内存" align="center" prop="physicalFree"/> - <el-table-column label="内存使用率" align="center" prop="physicalUsage" width="100"/> + <el-table-column label="内存使用率" align="center" prop="physicalUsage"/> <el-table-column label="JVM占用内存" align="center" prop="runtimeTotal"/> <el-table-column label="JVM最大内存" align="center" prop="runtimeMax"/> <el-table-column label="JVM可用内存" align="center" prop="runtimeUsed"/> @@ -131,7 +134,7 @@ :formatter="dateFormatter" width="180px" /> - <el-table-column label="操作" align="center"> + <el-table-column label="操作" align="center" width="120"> <template #default="scope"> <el-button link @@ -182,6 +185,9 @@ const loading = ref(true) // 列表的加载中 const list = ref<MonitorMemVO[]>([]) // 列表的数据 +const hosts = ref<String[]>([]) // 主机列表 +const ips = ref<String[]>([]) // ip列表 +const servers = ref<String[]>([]) // 服务列表 const total = ref(0) // 列表的总页数 const queryParams = reactive({ pageNo: 1, @@ -217,19 +223,65 @@ } } +/** 查询所有主机名 */ +const getAllHost = async () => { + const data = await MonitorMemApi.getAllHost() + // 确保 data 存在且非空后,设置默认选中第一个 + if (data.length > 0) { + queryParams.hostName = data[0]; + } + hosts.value = data +} + +/** 查询所有ip */ +const getAllIp = async () => { + const data = await MonitorMemApi.getAllIp() + ips.value = data +} + +/** 查询所有服务名 */ +const getAllServer = async () => { + const data = await MonitorMemApi.getAllServer() + servers.value = data +} + +/** 封装接口调用 */ +const getDataList = async () => { + if(showType.value == 'data') { + await getList() + } else { + dealDate() + await getMonitorMemDataList() + } +} + +/** 处理查询时间段 */ +const dealDate = async () => { + const currentDate = new Date(); + const previousDate = new Date(currentDate); + previousDate.setDate(currentDate.getDate() - 1); + queryParams.createTime = [] + queryParams.createTime[0] = formatDate(previousDate, 'YYYY-MM-DD HH:mm:ss'); + queryParams.createTime[1] = formatDate(currentDate, 'YYYY-MM-DD HH:mm:ss'); +} + /** 搜索按钮操作 */ const handleQuery = () => { queryParams.pageNo = 1 - if(showType.value == 'data') { - getList() - } else { - getMonitorMemDataList() - } + getDataList() } /** 重置按钮操作 */ const resetQuery = () => { queryFormRef.value.resetFields() + if (hosts.value.length > 0) { + queryParams.hostName = hosts.value[0]; + } + if(showType.value != 'data') { + if (servers.value.length > 0) { + queryParams.serverName = servers.value[0]; + } + } handleQuery() } @@ -432,11 +484,10 @@ /** 切换展示方式 */ const switchShow = (type: String) => { showType.value = type - if(showType.value == 'data') { - getList() - } else { - getMonitorMemDataList() + if (queryParams.serverName == null && servers.value.length > 0) { + queryParams.serverName = servers.value[0]; } + getDataList() } /** 导出按钮操作 */ @@ -458,17 +509,12 @@ /** 初始化 **/ onMounted(() => { showType.value = 'data'; - const currentDate = new Date(); - const previousDate = new Date(currentDate); - previousDate.setDate(currentDate.getDate() - 1); - queryParams.createTime[0] = formatDate(previousDate, 'YYYY-MM-DD HH:mm:ss'); - queryParams.createTime[1] = formatDate(currentDate, 'YYYY-MM-DD HH:mm:ss'); + getAllHost(); + getAllIp(); + getAllServer(); + getDataList() intervalId = setInterval(() => { - if(showType.value == 'data') { - getList() - } else { - getMonitorMemDataList() - } + getDataList() }, 60000); }) -- Gitblit v1.9.3