monos.vue 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. <template>
  2. <el-main>
  3. <el-card>
  4. <template #header>Group任务池配置<el-button type="primary" @click="mono_detail">任务列表</el-button></template>
  5. <el-form>
  6. <el-row :gutter="15">
  7. <el-col :span="8">
  8. <el-form-item label="最大组任务数:">{{ XEUtils.get(defaultGroups, "configs.maxGroupQueues") }}</el-form-item>
  9. </el-col>
  10. <el-col :span="8">
  11. <el-form-item label="队列最大任务数:">{{ XEUtils.get(defaultGroups, "configs.maxQueueLimit") }}</el-form-item>
  12. </el-col>
  13. <el-col :span="8">
  14. <el-form-item label="最大并发队列数:">{{ XEUtils.get(defaultGroups, "configs.maxQueues") }}</el-form-item>
  15. </el-col>
  16. <el-col :span="8">
  17. <el-form-item label="队列任务间隔(秒):">{{ XEUtils.get(defaultGroups, "configs.taskIntervalSeconds") }}</el-form-item>
  18. </el-col>
  19. <el-col :span="8">
  20. <el-form-item label="重试任务间隔(秒):">{{ XEUtils.get(defaultGroups, "configs.taskRetryInterval") }}</el-form-item>
  21. </el-col>
  22. <el-col :span="8">
  23. <el-form-item label="任务最大重试次数(秒):">{{ XEUtils.get(defaultGroups, "configs.taskRetryTimes") }}</el-form-item>
  24. </el-col>
  25. <el-col :span="8">
  26. <el-form-item label="任务最大等待时间(秒):">{{ XEUtils.get(defaultGroups, "configs.taskWaitSeconds") }}</el-form-item>
  27. </el-col>
  28. </el-row>
  29. </el-form>
  30. </el-card>
  31. <el-card>
  32. <el-form>
  33. <el-form-item label="workers忙碌数量:">0</el-form-item>
  34. <el-form-item label="workers空闲数量:">50</el-form-item>
  35. <el-form-item label="Groups忙碌数量:">0</el-form-item>
  36. <el-form-item label="Groups队列数量:">0</el-form-item>
  37. <el-form-item label="mono总数:">0</el-form-item>
  38. </el-form>
  39. </el-card>
  40. <div class="echart-bar">
  41. <sc-echarts :option="option" @chartClick="chart_click"></sc-echarts>
  42. </div>
  43. </el-main>
  44. <mono-detail v-if="dialog" ref="monoRef" @closed="dialog = false"></mono-detail>
  45. </template>
  46. <script setup>
  47. import XEUtils from "xe-utils"
  48. import { defaultGroups } from "../../main";
  49. import monoDetail from "../mono/index"
  50. const $emit = defineEmits(["closed"]);
  51. const option = ref({
  52. grid: { left: "5%", right: "10%", bottom: 60 },
  53. dataZoom: [
  54. { type: "inside", endValue: 15, zoomLock: true }, {
  55. type: "slider",
  56. showDetail: false,
  57. moveHandleIcon: "none", // 移动手柄
  58. moveHandleStyle: { opacity: 0 }
  59. }],
  60. xAxis: {
  61. name: "workers",
  62. nameTextStyle: { fontSize: 14, color: "#606266" },
  63. axisLabel: { color: '#5d5d5d', rotate: -30 },
  64. data: XEUtils.keys(XEUtils.get(defaultGroups, "workers"))
  65. },
  66. yAxis: {
  67. name: "mono",
  68. type: "value",
  69. min: 0,
  70. max: XEUtils.max([8, 5]),
  71. nameTextStyle: { fontSize: 14, color: "#606266" },
  72. minInterval: 1,
  73. axisLabel: { color: '#5d5d5d' },
  74. axisLine: { show: true, lineStyle: { color: "#d3d2d3" } },
  75. splitLine: { show: false }
  76. },
  77. series: [{
  78. type: "bar",
  79. data: [8, 5],
  80. animationDuration: 2500,
  81. animationDurationUpdate: 2500
  82. }]
  83. })
  84. const dialog = ref(false);
  85. const monoRef = ref();
  86. const chart_click = ({ name }) => {
  87. dialog.value = true;
  88. nextTick(() => monoRef.value.open(XEUtils.get(defaultGroups, `groups.${name}.monos`)));
  89. }
  90. const mono_detail = () => {
  91. dialog.value = true;
  92. nextTick(() => monoRef.value.open());
  93. }
  94. </script>
  95. <style lang="scss" scoped>
  96. .el-main {padding: 0 12px 12px;background: #fff;}
  97. .el-card :deep(.el-card__header) {display: flex;justify-content: space-between;align-items: center;padding-left: 20px;background: #f9fdff;font-weight: 700;}
  98. .el-card :deep(.el-card__body) {padding: 10px var(--el-card-padding);}
  99. .el-card + .el-card {margin-top: 10px;}
  100. .el-form .el-form-item {margin-bottom: 0;}
  101. .el-form :deep(.el-form-item__content) {font: 22px calculator-all;color: #1890ff;letter-spacing: 2px;}
  102. .el-card + .el-card .el-form {display: flex;justify-content: space-evenly;}
  103. .echart-bar {width: 100%;height: 400px;}
  104. </style>