edit
This commit is contained in:
@ -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<boolean> {
|
||||
canActivate(route: ActivatedRouteSnapshot, _state: RouterStateSnapshot): Observable<boolean> {
|
||||
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<boolean> {
|
||||
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<boolean> {
|
||||
if (!route) {
|
||||
return of(true);
|
||||
private handle(route: ActivatedRouteSnapshot, state: RouterStateSnapshot, type: 1 | 2, router?: string): Observable<boolean> {
|
||||
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);
|
||||
}
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
@ -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<boolean> {
|
||||
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<boolean> {
|
||||
@ -35,6 +33,6 @@ export class EATokenGuard extends ACLGuard {
|
||||
});
|
||||
return of(!canOpen);
|
||||
}
|
||||
return super.canActivateChild(childRoute, state);
|
||||
return of(true);
|
||||
}
|
||||
}
|
||||
|
||||
@ -9,8 +9,8 @@
|
||||
<se-container se-container="1">
|
||||
<se label="角色权限" required [labelWidth]="120">
|
||||
<app-cuc-menu #menu (changeData)="getData($event)" [type]="i.id === 0 ? 'add' : 'edit'" [source]="source"
|
||||
[roleId]="i.id" [isAuthorityIdDTOList]="roleInfoData.authority"
|
||||
[authorityAssistId]="roleInfoData.authorityAssistId">
|
||||
[roleId]="i.id" [isAuthorityIdDTOList]="roleInfoData.authority || []"
|
||||
[authorityAssistId]="roleInfoData.authorityAssistId || []">
|
||||
</app-cuc-menu>
|
||||
</se>
|
||||
</se-container>
|
||||
|
||||
@ -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 => {
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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 = '';
|
||||
|
||||
@ -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({
|
||||
|
||||
@ -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';
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<!-- <script type="text/javascript" src='//webapi.amap.com/maps?v=2.0&key=63f9573ca55fef2b92d4ffe0c85dea8f'></script>
|
||||
<script src="//webapi.amap.com/ui/1.1/main.js?v=1.1.1"></script> -->
|
||||
Reference in New Issue
Block a user