Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
M
mes-ui
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ximai
mes-ui
Commits
a2bade75
Commit
a2bade75
authored
Nov 16, 2024
by
李驰骋
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
接口日志菜单添加
parent
f9906f4b
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
359 additions
and
0 deletions
+359
-0
apilog.js
src/api/monitor/apilog.js
+35
-0
index.vue
src/views/monitor/apilog/index.vue
+324
-0
No files found.
src/api/monitor/apilog.js
0 → 100644
View file @
a2bade75
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
})
}
src/views/monitor/apilog/index.vue
0 → 100644
View file @
a2bade75
<
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
>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment