You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
WeChat/src/views/modules/sys/log.vue

108 lines
3.5 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<div class="mod-log">
<!-- 搜索表单部分 -->
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
<!-- 输入框绑定到 dataForm.key用于搜索用户操作或者用户名 -->
<el-form-item>
<el-input v-model="dataForm.key" placeholder="用户名/用户操作" clearable></el-input>
</el-form-item>
<el-form-item>
<!-- 查询按钮,点击时触发 getDataList 方法 -->
<el-button @click="getDataList()">查询</el-button>
</el-form-item>
</el-form>
<!-- 表格显示数据 -->
<el-table :data="dataList" border v-loading="dataListLoading" style="width: 100%">
<!-- 表格的列定义 -->
<el-table-column prop="id" header-align="center" align="center" width="80" label="ID"></el-table-column>
<el-table-column prop="username" header-align="center" align="center" label="用户名"></el-table-column>
<el-table-column prop="operation" header-align="center" align="center" label="用户操作"></el-table-column>
<el-table-column prop="method" header-align="center" align="center" width="150" :show-overflow-tooltip="true" label="请求方法"></el-table-column>
<el-table-column prop="params" header-align="center" align="center" width="150" :show-overflow-tooltip="true" label="请求参数"></el-table-column>
<el-table-column prop="time" header-align="center" align="center" label="执行时长(毫秒)"></el-table-column>
<el-table-column prop="ip" header-align="center" align="center" width="150" label="IP地址"></el-table-column>
<el-table-column prop="createDate" header-align="center" align="center" width="180" label="创建时间"></el-table-column>
</el-table>
<!-- 分页组件 -->
<el-pagination @size-change="sizeChangeHandle" @current-change="currentChangeHandle" :current-page="pageIndex" :page-sizes="[10, 20, 50, 100]" :page-size="pageSize" :total="totalCount" layout="total, sizes, prev, pager, next, jumper">
</el-pagination>
</div>
</template>
<script>
export default {
data() {
return {
// 表单数据,包含一个搜索条件 'key'
dataForm: {
key: ''
},
// 数据列表,存储表格数据
dataList: [],
// 当前页
pageIndex: 1,
// 每页显示的数据条数
pageSize: 10,
// 总数据条数
totalCount: 0,
// 数据加载状态
dataListLoading: false,
// 选中的数据(当前表格中未使用)
selectionDataList: []
}
},
created() {
// 组件创建时,获取数据列表
this.getDataList()
},
methods: {
// 获取数据列表
getDataList() {
// 启动加载状态
this.dataListLoading = true
this.$http({
url: this.$http.adornUrl('/sys/log/list'), // 请求日志列表接口
method: 'get',
params: this.$http.adornParams({
// 请求参数,包含分页、搜索关键字、排序字段、排序方式等
'page': this.pageIndex,
'limit': this.pageSize,
'key': this.dataForm.key, // 搜索条件
'sidx': 'id', // 排序字段,按照 id 排序
'order': 'desc' // 排序方式,降序
})
}).then(({ data }) => {
// 处理返回的数据
if (data && data.code === 200) {
this.dataList = data.page.list // 数据列表
this.totalCount = data.page.totalCount // 总条数
} else {
// 如果返回数据无效,清空数据和总数
this.dataList = []
this.totalCount = 0
}
// 完成加载
this.dataListLoading = false
})
},
// 每页显示条数变化时触发的函数
sizeChangeHandle(val) {
this.pageSize = val // 更新每页显示条数
this.pageIndex = 1 // 重置为第一页
this.getDataList() // 重新获取数据
},
// 当前页变化时触发的函数
currentChangeHandle(val) {
this.pageIndex = val // 更新当前页
this.getDataList() // 重新获取数据
}
}
}
</script>