Skip to content
b-config.component.ts 8.44 KiB
Newer Older
wangqinghua's avatar
wangqinghua committed
import {Component, OnInit, Output, ViewChild} from '@angular/core';
import {BusinessComponent} from '../modal/business/business.component';
wangqinghua's avatar
wangqinghua committed
import {BusinessService} from '../business.service';
wangqinghua's avatar
wangqinghua committed
import {TreeNodeInterface} from '../../overAll/basic/basic.component';
import {NzMessageService} from 'ng-zorro-antd';
wangqinghua's avatar
wangqinghua committed
import {color, pageSize} from '../../app.constants';
wangqinghua's avatar
wangqinghua committed
import {CommonService} from '../../shared/common/common.service';
wangqinghua's avatar
wangqinghua committed
import {WebModalComponent} from '../../modal/web-modal/web-modal.component';
wangqinghua's avatar
wangqinghua committed
import {AlarmModalComponent} from '../../modal/alarm-modal/alarm-modal.component';
wangqinghua's avatar
wangqinghua committed

@Component({
wangqinghua's avatar
wangqinghua committed
    selector: 'smart-b-config',
    templateUrl: './b-config.component.html',
    styles: []
wangqinghua's avatar
wangqinghua committed
})
export class BConfigComponent implements OnInit {
wangqinghua's avatar
wangqinghua committed
    @ViewChild('smartBusiness') smartBusiness: BusinessComponent;
wangqinghua's avatar
wangqinghua committed
    @ViewChild('smartWebModal') smartWebModal: WebModalComponent;
wangqinghua's avatar
wangqinghua committed
    @ViewChild('smartAlarmModal') smartAlarmModal: AlarmModalComponent;
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    sid;  //节点id
    color = color;
wangqinghua's avatar
wangqinghua committed
    allChecked = false;
wangqinghua's avatar
wangqinghua committed
    contractId;
wangqinghua's avatar
wangqinghua committed
    searchName;
wangqinghua's avatar
wangqinghua committed

    isLoading = false;   //加载中

wangqinghua's avatar
wangqinghua committed
    //分页
    pageNum = 1;
    pageCount = pageSize;
    totalNum;

    searchStatus = false;
    searchList;

wangqinghua's avatar
wangqinghua committed
    constructor(private busineSer: BusinessService, private message: NzMessageService,
                private commonSer: CommonService) {
wangqinghua's avatar
wangqinghua committed
    }

wangqinghua's avatar
wangqinghua committed
    dataSet: any[];
    expandDataCache = {};

    collapse(array: TreeNodeInterface[], data: TreeNodeInterface, $event: boolean): void {
        if ($event === false) {
            if (data.children) {
                data.children.forEach(d => {
                    const target = array.find(a => a.serviceid === d.serviceid);
                    target.expand = false;
                    this.collapse(array, target, false);
                });
            } else {
                return;
            }
        }
    }

wangqinghua's avatar
wangqinghua committed
    convertTreeToList(root: any, index: string, serviceid: string): TreeNodeInterface[] {
wangqinghua's avatar
wangqinghua committed
        const stack = [];
        const array = [];
        const hashMap = {};
wangqinghua's avatar
wangqinghua committed
        if (root.index == index) {
wangqinghua's avatar
wangqinghua committed
            stack.push({...root, level: 0, expand: true});
wangqinghua's avatar
wangqinghua committed
        } else {
wangqinghua's avatar
wangqinghua committed
            stack.push({...root, level: 0, expand: false});
        }
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
        while (stack.length !== 0) {
            const node = stack.pop();
            this.visitNode(node, hashMap, array);
wangqinghua's avatar
wangqinghua committed
            if (node.children) {
                for (let i = node.children.length - 1; i >= 0; i--) {
wangqinghua's avatar
wangqinghua committed
                    stack.push({...node.children[i], level: node.level + 1, expand: true, parent: node});
wangqinghua's avatar
wangqinghua committed
                }
            }
        }
        return array;
    }

    visitNode(node: TreeNodeInterface, hashMap: object, array: TreeNodeInterface[]): void {
wangqinghua's avatar
wangqinghua committed
        if (!hashMap[node.serviceid]) {
            hashMap[node.serviceid] = true;
wangqinghua's avatar
wangqinghua committed
            array.push(node);
        }
    }

wangqinghua's avatar
wangqinghua committed
    toTree(index, serviceid) {
wangqinghua's avatar
wangqinghua committed
        this.dataSet.forEach((item, i) => {
wangqinghua's avatar
wangqinghua committed
            this.expandDataCache[item.serviceid] = this.convertTreeToList(item, index, serviceid);
wangqinghua's avatar
wangqinghua committed
        });
wangqinghua's avatar
wangqinghua committed
    }
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    ngOnInit() {
wangqinghua's avatar
wangqinghua committed
        this.getList();
    }

    //查询业务树
wangqinghua's avatar
wangqinghua committed
    getList() {
wangqinghua's avatar
wangqinghua committed
        this.isLoading = true;
        const data = {
wangqinghua's avatar
wangqinghua committed
            'sid': this.sid,
wangqinghua's avatar
wangqinghua committed
        };
        this.busineSer.findChild(data).subscribe(
wangqinghua's avatar
wangqinghua committed
            (res) => {
wangqinghua's avatar
wangqinghua committed
                this.isLoading = false;
wangqinghua's avatar
wangqinghua committed
                if (res.errCode == 10000) {
wangqinghua's avatar
wangqinghua committed
                    this.dataSet = res.data;
wangqinghua's avatar
wangqinghua committed
                    this.dataSet.forEach((e, index) => {
wangqinghua's avatar
wangqinghua committed
                        e.index = index;
wangqinghua's avatar
wangqinghua committed
                        e.checked = false;
wangqinghua's avatar
wangqinghua committed
                        e.children = [];
wangqinghua's avatar
wangqinghua committed
                        e.info = '';
wangqinghua's avatar
wangqinghua committed
                    });
wangqinghua's avatar
wangqinghua committed
                    this.toTree(null, null);
wangqinghua's avatar
wangqinghua committed
                } else {
wangqinghua's avatar
wangqinghua committed
                    this.message.error(res.errMsg);
                }
            }
wangqinghua's avatar
wangqinghua committed
        );
wangqinghua's avatar
wangqinghua committed
    }

wangqinghua's avatar
wangqinghua committed
    /**
     * 获取下级
     * @param item  当前节点
     * @param data  当前节点的根节点
     */
wangqinghua's avatar
wangqinghua committed
    getChildren(item, data) {
        if (item.children.length > 0) {
            if (item.expand) {
                item.expand = false;
            } else {
                item.expand = true;
            }
            return false;
        }
wangqinghua's avatar
wangqinghua committed
        this.isLoading = true;
wangqinghua's avatar
wangqinghua committed
        const obj = {
wangqinghua's avatar
wangqinghua committed
            'sid': item.serviceid,
wangqinghua's avatar
wangqinghua committed
        };
wangqinghua's avatar
wangqinghua committed
        this.busineSer.findChild(obj).subscribe(
wangqinghua's avatar
wangqinghua committed
            (res) => {
wangqinghua's avatar
wangqinghua committed
                if (res.data) {
wangqinghua's avatar
wangqinghua committed
                    res.data.forEach(e => {
wangqinghua's avatar
wangqinghua committed
                        e.children = [];
wangqinghua's avatar
wangqinghua committed
                        e.info = '';
wangqinghua's avatar
wangqinghua committed
                    });
wangqinghua's avatar
wangqinghua committed
                    this.dataSet.forEach(e => {
                        if (e.serviceid == item.serviceid) {
wangqinghua's avatar
wangqinghua committed
                            e.children = res.data;
                        }
                    });
wangqinghua's avatar
wangqinghua committed
                    this.setDateSet(this.dataSet, item, res.data);
                    this.toTree(data.index, item.serviceid);
wangqinghua's avatar
wangqinghua committed
                } else {
                    this.message.info('该分组下无资源');
                }
                this.isLoading = false;
            }
wangqinghua's avatar
wangqinghua committed
        );
    }

wangqinghua's avatar
wangqinghua committed
    setDateSet(array, data, insertArr) {
wangqinghua's avatar
wangqinghua committed
        if (array.length > 0) {
            const target = array.find(a => a.serviceid === data.serviceid);
            if (target) {
                target.children = insertArr;
            } else {
wangqinghua's avatar
wangqinghua committed
                array.forEach(o => {
                    this.setDateSet(o.children, data, insertArr);
wangqinghua's avatar
wangqinghua committed
                });
            }
wangqinghua's avatar
wangqinghua committed
        } else {
wangqinghua's avatar
wangqinghua committed
            return;
wangqinghua's avatar
wangqinghua committed
        }
wangqinghua's avatar
wangqinghua committed
    }

wangqinghua's avatar
wangqinghua committed
    //删除单个资源
    showDeleteConfirm(item) {
wangqinghua's avatar
wangqinghua committed
        this.commonSer.confirmThing('删除', '确定删除该服务', () => {
wangqinghua's avatar
wangqinghua committed
            const data = {
wangqinghua's avatar
wangqinghua committed
                serviceids: []
wangqinghua's avatar
wangqinghua committed
            };
            data.serviceids.push(item.serviceid);
            this.busineSer.deleteService(data).subscribe(
wangqinghua's avatar
wangqinghua committed
                (res) => {
wangqinghua's avatar
wangqinghua committed
                    if (res.errCode == 10000) {
                        this.message.success('删除成功');
                        this.getList();
                    } else {
                        this.message.error(res.errMsg);
                    }
                }
wangqinghua's avatar
wangqinghua committed
            );
        });
wangqinghua's avatar
wangqinghua committed
    }

wangqinghua's avatar
wangqinghua committed
    //网站检测列表
wangqinghua's avatar
wangqinghua committed
    showWebModal(item) {
wangqinghua's avatar
wangqinghua committed
        this.contractId = item.serviceid;
wangqinghua's avatar
wangqinghua committed
        if (item.trigger) {
            this.message.info('已绑定阈值');
wangqinghua's avatar
wangqinghua committed
            return false;
        }
        this.smartWebModal.showModal();
    }
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    //关联网站
wangqinghua's avatar
wangqinghua committed
    contract(e) {
        this.busineSer.relatedHttptest(this.contractId, e.httptestid).subscribe(
            (res) => {
                if (res.errCode == 10000) {
                    this.message.success('关联网站成功');
wangqinghua's avatar
wangqinghua committed
                    this.getList();
wangqinghua's avatar
wangqinghua committed
                } else {
wangqinghua's avatar
wangqinghua committed
                    this.message.error(res.errMsg);
                }
            }
wangqinghua's avatar
wangqinghua committed
        );
wangqinghua's avatar
wangqinghua committed
    }

wangqinghua's avatar
wangqinghua committed
    //告警时间
wangqinghua's avatar
wangqinghua committed
    getTime(item) {
wangqinghua's avatar
wangqinghua committed
        this.busineSer.selectAlarmsClock(item.serviceid).subscribe(
wangqinghua's avatar
wangqinghua committed
            (res) => {
                if (res.errCode == 10000) {
                    if (res.data.now) {
                        item.now = res.data.now.time;
wangqinghua's avatar
wangqinghua committed
                    }
wangqinghua's avatar
wangqinghua committed
                    if (res.data.last) {
                        item.last = res.data.last.time;
                    }
                } else {
                    this.message.error(res.errMsg);
                }
wangqinghua's avatar
wangqinghua committed
            }
wangqinghua's avatar
wangqinghua committed
        );
wangqinghua's avatar
wangqinghua committed
    }

wangqinghua's avatar
wangqinghua committed
    //添加业务
wangqinghua's avatar
wangqinghua committed
    showAddModal(item) {
wangqinghua's avatar
wangqinghua committed
        this.smartBusiness.showModal('添加业务', item);
wangqinghua's avatar
wangqinghua committed
    }
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    //编辑业务
wangqinghua's avatar
wangqinghua committed
    showEditModal(item) {
        this.smartBusiness.showEditModal('编辑业务', item);
wangqinghua's avatar
wangqinghua committed
    }

wangqinghua's avatar
wangqinghua committed
    //添加告警推送
wangqinghua's avatar
wangqinghua committed
    showAlarmModal(item) {
        this.smartAlarmModal.showAddModal('添加告警推送',item.serviceid);
    }

    //编辑告警推送
    showEditAlarmModal(item){
        this.smartAlarmModal.showEditModal("编辑告警推送",item.serviceAction.actionId)
wangqinghua's avatar
wangqinghua committed
    }

wangqinghua's avatar
wangqinghua committed
    //查询
    reset() {
        this.searchStatus = true;
        this.pageNum = 1;
        this.search();
    }

    //backList
    backList() {
        this.searchStatus = false;
    }
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    //翻页
    change(e){
        this.pageNum = e;
        this.search();
wangqinghua's avatar
wangqinghua committed
    }

wangqinghua's avatar
wangqinghua committed
    search(){
        this.isLoading = true;
        const data = {
            pageNum:this.pageNum,
            pageCount:this.pageCount,
            search:this.searchName
        }
        this.busineSer.findPage(data).subscribe(
            (res)=>{
                if(res.errCode == 10000){
                    this.searchList = res.data.data;
                    this.totalNum = res.data.totalNum;
                }
                this.isLoading = false;
            }
        )
    }
wangqinghua's avatar
wangqinghua committed
}