index.vue 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. <template>
  2. <div class="p-4">
  3. <a-card :bordered="false" style="height: 100%">
  4. <a-tabs v-model:activeKey="activeKey" @change="tabChange">
  5. <a-tab-pane key="1" tab="服务器信息"></a-tab-pane>
  6. <a-tab-pane key="2" tab="JVM信息" force-render></a-tab-pane>
  7. <!-- <a-tab-pane key="3" tab="Tomcat信息"></a-tab-pane> -->
  8. <a-tab-pane key="6" tab="Undertow信息"></a-tab-pane>
  9. <a-tab-pane key="4" tab="磁盘监控">
  10. <DiskInfo v-if="activeKey == 4" style="height: 100%"></DiskInfo>
  11. </a-tab-pane>
  12. <a-tab-pane key="5" tab="内存信息" />
  13. </a-tabs>
  14. <!-- update-begin---author:wangshuai ---date: 20230829 for:性能监控切换到磁盘监控再切回来报错列为空,不能用if判断------------>
  15. <BasicTable @register="registerTable" :searchInfo="searchInfo" :dataSource="dataSource" v-show="activeKey != 4">
  16. <!-- update-end---author:wangshuai ---date: 20230829 for:性能监控切换到磁盘监控再切回来报错列为空,不能用if判断------------>
  17. <template #tableTitle>
  18. <div slot="message"
  19. >上次更新时间:{{ lastUpdateTime }}
  20. <a-divider type="vertical" />
  21. <a @click="handleUpdate">立即更新</a></div
  22. >
  23. </template>
  24. <template #param="{ record, text }">
  25. <a-tag :color="textInfo[record.param].color">{{ text }}</a-tag>
  26. </template>
  27. <template #text="{ record }">
  28. {{ textInfo[record.param].text }}
  29. </template>
  30. <template #value="{ record, text }"> {{ text }} {{ textInfo[record.param].unit }} </template>
  31. </BasicTable>
  32. </a-card>
  33. </div>
  34. </template>
  35. <script lang="ts" name="monitor-server" setup>
  36. import { onMounted, ref, unref } from 'vue';
  37. import { BasicTable, useTable, TableAction } from '/@/components/Table';
  38. import DiskInfo from '../disk/DiskInfo.vue';
  39. import { getServerInfo, getTextInfo, getMoreInfo } from './server.api';
  40. import { columns } from './server.data';
  41. import { useMessage } from '/@/hooks/web/useMessage';
  42. import dayjs from 'dayjs';
  43. const dataSource = ref([]);
  44. const activeKey = ref('1');
  45. const moreInfo = ref({});
  46. const lastUpdateTime = ref({});
  47. let textInfo = ref({});
  48. const { createMessage } = useMessage();
  49. const checkedKeys = ref<Array<string | number>>([]);
  50. const searchInfo = { logType: '1' };
  51. const [registerTable, { reload }] = useTable({
  52. columns,
  53. showIndexColumn: false,
  54. bordered: true,
  55. pagination: false,
  56. tableSetting: { fullScreen: true },
  57. rowKey: 'id',
  58. });
  59. //tab切换
  60. function tabChange(key) {
  61. if (key != 4) {
  62. getInfoList(key);
  63. }
  64. }
  65. //加载信息
  66. function getInfoList(infoType) {
  67. lastUpdateTime.value = dayjs().format('YYYY年MM月DD日 HH时mm分ss秒');
  68. getServerInfo(infoType).then((res) => {
  69. textInfo.value = getTextInfo(infoType);
  70. moreInfo.value = getMoreInfo(infoType);
  71. let info = [];
  72. if (infoType === '5') {
  73. for (let param in res[0].result) {
  74. let data = res[0].result[param];
  75. let val = convert(data, unref(textInfo)[param].valueType);
  76. info.push({ id: param, param, text: 'false value', value: val });
  77. }
  78. } else {
  79. res.forEach((value, id) => {
  80. let more = unref(moreInfo)[value.name];
  81. if (!(more instanceof Array)) {
  82. more = [''];
  83. }
  84. more.forEach((item, idx) => {
  85. let param = value.name + item;
  86. let val = convert(value.measurements[idx].value, unref(textInfo)[param].valueType);
  87. info.push({ id: param + id, param, text: 'false value', value: val });
  88. });
  89. });
  90. }
  91. dataSource.value = info;
  92. });
  93. }
  94. function handleUpdate() {
  95. getInfoList(activeKey.value);
  96. }
  97. //单位转换
  98. function convert(value, type) {
  99. if (type === 'Number') {
  100. return Number(value * 100).toFixed(2);
  101. } else if (type === 'Date') {
  102. return dayjs(value * 1000).format('YYYY-MM-DD HH:mm:ss');
  103. } else if (type === 'RAM') {
  104. return Number(value / 1048576).toFixed(3);
  105. }
  106. return value;
  107. }
  108. onMounted(() => {
  109. getInfoList(activeKey.value);
  110. });
  111. </script>