فهرست منبع

优化和修复BUG

zhangwenya 1 سال پیش
والد
کامیت
b1434b91e8

+ 29 - 0
src/api/alarm/record.js

@@ -42,3 +42,32 @@ export function delRecord(alarmId) {
         method: 'delete'
     })
 }
+
+
+// 业务类型统计
+export function getBizType(query) {
+    return request({
+        url: "/alarm/record/list/bizType",
+        method: 'get',
+        params: query
+    })
+}
+
+// 应用组件统计
+export function getBizSort(query) {
+    return request({
+        url: "/alarm/record/list/bizSort",
+        method: 'get',
+        params: query
+    })
+}
+
+// 系统压力排名
+export function getBizAccess(query) {
+    return request({
+        url: "/alarm/record/list/bizAccess",
+        method: 'get',
+        params: query
+    })
+}
+

+ 3 - 2
src/api/metrics/detail.js

@@ -44,10 +44,11 @@ export function delDetail(tplDetailId) {
 }
 
 //选择指标
-export function selectDetails(tplId) {
+export function selectDetails(tplId,query) {
     return request({
         url: `/metrics/detail/select/${tplId}`,
-        method: 'get'
+        method: 'get',
+        params: query
     })
 }
 

+ 21 - 240
src/views/alarm/record/bizAccess.vue

@@ -1,33 +1,7 @@
 <template>
 <div class="app-container">
-    <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="告警对象" prop="objId">
-        <el-input
-            v-model="queryParams.objId"
-            placeholder="请输入告警对象"
-            clearable
-            @keyup.enter="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="告警指标" prop="objMetricsId">
-        <el-input
-            v-model="queryParams.objMetricsId"
-            placeholder="请输入告警指标"
-            clearable
-            @keyup.enter="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="告警级别" prop="alarmLevel">
-        <el-select v-model="queryParams.alarmLevel" placeholder="请选择告警级别" clearable>
-          <el-option
-              v-for="dict in alarm_level"
-              :key="dict.value"
-              :label="dict.label"
-              :value="dict.value"
-          />
-        </el-select>
-      </el-form-item>
-      <el-form-item label="告警时间" style="width: 308px">
+    <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="0">
+      <el-form-item label="" style="width: 308px;margin-right:10px">
         <el-date-picker
             v-model="daterangeAlarmTime"
             value-format="YYYY-MM-DD"
@@ -43,74 +17,16 @@
       </el-form-item>
     </el-form>
 
-    <el-row :gutter="10" class="mb8">
-      <el-col :span="1.5">
-        <el-button
-            type="primary"
-            plain
-            icon="Plus"
-            @click="handleAdd"
-            v-hasPermi="['alarm:record:add']"
-        >新增
-        </el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-            type="success"
-            plain
-            icon="Edit"
-            :disabled="single"
-            @click="handleUpdate"
-            v-hasPermi="['alarm:record:edit']"
-        >修改
-        </el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-            type="danger"
-            plain
-            icon="Delete"
-            :disabled="multiple"
-            @click="handleDelete"
-            v-hasPermi="['alarm:record:remove']"
-        >删除
-        </el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-            type="warning"
-            plain
-            icon="Download"
-            @click="handleExport"
-            v-hasPermi="['alarm:record:export']"
-        >导出
-        </el-button>
-      </el-col>
-      <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
-    </el-row>
-
-    <el-table v-loading="loading" :data="recordList" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center"/>
-      <el-table-column label="告警ID" align="center" prop="alarmId"/>
-      <el-table-column label="告警对象" align="center" prop="bizobj.objName"/>
-      <el-table-column label="告警指标" align="center" prop="bizObjMetrics.metricsName"/>
-      <el-table-column label="告警级别" align="center" prop="alarmLevel">
+    <el-table v-loading="loading" :data="recordList" border>
+      <el-table-column label="告警ID" align="center" prop="modelId" width="80"/>
+      <el-table-column label="业务模型" align="center" prop="modelName"/>
+      <el-table-column label="最近1小时系统压力值" align="center" prop="access"/>
+      <el-table-column label="告警数量" align="center" prop="num" />
+      <el-table-column label="操作" align="center" prop="alarmTime" width="180">
         <template #default="scope">
-          <dict-tag :options="alarm_level" :value="scope.row.alarmLevel"/>
+          <el-button type="text" plain icon="Position" @click="handleDetails(scope.row)">明细</el-button>
         </template>
       </el-table-column>
-      <el-table-column label="告警值" align="center" prop="alarmValue" :formatter="rounding"/>
-      <el-table-column label="告警时间" align="center" prop="alarmTime" width="180">
-        <template #default="scope">
-          <span>{{ parseTime(scope.row.alarmTime, '{y}-{m}-{d} {h}:{mi}:{s}') }}</span>
-        </template>
-      </el-table-column>
-      <!--      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">-->
-      <!--        <template #default="scope">-->
-      <!--          <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['alarm:record:edit']">修改</el-button>-->
-      <!--          <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['alarm:record:remove']">删除</el-button>-->
-      <!--        </template>-->
-      <!--      </el-table-column>-->
     </el-table>
 
     <pagination
@@ -120,53 +36,12 @@
         v-model:limit="queryParams.pageSize"
         @pagination="getList"
     />
-
-    <!-- 添加或修改告警记录对话框 -->
-    <el-dialog :title="title" v-model="open" width="500px" append-to-body>
-      <el-form ref="recordRef" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="告警对象;" prop="objId">
-          <el-input v-model="form.objId" placeholder="请输入告警对象"/>
-        </el-form-item>
-        <el-form-item label="告警指标" prop="objMetricsId">
-          <el-input v-model="form.objMetricsId" placeholder="请输入告警指标"/>
-        </el-form-item>
-        <el-form-item label="告警级别" prop="alarmLevel">
-          <el-select v-model="form.alarmLevel" placeholder="请选择告警级别">
-            <el-option
-                v-for="dict in alarm_level"
-                :key="dict.value"
-                :label="dict.label"
-                :value="dict.value"
-            ></el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="告警值" prop="alarmValue">
-          <el-input v-model="form.alarmValue" placeholder="请输入告警值"/>
-        </el-form-item>
-        <el-form-item label="告警时间" prop="alarmTime">
-          <el-date-picker clearable
-                          v-model="form.alarmTime"
-                          type="date"
-                          value-format="YYYY-MM-DD"
-                          placeholder="请选择告警时间">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="备注" prop="remark">
-          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容"/>
-        </el-form-item>
-      </el-form>
-      <template #footer>
-        <div class="dialog-footer">
-          <el-button type="primary" @click="submitForm">确 定</el-button>
-          <el-button @click="cancel">取 消</el-button>
-        </div>
-      </template>
-    </el-dialog>
   </div>
 </template>
 
 <script setup name="Record">
-import {addRecord, delRecord, getRecord, listRecord, updateRecord} from "@/api/alarm/record";
+import {getBizAccess} from "@/api/alarm/record";
+import {useRouter} from "vue-router";
 
 const {proxy} = getCurrentInstance();
 const {alarm_level} = proxy.useDict('alarm_level');
@@ -181,61 +56,37 @@ const multiple = ref(true);
 const total = ref(0);
 const title = ref("");
 const daterangeAlarmTime = ref([]);
+const router = useRouter();
 
 const data = reactive({
   form: {},
   queryParams: {
     pageNum: 1,
-    pageSize: 10,
-    objId: null,
-    objMetricsId: null,
-    alarmLevel: null,
-    alarmTime: null,
+    pageSize: 20,
   },
-  rules: {}
 });
 
-const {queryParams, form, rules} = toRefs(data);
+function handleDetails(row){
+  console.log(row,router)
+}
+
+const {queryParams, form} = toRefs(data);
 
 /** 查询告警记录列表 */
 function getList() {
   loading.value = true;
   queryParams.value.params = {};
   if (null != daterangeAlarmTime && '' != daterangeAlarmTime) {
-    queryParams.value.params["beginAlarmTime"] = daterangeAlarmTime.value[0];
-    queryParams.value.params["endAlarmTime"] = daterangeAlarmTime.value[1];
+    queryParams.value.params["start"] = daterangeAlarmTime.value[0];
+    queryParams.value.params["end"] = daterangeAlarmTime.value[1];
   }
-  listRecord(queryParams.value).then(response => {
+  getBizAccess(queryParams.value).then(response => {
     recordList.value = response.rows;
     total.value = response.total;
     loading.value = false;
   });
 }
 
-// 取消按钮
-function cancel() {
-  open.value = false;
-  reset();
-}
-
-// 表单重置
-function reset() {
-  form.value = {
-    alarmId: null,
-    objId: null,
-    objMetricsId: null,
-    alarmType: null,
-    alarmLevel: null,
-    alarmValue: null,
-    alarmTime: null,
-    createBy: null,
-    createTime: null,
-    updateBy: null,
-    updateTime: null,
-    remark: null
-  };
-  proxy.resetForm("recordRef");
-}
 
 /** 搜索按钮操作 */
 function handleQuery() {
@@ -250,75 +101,5 @@ function resetQuery() {
   handleQuery();
 }
 
-// 多选框选中数据
-function handleSelectionChange(selection) {
-  ids.value = selection.map(item => item.alarmId);
-  single.value = selection.length != 1;
-  multiple.value = !selection.length;
-}
-
-/** 新增按钮操作 */
-function handleAdd() {
-  reset();
-  open.value = true;
-  title.value = "添加告警记录";
-}
-
-/** 修改按钮操作 */
-function handleUpdate(row) {
-  reset();
-  const _alarmId = row.alarmId || ids.value
-  getRecord(_alarmId).then(response => {
-    form.value = response.data;
-    open.value = true;
-    title.value = "修改告警记录";
-  });
-}
-
-/** 提交按钮 */
-function submitForm() {
-  proxy.$refs["recordRef"].validate(valid => {
-    if (valid) {
-      if (form.value.alarmId != null) {
-        updateRecord(form.value).then(response => {
-          proxy.$modal.msgSuccess("修改成功");
-          open.value = false;
-          getList();
-        });
-      } else {
-        addRecord(form.value).then(response => {
-          proxy.$modal.msgSuccess("新增成功");
-          open.value = false;
-          getList();
-        });
-      }
-    }
-  });
-}
-
-/** 删除按钮操作 */
-function handleDelete(row) {
-  const _alarmIds = row.alarmId || ids.value;
-  proxy.$modal.confirm('是否确认删除告警记录编号为"' + _alarmIds + '"的数据项?').then(function () {
-    return delRecord(_alarmIds);
-  }).then(() => {
-    getList();
-    proxy.$modal.msgSuccess("删除成功");
-  }).catch(() => {
-  });
-}
-
-/** 导出按钮操作 */
-function handleExport() {
-  proxy.download('alarm/record/export', {
-    ...queryParams.value
-  }, `record_${new Date().getTime()}.xlsx`)
-}
-
-/** 保留2位小数*/
-function rounding(row, column) {
-  return parseFloat(row[column.property]).toFixed(2)
-}
-
 getList();
 </script>

+ 31 - 244
src/views/alarm/record/bizSort.vue

@@ -1,33 +1,7 @@
 <template>
 <div class="app-container">
-    <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="告警对象" prop="objId">
-        <el-input
-            v-model="queryParams.objId"
-            placeholder="请输入告警对象"
-            clearable
-            @keyup.enter="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="告警指标" prop="objMetricsId">
-        <el-input
-            v-model="queryParams.objMetricsId"
-            placeholder="请输入告警指标"
-            clearable
-            @keyup.enter="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="告警级别" prop="alarmLevel">
-        <el-select v-model="queryParams.alarmLevel" placeholder="请选择告警级别" clearable>
-          <el-option
-              v-for="dict in alarm_level"
-              :key="dict.value"
-              :label="dict.label"
-              :value="dict.value"
-          />
-        </el-select>
-      </el-form-item>
-      <el-form-item label="告警时间" style="width: 308px">
+    <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="0">
+      <el-form-item label="" style="width: 308px;margin-right:10px">
         <el-date-picker
             v-model="daterangeAlarmTime"
             value-format="YYYY-MM-DD"
@@ -37,80 +11,31 @@
             end-placeholder="结束日期"
         ></el-date-picker>
       </el-form-item>
+      <el-form-item label="" style="width: 208px;margin-right:10px">
+        <el-select v-model="queryParams.objType" placeholder="请选择业务类型" clearable style="width: 100%">
+          <el-option
+              v-for="dict in biz_type"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+          ></el-option>
+        </el-select>
+      </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
         <el-button icon="Refresh" @click="resetQuery">重置</el-button>
       </el-form-item>
     </el-form>
 
-    <el-row :gutter="10" class="mb8">
-      <el-col :span="1.5">
-        <el-button
-            type="primary"
-            plain
-            icon="Plus"
-            @click="handleAdd"
-            v-hasPermi="['alarm:record:add']"
-        >新增
-        </el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-            type="success"
-            plain
-            icon="Edit"
-            :disabled="single"
-            @click="handleUpdate"
-            v-hasPermi="['alarm:record:edit']"
-        >修改
-        </el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-            type="danger"
-            plain
-            icon="Delete"
-            :disabled="multiple"
-            @click="handleDelete"
-            v-hasPermi="['alarm:record:remove']"
-        >删除
-        </el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-            type="warning"
-            plain
-            icon="Download"
-            @click="handleExport"
-            v-hasPermi="['alarm:record:export']"
-        >导出
-        </el-button>
-      </el-col>
-      <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
-    </el-row>
-
-    <el-table v-loading="loading" :data="recordList" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center"/>
-      <el-table-column label="告警ID" align="center" prop="alarmId"/>
-      <el-table-column label="告警对象" align="center" prop="bizobj.objName"/>
-      <el-table-column label="告警指标" align="center" prop="bizObjMetrics.metricsName"/>
-      <el-table-column label="告警级别" align="center" prop="alarmLevel">
-        <template #default="scope">
-          <dict-tag :options="alarm_level" :value="scope.row.alarmLevel"/>
-        </template>
-      </el-table-column>
-      <el-table-column label="告警值" align="center" prop="alarmValue" :formatter="rounding"/>
-      <el-table-column label="告警时间" align="center" prop="alarmTime" width="180">
+    <el-table v-loading="loading" border :data="recordList">
+      <el-table-column label="告警ID" align="center" prop="objId" width="80"/>
+      <el-table-column label="告警对象/应用组件" align="center" prop="objName"/>
+      <el-table-column label="告警数量" align="center" prop="num"/>
+      <el-table-column label="操作" align="center" prop="alarmTime" width="180">
         <template #default="scope">
-          <span>{{ parseTime(scope.row.alarmTime, '{y}-{m}-{d} {h}:{mi}:{s}') }}</span>
+          <el-button type="text" plain icon="Position" @click="handleDetails(scope.row)">明细</el-button>
         </template>
       </el-table-column>
-      <!--      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">-->
-      <!--        <template #default="scope">-->
-      <!--          <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['alarm:record:edit']">修改</el-button>-->
-      <!--          <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['alarm:record:remove']">删除</el-button>-->
-      <!--        </template>-->
-      <!--      </el-table-column>-->
     </el-table>
 
     <pagination
@@ -120,122 +45,55 @@
         v-model:limit="queryParams.pageSize"
         @pagination="getList"
     />
-
-    <!-- 添加或修改告警记录对话框 -->
-    <el-dialog :title="title" v-model="open" width="500px" append-to-body>
-      <el-form ref="recordRef" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="告警对象;" prop="objId">
-          <el-input v-model="form.objId" placeholder="请输入告警对象"/>
-        </el-form-item>
-        <el-form-item label="告警指标" prop="objMetricsId">
-          <el-input v-model="form.objMetricsId" placeholder="请输入告警指标"/>
-        </el-form-item>
-        <el-form-item label="告警级别" prop="alarmLevel">
-          <el-select v-model="form.alarmLevel" placeholder="请选择告警级别">
-            <el-option
-                v-for="dict in alarm_level"
-                :key="dict.value"
-                :label="dict.label"
-                :value="dict.value"
-            ></el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="告警值" prop="alarmValue">
-          <el-input v-model="form.alarmValue" placeholder="请输入告警值"/>
-        </el-form-item>
-        <el-form-item label="告警时间" prop="alarmTime">
-          <el-date-picker clearable
-                          v-model="form.alarmTime"
-                          type="date"
-                          value-format="YYYY-MM-DD"
-                          placeholder="请选择告警时间">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="备注" prop="remark">
-          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容"/>
-        </el-form-item>
-      </el-form>
-      <template #footer>
-        <div class="dialog-footer">
-          <el-button type="primary" @click="submitForm">确 定</el-button>
-          <el-button @click="cancel">取 消</el-button>
-        </div>
-      </template>
-    </el-dialog>
   </div>
 </template>
 
 <script setup name="Record">
-import {addRecord, delRecord, getRecord, listRecord, updateRecord} from "@/api/alarm/record";
+import {getBizSort} from "@/api/alarm/record";
+import {useRouter} from "vue-router";
 
 const {proxy} = getCurrentInstance();
 const {alarm_level} = proxy.useDict('alarm_level');
+const {biz_type} = proxy.useDict('biz_type');
 
 const recordList = ref([]);
 const open = ref(false);
 const loading = ref(true);
 const showSearch = ref(true);
-const ids = ref([]);
-const single = ref(true);
-const multiple = ref(true);
 const total = ref(0);
-const title = ref("");
 const daterangeAlarmTime = ref([]);
+const router = useRouter();
 
 const data = reactive({
   form: {},
   queryParams: {
     pageNum: 1,
     pageSize: 10,
-    objId: null,
-    objMetricsId: null,
-    alarmLevel: null,
-    alarmTime: null,
+    bizType: null
   },
-  rules: {}
 });
 
-const {queryParams, form, rules} = toRefs(data);
+const {queryParams, form} = toRefs(data);
+
+function handleDetails(row){
+  console.log(row,router)
+}
 
 /** 查询告警记录列表 */
 function getList() {
   loading.value = true;
   queryParams.value.params = {};
   if (null != daterangeAlarmTime && '' != daterangeAlarmTime) {
-    queryParams.value.params["beginAlarmTime"] = daterangeAlarmTime.value[0];
-    queryParams.value.params["endAlarmTime"] = daterangeAlarmTime.value[1];
+    queryParams.value.params["start"] = daterangeAlarmTime.value[0];
+    queryParams.value.params["end"] = daterangeAlarmTime.value[1];
   }
-  listRecord(queryParams.value).then(response => {
+  getBizSort(queryParams.value).then(response => {
     recordList.value = response.rows;
     total.value = response.total;
     loading.value = false;
   });
 }
 
-// 取消按钮
-function cancel() {
-  open.value = false;
-  reset();
-}
-
-// 表单重置
-function reset() {
-  form.value = {
-    alarmId: null,
-    objId: null,
-    objMetricsId: null,
-    alarmType: null,
-    alarmLevel: null,
-    alarmValue: null,
-    alarmTime: null,
-    createBy: null,
-    createTime: null,
-    updateBy: null,
-    updateTime: null,
-    remark: null
-  };
-  proxy.resetForm("recordRef");
-}
 
 /** 搜索按钮操作 */
 function handleQuery() {
@@ -249,76 +107,5 @@ function resetQuery() {
   proxy.resetForm("queryRef");
   handleQuery();
 }
-
-// 多选框选中数据
-function handleSelectionChange(selection) {
-  ids.value = selection.map(item => item.alarmId);
-  single.value = selection.length != 1;
-  multiple.value = !selection.length;
-}
-
-/** 新增按钮操作 */
-function handleAdd() {
-  reset();
-  open.value = true;
-  title.value = "添加告警记录";
-}
-
-/** 修改按钮操作 */
-function handleUpdate(row) {
-  reset();
-  const _alarmId = row.alarmId || ids.value
-  getRecord(_alarmId).then(response => {
-    form.value = response.data;
-    open.value = true;
-    title.value = "修改告警记录";
-  });
-}
-
-/** 提交按钮 */
-function submitForm() {
-  proxy.$refs["recordRef"].validate(valid => {
-    if (valid) {
-      if (form.value.alarmId != null) {
-        updateRecord(form.value).then(response => {
-          proxy.$modal.msgSuccess("修改成功");
-          open.value = false;
-          getList();
-        });
-      } else {
-        addRecord(form.value).then(response => {
-          proxy.$modal.msgSuccess("新增成功");
-          open.value = false;
-          getList();
-        });
-      }
-    }
-  });
-}
-
-/** 删除按钮操作 */
-function handleDelete(row) {
-  const _alarmIds = row.alarmId || ids.value;
-  proxy.$modal.confirm('是否确认删除告警记录编号为"' + _alarmIds + '"的数据项?').then(function () {
-    return delRecord(_alarmIds);
-  }).then(() => {
-    getList();
-    proxy.$modal.msgSuccess("删除成功");
-  }).catch(() => {
-  });
-}
-
-/** 导出按钮操作 */
-function handleExport() {
-  proxy.download('alarm/record/export', {
-    ...queryParams.value
-  }, `record_${new Date().getTime()}.xlsx`)
-}
-
-/** 保留2位小数*/
-function rounding(row, column) {
-  return parseFloat(row[column.property]).toFixed(2)
-}
-
 getList();
 </script>

+ 21 - 243
src/views/alarm/record/bizType.vue

@@ -1,40 +1,14 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="告警对象" prop="objId">
-        <el-input
-            v-model="queryParams.objId"
-            placeholder="请输入告警对象"
-            clearable
-            @keyup.enter="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="告警指标" prop="objMetricsId">
-        <el-input
-            v-model="queryParams.objMetricsId"
-            placeholder="请输入告警指标"
-            clearable
-            @keyup.enter="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="告警级别" prop="alarmLevel">
-        <el-select v-model="queryParams.alarmLevel" placeholder="请选择告警级别" clearable>
-          <el-option
-              v-for="dict in alarm_level"
-              :key="dict.value"
-              :label="dict.label"
-              :value="dict.value"
-          />
-        </el-select>
-      </el-form-item>
-      <el-form-item label="告警时间" style="width: 308px">
+    <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="0">
+      <el-form-item label="" style="width: 308px;margin-right:10px">
         <el-date-picker
             v-model="daterangeAlarmTime"
             value-format="YYYY-MM-DD"
             type="daterange"
             range-separator="-"
-            start-placeholder="开始日期"
-            end-placeholder="结束日期"
+            start-placeholder="告警开始日期"
+            end-placeholder="告警结束日期"
         ></el-date-picker>
       </el-form-item>
       <el-form-item>
@@ -43,76 +17,19 @@
       </el-form-item>
     </el-form>
 
-    <el-row :gutter="10" class="mb8">
-      <el-col :span="1.5">
-        <el-button
-            type="primary"
-            plain
-            icon="Plus"
-            @click="handleAdd"
-            v-hasPermi="['alarm:record:add']"
-        >新增
-        </el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-            type="success"
-            plain
-            icon="Edit"
-            :disabled="single"
-            @click="handleUpdate"
-            v-hasPermi="['alarm:record:edit']"
-        >修改
-        </el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-            type="danger"
-            plain
-            icon="Delete"
-            :disabled="multiple"
-            @click="handleDelete"
-            v-hasPermi="['alarm:record:remove']"
-        >删除
-        </el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-            type="warning"
-            plain
-            icon="Download"
-            @click="handleExport"
-            v-hasPermi="['alarm:record:export']"
-        >导出
-        </el-button>
-      </el-col>
-      <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
-    </el-row>
-
-    <el-table v-loading="loading" :data="recordList" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center"/>
-      <el-table-column label="告警ID" align="center" prop="alarmId"/>
-      <el-table-column label="告警对象" align="center" prop="bizobj.objName"/>
-      <el-table-column label="告警指标" align="center" prop="bizObjMetrics.metricsName"/>
-      <el-table-column label="告警级别" align="center" prop="alarmLevel">
+    <el-table v-loading="loading" :data="recordList" border >
+      <el-table-column label="业务类型" align="center" >
         <template #default="scope">
-          <dict-tag :options="alarm_level" :value="scope.row.alarmLevel"/>
+          <span v-if="biz_type.length">{{ biz_type.find(p=>p.value === scope.row.bizType ).label }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="告警值" align="center" prop="alarmValue" :formatter="rounding"/>
-      <el-table-column label="告警时间" align="center" prop="alarmTime" width="180">
+      <el-table-column label="告警值" align="center" prop="num"  />
+      <el-table-column label="操作" align="center" prop="alarmTime" width="180">
         <template #default="scope">
-          <span>{{ parseTime(scope.row.alarmTime, '{y}-{m}-{d} {h}:{mi}:{s}') }}</span>
+          <el-button type="text" plain icon="Position" @click="handleDetails(scope.row)">明细</el-button>
         </template>
       </el-table-column>
-      <!--      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">-->
-      <!--        <template #default="scope">-->
-      <!--          <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['alarm:record:edit']">修改</el-button>-->
-      <!--          <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['alarm:record:remove']">删除</el-button>-->
-      <!--        </template>-->
-      <!--      </el-table-column>-->
     </el-table>
-
     <pagination
         v-show="total>0"
         :total="total"
@@ -120,127 +37,57 @@
         v-model:limit="queryParams.pageSize"
         @pagination="getList"
     />
-
-    <!-- 添加或修改告警记录对话框 -->
-    <el-dialog :title="title" v-model="open" width="500px" append-to-body>
-      <el-form ref="recordRef" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="告警对象;" prop="objId">
-          <el-input v-model="form.objId" placeholder="请输入告警对象"/>
-        </el-form-item>
-        <el-form-item label="告警指标" prop="objMetricsId">
-          <el-input v-model="form.objMetricsId" placeholder="请输入告警指标"/>
-        </el-form-item>
-        <el-form-item label="告警级别" prop="alarmLevel">
-          <el-select v-model="form.alarmLevel" placeholder="请选择告警级别">
-            <el-option
-                v-for="dict in alarm_level"
-                :key="dict.value"
-                :label="dict.label"
-                :value="dict.value"
-            ></el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="告警值" prop="alarmValue">
-          <el-input v-model="form.alarmValue" placeholder="请输入告警值"/>
-        </el-form-item>
-        <el-form-item label="告警时间" prop="alarmTime">
-          <el-date-picker clearable
-                          v-model="form.alarmTime"
-                          type="date"
-                          value-format="YYYY-MM-DD"
-                          placeholder="请选择告警时间">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="备注" prop="remark">
-          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容"/>
-        </el-form-item>
-      </el-form>
-      <template #footer>
-        <div class="dialog-footer">
-          <el-button type="primary" @click="submitForm">确 定</el-button>
-          <el-button @click="cancel">取 消</el-button>
-        </div>
-      </template>
-    </el-dialog>
   </div>
 </template>
 
 <script setup name="Record">
-import {addRecord, delRecord, getRecord, listRecord, updateRecord} from "@/api/alarm/record";
+import {getBizType} from "@/api/alarm/record";
+import {useRouter} from "vue-router";
 
 const {proxy} = getCurrentInstance();
 const {alarm_level} = proxy.useDict('alarm_level');
+const {biz_type} = proxy.useDict('biz_type');
 
 const recordList = ref([]);
-const open = ref(false);
 const loading = ref(true);
 const showSearch = ref(true);
-const ids = ref([]);
-const single = ref(true);
-const multiple = ref(true);
 const total = ref(0);
 const title = ref("");
 const daterangeAlarmTime = ref([]);
+const router = useRouter();
 
 const data = reactive({
   form: {},
   queryParams: {
     pageNum: 1,
     pageSize: 10,
-    objId: null,
-    objMetricsId: null,
-    alarmLevel: null,
-    alarmTime: null,
   },
-  rules: {}
 });
 
 const {queryParams, form, rules} = toRefs(data);
 
+function handleDetails(row){
+  console.log(row,router)
+}
+
 /** 查询告警记录列表 */
 function getList() {
   loading.value = true;
   queryParams.value.params = {};
   if (null != daterangeAlarmTime && '' != daterangeAlarmTime) {
-    queryParams.value.params["beginAlarmTime"] = daterangeAlarmTime.value[0];
-    queryParams.value.params["endAlarmTime"] = daterangeAlarmTime.value[1];
+    queryParams.value.params["start"] = daterangeAlarmTime.value[0];
+    queryParams.value.params["end"] = daterangeAlarmTime.value[1];
   }
-  listRecord(queryParams.value).then(response => {
+  getBizType(queryParams.value).then(response => {
     recordList.value = response.rows;
     total.value = response.total;
     loading.value = false;
   });
 }
 
-// 取消按钮
-function cancel() {
-  open.value = false;
-  reset();
-}
-
-// 表单重置
-function reset() {
-  form.value = {
-    alarmId: null,
-    objId: null,
-    objMetricsId: null,
-    alarmType: null,
-    alarmLevel: null,
-    alarmValue: null,
-    alarmTime: null,
-    createBy: null,
-    createTime: null,
-    updateBy: null,
-    updateTime: null,
-    remark: null
-  };
-  proxy.resetForm("recordRef");
-}
-
 /** 搜索按钮操作 */
 function handleQuery() {
   queryParams.value.pageNum = 1;
-  getList();
 }
 
 /** 重置按钮操作 */
@@ -250,75 +97,6 @@ function resetQuery() {
   handleQuery();
 }
 
-// 多选框选中数据
-function handleSelectionChange(selection) {
-  ids.value = selection.map(item => item.alarmId);
-  single.value = selection.length != 1;
-  multiple.value = !selection.length;
-}
-
-/** 新增按钮操作 */
-function handleAdd() {
-  reset();
-  open.value = true;
-  title.value = "添加告警记录";
-}
-
-/** 修改按钮操作 */
-function handleUpdate(row) {
-  reset();
-  const _alarmId = row.alarmId || ids.value
-  getRecord(_alarmId).then(response => {
-    form.value = response.data;
-    open.value = true;
-    title.value = "修改告警记录";
-  });
-}
-
-/** 提交按钮 */
-function submitForm() {
-  proxy.$refs["recordRef"].validate(valid => {
-    if (valid) {
-      if (form.value.alarmId != null) {
-        updateRecord(form.value).then(response => {
-          proxy.$modal.msgSuccess("修改成功");
-          open.value = false;
-          getList();
-        });
-      } else {
-        addRecord(form.value).then(response => {
-          proxy.$modal.msgSuccess("新增成功");
-          open.value = false;
-          getList();
-        });
-      }
-    }
-  });
-}
-
-/** 删除按钮操作 */
-function handleDelete(row) {
-  const _alarmIds = row.alarmId || ids.value;
-  proxy.$modal.confirm('是否确认删除告警记录编号为"' + _alarmIds + '"的数据项?').then(function () {
-    return delRecord(_alarmIds);
-  }).then(() => {
-    getList();
-    proxy.$modal.msgSuccess("删除成功");
-  }).catch(() => {
-  });
-}
-
-/** 导出按钮操作 */
-function handleExport() {
-  proxy.download('alarm/record/export', {
-    ...queryParams.value
-  }, `record_${new Date().getTime()}.xlsx`)
-}
-
-/** 保留2位小数*/
-function rounding(row, column) {
-  return parseFloat(row[column.property]).toFixed(2)
-}
 
 getList();
 </script>

+ 5 - 5
src/views/hl/bm/component/healthSetting.vue

@@ -8,7 +8,7 @@
       border
       style="width: 100%;"
   >
-    <el-table-column prop="bri" label="业务风险项" width="180" />
+    <el-table-column prop="bri" label="业务风险项" width="100" />
     <el-table-column prop="es" label="评价分值" width="80" align="center">
       <template #default="scope">
         <el-input v-model="scope.row.es" @change="changeEs(scope.row)" v-if="!details"/>
@@ -16,16 +16,16 @@
       </template>
     </el-table-column>
     <el-table-column prop="cs" label="实际得分" width="80" align="center" v-if="details"/>
-    <el-table-column prop="eo" label="评价对象" width="180" />
+    <el-table-column prop="eo" label="评价对象" width="120" />
     <el-table-column prop="ri" label="风险指标" width="180" />
     <el-table-column prop="pds" label="扣分标准" width="180" />
     <el-table-column prop="iz" label="细项分" width="100" align="center"/>
-    <el-table-column label="当前健康评分标准">
+    <el-table-column label="当前健康评分标准" width="200">
       <template #default="scope">
         <div v-html="scope.row.chss" />
       </template>
     </el-table-column>
-    <el-table-column label="日健康评分标准"  width="250">
+    <el-table-column label="日健康评分标准">
       <template #default="scope">
         <div v-html="scope.row.stand" />
       </template>
@@ -76,7 +76,7 @@ async function changeEs(row){
 }
 
 function  objectSpanMethod ({row,column,rowIndex,columnIndex,})  {
-  if (columnIndex === 0||columnIndex === 1||columnIndex === 2||(props.details && columnIndex === 3)||columnIndex === 6) {
+  if (columnIndex === 0||columnIndex === 1||columnIndex === 2||(props.details && columnIndex === 3)||(props.details?columnIndex===7:columnIndex===6)) {
     const f=row.length===row.lowLength
       if(f){
         return {

+ 1 - 1
src/views/hl/bm/component/historyHealth.vue

@@ -32,7 +32,7 @@
       @pagination="getHlsData"
   />
 
-  <el-dialog :title="title" v-model="open" width="1600px" append-to-body style="margin-top:2px!important">
+  <el-dialog :title="title" v-model="open" width="1200px" append-to-body style="margin-top:2px!important">
     <health-setting :modelId="hlScoreId" :details="true" :dialogType="dialogType"/>
   </el-dialog>
 

+ 6 - 6
src/views/hl/bm/index.vue

@@ -33,11 +33,11 @@
       <el-table-column label="模型名称" align="left" prop="modelName" />
       <el-table-column label="昨日健康度" align="center" prop="yesterdayScore"  width="180"/>
       <el-table-column label="最近一次健康度得分" align="center" prop="lastScore"  width="180"/>
-      <el-table-column label="更新时间" align="left" prop="updateTime" width="180">
-        <template #default="scope">
-          <span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d} {h}:{mi}:{s}') }}</span>
-        </template>
-      </el-table-column>
+<!--      <el-table-column label="更新时间" align="left" prop="updateTime" width="180">-->
+<!--        <template #default="scope">-->
+<!--          <span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d} {h}:{mi}:{s}') }}</span>-->
+<!--        </template>-->
+<!--      </el-table-column>-->
       <el-table-column label="操作" width="480" class-name="small-padding fixed-width" align="left" >
         <template #default="scope">
           <el-button link type="primary" icon="Position" @click="handleHealthSet(scope.row,'health')">健康度配置</el-button>
@@ -58,7 +58,7 @@
     />
 
     <!-- 添加或修改业务模型对话框 -->
-    <el-dialog :title="title" v-model="open" :width="dialogType ==='health'?'1600px':'800px'" append-to-body :style="dialogType ==='health'?'margin-top:2px!important;':''">
+    <el-dialog :title="title" v-model="open" :width="dialogType ==='health'?'1200px':'800px'" append-to-body :style="dialogType ==='health'?'margin-top:2px!important;':''">
       <add-bm-info ref="bmRef" @cancel="open = false" @success="getList" v-if="dialogType==='add'"/>
       <component :is="activeComponent[currentActive]" v-else-if="dialogType!=='add' && open" :modelId="modelId" :dialogType="dialogType"/>
     </el-dialog>

+ 50 - 15
src/views/ms/mstpl/component/indicatorManger.vue

@@ -69,22 +69,44 @@
 
   <!-- 添加或修改指标模板对话框 -->
   <el-dialog title="新增指标" v-model="open" width="1000" append-to-body>
-    <el-table :data="addListData" border size="small" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center"/>
-      <el-table-column label="指标ID" align="center" prop="metricsId" width="80"/>
-      <el-table-column label="指标分类" align="left" width="160">
-        <template #default="scope">
+    <div>
+      <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"
+              placeholder="请输入应用名称"
+              clearable
+              @keyup.enter="getSelectData"
+          />
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" icon="Search" @click="getSelectData">搜索</el-button>
+        </el-form-item>
+      </el-form>
+      <el-table :data="addListData" border size="small" @selection-change="handleSelectionChange">
+        <el-table-column type="selection" width="55" align="center"/>
+        <el-table-column label="指标ID" align="center" prop="metricsId" width="80"/>
+        <el-table-column label="指标分类" align="left" width="160">
+          <template #default="scope">
             <span v-for="(item,i) in scope.row.metricsTypes" :key="`${scope.$index}_${item}`">
               {{ item.typeName }}<span v-if="i!==scope.row.metricsTypes.length-1">、</span>
             </span>
-        </template>
-      </el-table-column>
-      <el-table-column label="指标名称" align="left" prop="metricsName"/>
-      <el-table-column label="指标编码" align="left" prop="metricsCode" width="160"/>
-      <el-table-column label="告警-低" align="left" width="80" prop="alarmLow"/>
-      <el-table-column label="告警-中" align="left" width="80" prop="alarmMid"/>
-      <el-table-column label="告警-高" align="left" width="80" prop="alarmHigh"/>
-    </el-table>
+          </template>
+        </el-table-column>
+        <el-table-column label="指标名称" align="left" prop="metricsName"/>
+        <el-table-column label="指标编码" align="left" prop="metricsCode" width="160"/>
+        <el-table-column label="告警-低" align="left" width="80" prop="alarmLow"/>
+        <el-table-column label="告警-中" align="left" width="80" prop="alarmMid"/>
+        <el-table-column label="告警-高" align="left" width="80" prop="alarmHigh"/>
+      </el-table>
+      <pagination
+          v-show="adTotal>0"
+          :total="adTotal"
+          v-model:page="adParams.pageNum"
+          v-model:limit="adParams.pageSize"
+          @pagination="getSelectData"
+      />
+    </div>
     <template #footer>
       <div class="dialog-footer">
         <el-button type="primary" @click="handleAddMetrics">添 加</el-button>
@@ -107,6 +129,13 @@ const open = ref(false);
 const addListData = ref([]);
 const ids = ref([]);
 const total = ref(0);
+const adTotal=ref(0);
+
+const adParams = reactive({
+  pageNum: 1,
+  pageSize: 10,
+  metricsName: null
+});
 
 const queryParams = reactive({
     pageNum: 1,
@@ -116,7 +145,6 @@ const queryParams = reactive({
 
 // 选择指标
 const getSelectDetails = (tplId: number) => {
-  console.log(tplId)
   loading.value = true;
   editRow.value = [];
   if(tplId){
@@ -174,10 +202,17 @@ const handleUpdate = (row) => {
 const handleAdd = () => {
   addListData.value = []
   open.value = true
-  selectDetails(rowTplId.value).then(res => {
+  adParams.pageNum = 1
+  getSelectData()
+}
+
+const getSelectData = () => {
+  selectDetails(rowTplId.value,adParams).then(res => {
     addListData.value = res.rows
+    adTotal.value = res.total
   })
 }
+
 defineExpose({
   getSelectDetails
 })

+ 7 - 7
src/views/obj/app/index.vue

@@ -31,8 +31,8 @@
 
     <el-table v-loading="loading" :data="appList" border>
       <el-table-column label="应用ID" align="center" prop="appId" width="80" />
-      <el-table-column label="应用名称" align="left" prop="appName"  />
-      <el-table-column label="应用编码" align="left" prop="appCode"  width="180" />
+      <el-table-column label="应用名称" align="left" prop="appName" />
+      <el-table-column label="应用编码" align="left" prop="appCode"  width="120" />
       <el-table-column label="IP地址" align="left" width="160">
         <template #default="scope">
             {{scope.row.appAddr}}:{{scope.row.appPort}}
@@ -43,11 +43,11 @@
           <div v-html="outConfigKey(scope.row)"  width="300"/>
         </template>
       </el-table-column>
-      <el-table-column label="创建时间" align="center" prop="createTime" width="160">
-        <template #default="scope">
-          <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{mi}:{s}') }}</span>
-        </template>
-      </el-table-column>
+<!--      <el-table-column label="创建时间" align="center" prop="createTime" width="160">-->
+<!--        <template #default="scope">-->
+<!--          <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{mi}:{s}') }}</span>-->
+<!--        </template>-->
+<!--      </el-table-column>-->
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="150">
         <template #default="scope">
           <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['obj:app:edit']">修改</el-button>

+ 1 - 1
src/views/obj/obj/component/addComponent.vue

@@ -29,7 +29,7 @@ const props=defineProps({
 const stepArray = [step1, step2, step3, step4]
 const active = ref(0)
 const stepContent = [
-  {title: "基本信息", description: "请填写公司基本信息"},
+  {title: "基本信息", description: "请填写业务基本信息"},
   {title: "模板选择", description: "请选择模板"},
   {title: "自定义指标", description: "请选择自定义指标"},
   {title: "数据接口配置", description: "配置数据获取接口地址"},

+ 8 - 6
src/views/obj/obj/component/metricsConfig.vue

@@ -10,14 +10,14 @@
       {{form?.metricsCode || '-'}}
     </el-form-item>
     <el-form-item label="数据接口配置">
-      <el-input type="textarea" placeholder="请输入数据接口配置" v-model="form.dataExp" show-word-limit maxlength="300" :autosize="{ minRows: 4, maxRows: 6 }"/>
+      <el-input type="textarea" placeholder="请输入数据接口配置" v-model="form.dataExp" :autosize="{ minRows: 4, maxRows: 6 }"/>
     </el-form-item>
     <el-form-item label="">
       <el-button type="primary" @click="onTest">测试</el-button>
-      <span v-if="!validateError && currentValue" style="color:#1ab394;margin-left:10px;">
+      <span v-if="validateError===1" style="color:#1ab394;margin-left:10px;">
         数据获取正常,当前值:{{currentValue}}
       </span>
-      <span v-if="validateError" style="color:#ee4433;margin-left:10px;">
+      <span v-if="validateError===2" style="color:#ee4433;margin-left:10px;">
         数据获取失败,请检查数据接口配置
       </span>
     </el-form-item>
@@ -35,7 +35,7 @@ const {emit,proxy} = getCurrentInstance();
 const mcRef = ref(null);
 const validate = ref(false)
 const currentValue = ref(0)
-const validateError= ref(false)
+const validateError= ref(0)
 const data = reactive({
   form:{},
   rules:{
@@ -47,7 +47,7 @@ const props = defineProps(['metrics'])
 watchEffect(()=>{
   validate.value = false
   currentValue.value = 0
-  validateError.value = false
+  validateError.value = 0
   form.value = {
     metricsName:props.metrics.metricsDef.metricsName,
     metricsType:props.metrics.metricsDef.metricsType,
@@ -59,12 +59,14 @@ watchEffect(()=>{
 
 const onTest=()=>{
   const {dataExp} = form.value
+  validateError.value = 0
   validateObj({exp:dataExp}).then(res=>{
     proxy.$modal.msgSuccess(res.msg);
     currentValue.value = res.data
     validate.value = true
+    validateError.value = 1
   }).catch(()=>{
-    validateError.value = true
+    validateError.value = 2
   })
 }
 

+ 6 - 6
src/views/obj/obj/index.vue

@@ -33,7 +33,7 @@
     <el-table v-loading="loading" :data="objList" border>
       <el-table-column label="对象ID" align="center" prop="objId" width="80"/>
       <el-table-column label="对象名称" align="left" prop="objName"/>
-      <el-table-column label="业务类型" align="left" prop="objType" width="180">
+      <el-table-column label="业务类型" align="left" prop="objType" width="120">
         <template #default="scope">
           <dict-tag :options="biz_type" :value="scope.row.objType"/>
         </template>
@@ -50,11 +50,11 @@
           </span>
         </template>
       </el-table-column>
-      <el-table-column label="更新时间" align="left" prop="updateTime" width="180">
-        <template #default="scope">
-          <span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d} {h}:{mi}:{s}') }}</span>
-        </template>
-      </el-table-column>
+<!--      <el-table-column label="更新时间" align="left" prop="updateTime" width="180">-->
+<!--        <template #default="scope">-->
+<!--          <span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d} {h}:{mi}:{s}') }}</span>-->
+<!--        </template>-->
+<!--      </el-table-column>-->
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="260">
         <template #default="scope">
           <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['obj:obj:edit']">