Skip to content
icon.component.ts 3.74 KiB
Newer Older
wangqinghua's avatar
wangqinghua committed
import {Component, EventEmitter, OnInit, Output} from '@angular/core';
import {NzMessageService, UploadFile} from 'ng-zorro-antd';
wangqinghua's avatar
wangqinghua committed
import {TopologyService} from '../../topology.service';
wangqinghua's avatar
wangqinghua committed
import {FormBuilder, FormGroup, Validator, Validators} from '@angular/forms';
wangqinghua's avatar
wangqinghua committed
import {filter} from 'rxjs/operators';
wangqinghua's avatar
wangqinghua committed

@Component({
wangqinghua's avatar
wangqinghua committed
    selector: 'smart-icon',
    templateUrl: './icon.component.html',
    styles: []
wangqinghua's avatar
wangqinghua committed
})
export class IconComponent implements OnInit {
wangqinghua's avatar
wangqinghua committed
    @Output() done = new EventEmitter<any>();
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    isVisible = false;
wangqinghua's avatar
wangqinghua committed
    fileList: UploadFile[] = [];
wangqinghua's avatar
wangqinghua committed
    validateForm: FormGroup;
    title = '添加图标';
    options: any;
wangqinghua's avatar
wangqinghua committed
    childrenList = [];
wangqinghua's avatar
wangqinghua committed

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

    values;
wangqinghua's avatar
wangqinghua committed

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

wangqinghua's avatar
wangqinghua committed
    initForm() {
wangqinghua's avatar
wangqinghua committed
        this.validateForm = this.fb.group({
wangqinghua's avatar
wangqinghua committed
            firstTypeId: [null, [Validators.required]],
            secondTypeId: [null],
            iconType: ['0'],
            defaultIcon: ['0'],
            name: [''],
wangqinghua's avatar
wangqinghua committed
        });
wangqinghua's avatar
wangqinghua committed
        this.fileList = [];
    }
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    getList() {
wangqinghua's avatar
wangqinghua committed
        this.topologySer.findTreeWithWeb().subscribe(
wangqinghua's avatar
wangqinghua committed
            (res) => {
                if (res.errCode == 10000) {
wangqinghua's avatar
wangqinghua committed
                    this.options = res.data;
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
    beforeUpload = (file: UploadFile): boolean => {
wangqinghua's avatar
wangqinghua committed
        const isLt2M = file.size / 1024 < 300;
wangqinghua's avatar
wangqinghua committed
        if (!isLt2M) {
            this.message.error('图标必须小于300kb!');
wangqinghua's avatar
wangqinghua committed
        } else {
wangqinghua's avatar
wangqinghua committed
            this.fileList.push(file);
        }
        return false;
    };

wangqinghua's avatar
wangqinghua committed
    showModal() {
wangqinghua's avatar
wangqinghua committed
        this.isVisible = true;
    }

wangqinghua's avatar
wangqinghua committed
    handleOk() {
        if (this.fileList.length == 0) {
            this.message.error('请选择图标');
wangqinghua's avatar
wangqinghua committed
            return false;
        }
wangqinghua's avatar
wangqinghua committed
        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 formData = new FormData();
        this.fileList.forEach((file: any) => {
wangqinghua's avatar
wangqinghua committed
            formData.append('file', file);
wangqinghua's avatar
wangqinghua committed
        });
wangqinghua's avatar
wangqinghua committed
        formData.append('iconType', this.validateForm.value.iconType);
        formData.append('defaultIcon', this.validateForm.value.defaultIcon);
        formData.append('firstTypeId', this.validateForm.value.firstTypeId);
        formData.append('secondTypeId', this.validateForm.value.secondTypeId);
        formData.append('name', this.validateForm.value.name);
        console.log(this.validateForm.value);
wangqinghua's avatar
wangqinghua committed
        this.topologySer.iconUpload(formData).subscribe(
wangqinghua's avatar
wangqinghua committed
            (res) => {
                if (res.errCode == 10000) {
                    this.message.success('添加成功');
wangqinghua's avatar
wangqinghua committed
                    this.isVisible = false;
wangqinghua's avatar
wangqinghua committed
                    this.initForm();
wangqinghua's avatar
wangqinghua committed
                    this.done.emit();
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
    onChanges(e) {
wangqinghua's avatar
wangqinghua committed
        this.childrenList = [];
wangqinghua's avatar
wangqinghua committed
        console.log(e);
wangqinghua's avatar
wangqinghua committed
        if (!isNaN(e)) {
wangqinghua's avatar
wangqinghua committed
            console.log('网站监测');
            this.validateForm.get('secondTypeId').clearValidators();
            this.validateForm.value.iconType = '1';
wangqinghua's avatar
wangqinghua committed
        } else {
wangqinghua's avatar
wangqinghua committed
            this.validateForm.get('secondTypeId').setValidators(Validators.required);
wangqinghua's avatar
wangqinghua committed
            console.log('主机资源');
wangqinghua's avatar
wangqinghua committed
        }
wangqinghua's avatar
wangqinghua committed
        this.options.forEach(res => {
            if (res.id == e) {
wangqinghua's avatar
wangqinghua committed
                this.childrenList = res.childs;
            }
wangqinghua's avatar
wangqinghua committed
        });
wangqinghua's avatar
wangqinghua committed
    }

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

wangqinghua's avatar
wangqinghua committed
}