Commit a2bade75 authored by 李驰骋's avatar 李驰骋

接口日志菜单添加

parent f9906f4b
import request from '@/utils/request'
// 查询操作日志列表
export function list(query) {
return request({
url: '/monitor/apiLog/list',
method: 'get',
params: query
})
}
// 删除操作日志
export function delApilog(operId) {
return request({
url: '/monitor/apiLog/' + operId,
method: 'delete'
})
}
// 清空操作日志
export function cleanApilog() {
return request({
url: '/monitor/apiLog/clean',
method: 'delete'
})
}
// 再执行操作
export function executeOperation(param) {
return request({
url: '/monitor/apiLog/execute',
method: 'post',
data: param
})
}
<template>
<div class="app-container">
<el-form :model="queryParams" @submit.native.prevent ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
<el-form-item :label="$t('系统模块')" prop="title">
<el-input
v-model="queryParams.title"
clearable
style="width: 240px;"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item :label="$t('操作人员')" prop="operName">
<el-input
v-model="queryParams.operName"
clearable
style="width: 240px;"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item :label="$t('类型')" prop="businessType">
<el-select
v-model="queryParams.businessType"
clearable
style="width: 240px"
>
<el-option
v-for="dict in dict.type.sys_oper_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item :label="$t('common.status')" prop="status">
<el-select
v-model="queryParams.status"
clearable
style="width: 240px"
>
<el-option
v-for="dict in dict.type.sys_common_status"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item :label="$t('操作时间')">
<el-date-picker
v-model="dateRange"
style="width: 240px"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="-"
:start-placeholder="$t('common.start_date')"
:end-placeholder="$t('common.end_date')"
></el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('common.search') }}</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('common.reset') }}</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['monitor:operlog:remove']"
>{{ $t('common.del') }}</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
@click="handleClean"
v-hasPermi="['monitor:operlog:remove']"
>{{$t('清空')}}</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-video-play"
size="mini"
@click="handleExecute"
v-hasPermi="['monitor:operlog:export']"
>{{ $t('再次执行') }}</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table ref="tables" v-loading="loading" :data="list" @selection-change="handleSelectionChange" :default-sort="defaultSort" @sort-change="handleSortChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column :label="$t('日志编号')" align="center" prop="operId" />
<el-table-column :label="$t('系统模块')" align="center" prop="title" />
<el-table-column :label="$t('操作类型')" align="center" prop="businessType">
<template slot-scope="scope">
<dict-tag :options="dict.type.sys_oper_type" :value="scope.row.businessType"/>
</template>
</el-table-column>
<el-table-column :label="$t('操作状态')" align="center" prop="status">
<template slot-scope="scope">
<dict-tag :options="dict.type.sys_common_status" :value="scope.row.status"/>
</template>
</el-table-column>
<el-table-column :label="$t('操作日期')" align="center" prop="operTime" sortable="custom" :sort-orders="['descending', 'ascending']" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.operTime) }}</span>
</template>
</el-table-column>
<el-table-column :label="$t('common.option')" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-view"
@click="handleView(scope.row,scope.index)"
v-hasPermi="['monitor:operlog:query']"
>{{$t('详细')}}</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 操作日志详细 -->
<el-dialog :title="$t('操作日志详细')" :visible.sync="open" width="700px" append-to-body>
<el-form ref="form" :model="form" label-width="100px" size="mini">
<el-row>
<el-col :span="12">
<el-form-item :label="$t('操作模块:')">{{ form.title }} / {{ typeFormat(form) }}</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item :label="$t('操作方法:')">{{ form.method }}</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item :label="$t('请求参数:')">
<div v-if="form.operParam1">
<el-tag>参数1:</el-tag>{{ form.operParam1 }}<br/>
</div>
<div v-if="form.operParam2">
<el-tag>参数2:</el-tag>{{ form.operParam2 }}<br/>
</div>
<div v-if="form.operParam3">
<el-tag>参数3:</el-tag>{{ form.operParam3 }}<br/>
</div>
<div v-if="form.operParam4">
<el-tag>参数4:</el-tag>{{ form.operParam4 }}<br/>
</div>
<div v-if="form.operParam5">
<el-tag>参数5:</el-tag>{{ form.operParam5 }}
</div>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item :label="$t('返回参数:')">{{ form.jsonResult }}</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('操作状态:')">
<div v-if="form.status === 0">{{$t('正常')}}</div>
<div v-else-if="form.status === 1">{{$t('失败')}}</div>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('操作时间:')">{{ parseTime(form.operTime) }}</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item :label="$t('异常信息:')" v-if="form.status === 1">{{ form.errorMsg }}</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="open = false">{{$t('关 闭')}}</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { list, delApilog, cleanApilog, executeOperation } from "@/api/monitor/apilog";
export default {
name: "Operlog",
dicts: ['sys_oper_type', 'sys_common_status'],
data() {
return {
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 表格数据
list: [],
// 是否显示弹出层
open: false,
// 日期范围
dateRange: [],
// 默认排序
defaultSort: {prop: 'operTime', order: 'descending'},
// 表单参数
form: {},
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
title: undefined,
operName: undefined,
businessType: undefined,
status: undefined
}
};
},
created() {
this.getList();
},
methods: {
/** 查询登录日志 */
getList() {
this.loading = true;
list(this.addDateRange(this.queryParams, this.dateRange)).then( response => {
this.list = response.rows;
this.total = response.total;
this.loading = false;
}
);
},
// 操作日志类型字典翻译
typeFormat(row, column) {
return this.selectDictLabel(this.dict.type.sys_oper_type, row.businessType);
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.dateRange = [];
this.resetForm("queryForm");
this.$refs.tables.sort(this.defaultSort.prop, this.defaultSort.order)
this.handleQuery();
},
/** 多选框选中数据 */
handleSelectionChange(selection) {
this.ids = selection.map(item => item.operId)
this.multiple = !selection.length
},
/** 排序触发事件 */
handleSortChange(column, prop, order) {
this.queryParams.orderByColumn = column.prop;
this.queryParams.isAsc = column.order;
this.getList();
},
/** 详细按钮操作 */
handleView(row) {
this.open = true;
this.form = row;
},
/** 删除按钮操作 */
handleDelete(row) {
const operIds = row.operId || this.ids;
this.$modal.confirm(this.$t('common.confirm_del_data')).then(function() {
return delApilog(operIds);
}).then(() => {
this.getList();
this.$modal.msgSuccess(this.$t('common.del_success'));
}).catch(() => {});
},
/** 清空按钮操作 */
handleClean() {
this.$modal.confirm(this.$t('是否确认清空所有操作日志数据项?')).then(function() {
return cleanApilog();
}).then(() => {
this.getList();
this.$modal.msgSuccess(this.$t('清空成功'));
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download('monitor/apiLog/export', {
...this.queryParams
}, `operlog_${new Date().getTime()}.xlsx`)
},
handleExecute(row) {
const operIds = row.operId || this.ids;
let formData = new FormData()
operIds.forEach(item => {
formData.append('logIds', item)
});
this.$modal.confirm(this.$t('是否执行操作')).then(function() {
executeOperation(formData);
}).then(() => {
this.getList();
}).catch(() => {});
}
}
};
</script>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment