Commit cb17f7a7 authored by wangqinghua's avatar wangqinghua

delete log

parent 8ed9b8ac
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
"bootapp": {
"root": "src/main",
"sourceRoot": "src/main/webapp",
"projectType": "application",
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
"outputPath": "build/www/app",
"index": "src/main/webapp/index.html",
"main": "src/main/webapp/app/app.main.ts",
"tsConfig": "src/main/webapp/../../../tsconfig.json",
"polyfills": "src/main/webapp/app/polyfills.ts",
"assets": [
"src/main/webapp/content"
],
"styles": [
"src/main/webapp/content/css/vendor.css",
"src/main/webapp/content/css/global.css",
"src/main/webapp/content/less/andt.less"
],
"scripts": [
"src/main/node_modules/echarts/dist/echarts.min.js"
]
},
"configurations": {
"production": {
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"extractCss": true,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true
}
}
},
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"browserTarget": "bootapp:build"
},
"configurations": {}
},
"extract-i18n": {
"builder": "@angular-devkit/build-angular:extract-i18n",
"options": {
"browserTarget": "bootapp:build"
}
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"main": "src/main/webapp/src/test/javascript/spec/entry.ts",
"karmaConfig": "src/test/javascript/karma.conf.js",
"polyfills": "src/main/webapp/app/polyfills.ts",
"scripts": [
"src/main/node_modules/echarts/dist/echarts.min.js"
],
"styles": [
"src/main/webapp/content/css/vendor.css",
"src/main/webapp/content/css/global.css",
"src/main/webapp/content/less/andt.less"
],
"assets": [
"src/main/webapp/content"
]
}
},
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"options": {
"tsConfig": [
"../../../tsconfig.json",
"../../../tsconfig-aot.json"
],
"exclude": []
}
}
}
},
"bootapp-e2e": {
"root": "src/main/e2e",
"sourceRoot": "src/main/e2e",
"projectType": "application"
}
},
"defaultProject": "bootapp",
"cli": {
"packageManager": "yarn"
},
"schematics": {
"@schematics/angular:component": {
"inlineStyle": true,
"inlineTemplate": false,
"spec": false,
"prefix": "smart",
"styleext": "css"
},
"@schematics/angular:directive": {
"spec": false,
"prefix": "smart"
},
"@schematics/angular:guard": {
"spec": false
},
"@schematics/angular:pipe": {
"spec": false
},
"@schematics/angular:service": {
"spec": false
}
}
}
\ No newline at end of file
{}
\ No newline at end of file
......@@ -5550,6 +5550,12 @@
"minimalistic-crypto-utils": "1.0.1"
}
},
"emitter-component": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/emitter-component/-/emitter-component-1.1.1.tgz",
"integrity": "sha1-Bl4tvtaVm/RwZ57avq95gdEAOrY=",
"dev": true
},
"emitter-steward": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/emitter-steward/-/emitter-steward-1.0.0.tgz",
......@@ -7581,6 +7587,12 @@
"glogg": "1.0.1"
}
},
"hammerjs": {
"version": "2.0.8",
"resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz",
"integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=",
"dev": true
},
"handle-thing": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz",
......@@ -9678,6 +9690,12 @@
"integrity": "sha1-edk9LTM2PW/dKXCzNdkUGtWR15s=",
"dev": true
},
"keycharm": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/keycharm/-/keycharm-0.2.0.tgz",
"integrity": "sha1-+m6i5DuQpoAohD0n8gddNajD5vk=",
"dev": true
},
"killable": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/killable/-/killable-1.0.0.tgz",
......@@ -14638,6 +14656,15 @@
"integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
"dev": true
},
"propagating-hammerjs": {
"version": "1.4.6",
"resolved": "https://registry.npmjs.org/propagating-hammerjs/-/propagating-hammerjs-1.4.6.tgz",
"integrity": "sha1-/tAOmwB2f/1C0U9bUxvEk+tnLjc=",
"dev": true,
"requires": {
"hammerjs": "2.0.8"
}
},
"proxy-addr": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.3.tgz",
......@@ -17651,6 +17678,19 @@
}
}
},
"vis": {
"version": "4.21.0",
"resolved": "https://registry.npmjs.org/vis/-/vis-4.21.0.tgz",
"integrity": "sha1-3XFji/9/ZJXQC8n0DCU1JhM97Ws=",
"dev": true,
"requires": {
"emitter-component": "1.1.1",
"hammerjs": "2.0.8",
"keycharm": "0.2.0",
"moment": "2.22.1",
"propagating-hammerjs": "1.4.6"
}
},
"vlq": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz",
......
......@@ -82,6 +82,7 @@
"tslint-loader": "3.5.3",
"typescript": "2.6.2",
"uglifyjs-webpack-plugin": "1.1.5",
"vis": "^4.21.0",
"web-app-manifest-loader": "0.1.1",
"webpack": "3.10.0",
"webpack-dev-server": "2.9.5",
......
<p>
alarm-log works!
</p>
<div nz-row class="breadcrumbs" >
<div nz-col nzSpan="16">
<nz-breadcrumb class="padding-8-0">
<nz-breadcrumb-item>
首页
</nz-breadcrumb-item>
<nz-breadcrumb-item>
<a>告警管理</a>
</nz-breadcrumb-item>
<nz-breadcrumb-item>
告警记录
</nz-breadcrumb-item>
</nz-breadcrumb>
</div>
<div nz-col nzSpan="8" class="text-right">
<button nz-button nzType="primary"><i class="anticon anticon-search"></i></button>
<button nz-button nzType="primary"><i class="anticon anticon-sync"></i></button>
<button nz-button nzType="primary"><i class="anticon anticon-arrows-alt"></i></button>
</div>
</div>
<div nz-row [nzGutter]="4" class="search-form">
<div nz-col nzSpan="3">
<nz-select style="width: 100%;" nzShowSearch nzAllowClear nzPlaceHolder="选择发送方式" [(ngModel)]="obj.priorityName">
<nz-option nzLabel="告警" nzValue="告警"></nz-option>
<nz-option nzLabel="严重" nzValue="严重"></nz-option>
</nz-select>
</div>
<div nz-col nzSpan="3">
<nz-select style="width: 100%;" nzShowSearch nzAllowClear nzPlaceHolder="选择告警组" [(ngModel)]="obj.groupid">
<ng-container *ngFor="let item of groupList;">
<nz-option nzLabel="{{item.name}}" nzValue="{{item.groupid}}"></nz-option>
</ng-container>
</nz-select>
</div>
<div nz-col nzSpan="3">
<nz-select style="width: 100%;" nzShowSearch nzAllowClear nzPlaceHolder="选择告警目标" [(ngModel)]="obj.equipmentType" >
<ng-container *ngFor="let item of warnCountList;">
<nz-option nzLabel="{{item.name}}" nzValue="{{item.name}}"></nz-option>
</ng-container>
</nz-select>
</div>
<div nz-col nzSpan="7">
<nz-radio-group style="width: 100%;" [(ngModel)]="timeType" (ngModelChange)="changeType()" [nzButtonStyle]="'solid'">
<label nz-radio-button nzValue="1">今天</label>
<label nz-radio-button nzValue="2">昨天</label>
<label nz-radio-button nzValue="3">三天</label>
<label nz-radio-button nzValue="4">一周</label>
<label nz-radio-button nzValue="5">自定义</label>
</nz-radio-group>
</div>
<div nz-col nzSpan="8" *ngIf="timeType == '5'">
<nz-date-picker
nzShowTime
[(ngModel)]="obj.startTime"
nzPlaceHolder="开始时间"
></nz-date-picker>
<nz-date-picker
nzShowTime
nzFormat="yyyy-MM-dd HH:mm:ss"
[(ngModel)]="obj.endTime"
nzPlaceHolder="结束时间"
></nz-date-picker>
</div>
</div>
<div nz-row class="search-form" style="border-top: none;padding: 0 0 15px 0;">
<input [(ngModel)]="obj.name" nz-input placeholder="搜索">
<button (click)="searchValue()" nz-button nzType="default"><i class="anticon anticon-search"></i>搜索</button>
</div>
<nz-table #nzTable [nzData]="logList" [nzFrontPagination]="false" [nzTotal]="totalNum" [nzPageIndex]="pageNum" [nzPageSize]="pageCount" (nzPageIndexChange)="change($event)" [nzLoading]="loading">
<thead>
<tr>
<th nzShowSort>告警名称</th>
<th>告警时间</th>
<th>告警目标</th>
<th nzWidth="15%">告警内容</th>
<th>状态</th>
<th>发送方式</th>
<th>发送对象</th>
<!--<th>产生事件</th>-->
<th style="text-align: center">操作</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let data of logList">
<td class="round-tag">
<nz-tag *ngIf="data.priority == 4 || data.priority == 5" [nzColor]="'#fc0d1b'"></nz-tag>
<nz-tag *ngIf="data.priority == 2 || data.priority == 3" [nzColor]="'#fd9827'"></nz-tag>
</td>
<td>名称</td>
<td>查看</td>
<td>查看</td>
<td>{{data.groupname}}</td>
<td>{{data.continuedTime}}</td>
<!--<td>{{data.eventid}}</td>-->
<td>
<ng-container *ngIf="data.r_clock">已恢复</ng-container>
<ng-container *ngIf="!data.r_clock">告警中</ng-container>
</td>
<td class="list-icon" (click)="showLog(data)"><i class="anticon anticon-profile"></i></td>
</tr>
</tbody>
</nz-table>
<smart-send-log #sendLog></smart-send-log>
\ No newline at end of file
import { Component, OnInit } from '@angular/core';
import {Component, OnInit, ViewChild} from '@angular/core';
import {WarnListComponent} from '../../modal/warn-list/warn-list.component';
import {OverAllService} from '../../overAll/overAll.service';
import {DatePipe} from '@angular/common';
import {AlarmService} from '../alarm.service';
import {pageSize} from '../../app.constants';
import {NzMessageService} from 'ng-zorro-antd';
@Component({
selector: 'smart-alarm-log',
templateUrl: './alarm-log.component.html',
styles: []
styles: [`
.tag-warn{
padding: 5px;
}
.tag-warn span{
border: 1px solid #ccc;
margin-right: 10px;
display: inline-block;
margin-bottom: 10px;
padding: 2px 4px;
border-radius: 4px;
}
:host ::ng-deep .tag-warn .ant-tag{
margin-right: 0px;
}
`]
})
export class AlarmLogComponent implements OnInit {
constructor() { }
@ViewChild('warnList') warnList: WarnListComponent;
logList = [];
warnCountList = [];
groupList = [];
ngOnInit() {
}
pageNum = 1;
pageCount = pageSize;
totalNum;
//条件
timeType;
obj = {
priorityName:null,
groupid:null,
equipmentType:null,
startTime:'',
endTime:'',
name:''
};
constructor(public alarmSer: AlarmService,public overAllSer:OverAllService,public message:NzMessageService,
public datePipe:DatePipe) {
}
ngOnInit() {
const obj = {};
this.getType();
this.getWarnGroup();
this.getList();
}
//
getList(){
const obj = {
"eventPage":this.pageNum,
"pageRecords":this.pageCount
}
this.alarmSer.alertFind(obj).subscribe(
(res)=>{
if(res.errCode == 10000){
this.logList = res.data.data;
this.totalNum = res.data.totalNum;
}else{
this.message.info(res.errMsg);
}
}
)
}
//获取分组
getWarnGroup(){
this.overAllSer.findGroup().subscribe(
(res)=>{
if(res.errCode == 10000){
this.groupList = res.data;
}
}
)
}
//获取资源类型
getType(){
this.overAllSer.findHostWarningCount().subscribe(
(res)=>{
if(res.errCode == 10000){
this.warnCountList = res.data;
}else{
this.message.info(res.errMsg);
}
}
)
}
//时间改变
changeType(){
const nowDate = new Date().getTime();
let day1,day2;
switch (this.timeType){
case'1':{
this.obj.startTime = this.datePipe.transform(nowDate,'yyyy-MM-dd') +' 00:00:00';
this.obj.endTime = this.datePipe.transform(nowDate,'yyyy-MM-dd') +' 23:59:59';
break;
};
case'2':{
day1 = nowDate - 1*24*60*60*1000;
this.obj.startTime = this.datePipe.transform(day1,'yyyy-MM-dd') + ' 00:00:00';
this.obj.endTime = this.datePipe.transform(day1,'yyyy-MM-dd') + ' 23:59:59';
break;
};
case'3':{
day1 = nowDate - 3*24*60*60*1000;
day2 = nowDate - 1*24*60*60*1000;
this.obj.startTime = this.datePipe.transform(day1,'yyyy-MM-dd') + ' 00:00:00';
this.obj.endTime = this.datePipe.transform(day2,'yyyy-MM-dd') + ' 23:59:59';
break;
};
case'4':{
day1 = nowDate - 7*24*60*60*1000;
day2 = nowDate - 1*24*60*60*1000;
this.obj.startTime = this.datePipe.transform(day1,'yyyy-MM-dd') + ' 00:00:00';
this.obj.endTime = this.datePipe.transform(day2,'yyyy-MM-dd') + ' 23:59:59';
break;
};
case'5':{
break;
};
}
}
//查询
searchValue(){
this.obj.startTime = this.datePipe.transform(this.obj.startTime,'yyyy-MM-dd HH:mm:ss');
this.obj.endTime = this.datePipe.transform(this.obj.endTime,'yyyy-MM-dd HH:mm:ss');
this.warnList.getList(this.obj);
}
}
......@@ -18,4 +18,49 @@ export class AlarmService {
alertFind(data): Observable<any>{
return this.http.post(SERVER_API_URL + '/alert/find',data);
}
//查询告警推送设置
actionFind(data): Observable<any>{
return this.http.post(SERVER_API_URL + '/action/find',data);
}
//查询所有告警组
alertGroupFind(data): Observable<any>{
return this.http.post(SERVER_API_URL + '/alertGroup/findAll',data);
}
//发送方式列表
mediaTypeFind(data): Observable<any>{
return this.http.post(SERVER_API_URL + '/mediaType/find',data);
}
//添加发送方式
mediaTypeCreate(data): Observable<any>{
return this.http.post(SERVER_API_URL + '/mediaType/create',data);
}
//删除发送方式
mediaTypeDelete(data): Observable<any>{
return this.http.post(SERVER_API_URL + '/mediaType/delete',data);
}
//修改发送方式
mediaTypeUpdate(data): Observable<any>{
return this.http.put(SERVER_API_URL + '/mediaType/update',data);
}
//单个启用或禁用发送方式
mediaTypeStatus(params1,params2): Observable<any>{
return this.http.post(SERVER_API_URL + '/mediaType/status/'+ params1 + '/' +params2,{});
}
//批量启用或禁用发送方式
mediaTypeStatusBatch(data): Observable<any>{
return this.http.put(SERVER_API_URL + '/mediaType/status-batch',data);
}
//查询发送方式详情
getMediaType(params): Observable<any>{
return this.http.get(SERVER_API_URL + '/mediaType/find/' + params);
}
}
\ No newline at end of file
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
@Injectable()
export class AnalysisService {
constructor() { }
......
......@@ -37,6 +37,10 @@ import {RoleComponent} from './system/modal/role/role.component';
import {NeTopologyComponent} from './netTopology/ne-topology/ne-topology.component';
import {FlowTrendComponent} from './netTopology/flow-trend/flow-trend.component';
import {TopologyService} from './netTopology/topology.service';
import {AnalysisService} from './analysis/analysis.service';
import {OperationService} from './operation/operation.service';
import {SmartService} from './smart/smart.service';
import {WorkService} from './work/work.service';
@NgModule({
imports: [
......@@ -85,6 +89,10 @@ import {TopologyService} from './netTopology/topology.service';
SystemService,
AlarmService,
TopologyService,
AnalysisService,
OperationService,
SmartService,
WorkService,
{ provide: NZ_I18N,
useValue: zh_CN }
],
......
<p>
flow-trend works!
</p>
<div id="mynetwork" style="width:600px;height: 200px;" #siteConfigNetwork></div>
import { Component, OnInit } from '@angular/core';
import {Component, ElementRef, OnInit, ViewChild} from '@angular/core';
declare var vis:any;
@Component({
selector: 'smart-flow-trend',
......@@ -6,10 +7,51 @@ import { Component, OnInit } from '@angular/core';
styles: []
})
export class FlowTrendComponent implements OnInit {
@ViewChild('siteConfigNetwork') networkContainer:ElementRef;
@ViewChild("pop") popOver: any;
public network: any;
constructor() { }
ngOnInit() {
const treeData = this.getTreeData();
this.loadVisTree(treeData);
}
loadVisTree(treedata) {
const options = {
interaction: {
hover: true,
},
manipulation: {
enabled: true
}
};
const container = this.networkContainer.nativeElement;
this.network = new vis.Network(container, treedata, options);
}
getTreeData(){
const nodes =[
{id: 1, label: 'Node 1', title: 'I am node 1!'},
{id: 2, label: 'Node 2', title: 'I am node 2!'},
{id: 3, label: 'Node 3'},
{id: 4, label: 'Node 4'},
{id: 5, label: 'Node 5'}
];
const edges = [
{from: 1, to: 3},
{from: 1, to: 2},
{from: 2, to: 4},
{from: 2, to: 5}
];
const treeData = {
nodes: nodes,
edges: edges
};
return treeData;
}
}
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
@Injectable()
export class OperationService {
constructor() { }
......
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
@Injectable()
export class SmartService {
constructor() { }
......
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
@Injectable()
export class WorkService {
constructor() { }
......
......@@ -9,6 +9,10 @@
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="theme-color" content="#000000">
<link rel="manifest" href="manifest.webapp"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.css" rel="stylesheet" type="text/css" />
<link href="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis-timeline-graph2d.min.css" rel="stylesheet" type="text/css" />
</head>
<style>
html, body {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment