Merge branch 'develop' of https://gitlab.eascs.com/tms-ui/tms-obc-web into develop

This commit is contained in:
wangshiming
2022-04-28 17:41:23 +08:00
16 changed files with 84 additions and 78 deletions

View File

@ -1,6 +1,6 @@
{ {
"name": "tms-obc-web", "name": "tms-obc-web",
"version": "1.0.1", "version": "1.2.0",
"description": "运营后台-WEB", "description": "运营后台-WEB",
"author": "cipchk <cipchk@qq.com>", "author": "cipchk <cipchk@qq.com>",
"repository": { "repository": {

View File

@ -273,6 +273,7 @@ export class PayableOrderComponent implements OnInit {
buttons: [ buttons: [
{ {
text: '浏览', text: '浏览',
acl: { ability: ['FINANCIAL-PAYABLE-view'] },
click: item => click: item =>
this.router.navigate(['/financial-management/payable-order/detail/' + item.id], { queryParams: { billHId: item.id } }) this.router.navigate(['/financial-management/payable-order/detail/' + item.id], { queryParams: { billHId: item.id } })
} }

View File

@ -33,7 +33,7 @@
</div> </div>
<div class="mr-sm"> <div class="mr-sm">
<button nz-button nzDanger [nzLoading]="service.http.loading" (click)="openDrawer()" acl <button nz-button nzDanger [nzLoading]="service.http.loading" (click)="openDrawer()" acl
[acl-ability]="['FINANCIAL-RECEIPT-list']">筛选</button> [acl-ability]="['FINANCIAL-PAYMENT-ORDER-list']">筛选</button>
</div> </div>
</div> </div>

View File

@ -251,6 +251,7 @@ export class ReceiptOrderComponent extends BasicTableComponent implements OnInit
buttons: [ buttons: [
{ {
text: '浏览', text: '浏览',
acl: { ability: ['FINANCIAL-RECEIPT-view'] },
click: item => this.router.navigate(['/financial-management/receipt-order/detail/' + item.id]) click: item => this.router.navigate(['/financial-management/receipt-order/detail/' + item.id])
} }
// { // {

View File

@ -40,7 +40,8 @@
<label class="page_title"> <label class="driver">|</label> 充值记录</label> <label class="page_title"> <label class="driver">|</label> 充值记录</label>
<div class="mr-sm"> <div class="mr-sm">
<button nz-button nzDanger [nzLoading]="service.http.loading" (click)="openDrawer()">筛选</button> <button nz-button nzDanger [nzLoading]="service.http.loading" (click)="openDrawer()">筛选</button>
<button nz-button nzDanger (click)="exportList()"> 导出</button> <button nz-button nzDanger (click)="exportList()" acl [acl-ability]="['FINANCIAL-RECHARGE-export']">
导出</button>
</div> </div>
</div> </div>
<st #st [data]="service.$api_get_recharge_page" [columns]="columns" [req]="{ process: beforeReq }" [page]="{}" <st #st [data]="service.$api_get_recharge_page" [columns]="columns" [req]="{ process: beforeReq }" [page]="{}"

View File

@ -119,7 +119,7 @@ export class RechargeRecordComponent extends BasicTableComponent implements OnIn
title: '账户名称', title: '账户名称',
ui: { ui: {
placeholder: '请输入', placeholder: '请输入',
autocomplete: 'off', autocomplete: 'off'
} }
}, },
accountType: { accountType: {
@ -133,7 +133,7 @@ export class RechargeRecordComponent extends BasicTableComponent implements OnIn
], ],
ui: { ui: {
widget: 'select', widget: 'select',
placeholder: '请选择', placeholder: '请选择'
}, },
default: '' default: ''
}, },
@ -157,7 +157,7 @@ export class RechargeRecordComponent extends BasicTableComponent implements OnIn
], ],
ui: { ui: {
widget: 'select', widget: 'select',
placeholder: '请选择', placeholder: '请选择'
}, },
default: '' default: ''
} }
@ -195,6 +195,7 @@ export class RechargeRecordComponent extends BasicTableComponent implements OnIn
{ type: 'divider' }, { type: 'divider' },
{ {
text: '查看回单<br>', text: '查看回单<br>',
acl: { ability: ['FINANCIAL-RECHARGE-receiptApply'] },
click: item => click: item =>
this.service.getReceiptUrl(item.receiptUrl, { this.service.getReceiptUrl(item.receiptUrl, {
bankType: item.bankType, bankType: item.bankType,
@ -207,6 +208,7 @@ export class RechargeRecordComponent extends BasicTableComponent implements OnIn
}, },
{ {
text: '添加备注', text: '添加备注',
acl: { ability: ['FINANCIAL-RECHARGE-addRemark'] },
click: item => this.addRemark(item) click: item => this.addRemark(item)
} }
] ]

View File

@ -50,7 +50,7 @@ const routes: Routes = [
component: PlatformAccountDetailComponent, component: PlatformAccountDetailComponent,
data: { guard: { ability: ['FINANCIAL-PLATFORM-DETAIL-detail'] } } data: { guard: { ability: ['FINANCIAL-PLATFORM-DETAIL-detail'] } }
}, },
{ path: 'recharge-record', component: RechargeRecordComponent }, { path: 'recharge-record', component: RechargeRecordComponent, data: { guard: { ability: ['FINANCIAL-RECHARGE-list'] } } },
{ path: 'withdrawals-record', component: WithdrawalsRecordComponent }, { path: 'withdrawals-record', component: WithdrawalsRecordComponent },
{ path: 'withdrawals-record/detail/:id', component: WithdrawalsDetailComponent }, { path: 'withdrawals-record/detail/:id', component: WithdrawalsDetailComponent },
{ path: 'refund-record', component: RefundRecordComponent }, { path: 'refund-record', component: RefundRecordComponent },

View File

@ -25,8 +25,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.expend-options]="_$expand" class="text-right"> <div nz-col [nzSpan]="_$expand ? 24 : 6" [class.expend-options]="_$expand" class="text-right">
<button nz-button nzType="primary" [nzLoading]="service.http.loading" (click)="st?.load(1)">查询</button> <button nz-button nzType="primary" acl [acl-ability]="['SYSTEM-ANNOUNCEMENT-list']"
<button nz-button [disabled]="false" nzType="primary">导出</button> [nzLoading]="service.http.loading" (click)="st?.load(1)">查询</button>
<button nz-button [disabled]="false" nzType="primary" acl
[acl-ability]="['SYSTEM-ANNOUNCEMENT-export']">导出</button>
<button nz-button [disabled]="false" (click)="resetSF()">重置</button> <button nz-button [disabled]="false" (click)="resetSF()">重置</button>
<button nz-button nzType="link" (click)="expandToggle()"> <button nz-button nzType="link" (click)="expandToggle()">
{{ !_$expand ? '展开' : '收起' }} {{ !_$expand ? '展开' : '收起' }}
@ -40,7 +42,8 @@
<nz-card class="content-box"> <nz-card class="content-box">
<div class="d-flex justify-content-end mb-sm mt-sm"> <div class="d-flex justify-content-end mb-sm mt-sm">
<div> <div>
<button nz-button nzType="primary" (click)="roleAction('', 1)">新增公告</button> <button nz-button nzType="primary" (click)="roleAction('', 1)" acl
[acl-ability]="['SYSTEM-ANNOUNCEMENT-add']">新增公告</button>
</div> </div>
</div> </div>
<st #st [data]="service.$api_getAnnouncementInfoList_page" [columns]="columns" [req]="{ params: reqParams }" <st #st [data]="service.$api_getAnnouncementInfoList_page" [columns]="columns" [req]="{ params: reqParams }"

View File

@ -39,10 +39,12 @@ export class AnnouncementMessageComponent implements OnInit {
buttons: [ buttons: [
{ {
text: '编辑', text: '编辑',
acl: { ability: ['SYSTEM-ANNOUNCEMENT-edit'] },
click: item => this.roleAction(item, 2) click: item => this.roleAction(item, 2)
}, },
{ {
text: '删除', text: '删除',
acl: { ability: ['SYSTEM-ANNOUNCEMENT-delete'] },
click: item => this.deleteAction(item) click: item => this.deleteAction(item)
}, },
] ]

View File

@ -1,7 +1,8 @@
<nz-card class="content-box"> <nz-card class="content-box">
<div class="d-flex align-items-center mb-sm" style="justify-content: flex-end;"> <div class="d-flex align-items-center mb-sm" style="justify-content: flex-end;">
<button nz-button nzType="primary" (click)="menuAction('新增组织')">新增</button> <button nz-button nzType="primary" (click)="menuAction('新增组织')" acl
[acl-ability]="['SYSTEM-ROLE-add']">新增</button>
</div> </div>
<nz-table #expandTable [nzData]="listOfMapData" nzTableLayout="fixed" nzBordered nzSize="small" <nz-table #expandTable [nzData]="listOfMapData" nzTableLayout="fixed" nzBordered nzSize="small"
@ -33,16 +34,16 @@
</td> </td>
<td nzAlign="center" nzWidth="250px"> <td nzAlign="center" nzWidth="250px">
<ng-container *ngIf="item.roleCode !== 'Administrator'"> <ng-container *ngIf="item.roleCode !== 'Administrator'">
<a (click)="menuAction(item)">编辑</a> <a (click)="menuAction(item)" acl [acl-ability]="['SYSTEM-ROLE-edit']">编辑</a>
<nz-divider nzType="vertical"></nz-divider> <nz-divider nzType="vertical"></nz-divider>
<a (click)="deleteAction(item)">删除</a> <a (click)="deleteAction(item)" acl [acl-ability]="['SYSTEM-ROLE-delete']">删除</a>
<nz-divider nzType="vertical"></nz-divider> <nz-divider nzType="vertical"></nz-divider>
<a (click)="menuAction(null,item.id)">新增子组织</a> <a (click)="menuAction(null,item.id)" acl [acl-ability]="['SYSTEM-ROLE-add']">新增子组织</a>
<br> <br>
<nz-divider nzType="vertical"></nz-divider> <nz-divider nzType="vertical"></nz-divider>
<a (click)="configureAPIauth(item)">配置接口权限</a> <a (click)="configureAPIauth(item)" acl [acl-ability]="['SYSTEM-ROLE-api']">配置接口权限</a>
<nz-divider nzType="vertical"></nz-divider> <nz-divider nzType="vertical"></nz-divider>
<a>配置数据权限</a> <a acl [acl-ability]="['SYSTEM-ROLE-data']">配置数据权限</a>
</ng-container> </ng-container>
</td> </td>

View File

@ -2,7 +2,7 @@
<nz-card> <nz-card>
<div class="filter-wrap"> <div class="filter-wrap">
<button nz-button nzType="primary" (click)="add()">新增</button> <button nz-button nzType="primary" (click)="add()" acl [acl-ability]="['SMS_TEMPLATE-add']">新增</button>
<button nz-button nzType="primary" (click)="open()"><i nz-icon nzType="plus" nzTheme="outline"></i>筛选</button> <button nz-button nzType="primary" (click)="open()"><i nz-icon nzType="plus" nzTheme="outline"></i>筛选</button>
</div> </div>
<st #st [data]="this.service.$api_smsTemplate_page " [columns]="columns" [req]="{ process: beforeReq }" <st #st [data]="this.service.$api_smsTemplate_page " [columns]="columns" [req]="{ process: beforeReq }"
@ -24,9 +24,10 @@
</ng-template> </ng-template>
</nz-drawer> </nz-drawer>
<nz-modal [(nzVisible)]="isVisible" [nzTitle]="!isEdit?'新增':'编辑'" (nzOnCancel)="handleCancel()" (nzOnOk)="handleOk()" [nzOkDisabled]="!sfEdit?.valid"> <nz-modal [(nzVisible)]="isVisible" [nzTitle]="!isEdit?'新增':'编辑'" (nzOnCancel)="handleCancel()" (nzOnOk)="handleOk()"
[nzOkDisabled]="!sfEdit?.valid">
<ng-container *nzModalContent> <ng-container *nzModalContent>
<sf #sfEdit [formData]="tempData" [schema]="editSchema" [ui]="{ '*': { spanLabelFixed: 90,grid: { span: 24 } }}" [compact]="true" <sf #sfEdit [formData]="tempData" [schema]="editSchema" [ui]="{ '*': { spanLabelFixed: 90,grid: { span: 24 } }}"
[button]="'none'"></sf> [compact]="true" [button]="'none'"></sf>
</ng-container> </ng-container>
</nz-modal> </nz-modal>

View File

@ -1,4 +1,3 @@
import { AfterViewInit, ChangeDetectorRef, Component, OnInit, ViewChild } from '@angular/core'; import { AfterViewInit, ChangeDetectorRef, Component, OnInit, ViewChild } from '@angular/core';
import { ActivatedRoute } from '@angular/router'; import { ActivatedRoute } from '@angular/router';
import { STColumn, STComponent, STRequestOptions } from '@delon/abc/st'; import { STColumn, STComponent, STRequestOptions } from '@delon/abc/st';
@ -50,27 +49,27 @@ export class SmsTemplateComponent implements OnInit {
templateName: { templateName: {
type: 'string', type: 'string',
title: '模板名称', title: '模板名称',
ui: { placeholder: '请输入模板名称', errors: { require: '必填项'} } ui: { placeholder: '请输入模板名称', errors: { require: '必填项' } }
}, },
templateCode: { templateCode: {
type: 'string', type: 'string',
title: '模板编码', title: '模板编码',
readOnly: this.isEdit, readOnly: this.isEdit,
ui: { placeholder: '请输入模板编码', errors: { require: '必填项'} } ui: { placeholder: '请输入模板编码', errors: { require: '必填项' } }
}, },
templateContent: { templateContent: {
type: 'string', type: 'string',
title: '模板内容', title: '模板内容',
ui: { placeholder: '请输入模板内容', errors: { require: '必填项'} } ui: { placeholder: '请输入模板内容', errors: { require: '必填项' } }
} }
}, },
required: ['templateName','templateCode','templateContent'] required: ['templateName', 'templateCode', 'templateContent']
} };
} }
columns: STColumn[] = [ columns: STColumn[] = [
{ title: '模板名称', className: 'text-center', index: 'templateName' }, { title: '模板名称', className: 'text-center', width: '200px', index: 'templateName' },
{ title: '模板编码', className: 'text-center', index: 'templateCode' }, { title: '模板编码', className: 'text-center', width: '140px', index: 'templateCode' },
{ title: '模板内容', className: 'text-center', index: 'templateContent' }, { title: '模板内容', className: 'text-center', index: 'templateContent' },
// { // {
// title: '创建人', className: 'text-center', index: 'content', // title: '创建人', className: 'text-center', index: 'content',
@ -79,21 +78,23 @@ export class SmsTemplateComponent implements OnInit {
title: '更新时间', title: '更新时间',
index: 'modifyTime', index: 'modifyTime',
type: 'date', type: 'date',
width: '160px',
className: 'text-center' className: 'text-center'
}, },
{ {
title: '操作', title: '操作',
width: '90px',
buttons: [ buttons: [
{ {
text: '编辑', text: '编辑',
click: i => this.edit(i), acl: { ability: ['SMS_TEMPLATE-save'] },
click: i => this.edit(i)
} }
] ]
} }
]; ];
constructor(public service: SystemService, private nzModalService: NzModalService, private route: ActivatedRoute) { constructor(public service: SystemService, private nzModalService: NzModalService, private route: ActivatedRoute) {}
}
ngOnInit(): void { ngOnInit(): void {
this.initSF(); this.initSF();
@ -144,7 +145,7 @@ export class SmsTemplateComponent implements OnInit {
templateCode, templateCode,
templateName, templateName,
templateContent templateContent
} };
this.service.request(this.service.$api_smsTemplate_edit, params).subscribe(res => { this.service.request(this.service.$api_smsTemplate_edit, params).subscribe(res => {
// console.log(res); // console.log(res);
@ -152,8 +153,7 @@ export class SmsTemplateComponent implements OnInit {
this.isVisible = false; this.isVisible = false;
this.st.reload(); this.st.reload();
} }
}) });
} }
handleCancel(): void { handleCancel(): void {

View File

@ -54,9 +54,9 @@ const routes: Routes = [
{ path: 'network-freight/new/:id', component: NetworkFreightNewComponent }, { path: 'network-freight/new/:id', component: NetworkFreightNewComponent },
{ path: 'close-account', component: CloseAccountComponent }, { path: 'close-account', component: CloseAccountComponent },
// { path: 'btn-management', component: BtnManagementComponent }, // { path: 'btn-management', component: BtnManagementComponent },
{ path: 'announcement-message', component: AnnouncementMessageComponent }, { path: 'announcement-message', component: AnnouncementMessageComponent, data: { guard: { ability: ['SYSTEM-ANNOUNCEMENT-list'] } } },
{ path: 'insurance-set', component: InsuranceSetComponent }, { path: 'insurance-set', component: InsuranceSetComponent },
{ path: 'sms-template', component: SmsTemplateComponent } { path: 'sms-template', component: SmsTemplateComponent, data: { guard: { ability: ['SMS_TEMPLATE-search'] } } }
]; ];
@NgModule({ @NgModule({

View File

@ -290,11 +290,11 @@ export class InvoiceDetailComponent implements OnInit {
{ title: '数量', render: 'vatqty', width: 140, className: 'text-right' }, { title: '数量', render: 'vatqty', width: 140, className: 'text-right' },
{ {
title: '金额', title: '金额',
index: 'vattax', index: 'vatmoney',
width: 140, width: 140,
type: 'widget', type: 'widget',
className: 'text-right', className: 'text-right',
widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.vattax }) } widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.vatmoney }) }
}, },
{ {
title: '税率', title: '税率',
@ -305,11 +305,11 @@ export class InvoiceDetailComponent implements OnInit {
}, },
{ {
title: '税额', title: '税额',
index: 'vatnotax', index: 'vattax',
width: 140, width: 140,
type: 'widget', type: 'widget',
className: 'text-right', className: 'text-right',
widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.vatnotax }) } widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.vattax }) }
} }
]; ];
} }

View File

@ -16,17 +16,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 <button nz-button nzType="primary" acl [acl-ability]="['VEHICLE-LIST-search']" [nzLoading]="service.http.loading"
nz-button (click)="st?.load(1)">查询</button>
nzType="primary" <button nz-button nzType="primary" [disabled]="false" (click)="exportFire()" acl
acl [acl-ability]="'VEHICLE-LIST-export'">导出</button>
[acl-ability]="['VEHICLE-LIST-search']"
[nzLoading]="service.http.loading"
(click)="st?.load(1)"
>查询</button>
<button nz-button nzType="primary" [disabled]="false" (click)="exportFire()" acl [acl-ability]="'VEHICLE-LIST-export'"
>导出</button
>
<button nz-button [disabled]="false" (click)="resetSF()">重置</button> <button nz-button [disabled]="false" (click)="resetSF()">重置</button>
<button nz-button nzType="link" (click)="expandToggle()"> <button nz-button nzType="link" (click)="expandToggle()">
{{ !_$expand ? '展开' : '收起' }} {{ !_$expand ? '展开' : '收起' }}
@ -38,23 +31,14 @@
<nz-card> <nz-card>
<!-- 数据列表 --> <!-- 数据列表 -->
<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]="false">
[loading]="false"
>
<ng-template st-row="carLength" let-item let-index="index"> <ng-template st-row="carLength" let-item let-index="index">
<div <div>{{ item?.carModelLabel }}-{{ item?.carLengthLabel ? item?.carLengthLabel + '米' : '' }}-{{
>{{ item?.carModelLabel }}-{{ item?.carLengthLabel ? item?.carLengthLabel + '' : '' }}-{{ item?.carLoad ? item?.carLoad + '' : ''
item?.carLoad ? item?.carLoad + '吨' : '' }}</div>
}}</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>
@ -68,13 +52,19 @@
</ng-template> </ng-template>
<ng-template st-row="approvalAuditStatus" let-item let-index="index"> <ng-template st-row="approvalAuditStatus" let-item let-index="index">
<div> <div>
<span *ngIf="item?.approvalAuditStatus === -1 || (item?.approvalAuditStatus === '-1' && item?.isSelf)">未上传</span> <span
*ngIf="item?.approvalAuditStatus === -1 || (item?.approvalAuditStatus === '-1' && item?.isSelf)">未上传</span>
<span *ngIf="item?.approvalAuditStatus === 0 || (item?.approvalAuditStatus === '0' && item?.isSelf)">草稿</span> <span *ngIf="item?.approvalAuditStatus === 0 || (item?.approvalAuditStatus === '0' && item?.isSelf)">草稿</span>
<span *ngIf="item?.approvalAuditStatus === 10 || (item?.approvalAuditStatus === '10' && item?.isSelf)">待审核</span> <span
<span *ngIf="item?.approvalAuditStatus === 15 || (item?.approvalAuditStatus === '15' && item?.isSelf)">已撤销</span> *ngIf="item?.approvalAuditStatus === 10 || (item?.approvalAuditStatus === '10' && item?.isSelf)">待审核</span>
<span *ngIf="item?.approvalAuditStatus === 20 || (item?.approvalAuditStatus === '20' && item?.isSelf)">已审核</span> <span
<span *ngIf="item?.approvalAuditStatus === 30 || (item?.approvalAuditStatus === '30' && item?.isSelf)">驳回</span> *ngIf="item?.approvalAuditStatus === 15 || (item?.approvalAuditStatus === '15' && item?.isSelf)">撤销</span>
<span *ngIf="item?.approvalAuditStatus === 40 || (item?.approvalAuditStatus === '40' && item?.isSelf)">证件过期</span> <span
*ngIf="item?.approvalAuditStatus === 20 || (item?.approvalAuditStatus === '20' && item?.isSelf)">已审核</span>
<span
*ngIf="item?.approvalAuditStatus === 30 || (item?.approvalAuditStatus === '30' && item?.isSelf)">已驳回</span>
<span
*ngIf="item?.approvalAuditStatus === 40 || (item?.approvalAuditStatus === '40' && item?.isSelf)">证件过期</span>
<span *ngIf="!item?.isSelf">-</span> <span *ngIf="!item?.isSelf">-</span>
</div> </div>
</ng-template> </ng-template>

View File

@ -14,10 +14,14 @@ import { VehicleComponentsListDetailComponent } from './components/list/detail/d
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: 'list', component: VehicleComponentsListComponent, data: { guard: { ability: ['VEHICLE-LIST-search'] } } },
{ path: 'list/detail/:id', component: VehicleComponentsListDetailComponent }, { path: 'list/detail/:id', component: VehicleComponentsListDetailComponent, data: { guard: { ability: ['VEHICLE-LIST-DETAIL-list'] } } },
{ path: 'audit', component: VehicleComponentsAuditComponent }, { path: 'audit', component: VehicleComponentsAuditComponent, data: { guard: { ability: ['VEHICLE-AUDIT-search'] } } },
{ path: 'audit/detail/:id', component: VehicleComponentsAuditDetailComponent } {
path: 'audit/detail/:id',
component: VehicleComponentsAuditDetailComponent,
data: { guard: { ability: ['VEHICLE-AUDIT-DETAIL-search'] } }
}
]; ];
@NgModule({ @NgModule({