wenhongquan 2 лет назад
Родитель
Сommit
4fc2c39807

+ 5 - 0
ruoyi-system/src/main/java/com/ruoyi/data/service/impl/TblBreakdownServiceImpl.java

@@ -1,6 +1,7 @@
 package com.ruoyi.data.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.StrUtil;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.core.domain.PageQuery;
@@ -15,6 +16,7 @@ import com.ruoyi.data.domain.TblBreakdown;
 import com.ruoyi.data.mapper.TblBreakdownMapper;
 import com.ruoyi.data.service.ITblBreakdownService;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.Collection;
@@ -96,6 +98,9 @@ public class TblBreakdownServiceImpl implements ITblBreakdownService {
     public Boolean updateByBo(TblBreakdownBo bo) {
         TblBreakdown update = BeanUtil.toBean(bo, TblBreakdown.class);
         validEntityBeforeSave(update);
+        if(StrUtil.isNotEmpty(update.getHandler()) && update.getHandlerTime()==null){
+            update.setHandlerTime(new Date());
+        }
         return baseMapper.updateById(update) > 0;
     }
 

+ 7 - 0
ruoyi-system/src/main/java/com/ruoyi/data/service/impl/TblWarnServiceImpl.java

@@ -1,6 +1,7 @@
 package com.ruoyi.data.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.StrUtil;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.core.domain.PageQuery;
@@ -15,6 +16,7 @@ import com.ruoyi.data.domain.TblWarn;
 import com.ruoyi.data.mapper.TblWarnMapper;
 import com.ruoyi.data.service.ITblWarnService;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.Collection;
@@ -45,6 +47,8 @@ public class TblWarnServiceImpl implements ITblWarnService {
     @Override
     public TableDataInfo<TblWarnVo> queryPageList(TblWarnBo bo, PageQuery pageQuery) {
         LambdaQueryWrapper<TblWarn> lqw = buildQueryWrapper(bo);
+        lqw.between(bo.getParams()!=null && bo.getParams().get("beginTime") != null && bo.getParams().get("endTime") != null,
+            TblWarn::getAlarmTime, bo.getParams().get("beginTime"), bo.getParams().get("endTime"));
         Page<TblWarnVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
         return TableDataInfo.build(result);
     }
@@ -96,6 +100,9 @@ public class TblWarnServiceImpl implements ITblWarnService {
     public Boolean updateByBo(TblWarnBo bo) {
         TblWarn update = BeanUtil.toBean(bo, TblWarn.class);
         validEntityBeforeSave(update);
+        if(StrUtil.isNotEmpty(update.getHandler()) && update.getHandleTime()==null){
+            update.setHandleTime(new Date());
+        }
         return baseMapper.updateById(update) > 0;
     }
 

+ 92 - 15
ruoyi-ui-vue3/src/views/alarm/alarmmanager/index.vue

@@ -1,3 +1,5 @@
+<!--suppress ALL -->
+
 <template>
   <div style="padding: 10px 15px">
     <el-card class="box-card">
@@ -13,7 +15,7 @@
           >
             <div style="font-size: 12px; width: 80px">告警名称:</div>
             <el-input
-              v-model="searchform.alarmname"
+              v-model="searchform.name"
               placeholder="告警名称"
             ></el-input>
           </div>
@@ -26,7 +28,7 @@
                 "
           >
             <div style="font-size: 12px; width: 80px;text-align: right;margin-right: 15px">告警时间:</div>
-             <el-date-picker type="daterange"></el-date-picker>
+             <el-date-picker type="daterange" v-model="searchform.alarmtime"   placeholder="请选择"></el-date-picker>
           </div>
         </div>
         <div>
@@ -46,19 +48,24 @@
       <div>
         <el-row>
           <el-col :span="24">
-            <el-table :data="tabledata" border>
-              <el-table-column v-for="item in cloumdata.filter(i=>i.visible)" :prop="item.prop" :label="item.label" ></el-table-column>
+            <el-table :data="tabledata" border  :columns="cloumdata" >
+              <el-table-column v-for="item in cloumdata.filter(i=>i.visible)" :prop="item.prop" :label="item.label" >
+                <template #default="scope">
+                  <div v-html=" initcloumdata(scope.row,item.prop) ">
+                  </div>
+                </template>
+              </el-table-column>
               <el-table-column label="操作">
                 <template #default="scope">
                   <div>
-                    <el-button link>
+                    <el-button link @click="handleEdit(scope.row)">
                       <el-tooltip effect="dark" content="处理">
                         <el-icon>
                           <Edit />
                         </el-icon>
                       </el-tooltip>
                     </el-button>
-                    <el-popconfirm title="确定删除该标签?">
+                    <el-popconfirm title="确定删除该记录?" @confirm="handleDelete(scope.row)">
                       <template #reference>
                         <el-button link
                         ><el-tooltip effect="dark" content="删除"
@@ -77,7 +84,10 @@
                            small
                            background
                            layout="prev, pager, next"
-                           :total="50"
+                           :total="pagedata.total"
+                           :page-size="pagedata.size"
+                           :current-page="pagedata.current"
+                           @current-change="onchangepage"
                            class="mt-4"
             />
           </el-col>
@@ -93,13 +103,40 @@
     </el-card>
 
 
+    <el-dialog
+      title="处理"
+      v-model="handleshow"
+      width="50%"
+      @close="handleshow = false"
+    >
+      <el-form ref="form" :model="currentdata" label-width="100px" label-position="left">
+        <el-form-item label="处理人" >
+          <el-input v-model="currentdata.handler" placeholder="请输入"></el-input>
+        </el-form-item>
+        <el-form-item label="处理方式" >
+          <el-input v-model="currentdata.handleWay" placeholder="请输入"></el-input>
+        </el-form-item>
+        <el-form-item label="处理内容" >
+          <el-input type="textarea" v-model="currentdata.handleContent" placeholder="请输入"></el-input>
+        </el-form-item>
+      </el-form>
+
+      <div slot="footer" class="dialog-footer" style="text-align: right">
+        <el-button @click="handleshow = false">取 消</el-button>
+        <el-button type="primary" @click="handleSubmit">确 定</el-button>
+      </div>
+    </el-dialog>
+
   </div>
 </template>
 
-<script setup lang="ts" name="Units">
-import {ref} from "vue";
+<script setup lang="ts" >
+import {ref, h, watchEffect, watch} from "vue";
 import {useRoute, useRouter} from "vue-router";
 import {listWarn,updateWarn,delWarn} from "@/api/data/warn"
+import { cloneDeep } from "lodash";
+import moment from "moment";
+import {ElMessage} from "element-plus";
 
 
 const route = useRoute();
@@ -107,8 +144,8 @@ const router = useRouter();
 
 const tabledata = ref([])
 const searchform = ref({
-  alarmname: '',
-  alarmtime:['','']
+  name: '',
+  alarmtime:[moment().subtract(1,'month'),moment().add(1,'day')]
 });
 
 const currentdata = ref({
@@ -127,10 +164,30 @@ const currentdata = ref({
     "remark": "",
 })
 
+const handleshow = ref(false);
+
+const handleSubmit = () => {
+  updateWarn(currentdata.value).then(res=>{
+    ElMessage.success("处理成功");
+    handleshow.value = false;
+    getalldata();
+  })
+}
+
+const handleEdit = (row) => {
+  currentdata.value = cloneDeep(row);
+  handleshow.value = true;
+}
+const handleDelete = (row) => {
+  delWarn(row.id).then(res=>{
+    ElMessage.success("删除成功");
+    getalldata();
+  })
+}
 const initdata = ()=>{
   searchform.value = {
-    alarmname: '',
-    alarmtime:['','']
+    name: '',
+    alarmtime:[moment().subtract(1,'month'),moment().add(1,'day')]
   }
   pagedata.value = {
     total:0,
@@ -138,7 +195,14 @@ const initdata = ()=>{
     current:1
   }
 }
+const initcloumdata = (row,prop)=>{
+  if(prop == ("status")){
+    return  `<span style="color: ${row[prop]=="1"?"green":"red"}"> ${row[prop]=="1"?"已处理":"未理中"} </span>`;
+  }
 
+  return row[prop];
+
+}
 const cloumdata = ref([
   {label: '告警名称', prop:'name',visible:true},
   {label: '告警值', prop:'val',visible:true},
@@ -151,7 +215,10 @@ const cloumdata = ref([
   {label: '告警时间', prop:'alarmTime',visible:true},
 ]);
 
-
+const onchangepage = (page) => {
+  pagedata.value.current = page;
+  getalldata();
+}
 const pagedata = ref({
   total:0,
   size:10,
@@ -159,7 +226,16 @@ const pagedata = ref({
 });
 
 const getalldata = () => {
-  listWarn({...searchform.value,pageSize:pagedata.value.size,pageNum:pagedata.value.current}).then(res => {
+
+  //@ts-ignore
+  var p = cloneDeep(searchform.value);
+  p["params"]={
+    "beginTime":moment(p.alarmtime[0]).format("YYYY-MM-DD HH:mm:ss"),
+    "endTime":moment(p.alarmtime[1]).format("YYYY-MM-DD HH:mm:ss")
+  }
+  delete p.alarmtime;
+
+  listWarn({...p,pageSize:pagedata.value.size,pageNum:pagedata.value.current}).then(res => {
     const {rows,total,page} = res;
     pagedata.value = {total:total,current:page, size:10};
     tabledata.value = rows
@@ -168,6 +244,7 @@ const getalldata = () => {
 getalldata()
 
 
+
 const searchdata= ()=>{
   pagedata.value = {total:0,size:10,current:1};
   getalldata();

+ 5 - 0
ruoyi-ui-vue3/src/views/gateway/modbusrtu/index.vue

@@ -91,6 +91,7 @@
                            :total="pagedata.total"
                            :page-size="pagedata.size"
                            :current-page="pagedata.current"
+                           @current-change="onchangepage"
                            class="mt-4"
             />
           </el-col>
@@ -372,6 +373,10 @@ const cloumdata = ref([
 ]);
 const ziduanshow = ref(false);
 
+const onchangepage = (page) => {
+  pagedata.value.current = page;
+  getalldata();
+}
 const pagedata = ref({
   total:0,
   size:10,

+ 6 - 0
ruoyi-ui-vue3/src/views/gateway/modbustcp/index.vue

@@ -91,6 +91,7 @@
                            :total="pagedata.total"
                            :page-size="pagedata.size"
                            :current-page="pagedata.current"
+                           @current-change="onchangepage"
                            class="mt-4"
             />
           </el-col>
@@ -317,6 +318,11 @@ const cloumdata = ref([
   {label: '轮询时间(毫秒)', prop:'intervals',visible:true},
   {label: '描述', prop:'protocolDesc',visible:true},
 ]);
+
+const onchangepage = (page) => {
+  pagedata.value.current = page;
+  getalldata();
+}
 const pagedata = ref({
   total:0,
   size:10,