This commit is contained in:
Taric Xin
2022-01-17 13:27:36 +08:00
parent 33ba9a0ead
commit e72b3727af
7 changed files with 74 additions and 65 deletions

View File

@ -41,7 +41,8 @@ const APPINIT_PROVIDES = [
deps: [StartupService], deps: [StartupService],
multi: true multi: true
}, },
{ provide: DEFAULT_CURRENCY_CODE, useValue: '¥' } { provide: DEFAULT_CURRENCY_CODE, useValue: '¥' },
AuthGuard
]; ];
// #endregion // #endregion
@ -54,6 +55,7 @@ import { SharedModule } from './shared/shared.module';
import { STWidgetModule } from './shared/widget/st-widget.module'; import { STWidgetModule } from './shared/widget/st-widget.module';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { registerLocaleData } from '@angular/common'; import { registerLocaleData } from '@angular/common';
import { AuthGuard } from './core/guards/auth.guard';
@NgModule({ @NgModule({
declarations: [AppComponent], declarations: [AppComponent],

View File

@ -13,41 +13,39 @@ import {
import { sysConf } from '@conf/sys.conf'; import { sysConf } from '@conf/sys.conf';
import { CoreService } from '@core'; import { CoreService } from '@core';
import { ACLGuard, ACLService } from '@delon/acl'; import { ACLGuard, ACLService } from '@delon/acl';
import { EAUserService } from '@shared'; import { MenuService } from '@delon/theme';
import { BaseService, EAUserService } from '@shared';
import { Observable, of } from 'rxjs'; import { Observable, of } from 'rxjs';
import { map } from 'rxjs/operators';
const auths = ['YUNLI-CART-SEARCH', 'YUNLI-CART-DAOCHU', 'YUNLI-CART-DETAIL']; const auths = ['YUNLI-CART-SEARCH', 'YUNLI-CART-DAOC1HU', 'YUNLI-CART-DETAIL','YUNLI-CART-AUDIT-SEARCH'];
@Injectable() @Injectable()
export class AuthGuard implements CanActivate, CanActivateChild, CanLoad { export class AuthGuard implements CanActivate, CanActivateChild, CanLoad {
constructor(srv: ACLService, router: Router, private eaUserSrv: CoreService, private router2: Router, private inject: Injector) {} constructor(private srv: ACLService, router: Router, private baseService: BaseService, private menuService: MenuService) {}
canLoad(route: Route, segments: UrlSegment[]): boolean | UrlTree | Observable<boolean | UrlTree> | Promise<boolean | UrlTree> { canLoad(route: Route, segments: UrlSegment[]): boolean | UrlTree | Observable<boolean | UrlTree> | Promise<boolean | UrlTree> {
throw true; return true;
} }
canActivate(route: ActivatedRouteSnapshot, _state: RouterStateSnapshot | null): Observable<boolean> { canActivate(route: ActivatedRouteSnapshot, _state: RouterStateSnapshot | null): Observable<boolean> {
const canOpen = this.eaUserSrv.loginStatus; return this.handle();
if (!canOpen) {
this.router2.navigate([sysConf.login_url], {
queryParams: {
returnUrl: _state?.url
}
});
return of(!canOpen);
}
return of(true);
} }
canActivateChild(childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> { canActivateChild(childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
const canOpen = this.eaUserSrv.loginStatus; return this.handle();
if (!canOpen) { }
this.router2.navigate([sysConf.login_url], {
queryParams: { private handle(): Observable<boolean> {
returnUrl: state?.url // 1
} return this.baseService.request('/api/mdc/cuc/user/getUserDetail').pipe(
}); map(_ => {
return of(!canOpen); console.log(this.srv.data);
} this.srv.setAbility(auths);
return of(true); this.menuService.resume();
console.log(this.srv.data);
return true;
})
);
} }
} }

View File

@ -92,7 +92,7 @@ export class StartupService {
enterpriseId: userData?.enterpriseId || sysConf.enterpriseId enterpriseId: userData?.enterpriseId || sysConf.enterpriseId
}); });
// ACL设置权限为全量 // ACL设置权限为全量
this.aclService.setFull(true); this.aclService.setFull(false);
// 初始化菜单 // 初始化菜单
this.menuService.add(menuData); this.menuService.add(menuData);
// 设置页面标题的后缀 // 设置页面标题的后缀

View File

@ -13,7 +13,8 @@ import { environment } from '@env/environment';
const alainConfig: AlainConfig = { const alainConfig: AlainConfig = {
st: { modal: { size: 'lg' } }, st: { modal: { size: 'lg' } },
pageHeader: { homeI18n: 'home', recursiveBreadcrumb: true }, pageHeader: { homeI18n: 'home', recursiveBreadcrumb: true },
auth: { login_url: '/dashboard' } auth: { login_url: '/passport/login' },
acl: { guard_url: '/' }
}; };
const alainModules = [AlainThemeModule.forRoot(), DelonACLModule.forRoot()]; const alainModules = [AlainThemeModule.forRoot(), DelonACLModule.forRoot()];

View File

@ -7,22 +7,15 @@
* @FilePath: \tms-obc-web\src\app\routes\usercenter\components\freight\list\list.component.html * @FilePath: \tms-obc-web\src\app\routes\usercenter\components\freight\list\list.component.html
--> -->
<!-- 页头 --> <!-- 页头 -->
<page-header-wrapper ></page-header-wrapper> <page-header-wrapper></page-header-wrapper>
<nz-card> <nz-card>
<!-- 搜索区 --> <!-- 搜索区 -->
<!-- 搜索表单 --> <!-- 搜索表单 -->
<div nz-row nzGutter="8"> <div nz-row nzGutter="8">
<!-- 查询字段小于或等于3个时不显示伸缩按钮 --> <!-- 查询字段小于或等于3个时不显示伸缩按钮 -->
<div nz-col nzSpan="24" *ngIf="queryFieldCount <= 4"> <div nz-col nzSpan="24" *ngIf="queryFieldCount <= 4">
<sf <sf #sf [schema]="schema" [ui]="ui" [mode]="'search'" [disabled]="!sf?.valid" (formSubmit)="st?.load(1)"
#sf (formReset)="resetSF()"></sf>
[schema]="schema"
[ui]="ui"
[mode]="'search'"
[disabled]="!sf?.valid"
(formSubmit)="st?.load(1)"
(formReset)="resetSF()"
></sf>
</div> </div>
<!-- [loading]="service.http.loading" --> <!-- [loading]="service.http.loading" -->
@ -33,9 +26,10 @@
<sf #sf [schema]="schema" [ui]="ui" [compact]="true" [button]="'none'"></sf> <sf #sf [schema]="schema" [ui]="ui" [compact]="true" [button]="'none'"></sf>
</div> </div>
<div nz-col [nzSpan]="_$expand ? 24 : 6" class="text-right"> <div nz-col [nzSpan]="_$expand ? 24 : 6" class="text-right">
<button nz-button nzType="primary" [nzLoading]="service.http.loading" (click)="st?.load(1)">查询</button> <button nz-button nzType="primary" [nzLoading]="service.http.loading" (click)="st?.load(1)">查询</button>
<button nz-button nzType="primary" [disabled]="service.http.loading" (click)="exportFire()">导出</button> <button nz-button nzType="primary" [disabled]="service.http.loading" (click)="exportFire()" acl
<button nz-button [disabled]="service.http.loading"(click)="resetSF()">重置</button> [acl-ability]="'YUNLI-CART-DAOCHU'">导出</button>
<button nz-button [disabled]="service.http.loading" (click)="resetSF()">重置</button>
<button nz-button nzType="link" (click)="expandToggle()"> <button nz-button nzType="link" (click)="expandToggle()">
{{ !_$expand ? '展开' : '收起' }} {{ !_$expand ? '展开' : '收起' }}
<i nz-icon [nzType]="!_$expand ? 'down' : 'up'"></i> <i nz-icon [nzType]="!_$expand ? 'down' : 'up'"></i>
@ -48,28 +42,23 @@
<!-- 数据列表 --> <!-- 数据列表 -->
<!-- [data]="service.$api_get_supplier_page" --> <!-- [data]="service.$api_get_supplier_page" -->
<st <st #st [bordered]="true" [scroll]="{ x: '1200px' }" [columns]="columns" [data]='service.$api_get_operate_list'
#st
[bordered]="true"
[scroll]="{ x: '1200px' }"
[columns]="columns"
[data]='service.$api_get_operate_list'
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }" [req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
[res]="{ reName: { list: 'data.records', total: 'data.total' }, process: dataProcess }" [res]="{ reName: { list: 'data.records', total: 'data.total' }, process: dataProcess }"
[page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }" [page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }"
[loading]="service.http.loading" [loading]="service.http.loading">
>
<ng-template st-row="carLength" let-item let-index="index"> <ng-template st-row="carLength" let-item let-index="index">
<div>{{item?.carModelLabel }}-{{item?.carLengthLabel? item?.carLengthLabel + '米' : ''}}-{{ item?.carLoad? item?.carLoad + '吨' : ''}}</div> <div>{{item?.carModelLabel }}-{{item?.carLengthLabel? item?.carLengthLabel + '米' : ''}}-{{ item?.carLoad?
item?.carLoad + '吨' : ''}}</div>
</ng-template> </ng-template>
<ng-template st-row="isSelf" let-item let-index="index"> <ng-template st-row="isSelf" let-item let-index="index">
<div> <div>
{{ item?.isSelf ? '是' : '否' }} {{ item?.isSelf ? '是' : '否' }}
</div> </div>
</ng-template> </ng-template>
<ng-template st-row="putOnRecord" let-item let-index="index"> <ng-template st-row="putOnRecord" let-item let-index="index">
<div> <div>
{{ item?.putOnRecord ? '是' : '否' }} {{ item?.putOnRecord ? '是' : '否' }}
</div> </div>
</ng-template> </ng-template>
<ng-template st-row="approvalAuditStatus" let-item let-index="index"> <ng-template st-row="approvalAuditStatus" let-item let-index="index">

View File

@ -8,23 +8,40 @@
*/ */
import { NgModule } from '@angular/core'; import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router'; 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 { VehicleComponentsAuditComponent } from './components/audit/audit.component';
import { VehicleComponentsAuditDetailComponent } from './components/audit/detail/detail.component'; import { VehicleComponentsAuditDetailComponent } from './components/audit/detail/detail.component';
import { VehicleComponentsListDetailComponent } from './components/list/detail/detail.component'; import { VehicleComponentsListDetailComponent } from './components/list/detail/detail.component';
import { VehicleComponentsListComponent } from './components/list/list.component'; import { VehicleComponentsListComponent } from './components/list/list.component';
const routes: Routes = [ const routes: Routes = [
{
{ path: 'list', component: VehicleComponentsListComponent }, path: '',
{ path: 'list/detail/:id', component: VehicleComponentsListDetailComponent }, canActivate: [AuthGuard],
{ path: 'audit', component: VehicleComponentsAuditComponent }, children: [
{ path: 'audit/detail/:id', component: VehicleComponentsAuditDetailComponent }, {
path: 'list',
component: VehicleComponentsListComponent,
data: { guard: { ability: ['YUNLI-CART-SEARCH'] } as ACLGuardType }
},
{
path: 'list/detail/:id',
component: VehicleComponentsListDetailComponent,
data: { guard: { ability: ['YUNLI-CART-DETAIL'] } as ACLGuardType }
},
{
path: 'audit',
component: VehicleComponentsAuditComponent,
data: { guard: { ability: ['YUNLI-CART--AUDIT-SEARCH1'] } as ACLGuardType }
},
{ path: 'audit/detail/:id', component: VehicleComponentsAuditDetailComponent }
]
}
]; ];
@NgModule({ @NgModule({
imports: [RouterModule.forChild(routes)], imports: [RouterModule.forChild(routes)],
exports: [RouterModule], exports: [RouterModule]
}) })
export class VehicleRoutingModule {} export class VehicleRoutingModule {}

View File

@ -98,7 +98,10 @@
}, },
{ {
"text": "车辆审核列表", "text": "车辆审核列表",
"link": "/vehicle/audit" "link": "/vehicle/audit",
"acl": {
"ability": ["YUNLI-CART-AUDIT-SEARCH"]
}
}, },
{ {
"hide": true, "hide": true,
@ -484,7 +487,6 @@
"text": "基础配置", "text": "基础配置",
"link": "/system/basic-config" "link": "/system/basic-config"
}, },
{ {
"text": "版本发布记录", "text": "版本发布记录",
"link": "/system/version-logs" "link": "/system/version-logs"