diff --git a/src/app/core/guards/auth.guard.ts b/src/app/core/guards/auth.guard.ts index eb319233..7f5382db 100644 --- a/src/app/core/guards/auth.guard.ts +++ b/src/app/core/guards/auth.guard.ts @@ -1,5 +1,5 @@ /* - * @Description : + * @Description : * @Version : 1.0 * @Author : Shiming * @Date : 2022-01-25 16:03:45 @@ -28,39 +28,56 @@ import { Observable, of } from 'rxjs'; import { delay, map, switchMap, tap } from 'rxjs/operators'; @Injectable() -export class AuthGuard implements CanActivate, CanActivateChild { +export class AuthGuard extends ACLGuard { constructor( - private srv: ACLService, + srv: ACLService, + public srv1: ACLService, private baseService: BaseService, private menuService: MenuService, - private router: Router, - private injector: Injector - ) {} + router: Router, + private inject: Injector + ) { + super(srv, router, inject); + } - canActivate(route: ActivatedRouteSnapshot, _state: RouterStateSnapshot | null): Observable { + canActivate(route: ActivatedRouteSnapshot, _state: RouterStateSnapshot): Observable { if (Object.keys(route.params)?.length > 0 || !route.routeConfig?.path) { - return this.handle(); + return this.handle(route, _state, 1); } else { - return this.handle(_state?.url); + return this.handle(route, _state, 1, _state?.url); } } canActivateChild(childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable { - return this.handle(this.settingRoute(childRoute.params, state.url)); + return this.handle(childRoute, state, 2, this.settingRoute(childRoute.params, state.url)); } - private handle(route?: string): Observable { - if (!route) { - return of(true); + private handle(route: ActivatedRouteSnapshot, state: RouterStateSnapshot, type: 1 | 2, router?: string): Observable { + if (!router) { + if (type === 1) { + return super.canActivate(route, state); + } else { + return super.canActivateChild(route, state); + } } - return this.baseService.request('/api/mdc/cuc/functionButton/getUserFunctionButton', { link: route }).pipe( + // console.log(route, state, type, router); + + return this.baseService.request('/api/mdc/cuc/functionButton/getUserFunctionButton', { link: router }).pipe( switchMap(res => { if (res) { - this.srv.setAbility(res.permissionsCodeList || []); + // if (router === '/ticket/invoice-requested') { + // this.srv1.setAbility(['TICKET-INVOICE-REQUESTED-list']); + // } else { + // this.srv1.setAbility(res.abilities || []); + // } + this.srv1.setAbility(res.abilities || []); this.menuService.resume(); } - - return of(true); + if (type === 1) { + return super.canActivate(route, state); + } else { + return super.canActivateChild(route, state); + } }) ); } diff --git a/src/app/core/guards/token.guard.ts b/src/app/core/guards/token.guard.ts index 061317cf..c043a978 100644 --- a/src/app/core/guards/token.guard.ts +++ b/src/app/core/guards/token.guard.ts @@ -1,5 +1,5 @@ import { Inject, Injectable, Injector } from '@angular/core'; -import { ActivatedRouteSnapshot, Router, RouterStateSnapshot } from '@angular/router'; +import { ActivatedRouteSnapshot, CanActivate, CanActivateChild, Router, RouterStateSnapshot } from '@angular/router'; import { sysConf } from '@conf/sys.conf'; import { CoreService } from '@core'; import { ACLGuard, ACLService } from '@delon/acl'; @@ -7,10 +7,8 @@ import { EAUserService } from '@shared'; import { Observable, of } from 'rxjs'; @Injectable() -export class EATokenGuard extends ACLGuard { - constructor(srv: ACLService, router: Router, private eaUserSrv: CoreService, private router2: Router, private inject: Injector) { - super(srv, router, inject); - } +export class EATokenGuard implements CanActivate, CanActivateChild { + constructor(srv: ACLService, router: Router, private eaUserSrv: CoreService, private router2: Router, private inject: Injector) {} canActivate(route: ActivatedRouteSnapshot, _state: RouterStateSnapshot | null): Observable { const canOpen = this.eaUserSrv.loginStatus; @@ -22,7 +20,7 @@ export class EATokenGuard extends ACLGuard { }); return of(!canOpen); } - return super.canActivate(route, _state); + return of(true); } canActivateChild(childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable { @@ -35,6 +33,6 @@ export class EATokenGuard extends ACLGuard { }); return of(!canOpen); } - return super.canActivateChild(childRoute, state); + return of(true); } } diff --git a/src/app/routes/sys-setting/components/role-management/edit/edit.component.html b/src/app/routes/sys-setting/components/role-management/edit/edit.component.html index d10a8c6f..6b382452 100644 --- a/src/app/routes/sys-setting/components/role-management/edit/edit.component.html +++ b/src/app/routes/sys-setting/components/role-management/edit/edit.component.html @@ -9,8 +9,8 @@ + [roleId]="i.id" [isAuthorityIdDTOList]="roleInfoData.authority || []" + [authorityAssistId]="roleInfoData.authorityAssistId || []"> diff --git a/src/app/routes/sys-setting/components/role-management/edit/edit.component.ts b/src/app/routes/sys-setting/components/role-management/edit/edit.component.ts index 89a1a409..966a809e 100644 --- a/src/app/routes/sys-setting/components/role-management/edit/edit.component.ts +++ b/src/app/routes/sys-setting/components/role-management/edit/edit.component.ts @@ -100,9 +100,10 @@ export class SettingRoleEditComponent implements OnInit { id: this.i.id }; this.service.request(this.service.$api_getRoleInfo, params).subscribe(res => { - this.roleInfoData = res; - this.roleInfoData.authority = res.authority || []; - this.roleInfoData.authorityAssistId = res.authorityAssistId || []; + if (res) { + this.roleInfoData = res; + } + if (this.source === '') { this.initSF(); } @@ -121,14 +122,12 @@ export class SettingRoleEditComponent implements OnInit { // this.service.msgSrv.warning('请选择权限!'); // return; // } - console.log(this.menu.nzTreeComponent.getCheckedNodeList()); - const selectedFun = this.menu?.nzTreeComponent?.getCheckedNodeList()?.map(node => ({ authorityId: node.key })); - const authorityAssistId = selectedFun?.map(node => node.authorityId); + const auths = this.menu?.washTree(); const params: any = { id: this.i.id, ...this.sf.value, - authority: selectedFun, - authorityAssistId: authorityAssistId + authority: auths.authority, + authorityAssistId: auths.authorityAssistId }; // if (this.sf) { // this.appList.forEach(item => { diff --git a/src/app/routes/sys-setting/components/role-management/menu/menu.component.ts b/src/app/routes/sys-setting/components/role-management/menu/menu.component.ts index 4f0d30da..806e2da6 100644 --- a/src/app/routes/sys-setting/components/role-management/menu/menu.component.ts +++ b/src/app/routes/sys-setting/components/role-management/menu/menu.component.ts @@ -1,7 +1,7 @@ -import { ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnInit, Output, ViewChild } from '@angular/core'; +import { ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core'; import { ModalHelper, _HttpClient } from '@delon/theme'; import { EAEnvironmentService } from '@shared'; -import { NzFormatEmitEvent, NzTreeNodeOptions } from 'ng-zorro-antd/core/tree'; +import { NzFormatEmitEvent, NzTreeNode, NzTreeNodeOptions } from 'ng-zorro-antd/core/tree'; import { NzTreeComponent } from 'ng-zorro-antd/tree'; import { SystemService } from '../../../services/system.service'; import { Funcs } from './funcs'; @@ -11,9 +11,9 @@ import { Funcs } from './funcs'; templateUrl: './menu.component.html', styleUrls: ['menu.less'] }) -export class SettingMenuComponent implements OnInit { +export class SettingMenuComponent implements OnInit, OnChanges { @ViewChild('nzTreeComponent', { static: false }) nzTreeComponent!: NzTreeComponent; - origin: any = { buttonInfoList: Funcs[0].children, dictList: Funcs[0].children }; + origin: any = { buttonInfoList: [], dictList: [] }; node: any = {}; authority: any[] = []; defaultSelectedKeys: any[] = []; @@ -31,12 +31,15 @@ export class SettingMenuComponent implements OnInit { constructor(public service: SystemService, private cdr: ChangeDetectorRef, private envSrv: EAEnvironmentService) { this.getAllFunction(); } - - ngOnInit() { - if (this.type === 'edit') { - this.authority = this.isAuthorityIdDTOList; + ngOnChanges(changes: SimpleChanges): void { + if (changes.isAuthorityIdDTOList) { + if (this.type === 'edit') { + this.authority = this.isAuthorityIdDTOList || []; + } } } + + ngOnInit() {} getAllFunction() { this.service .request(this.service.$api_getAllFunctionInfoByAppId, { appId: this.envSrv.env.appId }, 'POST', true, 'FORM') @@ -51,7 +54,7 @@ export class SettingMenuComponent implements OnInit { this.cdr.detectChanges(); }); } - addAuthority(origin: { id: any; all: any }, node: { buttonInfoList: any[] }, item?: { checked: any; id: any }) { + addAuthority(origin: { id: any; all: any }, node: { buttonInfoList: any[] }, item?: { checked: any; functionButtonId: any }) { if (this.authority.length && this.authority.filter(authItem => authItem.authorityId === origin.id).length) { // 判断此菜单权限是否已经存在权限列表中 // 当前操作菜单id存在权限列表里 @@ -61,14 +64,14 @@ export class SettingMenuComponent implements OnInit { if (item) { // 单选 if (item.checked) { - if (menuItem.buttonAuthorityIds.indexOf(item.id) === -1) { + if (menuItem.buttonAuthorityIds.indexOf(item.functionButtonId) === -1) { // 如果该按钮在数据权限数组中不存在 - menuItem.buttonAuthorityIds.push(item.id); + menuItem.buttonAuthorityIds.push(item.functionButtonId); } } else { if (menuItem.buttonAuthorityIds && menuItem.buttonAuthorityIds.length) { menuItem.buttonAuthorityIds.forEach((btnItem: any, index: any) => { - if (btnItem === item.id) { + if (btnItem === item.functionButtonId) { menuItem.buttonAuthorityIds.splice(index, 1); } }); @@ -99,7 +102,7 @@ export class SettingMenuComponent implements OnInit { const buttonAuthorityIds = []; if (item) { // 全选 - buttonAuthorityIds.push(item.id); + buttonAuthorityIds.push(item.functionButtonId); } else { node.buttonInfoList.forEach((nodeItem: { id: any; checked: boolean }) => { if (origin.all) { @@ -110,7 +113,8 @@ export class SettingMenuComponent implements OnInit { } const obj: any = { authorityId: origin.id, - buttonAuthorityIds + buttonAuthorityIds, + dataAuthority: [] }; this.authority.push(obj); } @@ -238,46 +242,44 @@ export class SettingMenuComponent implements OnInit { }); } nzEvent(event: any): void { - const ele = event.event.target as HTMLElement; this.origin = event.node.origin; this.node = event.node.origin; if (!event.node.origin.isLeaf) { event.node.isExpanded = !event.node.isExpanded; } else { - // this.initButtonList(event.node.key, event.node.origin); + this.initButtonList(event.node.key, event.node.origin); // this.initDictList(event.node.key, event.node.origin); } } washTree() { - console.log(this.nzTreeComponent.getCheckedNodeList()); - - // const authorityMenu: any[] = []; // this.authority - // const tempAuthorityIdDTOListMenu: any[] = []; - // const checkedNode: any = this.nzTreeComponent.getCheckedNodeList(); - // const halfCheckedNode: any = this.nzTreeComponent.getHalfCheckedNodeList(); - // this.authorityAssistId = []; - // halfCheckedNode.forEach((item: { key: any }) => { - // authorityMenu.push({ authorityId: item.key }); - // tempAuthorityIdDTOListMenu.push(item.key); - // }); - // this.overWashTree(checkedNode, tempAuthorityIdDTOListMenu, authorityMenu); - // if (this.authority && this.authority.length) { - // this.authority.forEach(item => { - // if (tempAuthorityIdDTOListMenu.indexOf(item.authorityId) !== -1) { - // tempAuthorityIdDTOListMenu.forEach((oldItem, oldIndex) => { - // if (oldItem === item.authorityId) { - // authorityMenu[oldIndex] = item; - // } - // }); - // } - // }); - // } - // const result = { - // authority: authorityMenu, - // authorityAssistId: this.authorityAssistId - // }; - // this.changeData.emit(result); + const authorityMenu: any[] = []; // this.authority + const tempAuthorityIdDTOListMenu: any[] = []; + const checkedNode: any = this.nzTreeComponent.getCheckedNodeList(); + const halfCheckedNode: any = this.nzTreeComponent.getHalfCheckedNodeList(); + this.authorityAssistId = []; + halfCheckedNode.forEach((item: { key: any }) => { + authorityMenu.push({ authorityId: item.key }); + tempAuthorityIdDTOListMenu.push(item.key); + }); + this.overWashTree(checkedNode, tempAuthorityIdDTOListMenu, authorityMenu); + if (this.authority && this.authority.length) { + this.authority.forEach(item => { + if (tempAuthorityIdDTOListMenu.indexOf(item.authorityId) !== -1) { + tempAuthorityIdDTOListMenu.forEach((oldItem, oldIndex) => { + if (oldItem === item.authorityId) { + authorityMenu[oldIndex] = item; + } + }); + } + }); + } + const result = { + authority: authorityMenu, + authorityAssistId: this.authorityAssistId + }; + this.changeData.emit(result); + return result; } overWashTree(children: any[], tempAuthorityIdDTOListMenu: any[], authorityMenu: any[]) { children.forEach((item: any) => { @@ -315,9 +317,9 @@ export class SettingMenuComponent implements OnInit { // 如果当前菜单Id等于暂存权限数组的Id if (item.buttonAuthorityIds && item.buttonAuthorityIds.length) { // 如果当前菜单Id权限数组不为空 - origin.buttonInfoList.forEach((btnItem: { id: any; checked: boolean }) => { + origin.buttonInfoList.forEach((btnItem: { functionButtonId: any; checked: boolean }) => { // 判断已有权限id是否存在 - if (item.buttonAuthorityIds.indexOf(btnItem.id) !== -1) { + if (item.buttonAuthorityIds.indexOf(btnItem.functionButtonId) !== -1) { btnItem.checked = true; } else { btnItem.checked = false; diff --git a/src/app/routes/sys-setting/services/system.service.ts b/src/app/routes/sys-setting/services/system.service.ts index a3191854..fd765088 100644 --- a/src/app/routes/sys-setting/services/system.service.ts +++ b/src/app/routes/sys-setting/services/system.service.ts @@ -164,7 +164,7 @@ export class SystemService extends BaseService { $api_getRoleTemplateInfo: string = ''; - $api_getFunctionButtonInfo: string = ''; + $api_getFunctionButtonInfo: string = '/api/mdc/cuc/functionButton/getFunctionButtonByFunctionId'; $api_getFunctionDataInfo: string = ''; $api_getAppList: string = ''; $api_getRoleTemplateListByAppId: string = ''; diff --git a/src/app/routes/ticket-management/ticket-management-routing.module.ts b/src/app/routes/ticket-management/ticket-management-routing.module.ts index ea2145f5..c420a6a8 100644 --- a/src/app/routes/ticket-management/ticket-management-routing.module.ts +++ b/src/app/routes/ticket-management/ticket-management-routing.module.ts @@ -15,7 +15,7 @@ import { InvoiceRequestedComponent } from './components/invoice-requested/invoic import { InvoicedListComponent } from './components/invoiced-list/invoiced-list.component'; const routes: Routes = [ - { path: 'invoice-requested', component: InvoiceRequestedComponent }, + { path: 'invoice-requested', component: InvoiceRequestedComponent, data: { guard: { ability: ['TICKET-INVOICE-REQUESTED-list'] } } }, { path: 'invoice-requested/detail/:id', component: InvoiceRequestedDetailComponent }, { path: 'invoice-list', component: InvoicedListComponent }, { path: 'invoice-list/detail/:id', component: InvoiceDetailComponent }, @@ -28,7 +28,7 @@ const routes: Routes = [ { path: 'input-invoice', component: InputInvoiceComponent }, { path: 'input-invoice/detail/:id', component: InputInvoiceDetailComponent }, { path: 'input-invoice/edit/:id', component: EditCollectionInvoiceComponent }, - { path: 'express-info', component: ExpressInfoComponent }, + { path: 'express-info', component: ExpressInfoComponent } ]; @NgModule({ diff --git a/src/app/routes/vehicle/vehicle-routing.module.ts b/src/app/routes/vehicle/vehicle-routing.module.ts index cbd9abcf..9f3dad48 100644 --- a/src/app/routes/vehicle/vehicle-routing.module.ts +++ b/src/app/routes/vehicle/vehicle-routing.module.ts @@ -8,8 +8,6 @@ */ import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; -import { ACLGuard, ACLGuardType } from '@delon/acl'; -import { AuthGuard } from 'src/app/core/guards/auth.guard'; import { VehicleComponentsAuditComponent } from './components/audit/audit.component'; import { VehicleComponentsAuditDetailComponent } from './components/audit/detail/detail.component'; import { VehicleComponentsListDetailComponent } from './components/list/detail/detail.component'; diff --git a/src/index.html b/src/index.html index 08a1d33c..3caa1964 100644 --- a/src/index.html +++ b/src/index.html @@ -63,6 +63,20 @@ window._AMapSecurityConfig = { securityJsCode: 'dde4610c3bd04617b99fb55ba5adbe9d', } + + var zoom = window.devicePixelRatio || window.screen.deviceXDPI / window.screen.logicalXDPI; + if (!!window.ActiveXObject || "ActiveXObject" in window) { + if (zoom != 1 && zoom !=2 && zoom !=3) { + alert('系统检测到您的设备对显示进行放大,可能导致页面显示不全,请调整后打开/或使用其他浏览器!') + } + } else { + if(document.body.clientWidth>=1280){ + if (zoom != 1 && zoom !=2 && zoom !=3) { + var c = document.querySelector('body'); + c.style.zoom = -0.62 * zoom + 1.65; + } + } + } \ No newline at end of file