LogManage.vue 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  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 label="请选择" value="" />
  33. <el-option label="登录" value="登录" />
  34. <el-option label="登出" value="登出" />
  35. <el-option label="查询" value="查询" />
  36. <el-option label="新增" value="新增" />
  37. <el-option label="修改" value="修改" />
  38. <el-option label="删除" value="删除" />
  39. <el-option label="导入" value="导入" />
  40. <el-option label="导出" value="导出" />
  41. </el-select>
  42. </el-form-item>
  43. </el-form>
  44. <el-space wrap>
  45. <el-button type="primary" @click="toPage(1)">查询</el-button>
  46. <el-button @click="exportData">导出</el-button>
  47. </el-space>
  48. </div>
  49. <div class="part-box">
  50. <el-table class="page-table" :data="dataList" :loading="loading">
  51. <el-table-column type="index" label="序号" width="60" />
  52. <el-table-column property="loginName" label="登录名" min-width="120" />
  53. <el-table-column property="userType" label="用户类型" width="100" />
  54. <el-table-column property="operationType" label="操作类型" width="100" />
  55. <el-table-column property="loginIp" label="登录IP" width="140" />
  56. <el-table-column property="function" label="功能模块" min-width="200" />
  57. <el-table-column property="operationTime" label="操作时间" width="180" />
  58. <el-table-column property="detail" label="详情" width="180" />
  59. </el-table>
  60. <el-pagination
  61. v-model:current-page="pagination.pageNumber"
  62. v-model:page-size="pagination.pageSize"
  63. :layout="pagination.layout"
  64. :total="pagination.total"
  65. @size-change="pageSizeChange"
  66. @current-change="toPage"
  67. />
  68. </div>
  69. </template>
  70. <script setup lang="ts">
  71. import { reactive } from 'vue';
  72. import { getLogList } from '@/api/log';
  73. import { LogItem, LogListFilter } from '@/api/types/log';
  74. import useTable from '@/hooks/table';
  75. defineOptions({
  76. name: 'LogManage',
  77. });
  78. const searchModel = reactive<LogListFilter>({
  79. loginName: '',
  80. userType: '',
  81. operationType: '',
  82. });
  83. const { dataList, pagination, loading, toPage, pageSizeChange } =
  84. useTable<LogItem>(getLogList, searchModel, false);
  85. function exportData() {
  86. // TODO: 实现导出功能
  87. }
  88. </script>