<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>
