瀏覽代碼

fix: 优化BUG

zhangwenya 8 月之前
父節點
當前提交
c47f8d7ce4

+ 7 - 0
src/api/risk/r5.js

@@ -56,3 +56,10 @@ export function listHostTrend(id){
         method: 'get',
     })
 }
+
+export function listMs(){
+    return request({
+        url: '/risk/model/ms/list/',
+        method: 'get',
+    })
+}

+ 6 - 0
src/views/index/css/style.scss

@@ -497,11 +497,17 @@
 
           .r-obj-name {
             font-size: 14px;
+            width: 107px;
+            height: 20px;
+            overflow: hidden;
+            white-space: nowrap;
+            text-overflow: ellipsis;
           }
 
           .r-obj-metrics-name {
             font-size: 12px;
             color: #9FB9E7;
+            width: 107px;
             margin-top: 5px;
           }
 

+ 51 - 14
src/views/ms/mstpl/component/indicatorManger.vue

@@ -24,7 +24,7 @@
             <span v-if="editRow.indexOf(scope.row.metricsId) === -1">
               {{ scope.row.alarmLow }}
             </span>
-            <el-input v-model="scope.row.alarmLow" v-else size="small" />
+            <el-input v-model="scope.row.alarmLow" v-else size="small" @change="checkInput"/>
           </template>
         </el-table-column>
         <el-table-column label="告警-中" align="center" width="80">
@@ -32,7 +32,7 @@
             <span v-if="editRow.indexOf(scope.row.metricsId) === -1">
               {{ scope.row.alarmMid }}
             </span>
-            <el-input v-model="scope.row.alarmMid" v-else size="small"/>
+            <el-input v-model="scope.row.alarmMid" v-else size="small" @change="checkInput"/>
           </template>
         </el-table-column>
         <el-table-column label="告警-高" align="center" width="80">
@@ -40,7 +40,7 @@
             <span v-if="editRow.indexOf(scope.row.metricsId) === -1">
               {{ scope.row.alarmHigh }}
             </span>
-            <el-input v-model="scope.row.alarmHigh" v-else size="small"/>
+            <el-input v-model="scope.row.alarmHigh" v-else size="small" @change="checkInput"/>
           </template>
         </el-table-column>
         <el-table-column label="健康事件" align="center" width="80">
@@ -48,12 +48,13 @@
             <span v-if="editRow.indexOf(scope.row.metricsId) === -1">
               {{ scope.row.event }}
             </span>
-            <el-input v-model="scope.row.event" v-else size="small"/>
+            <el-input v-model="scope.row.event" v-else size="small" @change="checkInput"/>
           </template>
         </el-table-column>
         <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="180">
           <template #default="scope">
-            <el-button link type="primary" icon="Edit" @click="handleEdit(scope.row)" v-if="editRow.indexOf(scope.row.metricsId) === -1">
+            <el-button link type="primary" icon="Edit" @click="handleEdit(scope.row)"
+                       v-if="editRow.indexOf(scope.row.metricsId) === -1">
               修改
             </el-button>
             <el-button link type="primary" icon="Check" @click="handleUpdate(scope.row)" v-else>保存</el-button>
@@ -78,7 +79,7 @@
   <!-- 添加或修改指标模板对话框 -->
   <el-dialog title="新增指标" v-model="open" width="1100" append-to-body>
     <div>
-      <el-form :model="adParams" ref="queryRef" :inline="true" label-width="0"  @submit.native.prevent>
+      <el-form :model="adParams" ref="queryRef" :inline="true" label-width="0" @submit.native.prevent>
         <el-form-item label="" prop="metricsName" style="margin-right:10px">
           <el-input
               v-model="adParams.metricsName"
@@ -125,7 +126,7 @@
 
 </template>
 <script setup lang="ts">
-import {addDetailByTplId, listDetail, selectDetails, updateDetail,delDetail} from "@/api/metrics/detail";
+import {addDetailByTplId, delDetail, listDetail, selectDetails, updateDetail} from "@/api/metrics/detail";
 
 const {proxy, emit} = getCurrentInstance();
 
@@ -137,7 +138,41 @@ const open = ref(false);
 const addListData = ref([]);
 const ids = ref([]);
 const total = ref(0);
-const adTotal=ref(0);
+const adTotal = ref(0);
+const passValidate = ref(true)
+
+const checkInput = (range) => {
+  passValidate.value = validateRange(range)
+  if (!passValidate.value) {
+    proxy.$message.error("请输入正确的区间格式!")
+  }
+}
+const validateRange = (range) => {
+  // 正则表达式匹配各种区间的格式
+  const regex = /^(\[|\()\s*([0-9]+(\.[0-9]+)?|)\s*,\s*([0-9]+(\.[0-9]+)?|)\s*(\]|\))$/;
+  const match = range.match(regex);
+
+  if (!match) {
+    return false; // 如果格式不正确,则返回false
+  }
+
+  // 提取括号类型和两个数值
+  const openBracket = match[1];// 开始的括号
+  const num1Str = match[2]; // 第一个数
+  const num2Str = match[4]; // 第二个数
+  const closeBracket = match[7]; // 结束的括号
+
+  let num1 = num1Str ? parseFloat(num1Str) : -Infinity;
+  let num2 = num2Str ? parseFloat(num2Str) : Infinity;
+
+  // 检查区间的有效性
+  if (openBracket === '[' && num1 > num2) return false; // [x,y] 要求 x <= y
+  if (openBracket === '(' && num1 >= num2) return false; // (x,y) 要求 x < y
+  if (closeBracket === ']' && num1 > num2) return false; // (x,y] 要求 x < y
+  if (closeBracket === ')' && num1 >= num2) return false; // [x,y) 要求 x < y
+
+  return true;
+}
 
 const adParams = reactive({
   pageNum: 1,
@@ -146,22 +181,23 @@ const adParams = reactive({
 });
 
 const queryParams = reactive({
-    pageNum: 1,
-    pageSize: 10,
-    tplId: 0
+  pageNum: 1,
+  pageSize: 10,
+  tplId: 0
 });
 
 // 选择指标
 const getSelectDetails = (tplId: number) => {
   loading.value = true;
   editRow.value = [];
-  if(tplId){
+  if (tplId) {
     rowTplId.value = tplId;
     queryParams.tplId = tplId
   }
   listDetail(queryParams).then((response) => {
     listData.value = response.rows
-    total.value = response.total;
+    passValidate.value = true
+    total.value = response.total
   });
   loading.value = false;
 }
@@ -200,6 +236,7 @@ const handleDelete = (row) => {
 
 // 更新
 const handleUpdate = (row) => {
+  if(!passValidate.value) return proxy.$message.error("区间无效,请检查")
   updateDetail({...row}).then(res => {
     proxy.$modal.msgSuccess("修改成功");
     editRow.value = editRow.value.filter(p => p !== row.metricsId)
@@ -215,7 +252,7 @@ const handleAdd = () => {
 }
 
 const getSelectData = () => {
-  selectDetails(rowTplId.value,adParams).then(res => {
+  selectDetails(rowTplId.value, adParams).then(res => {
     addListData.value = res.rows
     adTotal.value = res.total
   })

+ 1 - 0
src/views/ms/mstpl/index.vue

@@ -219,6 +219,7 @@ function handleUpdate(row) {
   reset();
   const _tplId = row.tplId || ids.value
   getTpl(_tplId).then(response => {
+    dialogType.value = "add"
     form.value = response.data;
     open.value = true;
     title.value = "修改指标模板";

+ 5 - 5
src/views/risk/r6/components/indexMapping.vue

@@ -1,6 +1,6 @@
 <template>
-  <el-button type="primary" size="small" @click="addIndex">新增指标</el-button>
-  <el-table :data="configData" border stripe style="width: 100%;margin-top:10px;" size="small">
+<!--  <el-button type="primary" size="small" @click="addIndex">新增指标</el-button>-->
+  <el-table :data="configData" border stripe style="width: 100%;" size="small">
     <el-table-column label="显示名称">
       <template #default="scope">
         {{ scope.row.viewName }}
@@ -41,7 +41,7 @@
   </el-dialog>
 </template>
 <script setup lang="ts">
-import {listConfig} from "@/api/risk/r5"
+import {listMs} from "@/api/risk/r5"
 import {delConfig, updateConfig,addConfig} from "@/api/risk/config"
 
 const {proxy} = getCurrentInstance()
@@ -68,8 +68,8 @@ const form = ref({
 })
 
 onMounted(async () => {
-  const res = await listConfig({configType: "host", pageNum: 1, pageSize: 20})
-  mappingData.value = res.rows
+  const res = await listMs()
+  mappingData.value = res.data
 })
 
 function addIndex() {