Ver código fonte

优化错误日志

wenningning 3 anos atrás
pai
commit
8621e19a07
2 arquivos alterados com 129 adições e 25 exclusões
  1. 1 1
      src/api/ncs_errorlog.js
  2. 128 24
      src/views/calling-ncError/index.vue

+ 1 - 1
src/api/ncs_errorlog.js

@@ -21,7 +21,7 @@ export function remove(params) {
 
 export function getModel(id) {
   return request({
-    url: `/mgr/ncError/${id}`,
+    url: `/ncs/error_log/getErrorLog/${id}`,
     method: 'GET',
     loading: true,
     data: id

+ 128 - 24
src/views/calling-ncError/index.vue

@@ -16,9 +16,9 @@
       @sortChanged="gridSortChange"
     >
       <div slot="toolbar" class="inner-toolbar">
-        <div class="toolbar-search">
-          <en-table-search placeholder="请输入搜索关键字" @search="handlerSearch" />
-        </div>
+<!--        <div class="toolbar-search">-->
+<!--          <en-table-search placeholder="请输入搜索关键字" @search="handlerSearch" />-->
+<!--        </div>-->
         <div class="toolbar-btns">
           <el-button type="danger" size="mini" @click="clearError">清空日志</el-button>
         </div>
@@ -37,6 +37,33 @@
     </ag-grid-layout>
 
     <el-dialog :visible.sync="shopVisible" title="错误详情" class="customer-dialog">
+      <div>
+        <table border="1" class="tablewen">
+          <tr>
+            <td>设备:</td>
+            <td><span>{{ deviceTypeGetter({ data: selectedRow }) }} {{ selectedRow.eth_mac }}</span></td>
+            <td>设备位置:</td>
+            <td>
+              <span>{{ selectedRow.full_name }}</span>
+            </td>
+          </tr>
+          <tr>
+            <td>类名:</td>
+            <td><span>{{ selectedRow.class_name }}</span></td>
+            <td>方法名:</td>
+            <td><span>{{ selectedRow.method_name }}</span></td>
+          </tr>
+          <tr>
+            <td>异常类型:</td>
+            <td><span>{{ selectedRow.exception_name }}</span></td>
+            <td>错误时间:</td>
+            <td><span>{{ dateValueFormatter({ value: selectedRow.create_time }) }}</span></td>
+          </tr>
+        </table>
+        <div class="td1">错误信息:</div>
+        <div class="td2">{{ selectedRow.err_msg }}</div>
+      </div>
+      <div class="td1">详细错误:</div>
       <el-scrollbar>
         <div style="height: 500px;padding:15px" v-html="selectedRow.stack_trace" />
       </el-scrollbar>
@@ -49,15 +76,20 @@
 import * as API_ErrorLog from '@/api/ncs_errorlog'
 import { unixToDate } from '@/utils/Foundation'
 import { AG_GRID_LOCALE_CN } from '@/utils/AgGridVueLocaleCn'
+import ListFilter from '@/components/AgGridCustomFilter/ListFilter'
+import RadioFilter from '@/components/AgGridCustomFilter/RadioFilter'
 export default {
   name: 'Index',
+  components: { ListFilter, RadioFilter },
   data() {
     return {
       tableData: [],
       /** 列表参数 */
       params: {
         page_size: 20,
-        page_no: 1
+        page_no: 1,
+        sort: 'id',
+        dir: 'desc'
       },
       pageData: [],
       loading: false,
@@ -72,7 +104,27 @@ export default {
       localeText: AG_GRID_LOCALE_CN,
       filterState: null,
       rowSelection: null,
-      selectedRow: {}
+      selectedRow: {},
+      /** 设备类型转换数组 **/
+      deviceTypeTransfer: [
+        { key: '护士主机', value: 1 },
+        { key: '医生主机', value: 2 },
+        { key: '门口机', value: 3 },
+        { key: '病床分机', value: 4 },
+        { key: 'LCD走廊屏', value: 5 },
+        { key: 'LED点阵屏', value: 6 },
+        { key: '移动设备', value: 7 },
+        // { key: '护工腕表', value: 8 },
+        { key: '病人腕表', value: 9 },
+        { key: '手机App', value: 10 },
+        { key: '总线转换盒', value: 11 },
+        { key: '模拟分机', value: 12 },
+        { key: '模拟紧急按钮', value: 13 },
+        { key: '模拟门灯', value: 14 },
+        { key: '遥控器', value: 15 },
+        { key: '信标', value: 16 },
+        { key: '看板', value: 17 }
+      ]
     }
   },
   computed: {
@@ -94,17 +146,24 @@ export default {
         resizable: false,
         valueGetter: this.hashValueGetter
       },
-      { headerName: 'ID', field: 'id', sortable: true, filter: 'agNumberColumnFilter' },
+      { headerName: '标识码', field: 'eth_mac', sortable: true, filter: 'agTextColumnFilter', flex: 1 },
+      { headerName: '设备', field: 'device_type', sortable: true, filterFramework: 'ListFilter', flex: 1,
+        filterParams: {
+          listData: this.deviceTypeTransfer
+        },
+        valueGetter: this.deviceTypeGetter
+      },
+      { headerName: '设备位置', field: 'full_name', sortable: true, filter: 'agTextColumnFilter', flex: 1 },
       { headerName: '类名', field: 'class_name', sortable: true, filter: 'agTextColumnFilter', filterParams: {
         debounceMs: 200,
         newRowsAction: 'keep'
-      }},
+      }, flex: 2 },
       { headerName: '方法名', field: 'method_name', sortable: true, filter: true, filterParams: {
         debounceMs: 200,
         newRowsAction: 'keep'
       }},
-      { headerName: '异常类型', field: 'exception_name', sortable: true, filter: true, flex: 1 },
-      { headerName: '错误信息', field: 'err_msg', sortable: true, filter: true, flex: 1 },
+      // { headerName: '异常类型', field: 'exception_name', sortable: true, filter: true, flex: 1 },
+      // { headerName: '错误信息', field: 'err_msg', sortable: true, filter: true, flex: 1 },
       { headerName: '错误时间', field: 'create_time',
         valueFormatter: this.dateValueFormatter,
         filterParams: {
@@ -113,9 +172,8 @@ export default {
             return (new Date(celldate).getTime() / 1000) - (filterLocalDateAtMidnight.getTime() / 1000)
           }
         },
-        sortable: true, filter: 'date', flex: 1 },
-      { headerName: '堆栈跟踪', field: 'stack_trace',
-        sortable: true, flex: 1 }
+        sortable: true, filter: 'date', flex: 1 }
+      // { headerName: '堆栈跟踪', field: 'stack_trace', sortable: true, flex: 1 }
     ]
     this.defaultColDef = {
       // filter: 'agTextColumnFilter',
@@ -214,7 +272,6 @@ export default {
           data_total: response.data_total
         }
         this.rowData = [...response.data]
-        console.log('rowData', this.rowData)
       }).catch(() => {
         this.loading = false
       })
@@ -237,24 +294,27 @@ export default {
     },
     showDetail(row) {
       this.selectedRow = { ...row.data }
+      this.getError()
       this.shopVisible = true
     },
+    getError() {
+      const _this = this
+      API_ErrorLog.getModel(this.selectedRow.id).then(response => {
+        _this.selectedRow.stack_trace = response.stack_trace
+      })
+    },
     forDate(row, column, cellValue) {
       return unixToDate(row.create_time)
     },
     testComparator(valueA, valueB, nodeA, nodeB, isInverted) {
-      console.log('a', new Date(valueA))
-
       if (valueB === null) {
         return 0
       }
       const cellDate = new Date(valueB)
-
       const day = cellDate.getDate()
       const month = cellDate.getMonth()
       const year = cellDate.getFullYear()
       const cellDateMidNight = new Date(year, month, day)
-      console.log('b', cellDateMidNight)
       if (new Date(valueA) < cellDateMidNight) {
         return 1
       } else if (new Date(valueA) > cellDateMidNight) {
@@ -264,7 +324,6 @@ export default {
       }
     },
     gridSortChange(param) {
-      console.log('sortparam', param)
       const columnState = param.columnApi.getColumnState()
       // 排序状态
       const sortState = columnState.filter(function(s) {
@@ -296,21 +355,16 @@ export default {
       }
 
       this.getList()
-      console.log(sortState)
     },
     filterModifed(param) {
-      console.log(param)
       var model = param.api.getFilterModel()
-      console.log('model', JSON.stringify(model))
       this.params.filter = JSON.stringify(model)
       this.getList()
     },
     numberParser(text) {
-      console.log(text)
       return true
     },
     textCustomComparator(filter, value, text) {
-      console.log('fi', filter)
       return true
     },
     hashValueGetter(params) {
@@ -319,6 +373,14 @@ export default {
     },
     dateValueFormatter(params) {
       return unixToDate(params.value)
+    },
+    /** 获取设备类型文字显示,从deviceTypeTransfer 中找出value值对应的key显示出来 */
+    deviceTypeGetter(params) {
+      const gridVal = params.data.device_type
+      if (gridVal) {
+        return this.deviceTypeTransfer.filter(p => p.value === gridVal).map(p => p.key)
+      }
+      return ''
     }
 
   }
@@ -338,5 +400,47 @@ export default {
     align-items: center;
   }
   }
-
+  .tablewen{
+    width:100%;
+    border-collapse:collapse;
+    border: 1px solid #a5b6c8;
+    margin-bottom: 30px;
+    line-height: 40px;
+  }
+  .tablewen td{
+    font-size: 14px;
+    -webkit-margin-before: 0.83em;
+    -webkit-margin-after: 0.83em;
+    -webkit-margin-start: 0px;
+    -webkit-margin-end: 0px;
+    font-weight: bold;
+  }
+  .tablewen td span{
+    font-size: 0.8em;
+    -webkit-margin-before: 0.83em;
+    -webkit-margin-after: 0.83em;
+    -webkit-margin-start: 0px;
+    -webkit-margin-end: 0px;
+    font-weight: bold;
+    color: #8c939d;
+    margin-left: 5px;
+  }
+  .td1 {
+    font-size: 14px;
+    -webkit-margin-before: 0.83em;
+    -webkit-margin-after: 0.83em;
+    -webkit-margin-start: 0px;
+    -webkit-margin-end: 0px;
+    font-weight: bold;
+  }
+  .td2 {
+    font-size: 0.9em;
+    -webkit-margin-before: 0.93em;
+    -webkit-margin-after: 0.93em;
+    -webkit-margin-start: 0;
+    -webkit-margin-end: 0;
+    font-weight: bold;
+    color: #8c939d;
+    margin-left: 5px;
+  }
 </style>