<template>
|
<basicContainer >
|
<avue-crud
|
:option="option"
|
:table-loading="pageF.loading"
|
:data="tableData"
|
:page="page"
|
:permission="permissionList"
|
:before-open="beforeOpen"
|
v-model="form"
|
ref="crudRef"
|
@row-update="rowUpdate"
|
@row-save="rowSave"
|
@row-del="rowDel"
|
@search-change="searchChange"
|
@search-reset="searchReset"
|
@selection-change="selectionChange"
|
@current-change="currentChange"
|
@size-change="sizeChange"
|
@on-load="onLoad"
|
>
|
<template #menu-left>
|
<el-button
|
type="danger"
|
icon="Delete"
|
:disabled="pageF.multiple"
|
@click="handleDelete"
|
v-hasPermi="['system:log:remove']"
|
>删除
|
</el-button>
|
<el-button
|
type="danger"
|
plain
|
icon="Delete"
|
@click="handleClean"
|
v-hasPermi="['system:operlog:remove']"
|
>清空</el-button>
|
<el-button
|
type="warning"
|
plain
|
icon="Download"
|
@click="handleExport"
|
v-hasPermi="['system:log:export']"
|
>导出
|
</el-button>
|
</template>
|
<template #operId="scope">
|
<el-link @click="handleView(scope.row)" :underline="false" type="primary">{{scope.row.operId}}</el-link>
|
</template>
|
<template #businessType="scope">
|
<dict-tag v-if="scope.dic" :options="scope.dic" :value="scope.row.businessType" />
|
</template>
|
<template #businessType-form="scope">
|
<dict-tag v-if="scope.dic" :options="scope.dic" :value="scope.value" />
|
</template>
|
<template #operIp-form="scope">
|
{{form.operIp}} / {{form.operLocation}}
|
</template>
|
|
</avue-crud>
|
</basicContainer>
|
</template>
|
|
<script setup name="log" lang="ts">
|
import {OperLogI, delOperLog, getOperLog, cleanOperlog, list, exportOperlog} from "@/api/monitor/operlog";
|
import useCurrentInstance from "@/utils/useCurrentInstance";
|
import {computed,reactive, ref, toRefs} from "vue";
|
import {PagesInterface, PageQueryInterface} from "@/utils/globalInterface";
|
import {usePagePlus} from "@/hooks/usePagePlus";
|
import {hasPermission} from "@/utils/permissionUtils";
|
|
const { proxy } = useCurrentInstance();
|
const crudRef = ref();
|
|
const permissionList = computed(()=>{
|
return {
|
addBtn: hasPermission(["system:log:add"]),
|
delBtn: hasPermission(["system:log:remove"]),
|
editBtn: hasPermission(["system:log:edit"]),
|
viewBtn: hasPermission(["system:log:query"]),
|
}
|
})
|
|
const data = reactive({
|
form:<OperLogI>{},
|
queryParams:<OperLogI&PageQueryInterface>{},
|
page: <PagesInterface>{
|
pageSize: 10,
|
total: 0,
|
currentPage: 1,
|
},
|
selectionList:[],
|
})
|
const {queryParams,form,page,selectionList} = toRefs(data);
|
|
|
const { tableData,pageF,rowSave,rowUpdate,rowDel,beforeOpen,searchChange,
|
searchReset,selectionChange,onLoad,currentChange,sizeChange,handleDelete,handleExport,handleUpdate} = usePagePlus({
|
form:form,
|
queryParams:queryParams,
|
idKey:'operId',
|
page:page.value,
|
getListApi:list,
|
getDetailApi:getOperLog,
|
exportApi:exportOperlog,
|
deleteApi:delOperLog,
|
handleUpdateFunc:()=>{
|
crudRef.value.rowEdit(selectionList.value[0]);
|
},
|
handleSelectionChangeFunc:(selection:any)=>{
|
selectionList.value = selection;
|
},
|
getBeginListFunc(params:any = {}){
|
params = proxy.addDateRange(queryParams.value, params?.dateRange) || {};
|
return params;
|
},
|
})
|
|
const option = ref({
|
rowKey: 'operId',
|
menu: false,
|
addBtn: false,
|
|
column: {
|
operId: {
|
label: '日志编号',display: false
|
},
|
title: {
|
label: '系统模块',search:true,
|
},
|
businessType: {
|
label: '操作类型',search:true,
|
type: 'select', dicUrl: '/system/dict/data/type/sys_oper_type',
|
},
|
requestMethod: {
|
label: '请求方式',
|
},
|
operName: {
|
label: '操作人员',search:true,
|
},
|
operIp: {
|
label: '主机地址',hide: true,
|
},
|
method: {
|
label: '方法名称',hide: true,
|
},
|
operatorType: {
|
label: '操作类别',hide: true,display: false
|
},
|
dateRange: {
|
label: '操作时间',search:true, searchRange: true, type: 'daterange',hide: true,
|
startPlaceholder: '开始日期',display: false,
|
endPlaceholder: '结束日期',
|
valueFormat: 'YYYY-MM-DD',
|
},
|
operTime: {
|
label: '操作时间',
|
},
|
costTime: {
|
label: '消耗时间',
|
},
|
deptName: {
|
label: '部门名称',hide: true,
|
},
|
operUrl: {
|
label: '请求URL',hide: true,
|
},
|
|
operLocation: {
|
label: '操作地点',hide: true,display: false
|
},
|
operParam: {
|
label: '请求参数',hide: true,span:24,
|
type: 'textarea', minRows: 3, maxRows: 5,
|
},
|
jsonResult: {
|
label: '返回参数',hide: true,span:24,
|
type: 'textarea', minRows: 3, maxRows: 5,
|
},
|
status: {
|
label: '操作状态',hide: true,display: false,
|
type: 'radio', dicUrl: '/system/dict/data/type/sys_common_status',
|
},
|
errorMsg: {
|
label: '错误消息',hide: true,span:24,
|
type: 'textarea', minRows: 3, maxRows: 5,
|
},
|
|
}
|
})
|
|
|
const handleView = (row:any) => {
|
form.value = row;
|
crudRef.value.rowView(row,1);
|
}
|
/** 清空按钮操作 */
|
function handleClean() {
|
proxy.$modal.confirm("是否确认清空所有操作日志数据项?").then(function () {
|
return cleanOperlog();
|
}).then(() => {
|
page.value.currentPage = 1;
|
onLoad(page.value);
|
proxy.$modal.msgSuccess("清空成功");
|
}).catch(() => {});
|
}
|
|
</script>
|