Skip to content
plan-modal.component.ts 6.55 KiB
Newer Older
wangqinghua's avatar
wangqinghua committed
import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core';
wangqinghua's avatar
wangqinghua committed
import {FormBuilder, FormGroup, Validators} from '@angular/forms';
wangqinghua's avatar
wangqinghua committed
import {WorkService} from '../../work.service';
import {NzMessageService, UploadFile} from 'ng-zorro-antd';
wangqinghua's avatar
wangqinghua committed
import {SelectPersonComponent} from '../../../modal/select-person/select-person.component';
wangqinghua's avatar
wangqinghua committed
import {DatePipe} from '@angular/common';
wangqinghua's avatar
wangqinghua committed

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

    planList;
    planId;
    title;
    isVisiable = false;
wangqinghua's avatar
wangqinghua committed
    isDisabled = false;
wangqinghua's avatar
wangqinghua committed
    validateForm: FormGroup;
wangqinghua's avatar
wangqinghua committed
    fileList = [];

wangqinghua's avatar
wangqinghua committed
    modalTitle;

wangqinghua's avatar
wangqinghua committed
    participantsList = []; //参与人
    principalsList = [];   //负责人
wangqinghua's avatar
wangqinghua committed

    constructor(private workSer: WorkService, private message: NzMessageService,
wangqinghua's avatar
wangqinghua committed
                private fb: FormBuilder, private datePipe: DatePipe) {
wangqinghua's avatar
wangqinghua committed
    }

    ngOnInit() {
        this.initForm();
        this.getPlanType();
    }

    initForm() {
wangqinghua's avatar
wangqinghua committed
        this.fileList = [];
wangqinghua's avatar
wangqinghua committed
        this.isDisabled = false;
wangqinghua's avatar
wangqinghua committed
        this.participantsList = [];
        this.principalsList = [];
wangqinghua's avatar
wangqinghua committed
        this.validateForm = this.fb.group({
wangqinghua's avatar
wangqinghua committed
            title: [null, [Validators.required],Validators.maxLength(20)],
wangqinghua's avatar
wangqinghua committed
            typeId: [null, [Validators.required]],
wangqinghua's avatar
wangqinghua committed
            startTime: [null, [Validators.required]],
            endTime: [null, [Validators.required]],
wangqinghua's avatar
wangqinghua committed
            cycleType: [null, [Validators.required]],
wangqinghua's avatar
wangqinghua committed
            cycleNum: ['1'],
wangqinghua's avatar
wangqinghua committed
            number: [null, [Validators.required]],
wangqinghua's avatar
wangqinghua committed
            workload: [null],
wangqinghua's avatar
wangqinghua committed
            description: [null,Validators.maxLength(100)],
wangqinghua's avatar
wangqinghua committed
            principals: [null, [Validators.required]],   //负责人
            participants: [null, [Validators.required]],   //参与人
wangqinghua's avatar
wangqinghua committed
        });
    }

wangqinghua's avatar
wangqinghua committed
    getPlanType() {
wangqinghua's avatar
wangqinghua committed
        const data = {
wangqinghua's avatar
wangqinghua committed
            type: 1
wangqinghua's avatar
wangqinghua committed
        };
        this.workSer.findByType(data).subscribe(
wangqinghua's avatar
wangqinghua committed
            (res) => {
                if (res.errCode == 10000) {
wangqinghua's avatar
wangqinghua committed
                    this.planList = res.data;
                }
            }
wangqinghua's avatar
wangqinghua committed
        );
wangqinghua's avatar
wangqinghua committed
    }

    beforeUpload = (file: UploadFile): boolean => {
        const isLt5M = file.size / 1024 < 5000;
        if (!isLt5M) {
            this.message.error(' 文件必须小于5M!');
        } else {
wangqinghua's avatar
wangqinghua committed
            this.fileList[0] = file;
wangqinghua's avatar
wangqinghua committed
        }
        return false;
    };

    showAddModal() {
        this.title = '添加计划';
wangqinghua's avatar
wangqinghua committed
        this.isVisiable = true;
wangqinghua's avatar
wangqinghua committed
    }

    showEditModal(id) {
        this.title = '编辑计划';
        this.planId = id;
wangqinghua's avatar
wangqinghua committed
        this.isVisiable = true;
wangqinghua's avatar
wangqinghua committed
        this.workSer.findPlan(id).subscribe(
wangqinghua's avatar
wangqinghua committed
            (res) => {
                res.data.number += '';
                res.data.cycleNum += '';
wangqinghua's avatar
wangqinghua committed
                this.participantsList = res.data.participants;
                this.principalsList = res.data.principals;
wangqinghua's avatar
wangqinghua committed
                if (res.data.fileName) {
wangqinghua's avatar
wangqinghua committed
                    this.fileList = [
                        {
                            name: res.data.fileName,
                        }
wangqinghua's avatar
wangqinghua committed
                    ];
wangqinghua's avatar
wangqinghua committed
                }
wangqinghua's avatar
wangqinghua committed
                this.validateForm.patchValue(res.data);
wangqinghua's avatar
wangqinghua committed
                this.validateForm.patchValue({
wangqinghua's avatar
wangqinghua committed
                    startTime: new Date(res.data.startTime),
                    endTime: new Date(res.data.endTime),
wangqinghua's avatar
wangqinghua committed
                });
wangqinghua's avatar
wangqinghua committed
                if (res.data.status == 1) {
wangqinghua's avatar
wangqinghua committed
                    this.isDisabled = true;
                }
wangqinghua's avatar
wangqinghua committed
            }
wangqinghua's avatar
wangqinghua committed
        );
wangqinghua's avatar
wangqinghua committed
    }

    handEditleOk() {
wangqinghua's avatar
wangqinghua committed
        this.validateForm.patchValue({
            principals: this.principalsList.length == 0 ? null : this.principalsList,
            participants: this.participantsList.length == 0 ? null : this.participantsList,
            startTime: this.datePipe.transform(this.validateForm.value.startTime, 'yyyy-MM-dd HH:mm:ss'),
            endTime: this.datePipe.transform(this.validateForm.value.endTime, 'yyyy-MM-dd HH:mm:ss'),
        });
wangqinghua's avatar
wangqinghua committed
        for (let i in this.validateForm.controls) {
            this.validateForm.controls[i].markAsDirty();
            this.validateForm.controls[i].updateValueAndValidity();
        }
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
        if (this.validateForm.invalid) {
            return false;
        }
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
        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();
        }
    }

    create() {
        let formData = new FormData();
        this.fileList.forEach((file: any) => {
            formData.append('file', file);
        });
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
        formData.append('json', JSON.stringify(this.validateForm.value));
        this.workSer.createPlan(formData).subscribe(
wangqinghua's avatar
wangqinghua committed
            (res) => {
                if (res.errCode == 10000) {
wangqinghua's avatar
wangqinghua committed
                    this.initForm();
                    this.isVisiable = false;
wangqinghua's avatar
wangqinghua committed
                    this.done.emit();
wangqinghua's avatar
wangqinghua committed
                    this.message.success('新增计划成功');
wangqinghua's avatar
wangqinghua committed
                }
            }
wangqinghua's avatar
wangqinghua committed
        );
wangqinghua's avatar
wangqinghua committed
    }

wangqinghua's avatar
wangqinghua committed
    update() {
wangqinghua's avatar
wangqinghua committed
        let formData = new FormData();
        this.fileList.forEach((file: any) => {
            formData.append('file', file);
        });
wangqinghua's avatar
wangqinghua committed
        this.validateForm.value.id = this.planId;
wangqinghua's avatar
wangqinghua committed
        formData.append('json', JSON.stringify(this.validateForm.value));
wangqinghua's avatar
wangqinghua committed
        this.workSer.updatePlan(formData).subscribe(
wangqinghua's avatar
wangqinghua committed
            (res) => {
                if (res.errCode == 10000) {
                    this.message.success('修改计划成功');
wangqinghua's avatar
wangqinghua committed
                    this.initForm();
wangqinghua's avatar
wangqinghua committed
                    this.done.emit();
wangqinghua's avatar
wangqinghua committed
                    this.isVisiable = false;
                }
            }
wangqinghua's avatar
wangqinghua committed
        );
wangqinghua's avatar
wangqinghua committed
    }

    handleEditCancel() {
        this.isVisiable = false;
wangqinghua's avatar
wangqinghua committed
        this.initForm();
wangqinghua's avatar
wangqinghua committed
    }

wangqinghua's avatar
wangqinghua committed
    selectPerson1() {
        this.modalTitle = '选择参与人';
wangqinghua's avatar
wangqinghua committed
        this.smartSelectPerson.showModal(this.modalTitle, null);
wangqinghua's avatar
wangqinghua committed
    }

    selectPerson2() {
        this.modalTitle = '选择负责人';
wangqinghua's avatar
wangqinghua committed
        this.smartSelectPerson.showModal(this.modalTitle, null);
wangqinghua's avatar
wangqinghua committed
    }

    getUser(e) {
        const arr = [];
wangqinghua's avatar
wangqinghua committed
        e.forEach(res => {
            const data = {
                username: res.name,
                userId: res.id
            };
            arr.push(data);
wangqinghua's avatar
wangqinghua committed
        });
wangqinghua's avatar
wangqinghua committed
        if (this.modalTitle == '选择参与人') {
            this.participantsList = arr;
        }
        if (this.modalTitle == '选择负责人') {
            this.principalsList = arr;
        }
    }

    //删除参与人
wangqinghua's avatar
wangqinghua committed
    delete1(index) {
        this.participantsList.splice(index, 1);
wangqinghua's avatar
wangqinghua committed
    }

    //删除负责人
wangqinghua's avatar
wangqinghua committed
    delete2(index) {
        this.principalsList.splice(index, 1);
wangqinghua's avatar
wangqinghua committed
    }
wangqinghua's avatar
wangqinghua committed
}