123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314 |
- import { Component, OnInit, ViewChild } from '@angular/core';
- import { ActivatedRoute, RouterOutlet } from '@angular/router';
- import { CompTableListComponent } from '../../../app/comp-table/comp-table-list/comp-table-list.component';
- import _Role from '../../../schemas/_Role';
- // import { TranslateService } from '@ngx-translate/core';
- import * as Parse from 'parse';
- import { CommonModule } from '@angular/common';
- import { Department } from '../../../schemas/Department';
- import { NzSpaceModule } from 'ng-zorro-antd/space';
- import { NzPageHeaderModule } from 'ng-zorro-antd/page-header';
- import { NzBreadCrumbModule } from 'ng-zorro-antd/breadcrumb';
- import { CommonCompModule } from '../../../services/common.modules';
- import { NzModalModule } from 'ng-zorro-antd/modal';
- import {
- NzFormatEmitEvent,
- NzTreeModule,
- NzTreeNode,
- } from 'ng-zorro-antd/tree';
- import {
- NzContextMenuService,
- NzDropdownMenuComponent,
- } from 'ng-zorro-antd/dropdown';
- import { NzCheckboxModule } from 'ng-zorro-antd/checkbox';
- import { NzEmptyModule } from 'ng-zorro-antd/empty';
- import { NzRadioModule } from 'ng-zorro-antd/radio';
- import { NzMessageService } from 'ng-zorro-antd/message';
- interface nodes {
- title: string;
- key: string;
- isLeaf?: boolean;
- isParent?: boolean;
- children?: Array<any>;
- }
- interface depart {
- name: string;
- id?: string;
- code?: string;
- desc?: string;
- parent?: object | any;
- branch: string;
- }
- @Component({
- selector: 'app-page-role',
- templateUrl: './page-role.component.html',
- styleUrls: ['./page-role.component.scss'],
- imports: [
- CommonModule,
- CommonCompModule,
- RouterOutlet,
- CompTableListComponent,
- NzSpaceModule,
- NzPageHeaderModule,
- NzBreadCrumbModule,
- NzTreeModule,
- NzCheckboxModule,
- NzEmptyModule,
- NzModalModule,
- NzRadioModule,
- ],
- standalone: true,
- })
- export class PageRoleComponent implements OnInit {
- @ViewChild(CompTableListComponent) list: CompTableListComponent | undefined;
- // _Role = _Role
- Department = Department;
- user: Parse.User | undefined;
- className: string | undefined;
- queryParams: any | undefined;
- fieldsArray: Array<any> | undefined;
- searchValue: string = ''; //搜索内容
- nodes: Array<nodes | any> = [];
- currentDepart: nodes | any = null;
- profiles: Array<any> = [];
- checkedShowFilter: boolean = false;
- checkedAll: boolean = false; //全选
- indeterminate = false;
- loading = false;
- isVisible: boolean = false;
- activatedNode: NzTreeNode | any; //当前选择节点
- editType: string = 'add'; //弹窗类型
- activeDepart?: Parse.Object; //当前编辑部门
- editObject: depart = {
- name: '',
- code: '',
- desc: '',
- parent: {},
- branch: '',
- };
- parentMap: Array<any> = [];
- parentList: Array<any> = [];
- constructor(
- private route: ActivatedRoute,
- private activeRoute: ActivatedRoute,
- private nzContextMenuService: NzContextMenuService,
- private message: NzMessageService,
- ) {
- this.user = Parse.User.current();
- this.className = this.Department.className;
- this.fieldsArray = this.Department.fieldsArray;
- this.queryParams = {
- where: {
- // user:this.user?.toPointer(),
- isDeleted: { $ne: true },
- },
- };
- }
- ngOnInit(): void {
- this.activeRoute.paramMap.subscribe(async (params) => {
- // let isDeleted = params.get('isDeleted');
- // if (isDeleted) {
- // this.queryParams.where['isDeleted'] = { $eq: true };
- // } else {
- // this.queryParams.where['isDeleted'] = { $ne: true };
- // }
- // this.list?.ngOnInit();
- this.nodes = await this.getDepart();
- });
- }
- async getDepart(
- parent?: string,
- searchValue?: string
- ): Promise<Array<nodes>> {
- let nodes: any = [];
- let query = new Parse.Query('Department');
- query.equalTo('parent', parent ? parent : undefined);
- searchValue && query.contains('name', searchValue);
- query.notEqualTo('isDeleted', true);
- query.select('code', 'name', 'branch', 'parent','type');
- query.descending('createdAt');
- query.limit(2000);
- let res = await query.find();
- res.forEach((item) => {
- nodes.push({
- title: item.get('name'),
- key: item.id,
- children: [],
- isParent: item.get('type') =='单位' ? true : false, //是否是最下级
- isLeaf: false,
- });
- });
- return nodes;
- }
- //添加成员
- addMember() {
- this.message.warning('权限灰度中')
- }
- //展开/合并
- async nzEvent(event: NzFormatEmitEvent): Promise<void> {
- console.log(event);
- let node: any = event.node;
- if (event.eventName === 'expand') {
- if (node.origin.isParent) {
- node.addChildren([]);
- return;
- }
- if (node?._children.length <= 0) {
- let data = await this.getDepart(node.key);
- node.addChildren(data);
- }
- console.log(this.nodes);
- } else {
- if (node.origin.isParent) {
- this.currentDepart = node.origin;
- this.getProfile();
- }
- }
- }
- async getProfile() {
- this.profiles = [];
- this.loading = true;
- let queryParams = {
- where : {
- "$or": [{
- "user": {
- "$inQuery": {
- "where": {
- "$or": [{
- "companyName": { "$eq": this.currentDepart.title}
- },
- ]
- },
- "className": "_User"
- }
- }
- }]
- }
- }
- let query = Parse.Query.fromJSON('Profile',queryParams);
- query.include('user');
- query.notEqualTo('identity', '国家级管理员');
- let r = await query.find();
- let profiles: any[] = [];
- r.forEach((item) => {
- let _item = item.toJSON();
- _item['checked'] = false;
- profiles.push(_item);
- });
- this.profiles = profiles;
- this.loading = false;
- }
- //搜索触发
- onSearch(event: NzFormatEmitEvent) {
- console.log(event);
- }
- contextMenu(
- $event: MouseEvent,
- menu: NzDropdownMenuComponent,
- node?: any
- ): void {
- console.log(node);
- this.activatedNode = node;
- this.nzContextMenuService.create($event, menu);
- }
- //删除部门
- onDelDepart() {
- this.message.warning('权限灰度中')
- }
- onAllChecked(checked: boolean): void {
- console.log(checked);
- this.profiles = this.profiles.map((item) => {
- item.checked = checked;
- return item;
- });
- this.checkedAll = checked;
- }
- onItemChecked(id: string, e: boolean) {
- let checkedAll = true;
- this.profiles = this.profiles.map((item) => {
- if (id == item.objectId) item.checked = e;
- if (!item.checked) checkedAll = false;
- return item;
- });
- this.checkedAll = checkedAll;
- }
- //新建打开弹窗
- async showModalDepart(type: string) {
- this.parentList = this.nodes;
- if (type == 'edit') {
- let query = new Parse.Query('Department');
- let r = await query.get(this.activatedNode?.key);
- this.activeDepart = r;
- this.parentMap = this.formatNode(this.activatedNode);
- if(this.activatedNode?.parentNode?.origin.key){
- this.parentList = await this.getDepart(this.activatedNode.parentNode.origin.key);
- }
- }
- this.editType = type;
- this.isVisible = true;
- }
- //格式化链
- formatNode(node: NzTreeNode): Array<any> {
- let arr = [];
- if (node.parentNode?.origin.title) {
- arr.push({
- title: node.parentNode?.origin.title,
- key: node.parentNode?.origin.key,
- });
- arr.unshift(...this.formatNode(node.parentNode));
- }
- return arr;
- }
- async onPre(data?:any,index?:number){
- if(!data){
- this.parentList = await this.getDepart();
- this.parentMap = []
- return
- }
- if(index == this.parentMap.length-1) return
- this.parentMap.splice(index || 0+1)
- this.parentList = await this.getDepart(data?.key);
- }
- //选择所属类别下级列表
- async onCheckedDepart(e: any, checked?: boolean) {
- console.log(e);
- if (checked) {
- this.editObject = {
- name: e.title,
- code: '',
- desc: '',
- parent: e,
- branch: '',
- };
- return;
- }
- this.parentMap.push({
- title: e.title,
- key: e.key,
- });
- this.parentList = await this.getDepart(e?.key);
- }
- handleOk(): void {
- this.message.warning('权限灰度中')
- this.isVisible = false;
- }
- handleCancel(): void {
- console.log('Button cancel clicked!');
- this.isVisible = false;
- this.activatedNode = undefined;
- this.parentMap = [];
- }
- /* 组织 */
- showModalOrganize(){
- this.message.warning('权限灰度中')
- }
- }
|