3 Commits 08c2e163c8 ... e3580aa86f

Author SHA1 Message Date
  hsshuxian e3580aa86f 事件日志 4 months ago
  hsshuxian 254e875319 Merge branch 'master' of http://git.xt.wenhq.top:8083/hs/zhny_ui 4 months ago
  hsshuxian bc94092bac 修改 4 months ago

+ 18 - 0
ems-ui-cloud/src/api/basecfg/objLog.js

@@ -41,3 +41,21 @@ export function getCallLog(id) {
     method: 'get'
   })
 }
+
+/**查询事件上报日志列表*/
+export function listEventLog(query) {
+  return request({
+    url: '/ems/object/log/eventLog/list',
+    method: 'get',
+    params: query
+  })
+}
+/**
+ * 获取事件日志详细
+ */
+export function getEventLog(id) {
+  return request({
+    url: '/ems/object/log/eventLog/' + id,
+    method: 'get'
+  })
+}

+ 0 - 1
ems-ui-cloud/src/views/adapter/pv/index.vue

@@ -608,7 +608,6 @@ export default {
       listDevRecursionByArea(this.queryParams).then(response => {
         console.log('参数', JSON.stringify(this.queryParams))
         this.deviceList = response.rows
-        console.log('deviceList', this.deviceList)
         this.total = response.total
         this.loading = false
       })

+ 133 - 18
ems-ui-cloud/src/views/basecfg/device/index.vue

@@ -139,6 +139,17 @@
           </div>
         </el-dialog>
 
+        <!-- 事件日志详情弹窗 -->
+        <el-dialog :visible.sync="eventLogDetailDialog" title="事件日志详情" width="50%">
+          <div v-if="eventLogDetailData">
+            <p><strong>对象编号:</strong>{{ eventLogDetailData.objCode }}</p>
+            <p><strong>对象名称:</strong>{{ eventLogDetailData.objName }}</p>
+            <p><strong>事件名称:</strong>{{ eventLogDetailData.eventName }}({{eventLogDetailData.eventKey}})</p>
+            <p><strong>事件时间:</strong>{{ eventLogDetailData.eventTime }}</p>
+            <p><strong>事件描述:</strong>{{ eventLogDetailData.eventDetail }}</p>
+          </div>
+        </el-dialog>
+
         <!-- 添加或修改能源设备对话框 -->
         <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
           <el-form ref="form" :model="form" :rules="rules" label-width="80px">
@@ -418,7 +429,8 @@
               </el-card>
             </div>
             <!-- 设备能力-->
-            <div v-if="activeTab === 'ability'">
+            <div v-if="
+            activeTab === 'ability'">
               <el-card class="box-card">
                 <div slot="header" class="clearfix">
                   <span class="section-title">设备能力</span>
@@ -460,19 +472,68 @@
               </div>
             </el-dialog>
             <!-- 设备事件日志= -->
+<!--            <div v-if="activeTab === 'eventLog'">-->
+<!--              <el-card class="box-card">-->
+<!--                <div slot="header" class="clearfix">-->
+<!--                  <span class="section-title">设备事件</span>-->
+<!--                </div>-->
+<!--                <el-table :data="eventData" style="width: 100%" :show-header="true" :empty-text="'暂无数据'">-->
+<!--                  <el-table-column type="index" label="序号" width="50" align="center"></el-table-column>-->
+<!--                  <el-table-column label="事件名称" prop="eventKey"></el-table-column>-->
+<!--                  <el-table-column label="事件类型" prop="eventType" :formatter="formatEventType"></el-table-column>-->
+<!--                  <el-table-column label="事件代码" prop="eventCode"></el-table-column>-->
+<!--                  <el-table-column label="外部事件代码" prop="extEventCode"></el-table-column>-->
+<!--                </el-table>-->
+<!--              </el-card>-->
+<!--            </div>-->
+            <!-- 设备事件日志 -->
             <div v-if="activeTab === 'eventLog'">
-              <el-card class="box-card">
-                <div slot="header" class="clearfix">
-                  <span class="section-title">设备事件</span>
-                </div>
-                <el-table :data="eventData" style="width: 100%" :show-header="true" :empty-text="'暂无数据'">
-                  <el-table-column type="index" label="序号" width="50" align="center"></el-table-column>
-                  <el-table-column label="事件名称" prop="eventKey"></el-table-column>
-                  <el-table-column label="事件类型" prop="eventType" :formatter="formatEventType"></el-table-column>
-                  <el-table-column label="事件代码" prop="eventCode"></el-table-column>
-                  <el-table-column label="外部事件代码" prop="extEventCode"></el-table-column>
-                </el-table>
-              </el-card>
+              <el-form inline>
+                <el-form-item label="记录时间">
+                  <el-date-picker
+                    v-model="logDaterangeTime"
+                    style="width: 240px"
+                    value-format="yyyy-MM-dd HH:mm"
+                    type="datetimerange"
+                    range-separator="-"
+                    start-placeholder="开始日期"
+                    end-placeholder="结束日期"
+                  ></el-date-picker>
+                </el-form-item>
+                <el-form-item label="事件名称">
+                  <el-select v-model="eventLogQueryParams.eventName" clearable>
+                    <el-option
+                      v-for="item in eventData"
+                      :key="item.eventKey"
+                      :label="item.eventName"
+                      :value="item.eventKey"
+                    ></el-option>
+                  </el-select>
+                </el-form-item>
+                <el-form-item>
+                  <el-button type="primary" @click="handleEventLogQuery">查询</el-button>
+                  <el-button @click="resetEventLogQuery">重置</el-button>
+                </el-form-item>
+              </el-form>
+              <el-table :data="eventLogData" style="width: 100%" :show-header="true" :empty-text="'暂无数据'">
+                <el-table-column type="index" label="序号" width="50" align="center"></el-table-column>
+                <el-table-column label="对象编号" prop="objCode"></el-table-column>
+                <el-table-column label="对象名称" prop="objName"></el-table-column>
+                <el-table-column label="事件名称" prop="eventName"></el-table-column>
+                <el-table-column label="事件时间" prop="eventTime"></el-table-column>
+                <el-table-column label="操作" align="center" width="100">
+                  <template slot-scope="scope">
+                    <el-button type="text" size="mini" icon="el-icon-info" @click="handleEventLogDetail(scope.row)">详情</el-button>
+                  </template>
+                </el-table-column>
+              </el-table>
+              <pagination
+                v-show="eventLogQueryTotal > 0"
+                :total="eventLogQueryTotal"
+                :page.sync="eventLogQueryParams.pageNum"
+                :limit.sync="eventLogQueryParams.pageSize"
+                @pagination="handleEventLogQuery"
+              />
             </div>
             <!-- 调用日志    -->
             <div v-if="activeTab === 'callLog'">
@@ -601,7 +662,7 @@ import { addComponent, delComponent, getComponent, listByDevice, updateComponent
 import Treeselect from '@riophae/vue-treeselect'
 import '@riophae/vue-treeselect/dist/vue-treeselect.css'
 import { listcallAbility } from '@/api/basecfg/objAbility'
-import { getCallLog, getReportLog, listCallLog, listReportLog } from '@/api/basecfg/objLog'
+import { getCallLog, getReportLog, listCallLog, listReportLog,listEventLog,getEventLog } from '@/api/basecfg/objLog'
 
 export default {
   name: 'Device',
@@ -669,6 +730,7 @@ export default {
       },
       callDaterangeTime: [],
       logDaterangeTime: [],
+      reportLogData: [],
       logQueryParams: {
         startTime: '',
         endTime: '',
@@ -676,6 +738,7 @@ export default {
         pageSize: 10
       },
       logQueryTotal: 0,
+      callLogData: [],
       callLogQueryParams: {
         abilityKey: '',
         callStatus: '',
@@ -696,8 +759,19 @@ export default {
       reportDetailData: {},
       callLog: false,
       reportLog: false,
-      callLogData: [],
-      reportLogData: [],
+      eventLogData: [],
+      eventLogQueryParams: {
+        eventName:'',
+        eventKey:'',
+        startTime: '',
+        endTime: '',
+        pageNum: 1,
+        pageSize: 10
+      },
+      eventLogQueryTotal: 0,
+      eventLogDetailDialog: false,
+      eventLogDetailData: {},
+
       // 查询参数
       queryParams: {
         psCode: null,
@@ -793,6 +867,8 @@ export default {
         this.handleCallLogQuery()
       }else if(newVal ==='reportLog'){
         this.handleLogQuery()
+      } else if (newVal === 'eventLog') {
+        this.handleEventLogQuery()
       }
     }
   },
@@ -883,6 +959,47 @@ export default {
       }
       return statusMap[status] || '未知状态'
     },
+    /** 查询设备事件日志 */
+    handleEventLogQuery() {
+      if (this.curRow) {
+        const startTime = this.logDaterangeTime[0]
+        const endTime = this.logDaterangeTime[1]
+        const eventKey = this.eventLogQueryParams.eventName;
+        this.getEventLog(this.curRow.deviceCode, eventKey,startTime, endTime)
+      }
+    },
+    /** 事件日志表格 */
+    getEventLog(deviceCode,eventKey,startTime, endTime) {
+      const query = {
+        objCode: deviceCode,
+        startRecTime: startTime,
+        endRecTime: endTime,
+        eventKey: eventKey,
+        pageNum: this.eventLogQueryParams.pageNum,
+        pageSize: this.eventLogQueryParams.pageSize
+      }
+      listEventLog(query).then(response => {
+        this.eventLogData = response.rows || []
+        console.log("事件日志",this.eventLogData)
+        this.eventLogQueryTotal = response.total
+      })
+    },
+    /** 事件日志详情 */
+    handleEventLogDetail(row) {
+      getEventLog(row.id).then(response => {
+        this.eventLogDetailData = response.data || {}
+        console.log("事件日志详情",this.eventLogDetailData)
+        this.eventLogDetailDialog = true
+      })
+    },
+    /** 重置事件日志查询 */
+    resetEventLogQuery() {
+      this.logDaterangeTime = []
+      this.eventLogQueryParams.eventName=''
+      this.eventLogQueryParams.pageNum = 1
+      this.eventLogQueryParams.pageSize = 10
+      this.handleEventLogQuery()
+    },
     /**重置调用日志*/
     resetCallLogQuery() {
       this.callDaterangeTime = []
@@ -967,7 +1084,6 @@ export default {
 
       })
     },
-
     formatEventType(row, column, cellValue) {
       return cellValue === 1 ? '消息上报' : '异常告警'
     },
@@ -1042,7 +1158,6 @@ export default {
     getComponentList(deviceCode) {
       listByDevice(deviceCode).then(response => {
         this.ComponentList = response.data
-        // this.componentTotal=response.total
       })
     },
     /** 查询区域树结构 */

+ 125 - 19
ems-ui-cloud/src/views/devmgr/attr/index.vue

@@ -94,6 +94,7 @@
                   </el-dropdown-item>
                   <el-dropdown-item @click.native="showCallLog(scope.row)">调用日志</el-dropdown-item>
                   <el-dropdown-item @click.native="showReportLog(scope.row)">设备日志</el-dropdown-item>
+                  <el-dropdown-item @click.native="showEventLog(scope.row)">事件日志</el-dropdown-item>
                 </el-dropdown-menu>
               </el-dropdown>
             </template>
@@ -242,6 +243,68 @@
           </div>
         </el-dialog>
 
+        <!-- 事件日志弹框 -->
+        <el-dialog :visible.sync="eventLogDialog" title="事件日志" width="60%">
+          <el-form inline>
+            <el-form-item label="记录时间">
+              <el-date-picker
+                v-model="logDaterangeTime"
+                style="width: 240px"
+                value-format="yyyy-MM-dd HH:mm"
+                type="datetimerange"
+                range-separator="-"
+                start-placeholder="开始日期"
+                end-placeholder="结束日期"
+              ></el-date-picker>
+            </el-form-item>
+            <!-- 新增事件名称查询条件 -->
+            <el-form-item label="事件名称">
+              <el-select v-model="eventLogQueryParams.eventName" clearable>
+                <el-option
+                  v-for="item in eventData"
+                  :key="item.eventKey"
+                  :label="item.eventName"
+                  :value="item.eventKey"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item>
+              <el-button type="primary" @click="handleEventLogQuery">查询</el-button>
+              <el-button @click="resetEventLogQuery">重置</el-button>
+            </el-form-item>
+          </el-form>
+          <el-table :data="eventLogData" style="width: 100%" :show-header="true" :empty-text="'暂无数据'">
+            <el-table-column type="index" label="序号" width="50" align="center"></el-table-column>
+            <el-table-column label="对象编号" prop="objCode"></el-table-column>
+            <el-table-column label="对象名称" prop="objName"></el-table-column>
+            <el-table-column label="事件名称" prop="eventName"></el-table-column>
+            <el-table-column label="事件时间" prop="eventTime"></el-table-column>
+            <el-table-column label="操作" align="center" width="100">
+              <template slot-scope="scope">
+                <el-button type="text" size="mini" icon="el-icon-info" @click="handleEventLogDetail(scope.row)">详情
+                </el-button>
+              </template>
+            </el-table-column>
+          </el-table>
+          <pagination
+            v-show="eventLogQueryTotal > 0"
+            :total="eventLogQueryTotal"
+            :page.sync="eventLogQueryParams.pageNum"
+            :limit.sync="eventLogQueryParams.pageSize"
+            @pagination="handleEventLogQuery"
+          />
+        </el-dialog>
+        <!-- 事件日志详情弹框 -->
+        <el-dialog :visible.sync="eventLogDetailDialog" title="事件日志详情" width="50%">
+          <div v-if="eventLogDetailData">
+            <p><strong>对象编号:</strong>{{ eventLogDetailData.objCode }}</p>
+            <p><strong>对象名称:</strong>{{ eventLogDetailData.objName }}</p>
+            <p><strong>事件名称:</strong>{{ eventLogDetailData.eventName }}</p>
+            <p><strong>事件时间:</strong>{{ eventLogDetailData.eventTime }}</p>
+            <p><strong>事件描述:</strong>{{ eventLogDetailData.eventDetail }}</p>
+          </div>
+        </el-dialog>
+       <!--详情        -->
         <el-dialog :visible.sync="open" title="设备状态详情" custom-class="detail-dialog">
           <div v-if="curRow">
             <!--分页导航 @tab-click="handleTabClick"-->
@@ -252,6 +315,7 @@
               <el-tab-pane label="设备能力" name="ability"></el-tab-pane>
             </el-tabs>
 
+
             <!--  设备基本信息 -->
             <div v-if="activeTab === 'basic'">
               <el-card class="box-card">
@@ -313,18 +377,6 @@
                 </el-table>
               </el-card>
             </div>
-            <!--设备事件-->
-            <div v-if="activeTab === 'event'">
-              <el-card class="box-card">
-                <el-table :data="eventData" style="width: 100%" :show-header="true" :empty-text="'暂无数据'">
-                  <el-table-column type="index" label="序号" width="50" align="center"></el-table-column>
-                  <el-table-column label="事件名称" prop="eventKey"></el-table-column>
-                  <el-table-column label="事件类型" prop="eventType" :formatter="formatEventType"></el-table-column>
-                  <el-table-column label="事件代码" prop="eventCode"></el-table-column>
-                  <el-table-column label="外部事件代码" prop="extEventCode"></el-table-column>
-                </el-table>
-              </el-card>
-            </div>
           </div>
         </el-dialog>
       </el-col>
@@ -342,7 +394,7 @@ import Treeselect from '@riophae/vue-treeselect'
 import '@riophae/vue-treeselect/dist/vue-treeselect.css'
 import { listcallAbility } from '@/api/basecfg/objAbility'
 import { getObjAttr } from '@/api/basecfg/objAttribute'
-import { listReportLog, getReportLog, listCallLog, getCallLog } from '@/api/basecfg/objLog'
+import { listReportLog, getReportLog, listCallLog, getCallLog,listEventLog,getEventLog } from '@/api/basecfg/objLog'
 
 export default {
   name: 'Device',
@@ -426,6 +478,19 @@ export default {
         pageSize: 10
       },
       callLogQueryTotal: 0,
+      eventLogDialog: false,
+      eventLogData: [],
+      eventLogQueryParams: {
+        eventKey:'',
+        eventName:'',
+        startTime: '',
+        endTime: '',
+        pageNum: 1,
+        pageSize: 10
+      },
+      eventLogQueryTotal: 0,
+      eventLogDetailDialog: false,
+      eventLogDetailData: {},
       callStatusOptions: {
         0: '成功',
         1: '进行中',
@@ -497,6 +562,50 @@ export default {
       this.getReportLog(row.deviceCode, this.logQueryParams.startTime, this.logQueryParams.endTime) // 加载设备日志数据
       this.reportLog = true
     },
+    showEventLog(row) {
+      this.curRow = row;
+      this.getEventLog(row.deviceCode, this.logDaterangeTime[0], this.logDaterangeTime[1]);
+      this.eventLogDialog = true;
+    },
+   /** 查询事件日志*/
+    handleEventLogQuery() {
+      if (this.curRow) {
+        const startTime = this.logDaterangeTime[0];
+        const endTime = this.logDaterangeTime[1];
+        const eventKey = this.eventLogQueryParams.eventName;
+        this.getEventLog(this.curRow.deviceCode, eventKey,startTime, endTime)
+      }
+    },
+/** 获取事件日志数据*/
+    getEventLog(deviceCode, eventKey,startTime, endTime) {
+      const query = {
+        objCode: deviceCode,
+        startRecTime: startTime,
+        endRecTime: endTime,
+        eventKey: eventKey,
+        pageNum: this.eventLogQueryParams.pageNum,
+        pageSize: this.eventLogQueryParams.pageSize
+      };
+      listEventLog(query).then(response => {
+        this.eventLogData = response.rows || [];
+        this.eventLogQueryTotal = response.total;
+      });
+    },
+   /** 重置事件日志查询*/
+    resetEventLogQuery() {
+      this.logDaterangeTime = [];
+      this.eventLogQueryParams.eventName=''
+      this.eventLogQueryParams.pageNum = 1;
+      this.eventLogQueryParams.pageSize = 10;
+      this.handleEventLogQuery();
+    },
+   /** 事件日志详情*/
+    handleEventLogDetail(row) {
+      getEventLog(row.id).then(response => {
+        this.eventLogDetailData = response.data || {};
+        this.eventLogDetailDialog = true;
+      });
+    },
     /**重置调用日志*/
     resetCallLogQuery() {
       this.callDaterangeTime = []
@@ -519,7 +628,7 @@ export default {
     /**调用日志表格*/
     getCallLog(deviceCode, startTime, endTime, abilityKey, callStatus) {
       const query = {
-        obj_code: deviceCode,
+        objCode: deviceCode,
         objType: '2',
         startRecTime: startTime,
         endRecTime: endTime,
@@ -587,6 +696,8 @@ export default {
       }
       getModelByCode(row.deviceModel).then(response => {
         this.abilityDevice = response.data?.abilityList.filter(item => item.hiddenFlag === 1) || []
+        this.eventData = response.data?.eventList || []
+
       })
     },
     /**设备能力-执行按钮*/
@@ -665,7 +776,6 @@ export default {
       this.loading = true
       listDevRecursionByArea(this.queryParams).then(response => {
         this.deviceList = response.rows
-        console.log('this.deviceList', this.deviceList)
         this.total = response.total
         this.loading = false
 
@@ -713,10 +823,6 @@ export default {
       console.log('设备this.curRow', this.curRow)
       getModelByCode(this.curRow.deviceModel).then(response => {
         this.open = true
-        const code = response.data
-        console.log('code', code)
-        this.eventData = response.data?.eventList || []
-        // 过滤
         this.abilityData = response.data?.abilityList.filter(item => item.hiddenFlag === 1) || []
         this.attrData = response.data?.attrList || []
       })