SystemLogs.vue 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. <template>
  2. <div id="SystemLogs">
  3. <h3 style="display: inline-block">系统日志</h3>
  4. <div style="display: inline-block; cursor: pointer; margin-left: 20px" @click="refresh">
  5. <el-tooltip
  6. class="box-item"
  7. effect="dark"
  8. content="刷新日志"
  9. placement="right"
  10. >
  11. <el-icon ><IconPark-refresh/></el-icon>
  12. </el-tooltip>
  13. </div>
  14. <el-form :model="filterForm" :inline="true" style="display: inline-block;float: right">
  15. <el-form-item label="日期范围:" style="width: 350px">
  16. <el-date-picker v-model="filterForm.dateRange" type="daterange"
  17. range-separator="至"
  18. start-placeholder="起始日期"
  19. end-placeholder="终止日期"
  20. value-format="x"
  21. @change="handleDateRangeChange"
  22. />
  23. </el-form-item>
  24. <el-form-item label="用户名:" style="width: 200px">
  25. <el-input v-model="filterForm.username" placeholder="请输入用户名" />
  26. </el-form-item>
  27. <el-form-item>
  28. <el-button type="primary" @click="getData">搜索</el-button>
  29. </el-form-item>
  30. </el-form>
  31. <el-divider/>
  32. <el-table :data="tableData" v-loading="loading" element-loading-text="正在加载,请稍后..."
  33. :border="true" :stripe="true" :height="$store.state.windowsHeight*0.67" style="width: 100%;margin-bottom: 15px;">
  34. <el-table-column prop="userName" label="用户名" width="140"/>
  35. <el-table-column prop="loginIp" label="访问ip" width="120"/>
  36. <el-table-column prop="createTime" label="访问时间" width="170">
  37. <template #default="scope">
  38. {{ $util.datetime.format(scope.row.createTime) }}
  39. </template>
  40. </el-table-column>
  41. <el-table-column prop="requestUrl" label="访问接口" width="270" />
  42. <el-table-column prop="content" label="内容"/>
  43. <el-table-column prop="state" label="状态">
  44. <template #default="scope">
  45. <span v-if="scope.row.state==1">成功</span>
  46. <span v-else-if="scope.row.state==2">失败</span>
  47. <span v-else></span>
  48. </template>
  49. </el-table-column>
  50. </el-table>
  51. <el-pagination style="float:right" background layout="sizes, prev, pager, next, jumper, total"
  52. v-model:current-page="pageInfo.page" v-model:page-size="pageInfo.pageSize"
  53. v-model:total="pageInfo.total"/>
  54. </div>
  55. </template>
  56. <script>
  57. import api from "@/api/data/SystemInfo"
  58. export default {
  59. data() {
  60. return {
  61. loading: false,
  62. tableData: [],
  63. pageInfo: {
  64. page: 1,
  65. pageSize: 10,
  66. total: 0
  67. },
  68. filterForm: {},
  69. }
  70. },
  71. created() {
  72. },
  73. mounted() {
  74. this.getData();
  75. },
  76. watch: {
  77. "pageInfo.page": function (val) {
  78. if (val > 0) {
  79. this.getData();
  80. }
  81. },
  82. "pageInfo.pageSize": function () {
  83. let app = this;
  84. this.pageInfo.page = -1;
  85. setTimeout(function () {
  86. app.pageInfo.page = 1;
  87. }, 50)
  88. },
  89. },
  90. methods: {
  91. handleLoading(flag) {
  92. let app = this;
  93. if (flag) {
  94. app.loading = true;
  95. } else {
  96. setTimeout(() => {
  97. app.loading = false;
  98. }, 500);
  99. }
  100. },
  101. getData() {
  102. let app = this;
  103. let end = app.$util.datetime.nowTimestamp();
  104. let start = app.$util.datetime.now().subtract(30, 'day').valueOf();
  105. let params = {
  106. page: app.pageInfo.page-1,
  107. pageSize: app.pageInfo.pageSize,
  108. username: app.filterForm.username,
  109. startDate: start,
  110. endDate: end,
  111. serviceId: '8,9'
  112. };
  113. app.handleLoading(true)
  114. api.getLogData(params).then(res=>{
  115. if (res.code===200) {
  116. app.tableData=res.content;
  117. app.pageInfo.total = res.total;
  118. }
  119. app.handleLoading(false)
  120. }).catch(()=>{
  121. app.handleLoading(false)
  122. })
  123. },
  124. refresh() {
  125. let app = this;
  126. app.pageInfo.pageSize=-1;
  127. app.filterForm = {};
  128. setTimeout(function () {
  129. app.pageInfo.pageSize=10;
  130. })
  131. },
  132. handleDateRangeChange(val) {
  133. this.filterForm.startDate = val[0]
  134. this.filterForm.endDate = val[1]
  135. },
  136. }
  137. }
  138. </script>
  139. <style>
  140. #SystemLogs {
  141. padding-left: 2%;
  142. }
  143. </style>