Authored by xwx

告警策略告警模板迁移

... ... @@ -12,7 +12,6 @@ layui.define(['form', 'admin', 'laydate', 'common', 'sessions', 'reskpilist'], f
var sessions = layui.sessions;
var accessToken = sessions.getToken()['access_token'];
console.log(data)
//lsq 是否默认从master迁移 2022-08-23
admin.req({
url: common.domainName + '/api-web/manage/ddic/findSucDdics/alarm_strategy_type'
, method: 'POST'
... ... @@ -39,10 +38,10 @@ layui.define(['form', 'admin', 'laydate', 'common', 'sessions', 'reskpilist'], f
exprToChar(res.object, 'commonlyExpr');
exprToChar(res.object, 'importantExpr');
exprToChar(res.object, 'seriousExpr');
//lsq 告警策略回显 2022-08-19
form.val("add-alarmpolicy-form", res.object);
$("#alarm-policy-kpiName").val(res.object.kpiId + " " + res.object.kpiName);
$("#seriousTimes").val(res.object.seriousTimes);
$("#alarmPolicyType").val(res.object.policyType);
$("#alarmpolicy_policyType_add").val(res.object.policyType);
}
});
... ... @@ -51,12 +50,12 @@ layui.define(['form', 'admin', 'laydate', 'common', 'sessions', 'reskpilist'], f
url: domainName + '/api-web/policyMerge/get?noticeMergePolicyId=' + data.id
, async: false
, done: function (res) {
//lsq 告警策略回显 2022-08-19
if(res && res.data && res.data.length>0){
$("#noticeMergeFlagExpr").val(res.data[0].noticeMergeExpr);
}
}
});
} else {
$("#alarmpolicy_policyType_add").val('1');
$("#seriousTimes").val('00:00:00 - 23:59:59');
... ... @@ -68,7 +67,6 @@ layui.define(['form', 'admin', 'laydate', 'common', 'sessions', 'reskpilist'], f
, type: 'time'
, range: true
});
var resType = localStorage.getItem("currentResType");
var NoticeMergeFlag = 'off';
// 获取合并通知开关是否开启
... ... @@ -81,7 +79,7 @@ layui.define(['form', 'admin', 'laydate', 'common', 'sessions', 'reskpilist'], f
, async: false
, success: function (res) {
$.each(res.data, function (i, v) {
if (v.ddicCode == 'on') {
if (v.ddicCode == 'noticeMergeSwitch:on') {
NoticeMergeFlag = 'on';
$('#noticeMergeTab').show();
}
... ... @@ -90,7 +88,6 @@ layui.define(['form', 'admin', 'laydate', 'common', 'sessions', 'reskpilist'], f
})
}
$('#btn-alarmpolicy-expr-add').unbind('click').on('click', function () {
editNoticeExpr();
return false;
... ... @@ -250,31 +247,22 @@ layui.define(['form', 'admin', 'laydate', 'common', 'sessions', 'reskpilist'], f
return false;
}
if (!data.alarmContentExpr || data.alarmContentExpr == '') {
layer.msg("请先填写告警内容描述表达式!", {
if (!data.seriousTimes || data.seriousTimes == '') {
layer.msg("请先填写告警时段!", {
icon: 7
, time: 3000
});
return false;
}
if (!data.seriousTimes || data.seriousTimes == '') {
layer.msg("请先填写告警时段!", {
if (!data.alarmContentExpr || data.alarmContentExpr == '') {
layer.msg("请先填写告警内容描述表达式!", {
icon: 7
, time: 3000
});
return false;
}
if (NoticeMergeFlag && NoticeMergeFlag == 'on') {
if (!data.alarmContentExpr || data.alarmContentExpr == '') {
layer.msg("请先填写告警内容描述表达式!", {
icon: 7
, time: 3000
});
return false;
}
}
var importantPolicy = data.seriousPolicy;
var importantExpr = data.importantPolicy;
... ... @@ -287,15 +275,16 @@ layui.define(['form', 'admin', 'laydate', 'common', 'sessions', 'reskpilist'], f
return false;
}
if (!data.noticeMergeFlagExpr || data.noticeMergeFlagExpr == '') {
layer.msg("请先填写通知合并策略描述表达式!", {
icon: 7
, time: 3000
});
return false;
if (NoticeMergeFlag && NoticeMergeFlag == 'on') {
if (!data.noticeMergeFlagExpr || data.noticeMergeFlagExpr == '') {
layer.msg("请先填写通知合并策略描述表达式!", {
icon: 7
, time: 3000
});
return false;
}
}
/**
* 保存通知合并策略
*/
... ...
//告警策略
layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'xmSelect', 'treeTable'], function (exports) {
layui.define(['table', 'form', 'admin', 'layer', 'common','sessions','xmSelect','treeTable'], function (exports) {
var $ = layui.$;
var form = layui.form;
var layer = layui.layer;
... ... @@ -9,7 +9,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'xmSelect
var xmSelect = layui.xmSelect;
var treeTable = layui.treeTable;
var domainName = common.domainName;
var resListSelectIds = [];
//对外暴露的接口
exports('alarmpolicyIndex', function (data) {
var sessions = layui.sessions;
... ... @@ -17,10 +17,25 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'xmSelect
//获得权限列表
var checkList = common.checkPermission(accessToken);
var resName = '';
resListSelectIds = [];
admin.req({
url: common.domainName + '/api-web/manage/ddic/findSucDdics/alarm_strategy_type'
, method: 'POST'
, async: false
}).done(function (res) {
let radioData = res.data;
let htmlRadio = ' <option value="">=策略类型=</option>';
if (radioData && radioData.length > 0) {
radioData.map(item => {
htmlRadio += `<option value="` + item.ddicSort + `">`+ item.ddicName+'</option>'
})
};
$('#alarmpolicy_policyType').html(htmlRadio);
});
var table_data = [];
if (data && data.type == 'alarmTemplate') {
$('#alarmpolicy_policyType').val('0');
$('#alarmpolicy_policyType').attr('disabled', 'disabled');
$('#alarmpolicy_policyType').val('3');
$('#alarmpolicy_policyType').attr('disabled','disabled');
} else {
$('#alarmpolicy_policyType').val('1');
}
... ... @@ -32,28 +47,28 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'xmSelect
}
});
//查询按钮点击事件 joke add 20210428
$('#alarmpolicyQueryBtn').on('click', function () {
$('#alarmpolicyQueryBtn').on('click',function () {
reloadAlarmPolicyTable();
});
//指标类型
form.on('select(alarmpolicy_kpitype)', function () {
form.on('select(alarmpolicy_kpitype)', function(){
reloadAlarmPolicyTable();
});
//指标分类
form.on('select(alarmpolicy_category)', function () {
form.on('select(alarmpolicy_category)', function(){
reloadAlarmPolicyTable();
});
//策略类型分类
form.on('select(alarmpolicy_policyType)', function () {
form.on('select(alarmpolicy_policyType)', function(){
reloadAlarmPolicyTable();
});
form.render(null, 'alarmpolicy-form');
//新增
$("#alarmpolicy_create").unbind("click").on("click", function () {
$("#alarmpolicy_create").unbind("click").on("click",function () {
if ($.inArray('back:alarmpolicy:save', checkList) == -1) {
layer.msg('暂无权限!', {icon: 7, time: 3000});
return;
... ... @@ -62,7 +77,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'xmSelect
});
//同步
$("#alarmpolicy_sync").on("click", function () {
$("#alarmpolicy_sync").on("click",function (){
if ($.inArray('back:alarmpolicy:synchronization', checkList) == -1) {
layer.msg('暂无权限!', {icon: 7, time: 3000});
return;
... ... @@ -70,7 +85,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'xmSelect
syncAlarmPolicy();
});
//删除
$("#alarmpolicy_delete").unbind("click").on("click", function () {
$("#alarmpolicy_delete").unbind("click").on("click",function () {
deleteAlarmPolicy();
});
... ... @@ -78,64 +93,58 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'xmSelect
var alarmpolicyTable = table.render({
elem: '#alarmpolicyTable'
, url: domainName + '/api-web/alarmPolicy/page'
, where: {
access_token: accessToken,
alarmPolicyName: $("#alarmpolicykw").val(),
kpiIdent: $('#alarmpolicy_category').val(),
resType: $('#alarmpolicy_kpitype').val(),
policyType: $('#alarmpolicy_policyType').val(),
, where:{
access_token:accessToken,
alarmPolicyName:$("#alarmpolicykw").val(),
kpiIdent:$('#alarmpolicy_category').val(),
resType:$('#alarmpolicy_kpitype').val(),
policyType:$('#alarmpolicy_policyType').val(),
resName: resName
}
, height: 'full-200'
, page: {
layout: ['count', 'prev', 'page', 'next', 'limit', 'skip']
, theme: '#1E9FFF'//自定义分页主题颜色
,theme: '#1E9FFF'//自定义分页主题颜色
}
, end: function (e) {
, end: function(e){
form.render();
}
, even: true
, cols: [[
{type: 'checkbox'}
, {
field: 'policyType', title: '策略类型', align: 'center', sort: true, width: 120,
templet: function (d) {
var checked = '';
if (d.policyType == '1') { //默认
checked = "checked";
{type: 'checkbox',field: 'checkbox'}
, {field: 'policyType', title: '策略类型', align: 'center', sort: true, width:180,
templet: function(d){
switch (d.policyType){
case "1":
return "全局默认策略";
case "2":
return "全局非默认策略";
case "3":
return "模板策略";
}
return `<input type="checkbox" id="${d.alarmPolicyId}" data-kpiid="${d.kpiId}" name="close" ${checked} lay-skin="switch" lay-filter="switchPolicyType" lay-text="默认|非默认">`;
}
}
}}
, {
field: 'alarmPolicyName', title: '策略名称', align: 'center', sort: true,
templet: '<div><span data-id="{{d.alarmPolicyId}}" class="layui-table-link view-alarmPolicy-name">{{d.alarmPolicyName}}</span></div>'
}
, {
title: '资源类型', align: 'center', templet: function (d) {
, {title: '资源类型', align: 'center',templet:function (d){
return `${d.resTypeName}`
}
}
, {field: 'kpiName', title: '指标', align: 'center', width: 240}
, {
title: '策略内容', align: 'center', templet: function (d) {
}}
, {field: 'kpiName', title: '指标', align: 'center', width:240}
, {title: '策略内容', align: 'center',templet:function (d){
return `告警策略表达式:严重告警:【${d.seriousPolicy},<br>重要告警:【${d.importantPolicy},<br>一般告警:【${d.commonlyPolicy}】`;
}
}
, {
field: 'alarmTempTotal', title: '所属告警模板量', align: 'center', sort: true, width: 180,
templet: function (d) {
if (d.alarmTempTotal != '0') {
}}
, {field: 'alarmTempTotal', title: '所属告警模板量', align: 'center', sort: true, width:180,
templet:function (d){
if(d.alarmTempTotal != '0'){
return `<div><span data-id="${d.alarmPolicyId}" class="layui-table-link view-alarm-template-total">${d.alarmTempTotal}</span></div>`;
} else {
}else{
return d.alarmTempTotal;
}
}
}
}}
// , {field: 'kpiTypes', title: '指标类型', align: 'center', sort: true,minWith:180}
, {
field: 'kpiIdent', title: '指标类型', align: 'center', width: 120, templet: function (d) {
switch (d.kpiIdent) {
, {field: 'kpiIdent', title: '指标类型', align: 'center', width:120, templet: function(d){
switch (d.kpiIdent){
case "0":
return "基本指标";
case "1":
... ... @@ -146,15 +155,13 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'xmSelect
return "告警指标";
}
}
}
, {
field: 'syncFlag', title: '同步状态', align: 'center', sort: true, width: 120,
templet: function (d) {
}}
, {field: 'syncFlag',title: '同步状态',align: 'center', sort: true,width:120,
templet: function(d){
if (d.policyType == '1') { //默认
if (d.syncFlag != 1) { //未同步
if(d.syncFlag != 1){ //未同步
return `<input type="checkbox" id="${d.alarmPolicyId}" name="close" lay-skin="switch" lay-filter="switchSyncPolicy" lay-text="已同步|未同步">`;
} else {
}else{
return ' <button type="button" class="layui-btn layui-bg-green layui-btn-radius layui-btn-xs p-0-15">已同步</button>';
}
} else {
... ... @@ -162,36 +169,36 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'xmSelect
}
}
}
, {
title: '操作', align: 'center', width: 100, fixed: 'right',
, {title: '操作', align: 'center',width:100, fixed: 'right',
templet: '<div>' +
'<button data-id="{{d.alarmPolicyId}}" lay-tips="删除" type="button" class="layui-btn layui-btn-xs layui-btn-normal delete-alarmPolicy-btn"><i class="layui-icon layui-icon-delete"></i></button>' +
'<button data-id="{{d.alarmPolicyId}}" lay-tips="删除" type="button" class="layui-btn layui-btn-xs layui-btn-normal delete-alarmPolicy-btn"><i class="layui-icon layui-icon-delete"></i></button>'+
'</div>'
}
]],
done: function () {
done:function (res) {
table_data = res.data;
//设置默认
form.on('switch(switchPolicyType)', function (obj) {
form.on('switch(switchPolicyType)', function(obj){
var alarmPolicyId = obj.elem.id;
var alarmPolicyKpiId = $(obj.elem).data("kpiid");
var isChecked = obj.elem.checked ? "1" : "0";
var isChecked = obj.elem.checked?"1":"0";
admin.req({
url: common.domainName + '/api-web/alarmPolicy/default'
, type: 'post'
, data: {
id: alarmPolicyId,
type: isChecked,
kpiId: alarmPolicyKpiId
url:common.domainName + '/api-web/alarmPolicy/default'
, type : 'post'
, data:{
id:alarmPolicyId,
type:isChecked,
kpiId:alarmPolicyKpiId
}
}).done(function (res) {
layer.msg(res.msg, {offset: '15px', icon: 1, time: 2000}, function () {
layer.msg(res.msg, { offset: '15px' , icon: 1, time: 2000},function (){
reloadAlarmPolicyTable();
});
});
});
//点击名称编辑
$(".view-alarmPolicy-name").off("click").on("click", function () {
$(".view-alarmPolicy-name").off("click").on("click",function () {
if ($.inArray('back:alarmpolicy:update', checkList) == -1) {
layer.msg('暂无权限!', {icon: 7, time: 3000});
return;
... ... @@ -200,33 +207,85 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'xmSelect
});
//查看告警策略所属模板列表
$(".view-alarm-template-total").on("click", function () {
$(".view-alarm-template-total").on("click",function (){
var id = $(this).data("id");
common.openWin('baseconfig/alarmtemplate/list', "告警模板", {policyId: id})
common.openWin('baseconfig/alarmtemplate/list',"告警模板",{policyId:id})
});
//设置同步
form.on('switch(switchSyncPolicy)', function (obj) {
form.on('switch(switchSyncPolicy)', function(obj){
var alarmPolicyId = obj.elem.id;
syncAlarmPolicy(alarmPolicyId);
});
//删除
$(".delete-alarmPolicy-btn").on("click", function () {
$(".delete-alarmPolicy-btn").on("click",function () {
var id = $(this).data("id");
deleteAlarmPolicy(id)
});
//回显
if(data && data.oldData){
resListSelectIds = data.oldData;
$.each(res.data,function (i,e) {
$.each(data.oldData,function (j,k) {
if(e.alarmPolicyId === k){
var index= e.LAY_TABLE_INDEX;
$("[lay-id='alarmpolicyTable']").find('tr[data-index=' + index + '] input[name="layTableCheckbox"]').next().click();
}
})
})
}
}
});
//监听ckecked选中事件
table.on('checkbox(alarmpolicyTable)', function(obj){
if (obj.checked == true) {
if (obj.type == 'one' && resListSelectIds.indexOf(obj.data.resId) === -1) {//勾选单条
resListSelectIds.push(obj.data.alarmPolicyId);
}
if (obj.type == 'all') {//勾选全部
for (var i = 0; i < table_data.length; i++) {
if (resListSelectIds.indexOf(obj.data.alarmPolicyId) === -1) {
resListSelectIds.push(table_data[i].alarmPolicyId);
}
}
}
} else {
if (obj.type == 'one') {
for (var i = 0; i < resListSelectIds.length; i++) {
if (resListSelectIds[i] == obj.data.resId) {
resListSelectIds = resListSelectIds.filter(function (item) {
return item != resListSelectIds[i];
});
}
}
} else {
for (var i = 0; i < resListSelectIds.length; i++) {
for (var j = 0; j < table_data.length; j++) {
if (resListSelectIds[i] == table_data[j].resId) {
resListSelectIds = resListSelectIds.filter(function (item) {
return item != resListSelectIds[i];
});
}
}
}
}
}
// 跨域发送信息,不能删除
obj.data["checked"] = obj.checked;
window.top.postMessage({res:obj.data},"*");
})
//同步策略
function syncAlarmPolicy(alarmPolicyId) {
function syncAlarmPolicy(alarmPolicyId){
if (typeof (alarmPolicyId) != "string") {
var ids = [];
var data = table.checkStatus('alarmpolicyTable').data;
var flag = true;
if (data && data.length > 0) {
$.each(data, function (i, obj) {
if(data && data.length > 0){
$.each(data,function (i,obj) {
if (obj.policyType == '0') {
flag = false
}
... ... @@ -234,11 +293,11 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'xmSelect
});
}
if (!flag) {
layer.msg('非默认策略类型禁止同步!', {icon: 7, time: 2000})
layer.msg('非默认策略类型禁止同步!',{icon: 7,time:2000})
return;
}
if (ids.length == 0) {
layer.msg('请选择要同步的数据', {icon: 7, time: 2000});
layer.msg('请选择要同步的数据',{icon: 7,time:2000});
return;
}
alarmPolicyId = ids.toString();
... ... @@ -257,20 +316,20 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'xmSelect
});
admin.req({
url: common.domainName + '/api-web/alarmPolicy/sync'
, data: {
ids: alarmPolicyId
url:common.domainName + '/api-web/alarmPolicy/sync'
, data:{
ids:alarmPolicyId
}
}).done(function (res) {
layer.close(syncload)
if (res.success) {
layer.msg(res.msg, {offset: '15px', icon: 1, time: 1000}, function () {
if(res.success){
layer.msg(res.msg, { offset: '15px' , icon: 1 , time: 1000 },function (){
reloadAlarmPolicyTable();
});
} else {
layer.msg(res.msg, {offset: '15px', icon: 7, time: 1000});
}else{
layer.msg(res.msg, { offset: '15px' , icon: 7 , time: 1000 });
}
}).error(function () {
}).error(function (){
layer.close(syncload)
});
}
... ... @@ -278,12 +337,12 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'xmSelect
//刷新表格
function reloadAlarmPolicyTable() {
alarmpolicyTable.reload({
where: {
access_token: accessToken,
alarmPolicyName: $("#alarmpolicykw").val(),
kpiIdent: $('#alarmpolicy_category').val(),
resType: $('#alarmpolicy_kpitype').val(),
policyType: $('#alarmpolicy_policyType').val(),
where:{
access_token:accessToken,
alarmPolicyName:$("#alarmpolicykw").val(),
kpiIdent:$('#alarmpolicy_category').val(),
resType:$('#alarmpolicy_kpitype').val(),
policyType:$('#alarmpolicy_policyType').val(),
resName: resName
}
});
... ... @@ -298,13 +357,13 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'xmSelect
if (typeof (id) != "string") {
var ids = [];
var data = table.checkStatus('alarmpolicyTable').data;
if (data && data.length > 0) {
$.each(data, function (i, obj) {
if(data && data.length > 0){
$.each(data,function (i,obj) {
ids.push(obj.alarmPolicyId);
});
}
if (ids.length == 0) {
layer.msg('请选择要删除的数据', {icon: 7, time: 2000});
layer.msg('请选择要删除的数据',{icon: 7,time:2000});
return;
}
id = ids.toString();
... ... @@ -315,16 +374,21 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'xmSelect
}, function () {
admin.req({
url: common.domainName + '/api-web/alarmPolicy/delete'
, type: "delete"
, data: {ids: id}
,type:"delete"
,data:{ids:id}
}).done(function (res) {
layer.msg('删除成功', {
offset: '15px'
, icon: 1
, time: 1000
}, function () {
reloadAlarmPolicyTable();
});
if(res.success){
layer.msg('删除成功', {
offset: '15px'
, icon: 1
, time: 1000
}, function () {
reloadAlarmPolicyTable();
});
}else {
layer.msg( res.msg,{offset: '15px', icon: 2, time: 2000});
}
}).error(function (error) {
console.log(error);
});
... ... @@ -374,7 +438,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'xmSelect
height: 'auto',
data: resTypeTree,
on: function (data) {
if (data.isAdd) {
if(data.isAdd){
if (data.arr.length != 0) {
resName = data.arr[0].name;
} else {
... ... @@ -388,13 +452,13 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'xmSelect
});
//新增、编辑策略表单
function openPolicyForm(id) {
var title = id ? "编辑策略" : "新增策略";
title = `<a class="layui-icon layui-icon-edit win_title_icon"></a>${title}`;
common.openWin('baseconfig/alarmpolicy/add', title, {id: id}, ['保存', '取消'], function () {
function openPolicyForm(id){
var title = id?"编辑策略":"新增策略";
title = `<a class="layui-icon layui-icon-edit win_title_icon"></a>${title}`;
common.openWin('baseconfig/alarmpolicy/add',title, {id:id},['保存','取消'],function () {
$("#alarmpolicy-form-save-id").trigger("click");
return true;
}, null, ['90%', '90%']);
},null,['90%','90%']);
}
//获取选中的数据
... ... @@ -402,6 +466,6 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'xmSelect
return table.checkStatus('alarmpolicyTable').data;
}
return {getData: getCheckAlarmPolicyData, reloadAlarmPolicy: reloadAlarmPolicyTable()};
return { getData: getCheckAlarmPolicyData,reloadAlarmPolicy:reloadAlarmPolicyTable()};
});
});
... ...
... ... @@ -26,41 +26,39 @@ layui.define(['form', 'table', 'admin', 'common', 'sessions'], function (exports
//保存
$("#alarmtemplate-form-save-id").on("click", function () {
form.on('submit(add-alarmtemplate-form)', function () {
var data = form.val("add-alarmtemplate-form");
var policyIds = [];
var policylist = $("#alarmtemplate-policy-table-body").find("tr");
if (policylist && policylist.length > 0) {
$.each(policylist, function (i, v) {
policyIds.push($(v).data("id"));
})
}
data.policyIds = policyIds.toString();
admin.req({
url: domainName + '/api-web/alarmtemplate/save?access_token=' + accessToken
, data: JSON.stringify(data)
, type: 'post'
, contentType: "application/json; charset=utf-8"
, done: function (res) {
if (res.success) {
layer.msg(res.msg, {offset: '15px', icon: 1, time: 1000}, function () {
layui.alarmtemplateIndex().reloadtemplate();
layer.closeAll();
});
} else {
layer.msg(res.msg, {offset: '15px', icon: 7, time: 1000});
}
var data = form.val("add-alarmtemplate-form");
var policyIds = [];
var policylist = $("#alarmtemplate-policy-table-body").find("tr");
if (policylist && policylist.length > 0) {
$.each(policylist, function (i, v) {
policyIds.push($(v).data("id"));
})
}
data.policyIds = policyIds.toString();
admin.req({
url: domainName + '/api-web/alarmtemplate/save?access_token=' + accessToken
, data: JSON.stringify(data)
, type: 'post'
, contentType: "application/json; charset=utf-8"
, done: function (res) {
if (res.success) {
layer.msg(res.msg, {offset: '15px', icon: 1, time: 1000}, function () {
layui.alarmtemplateIndex().reloadtemplate();
layer.closeAll();
});
} else {
layer.msg(res.msg, {offset: '15px', icon: 7, time: 1000});
}
});
}
});
return false;//必须要写,解决禁用submit提交,ajax方法才能正确执行,且表单不会自动刷新
})
return false;//必须要写,解决禁用submit提交,ajax方法才能正确执行,且表单不会自动刷新
});
//选择策略
$("#add_alarmtemplate_policy").on("click", function () {
$('[lay-id="/baseconfig/alarmpolicy/index"]').find('.layui-tab-close').trigger('click');
common.openWin("baseconfig/alarmpolicy/index", "选择策略", {}, ["选择", "取消"], function () {
common.openWin("baseconfig/alarmpolicy/index", "选择策略", {type: 'alarmTemplate'}, ["选择", "取消"], function () {
var data = layui.alarmpolicyIndex().getData();
createAlarmtemplatePolicyTable(data);
return true;
... ... @@ -73,10 +71,13 @@ layui.define(['form', 'table', 'admin', 'common', 'sessions'], function (exports
var alarm_policy_tbody = '';
$.each(data, function (i, d) {
var isDefault = '';
if (d.policyType == '1') { //默认
isDefault = '<button type="button" class="layui-btn layui-btn-warm layui-btn-radius layui-btn-xs p-0-15">默认</button>';
} else {
isDefault = '<button type="button" class="layui-btn layui-btn-primary layui-btn-radius layui-btn-xs p-0-15">非默认</button>';
switch (d.policyType) {
case "1":
isDefault = "全局默认策略";
case "2":
isDefault = "全局非默认策略";
case "3":
isDefault = "模板策略";
}
var kpiIdent = '';
if (d.kpiIdent == '0') {
... ...
... ... @@ -14,12 +14,14 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'reslist', 'sessions'
exports('alarmtemplateIndex', function (data) {
var policyId = (data && data.policyId) ? data.policyId : "";
var resIdList = (data && data.resIds) ? data.resIds : '';
var resType = (data && common.isNotEmpty(data.resType)) ? data.resType : '';
var sessions = layui.sessions;
var accessToken = sessions.getToken()['access_token'];
//获得权限列表
var checkList = common.checkPermission(accessToken);
var alarmTempId = '';
// 业务类型Id
var busId = '';
//回车搜索
$('#alarmtemplatekw').keydown(function (e) {
if (e.keyCode === 13) {
... ... @@ -58,83 +60,72 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'reslist', 'sessions'
return;
}
var tempData = table.checkStatus('alarmtemplateTable').data;
if (tempData && tempData.length > 0) {
$('[lay-id="/baseconfig/alarmpolicy/index"]').find('.layui-tab-close').trigger('click');
var url = 'baseconfig/alarmpolicy/index';
var params = {type: 'alarmTemplate'};
view('commonViewModel').render(url, params).then(function (res) {
layer.open({
title: ["配置策略", 'font-size:18px;'],
type: 1,
area: ['90%', '90%'],
resize: false,
content: laytpl(res.body).render(JSON.stringify(params)),
btn: ["选择", "取消"],
id: 'alarm_template_Table_tactics',//设定一个id,防止重复弹出
success: function (index, layero) {
var oldAlarmPolicyIdList = [];
if (tempData.length == 1) {
admin.req({
url: common.domainName + '/api-web/alarmPolicy/getbytempId/' + tempData[0].alarmTempId,
async: false,
error: function () {
layer.close(loading);
}
}).done(function (response) {
if (response) {
oldAlarmPolicyIdList = response.data.map(item => item.alarmPolicyId)
}
});
}else{
layer.msg("请至少选择一条数据!", {offset: '15px', icon: 7, time: 1000});
return false;
}
},
yes: function (index, layero) {
var policyData = layui.alarmpolicyIndex().getData();
if (policyData && policyData.length > 0) {
var tempIds = [], policyIds = [];
$.each(tempData, function (i, v) {
tempIds.push(v.alarmTempId);
})
$.each(policyData, function (i, v) {
policyIds.push(v.alarmPolicyId);
})
admin.req({
url: domainName + '/api-web/alarmtemplate/config/policy'
, type: 'post'
, data: {tempIds: tempIds.toString(), policyIds: policyIds.toString()}
, done: function (res) {
if (res.success) {
layer.msg(res.msg, {offset: '15px', icon: 1, time: 1000}, function () {
layer.closeAll();
reloadalarmtemplateTable();
});
} else {
layer.msg(res.msg, {offset: '15px', icon: 7, time: 1000});
}
}
if (tempData && tempData.length > 0) {
common.openWin("baseconfig/alarmpolicy/index", "选择策略", {oldData: oldAlarmPolicyIdList,type:'alarmTemplate'}, ["选择", "取消"], function () {
var policyData = layui.alarmpolicyIndex().getData();
var tempIds = [], policyIds = [];
$.each(tempData, function (i, v) {
tempIds.push(v.alarmTempId);
})
$.each(policyData, function (i, v) {
policyIds.push(v.alarmPolicyId);
})
admin.req({
url: domainName + '/api-web/alarmtemplate/config/policy'
, type: 'post'
, async: false
, data: {tempIds: tempIds.toString(), policyIds: policyIds.toString()}
, done: function (res) {
if (res.success) {
layer.msg(res.msg, {offset: '15px', icon: 1, time: 1000}, function () {
layer.closeAll();
});
} else {
layer.msg("请至少选择一条策略", {offset: '15px', icon: 7, time: 1000});
return false;
layer.msg(res.msg, {offset: '15px', icon: 7, time: 1000});
}
return true;
}
})
})
// common.openWin("baseconfig/alarmpolicy/index","配置策略",{type:'alarmTemplate'},["选择","取消"], function () {
//
// });
});
reloadalarmtemplateTable();
return true;
});
} else {
layer.msg("请至少选择一条数据!", {offset: '15px', icon: 7, time: 1000});
}
});
//配置资源
$("#alarmtemplate_configres").on("click", function () {
if ($.inArray('back:alarmtemp:resource', checkList) == -1) {
layer.msg('暂无权限!', {icon: 7, time: 3000});
return;
}
var tempIds = [];
var data = table.checkStatus('alarmtemplateTable').data;
if (data && data.length > 0) {
$.each(data, function (i, obj) {
tempIds.push(obj.alarmTempId);
});
}
if (tempIds.length != 1) {
layer.msg('请选择一条要配置的数据', {icon: 7, time: 2000});
return;
}
common.openWin("template/res/reslist", "配置资源", {}, ["选择", "取消"], function () {
function getOldResIdList(tempIds){
var oldResIdList = [];
admin.req({
url: common.domainName + '/api-web/alarmtemplate/getResIdByTempId',
async: false,
data: {
tempId: tempIds.toString(),
},
}).done(function (response) {
if (response) {
oldResIdList = response.data.map(item => item.resId)
}
});
var saveResConfig = function (flag) {
var resObj = layui.reslist().getData();
if (resObj && resObj.length > 0) {
var resIds = [];
... ... @@ -142,24 +133,64 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'reslist', 'sessions'
resIds.push(v.resId);
})
admin.req({
url: domainName + '/api-web/manage/resource/alarmTemplate?resIds=' + resIds.toString() + '&alarmTempId=' + tempIds.toString() + '&access_token=' + accessToken,
url: domainName + '/api-web/manage/resource/alarmTemplate?resIds=' + resIds.toString()+"&flag=" + flag + '&alarmTempId=' + tempIds.toString() + '&access_token=' + accessToken,
done: function (res) {
if (res.success) {
layer.msg("配置成功!", {offset: '15px', icon: 1, time: 1000}, function () {
layer.msg("配置成功!", {offset: '15px', icon: 1, time: 2000}, function () {
layer.closeAll();
reloadalarmtemplateTable();
});
} else {
layer.msg("配置失败,请重试或者与管理员联系!", {offset: '15px', icon: 7, time: 1000});
layer.msg("配置失败,请重试或者与管理员联系!", {offset: '15px', icon: 7, time: 2000});
}
}
});
} else {
layer.msg("请至少选择一条资源", {offset: '15px', icon: 7, time: 1000});
layer.msg("请至少选择一条资源", {offset: '15px', icon: 7, time: 2000});
return false;
}
return true;
}
//common.openWin("template/res/reslist", "配置资源", {oldData: oldResIdList}, ["新增","删除", "取消"], saveResConfig);
view('commonViewModel').render("template/res/reslist").then(function (res) {
layer.open({
type: 1,
id:'alarmtemplateRes',
area: ['80%', '81%'],
resize: false,
shadeClose: true,
content: laytpl(res.body).render(JSON.stringify({oldData: oldResIdList})),
btn: ["新增","删除", "取消"],
yes: function(index, layero){
saveResConfig('add');
},
btn2: function(index, layero){
saveResConfig('remove');
}
});
});
}
//配置资源
$("#alarmtemplate_configres").on("click", function () {
if ($.inArray('back:alarmtemp:resource', checkList) == -1) {
layer.msg('暂无权限!', {icon: 7, time: 3000});
return;
}
var tempIds = [];
var data = table.checkStatus('alarmtemplateTable').data;
if (data && data.length > 0) {
$.each(data, function (i, obj) {
tempIds.push(obj.alarmTempId);
});
}
if (tempIds.length != 1) {
layer.msg('请选择一条要配置的数据', {icon: 7, time: 2000});
return;
}
getOldResIdList(tempIds);
});
// 解除绑定
... ... @@ -218,7 +249,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'reslist', 'sessions'
, url: domainName + '/api-web/alarmtemplate/page'
, where: {
access_token: accessToken,
alarmTempName: $("#alarmtemplatekw").val(),
keyWord: $("#alarmtemplatekw").val(),
policyId: policyId,
resIdList: resIdList
}
... ... @@ -230,7 +261,6 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'reslist', 'sessions'
, end: function (e) {
form.render();
}
, limit: 20
, even: true
, cols: [[
{type: 'checkbox'}
... ... @@ -297,10 +327,16 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'reslist', 'sessions'
var trs = '';
$.each(res.data, function (i, d) {
var isDefault = '';
if (d.policyType == '1') { //默认
isDefault = '<button type="button" class="layui-btn layui-btn-warm layui-btn-radius layui-btn-xs p-0-15">默认</button>';
} else {
isDefault = '<button type="button" class="layui-btn layui-btn-primary layui-btn-radius layui-btn-xs p-0-15">非默认</button>';
switch (d.policyType){
case "1":
isDefault = "全局默认策略";
break;
case "2":
isDefault = "全局非默认策略";
break;
case "3":
isDefault = "模板策略";
break;
}
var kpiIdent = '';
if (d.kpiIdent == '0') {
... ... @@ -346,10 +382,87 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'reslist', 'sessions'
//查看告警模板的资源数量
$(".view-alarmtemplate-res-total").on("click", function () {
var alarmTempId = $(this).data("id");
common.openWin("template/res/reslist", "资源列表", {alarmTempId: alarmTempId}, ["关闭"], function () {
return true;
}, null, ['90%', '80%'])
alarmTempId = $(this).data("id");
layer.open({
title: ['绑定资源', 'font-size:18px;'],
type: 1,
area: ['90%','80%'],
resize:false,
btn: ['确定','取消'],
content: laytpl($('#tempResource').html()).render(JSON.stringify({})),
success: function (index, layero) {
renderResByTemp(resType)
//新增资源权限
$('#addAuthResBtn').on('click', function () {
openResByTemp(alarmTempId,index)
})
// 查询条件框回车查询事件
$('#res-keyword').keydown(function (e) {
if (e.keyCode === 13) {
renderResByTemp(resType);
}
});
//查询按钮事件
$('#tempResBut').unbind().on('click',function () {
renderResByTemp(resType);
});
// 如果参数有busId
if(data && common.isNotEmpty(data.busId)){
busId = data.busId;
$("#templist_resListBizTypes").attr("disabled",true);
form.render()
}
//绑定业务下拉选择数据
common.bizTypeSelect("templist_resListBizTypes",function () {
$("#templist_resListBizTypes").val(busId);
form.render("select");
});
//绑定资源类型下拉选择
common.resTypeXmSelect({
el: '#templist_restype',
initValue: resType.split(','),
on(data) {
resType = data.arr.map(item => item.resTypeCode).join(',');
resType || (resType = 'all')
renderResByTemp(resType);
}
});
//绑定厂商下拉选择
common.providerSelect("templist_provider",function () {
form.render("select");
});
form.render();
bindSelectEvent();
//绑定下拉搜索事件
function bindSelectEvent() {
//选择业务搜索
form.on('select(templist_resListBizTypes)', function(data){
busId = data.value;
renderResByTemp(resType);
});
// 资源状态
form.on('select(templist_resStatus)', function(data){
renderResByTemp(resType);
});
// 厂商
form.on('select(templist_provider)', function(data){
renderResByTemp(resType);
});
}
//删除资源权限
$('#delAuthResBtn').on('click', function () {
deleteResTemp(alarmTempId)
})
},
yes: function(index, layero){
layer.close(index); //如果设定了yes回调,需进行手工关闭
}
});
});
//设置同步
... ... @@ -366,6 +479,119 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'reslist', 'sessions'
}
});
//渲染用户所有资源权限列表表格
function renderResByTemp(resType) {
temResTable = table.render({
elem: '#res_temp_table',
url: common.domainName + '/api-web/home/res-list/' + (resType ? resType : 'all'),
where: {
access_token: accessToken,
resName: $('#res-keyword').val(),
busId: $("#templist_resListBizTypes").val(),
resHealth: $("#templist_resStatus").val(),
provider:$("#templist_provider").val(),
collectorId: '',
trapCollectorId: '',
alarmTempId: alarmTempId,
cutoverId: '',
targetType: '',
protocolFlag:'',
protocol:'',
editMode: 'true',
resCategory: 'resources'
},
height: 615,
cellMinWidth: 80,
page: {
layout: ['count', 'prev', 'page', 'next', 'limit', 'skip']
, theme: '#1E9FFF'
},
even: true,
cols: [[
{type:'checkbox'}
,{type: 'numbers', title: '序号', align: 'center'}
, {
field: 'resName', title: '资源名称', align: 'center',sort:true,
templet: '<div><span resmanage-data-edit="{{d.resId}}" data-zymc="{{ d.resId }}" data-ip="{{ d.ip }}" data-resTypeName="{{ d.resTypeName }}" data-admin="{{ d.admin }}" data-restype="{{d.resType}}" data-name="{{d.resName}}" data-pingenable="{{d.pingEnable}}">{{ d.resName }}</span></div>'
}
, {field: 'ip', title: 'IP地址', align: 'center',sort:true,width:200}
, {field: 'port', title: '端口号', align: 'center',sort:true,width:200}
, {field: 'adminName', title: '负责人', align: 'center',sort:true,width:180}
, {field: 'resTypeName', title: '资源类型', align: 'center',sort:true,width:230}
, {field: 'state', title: '资源状态', align: 'center',sort:true,width:180, templet: function (d) {
switch (d.state) {
case "new" :
return '<button type="button" class="layui-btn layui-btn-warm layui-bg-gray layui-btn-radius layui-btn-xs p-0-15">未监控</button>'
case "monitor" :
return '<button type="button" class="layui-btn layui-btn-radius layui-bg-green layui-btn-xs p-0-15" style="background-color: #0BAC33 !important;">监控中</button>'
case "stop" :
return '<button type="button" class="layui-btn layui-btn-warm layui-bg-red layui-btn-radius layui-btn-xs p-0-15">暂停</button>'
default :
return '<button type="button" class="layui-btn layui-btn-warm layui-bg-gray layui-btn-radius layui-btn-xs p-0-15">未监控</button>'
}
}}
, {
title: '操作', fixed: 'right', align: 'center', fixed: 'right',width:100,
templet: '<div><span data-id="{{d.resId}}" class="layui-table-link tem_res_delete_btn">删除</span></div>'
}
]],
done: function (res, curr, count) {
//删除
$('.tem_res_delete_btn').on('click', function () {
var id = $(this).data('id')
deleteResTemp(alarmTempId,id)
})
},
})
}
//为用户添加资源权限
function openResByTemp(alarmTempId,index) {
getOldResIdList(alarmTempId);
}
//删除对应的资源权限
function deleteResTemp(alarmTempId,id) {
if (typeof (id) != "string") {
var ids = [];
var data = table.checkStatus('res_temp_table').data;
if (data && data.length > 0) {
$.each(data, function (i, obj) {
ids.push(obj.resId);
});
}
if (ids.length == 0) {
layer.msg('请选择要删除的数据', {icon: 7, time: 2000});
return;
}
id = ids.toString();
}
//确认提示框
layer.confirm('您确定要删除绑定的该资源吗?', {
btn: ['确定', '取消'] //按钮
}, function () {
$.ajax({
url: common.domainName + '/api-web/alarmtemplate/deleteByResIdsAndTempIds?access_token=' + accessToken
, data: {
resIds: id,
tempIds: alarmTempId.toString()
}
}).done(function (res) {
layer.msg('删除成功', {
offset: '15px'
, icon: 1
, time: 2000
}, function () {
layer.closeAll();
reloadalarmtemplateTable()
});
}).error(function (error) {
console.log(error);
});
});
}
//刷新表格
function reloadalarmtemplateTable() {
alarmtemplateTable.reload({
... ... @@ -373,7 +599,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'reslist', 'sessions'
access_token: accessToken,
policyId: policyId,
resIdList: resIdList,
alarmTempName: $("#alarmtemplatekw").val()
keyWord: $("#alarmtemplatekw").val()
}
});
}
... ...
<form class="layui-form layui-form-pane layui-form-flex" id="add-alarmpolicy-form" lay-filter="add-alarmpolicy-form"
name="add-alarmpolicy-form">
<input id="alarmPolicyId" name="alarmPolicyId" type="hidden">
<input name="syncFlag" type="hidden" value="0">
<form class="layui-form layui-form-pane layui-form-flex" lay-filter="add-alarmpolicy-form" name="add-alarmpolicy-form" id="add-alarmpolicy-form">
<input type="hidden" name="alarmPolicyId" id="alarmPolicyId">
<input type="hidden" name="syncFlag" value="0">
<fieldset class="layui-elem-field layui-field-title">
<legend>基本信息</legend>
</fieldset>
... ... @@ -9,25 +8,19 @@
<div class="layui-inline">
<label class="layui-form-label">指标</label>
<div class="layui-input-inline" style="flex: 4.5">
<input class="layui-input" id="alarm-policy-kpiId" name="kpiId" type="hidden">
<input class="layui-input" id="alarm-policy-kpiName" lay-reqtext="请选择指标" lay-verify="required"
readonly type="text">
</div>
<div class="layui-form-mid layui-word-aux" style="flex: 0.5"><i class="layui-icon form-btn-icon"
id="alarmpolicy-form-select-kpi"
style="margin-left: 20px">&#xe615;</i>
<input type="hidden" id="alarm-policy-kpiId" name="kpiId" class="layui-input">
<input type="text" id="alarm-policy-kpiName" lay-verify="required" lay-reqtext="请选择指标" class="layui-input" readonly>
</div>
<div class="layui-form-mid layui-word-aux" style="flex: 0.5"><i class="layui-icon form-btn-icon" style="margin-left: 20px" id="alarmpolicy-form-select-kpi">&#xe615;</i></div>
</div>
<div class="layui-inline">
<label class="layui-form-label">策略名称</label>
<div class="layui-input-inline">
<input class="layui-input" id="alarmPolicyName" lay-reqtext="请输入策略名称" lay-verify="required"
name="alarmPolicyName" type="text">
<input type="text" class="layui-input" lay-verify="required" lay-reqtext="请输入策略名称" name="alarmPolicyName" id="alarmPolicyName">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">是否默认</label>
<!-- lsq master迁移 2000-08-23 -->
<div class="layui-input-inline">
<select lay-filter="alarmpolicy_policyType_add" id="alarmpolicy_policyType_add">
</select>
... ... @@ -52,15 +45,13 @@
<div class="layui-inline">
<label class="layui-form-label">告警消除时间</label>
<div class="layui-input-inline">
<input autocomplete="false" class="layui-input" lay-tips="单位: 分钟" lay-verify="required|number"
name="autoClearTimes" type="number" value="0">
<input type="number" class="layui-input" lay-verify="required|number" lay-tips="单位: 分钟" name="autoClearTimes" value="0" autocomplete="false">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">告警升级时间</label>
<div class="layui-input-inline">
<input autocomplete="false" class="layui-input" lay-tips="单位: 分钟" lay-verify="required|number" name="times"
type="number" value="0">
<input type="number" class="layui-input" lay-verify="required|number" lay-tips="单位: 分钟" name="times" value="0" autocomplete="false">
</div>
</div>
</div>
... ... @@ -80,8 +71,7 @@
</div>
<fieldset class="layui-elem-field layui-field-title">
<legend>告警策略
<button class="layui-btn layui-btn-xs layui-btn-normal fieldset-btn" id="btn-alarmpolicy-expr-add"
lay-tips="新增通知内容描述表达式"><i class="layui-icon">&#xe624;</i></button>
<button class="layui-btn layui-btn-xs layui-btn-normal fieldset-btn" id="btn-alarmpolicy-expr-add" lay-tips="新增通知内容描述表达式"><i class="layui-icon">&#xe624;</i></button>
</legend>
</fieldset>
<div class="layui-tab layui-tab-card">
... ... @@ -102,8 +92,7 @@
<div class="box-group-right">
<div class="layui-form-item">
<div class="layui-input-block">
<textarea class="layui-textarea noticeExpr" id="alarmContentExpr" name="alarmContentExpr"
placeholder="请输入内容" readonly></textarea>
<textarea placeholder="请输入内容" class="layui-textarea noticeExpr" readonly id="alarmContentExpr" name="alarmContentExpr"></textarea>
</div>
</div>
</div>
... ... @@ -116,12 +105,9 @@
<div class="box-group-right">
<div class="layui-form-item hide">
<div class="layui-input-block">
<input checked data-flag="serious" lay-filter="alarm-policy-rule-type" name="serious-policy-type" title="基础"
type="radio" value="1">
<input data-flag="serious" lay-filter="alarm-policy-rule-type" name="serious-policy-type" title="正则" type="radio"
value="2">
<input data-flag="serious" lay-filter="alarm-policy-rule-type" name="serious-policy-type" title="自定义" type="radio"
value="3">
<input type="radio" name="serious-policy-type" data-flag="serious" value="1" title="基础" checked lay-filter="alarm-policy-rule-type">
<input type="radio" name="serious-policy-type" data-flag="serious" value="2" title="正则" lay-filter="alarm-policy-rule-type">
<input type="radio" name="serious-policy-type" data-flag="serious" value="3" title="自定义"lay-filter="alarm-policy-rule-type">
</div>
</div>
<div class="layui-form-item cont-base" id="serious-policy-box">
... ... @@ -139,14 +125,10 @@
</select>
</div>
<div class="layui-input-inline smallwith">
<input autocomplete="off" class="layui-input" flag="serious_value" type="tel">
</div>
<div class="layui-form-mid layui-word-aux"><i class="layui-icon oper-icon policy-input-add"
data-id="serious-policy-box">&#xe624;</i>
</div>
<div class="layui-form-mid layui-word-aux"><i class="layui-icon oper-icon policy-input-del hide"
data-id="serious-policy-box">&#xe67e;</i>
<input type="tel" autocomplete="off" class="layui-input" flag="serious_value">
</div>
<div class="layui-form-mid layui-word-aux"><i data-id="serious-policy-box" class="layui-icon oper-icon policy-input-add">&#xe624;</i></div>
<div class="layui-form-mid layui-word-aux"><i data-id="serious-policy-box" class="layui-icon oper-icon policy-input-del hide">&#xe67e;</i></div>
</div>
<div class="layui-form-item cont-base">
<div class="layui-input-block">
... ... @@ -155,8 +137,7 @@
</div>
<div class="layui-form-item cont-other">
<div class="layui-input-block">
<textarea class="layui-textarea" id="seriousPolicy" name="seriousPolicy"
placeholder="请输入内容"></textarea>
<textarea placeholder="请输入内容" class="layui-textarea" id="seriousPolicy" name="seriousPolicy"></textarea>
</div>
</div>
</div>
... ... @@ -167,27 +148,11 @@
<div class="box-group-right">
<div class="layui-form-item">
<div class="layui-input-block">
<textarea class="layui-textarea noticeExpr" id="seriousExpr" name="seriousExpr"
placeholder="请输入内容" readonly></textarea>
<textarea placeholder="请输入内容" class="layui-textarea noticeExpr" readonly id="seriousExpr" name="seriousExpr"></textarea>
</div>
</div>
</div>
</div>
<!-- <hr>-->
<!-- <div class="content-box-group">-->
<!-- <div class="box-group-left">告警时段</div>-->
<!-- <div class="box-group-right">-->
<!-- <div class="layui-form-item">-->
<!-- <div class="layui-input-inline">-->
<!-- <input class="layui-input" id="seriousTimes" placeholder=" 选择告警时间段 " type="text">-->
<!-- </div>-->
<!-- <div class="layui-form-mid layui-word-aux allday" data-flag="seriousTimes" lay-tips="全天"-->
<!-- style="margin-right: 30px;"><i class="layui-icon form-btn-icon">&#xe637;</i></div>-->
<!-- <div class="layui-form-mid layui-word-aux worktime" data-flag="seriousTimes" lay-tips="工作时间"-->
<!-- style="margin-right: 30px;"><i class="layui-icon form-btn-icon">&#xe665;</i></div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
</div>
<div class="layui-tab-item important-tab-item">
<!-- 重要告警 -->
... ... @@ -196,12 +161,9 @@
<div class="box-group-right">
<div class="layui-form-item hide">
<div class="layui-input-block">
<input checked data-flag="important" lay-filter="alarm-policy-rule-type" name="important-policy-type"
title="基础" type="radio" value="1">
<input data-flag="important" lay-filter="alarm-policy-rule-type" name="important-policy-type" title="正则"
type="radio" value="2">
<input data-flag="important" lay-filter="alarm-policy-rule-type" name="important-policy-type" title="自定义"
type="radio" value="3">
<input type="radio" name="important-policy-type" data-flag="important" value="1" title="基础" checked lay-filter="alarm-policy-rule-type">
<input type="radio" name="important-policy-type" data-flag="important" value="2" title="正则" lay-filter="alarm-policy-rule-type">
<input type="radio" name="important-policy-type" data-flag="important" value="3" title="自定义"lay-filter="alarm-policy-rule-type">
</div>
</div>
<div class="layui-form-item cont-base" id="important-policy-box">
... ... @@ -219,25 +181,19 @@
</select>
</div>
<div class="layui-input-inline smallwith">
<input autocomplete="off" class="layui-input" flag="important_value" type="tel">
</div>
<div class="layui-form-mid layui-word-aux"><i class="layui-icon oper-icon policy-input-add"
data-id="important-policy-box">&#xe624;</i>
</div>
<div class="layui-form-mid layui-word-aux"><i class="layui-icon oper-icon policy-input-del hide"
data-id="important-policy-box">&#xe67e;</i>
<input type="tel" autocomplete="off" class="layui-input" flag="important_value">
</div>
<div class="layui-form-mid layui-word-aux"><i data-id="important-policy-box" class="layui-icon oper-icon policy-input-add">&#xe624;</i></div>
<div class="layui-form-mid layui-word-aux"><i data-id="important-policy-box" class="layui-icon oper-icon policy-input-del hide">&#xe67e;</i></div>
</div>
<div class="layui-form-item cont-base">
<div class="layui-input-block">
<a class="layui-btn layui-btn-sm layui-btn-normal createpolicybtn"
data-flag="important">生成策略</a>
<a class="layui-btn layui-btn-sm layui-btn-normal createpolicybtn" data-flag="important">生成策略</a>
</div>
</div>
<div class="layui-form-item cont-other">
<div class="layui-input-block">
<textarea class="layui-textarea" id="importantPolicy" name="importantPolicy"
placeholder="请输入内容"></textarea>
<textarea placeholder="请输入内容" class="layui-textarea" id="importantPolicy" name="importantPolicy"></textarea>
</div>
</div>
</div>
... ... @@ -248,28 +204,11 @@
<div class="box-group-right">
<div class="layui-form-item">
<div class="layui-input-block">
<textarea class="layui-textarea noticeExpr" id="importantExpr" name="importantExpr"
placeholder="请输入内容" readonly></textarea>
<textarea placeholder="请输入内容" class="layui-textarea noticeExpr" readonly id="importantExpr" name="importantExpr"></textarea>
</div>
</div>
</div>
</div>
<!-- <hr>-->
<!-- <div class="content-box-group">-->
<!-- <div class="box-group-left">告警时段</div>-->
<!-- <div class="box-group-right">-->
<!-- <div class="layui-form-item">-->
<!-- <div class="layui-input-inline">-->
<!-- <input class="layui-input" id="importantTimes" placeholder=" 选择告警时间段 " type="text">-->
<!-- </div>-->
<!-- <div class="layui-form-mid layui-word-aux allday" data-flag="importantTimes" lay-tips="全天"-->
<!-- style="margin-right: 30px;"><i class="layui-icon form-btn-icon">&#xe637;</i></div>-->
<!-- <div class="layui-form-mid layui-word-aux worktime" data-flag="importantTimes"-->
<!-- lay-tips="工作时间" style="margin-right: 30px;"><i class="layui-icon form-btn-icon">&#xe665;</i>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
</div>
<div class="layui-tab-item commonly-tab-item">
<!-- 一般告警 -->
... ... @@ -278,12 +217,9 @@
<div class="box-group-right">
<div class="layui-form-item hide">
<div class="layui-input-block">
<input checked data-flag="commonly" lay-filter="alarm-policy-rule-type" name="commonly-policy-type"
title="基础" type="radio" value="1">
<input data-flag="commonly" lay-filter="alarm-policy-rule-type" name="commonly-policy-type" title="正则"
type="radio" value="2">
<input data-flag="commonly" lay-filter="alarm-policy-rule-type" name="commonly-policy-type" title="自定义"
type="radio" value="3">
<input type="radio" name="commonly-policy-type" data-flag="commonly" value="1" title="基础" checked lay-filter="alarm-policy-rule-type">
<input type="radio" name="commonly-policy-type" data-flag="commonly" value="2" title="正则" lay-filter="alarm-policy-rule-type">
<input type="radio" name="commonly-policy-type" data-flag="commonly" value="3" title="自定义"lay-filter="alarm-policy-rule-type">
</div>
</div>
<div class="layui-form-item cont-base" id="commonly-policy-box">
... ... @@ -301,14 +237,10 @@
</select>
</div>
<div class="layui-input-inline smallwith">
<input autocomplete="off" class="layui-input" flag="commonly_value" type="tel">
</div>
<div class="layui-form-mid layui-word-aux"><i class="layui-icon oper-icon policy-input-add"
data-id="commonly-policy-box">&#xe624;</i>
</div>
<div class="layui-form-mid layui-word-aux"><i class="layui-icon oper-icon policy-input-del hide"
data-id="commonly-policy-box">&#xe67e;</i>
<input type="tel" autocomplete="off" class="layui-input" flag="commonly_value">
</div>
<div class="layui-form-mid layui-word-aux"><i data-id="commonly-policy-box" class="layui-icon oper-icon policy-input-add">&#xe624;</i></div>
<div class="layui-form-mid layui-word-aux"><i data-id="commonly-policy-box" class="layui-icon oper-icon policy-input-del hide">&#xe67e;</i></div>
</div>
<div class="layui-form-item cont-base">
<div class="layui-input-block">
... ... @@ -317,8 +249,7 @@
</div>
<div class="layui-form-item cont-other">
<div class="layui-input-block">
<textarea class="layui-textarea" id="commonlyPolicy" name="commonlyPolicy"
placeholder="请输入内容"></textarea>
<textarea placeholder="请输入内容" class="layui-textarea" id="commonlyPolicy" name="commonlyPolicy"></textarea>
</div>
</div>
</div>
... ... @@ -329,28 +260,11 @@
<div class="box-group-right">
<div class="layui-form-item">
<div class="layui-input-block">
<textarea class="layui-textarea noticeExpr" id="commonlyExpr" name="commonlyExpr"
placeholder="请输入内容" readonly></textarea>
<textarea placeholder="请输入内容" class="layui-textarea noticeExpr" readonly id="commonlyExpr" name="commonlyExpr"></textarea>
</div>
</div>
</div>
</div>
<!-- <hr>-->
<!-- <div class="content-box-group">-->
<!-- <div class="box-group-left">告警时段</div>-->
<!-- <div class="box-group-right">-->
<!-- <div class="layui-form-item">-->
<!-- <div class="layui-input-inline">-->
<!-- <input class="layui-input" id="commonlyTimes" placeholder=" 选择告警时间段 " type="text">-->
<!-- </div>-->
<!-- <div class="layui-form-mid layui-word-aux allday" data-flag="commonlyTimes" lay-tips="全天"-->
<!-- style="margin-right: 30px;"><i class="layui-icon form-btn-icon">&#xe637;</i></div>-->
<!-- <div class="layui-form-mid layui-word-aux worktime" data-flag="commonlyTimes"-->
<!-- lay-tips="工作时间" style="margin-right: 30px;"><i class="layui-icon form-btn-icon">&#xe665;</i>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
</div>
<div class="layui-tab-item filter-tab-item">
<!-- 过滤表达式 -->
... ... @@ -359,12 +273,9 @@
<div class="box-group-right">
<div class="layui-form-item hide">
<div class="layui-input-block">
<input checked data-flag="filter" lay-filter="alarm-policy-rule-type" name="filter-policy-type" title="基础"
type="radio" value="1">
<input data-flag="filter" lay-filter="alarm-policy-rule-type" name="filter-policy-type" title="正则" type="radio"
value="2">
<input data-flag="filter" lay-filter="alarm-policy-rule-type" name="filter-policy-type" title="自定义" type="radio"
value="3">
<input type="radio" name="filter-policy-type" data-flag="filter" value="1" title="基础" checked lay-filter="alarm-policy-rule-type">
<input type="radio" name="filter-policy-type" data-flag="filter" value="2" title="正则" lay-filter="alarm-policy-rule-type">
<input type="radio" name="filter-policy-type" data-flag="filter" value="3" title="自定义"lay-filter="alarm-policy-rule-type">
</div>
</div>
<div class="layui-form-item cont-base" id="filter-policy-box">
... ... @@ -382,14 +293,10 @@
</select>
</div>
<div class="layui-input-inline smallwith">
<input autocomplete="off" class="layui-input" flag="filter_value" type="tel">
</div>
<div class="layui-form-mid layui-word-aux"><i class="layui-icon oper-icon policy-input-add"
data-id="filter-policy-box">&#xe624;</i>
</div>
<div class="layui-form-mid layui-word-aux"><i class="layui-icon oper-icon policy-input-del hide"
data-id="filter-policy-box">&#xe67e;</i>
<input type="tel" autocomplete="off" class="layui-input" flag="filter_value">
</div>
<div class="layui-form-mid layui-word-aux"><i data-id="filter-policy-box" class="layui-icon oper-icon policy-input-add">&#xe624;</i></div>
<div class="layui-form-mid layui-word-aux"><i data-id="filter-policy-box" class="layui-icon oper-icon policy-input-del hide">&#xe67e;</i></div>
</div>
<div class="layui-form-item cont-base">
<div class="layui-input-block">
... ... @@ -398,8 +305,7 @@
</div>
<div class="layui-form-item cont-other">
<div class="layui-input-block">
<textarea class="layui-textarea" id="filterPolicy" name="filterPolicy"
placeholder="请输入内容"></textarea>
<textarea placeholder="请输入内容" class="layui-textarea" id="filterPolicy" name="filterPolicy"></textarea>
</div>
</div>
</div>
... ... @@ -412,14 +318,13 @@
<div class="box-group-right">
<div class="layui-form-item">
<div class="layui-input-block">
<input checked name="clearWay" title="自动" type="radio" value="1">
<input name="clearWay" title="手动" type="radio" value="0">
<input type="radio" name="clearWay" value="1" title="自动" checked>
<input type="radio" name="clearWay" value="0" title="手动">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<textarea class="layui-textarea noticeExpr" id="cleanPolicy" name="cleanPolicy"
placeholder="请输入内容" readonly></textarea>
<textarea placeholder="请输入内容" class="layui-textarea noticeExpr" readonly id="cleanPolicy" name="cleanPolicy"></textarea>
</div>
</div>
</div>
... ... @@ -432,8 +337,7 @@
<div class="box-group-right">
<div class="layui-form-item">
<div class="layui-input-block">
<textarea class="layui-textarea" id="noticeMergeFlagExpr" name="noticeMergeFlagExpr"
placeholder="请输入内容"></textarea>
<textarea placeholder="请输入内容" class="layui-textarea" id="noticeMergeFlagExpr" name="noticeMergeFlagExpr"></textarea>
</div>
</div>
</div>
... ... @@ -442,12 +346,10 @@
</div>
</div>
<!-- <button class="layui-btn hide" id="alarmpolicy-form-save-id" lay-submit type="submit">保存</button>-->
<button type="submit" lay-submit class="layui-btn hide" id="alarmpolicy-form-save-id">保存</button>
</form>
<script>
layui.use('alarmpolicyAdd', function (fn) {
fn({{ d }});
fn({{d}});
});
</script>
... ...
<title>告警策略</title>
<article class="page-container">
<div class="page-panel">
<div class="main commonDiv">
<div class="main">
<div class="layui-card">
<div class="layui-card-header">
<div class="layui-status search_panel">
<form class="layui-form layui-card-header layuiadmin-card-header-auto"
lay-filter="alarmpolicy-form">
<form class="layui-form layui-card-header layuiadmin-card-header-auto" lay-filter="alarmpolicy-form">
<div class="layui-form-item">
<div class="layui-inline">
<div class="layui-input-inline layui-input-inline--long">
<input autocomplete="off" class="layui-input" id="alarmpolicykw"
lay-tips="关键字检索包含 </br>策略名称" name="alarmpolicykw" placeholder="输入关键字,回车搜索"
type="text">
<input type="text" id="alarmpolicykw" name="alarmpolicykw" lay-tips="关键字检索包含 </br>策略名称" placeholder="输入关键字,回车搜索" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline layui-input-inline--long">
<select id="alarmpolicy_category" lay-filter="alarmpolicy_category">
<select lay-filter="alarmpolicy_category" id="alarmpolicy_category">
<option value="">=指标分类=</option>
<option value="0">基本指标</option>
<option value="1">性能指标</option>
... ... @@ -28,7 +25,7 @@
</div>
<div class="layui-inline hide">
<div class="layui-input-inline layui-input-inline--long">
<select id="alarmpolicy_kpitype" lay-filter="alarmpolicy_kpitype">
<select lay-filter="alarmpolicy_kpitype" id="alarmpolicy_kpitype">
<option value="">=指标类型=</option>
<option value="1">X86服务器</option>
<option value="2">小型机</option>
... ... @@ -42,30 +39,29 @@
</div>
<div class="layui-inline">
<div class="layui-input-inline layui-input-inline--long">
<select id="alarmpolicy_policyType" lay-filter="alarmpolicy_policyType">
<option value="">=策略类型=</option>
<option value="1">默认</option>
<option value="0">非默认</option>
<select lay-filter="alarmpolicy_policyType" id="alarmpolicy_policyType">
<!-- <option value="">=策略类型=</option>-->
<!-- <option value="1">默认</option>-->
<!-- <option value="0">非默认</option>-->
</select>
</div>
</div>
<button class="layui-btn layui-btn-normal" id="alarmpolicyQueryBtn" type="button">
<!--lsq 查询按钮取消掉图标 2022-06-29-->
查询
</button>
<div class="layui-inline">
<button id="alarmpolicyQueryBtn" type="button" class="layui-btn layui-btn-normal" ><i
class="layui-icon layui-icon-search"></i>查询
</button>
</div>
</div>
<div class="layui-form-item">
<div class="layui-inline">
<div class="layui-input-inline layui-input-inline--long">
<input class="layui-input" id="alarmpolicy_startdate" placeholder="开始时间"
type="text">
<input type="text" class="layui-input" id="alarmpolicy_startdate" placeholder="开始时间">
</div>
</div>
<div class="layui-inline layui-inline--sm">-</div>
<div class="layui-inline">
<div class="layui-input-inline layui-input-inline--long">
<input class="layui-input" id="alarmpolicy_enddate" placeholder="结束时间"
type="text">
<input type="text" class="layui-input" id="alarmpolicy_enddate" placeholder="结束时间">
</div>
</div>
</div>
... ... @@ -76,14 +72,11 @@
<div class="layui-card-body">
<div class="layui-btn-container">
<button class="layui-btn layui-btn-sm layui-btn-normal" id="alarmpolicy_create">
<i class="layui-icon">&#xe654;</i>新建
</button>
<i class="layui-icon">&#xe654;</i>新建</button>
<button class="layui-btn layui-btn-sm layui-btn-normal" id="alarmpolicy_delete">
<i class="layui-icon">&#xe640;</i>删除
</button>
<i class="layui-icon">&#xe640;</i>删除</button>
<button class="layui-btn layui-btn-sm layui-btn-normal" id="alarmpolicy_sync">
<i class="layui-icon">&#xe669;</i>同步
</button>
<i class="layui-icon">&#xe669;</i>同步</button>
</div>
<table id="alarmpolicyTable"></table>
</div>
... ... @@ -91,13 +84,16 @@
</div>
</div>
</article>
<script lay-done="layui.data.sendParams(d.params)" template>
</script>
<textarea id="alarm_policyIndex_id" style="display: none;">{{d}}</textarea>
<script>
layui.data.sendParams = function (params) {
layui.use('alarmpolicyIndex', function (fn) {
fn(params);
});
};
layui.use('alarmpolicyIndex', function (fn) {
var $ = layui.$;
var param = $("#alarm_policyIndex_id").val();
if(param.indexOf('{{d') != -1){
fn();
}else{
fn(JSON.parse(param));
}
});
</script>
... ...
<!--告警模板-->
<style>
.layui-table-box {
.layui-table-box{
float: left;
}
</style>
<form class="layui-form layui-form-pane" lay-filter="add-alarmtemplate-form" name="add-alarmtemplate-form">
<input name="alarmTempId" type="hidden">
<input name="syncFlag" type="hidden" value="0">
<input type="hidden" name="alarmTempId">
<input type="hidden" name="syncFlag" value="0">
<fieldset class="layui-elem-field layui-field-title">
<legend>基本信息</legend>
</fieldset>
<div class="layui-form-item">
<label class="layui-form-label">模板名称<span style="color: red">*</span></label>
<div class="layui-input-block">
<input class="layui-input" id="alarmTemplateName" lay-reqtext="请输入模板名称" lay-verify="required" name="alarmTempName"
type="text">
<input type="text" id="alarmTemplateName" name="alarmTempName" lay-verify="required" lay-reqtext="请输入模板名称" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">模板描述</label>
<div class="layui-input-block">
<input class="layui-input" id="alarmTemplateDesc" lay-reqtext="请输模板描述" name="alarmTempDesc" type="text">
<input type="text" id="alarmTemplateDesc" name="alarmTempDesc" lay-reqtext="请输模板描述" class="layui-input">
</div>
</div>
<button class="layui-btn hide" id="alarmtemplate-form-save-id" lay-submit type="submit">保存</button>
<button type="submit" lay-submit class="layui-btn hide" id="alarmtemplate-form-save-id">保存</button>
</form>
<div class="layui-form layui-form-pane">
... ... @@ -35,13 +34,7 @@
</fieldset>
<table class="layui-table">
<thead>
<tr>
<th>策略名称</th>
<th>策略类型</th>
<th>指标信息</th>
<th>指标类型</th>
<th>操作</th>
</tr>
<tr><th>策略名称</th><th>策略类型</th><th>指标信息</th><th>指标类型</th><th>操作</th></tr>
</thead>
<tbody id="alarmtemplate-policy-table-body"></tbody>
</table>
... ... @@ -49,6 +42,6 @@
<script>
layui.use('alarmtemplateAdd', function (fn) {
fn({{ d }});
fn({{d}});
});
</script>
... ...
... ... @@ -67,6 +67,79 @@
</div>
<textarea class="hide" id="alarmtemplate-params">{{d}}</textarea>
</article>
<script id="tempResource" type="text/html">
<article class="page-container">
<div class="page-panel">
<div class="main">
<div class="layui-card">
<div class="layui-card-header">
<div class="layui-status">
<form class="layui-form layui-card-header layuiadmin-card-header-auto">
<div class="layui-form-item">
<div class="layui-inline">
<div class="layui-input-inline layui-input-inline--long">
<input type="text" id="res-keyword" placeholder="输入名称,回车搜索" autocomplete="off"
lay-tips="关键字检索包含: </br>资源名称</br>ip地址"
class="layui-input">
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline layui-input-inline--long">
<div id="templist_restype"></div>
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<select name="reslist_resStatus" id="templist_resStatus" lay-filter="templist_resStatus" lay-verify="required">
<option value="">=资源状态=</option>
<option value="1"></option>
<option value="2"></option>
<option value="3"></option>
</select>
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<select name="label" id="templist_resListBizTypes" lay-filter="templist_resListBizTypes" lay-search>
<option value="">=选择业务=</option>
</select>
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<select name="provider" id="templist_provider" lay-filter="templist_provider" lay-search>
<option value="">=选择厂商=</option>
</select>
</div>
</div>
<div class="layui-inline">
<button id="tempResBut" type="button" class="layui-btn layui-btn-normal" ><i
class="layui-icon layui-icon-search"></i>查
</button>
</div>
</div>
</form>
</div>
</div>
<div class="layui-card-body">
<div class="warn-btns">
<button id="addAuthResBtn" type="button" class="layui-btn layui-btn-sm layui-btn-normal"><i
class="layui-icon">&#xe654;</i>新增资
</button>
<button id="delAuthResBtn" type="button" class="layui-btn layui-btn-sm layui-btn-normal"><i
class="layui-icon">&#xe640;</i>删除资
</button>
</div>
<table id="res_temp_table"></table>
</div>
</div>
</div>
</div>
</article>
</script>
<!--<script template lay-done="layui.data.sendParams(d.params)"></script>-->
<script>
var params = document.getElementById("alarmtemplate-params").value;
... ...