行为日志页面

develop
就眠仪式 2020-09-13 19:41:50 +08:00
parent 89bef12ab2
commit 70b345bffe
5 changed files with 951 additions and 428 deletions

211
admin/data/loginLog.json Normal file
View File

@ -0,0 +1,211 @@
{
"createTime": null,
"createBy": null,
"updateTime": null,
"updateBy": null,
"remark": null,
"code": 0,
"msg": null,
"count": 167,
"data": [{
"id": "1305106851892822016",
"title": "登录",
"description": "登录成功",
"businessType": "OTHER",
"requestMethod": "POST",
"method": "/login",
"operateUrl": "/login",
"operateAddress": "127.0.0.1",
"requestParam": null,
"requestBody": "",
"responseBody": null,
"success": true,
"loggingType": "LOGIN",
"errorMsg": null,
"systemOs": "Windows",
"createTime": "2020-09-13T11:31:36.000+0000",
"operateName": "admin",
"map": {},
"browser": "谷歌浏览器"
}, {
"id": "1305101593019940864",
"title": "登录",
"description": "登录成功",
"businessType": "OTHER",
"requestMethod": "POST",
"method": "/login",
"operateUrl": "/login",
"operateAddress": "127.0.0.1",
"requestParam": null,
"requestBody": "",
"responseBody": null,
"success": true,
"loggingType": "LOGIN",
"errorMsg": null,
"systemOs": "Windows",
"createTime": "2020-09-13T11:10:42.000+0000",
"operateName": "admin",
"map": {},
"browser": "谷歌浏览器"
}, {
"id": "1305101247900024832",
"title": "登录",
"description": "登录成功",
"businessType": "OTHER",
"requestMethod": "POST",
"method": "/login",
"operateUrl": "/login",
"operateAddress": "127.0.0.1",
"requestParam": null,
"requestBody": "",
"responseBody": null,
"success": true,
"loggingType": "LOGIN",
"errorMsg": null,
"systemOs": "Windows",
"createTime": "2020-09-13T11:09:20.000+0000",
"operateName": "admin",
"map": {},
"browser": "谷歌浏览器"
}, {
"id": "1305099674977304576",
"title": "登录",
"description": "登录成功",
"businessType": "OTHER",
"requestMethod": "POST",
"method": "/login",
"operateUrl": "/login",
"operateAddress": "127.0.0.1",
"requestParam": null,
"requestBody": "",
"responseBody": null,
"success": true,
"loggingType": "LOGIN",
"errorMsg": null,
"systemOs": "Windows",
"createTime": "2020-09-13T11:03:05.000+0000",
"operateName": "admin",
"map": {},
"browser": "谷歌浏览器"
}, {
"id": "1305095186061197312",
"title": "登录",
"description": "登录成功",
"businessType": "OTHER",
"requestMethod": "POST",
"method": "/login",
"operateUrl": "/login",
"operateAddress": "127.0.0.1",
"requestParam": null,
"requestBody": "",
"responseBody": null,
"success": true,
"loggingType": "LOGIN",
"errorMsg": null,
"systemOs": "Windows",
"createTime": "2020-09-13T10:45:15.000+0000",
"operateName": "admin",
"map": {},
"browser": "谷歌浏览器"
}, {
"id": "1305092027951611904",
"title": "登录",
"description": "登录成功",
"businessType": "OTHER",
"requestMethod": "POST",
"method": "/login",
"operateUrl": "/login",
"operateAddress": "127.0.0.1",
"requestParam": null,
"requestBody": "",
"responseBody": null,
"success": true,
"loggingType": "LOGIN",
"errorMsg": null,
"systemOs": "Windows",
"createTime": "2020-09-13T10:32:42.000+0000",
"operateName": "admin",
"map": {},
"browser": "谷歌浏览器"
}, {
"id": "1305082862634008576",
"title": "登录",
"description": "登录成功",
"businessType": "OTHER",
"requestMethod": "POST",
"method": "/login",
"operateUrl": "/login",
"operateAddress": "127.0.0.1",
"requestParam": null,
"requestBody": "",
"responseBody": null,
"success": true,
"loggingType": "LOGIN",
"errorMsg": null,
"systemOs": "Windows",
"createTime": "2020-09-13T09:56:16.000+0000",
"operateName": "admin",
"map": {},
"browser": "谷歌浏览器"
}, {
"id": "1305071134877679616",
"title": "登录",
"description": "登录成功",
"businessType": "OTHER",
"requestMethod": "POST",
"method": "/login",
"operateUrl": "/login",
"operateAddress": "127.0.0.1",
"requestParam": null,
"requestBody": "",
"responseBody": null,
"success": true,
"loggingType": "LOGIN",
"errorMsg": null,
"systemOs": "Windows",
"createTime": "2020-09-13T09:09:40.000+0000",
"operateName": "admin",
"map": {},
"browser": "谷歌浏览器"
}, {
"id": "1305070481803575296",
"title": "登录",
"description": "登录成功",
"businessType": "OTHER",
"requestMethod": "POST",
"method": "/login",
"operateUrl": "/login",
"operateAddress": "127.0.0.1",
"requestParam": null,
"requestBody": "",
"responseBody": null,
"success": true,
"loggingType": "LOGIN",
"errorMsg": null,
"systemOs": "Windows",
"createTime": "2020-09-13T09:07:05.000+0000",
"operateName": "admin",
"map": {},
"browser": "谷歌浏览器"
}, {
"id": "1305064691009060864",
"title": "登录",
"description": "登录成功",
"businessType": "OTHER",
"requestMethod": "POST",
"method": "/login",
"operateUrl": "/login",
"operateAddress": "127.0.0.1",
"requestParam": null,
"requestBody": "",
"responseBody": null,
"success": true,
"loggingType": "LOGIN",
"errorMsg": null,
"systemOs": "Windows",
"createTime": "2020-09-13T08:44:04.000+0000",
"operateName": "admin",
"map": {},
"browser": "谷歌浏览器"
}]
}

View File

@ -287,6 +287,14 @@
"type": 1, "type": 1,
"openType": "_iframe", "openType": "_iframe",
"href": "view/system/deptment.html" "href": "view/system/deptment.html"
},
{
"id": 605,
"title": "行为日志",
"icon": "layui-icon layui-icon-face-cry",
"type": 1,
"openType": "_iframe",
"href": "view/system/logging.html"
} }
] ]

211
admin/data/operateLog.json Normal file
View File

@ -0,0 +1,211 @@
{
"createTime": null,
"createBy": null,
"updateTime": null,
"updateBy": null,
"remark": null,
"code": 0,
"msg": null,
"count": 178,
"data": [{
"id": "1305106857240559616",
"title": "主页",
"description": "返回 Index 主页视图",
"businessType": "ADD",
"requestMethod": "GET",
"method": "/index",
"operateUrl": "/index",
"operateAddress": "127.0.0.1",
"requestParam": null,
"requestBody": "",
"responseBody": null,
"success": true,
"loggingType": "OPERATE",
"errorMsg": null,
"systemOs": "Windows",
"createTime": "2020-09-13T11:31:37.000+0000",
"operateName": "admin",
"map": {},
"browser": "谷歌浏览器"
}, {
"id": "1305101599714050048",
"title": "主页",
"description": "返回 Index 主页视图",
"businessType": "ADD",
"requestMethod": "GET",
"method": "/index",
"operateUrl": "/index",
"operateAddress": "127.0.0.1",
"requestParam": null,
"requestBody": "",
"responseBody": null,
"success": true,
"loggingType": "OPERATE",
"errorMsg": null,
"systemOs": "Windows",
"createTime": "2020-09-13T11:10:44.000+0000",
"operateName": "admin",
"map": {},
"browser": "谷歌浏览器"
}, {
"id": "1305101253352620032",
"title": "主页",
"description": "返回 Index 主页视图",
"businessType": "ADD",
"requestMethod": "GET",
"method": "/index",
"operateUrl": "/index",
"operateAddress": "127.0.0.1",
"requestParam": null,
"requestBody": "",
"responseBody": null,
"success": true,
"loggingType": "OPERATE",
"errorMsg": null,
"systemOs": "Windows",
"createTime": "2020-09-13T11:09:21.000+0000",
"operateName": "admin",
"map": {},
"browser": "谷歌浏览器"
}, {
"id": "1305099681512030208",
"title": "主页",
"description": "返回 Index 主页视图",
"businessType": "ADD",
"requestMethod": "GET",
"method": "/index",
"operateUrl": "/index",
"operateAddress": "127.0.0.1",
"requestParam": null,
"requestBody": "",
"responseBody": null,
"success": true,
"loggingType": "OPERATE",
"errorMsg": null,
"systemOs": "Windows",
"createTime": "2020-09-13T11:03:06.000+0000",
"operateName": "admin",
"map": {},
"browser": "谷歌浏览器"
}, {
"id": "1305095191291494400",
"title": "主页",
"description": "返回 Index 主页视图",
"businessType": "ADD",
"requestMethod": "GET",
"method": "/index",
"operateUrl": "/index",
"operateAddress": "127.0.0.1",
"requestParam": null,
"requestBody": "",
"responseBody": null,
"success": true,
"loggingType": "OPERATE",
"errorMsg": null,
"systemOs": "Windows",
"createTime": "2020-09-13T10:45:16.000+0000",
"operateName": "admin",
"map": {},
"browser": "谷歌浏览器"
}, {
"id": "1305092034448588800",
"title": "主页",
"description": "返回 Index 主页视图",
"businessType": "ADD",
"requestMethod": "GET",
"method": "/index",
"operateUrl": "/index",
"operateAddress": "127.0.0.1",
"requestParam": null,
"requestBody": "",
"responseBody": null,
"success": true,
"loggingType": "OPERATE",
"errorMsg": null,
"systemOs": "Windows",
"createTime": "2020-09-13T10:32:43.000+0000",
"operateName": "admin",
"map": {},
"browser": "谷歌浏览器"
}, {
"id": "1305082868002717696",
"title": "主页",
"description": "返回 Index 主页视图",
"businessType": "ADD",
"requestMethod": "GET",
"method": "/index",
"operateUrl": "/index",
"operateAddress": "127.0.0.1",
"requestParam": null,
"requestBody": "",
"responseBody": null,
"success": true,
"loggingType": "OPERATE",
"errorMsg": null,
"systemOs": "Windows",
"createTime": "2020-09-13T09:56:18.000+0000",
"operateName": "admin",
"map": {},
"browser": "谷歌浏览器"
}, {
"id": "1305071141362073600",
"title": "主页",
"description": "返回 Index 主页视图",
"businessType": "ADD",
"requestMethod": "GET",
"method": "/index",
"operateUrl": "/index",
"operateAddress": "127.0.0.1",
"requestParam": null,
"requestBody": "",
"responseBody": null,
"success": true,
"loggingType": "OPERATE",
"errorMsg": null,
"systemOs": "Windows",
"createTime": "2020-09-13T09:09:42.000+0000",
"operateName": "admin",
"map": {},
"browser": "谷歌浏览器"
}, {
"id": "1305070488145362944",
"title": "主页",
"description": "返回 Index 主页视图",
"businessType": "ADD",
"requestMethod": "GET",
"method": "/index",
"operateUrl": "/index",
"operateAddress": "127.0.0.1",
"requestParam": null,
"requestBody": "",
"responseBody": null,
"success": true,
"loggingType": "OPERATE",
"errorMsg": null,
"systemOs": "Windows",
"createTime": "2020-09-13T09:07:06.000+0000",
"operateName": "admin",
"map": {},
"browser": "谷歌浏览器"
}, {
"id": "1305064697174687744",
"title": "主页",
"description": "返回 Index 主页视图",
"businessType": "ADD",
"requestMethod": "GET",
"method": "/index",
"operateUrl": "/index",
"operateAddress": "127.0.0.1",
"requestParam": null,
"requestBody": "",
"responseBody": null,
"success": true,
"loggingType": "OPERATE",
"errorMsg": null,
"systemOs": "Windows",
"createTime": "2020-09-13T08:44:05.000+0000",
"operateName": "admin",
"map": {},
"browser": "谷歌浏览器"
}]
}

View File

@ -3,8 +3,7 @@
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<title>高级详情</title> <title>高级详情</title>
<link href="../../component/pear/css/pear.css" rel="stylesheet"> <link href="../../component/pear/css/pear.css" rel="stylesheet">
<style type="text/css"> <style type="text/css">
@ -37,8 +36,7 @@
<button class="pear-btn pear-btn-sm"> 操作 </button> <button class="pear-btn pear-btn-sm"> 操作 </button>
<button class="pear-btn pear-btn-primary pear-btn-sm"> 操作 </button> <button class="pear-btn pear-btn-primary pear-btn-sm"> 操作 </button>
<button class="pear-btn pear-btn-success pear-btn-sm"> 操作 </button> <button class="pear-btn pear-btn-success pear-btn-sm"> 操作 </button>
<button class="pear-btn pear-btn-success pear-btn-sm" <button class="pear-btn pear-btn-success pear-btn-sm" lay-dropdown="{templateMenu: '#myMenus'}">更多操作 </button>
lay-dropdown="{templateMenu: '#myMenus'}">更多操作 </button>
</div> </div>
</div> </div>
<div class="layui-col-xs4"> <div class="layui-col-xs4">
@ -391,74 +389,68 @@
var echartsRecords = echarts.init(document.getElementById('echarts-records'), 'walden'); var echartsRecords = echarts.init(document.getElementById('echarts-records'), 'walden');
var option = { var option = {
tooltip: { xAxis: {
trigger: 'axis'
},
xAxis: [{
type: 'category', type: 'category',
data: ['2019-01', '2019-02', '2019-03', '2019-04', '2019-05', '2019-06'], boundaryGap: false
axisLine: { },
lineStyle: { yAxis: {
color: "#999"
}
}
}],
yAxis: [{
type: 'value', type: 'value',
splitNumber: 4, boundaryGap: [0, '30%']
splitLine: {
lineStyle: {
type: 'dashed',
color: '#DDD'
}
}, },
axisLine: { visualMap: {
type: 'piecewise',
show: false, show: false,
lineStyle: { dimension: 0,
color: "#333" seriesIndex: 0,
}, pieces: [{
}, gt: 1,
nameTextStyle: { lt: 3,
color: "#999" color: 'rgba(0, 180, 0, 0.5)'
},
splitArea: {
show: false
}
}],
series: [{
name: '课时',
type: 'line',
data: [23, 60, 20, 36, 23, 85],
lineStyle: {
normal: {
width: 8,
color: {
type: 'linear',
colorStops: [{
offset: 0,
color: '#A9F387' // 0% 处的颜色
}, { }, {
offset: 1, gt: 5,
color: '#48D8BF' // 100% 处的颜色 lt: 7,
}], color: 'rgba(0, 180, 0, 0.5)'
globalCoord: false // 缺省为 false }]
}, },
shadowColor: 'rgba(72,216,191, 0.3)', series: [{
shadowBlur: 10, type: 'line',
shadowOffsetY: 20 smooth: 0.6,
symbol: 'none',
lineStyle: {
color: 'green',
width: 5
},
markLine: {
symbol: ['none', 'none'],
label: {
show: false
},
data: [{
xAxis: 1
},
{
xAxis: 3
},
{
xAxis: 5
},
{
xAxis: 7
} }
]
}, },
itemStyle: { areaStyle: {},
normal: { data: [
color: '#fff', ['2019-10-10', 200],
borderWidth: 10, ['2019-10-11', 400],
/*shadowColor: 'rgba(72,216,191, 0.3)', ['2019-10-12', 650],
shadowBlur: 100,*/ ['2019-10-13', 500],
borderColor: "#A9F387" ['2019-10-14', 250],
} ['2019-10-15', 300],
}, ['2019-10-16', 450],
smooth: true ['2019-10-17', 300],
['2019-10-18', 100]
]
}] }]
}; };
echartsRecords.setOption(option); echartsRecords.setOption(option);

101
view/system/logging.html Normal file
View File

@ -0,0 +1,101 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="../../component/pear/css/pear.css" />
</head>
<body class="pear-container">
<div class="layui-card">
<div class="layui-card-body">
<div class="layui-tab layui-tab-card">
<ul class="layui-tab-title">
<li class="layui-this">登录日志</li>
<li>操作日志</li>
</ul>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">
<table style="margin-top: 10px;" id="log-login-table" lay-filter="user-table"></table>
</div>
<div class="layui-tab-item">
<table style="margin-top: 10px;" id="log-operate-table" lay-filter="user-table"></table>
</div>
</div>
</div>
</div>
</div>
</body>
<script type="text/html" id="log-bar">
{{#if (d.success == true) { }}
<button class="pear-btn pear-btn-sm pear-btn-success" lay-event="edit"><i class="layui-icon layui-icon-ok"></i>
成功</button>
{{# }else if(d.success == false){ }}
<button class="pear-btn pear-btn-sm pear-btn-danger" lay-event="error"><i class="layui-icon layui-icon-help"></i>
异常</button>
{{# } }}
</script>
<script type="text/html" id="log-createTime">
{{layui.util.toDateString(d.createTime, "yyyy-MM-dd HH:mm:ss")}}
</script>
<script src="../../component/layui/layui.js"></script>
<script src="../../component/pear/pear.js"></script>
<script>
layui.use(['table','form','jquery','element'],function () {
let table = layui.table;
let form = layui.form;
let element = layui.element;
let MODULE_PATH = "/system/logging/";
let cols = [
[
{title: '模块', field: 'title', align:'center'},
{title: '请求方式', field: 'requestMethod', align:'center'},
{title: '接口', field: 'method', align:'center'},
{title: '浏览器', field: 'browser', align:'center'},
{title: '操作地址', field: 'operateAddress',align:'center'},
{title: '操作系统', field: 'systemOs', align:'center'},
{title: '访问时间', field: 'createTime',templet:'#log-createTime', align:'center'},
{title: '操作人', field: 'operateName', align:'center'},
{title: '访问状态', toolbar: '#log-bar', align:'center', width:150}
]
]
table.render({
elem: '#log-operate-table',
url: '../../admin/data/operateLog.json',
page: true ,
cols: cols ,
skin: 'line',
toolbar: false
});
table.render({
elem: '#log-login-table',
url: '../../admin/data/loginLog.json',
page: true ,
cols: cols ,
skin: 'line',
toolbar: false
});
form.on('submit(dict-type-query)', function(data){
table.reload('dict-type-table',{where:data.field})
return false;
});
window.error = function(obj){
layer.open({
type: 1,
title: '异常信息',
shade: 0,
area: ['450px', '350px'],
content: '<div class="pear-container"><div class="layui-card"><div class="layui-card-body">'+obj.data['error']+'</div></div></div>'
});
}
})
</script>
</html>