log.vue 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. <template>
  2. <cl-crud ref="crud" @load="onLoad">
  3. <el-row type="flex">
  4. <cl-refresh-btn></cl-refresh-btn>
  5. <el-button
  6. v-permission="$service.system.log.permission.clear"
  7. size="mini"
  8. type="danger"
  9. @click="clear"
  10. >
  11. 清空
  12. </el-button>
  13. <cl-filter label="日志保存天数">
  14. <el-input-number
  15. controls-position="right"
  16. size="mini"
  17. :max="10000"
  18. :min="1"
  19. v-model="day"
  20. @blur="saveDay"
  21. ></el-input-number>
  22. </cl-filter>
  23. <cl-flex1 />
  24. <cl-search-key placeholder="请输入请求地址, 参数,ip地址"></cl-search-key>
  25. </el-row>
  26. <el-row>
  27. <cl-table v-bind="table"></cl-table>
  28. </el-row>
  29. <el-row type="flex">
  30. <cl-pagination></cl-pagination>
  31. </el-row>
  32. </cl-crud>
  33. </template>
  34. <script>
  35. import { mapGetters } from "vuex";
  36. export default {
  37. data() {
  38. return {
  39. day: 1,
  40. table: {
  41. props: {
  42. "default-sort": {
  43. prop: "createTime",
  44. order: "descending"
  45. }
  46. },
  47. "context-menu": [
  48. {
  49. label: "清空",
  50. callback: (_, done) => {
  51. this.clear();
  52. done();
  53. }
  54. }
  55. ],
  56. columns: [
  57. {
  58. type: "index",
  59. label: "#",
  60. align: "center",
  61. width: 60
  62. },
  63. {
  64. prop: "userId",
  65. label: "用户ID",
  66. align: "center"
  67. },
  68. {
  69. prop: "name",
  70. label: "昵称",
  71. align: "center",
  72. minWidth: "150"
  73. },
  74. {
  75. prop: "action",
  76. label: "请求地址",
  77. align: "center",
  78. minWidth: "200",
  79. "show-overflow-tooltip": true
  80. },
  81. {
  82. prop: "params",
  83. label: "参数",
  84. align: "center",
  85. minWidth: "200",
  86. "show-overflow-tooltip": true
  87. },
  88. {
  89. prop: "ip",
  90. label: "ip",
  91. minWidth: "180",
  92. align: "center"
  93. },
  94. {
  95. prop: "ipAddr",
  96. label: "ip地址",
  97. minWidth: "150",
  98. align: "center"
  99. },
  100. {
  101. prop: "createTime",
  102. label: "创建时间",
  103. minWidth: "150",
  104. align: "center",
  105. sortable: true
  106. }
  107. ]
  108. }
  109. };
  110. },
  111. computed: {
  112. ...mapGetters(["permission"])
  113. },
  114. created() {
  115. this.$service.system.log.getKeep().then((res) => {
  116. this.day = res;
  117. });
  118. },
  119. methods: {
  120. onLoad({ ctx, app }) {
  121. ctx.service(this.$service.system.log).done();
  122. app.refresh();
  123. },
  124. saveDay() {
  125. this.$service.system.log.setKeep(this.day).then(() => {
  126. this.$message.success("保存成功");
  127. });
  128. },
  129. clear() {
  130. this.$confirm("是否要清空日志", "提示", {
  131. type: "warning"
  132. })
  133. .then(() => {
  134. this.$service.system.log
  135. .clear()
  136. .then(() => {
  137. this.$message.success("清空成功");
  138. this.$refs["crud"].refresh();
  139. })
  140. .catch((err) => {
  141. this.$message.error(err);
  142. });
  143. })
  144. .catch(() => {});
  145. }
  146. }
  147. };
  148. </script>