Skip to content
topology.component.ts 4.69 KiB
Newer Older
wangqinghua's avatar
wangqinghua committed
import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core';
wangqinghua's avatar
wangqinghua committed
import {FormBuilder, FormControl, FormGroup, Validators} from '@angular/forms';
import {TopologyService} from '../../topology.service';
import {NzMessageService} from 'ng-zorro-antd';
wangqinghua's avatar
wangqinghua committed
import {SelectRoleComponent} from '../../../modal/select-role/select-role.component';
wangqinghua's avatar
wangqinghua committed

@Component({
    selector: 'smart-topology',
    templateUrl: './topology.component.html',
    styles: []
})
export class TopologyComponent implements OnInit {
wangqinghua's avatar
wangqinghua committed
    @ViewChild('smartSelectRole') smartSelectRole: SelectRoleComponent;
wangqinghua's avatar
wangqinghua committed
    @Output() done = new EventEmitter();
wangqinghua's avatar
wangqinghua committed

    isVisible = false;
    title: string;
wangqinghua's avatar
wangqinghua committed
    validateForm: FormGroup;
wangqinghua's avatar
wangqinghua committed
    topoId;
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    pageNum;
    pageCount;

wangqinghua's avatar
wangqinghua committed
    userGroup = [];  //用户角色组

    constructor(private fb: FormBuilder, private topologySer: TopologyService,
                private message: NzMessageService) {
wangqinghua's avatar
wangqinghua committed
    }

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

wangqinghua's avatar
wangqinghua committed
    initForm() {
wangqinghua's avatar
wangqinghua committed
        this.validateForm = this.fb.group(
            {
wangqinghua's avatar
wangqinghua committed
                name: ['', [Validators.required]],
                refreshRete: [''],
                json: [''],
                users: [[]],
                userGroups: [[]]
wangqinghua's avatar
wangqinghua committed
            }
wangqinghua's avatar
wangqinghua committed
        );
        this.userGroup = [];
wangqinghua's avatar
wangqinghua committed
    }

    showAddMOodal() {
        this.isVisible = true;
        this.title = '添加拓扑图';
    }

wangqinghua's avatar
wangqinghua committed
    showEditModal(id) {
wangqinghua's avatar
wangqinghua committed
        this.title = '编辑拓扑图';
        this.isVisible = true;
wangqinghua's avatar
wangqinghua committed
        this.topoId = id;
        this.topologySer.findItem(id).subscribe(
            (res) => {
                if (res.errCode == 10000) {
wangqinghua's avatar
wangqinghua committed
                    this.validateForm.patchValue(res.data);
                    res.data.userGroups.forEach(r => {
                        const data = {
                            userGroupId: r.userGroupId,
                            name: r.name,
                            permission: r.permission === 3,
                        };
                        this.userGroup.push(data);
                    });

                } else {
                    this.message.create('error', `${res.errMsg}`);
wangqinghua's avatar
wangqinghua committed
                }
            }
        );
wangqinghua's avatar
wangqinghua committed
    }

wangqinghua's avatar
wangqinghua committed
    //permission 2=只读, 3=读写
    handleOk() {
        for (let i  in this.validateForm.controls) {
wangqinghua's avatar
wangqinghua committed
            this.validateForm.controls[i].markAsDirty();
            this.validateForm.controls[i].updateValueAndValidity();
        }
wangqinghua's avatar
wangqinghua committed
        if (this.validateForm.invalid) {
wangqinghua's avatar
wangqinghua committed
            return false;
        }
wangqinghua's avatar
wangqinghua committed
        const userGroup = [];
        this.userGroup.forEach(e => {
            const data = {
                userGroupId: e.userGroupId,
                name: e.name,
                permission: e.permission == true ? 3 : 2,
            };
            userGroup.push(data);
        });
        this.validateForm.patchValue({
            userGroups: userGroup
        });
        if (this.title == '添加拓扑图') {
wangqinghua's avatar
wangqinghua committed
            this.create();
        }
wangqinghua's avatar
wangqinghua committed
        if (this.title == '编辑拓扑图') {
wangqinghua's avatar
wangqinghua committed
            this.update();
        }
    }

wangqinghua's avatar
wangqinghua committed
    create() {
wangqinghua's avatar
wangqinghua committed
        this.topologySer.create(this.validateForm.value).subscribe(
wangqinghua's avatar
wangqinghua committed
            (res) => {
                if (res.errCode == 10000) {
wangqinghua's avatar
wangqinghua committed
                    this.initForm();
                    this.message.create('success', `创建成功`);
                    this.isVisible = false;
                    this.done.emit();
wangqinghua's avatar
wangqinghua committed
                } else {
wangqinghua's avatar
wangqinghua committed
                    this.message.create('error', `${res.errMsg}`);
                }
            }
wangqinghua's avatar
wangqinghua committed
        );
wangqinghua's avatar
wangqinghua committed
    }
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    update() {
        this.validateForm.addControl('id', new FormControl(this.topoId));
wangqinghua's avatar
wangqinghua committed
        this.topologySer.update(this.validateForm.value).subscribe(
wangqinghua's avatar
wangqinghua committed
            (res) => {
                if (res.errCode == 10000) {
wangqinghua's avatar
wangqinghua committed
                    this.initForm();
                    this.message.create('success', `编辑成功`);
                    this.done.emit();
                    this.isVisible = false;
wangqinghua's avatar
wangqinghua committed
                } else {
wangqinghua's avatar
wangqinghua committed
                    this.message.create('error', `${res.errMsg}`);
                }
            }
wangqinghua's avatar
wangqinghua committed
        );
wangqinghua's avatar
wangqinghua committed
    }
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    handleCancel() {
        this.isVisible = false;
wangqinghua's avatar
wangqinghua committed
        this.initForm();
wangqinghua's avatar
wangqinghua committed
    }

wangqinghua's avatar
wangqinghua committed
    //选择角色
    add() {
        this.smartSelectRole.showModal('选择角色', null);
    }

    //移除
    remove(index) {
        this.userGroup.splice(index, 1);
    }

    //permission 2=只读, 3=读写
    setRole(e) {
        const idArr = this.userGroup.map(m => {
            return m.userGroupId;
        });
        e.forEach(f => {
            if (idArr.indexOf(f.id) == -1) {
                const data = {
                    userGroupId: f.id,
                    name: f.name,
                    permission: false,
                };
                this.userGroup.push(data);
            }
        });
    }

wangqinghua's avatar
wangqinghua committed
}