Skip to content
role.component.ts 4.58 KiB
Newer Older
wangqinghua's avatar
wangqinghua committed
import {Component, EventEmitter, OnInit, Output} from '@angular/core';
import {
    AbstractControl,
    FormBuilder,
    FormControl,
    FormGroup,
    Validators
} from '@angular/forms';
import {SystemService} from '../../system.service';
wangqinghua's avatar
wangqinghua committed
import {NzMessageService, NzTreeNode} from 'ng-zorro-antd';
import {LayoutService} from '../../../layouts/layout.service';
wangqinghua's avatar
wangqinghua committed
import {CommonService} from '../../../shared/common/common.service';
wangqinghua's avatar
wangqinghua committed

@Component({
    selector: 'smart-role',
    templateUrl: './role.component.html',
    styles: []
})
export class RoleComponent implements OnInit {
    @Output() add = new EventEmitter<any>();

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

    nodes;
    nodeList;
wangqinghua's avatar
wangqinghua committed
    roleId;
wangqinghua's avatar
wangqinghua committed

    constructor(private fb: FormBuilder, private message: NzMessageService,
wangqinghua's avatar
wangqinghua committed
                private systemSer: SystemService,private layoutSer:LayoutService,private commonSer:CommonService) {
wangqinghua's avatar
wangqinghua committed
    }

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

    ininForm(){
wangqinghua's avatar
wangqinghua committed
        this.validateForm = this.fb.group({
            name: [null, [Validators.required]],
            status: [null, [Validators.required]],
wangqinghua's avatar
wangqinghua committed
            comment: [null, [Validators.required]],
wangqinghua's avatar
wangqinghua committed
        });
    }

wangqinghua's avatar
wangqinghua committed
    //获取菜单栏
    getMenu(){
wangqinghua's avatar
wangqinghua committed
        this.layoutSer.getAllMenu().subscribe(
wangqinghua's avatar
wangqinghua committed
            (res)=>{
                if(res.errCode == 10000){
wangqinghua's avatar
wangqinghua committed
                    this.menuList =this.commonSer.listToTree('id','parentId',res.data);
wangqinghua's avatar
wangqinghua committed
                    this.menuList.forEach(res => {
                        res.title = res.name;
                        res.key = res.id;
                        res.children.forEach((child)=>{
                            child.title = child.name;
                            child.key = child.id;
                            child.isLeaf = true;
                        })
                    });
                    this.toNode(this.menuList);
                }
            }
        )
    }

    toNode(data) {
        this.nodes = data.map(res => {
            return new NzTreeNode(res);
        });
    }

wangqinghua's avatar
wangqinghua committed
    //获取所有分组

wangqinghua's avatar
wangqinghua committed
    showAddModal(): void {
        this.title = '新增角色';
wangqinghua's avatar
wangqinghua committed
        this.isVisible = true;
    }

wangqinghua's avatar
wangqinghua committed
    showEditModal(id){
        this.title = "编辑角色";
        this.isVisible = true;
wangqinghua's avatar
wangqinghua committed
        this.roleId = id;
wangqinghua's avatar
wangqinghua committed
        this.systemSer.getRole(id).subscribe(
            (res)=>{
                if(res.errCode == 10000){
wangqinghua's avatar
wangqinghua committed
                    const data = res.data.role;
wangqinghua's avatar
wangqinghua committed
                    data.status += "";
                    this.validateForm.patchValue(data);
                }
            }
        )
    }

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

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

        if(this.title == "新增角色"){
            this.create();
        }
        if(this.title == "编辑角色"){
            this.update();
        }
    }

    //新增
    create(){
wangqinghua's avatar
wangqinghua committed
        const data = {
            role:{
                name:this.validateForm.value.name,
                status:this.validateForm.value.status,
wangqinghua's avatar
wangqinghua committed
                comment:this.validateForm.value.comment,
wangqinghua's avatar
wangqinghua committed
            },
wangqinghua's avatar
wangqinghua committed
            modules:[],
            resources:[]
wangqinghua's avatar
wangqinghua committed
        };
        this.systemSer.addRole(data).subscribe(
wangqinghua's avatar
wangqinghua committed
            (res) => {
                if (res.errCode == 10000) {
                    this.isVisible = false;
                    this.add.emit();
wangqinghua's avatar
wangqinghua committed
                    this.ininForm();
                    this.message.success('新增成功');
                }else{
                    this.message.error(res.errMsg);
                }
            }
        );
    }

    //编辑
    update(){
        const data = {
            role:{
                id:this.roleId,
                name:this.validateForm.value.name,
                status:this.validateForm.value.status,
                comment:this.validateForm.value.comment,
            },
            modules:[],
            resources:[]
        };
        this.systemSer.editRole(data).subscribe(
            (res) => {
                if (res.errCode == 10000) {
                    this.isVisible = false;
                    this.add.emit();
                    this.ininForm();
                    this.message.success('修改成功');
                }else{
                    this.message.error(res.errMsg);
wangqinghua's avatar
wangqinghua committed
                }
            }
        );
    }

wangqinghua's avatar
wangqinghua committed
    selectCheckTree(e){

    }

    mouseAction(type,e){}
wangqinghua's avatar
wangqinghua committed
}