log.vue 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. <template>
  2. <div class="system-log-container">
  3. <vab-query-form>
  4. <vab-query-form-top-panel>
  5. <el-form
  6. :inline="true"
  7. label-width="60px"
  8. :model="queryForm"
  9. @submit.native.prevent>
  10. <el-form-item label="账号">
  11. <el-input
  12. v-model.trim="queryForm.account"
  13. clearable
  14. placeholder="请输入账号" />
  15. </el-form-item>
  16. <el-form-item label="周期">
  17. <el-date-picker
  18. v-model="queryForm.searchDate"
  19. end-placeholder="结束日期"
  20. format="yyyy-MM-dd"
  21. start-placeholder="开始日期"
  22. type="daterange"
  23. value-format="yyyy-MM-dd" />
  24. </el-form-item>
  25. <el-form-item>
  26. <el-button icon="el-icon-search" type="primary" @click="queryData">
  27. 查询
  28. </el-button>
  29. </el-form-item>
  30. </el-form>
  31. </vab-query-form-top-panel>
  32. </vab-query-form>
  33. <el-table
  34. v-loading="listLoading"
  35. :data="list"
  36. :height="$baseTableHeight(1)">
  37. <el-table-column
  38. align="center"
  39. label="日志类型"
  40. prop="type"
  41. show-overflow-tooltip
  42. width="230px" />
  43. <el-table-column
  44. align="center"
  45. label="账号"
  46. prop="account"
  47. show-overflow-tooltip />
  48. <el-table-column
  49. align="center"
  50. label="执行结果"
  51. prop="executeResult"
  52. show-overflow-tooltip>
  53. <template #default="{ row }">
  54. <span v-if="row.executeResult === '登录成功'">
  55. <span class="vab-dot vab-dot-success"><span></span></span>
  56. {{ row.executeResult }}
  57. </span>
  58. <span v-else>
  59. <span class="vab-dot vab-dot-error"><span></span></span>
  60. {{ row.executeResult }}
  61. </span>
  62. </template>
  63. </el-table-column>
  64. <el-table-column align="center" label="登录IP" prop="ip" />
  65. <el-table-column
  66. align="center"
  67. label="访问时间"
  68. prop="datetime"
  69. show-overflow-tooltip />
  70. <template #empty>
  71. <el-image
  72. class="vab-data-empty"
  73. :src="require('@/assets/empty_images/data_empty.png')" />
  74. </template>
  75. </el-table>
  76. <el-pagination
  77. background
  78. :current-page="queryForm.pageNo"
  79. :layout="layout"
  80. :page-size="queryForm.pageSize"
  81. :total="total"
  82. @current-change="handleCurrentChange"
  83. @size-change="handleSizeChange" />
  84. </div>
  85. </template>
  86. <script>
  87. import { getList } from '@/api/systemLog'
  88. export default {
  89. name: 'SystemLog',
  90. data() {
  91. return {
  92. list: [],
  93. listLoading: true,
  94. layout: 'total, sizes, prev, pager, next, jumper',
  95. total: 0,
  96. queryForm: {
  97. account: '',
  98. searchDate: '',
  99. pageNo: 1,
  100. pageSize: 20,
  101. },
  102. }
  103. },
  104. created() {
  105. this.fetchData()
  106. },
  107. methods: {
  108. handleSizeChange(val) {
  109. this.queryForm.pageSize = val
  110. this.fetchData()
  111. },
  112. handleCurrentChange(val) {
  113. this.queryForm.pageNo = val
  114. this.fetchData()
  115. },
  116. queryData() {
  117. this.queryForm.pageNo = 1
  118. this.fetchData()
  119. },
  120. async fetchData() {
  121. this.listLoading = true
  122. const {
  123. data: { list, total },
  124. } = await getList(this.queryForm)
  125. this.list = list
  126. this.total = total
  127. this.listLoading = false
  128. },
  129. },
  130. }
  131. </script>