Skip to content
select-person.component.ts 5.95 KiB
Newer Older
wangqinghua's avatar
wangqinghua committed
import {Component, EventEmitter, OnInit, Output} from '@angular/core';
import {NzTreeNode} from 'ng-zorro-antd';
import {SystemService} from '../../system/system.service';
wangqinghua's avatar
wangqinghua committed
import {CommonService} from '../../shared/common/common.service';
wangqinghua's avatar
wangqinghua committed

@Component({
wangqinghua's avatar
wangqinghua committed
    selector: 'smart-select-person',
    templateUrl: './select-person.component.html',
wangqinghua's avatar
wangqinghua committed
    styles: [
wangqinghua's avatar
wangqinghua committed
            `
            .p-list, .p-list-title {
                display: flex;
                align-items: center;
            }

            .p-list > span:last-child,
            .p-list-title > span:last-child {
                margin-left: auto;
                margin-right: 15px;
            }

            .p-list {
                padding: 8px 15px 0 15px;
            }

            .p-list + .p-list {
wangqinghua's avatar
wangqinghua committed
                margin-top: 8px;
            }
wangqinghua's avatar
wangqinghua committed

            .p-div {
                height: 400px;
                overflow-y: scroll;
            }
wangqinghua's avatar
wangqinghua committed
        `
    ]
wangqinghua's avatar
wangqinghua committed
})
export class SelectPersonComponent implements OnInit {
wangqinghua's avatar
wangqinghua committed
    @Output() done = new EventEmitter();
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    isVisible = false;
    title;
    groupList;
    userList;
    selectList = [];
    nodes: any[];
    allChecked = false;
    disabledButton = true;
    indeterminate = false;
wangqinghua's avatar
wangqinghua committed
    roleId;
wangqinghua's avatar
wangqinghua committed
    deleteList = [];
wangqinghua's avatar
wangqinghua committed

    pageNum = 1;
wangqinghua's avatar
wangqinghua committed
    pageSize = 5;
    totalNum;
wangqinghua's avatar
wangqinghua committed

    organizationId = null;
wangqinghua's avatar
wangqinghua committed
    displayData: Array<{ key1: string; key2: number; key3: string; key4: string; checked: boolean }> = [];
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    constructor(private systemSer: SystemService, private commonSer: CommonService) {
wangqinghua's avatar
wangqinghua committed
    }

    checkAll(value: boolean): void {
wangqinghua's avatar
wangqinghua committed
        this.displayData.forEach(data => {
wangqinghua's avatar
wangqinghua committed
            data.checked = value;
wangqinghua's avatar
wangqinghua committed
            if (value) {
wangqinghua's avatar
wangqinghua committed
                this.selectList.push(data);
wangqinghua's avatar
wangqinghua committed
            } else {
wangqinghua's avatar
wangqinghua committed
                this.selectList = [];
            }
        });
wangqinghua's avatar
wangqinghua committed
        this.refreshStatus();
    }

    currentPageDataChange($event: Array<{ key1: string; key2: number; key3: string; key4: string; checked: boolean }>): void {
        this.displayData = $event;
    }

wangqinghua's avatar
wangqinghua committed
    selectItem(item, e) {
        if (e) {
wangqinghua's avatar
wangqinghua committed
            this.selectList.push(item);
wangqinghua's avatar
wangqinghua committed
            this.deleteList.forEach((value, index) => {
                if (value.id == item.id) {
                    this.deleteList.splice(index, 1);
wangqinghua's avatar
wangqinghua committed
                }
wangqinghua's avatar
wangqinghua committed
            });
        } else {
            this.selectList.forEach((value, index) => {
                if (value.id == item.id) {
                    this.selectList.splice(index, 1);
wangqinghua's avatar
wangqinghua committed
                }
wangqinghua's avatar
wangqinghua committed
            });
wangqinghua's avatar
wangqinghua committed
            if (item.isRole == 1) {
wangqinghua's avatar
wangqinghua committed
                this.deleteList.push(item);
            }
wangqinghua's avatar
wangqinghua committed
        }
wangqinghua's avatar
wangqinghua committed
        this.refreshStatus();
wangqinghua's avatar
wangqinghua committed
    }

wangqinghua's avatar
wangqinghua committed
    deleteSelect(index) {
        if (this.selectList[index].isRole == 1) {
wangqinghua's avatar
wangqinghua committed
            this.deleteList.push(this.selectList[index]);
        }
wangqinghua's avatar
wangqinghua committed
        this.selectList.splice(index, 1);
wangqinghua's avatar
wangqinghua committed
    }

    refreshStatus(): void {
        const allChecked = this.displayData.every(value => value.checked === true);
        const allUnChecked = this.displayData.every(value => !value.checked);
        this.allChecked = allChecked;
        this.indeterminate = (!allChecked) && (!allUnChecked);
        this.disabledButton = !this.userList.some(value => value.checked);
    }

    ngOnInit() {

    }

wangqinghua's avatar
wangqinghua committed
    init() {
wangqinghua's avatar
wangqinghua committed
        this.selectList = [];
wangqinghua's avatar
wangqinghua committed
        this.deleteList = [];
wangqinghua's avatar
wangqinghua committed
        this.allChecked = false;
        this.disabledButton = true;
        this.indeterminate = false;
    }

wangqinghua's avatar
wangqinghua committed
    showModal(title, roleId) {
wangqinghua's avatar
wangqinghua committed
        this.getGroup();
        this.isVisible = true;
        this.title = title;
wangqinghua's avatar
wangqinghua committed
        this.roleId = roleId;
wangqinghua's avatar
wangqinghua committed
        this.getUser();
wangqinghua's avatar
wangqinghua committed
    }

wangqinghua's avatar
wangqinghua committed
    //翻页
wangqinghua's avatar
wangqinghua committed
    changePage($event) {
        if ($event > 0) {
            this.pageNum = $event;
            this.getUser();
        }
wangqinghua's avatar
wangqinghua committed
    }

wangqinghua's avatar
wangqinghua committed
    getUser() {
        const data = {
wangqinghua's avatar
wangqinghua committed
            'search': null,
            'organizationId': this.organizationId = this.organizationId == '' ? null : this.organizationId,
            'pageNum': this.pageNum,
            'pageSize': this.pageSize
wangqinghua's avatar
wangqinghua committed
        };
        this.systemSer.user(data).subscribe(
            (res) => {
wangqinghua's avatar
wangqinghua committed
                this.userList = res.data.data;
wangqinghua's avatar
wangqinghua committed
                this.totalNum = res.data.totalCount;
wangqinghua's avatar
wangqinghua committed
            }
        );
    }

wangqinghua's avatar
wangqinghua committed
    getOrg(e) {
        this.organizationId = e.node.key;
        this.getUser();
    }

wangqinghua's avatar
wangqinghua committed
    //组织信息
    getGroup() {
        this.systemSer.organization().subscribe(
            (res) => {
                this.groupList = res.data;
wangqinghua's avatar
wangqinghua committed
                if (this.title == '授予用户') {
wangqinghua's avatar
wangqinghua committed
                    this.getUserByOrgIdAboutRole(this.groupList[0].id);
                }
wangqinghua's avatar
wangqinghua committed
                this.groupList.forEach(
                    res => {
                        res.title = res.name;
                        res.key = res.id;
                    }
                );
                this.nodeTree();
            }
        );
    }

wangqinghua's avatar
wangqinghua committed
    //授予用户
wangqinghua's avatar
wangqinghua committed
    getUserByOrgIdAboutRole(orgId) {
wangqinghua's avatar
wangqinghua committed
        const data = {
wangqinghua's avatar
wangqinghua committed
            orgId: orgId,
            roleId: this.roleId
        };
wangqinghua's avatar
wangqinghua committed
        this.systemSer.getUserByOrgIdAboutRole(data).subscribe(
wangqinghua's avatar
wangqinghua committed
            (res) => {
wangqinghua's avatar
wangqinghua committed
                this.userList = res.data;
wangqinghua's avatar
wangqinghua committed
                this.userList.forEach(e => {
                    if (e.isRole == 1) {
wangqinghua's avatar
wangqinghua committed
                        e.checked = true;
                        this.selectList.push(e);
                    }
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
    nodeTree() {
wangqinghua's avatar
wangqinghua committed
        const tree = this.commonSer.listToTree('id', 'parentId', this.groupList,);
wangqinghua's avatar
wangqinghua committed
        const list = tree.map(res => {
            return new NzTreeNode(res);
        });
        this.nodes = list;
    }

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

wangqinghua's avatar
wangqinghua committed
    handEditleOk() {
        if (this.title == '授予用户') {
wangqinghua's avatar
wangqinghua committed
            const data = {
wangqinghua's avatar
wangqinghua committed
                'select': this.selectList,
                'delete': this.deleteList
            };
wangqinghua's avatar
wangqinghua committed
            this.done.emit(data);
wangqinghua's avatar
wangqinghua committed
        } else {
wangqinghua's avatar
wangqinghua committed
            this.done.emit(this.selectList);
wangqinghua's avatar
wangqinghua committed
        }
wangqinghua's avatar
wangqinghua committed
        this.isVisible = false;
        this.init();
    }
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    //清空选择
wangqinghua's avatar
wangqinghua committed
    clearList() {
wangqinghua's avatar
wangqinghua committed
        this.selectList = [];
    }

wangqinghua's avatar
wangqinghua committed
}