2025-05-20 16:33:23 +08:00

116 lines
5.0 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'echarts'], function ($, undefined, Backend, Table, Form,Echarts) {
var Controller = {
index: function () {
// 初始化表格参数配置
Table.api.init({
extend: {
"index_url": "webscan/webscanlog/index",
"add_url": "",
"edit_url": "",
"del_url": "",
"multi_url": "",
}
});
var table = $("#table");
// 初始化表格
table.bootstrapTable({
url: $.fn.bootstrapTable.defaults.extend.index_url,
columns: [
[
{field: 'request_url', title:'请求url', operate: 'LIKE'},
{field: 'ip', title: __('IP'), operate: 'LIKE',events: Controller.api.events.ip, formatter: Controller.api.formatter.ip},
{field: 'method', title: __('请求类型')},
{field: 'rkey', title: __('参数')},
{field: 'rdata', title: __('攻击值'), operate: 'LIKE'},
{field: 'user_agent', title: __('user_agent'), operate: 'LIKE'},
{field: 'create_time', title: __('攻击时间'), formatter: Table.api.formatter.datetime, operate: 'RANGE', addclass: 'datetimerange', sortable: true},
{field: 'operate', title: __('Operate'), table: table,buttons: [
{
name: 'cancel',
text: '加入黑名单',
title: '加入黑名单',
icon: 'fa fa-exclamation-triangle',
classname: 'btn btn-xs btn-danger btn-ajax',
confirm: '确认加入黑名单?',
url: function(row){
return 'webscan/webscanlog/black/ip/'+row.ip;
},
success: function (data, ret) {
}
}], formatter: Table.api.formatter.operate}
]
],
});
// 为表格绑定事件
Table.api.bindevent(table);//当内容渲染完成后
},
dashboard: function () {
// 基于准备好的dom初始化echarts实例
var myChart = Echarts.init(document.getElementById('echart'), 'walden');
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(setchart(data));
function setchart(data){
// 指定图表的配置项和数据
var option = {
title: {text: '',subtext: ''},
tooltip: {trigger: 'axis'},
legend: {data: ['攻击次数']},
toolbox: {feature: {magicType: {show: true, type: ['stack', 'tiled']},saveAsImage: {show: true}}},
xAxis: {type: 'category',boundaryGap: false,data: data.column},
yAxis: [{type : 'value'}],
grid: [{left: '3%',right: '4%',bottom: '3%',containLabel: true}],
series: [{name: '攻击次数',type: 'line',smooth: true,areaStyle: {normal: {}},lineStyle: { normal: {width: 1.5}},data: data.totallist}]
};
return option;
}
//users_statistics
$(document).on('click', ".statistics", function () {
Backend.api.open($(this).attr("href"),$(this).data("title"),[],'80%','80%');
return false;
});
},
add: function () {
Controller.api.bindevent();
},
edit: function () {
Controller.api.bindevent();
},
api: {
bindevent: function () {
Form.api.bindevent($("form[role=form]"));
},formatter: {//渲染的方法
ip: function (value, row, index) {
return '<a class="btn btn-xs btn-ip bg-success"><i class="fa fa-map-marker"></i> ' + value + '</a>';
},
},
events: {//绑定事件的方法
ip: {
//格式为:方法名+空格+DOM元素
'click .btn-ip': function (e, value, row, index) {
e.stopPropagation();
var container = $("#table").data("bootstrap.table").$container;
var options = $("#table").bootstrapTable('getOptions');
//这里我们手动将数据填充到表单然后提交
$("form.form-commonsearch [name='ip']", container).val(value);
$("form.form-commonsearch", container).trigger('submit');
}
},
}
}
};
return Controller;
});