Newer
Older
import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core';
import {AlarmService} from '../../alarm/alarm.service';
import {FindUserComponent} from '../../alarm/modal/find-user/find-user.component';
import {NzFormatEmitEvent, NzMessageService, NzTreeComponent, NzTreeNode} from 'ng-zorro-antd';
import {OverAllService} from '../../overAll/overAll.service';
import {SelectPersonComponent} from '../select-person/select-person.component';
import {WorkService} from '../../work/work.service';
selector: 'smart-alarm-modal',
templateUrl: './alarm-modal.component.html',
border: 1px solid #dadada;
height: 200px;
overflow: auto;
margin-top: 10px;
@ViewChild('smartSelectPerson') smartSelectPerson: SelectPersonComponent;
constructor(private alarmSer: AlarmService, private message: NzMessageService,
private overAllSer: OverAllService,private workSer: WorkService,) {
warn:0,
serious:0,
mediaTypeIds:[],
def_longdata:null,
r_longdata:null,
r_shortdata:null,
event:{
eventTypeId:null, //事件分类id
operators:null, //事件负责人
description:null, //事件描述
}
//获取事件分类
getEventType() {
const data = {
type: 0
};
this.workSer.findParamsByType(data).subscribe(
(res) => {
this.eventTypeList = res.data;
}
);
}
this.overAllSer.findGroup().subscribe(
(res) => {
if (res.errCode == 10000) {
const dataSet = res.data;
dataSet.forEach(res => {
res.title = res.name;
res.key = res.groupid;
});
this.nodeList = dataSet;
this.toNode(dataSet);
} else {
this.message.info(res.errMsg);
}
}
);
}
//获取告警分组
getGroup(){
this.alarmSer.alertGroupFind().subscribe(
(res) => {
if (res.errCode == 10000) {
this.groupList = res.data;
}
}
);
}
toNode(data) {
this.nodes = data.map(res => {
return new NzTreeNode(res);
});
}
//下级
mouseAction(name: string, event: NzFormatEmitEvent) {
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
const index = <any>event.node.key - 1;
const data = {
'groupids': [event.node.origin.groupid],
'hostExtend': {
'superiorHostid': null
}
};
this.overAllSer.findDetail(data).subscribe(
(res) => {
if (res.data) {
const dataSet = res.data;
dataSet.forEach(res => {
res.title = res.name;
res.key = res.groupid;
res.isLeaf = true;
});
event.node.addChildren(dataSet);
} else {
event.node.addChildren([]);
this.message.info('该分组下无资源');
}
}
);
setTimeout(_ => {
}, 1000);
}
//选择树节点
selectCheckTree(event: NzFormatEmitEvent) {
if (event.node.isChecked) {
this.selectTreeList.push(event.node.origin.hostid);
} else {
const index = this.selectTreeList.indexOf(event.node.origin.hostid);
this.selectTreeList.splice(index, 1);
}
}
//获取发送方式
getSendFun() {
this.alarmSer.mediaTypeFind({}).subscribe(
(res) => {
if (res.errCode == 10000) {
this.sendOption = res.data;
}
}
);
}
//获取发送对象 zabbix
getZabbixObj() {
this.alarmSer.zUserFind({}).subscribe(
(res) => {
if (res.errCode == 10000) {
this.objList = res.data;
}
}
);
//添加发送方式
addOption(){
const data = {
mediaType:null,
receiver:""
};
this.sendInfoList.push(data);
}
//删除发送方式
deleteOption(index){
this.sendInfoList.splice(index,1);
}
//新增告警
showEditModal(title,id) {
this.title = title;
this.isShow = true;
this.actionid = id;
this.alarmSer.getAction(id).subscribe(
(res)=>{
this.validateForm = res.data;
}
)
//选择处理人弹窗
selectPerson(){
this.smartSelectPerson.showModal("选择事件负责人",null);
}
//选择事件负责人done
getUser(e){
const arr = [];
e.forEach(res => {
const data = {
username: res.name,
userId: res.id
};
arr.push(data);
});
this.operatorList = arr;
}
const optionArr = [];
this.sendOption.forEach(res=>{
if(res.checked){
optionArr.push(res.value);
}
});
this.validateForm.warn = this.validateForm.warn == true ? 1:0;
this.validateForm.serious = this.validateForm.serious == true?1:0;
alertGroupId: this.validateForm.alertGroupId,
warn:this.validateForm.warn,
serious:this.validateForm.serious,
mediaTypeIds:optionArr,
def_longdata:this.validateForm.def_longdata,
r_longdata:this.validateForm.r_longdata,
r_shortdata:this.validateForm.r_shortdata,
event:{
eventTypeId:this.validateForm.event.eventTypeId, //事件分类id
operators:this.operatorList, //事件负责人
description:this.validateForm.event.description, //事件描述
}
if(this.title == '添加告警'){
this.create(data)
}
if(this.title == "编辑告警"){
this.update(data);
}
}
//校验
check(){
if(!this.validateForm.name){
this.message.error("请输入告警名称");
return false;
}
if(this.sendInfoList.length == 0){
this.message.error("请选择发送对象");
return false;
}
if(this.selectTreeList.length == 0 ){
this.message.error("请选择告警目标");
return false;
}
if(!this.validateForm.alertGroupId ){
this.message.error("请选择告警分组");
return false;
}
if(!this.validateForm.def_longdata ){
this.message.error("请输入发送信息");
return false;
}
number = false;
}
if(!e.receiver){
number = false;
}
});
if(!number){
this.message.error("请输入发送对象");
return false;
}
return true;
}
//创建
create(data){
if(res.errCode == 10000){
this.isShow = false;
this.initForm();
this.done.emit();
this.message.success("创建告警成功");
}else{
this.message.error(res.errMsg);
update(data){
data.actionid = this.actionid;
this.alarmSer.actionUpdate(data).subscribe(
(res) => {
if(res.errCode == 10000){
this.isShow = false;
this.initForm();
this.done.emit();
this.message.success("编辑告警成功");
}else{
this.message.error(res.errMsg);
}
}
);
}