SecurityLog.vue 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <script setup lang="ts">
  2. import dayjs from "dayjs";
  3. import { getMineLogs } from "@/api/user";
  4. import { reactive, ref, onMounted } from "vue";
  5. import { deviceDetection } from "@pureadmin/utils";
  6. import type { PaginationProps } from "@pureadmin/table";
  7. defineOptions({
  8. name: "SecurityLog"
  9. });
  10. const loading = ref(true);
  11. const dataList = ref([]);
  12. const pagination = reactive<PaginationProps>({
  13. total: 0,
  14. pageSize: 10,
  15. currentPage: 1,
  16. background: true,
  17. layout: "prev, pager, next"
  18. });
  19. const columns: TableColumnList = [
  20. {
  21. label: "详情",
  22. prop: "summary",
  23. minWidth: 140
  24. },
  25. {
  26. label: "IP 地址",
  27. prop: "ip",
  28. minWidth: 100
  29. },
  30. {
  31. label: "地点",
  32. prop: "address",
  33. minWidth: 140
  34. },
  35. {
  36. label: "操作系统",
  37. prop: "system",
  38. minWidth: 100
  39. },
  40. {
  41. label: "浏览器类型",
  42. prop: "browser",
  43. minWidth: 100
  44. },
  45. {
  46. label: "时间",
  47. prop: "operatingTime",
  48. minWidth: 180,
  49. formatter: ({ operatingTime }) =>
  50. dayjs(operatingTime).format("YYYY-MM-DD HH:mm:ss")
  51. }
  52. ];
  53. async function onSearch() {
  54. loading.value = true;
  55. const { data } = await getMineLogs();
  56. dataList.value = data.list;
  57. pagination.total = data.total;
  58. pagination.pageSize = data.pageSize;
  59. pagination.currentPage = data.currentPage;
  60. setTimeout(() => {
  61. loading.value = false;
  62. }, 200);
  63. }
  64. onMounted(() => {
  65. onSearch();
  66. });
  67. </script>
  68. <template>
  69. <div
  70. :class="[
  71. 'min-w-[180px]',
  72. deviceDetection() ? 'max-w-[100%]' : 'max-w-[70%]'
  73. ]"
  74. >
  75. <h3 class="my-8!">安全日志</h3>
  76. <pure-table
  77. row-key="id"
  78. table-layout="auto"
  79. :loading="loading"
  80. :data="dataList"
  81. :columns="columns"
  82. :pagination="pagination"
  83. />
  84. </div>
  85. </template>