import { Component, OnInit, ViewChild } from '@angular/core'; import { STComponent, STColumn, STRequestOptions, STChange } from '@delon/abc/st'; import { ACLService } from '@delon/acl'; import { SFComponent, SFSchema } from '@delon/form'; import { Menu, ModalHelper } from '@delon/theme'; import { EAEnvironmentService } from '@shared'; import { NzSafeAny } from 'ng-zorro-antd/core/types'; import { NzModalService } from 'ng-zorro-antd/modal'; import { SettingRoleEditComponent } from 'src/app/routes/sys-setting/components/role-management/edit/edit.component'; import { MenuManagerMenusortComponent } from '../menusort/menusort.component'; import { MenuManagerService } from './../../services/menu-manager.service'; import { MenuModalComponent } from './menu-modal/menu-modal.component'; @Component({ selector: 'app-menu-manager-components-index', templateUrl: './index.component.html', styleUrls: ['./index.component.less', '../../../commom/less/box.less'] }) export class MenuManagerComponentsIndexComponent implements OnInit { selectedPlatform!: { name: string; appId: string; enName: string }; platforms: Array = [ { name: '货主PC', appId: 'A48F72F0A304427F921794BAD86B3522', enName: 'tms-smc-web' }, { name: '运营后台', appId: this.envSrv.env.appId, enName: 'tms-obc-web' } ]; @ViewChild('sf', { static: false }) sf!: SFComponent; searchSchema: SFSchema = { properties: { roleName: { type: 'string', title: '菜单名称', ui: { placeholder: '请输入' } } } }; mapOfExpandedData: { [key: string]: any[] } = {}; listOfMapData: any[] = []; isShowBackEND = false; isShowFre = false; constructor( private envSrv: EAEnvironmentService, public service: MenuManagerService, private modal: NzModalService, private modalHelper: ModalHelper, private acl: ACLService ) { const acls = acl.data.abilities || []; this.isShowBackEND = acl.data.full || !!acls.find(acl => acl === 'MENU-INDEX-obclist'); this.isShowFre = acl.data.full || !!acls.find(acl => acl === 'MENU-INDEX-smclist'); this.initData(); } ngOnInit(): void {} initData(): void { this.selectedPlatform = this.isShowFre ? this.platforms[0] : this.platforms[1]; this.loadMemu(this.selectedPlatform.appId); } loadMemu(appId: string) { this.service.request(this.service.$api_get_all, { appId }, 'POST', false).subscribe(res => { if (res) { this.listOfMapData = res; this.listOfMapData.forEach(item => { this.mapOfExpandedData[item.key] = this.service.convertTreeToList(item); }); // console.log(this.listOfMapData, this.mapOfExpandedData); } }); } changeMemu(key: number) { this.selectedPlatform = this.platforms[key]; this.loadMemu(this.selectedPlatform.appId); } menuAction(nzTitle: string, item?: any, parentId?: string, isDisabled = false) { const modal = this.modal.create({ nzTitle, nzContent: MenuModalComponent, nzWidth: 900, nzComponentParams: item ? { formData: { ...item }, isDisabled, params: { parentId, appId: this.selectedPlatform.appId } } : { formData: { id: null }, params: { parentId, appId: this.selectedPlatform.appId } }, nzFooter: null }); modal.afterClose.subscribe(res => { if (res) { this.loadMemu(this.selectedPlatform.appId); } }); } deleteAction(item: any) { this.modal.error({ nzTitle: '确认删除?', nzClosable: false, nzCancelText: '取消', nzOnOk: () => { this.service.request(this.service.$api_del_many, [item.id]).subscribe(res => { if (res) { this.service.msgSrv.success('删除菜单成功'); this.loadMemu(this.selectedPlatform.appId); } }); } }); } /** * 重置表单 */ resetSF() { this.sf.reset(); } menuImport(index: number) { if (this.listOfMapData?.length > 0) { this.service.msgSrv.warning('请先清空菜单'); return; } if (!this.selectedPlatform) { return; } this.service.menuImport(this.selectedPlatform.enName, this.selectedPlatform.appId); } delMenu(type: number) { this.modal.confirm({ nzTitle: '删除确认', nzContent: `是否确认删除?`, nzOnOk: () => { this.service.getMenuByAppID(type === 0 ? 'A48F72F0A304427F921794BAD86B3522' : this.envSrv.env.appId); } }); } menuSort() { const dialogData = { appId: this.selectedPlatform.appId }; this.modalHelper.create(MenuManagerMenusortComponent, { i: dialogData }, { size: 900 }).subscribe((res: any) => { if (res) { console.log('a'); this.loadMemu(this.selectedPlatform.appId); } }); } }