审计日志修改、get请求参数异常修改

This commit is contained in:
haozq 2024-12-14 16:51:34 +08:00
parent 56caa62417
commit f8d95a215e
12 changed files with 684 additions and 218 deletions

View File

@ -6,11 +6,11 @@
<title>业务日志</title>
<!--拦截及公共ip-->
<script src="../../../../js/public/jquery-3.6.0.js" type="text/javascript"></script>
<script src="../../../js/system/IPUtils.js"></script>
<script src="../../../js/system/ajax_intercept.js"></script>
<script src="../../../js/system/public_utils.js"></script>
<script src="../../../js/smutil/sm2Utils.js"></script>
<script src="../../../js/smutil/smUtil.js"></script>
<script src="../../../../js/system/IPUtils.js"></script>
<script src="../../../../js/system/ajax_intercept.js"></script>
<script src="../../../../js/system/public_utils.js"></script>
<script src="../../../../js/smutil/sm2Utils.js"></script>
<script src="../../../../js/smutil/smUtil.js"></script>
<!--拦截及公共ip-->
<link href="../../../../js/layui/css/layui.css" rel="stylesheet">
<link href="../../../../css/base/log/child/businessLog.css" rel="stylesheet">
@ -19,76 +19,98 @@
<body>
<div class="content">
<form class="layui-form layui-form-pane layui-selected">
<div class="layui-form-item">
<div class="layui-inline">
<div class="layui-input-inline">
<input type="text" id='roleName' name="roleName" autocomplete="off" class="layui-input"
placeholder="请输入用户身份" onBlur="inputTest1('roleName', 20, '用户身份')">
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<input type="text" id='operIp' name="operIp" autocomplete="off" class="layui-input"
placeholder="请输入IP地址" onBlur="ipTest()">
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline long_date">
<input type="text" id="workDay" class="layui-input" readonly placeholder="请选择日期">
<img src="../../../../img/common-icon/date-icon.png" style="position: absolute;top: 24%; right: 3%;">
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<input type="text" id='detail' name="detail" autocomplete="off" class="layui-input"
placeholder="请输入操作内容" onBlur="inputTest2('detail', 200, '操作内容')">
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<select name="status" class="status" id="status" lay-search="" lay-reqtext="事件结果不能为空">
<option value="">请选择事件结果</option>
<option value="0">成功</option>
<option value="1">失败</option>
</select>
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<select name="grade" class="grade" id="grade" lay-search="" lay-reqtext="操作类型不能为空">
<option value="">请选择操作类型</option>
<option value="查询业务数据">查询业务数据</option>
<option value="增加业务数据">增加业务数据</option>
<option value="修改业务数据">修改业务数据</option>
<option value="删除业务数据">删除业务数据</option>
<!-- <option value="导出业务数据">导出业务数据</option> -->
<!-- <option value="导入业务数据">导入业务数据</option> -->
<!-- <option value="导出excel">导出excel</option> -->
<!-- <option value="系统启动">系统启动</option> -->
</select>
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<select class="orderType" name="orderType" id="orderType" lay-search="" lay-reqtext="筛选字段不能为空">
<option value="create_time">时间</option>
</select>
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<select class="orderBy" name="orderBy" id="orderBy" lay-search="" lay-reqtext="排序方式不能为空">
<option value="DESC">倒序</option>
<option value="ASC">升序</option>
</select>
</div>
</div>
<div class="layui-inline">
<button id='query' type="button" class="layui-btn layui-btn-normal"><i class="layui-icon"></i> 查 询</button>
<button type="reset" id='reset' class="layui-btn layui-btn-primary"><i
class="layui-icon layui-icon-refresh"></i> 重 置</button>
<div class="layui-form-item">
<div class="layui-inline">
<div class="layui-input-inline">
<input type="text" id='userName' name="userName" autocomplete="off" class="layui-input"
placeholder="操作人" onBlur="inputTest1('roleName', 20, '用户身份')">
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<input type="text" id='operIp' name="operIp" autocomplete="off" class="layui-input"
placeholder="IP地址">
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline long_date">
<input type="text" id="workDay" class="layui-input" readonly placeholder="操作时间">
<img src="../../../../img/common-icon/date-icon.png" style="position: absolute;top: 24%; right: 3%;">
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<input type="text" id='operDetails' name="operDetails" autocomplete="off" class="layui-input"
placeholder="请输入操作内容" onBlur="inputTest2('detail', 200, '操作内容')">
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<select name="eventType" class="eventType" id="eventType" lay-search="" lay-reqtext="事件结果不能为空">
<option value="">请选择事件类型</option>
<option value="异常事件">异常事件</option>
<option value="正常事件">正常事件</option>
</select>
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<select name="operResult" class="operResult" id="operResult" lay-search="" lay-reqtext="事件结果不能为空">
<option value="">请选择事件结果</option>
<option value="1">成功</option>
<option value="0">失败</option>
</select>
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<select name="operType" class="operType" id="operType" lay-search="" lay-reqtext="操作类型不能为空">
<option value="">请选择操作类型</option>
<option value="登录">登录</option>
<option value="退出">退出</option>
<option value="新增">新增</option>
<option value="修改">修改</option>
<option value="删除">删除</option>
<option value="查询">查询</option>
<option value="下载">下载</option>
<option value="导出">导出</option>
<option value="授权">授权</option>
<option value="导入">导入</option>
<option value="刷新">刷新</option>
<option value="备份">备份</option>
<option value="其他">其他</option>
</select>
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<select class="sortName" name="sortName" id="sortName" lay-search="" lay-reqtext="排序字段">
<option value="">请选择排序字段</option>
<option value="oper_time">操作时间</option>
<option value="oper_ip">操作ip</option>
<option value="user_name">操作人</option>
<option value="oper_type">操作类型</option>
<option value="oper_result">事件结果</option>
<option value="event_type">事件类型</option>
</select>
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<select class="sortType" name="sortType" id="sortType" lay-search="排序方式" lay-reqtext="排序方式不能为空">
<option value="">请选择排序方式</option>
<option value="DESC">倒序</option>
<option value="ASC">升序</option>
</select>
</div>
</div>
<div class="layui-inline">
<button id='query' type="button" class="layui-btn layui-btn-normal"><i class="layui-icon"></i> 查 询</button>
<button type="reset" id='reset' class="layui-btn layui-btn-primary"><i
class="layui-icon layui-icon-refresh"></i> 重 置</button>
<button id='backup' type="button" class="layui-btn layui-btn-warm long_button" onclick="handleBackup()">备份</button>
</div>
</div>
</form>
<div class="layui-form-table " action="">
<table class="layui-hide" id="log-table" lay-filter="log-table"></table>

View File

@ -0,0 +1,116 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>异常日志</title>
<!--拦截及公共ip-->
<script src="../../../../js/public/jquery-3.6.0.js" type="text/javascript"></script>
<script src="../../../../js/system/IPUtils.js"></script>
<script src="../../../../js/system/ajax_intercept.js"></script>
<script src="../../../../js/system/public_utils.js"></script>
<script src="../../../../js/smutil/sm2Utils.js"></script>
<script src="../../../../js/smutil/smUtil.js"></script>
<!--拦截及公共ip-->
<link href="../../../../js/layui/css/layui.css" rel="stylesheet">
<script src="../../../../js/layui/layui.js"></script>
<script src="../../../../js/public/public.js" type="text/javascript"></script>
<script src="../../../../js/public/sm3.js" type="text/javascript"></script>
<script src="../../../../js/public/aes.js" type="text/javascript"></script>
<script src="../../../../js/public/permission.js" type="text/javascript"></script>
<script src="../../../../js/base/log/child/errLog.js"></script>
<link href="../../../../css/base/log/child/systemLog.css" rel="stylesheet">
</head>
<body>
<div class="content">
<form class="layui-form layui-form-pane layui-selected">
<div class="layui-form-item">
<div class="layui-inline">
<div class="layui-input-inline">
<input type="text" id='userName' name="userName" autocomplete="off" class="layui-input"
placeholder="操作人" onBlur="inputTest1('roleName', 20, '用户身份')">
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<input type="text" id='operIp' name="operIp" autocomplete="off" class="layui-input"
placeholder="IP地址">
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline long_date">
<input type="text" id="workDay" class="layui-input" readonly placeholder="操作时间">
<img src="../../../../img/common-icon/date-icon.png" style="position: absolute;top: 24%; right: 3%;">
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<select name="errGrade" class="errGrade" id="errGrade" lay-search="" placeholder="异常等级">
<option value="">请选择</option>
<option value="高"></option>
<option value="中"></option>
<option value="低"></option>
</select>
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<select name="operResult" class="operResult" id="operResult" lay-search="" lay-reqtext="事件结果不能为空">
<option value="">请选择事件结果</option>
<option value="1">成功</option>
<option value="0">失败</option>
</select>
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<select name="errReason" class="errReason" id="errReason" lay-search="" lay-reqtext="、">
<option value="">异常类型</option>
<option value="越权访问">越权访问</option>
<option value="IP异常">IP异常</option>
</select>
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<select class="sortName" name="sortName" id="sortName" lay-search="" lay-reqtext="排序字段">
<option value="">请选择排序字段</option>
<option value="oper_time">操作时间</option>
<option value="oper_ip">操作ip</option>
<option value="user_name">操作人</option>
<option value="err_reason">异常类型</option>
<option value="oper_result">事件结果</option>
<option value="event_type">事件类型</option>
</select>
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<select class="sortType" name="sortType" id="sortType" lay-search="排序方式" lay-reqtext="排序方式不能为空">
<option value="">请选择排序方式</option>
<option value="DESC">倒序</option>
<option value="ASC">升序</option>
</select>
</div>
</div>
<div class="layui-inline">
<button id='query' type="button" class="layui-btn layui-btn-normal"><i class="layui-icon"></i> 查 询</button>
<button type="reset" id='reset' class="layui-btn layui-btn-primary"><i
class="layui-icon layui-icon-refresh"></i> 重 置</button>
<button id='backup' type="button" class="layui-btn layui-btn-warm long_button" onclick="handleBackup()">备份</button>
</div>
</div>
</form>
<div class="layui-form-table " action="">
<table class="layui-hide" id="log-table" lay-filter="log-table"></table>
<div id="voi-page" class="layout"></div>
</div>
</div>
</body>
</html>

View File

@ -6,11 +6,11 @@
<title>日志分析</title>
<!--拦截及公共ip-->
<script type="text/javascript" src="../../../../js/public/jquery-3.6.0.js"></script>
<script src="../../../js/system/IPUtils.js"></script>
<script src="../../../js/system/ajax_intercept.js"></script>
<script src="../../../js/system/public_utils.js"></script>
<script src="../../../js/smutil/sm2Utils.js"></script>
<script src="../../../js/smutil/smUtil.js"></script>
<script src="../../../../js/system/IPUtils.js"></script>
<script src="../../../../js/system/ajax_intercept.js"></script>
<script src="../../../../js/system/public_utils.js"></script>
<script src="../../../../js/smutil/sm2Utils.js"></script>
<script src="../../../../js/smutil/smUtil.js"></script>
<!--拦截及公共ip-->
<link rel="stylesheet" href="../../../../js/layui-v2.6.8/css/layui.css">
<link rel="stylesheet" type="text/css" href="../../../../css/base/log/logManage.css" />

View File

@ -6,11 +6,11 @@
<title>日志容量配置</title>
<!--拦截及公共ip-->
<script type="text/javascript" src="../../../../js/public/jquery-3.6.0.js"></script>
<script src="../../../js/system/IPUtils.js"></script>
<script src="../../../js/system/ajax_intercept.js"></script>
<script src="../../../js/system/public_utils.js"></script>
<script src="../../../js/smutil/sm2Utils.js"></script>
<script src="../../../js/smutil/smUtil.js"></script>
<script src="../../../../js/system/IPUtils.js"></script>
<script src="../../../../js/system/ajax_intercept.js"></script>
<script src="../../../../js/system/public_utils.js"></script>
<script src="../../../../js/smutil/sm2Utils.js"></script>
<script src="../../../../js/smutil/smUtil.js"></script>
<!--拦截及公共ip-->
<link rel="stylesheet" href="../../../../js/layui-v2.6.8/css/layui.css">
<link rel="stylesheet" type="text/css" href="../../../../css/base/log/logManage.css" />

View File

@ -29,64 +29,83 @@
<div class="layui-form-item">
<div class="layui-inline">
<div class="layui-input-inline">
<input type="text" id='roleName' name="roleName" autocomplete="off" class="layui-input"
placeholder="请输入用户身份" onBlur="inputTest1('roleName', 20, '用户身份')">
<input type="text" id='userName' name="userName" autocomplete="off" class="layui-input"
placeholder="操作人" onBlur="inputTest1('roleName', 20, '用户身份')">
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<input type="text" id='operIp' name="operIp" autocomplete="off" class="layui-input"
placeholder="请输入IP地址" onBlur="ipTest()">
placeholder="IP地址">
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline long_date">
<input type="text" id="workDay" class="layui-input" readonly placeholder="请选择日期">
<input type="text" id="workDay" class="layui-input" readonly placeholder="操作时间">
<img src="../../../../img/common-icon/date-icon.png" style="position: absolute;top: 24%; right: 3%;">
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<input type="text" id='detail' name="detail" autocomplete="off" class="layui-input"
<input type="text" id='operDetails' name="operDetails" autocomplete="off" class="layui-input"
placeholder="请输入操作内容" onBlur="inputTest2('detail', 200, '操作内容')">
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<select name="status" class="status" id="status" lay-search="" lay-reqtext="事件结果不能为空">
<select name="eventType" class="eventType" id="eventType" lay-search="" lay-reqtext="事件结果不能为空">
<option value="">请选择事件类型</option>
<option value="异常事件">异常事件</option>
<option value="正常事件">正常事件</option>
</select>
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<select name="operResult" class="operResult" id="operResult" lay-search="" lay-reqtext="事件结果不能为空">
<option value="">请选择事件结果</option>
<option value="0">成功</option>
<option value="1">失败</option>
<option value="1">成功</option>
<option value="0">失败</option>
</select>
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<select name="grade" class="grade" id="grade" lay-search="" lay-reqtext="操作类型不能为空">
<select name="operType" class="operType" id="operType" lay-search="" lay-reqtext="操作类型不能为空">
<option value="">请选择操作类型</option>
<option value="查询系统数据">查询系统数据</option>
<!-- <option value="增加系统数据">增加系统数据</option> -->
<option value="修改系统数据">修改系统数据</option>
<option value="备份日志">备份日志</option>
<option value="恢复日志">恢复日志</option>
<!-- <option value="错误日志">错误日志</option> -->
<option value="越权访问">越权访问</option>
<option value="用户登录">用户登录</option>
<option value="用户退出">用户退出</option>
<option value="告警日志">告警日志</option>
<option value="登录">登录</option>
<option value="退出">退出</option>
<option value="新增">新增</option>
<option value="修改">修改</option>
<option value="删除">删除</option>
<option value="查询">查询</option>
<option value="下载">下载</option>
<option value="导出">导出</option>
<option value="授权">授权</option>
<option value="导入">导入</option>
<option value="刷新">刷新</option>
<option value="备份">备份</option>
<option value="其他">其他</option>
</select>
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<select class="orderType" name="orderType" id="orderType" lay-search="" lay-reqtext="筛选字段不能为空">
<option value="create_time">时间</option>
<select class="sortName" name="sortName" id="sortName" lay-search="" lay-reqtext="排序字段">
<option value="">请选择排序字段</option>
<option value="oper_time">操作时间</option>
<option value="oper_ip">操作ip</option>
<option value="user_name">操作人</option>
<option value="oper_type">操作类型</option>
<option value="oper_result">事件结果</option>
<option value="event_type">事件类型</option>
</select>
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<select class="orderBy" name="orderBy" id="orderBy" lay-search="" lay-reqtext="排序方式不能为空">
<select class="sortType" name="sortType" id="sortType" lay-search="排序方式" lay-reqtext="排序方式不能为空">
<option value="">请选择排序方式</option>
<option value="DESC">倒序</option>
<option value="ASC">升序</option>
</select>
@ -97,7 +116,6 @@
<button type="reset" id='reset' class="layui-btn layui-btn-primary"><i
class="layui-icon layui-icon-refresh"></i> 重 置</button>
<button id='backup' type="button" class="layui-btn layui-btn-warm long_button" onclick="handleBackup()">备份</button>
<button id='recover' type="button" class="layui-btn long_button bgColor_green" onclick="handleRecover()">恢复</button>
</div>
</div>
</form>

View File

@ -24,7 +24,7 @@
<dl class="layui-nav-child">
<dd class="layui-this"><a href="javascript:;">系统日志</a></dd>
<dd><a href="javascript:;">业务日志</a></dd>
<dd><a href="javascript:;">运行日志</a></dd>
<dd><a href="javascript:;">异常日志</a></dd>
<dd><a href="javascript:;">日志分析</a></dd>
<dd><a href="javascript:;">日志容量配置</a></dd>
</dl>

View File

@ -27,9 +27,9 @@ layui.use(['layer', 'form', 'laydate', 'element'], function () {
// 查询按钮
$("#query").off().click(function () {
// 筛选校验
inputTest1('roleName', 20, '用户身份')
inputTest2('detail', 200, '操作内容')
ipTest()
// inputTest1('roleName', 20, '用户身份')
// inputTest2('detail', 200, '操作内容')
// ipTest()
pages(1,10)
return;
})
@ -39,6 +39,42 @@ layui.use(['layer', 'form', 'laydate', 'element'], function () {
})
})
// 备份
function handleBackup() {
let downUrl=dataUrl + 'system/sys/logs/downloadYwLogs' ;
downLoadByUrl(downUrl);
}
function downLoadByUrl(url){
var xhr = new XMLHttpRequest();
//GET请求,请求路径url,async(是否异步)
xhr.open('GET', url, true);
xhr.setRequestHeader("authorization", token);
//设置请求头参数的方式,如果没有可忽略此行代码
xhr.setRequestHeader("encryption", 'encryption');
//设置响应类型为 blob
xhr.responseType = 'blob';
//关键部分
xhr.onload = function (e) {
//如果请求执行成功
if (this.status == 200) {
var blob = this.response;
var filename = "yw_sys_log_info_back.text";//如123.xls
var a = document.createElement('a');
blob.type = "application/octet-stream";
var url = URL.createObjectURL(blob);
a.href = url;
a.download=filename;
a.click();
//释放之前创建的URL对象
window.URL.revokeObjectURL(url);
}
};
//发送请求
xhr.send();
}
// 输入框校验
function inputTest1 (field, length, fieldName) {
console.log('field----'+field);
@ -129,37 +165,44 @@ function laypages(total, page, limit) {
// 获取参数
function getReqParamss(page,limit,type) {
let obj = {};
let startTime='';
let endTime='';
if(!type){
console.log($("#workDay").val())
if($("#workDay").val()){
startTime=$("#workDay").val().split(' - ')[0]
endTime=$("#workDay").val().split(' - ')[1]
}
obj = {
page: page + "",
limit: limit + "",
roleName: $("#roleName").val(),
userName: $("#userName").val(),
operIp: $("#operIp").val(),
workDay: $("#workDay").val(),
startTime: $("#workDay").val().split(' ')[0],
endTime: $("#workDay").val().split(' ')[2],
detail: $("#detail").val(),
status: $("#status").val(),
grade: $("#grade").val(),
orderType: $("#orderType").val() || 'create_time',
orderBy: $("#orderBy").val() || 'DESC',
logType: '业务日志',
startTime:startTime,
endTime:endTime,
operDetails: $("#operDetails").val(),
eventType: $("#eventType").val(),
operResult: $("#operResult").val(),
operType: $("#operType").val(),
sortName: $("#sortName").val(),
sortType: $("#sortType").val()
};
}else{
obj = {
page: '1',
limit: '10',
roleName: "",
operIp: "",
workDay: "",
startTime: "",
endTime: "",
detail: "",
status: "",
grade: "",
orderType: "create_time",
orderBy: "DESC",
logType: '业务日志',
userName:'',
operIp:'',
startTime:'',
endTime:'',
operDetails: '',
eventType: '',
operResult: '',
operType: '',
sortName:'',
sortType: ''
};
}
return obj;
@ -174,30 +217,23 @@ function initTable(dataList,limit,page) {
title: '日志表',
data:dataList,
cols: [[ //表头
{ field: "number", type: "numbers", title: "序号", width: 100, unresize: true, align: "center", },
{ field: 'userName', title: '操作人', align: 'center', unresize: true, },
{ field: 'operIp', title: '操作ip', align: 'center',unresize: true},
{ field: 'operTime', title: '操作时间', align: 'center', width:220,unresize: true },
{ field: 'operModel', title: '操作模块', align: 'center', unresize: true, },
{ field: 'operDetails', title: '操作详情', align: 'center', unresize: true, },
{ field: 'operType', title: '操作类型', align: 'center', unresize: true, },
{ field: 'operType', title: '操作类型', align: 'center', unresize: true, },
{ field: 'eventType', title: '事件类型', align: 'center', unresize: true, },
{ field: 'operParam', title: '操作参数', align: 'center', unresize: true, },
{ field: 'operMeth', title: '操作方法', align: 'center', unresize: true, },
{
title: "序号",
width: 100,
unresize: true,
sort: true,
align: "center",
templet: function (d) {
return (page - 1) * limit + d.LAY_INDEX;
}
},
{ field: 'roleName', title: '用户身份', align: 'center', unresize: true, sort: true},
{ field: 'operName', title: '操作用户名', align: 'center', unresize: true, sort: true, },
{ field: 'operTime', title: '操作时间', align: 'center', unresize: true, sort: true,},
{ field: 'operIp', title: 'IP地址', align: 'center', unresize: true, sort: true,},
{ field: 'title', title: '业务模块', align: 'center', unresize: true, sort: true,},
// { field: 'title', title: '所属菜单', align: 'center', width: 150, unresize: true, },
{ field: 'detail', title: '操作内容', align: 'center', unresize: true, sort: true,},
{ field: 'grade', title: '操作类型', align: 'center', unresize: true, sort: true,},
{ field: 'status', title: '操作结果', align: 'center', unresize: true, sort: true, templet: function (d) {
if(d.status == '0') {
return '成功'
} else if(d.status == '1') {
field: 'operResult', title: '操作结果', align: 'center', unresize: true, templet: function (d) {
if (d.operResult == '0') {
return '失败'
} else if(d.operResult == '1') {
return '成功'
} else {
return ''
}

View File

@ -0,0 +1,259 @@
let table;
var logTable;
let form;
var per;
let page = 1, limit = 10;
layui.use(['layer', 'form', 'laydate', 'element'], function () {
var layer = layui.layer; //弹层
var laypage = layui.laypage; //分页
table = layui.table; //表格
form = layui.form;
laydate = layui.laydate;
laydate.render({
elem: '#workDay', //指定元素 元素选择器
type: 'date', //选择时间类型 可选值:year(年) month(年月) date(年月日) time(时分秒) datetime(年月日时分秒)
trigger: 'click',
range: true,
format: 'yyyy-MM-dd', //时间格式 常用时间格式:yyyy-MM-dd HH:mm:ss
max: Date.parse(new Date()),
btns: ['now', 'confirm'], //选择框右下角显示的按钮 清除-现在-确定
});
//注册权限
// per = getPer();
// console.log(per);
//初始化下拉选
pages(1,10,1);
// initTable();
// 查询按钮
$("#query").off().click(function () {
// 筛选校验
// inputTest1('roleName', 20, '用户身份')
// inputTest2('detail', 200, '操作内容')
// ipTest()
pages(1,10)
return;
})
// 重置
$("#reset").off().click(function () {
pages(1,10,1)
})
})
// 输入框校验
function inputTest1 (field, length, fieldName) {
let query = $("#"+field).val()
console.log(query);
if (query.trim() === '') return
if (query && query.length > length) {
layer.alert(`${fieldName}长度大于${length}个字符!`, {icon: 2});
}
// 禁止输入表情
const reg = /[^0-9a-zA-Z\u4E00-\u9FA5]/g
if (!reg.test(query)) {
return
} else {
layer.alert(`${fieldName}内容包含特殊字符!`, {icon: 2});
// $("#"+field).val("")
return
}
}
function inputTest2 (field, length, fieldName) {
let query = $("#"+field).val()
if (query.trim() === '') return
if (!query && query.length > length) {
layer.alert(`${fieldName}长度大于${length}个字符!`, {icon: 2});
}
}
// IP地址校验
function ipTest () {
const operIp = $("#operIp").val()
if (operIp.trim() === '') return
const regStr = /^((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}$/
if (regStr.test(operIp)) {
return
} else {
layer.alert("IP地址格式不正确",{icon: 2});
// $("#operIp").val("")
return
}
}
// 备份
function handleBackup() {
let downUrl=dataUrl + 'system/sys/logs/downloadErrLogs' ;
downLoadByUrl(downUrl);
}
function downLoadByUrl(url){
var xhr = new XMLHttpRequest();
//GET请求,请求路径url,async(是否异步)
xhr.open('GET', url, true);
xhr.setRequestHeader("authorization", token);
xhr.setRequestHeader("encryption", 'encryption');
//设置响应类型为 blob
xhr.responseType = 'blob';
//关键部分
xhr.onload = function (e) {
//如果请求执行成功
if (this.status == 200) {
var blob = this.response;
var filename = "err_log_info_back.text";//如123.xls
var a = document.createElement('a');
blob.type = "application/octet-stream";
var url = URL.createObjectURL(blob);
a.href = url;
a.download=filename;
a.click();
//释放之前创建的URL对象
window.URL.revokeObjectURL(url);
}
};
//发送请求
xhr.send();
}
// 恢复
function handleRecover() {
$.ajax({
headers:{
"encrypt":sm3(JSON.stringify({
logType: '系统日志'
}))
},
url: dataUrl + 'system/sys/logs/restoreLog' ,
type: 'get',
data: {
logType: '系统日志'
},
success: function (res) {
console.log(res);
if (res.code === 200) {
layer.alert("恢复成功",{icon: 1});
} else {
layer.alert("恢复失败",{icon: 2});
}
}
});
}
function pages(page, limit,type) {
let params = getReqParamss(page,limit,type);
$.ajax({
headers:{
"encrypt":sm3(JSON.stringify(params))
},
url: dataUrl + 'system/sys/logs/getErrLogs', //数据接口(此处为静态数据,仅作演示)
data: params,
type: 'POST',
async: false,
success: function (result) {
if(result.code === 500){
layer.alert(result.msg,{icon:2})
}
if (result.data) {
initTable(result.data,result.limit,result.curr)
laypages(result.count, result.curr, result.limit)
}
}, error: function () {
}
});
}
function laypages(total, page, limit) {
layui.use(['laypage'], function () {
let laypage = layui.laypage;
laypage.render({
elem: 'voi-page',
count: total,
curr: page,
limit: limit,
layout: ['prev', 'page', 'next', 'skip', 'count', 'limit'],
groups: 5,
jump: function (obj, first) {
if (!first) {
page = obj.curr, limit = obj.limit;
pages(obj.curr, obj.limit,null);
}
}
});
})
}
// 获取参数
function getReqParamss(page,limit,type) {
let obj = {};
let startTime='';
let endTime='';
if(!type){
console.log($("#workDay").val())
if($("#workDay").val()){
startTime=$("#workDay").val().split(' - ')[0]
endTime=$("#workDay").val().split(' - ')[1]
}
obj = {
page: page + "",
limit: limit + "",
userName: $("#userName").val(),
operIp: $("#operIp").val(),
startTime:startTime,
endTime:endTime,
errGrade: $("#errGrade").val(),
eventType: $("#eventType").val(),
operResult: $("#operResult").val(),
errReason: $("#errReason").val(),
sortName: $("#sortName").val(),
sortType: $("#sortType").val()
};
}else{
obj = {
page: '1',
limit: '10',
userName: '',
operIp: '',
startTime:'',
endTime:'',
errGrade: '',
eventType: '',
operResult: '',
errReason:'',
sortName: '',
sortType: ''
};
}
return obj;
}
function initTable(dataList,limit,page) {
// 执行一个 table 实例
logTable = table.render({
id: 'logTable',
elem: '#log-table',
height: $(window).height() - ($(window).height() * 0.25),
title: '日志表',
data:dataList,
cols: [[ //表头
{ field: "number", type: "numbers", title: "序号", width: 100, unresize: true, align: "center", },
{ field: 'userName', title: '操作人', align: 'center', unresize: true, },
{ field: 'operDetails', title: '操作详情', align: 'center', unresize: true, },
{ field: 'operIp', title: '操作ip', align: 'center',unresize: true},
{ field: 'operTime', title: '操作时间', align: 'center', width:220,unresize: true },
{ field: 'operModel', title: '操作模块', align: 'center', unresize: true, },
{ field: 'errReason', title: '异常类型', align: 'center', unresize: true, },
{ field: 'errGrade', title: '异常等级', align: 'center', unresize: true, },
{ field: 'eventType', title: '事件类型', align: 'center', unresize: true, },
{ field: 'operMeth', title: '操作路径', align: 'center', unresize: true, },
{
field: 'operResult', title: '事件结果', align: 'center', unresize: true, templet: function (d) {
if (d.operResult == '0') {
return '失败'
} else if(d.operResult == '1') {
return '成功'
} else {
return ''
}
} },
]],
limit:limit
});
}

View File

@ -67,6 +67,7 @@ function getCurrentMonthFirst() {
//操作类型统计 数据源
function logStatisticsData(type, startTime, endTime) {
console.log(type)
$.ajax({
headers: {
"encrypt":sm3(JSON.stringify({

View File

@ -27,9 +27,9 @@ layui.use(['layer', 'form', 'laydate', 'element'], function () {
// 查询按钮
$("#query").off().click(function () {
// 筛选校验
inputTest1('roleName', 20, '用户身份')
inputTest2('detail', 200, '操作内容')
ipTest()
// inputTest1('roleName', 20, '用户身份')
// inputTest2('detail', 200, '操作内容')
// ipTest()
pages(1,10)
return;
})
@ -41,10 +41,6 @@ layui.use(['layer', 'form', 'laydate', 'element'], function () {
// 输入框校验
function inputTest1 (field, length, fieldName) {
console.log('field----'+field);
console.log('length----'+length);
console.log(typeof length);
let query = $("#"+field).val()
console.log(query);
if (query.trim() === '') return
@ -85,26 +81,37 @@ function ipTest () {
// 备份
function handleBackup() {
$.ajax({
headers:{
"encrypt":sm3(JSON.stringify({
logType: '系统日志'
}))
},
url: dataUrl + 'system/sys/logs/copyLog',
type: 'get',
data: {
logType: '系统日志'
},
success: function (res) {
console.log(res);
if (res.code === 200) {
layer.alert("备份成功",{icon: 1});
} else {
layer.alert("备份失败",{icon: 2});
}
}
});
let downUrl=dataUrl + 'system/sys/logs/downloadSystemLogs' ;
downLoadByUrl(downUrl);
}
function downLoadByUrl(url){
var xhr = new XMLHttpRequest();
//GET请求,请求路径url,async(是否异步)
xhr.open('GET', url, true);
xhr.setRequestHeader("authorization", token);
//设置请求头参数的方式,如果没有可忽略此行代码
xhr.setRequestHeader("encryption", 'encryption');
//设置响应类型为 blob
xhr.responseType = 'blob';
//关键部分
xhr.onload = function (e) {
//如果请求执行成功
if (this.status == 200) {
var blob = this.response;
var filename = "system_log_info_back.text";//如123.xls
var a = document.createElement('a');
blob.type = "application/octet-stream";
var url = URL.createObjectURL(blob);
a.href = url;
a.download=filename;
a.click();
//释放之前创建的URL对象
window.URL.revokeObjectURL(url);
}
};
//发送请求
xhr.send();
}
// 恢复
@ -140,7 +147,6 @@ function pages(page, limit,type) {
},
url: dataUrl + 'system/sys/logs/getByPage', //数据接口(此处为静态数据,仅作演示)
data: params,
//content:'applicatiopn/json',
type: 'POST',
async: false,
success: function (result) {
@ -148,7 +154,6 @@ function pages(page, limit,type) {
layer.alert(result.msg,{icon:2})
}
if (result.data) {
//console.log(result.data)
initTable(result.data,result.limit,result.curr)
laypages(result.count, result.curr, result.limit)
}
@ -178,37 +183,44 @@ function laypages(total, page, limit) {
// 获取参数
function getReqParamss(page,limit,type) {
let obj = {};
let startTime='';
let endTime='';
if(!type){
console.log($("#workDay").val())
if($("#workDay").val()){
startTime=$("#workDay").val().split(' - ')[0]
endTime=$("#workDay").val().split(' - ')[1]
}
obj = {
page: page + "",
limit: limit + "",
roleName: $("#roleName").val(),
userName: $("#userName").val(),
operIp: $("#operIp").val(),
workDay: $("#workDay").val(),
startTime: $("#workDay").val().split(' ')[0],
endTime: $("#workDay").val().split(' ')[2],
detail: $("#detail").val(),
status: $("#status").val(),
grade: $("#grade").val(),
orderType: $("#orderType").val() || 'create_time',
orderBy: $("#orderBy").val() || 'DESC',
logType: '系统日志',
startTime:startTime,
endTime:endTime,
operDetails: $("#operDetails").val(),
eventType: $("#eventType").val(),
operResult: $("#operResult").val(),
operType: $("#operType").val(),
sortName: $("#sortName").val(),
sortType: $("#sortType").val()
};
}else{
obj = {
page: '1',
limit: '10',
roleName: "",
operIp: "",
workDay: "",
startTime: "",
endTime: "",
detail: "",
status: "",
grade: "",
orderType: "create_time",
orderBy: "DESC",
logType: '系统日志',
userName:'',
operIp:'',
startTime:'',
endTime:'',
operDetails: '',
eventType: '',
operResult: '',
operType: '',
sortName:'',
sortType: ''
};
}
return obj;
@ -224,20 +236,22 @@ function initTable(dataList,limit,page) {
data:dataList,
cols: [[ //表头
{ field: "number", type: "numbers", title: "序号", width: 100, unresize: true, align: "center", },
{ field: 'roleName', title: '用户身份', align: 'center', unresize: true, },
{ field: 'operName', title: '操作用户名', align: 'center', unresize: true, },
{ field: 'operTime', title: '操作时间', align: 'center', unresize: true, },
{ field: 'operIp', title: 'IP地址', align: 'center', unresize: true, },
{ field: 'title', title: '业务模块', align: 'center', unresize: true, },
// { field: 'title', title: '所属菜单', align: 'center', unresize: true, },
{ field: 'detail', title: '操作内容', align: 'center', unresize: true, },
{ field: 'grade', title: '操作类型', align: 'center', unresize: true, },
{ field: 'userName', title: '操作人', align: 'center', unresize: true, },
{ field: 'operIp', title: '操作ip', align: 'center',unresize: true},
{ field: 'operTime', title: '操作时间', align: 'center', width:220,unresize: true },
{ field: 'operModel', title: '操作模块', align: 'center', unresize: true, },
{ field: 'operDetails', title: '操作详情', align: 'center', unresize: true, },
{ field: 'operType', title: '操作类型', align: 'center', unresize: true, },
{ field: 'operType', title: '操作类型', align: 'center', unresize: true, },
{ field: 'eventType', title: '事件类型', align: 'center', unresize: true, },
{ field: 'operParam', title: '操作参数', align: 'center', unresize: true, },
{ field: 'operMeth', title: '操作方法', align: 'center', unresize: true, },
{
field: 'status', title: '操作结果', align: 'center', unresize: true, templet: function (d) {
if (d.status == '0') {
return '成功'
} else if(d.status == '1') {
field: 'operResult', title: '操作结果', align: 'center', unresize: true, templet: function (d) {
if (d.operResult == '0') {
return '失败'
} else if(d.operResult == '1') {
return '成功'
} else {
return ''
}

View File

@ -11,8 +11,8 @@ layui.use(['element'], function () {
$("#content").prop('src','../../../html/base/log/child/systemLog.html');
}else if(name === '业务日志'){
$("#content").prop('src','../../../html/base/log/child/businessLog.html');
}else if(name === '运行日志'){
$("#content").prop('src','../../../html/base/log/child/runLog.html');
}else if(name === '异常日志'){
$("#content").prop('src','../../../html/base/log/child/errLog.html');
}else if(name === '日志分析'){
$("#content").prop('src','../../../html/base/log/child/logAnalysis.html');
}else if(name === '日志容量配置'){

View File

@ -96,7 +96,7 @@ function getUrlParam (url) {
arrObj[1]=arrObj[1].replaceAll("+"," ");
}
return arrObj[0]+"?"+ sm2Encrypt(arrObj[1]);
return arrObj[0]+"?params="+ sm2Encrypt(arrObj[1]);
} else {
return url;
}