index.blade.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. @extends('layouts.app')
  2. @section('title')查询-日志@endsection
  3. @section('content')
  4. <div class="container-fluid">
  5. <a class="btn btn-outline-dark" href="{{url('maintenance/syncRedisLogs')}}">同步日志</a>
  6. <div class="card">
  7. <div id="form_div"></div>
  8. <div class="card-body">
  9. {{--TODO 错误信息提示 待抽离成为模板--}}
  10. @foreach (['danger', 'warning', 'success', 'info'] as $msg)
  11. @if(session()->has($msg))
  12. <div class="flash-message">
  13. <p class="alert alert-{{ $msg }}">
  14. {{ session()->get($msg) }}
  15. </p>
  16. </div>
  17. @endif
  18. @endforeach
  19. <table class="table table-striped table-sm" id="list">
  20. <tr>
  21. <th>ID</th>
  22. <th>用户</th>
  23. <th>类名</th>
  24. <th>方法名</th>
  25. <th>ip</th>
  26. <th>时间</th>
  27. </tr>
  28. <tr v-for="(log,i) in logs" class="hover" style="cursor: pointer;" @click="selectTr===i+1?selectTr=0:selectTr=i+1" :class="selectTr===i+1?'focusing' : ''">
  29. <td class="text-muted">@{{log.id}}<span class="badge badge-danger small pull-right mr-3" v-if="log.mark == 'Y'">异常</span></td>
  30. <td><span v-if="log.user">@{{log.user.name}}</span></td>
  31. <td><a :href="'{{url('maintenance/log')}}/'+log.id" target="_blank">@{{log.class}}</a></td>
  32. <td>@{{log.method}}</td>
  33. <td>@{{log.ip}}</td>
  34. <td class="text-muted">@{{log.created_at}}</td>
  35. </tr>
  36. </table>
  37. @if($logs)
  38. <!--带参分页查询-->
  39. {{$logs->withQueryString()->links()}}
  40. @endif
  41. </div>
  42. </div>
  43. </div>
  44. <style>
  45. .hover:hover {
  46. color: #1f6fb2;
  47. }
  48. </style>
  49. @endsection
  50. @section('lastScript')
  51. <script type="text/javascript" src="{{mix('js/queryForm/queryForm.js')}}"></script>
  52. <script>
  53. new Vue({
  54. el: "#list",
  55. data: {
  56. logs: {!! json_encode($logs->toArray()['data'])??[] !!},
  57. selectTr:0,
  58. },
  59. mounted: function () {
  60. let data = [
  61. [
  62. {name: 'name', type: 'input', tip: '操作者', placeholder: '操作者'},
  63. {name: 'type',
  64. type: 'select_multiple_select',
  65. tip: ['输入关键词快速定位下拉列表,回车确定', '选择要显示的类型'],
  66. placeholder: ['类型', '定位或多选类型'],
  67. data: [{'name': 'log', 'value': 'log'},
  68. {'name': 'warning', 'value': 'warning'},
  69. {'name': 'error', 'value': 'error'},
  70. {'name': 'panic', 'value': 'panic'},
  71. {'name': 'fatal', 'value': 'fatal'}],},
  72. {name: 'description', type: 'input', tip: '详情:可在两侧添加百分号(%)进行模糊搜索', placeholder: '详情'},
  73. {name: 'class', type: 'input', tip: '类名:可在两侧添加百分号(%)进行模糊搜索', placeholder: '类名'},
  74. {name: 'method', type: 'input', tip: '方法名:可在两侧添加百分号(%)进行模糊搜索', placeholder: '方法名'},
  75. {name:'created_at_start',type:'dateTime',tip:'选择显示指定日期的起始时间,只选一个或者不选,则查询当天'},
  76. {name:'created_at_end',type:'dateTime',tip:'选择显示指定日期的截止,只选一个或者不选,则查询当天'},
  77. {name:'is_exception',type:'checkbox',tip:'仅显示异常', data: [{name: 'true', value: '仅显示异常'}]}
  78. ]
  79. ];
  80. this.from = new query({
  81. el: '#form_div',
  82. condition: data,
  83. });
  84. this.from.init();
  85. },
  86. });
  87. </script>
  88. @endsection