LogManage.vue 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <template>
  2. <div class="part-box is-filter">
  3. <el-form inline>
  4. <el-form-item label="登录名">
  5. <el-input
  6. v-model.trim="searchModel.loginName"
  7. placeholder="请输入"
  8. clearable
  9. style="width: 120px"
  10. >
  11. </el-input>
  12. </el-form-item>
  13. <el-form-item label="用户类型">
  14. <el-select
  15. v-model="searchModel.userType"
  16. placeholder="请选择"
  17. clearable
  18. style="width: 120px"
  19. >
  20. <el-option label="请选择" value="" />
  21. <el-option label="管理员" value="管理员" />
  22. <el-option label="普通用户" value="普通用户" />
  23. </el-select>
  24. </el-form-item>
  25. <el-form-item label="操作类型">
  26. <el-select
  27. v-model="searchModel.operationType"
  28. placeholder="请选择"
  29. clearable
  30. style="width: 120px"
  31. >
  32. <el-option
  33. v-for="(val, key) in LOG_TYPE"
  34. :key="key"
  35. :label="val"
  36. :value="key"
  37. />
  38. </el-select>
  39. </el-form-item>
  40. <el-form-item>
  41. <el-button type="primary" @click="toPage(1)">查询</el-button>
  42. <el-button @click="exportData">导出</el-button>
  43. </el-form-item>
  44. </el-form>
  45. </div>
  46. <div class="part-box">
  47. <el-table class="page-table" :data="dataList" :loading="loading">
  48. <el-table-column type="index" label="序号" width="60" />
  49. <el-table-column property="loginName" label="登录名" min-width="120" />
  50. <el-table-column property="userType" label="用户类型" width="100" />
  51. <el-table-column property="operationType" label="操作类型" width="100" />
  52. <el-table-column property="loginIp" label="登录IP" width="140" />
  53. <el-table-column property="function" label="功能模块" min-width="200" />
  54. <el-table-column property="operationTime" label="操作时间" width="180" />
  55. <el-table-column property="detail" label="详情" width="180" />
  56. </el-table>
  57. <el-pagination
  58. v-model:current-page="pagination.pageNumber"
  59. v-model:page-size="pagination.pageSize"
  60. :layout="pagination.layout"
  61. :total="pagination.total"
  62. @size-change="pageSizeChange"
  63. @current-change="toPage"
  64. />
  65. </div>
  66. </template>
  67. <script setup lang="ts">
  68. import { reactive } from 'vue';
  69. import { getLogList } from '@/api/log';
  70. import { LogItem, LogListFilter } from '@/api/types/log';
  71. import useTable from '@/hooks/table';
  72. import { LOG_TYPE } from '@/constants/enumerate';
  73. defineOptions({
  74. name: 'LogManage',
  75. });
  76. const searchModel = reactive<LogListFilter>({
  77. loginName: '',
  78. userType: '',
  79. operationType: undefined,
  80. });
  81. const { dataList, pagination, loading, toPage, pageSizeChange } =
  82. useTable<LogItem>(getLogList, searchModel, false);
  83. function exportData() {
  84. // TODO: 实现导出功能
  85. }
  86. </script>