Merge branch 'develop' of https://gitlab.eascs.com/tms-ui/tms-obc-web into develop
This commit is contained in:
		| @ -0,0 +1,6 @@ | |||||||
|  | <!-- 页头 --> | ||||||
|  | <page-header-wrapper [title]="'数据报表'"></page-header-wrapper> | ||||||
|  | <nz-card> | ||||||
|  |   <sf mode="search" [schema]="searchSchema" (formSubmit)="st.reset($event)" (formReset)="st.reset($event)"></sf> | ||||||
|  |   <st #st [data]="url" [columns]="columns"></st> | ||||||
|  | </nz-card> | ||||||
| @ -0,0 +1,45 @@ | |||||||
|  | import { Component, OnInit, ViewChild } from '@angular/core'; | ||||||
|  | import { STColumn, STComponent } from '@delon/abc/st'; | ||||||
|  | import { SFSchema } from '@delon/form'; | ||||||
|  | import { ModalHelper, _HttpClient } from '@delon/theme'; | ||||||
|  |  | ||||||
|  | @Component({ | ||||||
|  |   selector: 'app-datatable-compliance-customer', | ||||||
|  |   templateUrl: './customer.component.html', | ||||||
|  | }) | ||||||
|  | export class DatatableComplianceCustomerComponent implements OnInit { | ||||||
|  |   url = `/user`; | ||||||
|  |   searchSchema: SFSchema = { | ||||||
|  |     properties: { | ||||||
|  |       no: { | ||||||
|  |         type: 'string', | ||||||
|  |         title: '编号' | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   }; | ||||||
|  |   @ViewChild('st') private readonly st!: STComponent; | ||||||
|  |   columns: STColumn[] = [ | ||||||
|  |     { title: '编号', index: 'no' }, | ||||||
|  |     { title: '调用次数', type: 'number', index: 'callNo' }, | ||||||
|  |     { title: '头像', type: 'img', width: '50px', index: 'avatar' }, | ||||||
|  |     { title: '时间', type: 'date', index: 'updatedAt' }, | ||||||
|  |     { | ||||||
|  |       title: '', | ||||||
|  |       buttons: [ | ||||||
|  |         // { text: '查看', click: (item: any) => `/form/${item.id}` }, | ||||||
|  |         // { text: '编辑', type: 'static', component: FormEditComponent, click: 'reload' }, | ||||||
|  |       ] | ||||||
|  |     } | ||||||
|  |   ]; | ||||||
|  |  | ||||||
|  |   constructor(private http: _HttpClient, private modal: ModalHelper) { } | ||||||
|  |  | ||||||
|  |   ngOnInit(): void { } | ||||||
|  |  | ||||||
|  |   add(): void { | ||||||
|  |     // this.modal | ||||||
|  |     //   .createStatic(FormEditComponent, { i: { id: 0 } }) | ||||||
|  |     //   .subscribe(() => this.st.reload()); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -0,0 +1,66 @@ | |||||||
|  | <!-- 页头 --> | ||||||
|  | <page-header-wrapper [title]="'合规监控报表'"></page-header-wrapper> | ||||||
|  | <nz-card> | ||||||
|  |   <!-- 搜索区 --> | ||||||
|  |   <div nz-row> | ||||||
|  |     <div nz-col nzSpan="18"> | ||||||
|  |       <sf #sf [ui]="ui" [schema]="schema" [button]="'none'"></sf> | ||||||
|  |     </div> | ||||||
|  |     <div nz-col nzSpan="6"> | ||||||
|  |       <div class="chooseBox"> | ||||||
|  |         <div class="timeBox"> | ||||||
|  |           <nz-radio-group [(ngModel)]="mode" nzButtonStyle="solid" (ngModelChange)="changeData()"> | ||||||
|  |             <label nz-radio-button nzValue="year">年</label> | ||||||
|  |             <label nz-radio-button nzValue="month">月</label> | ||||||
|  |           </nz-radio-group> | ||||||
|  |           <div class="dateBox"> | ||||||
|  |             <nz-date-picker [(ngModel)]="date" [nzMode]="mode" [nzFormat]="dateFormat" (ngModelChange)="onChange($event)"></nz-date-picker> | ||||||
|  |           </div> | ||||||
|  |         </div> | ||||||
|  |       </div> | ||||||
|  |     </div> | ||||||
|  |   </div> | ||||||
|  | </nz-card> | ||||||
|  |  | ||||||
|  | <div nz-row [nzGutter]="16"> | ||||||
|  |   <div nz-col class="gutter-row" [nzSpan]="6"> | ||||||
|  |     <g2-card [title]="'订单合格率'" [bordered]="true" [total]="'95.00%'" [footer]="footer1" contentHeight="46"> | ||||||
|  |       <ng-template #footer1> | ||||||
|  |         <div class="card-f"> | ||||||
|  |           <span class="card-f-l">合格:12423</span> <span>不合格:12423</span> | ||||||
|  |         </div> | ||||||
|  |       </ng-template> | ||||||
|  |     </g2-card> | ||||||
|  |   </div> | ||||||
|  |   <div nz-col class="gutter-row" [nzSpan]="6"> | ||||||
|  |     <g2-card [title]="'货源单占比'" [bordered]="true" [total]="'94.00%'" [footer]="footer2" contentHeight="46"> | ||||||
|  |       <ng-template #footer2> | ||||||
|  |         <div class="card-f"> | ||||||
|  |           <span class="card-f-l">货源单:12423</span> <span>合同单:12423</span> | ||||||
|  |         </div> | ||||||
|  |       </ng-template> | ||||||
|  |     </g2-card> | ||||||
|  |   </div> | ||||||
|  |   <div nz-col class="gutter-row" [nzSpan]="6"> | ||||||
|  |     <g2-card [title]="'运费直付占比'" [bordered]="true" [total]="'95.10%'" [footer]="footer3" contentHeight="46"> | ||||||
|  |       <ng-template #footer3> | ||||||
|  |         <div class="card-f"> | ||||||
|  |           <span class="card-f-l">司机:12423</span> <span>车队长:12423</span> | ||||||
|  |         </div> | ||||||
|  |       </ng-template> | ||||||
|  |     </g2-card> | ||||||
|  |     </div> | ||||||
|  |   <div nz-col class="gutter-row" [nzSpan]="6"> | ||||||
|  |     <g2-card [title]="'付款及时率'" [bordered]="true" [total]="'90.00%'" [footer]="footer4" contentHeight="46"> | ||||||
|  |       <ng-template #footer4> | ||||||
|  |         <div class="card-f"> | ||||||
|  |           <span class="card-f-l">准时:12423</span> <span>逾期:12423</span> | ||||||
|  |         </div> | ||||||
|  |       </ng-template> | ||||||
|  |     </g2-card> | ||||||
|  |   </div> | ||||||
|  | </div> | ||||||
|  |  | ||||||
|  | <nz-card nzTitle="平台合规情况监控报表"> | ||||||
|  |   <g2-custom delay="100" (render)="render($event)"></g2-custom> | ||||||
|  | </nz-card> | ||||||
| @ -0,0 +1,17 @@ | |||||||
|  | .card-f{ | ||||||
|  |     color: #5a5a5a; | ||||||
|  |     .card-f-l{ | ||||||
|  |       margin-right: 24px;   | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | .chooseBox{ | ||||||
|  |   display: flex; | ||||||
|  | } | ||||||
|  | .timeBox{ | ||||||
|  |   display: flex; | ||||||
|  |   margin: 0 0 0 10px; | ||||||
|  | } | ||||||
|  | .dateBox{ | ||||||
|  |   display: inline-block; | ||||||
|  |   margin: 0 0 0 10px; | ||||||
|  | } | ||||||
| @ -0,0 +1,125 @@ | |||||||
|  | import { Component, ElementRef, NgZone, OnInit, ViewChild } from '@angular/core'; | ||||||
|  | import { DatePipe, ModalHelper, _HttpClient } from '@delon/theme'; | ||||||
|  | import { G2MiniAreaClickItem, G2MiniAreaData } from '@delon/chart/mini-area'; | ||||||
|  | import { format } from 'date-fns'; | ||||||
|  | import { SFComponent, SFDateWidgetSchema, SFRadioWidgetSchema, SFSchema, SFUISchema } from '@delon/form'; | ||||||
|  | import { G2TimelineData, G2TimelineMap } from '@delon/chart/timeline'; | ||||||
|  | import { Chart } from '@antv/g2'; | ||||||
|  | const DataSet = require('@antv/data-set'); | ||||||
|  | @Component({ | ||||||
|  |   selector: 'app-datatable-compliance-index', | ||||||
|  |   templateUrl: './index.component.html', | ||||||
|  |   styleUrls: ['./index.component.less'], | ||||||
|  |   providers: [DatePipe] | ||||||
|  | }) | ||||||
|  | export class DatatableComplianceIndexComponent implements OnInit { | ||||||
|  |   @ViewChild('sf', { static: false }) | ||||||
|  |   sf!: SFComponent; | ||||||
|  |   ui!: SFUISchema; | ||||||
|  |   schema: SFSchema = {}; | ||||||
|  |  | ||||||
|  |   mode = 'year'; | ||||||
|  |   date: any = null; | ||||||
|  |   dateFormat = 'yyyy-MM-dd'; | ||||||
|  |   time: any = ['2022-01-01 00:00:00'] | ||||||
|  |   constructor(private http: _HttpClient, private modal: ModalHelper, private ngZone: NgZone, private datePipe: DatePipe) {} | ||||||
|  |  | ||||||
|  |   ngOnInit(): void { | ||||||
|  |     this.initSF(); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   changeData(){ | ||||||
|  |     if(this.mode === 'year') { | ||||||
|  |       this.dateFormat = 'yyyy' | ||||||
|  |     } else if(this.mode === 'month') { | ||||||
|  |       this.dateFormat = 'yyyy-MM' | ||||||
|  |     } else { | ||||||
|  |       this.dateFormat = 'yyyy-MM-dd' | ||||||
|  |     }  | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   onChange(result: any) { | ||||||
|  |     if(this.mode === 'year') { | ||||||
|  |       this.time = [this.datePipe.transform(this.date, 'yyyy') + '-01-01 00:00:00'] | ||||||
|  |     } else if(this.mode === 'month') { | ||||||
|  |       this.time = [this.datePipe.transform(this.date, 'yyyy-MM') + '-01 00:00:00'] | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   initSF() { | ||||||
|  |     this.schema = { | ||||||
|  |       properties: { | ||||||
|  |         name: { | ||||||
|  |           type: 'string', | ||||||
|  |           title: '', | ||||||
|  |           ui: { | ||||||
|  |             widget: 'select', | ||||||
|  |             placeholder: '网络货运人' | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         name2: { | ||||||
|  |           type: 'string', | ||||||
|  |           title: '', | ||||||
|  |           ui: { | ||||||
|  |             widget: 'select', | ||||||
|  |             placeholder: '部门' | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         name3: { | ||||||
|  |           type: 'string', | ||||||
|  |           title: '', | ||||||
|  |           ui: { | ||||||
|  |             placeholder: '业务员' | ||||||
|  |           } | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     }; | ||||||
|  |     this.ui = { | ||||||
|  |       '*': { | ||||||
|  |         grid: { span: 4 } | ||||||
|  |       } | ||||||
|  |     }; | ||||||
|  |  | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   data = [ | ||||||
|  |     { Date: '22 February', 订单合格率: 50000, 付款及时率: 125000 }, | ||||||
|  |     { Date: '28 February', 订单合格率: 60000, 付款及时率: 150000 }, | ||||||
|  |     { Date: '3 March', 订单合格率: 100000, 付款及时率: 250000 }, | ||||||
|  |     { Date: '20 March', 订单合格率: 200000, 付款及时率: 500000 }, | ||||||
|  |     { Date: '7 April', 订单合格率: 250000, 付款及时率: 625000 }, | ||||||
|  |     { Date: '13 June', 订单合格率: 210000, 付款及时率: 525000 } | ||||||
|  |   ]; | ||||||
|  |   render(el: ElementRef<HTMLDivElement>) { | ||||||
|  |     this.ngZone.runOutsideAngular(() => this.init(el.nativeElement)); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   private init(el: HTMLElement): void { | ||||||
|  |     const chart = new Chart({ | ||||||
|  |       container: el, | ||||||
|  |       autoFit: true, | ||||||
|  |       height: 400 | ||||||
|  |     }); | ||||||
|  |     // 以三组数据为例, 需要展示 91/92/93年中a/b/c数据走势 | ||||||
|  | 		const data = [ | ||||||
|  | 			{x: '1991', z: 'a', y: 1}, | ||||||
|  | 			{x: '1991', z: 'b', y: 2}, | ||||||
|  | 			{x: '1991', z: 'c', y: 3}, | ||||||
|  |  | ||||||
|  | 			{x: '1992', z: 'a', y: 11}, | ||||||
|  | 			{x: '1992', z: 'b', y: 22}, | ||||||
|  | 			{x: '1992', z: 'c', y: 33}, | ||||||
|  | 			 | ||||||
|  | 			{x: '1993', z: 'a', y: 1}, | ||||||
|  | 			{x: '1993', z: 'b', y: 2}, | ||||||
|  | 			{x: '1993', z: 'c', y: 3} | ||||||
|  | 		]; | ||||||
|  |  | ||||||
|  |     chart.data(data); | ||||||
|  | 		// 在x*y的坐标点上按z值绘制线条, 如果z值相同将使用直线连接 | ||||||
|  | 		chart.line().position('x*y').color('z'); | ||||||
|  | 		// 在x*y的坐标上按z值绘制圆点 | ||||||
|  | 		chart.point().position('x*y').size(4).color('z').shape('circle'); | ||||||
|  | 		chart.render(); | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -0,0 +1,6 @@ | |||||||
|  | <!-- 页头 --> | ||||||
|  | <page-header-wrapper [title]="'数据报表'"></page-header-wrapper> | ||||||
|  | <nz-card> | ||||||
|  |   <sf mode="search" [schema]="searchSchema" (formSubmit)="st.reset($event)" (formReset)="st.reset($event)"></sf> | ||||||
|  |   <st #st [data]="url" [columns]="columns"></st> | ||||||
|  | </nz-card> | ||||||
| @ -0,0 +1,45 @@ | |||||||
|  | import { Component, OnInit, ViewChild } from '@angular/core'; | ||||||
|  | import { STColumn, STComponent } from '@delon/abc/st'; | ||||||
|  | import { SFSchema } from '@delon/form'; | ||||||
|  | import { ModalHelper, _HttpClient } from '@delon/theme'; | ||||||
|  |  | ||||||
|  | @Component({ | ||||||
|  |   selector: 'app-datatable-compliance-salesman', | ||||||
|  |   templateUrl: './salesman.component.html', | ||||||
|  | }) | ||||||
|  | export class DatatableComplianceSalesmanComponent implements OnInit { | ||||||
|  |   url = `/user`; | ||||||
|  |   searchSchema: SFSchema = { | ||||||
|  |     properties: { | ||||||
|  |       no: { | ||||||
|  |         type: 'string', | ||||||
|  |         title: '编号' | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   }; | ||||||
|  |   @ViewChild('st') private readonly st!: STComponent; | ||||||
|  |   columns: STColumn[] = [ | ||||||
|  |     { title: '编号', index: 'no' }, | ||||||
|  |     { title: '调用次数', type: 'number', index: 'callNo' }, | ||||||
|  |     { title: '头像', type: 'img', width: '50px', index: 'avatar' }, | ||||||
|  |     { title: '时间', type: 'date', index: 'updatedAt' }, | ||||||
|  |     { | ||||||
|  |       title: '', | ||||||
|  |       buttons: [ | ||||||
|  |         // { text: '查看', click: (item: any) => `/form/${item.id}` }, | ||||||
|  |         // { text: '编辑', type: 'static', component: FormEditComponent, click: 'reload' }, | ||||||
|  |       ] | ||||||
|  |     } | ||||||
|  |   ]; | ||||||
|  |  | ||||||
|  |   constructor(private http: _HttpClient, private modal: ModalHelper) { } | ||||||
|  |  | ||||||
|  |   ngOnInit(): void { } | ||||||
|  |  | ||||||
|  |   add(): void { | ||||||
|  |     // this.modal | ||||||
|  |     //   .createStatic(FormEditComponent, { i: { id: 0 } }) | ||||||
|  |     //   .subscribe(() => this.st.reload()); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -0,0 +1,6 @@ | |||||||
|  | <!-- 页头 --> | ||||||
|  | <page-header-wrapper [title]="'数据报表'"></page-header-wrapper> | ||||||
|  | <nz-card> | ||||||
|  |   <sf mode="search" [schema]="searchSchema" (formSubmit)="st.reset($event)" (formReset)="st.reset($event)"></sf> | ||||||
|  |   <st #st [data]="url" [columns]="columns"></st> | ||||||
|  | </nz-card> | ||||||
| @ -0,0 +1,45 @@ | |||||||
|  | import { Component, OnInit, ViewChild } from '@angular/core'; | ||||||
|  | import { STColumn, STComponent } from '@delon/abc/st'; | ||||||
|  | import { SFSchema } from '@delon/form'; | ||||||
|  | import { ModalHelper, _HttpClient } from '@delon/theme'; | ||||||
|  |  | ||||||
|  | @Component({ | ||||||
|  |   selector: 'app-datatable-financetable', | ||||||
|  |   templateUrl: './financetable.component.html', | ||||||
|  | }) | ||||||
|  | export class DatatableFinancetableComponent implements OnInit { | ||||||
|  |   url = `/user`; | ||||||
|  |   searchSchema: SFSchema = { | ||||||
|  |     properties: { | ||||||
|  |       no: { | ||||||
|  |         type: 'string', | ||||||
|  |         title: '编号' | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   }; | ||||||
|  |   @ViewChild('st') private readonly st!: STComponent; | ||||||
|  |   columns: STColumn[] = [ | ||||||
|  |     { title: '编号', index: 'no' }, | ||||||
|  |     { title: '调用次数', type: 'number', index: 'callNo' }, | ||||||
|  |     { title: '头像', type: 'img', width: '50px', index: 'avatar' }, | ||||||
|  |     { title: '时间', type: 'date', index: 'updatedAt' }, | ||||||
|  |     { | ||||||
|  |       title: '', | ||||||
|  |       buttons: [ | ||||||
|  |         // { text: '查看', click: (item: any) => `/form/${item.id}` }, | ||||||
|  |         // { text: '编辑', type: 'static', component: FormEditComponent, click: 'reload' }, | ||||||
|  |       ] | ||||||
|  |     } | ||||||
|  |   ]; | ||||||
|  |  | ||||||
|  |   constructor(private http: _HttpClient, private modal: ModalHelper) { } | ||||||
|  |  | ||||||
|  |   ngOnInit(): void { } | ||||||
|  |  | ||||||
|  |   add(): void { | ||||||
|  |     // this.modal | ||||||
|  |     //   .createStatic(FormEditComponent, { i: { id: 0 } }) | ||||||
|  |     //   .subscribe(() => this.st.reload()); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -0,0 +1,14 @@ | |||||||
|  | <!-- 页头 --> | ||||||
|  | <page-header-wrapper [title]="'开票数据报表'"></page-header-wrapper> | ||||||
|  | <nz-card nzTitle="开票数据报表"> | ||||||
|  |   <st | ||||||
|  |     #st | ||||||
|  |     [data]="data" | ||||||
|  |     [columns]="columns" | ||||||
|  |     [req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }" | ||||||
|  |     [res]="{ reName: { list: 'data.records', total: 'data.total' } }" | ||||||
|  |     [page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }" | ||||||
|  |     [loadingDelay]="500" | ||||||
|  |   > | ||||||
|  |   </st> | ||||||
|  | </nz-card> | ||||||
| @ -0,0 +1,70 @@ | |||||||
|  | import { Component, OnInit, ViewChild } from '@angular/core'; | ||||||
|  | import { STColumn, STComponent } from '@delon/abc/st'; | ||||||
|  | import { SFSchema } from '@delon/form'; | ||||||
|  | import { ModalHelper, _HttpClient } from '@delon/theme'; | ||||||
|  |  | ||||||
|  | @Component({ | ||||||
|  |   selector: 'app-datatable-invoicetable', | ||||||
|  |   templateUrl: './invoicetable.component.html', | ||||||
|  | }) | ||||||
|  | export class DatatableInvoicetableComponent implements OnInit { | ||||||
|  |   @ViewChild('st', { static: false }) | ||||||
|  |   st!: STComponent; | ||||||
|  |   columns!: STColumn[]; | ||||||
|  |  | ||||||
|  |   data=[{name1:1111}] | ||||||
|  |   constructor(private http: _HttpClient, private modal: ModalHelper) { } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 查询参数 | ||||||
|  |    */ | ||||||
|  |    get reqParams() { | ||||||
|  |     return {  }; | ||||||
|  |   } | ||||||
|  |   ngOnInit(): void {  | ||||||
|  |     this.initST(); | ||||||
|  |   } | ||||||
|  |   initST() { | ||||||
|  |     this.columns = [ | ||||||
|  |       { | ||||||
|  |         title: '运营主体', | ||||||
|  |         index: 'name1' | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         title: '已开票总金额', | ||||||
|  |         index: 'name1' | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         title: '当月已开票金额', | ||||||
|  |         index: 'name1' | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         title: '已申请待开金额', | ||||||
|  |         index: 'name1' | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         title: '未申请开票金额(历史)', | ||||||
|  |         index: 'name1' | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         title: '未申请开票金额(当月)', | ||||||
|  |         index: 'name1' | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         title: '当月发票张数', | ||||||
|  |         index: 'name1' | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         title: '剩余发票张数', | ||||||
|  |         index: 'name1' | ||||||
|  |       }, | ||||||
|  |        | ||||||
|  |     ]; | ||||||
|  |   } | ||||||
|  |   add(): void { | ||||||
|  |     // this.modal | ||||||
|  |     //   .createStatic(FormEditComponent, { i: { id: 0 } }) | ||||||
|  |     //   .subscribe(() => this.st.reload()); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -7,6 +7,12 @@ import { DatatableDriverComponent } from './components/customtable/driver/driver | |||||||
| import { DatatableOperationtableComponent } from './components/operationtable/operationtable.component'; | import { DatatableOperationtableComponent } from './components/operationtable/operationtable.component'; | ||||||
| import { DatatableOrderReportingComponent } from './reporting/components/order-reporting/order-reporting.component'; | import { DatatableOrderReportingComponent } from './reporting/components/order-reporting/order-reporting.component'; | ||||||
| import { DatatableDataindexComponent } from './components/dataindex/dataindex.component'; | import { DatatableDataindexComponent } from './components/dataindex/dataindex.component'; | ||||||
|  | import { DatatableComplianceIndexComponent } from './components/compliance/index/index.component'; | ||||||
|  | import { DatatableFinancetableComponent } from './components/financetable/financetable.component'; | ||||||
|  | import { DatatableInvoicetableComponent } from './components/invoicetable/invoicetable.component'; | ||||||
|  | import { DatatableComplianceSalesmanComponent } from './components/compliance/salesman/salesman.component'; | ||||||
|  | import { DatatableComplianceCustomerComponent } from './components/compliance/customer/customer.component'; | ||||||
|  | import { DatatableFundReportingComponent } from './reporting/components/fund-reporting/fund-reporting.component'; | ||||||
|  |  | ||||||
| const routes: Routes = [ | const routes: Routes = [ | ||||||
|   { path: 'dataindex', component: DatatableDataindexComponent }, |   { path: 'dataindex', component: DatatableDataindexComponent }, | ||||||
| @ -15,7 +21,14 @@ const routes: Routes = [ | |||||||
|   { path: 'owner', component: DatatableOwnerComponent }, |   { path: 'owner', component: DatatableOwnerComponent }, | ||||||
|   { path: 'driver', component: DatatableDriverComponent }, |   { path: 'driver', component: DatatableDriverComponent }, | ||||||
|   { path: 'operationtable', component: DatatableOperationtableComponent }, |   { path: 'operationtable', component: DatatableOperationtableComponent }, | ||||||
|   { path: 'reporting/order', component: DatatableOrderReportingComponent }]; |   { path: 'reporting/order', component: DatatableOrderReportingComponent }, | ||||||
|  |   { path: 'compliancetabel/index', component: DatatableComplianceIndexComponent }, | ||||||
|  |   { path: 'compliancetabel/salesman', component: DatatableComplianceSalesmanComponent }, | ||||||
|  |   { path: 'compliancetabel/customer', component: DatatableComplianceCustomerComponent }, | ||||||
|  |   { path: 'financetable', component: DatatableFinancetableComponent }, | ||||||
|  |   { path: 'invoicetable', component: DatatableInvoicetableComponent }, | ||||||
|  |   { path: 'reporting/fund', component: DatatableFundReportingComponent } | ||||||
|  | ]; | ||||||
|    |    | ||||||
|  |  | ||||||
| @NgModule({ | @NgModule({ | ||||||
|  | |||||||
| @ -9,6 +9,14 @@ import { DatatableOperationtableComponent } from './components/operationtable/op | |||||||
| import { OperationtablePieComponent } from './components/operationtable/pie/pie.component'; | import { OperationtablePieComponent } from './components/operationtable/pie/pie.component'; | ||||||
| import { DatatableOrderReportingComponent } from './reporting/components/order-reporting/order-reporting.component'; | import { DatatableOrderReportingComponent } from './reporting/components/order-reporting/order-reporting.component'; | ||||||
| import { DatatableDataindexComponent } from './components/dataindex/dataindex.component'; | import { DatatableDataindexComponent } from './components/dataindex/dataindex.component'; | ||||||
|  | import { DatatableComplianceIndexComponent } from './components/compliance/index/index.component'; | ||||||
|  | import { DatatableFinancetableComponent } from './components/financetable/financetable.component'; | ||||||
|  | import { DatatableInvoicetableComponent } from './components/invoicetable/invoicetable.component'; | ||||||
|  | import { DatatableComplianceSalesmanComponent } from './components/compliance/salesman/salesman.component'; | ||||||
|  | import { DatatableComplianceCustomerComponent } from './components/compliance/customer/customer.component'; | ||||||
|  | import { DatatableReportingUploadSettingComponent } from './reporting/components/upload-setting/upload-setting.component'; | ||||||
|  | import { DatatableReportingVerifyResultComponent } from './reporting/components/verify-result/verify-result.component'; | ||||||
|  | import { DatatableFundReportingComponent } from './reporting/components/fund-reporting/fund-reporting.component'; | ||||||
|  |  | ||||||
| const COMPONENTS: Type<void>[] = [ | const COMPONENTS: Type<void>[] = [ | ||||||
|   DatatableDataindexComponent, |   DatatableDataindexComponent, | ||||||
| @ -18,8 +26,17 @@ const COMPONENTS: Type<void>[] = [ | |||||||
|   DatatableDriverComponent, |   DatatableDriverComponent, | ||||||
|   DatatableOperationtableComponent, |   DatatableOperationtableComponent, | ||||||
|   OperationtablePieComponent, |   OperationtablePieComponent, | ||||||
|   DatatableOrderReportingComponent |   DatatableOrderReportingComponent, | ||||||
| ]; |   DatatableComplianceIndexComponent, | ||||||
|  |   DatatableFinancetableComponent, | ||||||
|  |   DatatableInvoicetableComponent, | ||||||
|  |   DatatableComplianceSalesmanComponent, | ||||||
|  |   DatatableComplianceCustomerComponent, | ||||||
|  |   DatatableReportingUploadSettingComponent, | ||||||
|  |   DatatableReportingVerifyResultComponent, | ||||||
|  |   DatatableFundReportingComponent | ||||||
|  | ] | ||||||
|  |   | ||||||
|  |  | ||||||
| @NgModule({ | @NgModule({ | ||||||
|   imports: [ |   imports: [ | ||||||
|  | |||||||
| @ -0,0 +1,57 @@ | |||||||
|  | <page-header-wrapper [title]="''"></page-header-wrapper> | ||||||
|  |  | ||||||
|  | <nz-card> | ||||||
|  |   <!-- 搜索表单 --> | ||||||
|  |   <div nz-row nzGutter="8"> | ||||||
|  |     <div nz-col [nzSpan]="_$expand ? 24 : 18"> | ||||||
|  |       <sf #sf [schema]="schema" [ui]="ui" [compact]="true" [button]="'none'"></sf> | ||||||
|  |     </div> | ||||||
|  |     <div nz-col [nzSpan]="_$expand ? 24 : 6" [class.text-right]="_$expand"> | ||||||
|  |       <button nz-button nzType="primary" [disabled]="!sf.valid" [nzLoading]="false" (click)="search()" acl | ||||||
|  |         [acl-ability]="['RiskOrder-Search']">查询</button> | ||||||
|  |       <button nz-button (click)="resetSF()">重置</button> | ||||||
|  |       <button nz-button (click)="resetSF()">导出</button> | ||||||
|  |       <button nz-button nzType="link" (click)="expandToggle()"> | ||||||
|  |         {{ !_$expand ? '展开' : '收起' }} | ||||||
|  |         <i nz-icon [nzType]="!_$expand ? 'down' : 'up'"></i> | ||||||
|  |       </button> | ||||||
|  |     </div> | ||||||
|  |   </div> | ||||||
|  | </nz-card> | ||||||
|  | <nz-card> | ||||||
|  |   <nz-tabset [nzTabBarExtraContent]="extraTemplate" *ngIf="tabs.length>0"> | ||||||
|  |  | ||||||
|  |     <nz-tab *ngFor="let tab of tabs" [nzTitle]="tab.name" (nzSelect)="selectChange(tab)"> | ||||||
|  |     </nz-tab> | ||||||
|  |   </nz-tabset> | ||||||
|  |   <!-- 数据列表 --> | ||||||
|  |   <st #st [scroll]="{x:'1200px'}" [data]="service.$api_order_reporting_page" [columns]="columns" | ||||||
|  |     [req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }" | ||||||
|  |     [res]="{ reName: { list: 'data.records', total: 'data.total' } }" | ||||||
|  |     [page]="{ show: true, showSize: true, pageSizes: [10,20, 50, 100] }" [loading]="false"> | ||||||
|  |     <ng-template st-row="orderStatus" let-item let-index="index"> | ||||||
|  |       <a (click)="viewAuditResult(item)" *ngIf="item?.billStatus === '2'">{{item?.billStatusLabel}}</a> | ||||||
|  |       <span *ngIf="item?.billStatus !== '2'">{{item?.billStatusLabel}}</span> | ||||||
|  |  | ||||||
|  |     </ng-template> | ||||||
|  |  | ||||||
|  |     <ng-template st-row="localValid" let-item let-index="index"> | ||||||
|  |       <a (click)="viewResult(item)" *ngIf="item?.billStatus === '2'">{{item?.billStatusLabel}}</a> | ||||||
|  |       <span *ngIf="item?.billStatus !== '2'">{{item?.billStatusLabel}}</span> | ||||||
|  |     </ng-template> | ||||||
|  |     <ng-template st-row="amount" let-item let-index="index"> | ||||||
|  |       <div class="text-right">{{item?.amount | currency :' '}}</div> | ||||||
|  |     </ng-template> | ||||||
|  |   </st> | ||||||
|  | </nz-card> | ||||||
|  | <ng-template #extraTemplate> | ||||||
|  |   <div class="d-flex align-items-center"> | ||||||
|  |     <div class="mr-md"> | ||||||
|  |       已选择 | ||||||
|  |       <strong class="text-red">{{ selectedRows.length }}</strong> 条数据 | ||||||
|  |     </div> | ||||||
|  |     <button nz-button nzType="primary" (click)="upload()">上传</button> | ||||||
|  |     <button nz-button nzType="primary" (click)="recall()">撤回</button> | ||||||
|  |     <button nz-button nzType="primary" (click)="uploadSetting()">上传设置</button> | ||||||
|  |   </div> | ||||||
|  | </ng-template> | ||||||
| @ -0,0 +1,5 @@ | |||||||
|  | :host { | ||||||
|  |   .text-black { | ||||||
|  |     color: #000; | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -0,0 +1,24 @@ | |||||||
|  | import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing'; | ||||||
|  | import { DatatableFundReportingComponent } from './fund-reporting.component'; | ||||||
|  |  | ||||||
|  | describe('DatatableFundReportingComponent', () => { | ||||||
|  |   let component: DatatableFundReportingComponent; | ||||||
|  |   let fixture: ComponentFixture<DatatableFundReportingComponent>; | ||||||
|  |  | ||||||
|  |   beforeEach(waitForAsync(() => { | ||||||
|  |     TestBed.configureTestingModule({ | ||||||
|  |       declarations: [DatatableFundReportingComponent] | ||||||
|  |     }) | ||||||
|  |       .compileComponents(); | ||||||
|  |   })); | ||||||
|  |  | ||||||
|  |   beforeEach(() => { | ||||||
|  |     fixture = TestBed.createComponent(DatatableFundReportingComponent); | ||||||
|  |     component = fixture.componentInstance; | ||||||
|  |     fixture.detectChanges(); | ||||||
|  |   }); | ||||||
|  |  | ||||||
|  |   it('should create', () => { | ||||||
|  |     expect(component).toBeTruthy(); | ||||||
|  |   }); | ||||||
|  | }); | ||||||
| @ -0,0 +1,445 @@ | |||||||
|  | import { Component, OnInit, ViewChild } from '@angular/core'; | ||||||
|  | import { ActivatedRoute, Router } from '@angular/router'; | ||||||
|  | import { STColumn, STComponent, STData } from '@delon/abc/st'; | ||||||
|  | import { SFComponent, SFDateWidgetSchema, SFSchema, SFUISchema } from '@delon/form'; | ||||||
|  | import { ShipperBaseService } from '@shared'; | ||||||
|  | import { NzModalService } from 'ng-zorro-antd/modal'; | ||||||
|  | import { ReportingService } from '../../services/reporting.service'; | ||||||
|  | import { DatatableReportingUploadSettingComponent } from '../upload-setting/upload-setting.component'; | ||||||
|  | import { DatatableReportingVerifyResultComponent } from '../verify-result/verify-result.component'; | ||||||
|  |  | ||||||
|  | @Component({ | ||||||
|  |   selector: 'app-datatable-fund-reporting', | ||||||
|  |   templateUrl: './fund-reporting.component.html', | ||||||
|  |   styleUrls: ['./fund-reporting.component.less'] | ||||||
|  | }) | ||||||
|  | export class DatatableFundReportingComponent implements OnInit { | ||||||
|  |   _$expand = false; | ||||||
|  |   ui!: SFUISchema; | ||||||
|  |   schema!: SFSchema; | ||||||
|  |   columns!: STColumn[]; | ||||||
|  |   @ViewChild('st', { static: false }) st!: STComponent; | ||||||
|  |   @ViewChild('sf', { static: false }) sf!: SFComponent; | ||||||
|  |   tabType!: string; | ||||||
|  |   tabs: any[] = [ | ||||||
|  |     { name: '待上传', value: '1' }, | ||||||
|  |     { name: '上传中', value: '2' }, | ||||||
|  |     { name: '已上传', value: '3' }, | ||||||
|  |     { name: '异常', value: '4' }, | ||||||
|  |     { name: '全部', value: '' } | ||||||
|  |   ]; | ||||||
|  |   selectedIndex = ''; //选择的项目 | ||||||
|  |   serviceTel = ''; | ||||||
|  |   constructor( | ||||||
|  |     public service: ReportingService, | ||||||
|  |     private router: Router, | ||||||
|  |     private ar: ActivatedRoute, | ||||||
|  |     private modal: NzModalService, | ||||||
|  |     public shipperSrv: ShipperBaseService | ||||||
|  |   ) { | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 查询字段个数 | ||||||
|  |    */ | ||||||
|  |   get queryFieldCount(): number { | ||||||
|  |     return Object.keys(this.schema?.properties || {}).length; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 查询参数 | ||||||
|  |    */ | ||||||
|  |   get reqParams() { | ||||||
|  |     const params = Object.assign({}, this.sf?.value || {}, { | ||||||
|  |       representationsStatus: this.selectedIndex, | ||||||
|  |     }); | ||||||
|  |     delete params._$expand; | ||||||
|  |     return { ...params }; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 选中行 | ||||||
|  |    */ | ||||||
|  |   get selectedRows() { | ||||||
|  |     return this.st?.list.filter((item: any) => item.checked) || []; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 伸缩查询条件 | ||||||
|  |    */ | ||||||
|  |   expandToggle() { | ||||||
|  |     this._$expand = !this._$expand; | ||||||
|  |     this.sf?.setValue('/_$expand', this._$expand); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 重置表单 | ||||||
|  |    */ | ||||||
|  |   resetSF() { | ||||||
|  |     this.sf.reset(); | ||||||
|  |     this._$expand = false; | ||||||
|  |   } | ||||||
|  |   /** | ||||||
|  |    * 程序初始化入口 | ||||||
|  |    */ | ||||||
|  |   ngOnInit() { | ||||||
|  |     this.initSF(); | ||||||
|  |     this.initST(); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 初始化查询表单 | ||||||
|  |    */ | ||||||
|  |   initSF() { | ||||||
|  |     this.schema = { | ||||||
|  |       properties: { | ||||||
|  |         _$expand: { type: 'boolean', ui: { hidden: true } }, | ||||||
|  |         billCode: { title: '订单号', type: 'string', ui: { placeholder: '请输入' } }, | ||||||
|  |         resourceCode: { | ||||||
|  |           type: 'string', | ||||||
|  |           title: '运单号', | ||||||
|  |           ui: { | ||||||
|  |             placeholder: '请输入', | ||||||
|  |           }, | ||||||
|  |         }, | ||||||
|  |         enterpriseInfoId: { | ||||||
|  |           title: '网络货运人', | ||||||
|  |           type: 'string', | ||||||
|  |           ui: { | ||||||
|  |             placeholder: '请选择', | ||||||
|  |             widget: 'select', | ||||||
|  |             asyncData: () => this.shipperSrv.getNetworkFreightForwarder({}, false), | ||||||
|  |  | ||||||
|  |             allowClear: true | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         externalResourceCode: { | ||||||
|  |           title: '货主', | ||||||
|  |           type: 'string', | ||||||
|  |           ui: { | ||||||
|  |             placeholder: '请输入', | ||||||
|  |             visibleIf: { | ||||||
|  |               _$expand: (value: boolean) => value, | ||||||
|  |             }, | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         driverName: { | ||||||
|  |           title: '承运司机', | ||||||
|  |           type: 'string', | ||||||
|  |           ui: { | ||||||
|  |             placeholder: '请输入司机姓名/手机号', visibleIf: { | ||||||
|  |               _$expand: (value: boolean) => value, | ||||||
|  |             }, | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         carNo: { | ||||||
|  |           title: '车牌号', | ||||||
|  |           type: 'string', | ||||||
|  |           maxLength: 9, | ||||||
|  |           ui: { | ||||||
|  |             placeholder: '请输入', | ||||||
|  |             visibleIf: { | ||||||
|  |               _$expand: (value: boolean) => value, | ||||||
|  |             }, | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         serviceType: { | ||||||
|  |           title: '上传状态', | ||||||
|  |           type: 'string', | ||||||
|  |           ui: { | ||||||
|  |             placeholder: '请选择', | ||||||
|  |             widget: 'dict-select', | ||||||
|  |             params: { dictKey: 'service:type' }, | ||||||
|  |             containsAllLabel: true, | ||||||
|  |             visibleIf: { | ||||||
|  |               _$expand: (value: boolean) => value, | ||||||
|  |             }, | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         serviceType1: { | ||||||
|  |           title: '本地校验', | ||||||
|  |           type: 'string', | ||||||
|  |           ui: { | ||||||
|  |             placeholder: '请选择', | ||||||
|  |             widget: 'dict-select', | ||||||
|  |             params: { dictKey: 'service:type' }, | ||||||
|  |             containsAllLabel: true, | ||||||
|  |             visibleIf: { | ||||||
|  |               _$expand: (value: boolean) => value, | ||||||
|  |             }, | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         createTime: { | ||||||
|  |           title: '上传时间', | ||||||
|  |           type: 'string', | ||||||
|  |           ui: { | ||||||
|  |             widget: 'sl-from-to', | ||||||
|  |             type: 'date', | ||||||
|  |             format: 'yyyy-MM-dd', | ||||||
|  |             visibleIf: { | ||||||
|  |               _$expand: (value: boolean) => value, | ||||||
|  |             }, | ||||||
|  |           } as SFDateWidgetSchema, | ||||||
|  |         }, | ||||||
|  |         createTime1: { | ||||||
|  |           title: '运单生成时间', | ||||||
|  |           type: 'string', | ||||||
|  |           ui: { | ||||||
|  |             widget: 'sl-from-to', | ||||||
|  |             type: 'date', | ||||||
|  |             format: 'yyyy-MM-dd', | ||||||
|  |             visibleIf: { | ||||||
|  |               _$expand: (value: boolean) => value, | ||||||
|  |             }, | ||||||
|  |           } as SFDateWidgetSchema, | ||||||
|  |         }, | ||||||
|  |         createTime2: { | ||||||
|  |           title: '发货时间', | ||||||
|  |           type: 'string', | ||||||
|  |           ui: { | ||||||
|  |             widget: 'sl-from-to', | ||||||
|  |             type: 'date', | ||||||
|  |             format: 'yyyy-MM-dd', | ||||||
|  |             visibleIf: { | ||||||
|  |               _$expand: (value: boolean) => value, | ||||||
|  |             }, | ||||||
|  |           } as SFDateWidgetSchema, | ||||||
|  |         }, | ||||||
|  |         createTime3: { | ||||||
|  |           title: '收货时间', | ||||||
|  |           type: 'string', | ||||||
|  |           ui: { | ||||||
|  |             widget: 'sl-from-to', | ||||||
|  |             type: 'date', | ||||||
|  |             format: 'yyyy-MM-dd', | ||||||
|  |             visibleIf: { | ||||||
|  |               _$expand: (value: boolean) => value, | ||||||
|  |             }, | ||||||
|  |           } as SFDateWidgetSchema, | ||||||
|  |         }, | ||||||
|  |  | ||||||
|  |         loadingPlace: { | ||||||
|  |           title: '车辆轨迹', | ||||||
|  |           type: 'string', | ||||||
|  |           enum: [ | ||||||
|  |             { label: '全部', value: '' }, | ||||||
|  |             { label: '有', value: '1' }, | ||||||
|  |             { label: '无', value: '0' } | ||||||
|  |           ], | ||||||
|  |           ui: { | ||||||
|  |             placeholder: '请选择', | ||||||
|  |             widget: 'select', | ||||||
|  |             visibleIf: { | ||||||
|  |               _$expand: (value: boolean) => value, | ||||||
|  |             }, | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         loadingPlace1: { | ||||||
|  |           title: '司机轨迹', | ||||||
|  |           type: 'string', | ||||||
|  |           enum: [ | ||||||
|  |             { label: '全部', value: '' }, | ||||||
|  |             { label: '有', value: '1' }, | ||||||
|  |             { label: '无', value: '0' } | ||||||
|  |           ], | ||||||
|  |           ui: { | ||||||
|  |             placeholder: '请选择', | ||||||
|  |             widget: 'select', | ||||||
|  |             visibleIf: { | ||||||
|  |               _$expand: (value: boolean) => value, | ||||||
|  |             }, | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |       }, | ||||||
|  |     }; | ||||||
|  |     this.ui = { | ||||||
|  |       '*': { spanLabelFixed: 120, grid: { span: 8, gutter: 4 }, enter: () => this.search() }, | ||||||
|  |       $time: { grid: { span: 24 } }, | ||||||
|  |     }; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 初始化数据列表 | ||||||
|  |    */ | ||||||
|  |   initST() { | ||||||
|  |     this.columns = [ | ||||||
|  |       { title: '', type: 'checkbox', className: 'text-center', width: '60px', }, | ||||||
|  |       { title: '订单状态', render: 'orderStatus', className: 'text-center', width: '120px', }, | ||||||
|  |       { title: '司机状态', render: 'driverStatus', className: 'text-center', width: '120px', }, | ||||||
|  |       { title: '车辆状态', render: 'carStatus', className: 'text-center', width: '120px', }, | ||||||
|  |       { title: '本地校验', render: 'localValid', className: 'text-center', width: '120px', }, | ||||||
|  |       { | ||||||
|  |         title: '订单号', | ||||||
|  |         render: 'billComplianceVOS', | ||||||
|  |         className: 'text-center', | ||||||
|  |         width: '150px', | ||||||
|  |       }, | ||||||
|  |       { title: '运单号', render: 'freightDetails', className: 'text-center', width: '150px', }, | ||||||
|  |  | ||||||
|  |       { | ||||||
|  |         title: '网络货运人', | ||||||
|  |         render: 'serviceType', | ||||||
|  |         className: 'text-center', | ||||||
|  |         width: '180px', | ||||||
|  |       }, | ||||||
|  |       { title: '统一社会信用代码', index: 'loadingPlace', render: 'loadingPlace', className: 'text-center', width: '200px' }, | ||||||
|  |       { title: '业务类型', index: 'dischargePlace', render: 'dischargePlace', className: 'text-center', width: '120px' }, | ||||||
|  |       { title: '运单生成时间', render: 'goodsInfoVOList', className: 'text-center', width: '180px' }, | ||||||
|  |       { title: '发货时间', render: 'driver', className: 'text-center', width: '180px' }, | ||||||
|  |       { title: '收货时间', render: 'payeeName', className: 'text-center', width: '180px' }, | ||||||
|  |       { title: '托运人名称', render: 'transportInfo', className: 'text-center', width: '250px' }, | ||||||
|  |       { title: '托运人统一社会信用代码', index: 'loadingPlace', render: 'loadingPlace', className: 'text-center', width: '200px' }, | ||||||
|  |       { title: '装货地址', index: 'dischargePlace', render: 'dischargePlace', className: 'text-center', width: '200px' }, | ||||||
|  |       { title: '收货方名称', render: 'driver', className: 'text-center', width: '150px' }, | ||||||
|  |       { title: '收货地址', render: 'payeeName', className: 'text-center', width: '150px' }, | ||||||
|  |       { title: '运费金额', render: 'amount', className: 'text-center', width: '250px' }, | ||||||
|  |       { title: '车牌号', render: 'payeeName', className: 'text-center', width: '150px' }, | ||||||
|  |       { title: '车牌颜色', render: 'transportInfo', className: 'text-center', width: '250px' }, | ||||||
|  |       { title: '司机姓名', render: 'payeeName', className: 'text-center', width: '150px' }, | ||||||
|  |       { title: '司机手机号码', render: 'transportInfo', className: 'text-center', width: '200px' }, | ||||||
|  |       { title: '司机身份证号', render: 'payeeName', className: 'text-center', width: '150px' }, | ||||||
|  |       { title: '货物信息', render: 'transportInfo', className: 'text-center', width: '180px' }, | ||||||
|  |       { title: '实际承运人名称', render: 'payeeName', className: 'text-center', width: '150px' }, | ||||||
|  |       { title: '实际承运人证件号码', render: 'transportInfo', className: 'text-center', width: '200px' }, | ||||||
|  |       { title: '实际承运人道路运输许可证号', render: 'payeeName', className: 'text-center', width: '150px' }, | ||||||
|  |       { title: '车辆轨迹', render: 'transportInfo', className: 'text-center', width: '250px' }, | ||||||
|  |       { title: '司机轨迹', render: 'payeeName', className: 'text-center', width: '150px' }, | ||||||
|  |       { title: '上传次数', render: 'transportInfo', className: 'text-center', width: '150px' }, | ||||||
|  |       { title: '上传时间', render: 'transportInfo', className: 'text-center', width: '180px' }, | ||||||
|  |     ]; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    *撤销 | ||||||
|  |    * @param record 记录实例 | ||||||
|  |    */ | ||||||
|  |   recall() { | ||||||
|  |     if (this.selectedRows.length === 0) { | ||||||
|  |       this.openWainingModal('请选择需要撤回的数据'); | ||||||
|  |       return; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     this.service.request(this.service.$api_recall_reporting, { rows: this.selectedRows }).subscribe((res: any) => { | ||||||
|  |       if (res) { | ||||||
|  |         this.search(); | ||||||
|  |       } | ||||||
|  |     }) | ||||||
|  |  | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   selectChange(item: any) { | ||||||
|  |     this.selectedIndex = item?.representationsStatus || ''; | ||||||
|  |     setTimeout(() => { | ||||||
|  |       this.st.load(1); | ||||||
|  |     }) | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 查看当行数据 | ||||||
|  |    */ | ||||||
|  |   view(record: STData) { | ||||||
|  |     // this.router.navigate(['../view', record.uuid], { relativeTo: this.ar }); | ||||||
|  |     this.router.navigate(['../detail'], { | ||||||
|  |       queryParams: { | ||||||
|  |         id: record.id, | ||||||
|  |       }, | ||||||
|  |       relativeTo: this.ar | ||||||
|  |     }); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   // appeal(item: any) { | ||||||
|  |   //   const modalRef = this.modal.create({ | ||||||
|  |   //     nzTitle: '申诉', | ||||||
|  |   //     nzWidth: '40%', | ||||||
|  |   //     nzContent: CtcAppealComponent, | ||||||
|  |   //     nzComponentParams: { | ||||||
|  |   //       i: item, | ||||||
|  |   //       status: 'add' | ||||||
|  |   //     }, | ||||||
|  |   //     nzFooter: null | ||||||
|  |   //   }); | ||||||
|  |   //   modalRef.afterClose.subscribe(res => { | ||||||
|  |   //     if (res) { | ||||||
|  |   //       this.search({ representationsStatus: '' }); | ||||||
|  |   //     } | ||||||
|  |   //   }) | ||||||
|  |   // } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 上传 | ||||||
|  |    */ | ||||||
|  |   upload() { | ||||||
|  |     if (this.selectedRows.length === 0) { | ||||||
|  |       this.openWainingModal('请选择需要上传的数据'); | ||||||
|  |       return; | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * | ||||||
|  |    * @param params 上传设置 | ||||||
|  |    */ | ||||||
|  |   uploadSetting() { | ||||||
|  |     const modalRef = this.modal.create({ | ||||||
|  |       nzTitle: '上传设置', | ||||||
|  |       nzWidth: 600, | ||||||
|  |       nzContent: DatatableReportingUploadSettingComponent, | ||||||
|  |       nzComponentParams: {}, | ||||||
|  |       nzFooter: null | ||||||
|  |     }); | ||||||
|  |     modalRef.afterClose.subscribe(res => { | ||||||
|  |     }) | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 查看校验结果 | ||||||
|  |    */ | ||||||
|  |   viewResult(item: any) { | ||||||
|  |     const modalRef = this.modal.create({ | ||||||
|  |       nzTitle: '校验结果', | ||||||
|  |       nzWidth: 1200, | ||||||
|  |       nzContent: DatatableReportingVerifyResultComponent, | ||||||
|  |       nzComponentParams: { | ||||||
|  |         record: item | ||||||
|  |       }, | ||||||
|  |       nzFooter: null | ||||||
|  |     }); | ||||||
|  |     modalRef.afterClose.subscribe(res => { | ||||||
|  |     }) | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 查看监管审核结果 | ||||||
|  |    */ | ||||||
|  |   viewAuditResult(record: any) { | ||||||
|  |     if (record?.billStatus !== '2') { | ||||||
|  |       return; | ||||||
|  |     } | ||||||
|  |     this.openWainingModal('监管审核结果', record?.result) | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |   search() { | ||||||
|  |     this.st.load(1); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |   * 异步导出 | ||||||
|  |   */ | ||||||
|  |   export() { | ||||||
|  |     this.service.exportStart(this.sf?.value, this.service.$api_async_export_order_reporting_list); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   openWainingModal(content: string, title = '提示') { | ||||||
|  |     this.modal.warning({ | ||||||
|  |       nzMask: false, | ||||||
|  |       nzTitle: title, | ||||||
|  |       nzContent: content, | ||||||
|  |     }) | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -29,57 +29,29 @@ | |||||||
|     [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' } }" |     [res]="{ reName: { list: 'data.records', total: 'data.total' } }" | ||||||
|     [page]="{ show: true, showSize: true, pageSizes: [10,20, 50, 100] }" [loading]="false"> |     [page]="{ show: true, showSize: true, pageSizes: [10,20, 50, 100] }" [loading]="false"> | ||||||
|     <ng-template st-row="orderSn" let-item let-index="index"> |     <ng-template st-row="orderStatus" let-item let-index="index"> | ||||||
|       <a (click)="view(item)">{{item.billCode}}</a> |       <a (click)="viewAuditResult(item)" *ngIf="item?.billStatus === '2'">{{item?.billStatusLabel}}</a> | ||||||
|  |       <span *ngIf="item?.billStatus !== '2'">{{item?.billStatusLabel}}</span> | ||||||
|  |  | ||||||
|     </ng-template> |     </ng-template> | ||||||
|     <ng-template st-row="freightDetails" let-item> |  | ||||||
|       <div *ngFor="let item of item.freightDetails"> |     <ng-template st-row="localValid" let-item let-index="index"> | ||||||
|         <div>{{item.expenseName}}:{{item.price | currency}} </div> |       <a (click)="viewResult(item)" *ngIf="item?.billStatus === '2'">{{item?.billStatusLabel}}</a> | ||||||
|       </div> |       <span *ngIf="item?.billStatus !== '2'">{{item?.billStatusLabel}}</span> | ||||||
|     </ng-template> |     </ng-template> | ||||||
|     <ng-template st-row="loadingPlace" let-item let-index="index"> |     <ng-template st-row="amount" let-item let-index="index"> | ||||||
|       <div *ngFor="let address of item.loadingAddressArr">{{ address }} </div> |       <div class="text-right">{{item?.amount | currency :' '}}</div> | ||||||
|     </ng-template> |  | ||||||
|     <ng-template st-row="dischargePlace" let-item let-index="index"> |  | ||||||
|       <div *ngFor="let address of item.unloadingAddressArr">{{ address }}</div> |  | ||||||
|     </ng-template> |  | ||||||
|     <ng-template st-row="goodsInfoVOList" let-item> |  | ||||||
|       <div *ngFor="let item of item.goodsInfoVOList"> |  | ||||||
|         <div>货物名称 : {{item.goodsName}}</div> |  | ||||||
|         <div>重量/体积 : {{item.weight}}/{{item.volume}}</div> |  | ||||||
|         <div>车型/车长 :{{item.carModelLabel}}/{{item.carLengthLabel}}</div> |  | ||||||
|       </div> |  | ||||||
|     </ng-template> |  | ||||||
|     <ng-template st-row="driver" let-item> |  | ||||||
|       <div> {{item.driverName}}</div> |  | ||||||
|       <div>{{item.driverPhone}}</div> |  | ||||||
|       <div>{{item.carNo}}</div> |  | ||||||
|     </ng-template> |  | ||||||
|     <ng-template st-row="payeeName" let-item> |  | ||||||
|       <div>{{item.payeeName}}</div> |  | ||||||
|       <div>{{item.payeePhone}}</div> |  | ||||||
|     </ng-template> |  | ||||||
|     <ng-template st-row="transportInfo" let-item> |  | ||||||
|       <div>创建时间:{{item.createTime}}</div> |  | ||||||
|       <div>装货时间:{{item.loadTime}}</div> |  | ||||||
|       <div>卸货时间:{{item.unloadTime}}</div> |  | ||||||
|     </ng-template> |  | ||||||
|     <ng-template st-row="billComplianceVOS" let-item> |  | ||||||
|       <div *ngFor="let item of item?.billComplianceVOS">{{item?.complianceName}}</div> |  | ||||||
|     </ng-template> |  | ||||||
|     <ng-template st-row="serviceType" let-item> |  | ||||||
|       <div>{{item?.billTypeLabel}} ({{item?.serviceTypeLabel}}) </div> |  | ||||||
|     </ng-template> |     </ng-template> | ||||||
|   </st> |   </st> | ||||||
| </nz-card> | </nz-card> | ||||||
| <ng-template #extraTemplate> | <ng-template #extraTemplate> | ||||||
|   <div class="d-flex align-items-center "> |   <div class="d-flex align-items-center"> | ||||||
|     <div class="mr-md"> |     <div class="mr-md"> | ||||||
|       已选择 |       已选择 | ||||||
|       <strong class="text-red">{{ selectedRows.length }}</strong> 条数据 |       <strong class="text-red">{{ selectedRows.length }}</strong> 条数据 | ||||||
|     </div> |     </div> | ||||||
|     <button nz-button nzType="primary" (click)="upload()">上传</button> |     <button nz-button nzType="primary" (click)="upload()">上传</button> | ||||||
|     <button nz-button nzType="primary" (click)="recall({})">撤回</button> |     <button nz-button nzType="primary" (click)="recall()">撤回</button> | ||||||
|     <button nz-button nzType="primary" (click)="uploadSetting()">上传设置</button> |     <button nz-button nzType="primary" (click)="uploadSetting()">上传设置</button> | ||||||
|   </div> |   </div> | ||||||
| </ng-template> | </ng-template> | ||||||
|  | |||||||
| @ -0,0 +1,5 @@ | |||||||
|  | :host { | ||||||
|  |   .text-black { | ||||||
|  |     color: #000; | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -1,15 +1,17 @@ | |||||||
| import { Component, OnInit, ViewChild } from '@angular/core'; | import { Component, OnInit, ViewChild } from '@angular/core'; | ||||||
| import { Router, ActivatedRoute } from '@angular/router'; | import { ActivatedRoute, Router } from '@angular/router'; | ||||||
| import { STColumn, STComponent, STData } from '@delon/abc/st'; | import { STColumn, STComponent, STData } from '@delon/abc/st'; | ||||||
| import { SFComponent, SFDateWidgetSchema, SFSchema, SFUISchema } from '@delon/form'; | import { SFComponent, SFDateWidgetSchema, SFSchema, SFUISchema } from '@delon/form'; | ||||||
| import { ModalHelper, _HttpClient } from '@delon/theme'; |  | ||||||
| import { ShipperBaseService } from '@shared'; | import { ShipperBaseService } from '@shared'; | ||||||
| import { NzModalService } from 'ng-zorro-antd/modal'; | import { NzModalService } from 'ng-zorro-antd/modal'; | ||||||
| import { ReportingService } from '../../services/reporting.service'; | import { ReportingService } from '../../services/reporting.service'; | ||||||
|  | import { DatatableReportingUploadSettingComponent } from '../upload-setting/upload-setting.component'; | ||||||
|  | import { DatatableReportingVerifyResultComponent } from '../verify-result/verify-result.component'; | ||||||
|  |  | ||||||
| @Component({ | @Component({ | ||||||
|   selector: 'app-datatable-order-reporting', |   selector: 'app-datatable-order-reporting', | ||||||
|   templateUrl: './order-reporting.component.html', |   templateUrl: './order-reporting.component.html', | ||||||
|  |   styleUrls: ['./order-reporting.component.less'] | ||||||
| }) | }) | ||||||
| export class DatatableOrderReportingComponent implements OnInit { | export class DatatableOrderReportingComponent implements OnInit { | ||||||
|   _$expand = false; |   _$expand = false; | ||||||
| @ -226,7 +228,7 @@ export class DatatableOrderReportingComponent implements OnInit { | |||||||
|           ], |           ], | ||||||
|           ui: { |           ui: { | ||||||
|             placeholder: '请选择', |             placeholder: '请选择', | ||||||
|  |             widget: 'select', | ||||||
|             visibleIf: { |             visibleIf: { | ||||||
|               _$expand: (value: boolean) => value, |               _$expand: (value: boolean) => value, | ||||||
|             }, |             }, | ||||||
| @ -242,7 +244,7 @@ export class DatatableOrderReportingComponent implements OnInit { | |||||||
|           ], |           ], | ||||||
|           ui: { |           ui: { | ||||||
|             placeholder: '请选择', |             placeholder: '请选择', | ||||||
|  |             widget: 'select', | ||||||
|             visibleIf: { |             visibleIf: { | ||||||
|               _$expand: (value: boolean) => value, |               _$expand: (value: boolean) => value, | ||||||
|             }, |             }, | ||||||
| @ -261,11 +263,11 @@ export class DatatableOrderReportingComponent implements OnInit { | |||||||
|    */ |    */ | ||||||
|   initST() { |   initST() { | ||||||
|     this.columns = [ |     this.columns = [ | ||||||
|       { title: '', type: 'checkbox', className: 'text-center', width: '80px', }, |       { title: '', type: 'checkbox', className: 'text-center', width: '60px', }, | ||||||
|       { title: '订单状态', index: 'name', className: 'text-center', width: '120px', }, |       { title: '订单状态', render: 'orderStatus', className: 'text-center', width: '120px', }, | ||||||
|       { title: '司机状态', index: 'name', className: 'text-center', width: '120px', }, |       { title: '司机状态', render: 'driverStatus', className: 'text-center', width: '120px', }, | ||||||
|       { title: '车辆状态', index: 'name', className: 'text-center', width: '120px', }, |       { title: '车辆状态', render: 'carStatus', className: 'text-center', width: '120px', }, | ||||||
|       { title: '本地校验', render: 'orderSn', className: 'text-center', width: '180px', }, |       { title: '本地校验', render: 'localValid', className: 'text-center', width: '120px', }, | ||||||
|       { |       { | ||||||
|         title: '订单号', |         title: '订单号', | ||||||
|         render: 'billComplianceVOS', |         render: 'billComplianceVOS', | ||||||
| @ -278,71 +280,50 @@ export class DatatableOrderReportingComponent implements OnInit { | |||||||
|         title: '网络货运人', |         title: '网络货运人', | ||||||
|         render: 'serviceType', |         render: 'serviceType', | ||||||
|         className: 'text-center', |         className: 'text-center', | ||||||
|         width: '120px', |         width: '180px', | ||||||
|       }, |       }, | ||||||
|       { title: '统一社会信用代码', index: 'loadingPlace', render: 'loadingPlace', className: 'text-center', width: '300px' }, |       { title: '统一社会信用代码', index: 'loadingPlace', render: 'loadingPlace', className: 'text-center', width: '200px' }, | ||||||
|       { title: '业务类型', index: 'dischargePlace', render: 'dischargePlace', className: 'text-center', width: '300px' }, |       { title: '业务类型', index: 'dischargePlace', render: 'dischargePlace', className: 'text-center', width: '120px' }, | ||||||
|       { title: '运单生成时间', render: 'goodsInfoVOList', className: 'text-center', width: '200px' }, |       { title: '运单生成时间', render: 'goodsInfoVOList', className: 'text-center', width: '180px' }, | ||||||
|       { title: '发货时间', render: 'driver', className: 'text-center', width: '150px' }, |       { title: '发货时间', render: 'driver', className: 'text-center', width: '180px' }, | ||||||
|       { title: '收货时间', render: 'payeeName', className: 'text-center', width: '150px' }, |       { title: '收货时间', render: 'payeeName', className: 'text-center', width: '180px' }, | ||||||
|       { title: '托运人名称', render: 'transportInfo', className: 'text-center', width: '250px' }, |       { title: '托运人名称', render: 'transportInfo', className: 'text-center', width: '250px' }, | ||||||
|       { title: '托运人统一社会信用代码', index: 'loadingPlace', render: 'loadingPlace', className: 'text-center', width: '300px' }, |       { title: '托运人统一社会信用代码', index: 'loadingPlace', render: 'loadingPlace', className: 'text-center', width: '200px' }, | ||||||
|       { title: '装货地址', index: 'dischargePlace', render: 'dischargePlace', className: 'text-center', width: '300px' }, |       { title: '装货地址', index: 'dischargePlace', render: 'dischargePlace', className: 'text-center', width: '200px' }, | ||||||
|       { title: '运单生成时间', render: 'goodsInfoVOList', className: 'text-center', width: '200px' }, |  | ||||||
|       { title: '收货方名称', render: 'driver', className: 'text-center', width: '150px' }, |       { title: '收货方名称', render: 'driver', className: 'text-center', width: '150px' }, | ||||||
|       { title: '收货地址', render: 'payeeName', className: 'text-center', width: '150px' }, |       { title: '收货地址', render: 'payeeName', className: 'text-center', width: '150px' }, | ||||||
|       { title: '运费金额', render: 'transportInfo', className: 'text-center', width: '250px' }, |       { title: '运费金额', render: 'amount', className: 'text-center', width: '250px' }, | ||||||
|       { title: '车牌号', render: 'payeeName', className: 'text-center', width: '150px' }, |       { title: '车牌号', render: 'payeeName', className: 'text-center', width: '150px' }, | ||||||
|       { title: '车牌颜色', render: 'transportInfo', className: 'text-center', width: '250px' }, |       { title: '车牌颜色', render: 'transportInfo', className: 'text-center', width: '250px' }, | ||||||
|       { title: '司机姓名', render: 'payeeName', className: 'text-center', width: '150px' }, |       { title: '司机姓名', render: 'payeeName', className: 'text-center', width: '150px' }, | ||||||
|       { title: '司机手机号码', render: 'transportInfo', className: 'text-center', width: '250px' }, |       { title: '司机手机号码', render: 'transportInfo', className: 'text-center', width: '200px' }, | ||||||
|       { title: '司机身份证号', render: 'payeeName', className: 'text-center', width: '150px' }, |       { title: '司机身份证号', render: 'payeeName', className: 'text-center', width: '150px' }, | ||||||
|       { title: '货物信息', render: 'transportInfo', className: 'text-center', width: '250px' }, |       { title: '货物信息', render: 'transportInfo', className: 'text-center', width: '180px' }, | ||||||
|       { title: '实际承运人名称', render: 'payeeName', className: 'text-center', width: '150px' }, |       { title: '实际承运人名称', render: 'payeeName', className: 'text-center', width: '150px' }, | ||||||
|       { title: '实际承运人证件号码', render: 'transportInfo', className: 'text-center', width: '250px' }, |       { title: '实际承运人证件号码', render: 'transportInfo', className: 'text-center', width: '200px' }, | ||||||
|       { title: '实际承运人道路运输许可证号', render: 'payeeName', className: 'text-center', width: '150px' }, |       { title: '实际承运人道路运输许可证号', render: 'payeeName', className: 'text-center', width: '150px' }, | ||||||
|       { title: '车辆轨迹', render: 'transportInfo', className: 'text-center', width: '250px' }, |       { title: '车辆轨迹', render: 'transportInfo', className: 'text-center', width: '250px' }, | ||||||
|       { title: '司机轨迹', render: 'payeeName', className: 'text-center', width: '150px' }, |       { title: '司机轨迹', render: 'payeeName', className: 'text-center', width: '150px' }, | ||||||
|       { title: '上传次数', render: 'transportInfo', className: 'text-center', width: '250px' }, |       { title: '上传次数', render: 'transportInfo', className: 'text-center', width: '150px' }, | ||||||
|       { title: '上传时间', render: 'transportInfo', className: 'text-center', width: '250px' }, |       { title: '上传时间', render: 'transportInfo', className: 'text-center', width: '180px' }, | ||||||
|       { |  | ||||||
|         title: '操作', |  | ||||||
|         width: '200px', |  | ||||||
|         className: 'text-center', |  | ||||||
|         buttons: [ |  | ||||||
|           // { text: '编辑', click: (_record: any) => this.appeal(_record) }, |  | ||||||
|           { |  | ||||||
|             text: '申诉', |  | ||||||
|             // click: (record) => this.appeal(record), |  | ||||||
|             iif: (_record) => _record.representationsStatus === '1', |  | ||||||
|             acl: { 'ability': ['RiskOrder-Appeal'] } |  | ||||||
|           }, |  | ||||||
|           { |  | ||||||
|             text: '撤销申诉', |  | ||||||
|             pop: { |  | ||||||
|               title: '是否确定立即撤销申诉?', |  | ||||||
|               okType: 'danger', |  | ||||||
|             }, |  | ||||||
|             click: (record) => this.recall(record), |  | ||||||
|             iif: (_record) => _record.representationsStatus === '2', |  | ||||||
|             acl: { 'ability': ['RiskOrder-CancleAppeal'] } |  | ||||||
|           }, |  | ||||||
|           { text: '详情', click: (_record: any) => this.view(_record), acl: { 'ability': ['RiskOrder-Detail'] } }, |  | ||||||
|         ], |  | ||||||
|       }, |  | ||||||
|     ]; |     ]; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|   /** |   /** | ||||||
|    * 删除单个实例 |    *撤销 | ||||||
|    * @param record 记录实例 |    * @param record 记录实例 | ||||||
|    */ |    */ | ||||||
|   recall(record: STData) { |   recall() { | ||||||
|     this.service.request(this.service.$api_recall_reporting, { id: record?.id }).subscribe((res: any) => { |     if (this.selectedRows.length === 0) { | ||||||
|  |       this.openWainingModal('请选择需要撤回的数据'); | ||||||
|  |       return; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     this.service.request(this.service.$api_recall_reporting, { rows: this.selectedRows }).subscribe((res: any) => { | ||||||
|       if (res) { |       if (res) { | ||||||
|         this.search({ representationsStatus: '' }); |         this.search(); | ||||||
|       } |       } | ||||||
|     }) |     }) | ||||||
|  |  | ||||||
| @ -390,7 +371,10 @@ export class DatatableOrderReportingComponent implements OnInit { | |||||||
|    * 上传 |    * 上传 | ||||||
|    */ |    */ | ||||||
|   upload() { |   upload() { | ||||||
|  |     if (this.selectedRows.length === 0) { | ||||||
|  |       this.openWainingModal('请选择需要上传的数据'); | ||||||
|  |       return; | ||||||
|  |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |  | ||||||
| @ -399,10 +383,46 @@ export class DatatableOrderReportingComponent implements OnInit { | |||||||
|    * @param params 上传设置 |    * @param params 上传设置 | ||||||
|    */ |    */ | ||||||
|   uploadSetting() { |   uploadSetting() { | ||||||
|  |     const modalRef = this.modal.create({ | ||||||
|  |       nzTitle: '上传设置', | ||||||
|  |       nzWidth: 600, | ||||||
|  |       nzContent: DatatableReportingUploadSettingComponent, | ||||||
|  |       nzComponentParams: {}, | ||||||
|  |       nzFooter: null | ||||||
|  |     }); | ||||||
|  |     modalRef.afterClose.subscribe(res => { | ||||||
|  |     }) | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   search(params = {}) { |   /** | ||||||
|  |    * 查看校验结果 | ||||||
|  |    */ | ||||||
|  |   viewResult(item: any) { | ||||||
|  |     const modalRef = this.modal.create({ | ||||||
|  |       nzTitle: '校验结果', | ||||||
|  |       nzWidth: 1200, | ||||||
|  |       nzContent: DatatableReportingVerifyResultComponent, | ||||||
|  |       nzComponentParams: { | ||||||
|  |         record: item | ||||||
|  |       }, | ||||||
|  |       nzFooter: null | ||||||
|  |     }); | ||||||
|  |     modalRef.afterClose.subscribe(res => { | ||||||
|  |     }) | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 查看监管审核结果 | ||||||
|  |    */ | ||||||
|  |   viewAuditResult(record: any) { | ||||||
|  |     if (record?.billStatus !== '2') { | ||||||
|  |       return; | ||||||
|  |     } | ||||||
|  |     this.openWainingModal('监管审核结果', record?.result) | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |   search() { | ||||||
|     this.st.load(1); |     this.st.load(1); | ||||||
|   } |   } | ||||||
|  |  | ||||||
| @ -413,4 +433,13 @@ export class DatatableOrderReportingComponent implements OnInit { | |||||||
|     this.service.exportStart(this.sf?.value, this.service.$api_async_export_order_reporting_list); |     this.service.exportStart(this.sf?.value, this.service.$api_async_export_order_reporting_list); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   openWainingModal(content: string, title = '提示') { | ||||||
|  |     this.modal.warning({ | ||||||
|  |       nzMask: false, | ||||||
|  |       nzTitle: title, | ||||||
|  |       nzContent: content, | ||||||
|  |     }) | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -0,0 +1,8 @@ | |||||||
|  | <nz-spin [nzSpinning]="!i"></nz-spin> | ||||||
|  | <sf *ngIf="i" #sf mode="edit" [schema]="schema" [ui]="ui" [formData]="i" button="none"> | ||||||
|  |   <div class="modal-footer"> | ||||||
|  |     <button nz-button type="button" (click)="close()">取消</button> | ||||||
|  |     <button nz-button type="submit" nzType="primary" (click)="save(sf.value)" [disabled]="!sf.valid" | ||||||
|  |       [nzLoading]="service.http.loading">修改</button> | ||||||
|  |   </div> | ||||||
|  | </sf> | ||||||
| @ -0,0 +1,24 @@ | |||||||
|  | import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing'; | ||||||
|  | import { DatatableReportingUploadSettingComponent } from './upload-setting.component'; | ||||||
|  |  | ||||||
|  | describe('DatatableReportingUploadSettingComponent', () => { | ||||||
|  |   let component: DatatableReportingUploadSettingComponent; | ||||||
|  |   let fixture: ComponentFixture<DatatableReportingUploadSettingComponent>; | ||||||
|  |  | ||||||
|  |   beforeEach(waitForAsync(() => { | ||||||
|  |     TestBed.configureTestingModule({ | ||||||
|  |       declarations: [DatatableReportingUploadSettingComponent] | ||||||
|  |     }) | ||||||
|  |       .compileComponents(); | ||||||
|  |   })); | ||||||
|  |  | ||||||
|  |   beforeEach(() => { | ||||||
|  |     fixture = TestBed.createComponent(DatatableReportingUploadSettingComponent); | ||||||
|  |     component = fixture.componentInstance; | ||||||
|  |     fixture.detectChanges(); | ||||||
|  |   }); | ||||||
|  |  | ||||||
|  |   it('should create', () => { | ||||||
|  |     expect(component).toBeTruthy(); | ||||||
|  |   }); | ||||||
|  | }); | ||||||
| @ -0,0 +1,109 @@ | |||||||
|  | import { Component, OnInit } from '@angular/core'; | ||||||
|  | import { SFSchema, SFUISchema } from '@delon/form'; | ||||||
|  | import { NzModalRef } from 'ng-zorro-antd/modal'; | ||||||
|  | import { ReportingService } from '../../services/reporting.service'; | ||||||
|  |  | ||||||
|  | @Component({ | ||||||
|  |   selector: 'app-datatable-upload-setting', | ||||||
|  |   templateUrl: './upload-setting.component.html', | ||||||
|  | }) | ||||||
|  | export class DatatableReportingUploadSettingComponent implements OnInit { | ||||||
|  |   record: any = {}; | ||||||
|  |   i: any = {}; | ||||||
|  |   schema!: SFSchema; | ||||||
|  |   ui!: SFUISchema; | ||||||
|  |  | ||||||
|  |   constructor( | ||||||
|  |     private modal: NzModalRef, | ||||||
|  |     public service: ReportingService | ||||||
|  |   ) { } | ||||||
|  |  | ||||||
|  |   ngOnInit(): void { | ||||||
|  |     this.initSF(); | ||||||
|  |     // this.loadData(); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |  * 初始化查询表单 | ||||||
|  |  */ | ||||||
|  |   initSF() { | ||||||
|  |     this.schema = { | ||||||
|  |       properties: { | ||||||
|  |         no: { | ||||||
|  |           type: 'string', | ||||||
|  |           title: '订单数据', | ||||||
|  |           enum: [ | ||||||
|  |             { | ||||||
|  |               label: '手动上传', | ||||||
|  |               value: '1' | ||||||
|  |             }, | ||||||
|  |             { | ||||||
|  |               label: '自动上传', | ||||||
|  |               value: '2' | ||||||
|  |             } | ||||||
|  |           ], | ||||||
|  |           description: '开启自动上传后,订单将在支付完成且风险单校验通过后自动上传', | ||||||
|  |           ui: { | ||||||
|  |             widget: 'radio', | ||||||
|  |  | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         owner: { | ||||||
|  |           type: 'string', | ||||||
|  |           title: '资金数据', | ||||||
|  |           enum: [ | ||||||
|  |             { | ||||||
|  |               label: '手动上传', | ||||||
|  |               value: '1' | ||||||
|  |             }, | ||||||
|  |             { | ||||||
|  |               label: '自动上传', | ||||||
|  |               value: '2' | ||||||
|  |             } | ||||||
|  |           ], | ||||||
|  |           description: '开启自动上传后,订单将在支付完成且风险单校验通过后自动上传', | ||||||
|  |           ui: { | ||||||
|  |             widget: 'radio', | ||||||
|  |  | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |       }, | ||||||
|  |       required: ['owner', 'no'], | ||||||
|  |     } | ||||||
|  |     this.ui = { | ||||||
|  |       '*': { | ||||||
|  |         spanLabelFixed: 100, | ||||||
|  |         grid: { span: 24 }, | ||||||
|  |       }, | ||||||
|  |     }; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 获取设置数据 | ||||||
|  |    */ | ||||||
|  |   loadData() { | ||||||
|  |     this.service.request(this.service.$api_get_upload_setting, {}).subscribe(res => { | ||||||
|  |       if (res) { | ||||||
|  |         this.i = res; | ||||||
|  |  | ||||||
|  |       } | ||||||
|  |     }) | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 修改 | ||||||
|  |    * @param value | ||||||
|  |    */ | ||||||
|  |   save(value: any): void { | ||||||
|  |     this.service.request(this.service.$api_upload_setting_save, { ...value }).subscribe(res => { | ||||||
|  |       if (res) { | ||||||
|  |         this.service.msgSrv.success('保存成功'); | ||||||
|  |         this.modal.close(true); | ||||||
|  |       } | ||||||
|  |     }) | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   close(): void { | ||||||
|  |     this.modal.destroy(); | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -0,0 +1,22 @@ | |||||||
|  | <div nz-row> | ||||||
|  |   <div style="width: 10%;"> | ||||||
|  |     <nz-tabset [nzTabPosition]="'left'" style="height: 100%;"> | ||||||
|  |       <nz-tab [nzTitle]="item?.name" *ngFor="let item of tabs" (nzSelect)="selectTab(item)"></nz-tab> | ||||||
|  |     </nz-tabset> | ||||||
|  |   </div> | ||||||
|  |   <div style="width: 90%;"> | ||||||
|  |     <st #st [scroll]="{x:'1000px'}" [data]="service.$api_order_reporting_page" [columns]="columns" | ||||||
|  |       [req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }" | ||||||
|  |       [res]="{ reName: { list: 'data.records', total: 'data.total' } }" [page]="{ show: false}" [loading]="false"> | ||||||
|  |       <ng-template st-row="freightDetails" let-item> | ||||||
|  |         <div *ngFor="let item of item.freightDetails"> | ||||||
|  |           <div>{{item.expenseName}}:{{item.price | currency}} </div> | ||||||
|  |         </div> | ||||||
|  |       </ng-template> | ||||||
|  |     </st> | ||||||
|  |   </div> | ||||||
|  | </div> | ||||||
|  | <div class="modal-footer"> | ||||||
|  |   <button nz-button type="button" (click)="close()">取消</button> | ||||||
|  |   <button nz-button type="submit" nzType="primary" (click)="update()" [nzLoading]="service.http.loading">修改</button> | ||||||
|  | </div> | ||||||
| @ -0,0 +1,24 @@ | |||||||
|  | import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing'; | ||||||
|  | import { DatatableReportingVerifyResultComponent } from './verify-result.component'; | ||||||
|  |  | ||||||
|  | describe('DatatableReportingVerifyResultComponent', () => { | ||||||
|  |   let component: DatatableReportingVerifyResultComponent; | ||||||
|  |   let fixture: ComponentFixture<DatatableReportingVerifyResultComponent>; | ||||||
|  |  | ||||||
|  |   beforeEach(waitForAsync(() => { | ||||||
|  |     TestBed.configureTestingModule({ | ||||||
|  |       declarations: [DatatableReportingVerifyResultComponent] | ||||||
|  |     }) | ||||||
|  |       .compileComponents(); | ||||||
|  |   })); | ||||||
|  |  | ||||||
|  |   beforeEach(() => { | ||||||
|  |     fixture = TestBed.createComponent(DatatableReportingVerifyResultComponent); | ||||||
|  |     component = fixture.componentInstance; | ||||||
|  |     fixture.detectChanges(); | ||||||
|  |   }); | ||||||
|  |  | ||||||
|  |   it('should create', () => { | ||||||
|  |     expect(component).toBeTruthy(); | ||||||
|  |   }); | ||||||
|  | }); | ||||||
| @ -0,0 +1,85 @@ | |||||||
|  | import { Component, OnInit, ViewChild } from '@angular/core'; | ||||||
|  | import { Router } from '@angular/router'; | ||||||
|  | import { STColumn, STComponent } from '@delon/abc/st'; | ||||||
|  | import { SFSchema } from '@delon/form'; | ||||||
|  | import { ModalHelper, _HttpClient } from '@delon/theme'; | ||||||
|  | import { NzModalRef } from 'ng-zorro-antd/modal'; | ||||||
|  | import { ReportingService } from '../../services/reporting.service'; | ||||||
|  |  | ||||||
|  | @Component({ | ||||||
|  |   selector: 'app-datatable-verify-result', | ||||||
|  |   templateUrl: './verify-result.component.html', | ||||||
|  | }) | ||||||
|  | export class DatatableReportingVerifyResultComponent implements OnInit { | ||||||
|  |   url = `/user`; | ||||||
|  |   searchSchema: SFSchema = { | ||||||
|  |     properties: { | ||||||
|  |       no: { | ||||||
|  |         type: 'string', | ||||||
|  |         title: '编号' | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   }; | ||||||
|  |   @ViewChild('st') private readonly st!: STComponent; | ||||||
|  |   columns: STColumn[] = []; | ||||||
|  |   record: any = {} | ||||||
|  |   tabs: any[] = [ | ||||||
|  |     { name: '订单信息', value: '1' }, | ||||||
|  |     { name: '司机信息', value: '2' }, | ||||||
|  |     { name: '车辆信息', value: '3' }, | ||||||
|  |   ]; | ||||||
|  |  | ||||||
|  |   get reqParams() { | ||||||
|  |     return {}; | ||||||
|  |   } | ||||||
|  |   constructor(public service: ReportingService, private modalRef: NzModalRef, public router: Router) { | ||||||
|  |  | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   ngOnInit(): void { | ||||||
|  |     this.initST(); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |  * 初始化数据列表 | ||||||
|  |  */ | ||||||
|  |   initST() { | ||||||
|  |     this.columns = [ | ||||||
|  |       { title: '序号', type: 'no', className: 'text-center', width: '60px', }, | ||||||
|  |       { title: '监管平台字段', index: 'orderStatus', className: 'text-center', width: '120px', }, | ||||||
|  |       { title: '系统字段', index: 'orderStatus', className: 'text-center', width: '100px', }, | ||||||
|  |       { title: '归属模块', index: 'orderStatus', className: 'text-center', width: '120px', }, | ||||||
|  |       { title: '是否必填', index: 'orderStatus', className: 'text-center', width: '100px', }, | ||||||
|  |       { title: '上传值', index: 'orderStatus', className: 'text-center', width: '150px', }, | ||||||
|  |       { title: '本地校验', index: 'orderStatus', className: 'text-center', width: '100px', }, | ||||||
|  |       { title: '错误内容', index: 'orderStatus', className: 'text-center', width: '150px', }, | ||||||
|  |     ] | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |   add(): void { | ||||||
|  |     // this.modal | ||||||
|  |     //   .createStatic(FormEditComponent, { i: { id: 0 } }) | ||||||
|  |     //   .subscribe(() => this.st.reload()); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   selectTab(e: any) { | ||||||
|  |  | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   update() { | ||||||
|  |     if (this.record?.billType === '1') { | ||||||
|  |       window.open(location.origin + `/#/order-management/vehicle-detailChange/${this.record?.id}`) | ||||||
|  |  | ||||||
|  |     } else if (this.record.billType === '2') { | ||||||
|  |       window.open(location.origin + `/#/order-management/bulk-detailChange/${this.record?.id}`); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |   } | ||||||
|  |   close(): void { | ||||||
|  |     this.modalRef.destroy(); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -6,9 +6,11 @@ import { BaseService } from '@shared'; | |||||||
| }) | }) | ||||||
| export class ReportingService extends BaseService { | export class ReportingService extends BaseService { | ||||||
|  |  | ||||||
|   $api_order_reporting_page = ``; // 订单上报列表 |   $api_order_reporting_page = `/api/sdc/billOperate/listWholePage`; // 订单上报列表 | ||||||
|   $api_recall_reporting = ``; // 撤回 |   $api_recall_reporting = ``; // 撤回 | ||||||
|   $api_async_export_order_reporting_list = ``; // 导出订单上报 |   $api_async_export_order_reporting_list = ``; // 导出订单上报 | ||||||
|  |   $api_get_upload_setting = ``; // 修改上传设置 | ||||||
|  |   $api_upload_setting_save = ``; // 修改上传设置 | ||||||
|   constructor(public injector: Injector) { |   constructor(public injector: Injector) { | ||||||
|     super(injector); |     super(injector); | ||||||
|   } |   } | ||||||
|  | |||||||
| @ -4,7 +4,7 @@ | |||||||
|  * @Author       : Shiming |  * @Author       : Shiming | ||||||
|  * @Date         : 2022-01-04 17:29:18 |  * @Date         : 2022-01-04 17:29:18 | ||||||
|  * @LastEditors  : Shiming |  * @LastEditors  : Shiming | ||||||
|  * @LastEditTime : 2022-01-18 17:18:54 |  * @LastEditTime : 2022-03-29 16:26:09 | ||||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\complaint-detail\\complaint-detail.component.html |  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\complaint-detail\\complaint-detail.component.html | ||||||
|  * Copyright (C) 2022 huzhenhong. All rights reserved. |  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||||
| --> | --> | ||||||
| @ -21,7 +21,7 @@ | |||||||
|   <ng-template #cardTemplate> |   <ng-template #cardTemplate> | ||||||
|     <button nz-button nzType="primary" [nzLoading]="false" (click)="viewEvaluate()" *ngIf="complaint?.complaintStatus == 1" [disabled]="complaintStatus">处理</button> |     <button nz-button nzType="primary" [nzLoading]="false" (click)="viewEvaluate()" *ngIf="complaint?.complaintStatus == 1" [disabled]="complaintStatus">处理</button> | ||||||
| </ng-template> | </ng-template> | ||||||
|   <h2>投诉单号:{{datailList?.id}}</h2> |   <h2>投诉单号:{{datailList?.complaintCode}}</h2> | ||||||
|   <sf #sf [compact]="true" [ui]="ui" [schema]="schema" [button]="'none'" *ngIf="schema" [formData]="datailList"> |   <sf #sf [compact]="true" [ui]="ui" [schema]="schema" [button]="'none'" *ngIf="schema" [formData]="datailList"> | ||||||
|     <ng-template sf-template="imgUrls" let-schema="schema" let-item let-ui="ui"> |     <ng-template sf-template="imgUrls" let-schema="schema" let-item let-ui="ui"> | ||||||
|       <app-imagelist [imgList]="datailList?.imgUrls"></app-imagelist> |       <app-imagelist [imgList]="datailList?.imgUrls"></app-imagelist> | ||||||
|  | |||||||
| @ -4,7 +4,7 @@ | |||||||
|  * @Author       : Shiming |  * @Author       : Shiming | ||||||
|  * @Date         : 2022-01-12 10:52:50 |  * @Date         : 2022-01-12 10:52:50 | ||||||
|  * @LastEditors  : Shiming |  * @LastEditors  : Shiming | ||||||
|  * @LastEditTime : 2022-03-23 10:11:08 |  * @LastEditTime : 2022-03-29 16:13:40 | ||||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\complaint\\complaint.component.html |  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\complaint\\complaint.component.html | ||||||
|  * Copyright (C) 2022 huzhenhong. All rights reserved. |  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||||
| --> | --> | ||||||
| @ -21,10 +21,10 @@ | |||||||
| <nz-card> | <nz-card> | ||||||
|   <div nz-row nzGutter="12"> |   <div nz-row nzGutter="12"> | ||||||
|     <!-- 查询字段大于3个时,根据展开状态调整布局 --> |     <!-- 查询字段大于3个时,根据展开状态调整布局 --> | ||||||
|       <div nz-col [nzSpan]="18"> |       <div nz-col [nzSpan]="24"> | ||||||
|         <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]="6" > |       <div nz-col [nzSpan]="24" style="display: flex; justify-content: flex-end;"> | ||||||
|         <button nz-button nzType="primary" [disabled]="!sf.valid" [nzLoading]="false" |         <button nz-button nzType="primary" [disabled]="!sf.valid" [nzLoading]="false" | ||||||
|           (click)="st?.load(1)"  acl  [acl-ability]="['ORDER-COMPLAINT-search']">查询</button> |           (click)="st?.load(1)"  acl  [acl-ability]="['ORDER-COMPLAINT-search']">查询</button> | ||||||
|         <button nz-button nzType="primary" acl  [acl-ability]="['ORDER-COMPLAINT-export']" |         <button nz-button nzType="primary" acl  [acl-ability]="['ORDER-COMPLAINT-export']" | ||||||
|  | |||||||
| @ -106,18 +106,24 @@ export class OrderManagementComplaintComponent implements OnInit { | |||||||
|           type: 'string', |           type: 'string', | ||||||
|           ui: { |           ui: { | ||||||
|             widget: 'dict-select', |             widget: 'dict-select', | ||||||
|             params: { dictKey: 'complaint:cause' }, |             params: { dictKey: 'drvcomplaint:cause' }, | ||||||
|             containsAllLabel: true, |             containsAllLabel: true, | ||||||
|           } as SFSelectWidgetSchema |           } as SFSelectWidgetSchema | ||||||
|         }, |         }, | ||||||
|         complainantTime: { |         complainantTime: { | ||||||
|           type: 'string', |           type: 'string', | ||||||
|  |            | ||||||
|           title: '投诉时间', |           title: '投诉时间', | ||||||
|           ui: { widget: 'sl-from-to', type: 'date', format: 'yyyy-MM-dd' } as SFDateWidgetSchema, |           ui: { | ||||||
|  |             widget: 'sl-from-to', type: 'date', format: 'yyyy-MM-dd' } as SFDateWidgetSchema, | ||||||
|         }, |         }, | ||||||
|       }, |       }, | ||||||
|     }; |     }; | ||||||
|     this.ui = { '*': { spanLabelFixed: 110, grid: { span: 8, gutter: 4 } } }; |     this.ui =  | ||||||
|  |     { | ||||||
|  |      '*': { spanLabelFixed: 110, grid: { span: 8, gutter: 8 } }, | ||||||
|  |     | ||||||
|  |     }; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   /** |   /** | ||||||
| @ -145,7 +151,7 @@ export class OrderManagementComplaintComponent implements OnInit { | |||||||
|         className: 'text-center', |         className: 'text-center', | ||||||
|       }, |       }, | ||||||
|       { title: '托运方', index: 'shipperAppUserName', width: '200px', className: 'text-center' }, |       { title: '托运方', index: 'shipperAppUserName', width: '200px', className: 'text-center' }, | ||||||
|       { title: '司机', index: 'driverIdLabel', width: '120px', className: 'text-center' }, |       { title: '司机', index: 'driverName', width: '120px', className: 'text-center' }, | ||||||
|       { |       { | ||||||
|         title: '投诉原因', |         title: '投诉原因', | ||||||
|         className: 'text-center', |         className: 'text-center', | ||||||
|  | |||||||
| @ -25,6 +25,7 @@ export class OrderManagementComplianceAuditComponent implements OnInit { | |||||||
|   changeId: any;       // 主页面查看运费变更记录id - 用于运费变更记录 |   changeId: any;       // 主页面查看运费变更记录id - 用于运费变更记录 | ||||||
|   changeViewId: any;  // 查看运费变更记录id - 用于查看 |   changeViewId: any;  // 查看运费变更记录id - 用于查看 | ||||||
|   auditId: any; |   auditId: any; | ||||||
|  |   auditIdR: any; | ||||||
|   auditMany = false; |   auditMany = false; | ||||||
|   isVisibleView = false; |   isVisibleView = false; | ||||||
|   isVisibleEvaluate = false; |   isVisibleEvaluate = false; | ||||||
| @ -142,7 +143,6 @@ export class OrderManagementComplianceAuditComponent implements OnInit { | |||||||
|           type: 'string', |           type: 'string', | ||||||
|           title: '订单号', |           title: '订单号', | ||||||
|           ui: { |           ui: { | ||||||
|             placeholder: '最多100个单号,空号隔开' |  | ||||||
|           } |           } | ||||||
|         }, |         }, | ||||||
|         resourceCode: { |         resourceCode: { | ||||||
| @ -629,7 +629,7 @@ export class OrderManagementComplianceAuditComponent implements OnInit { | |||||||
|         idList.push(item.id); |         idList.push(item.id); | ||||||
|       }); |       }); | ||||||
|     } else { |     } else { | ||||||
|       idList.push(this.sfView.value.billCode) |       idList.push(this?.auditIdR) | ||||||
|     } |     } | ||||||
|     const parms = { |     const parms = { | ||||||
|       ids: idList, |       ids: idList, | ||||||
| @ -681,7 +681,8 @@ export class OrderManagementComplianceAuditComponent implements OnInit { | |||||||
|   audit(item?: any) { |   audit(item?: any) { | ||||||
|     if (item) { |     if (item) { | ||||||
|       this.isVisibleRE = true; |       this.isVisibleRE = true; | ||||||
|       this.auditId = item.id; |       this.auditId = item.billCode; | ||||||
|  |       this.auditIdR = item.id; | ||||||
|       this.initSTAudit(1); |       this.initSTAudit(1); | ||||||
|     } else { |     } else { | ||||||
|       if (this.selectedRows.length <= 0) { |       if (this.selectedRows.length <= 0) { | ||||||
|  | |||||||
| @ -146,14 +146,14 @@ export class OrderManagementReceiptsAuditComponent implements OnInit { | |||||||
|           type: 'string', |           type: 'string', | ||||||
|           title: '订单号', |           title: '订单号', | ||||||
|           ui: { |           ui: { | ||||||
|             placeholder: '最多100个单号,空号隔开' |             placeholder: '请输入' | ||||||
|           } |           } | ||||||
|         }, |         }, | ||||||
|         wayBillCode: { |         wayBillCode: { | ||||||
|           type: 'string', |           type: 'string', | ||||||
|           title: '运单号', |           title: '运单号', | ||||||
|           ui: { |           ui: { | ||||||
|             placeholder: '最多100个运单,空号隔开' |             placeholder: '请输入' | ||||||
|           } |           } | ||||||
|         }, |         }, | ||||||
|         resourceCode: { |         resourceCode: { | ||||||
|  | |||||||
| @ -229,7 +229,30 @@ | |||||||
|     </ng-template> |     </ng-template> | ||||||
|   </div> |   </div> | ||||||
| </nz-card> | </nz-card> | ||||||
|  | <nz-card *ngIf="!route?.snapshot?.queryParams?.sts"> | ||||||
|  |   <nz-tabset > | ||||||
|  |     <nz-tab nzTitle="风险异常检测"> | ||||||
|  |       <button nz-button nzType="primary"[disabled]="">申 诉</button> | ||||||
|  |       <div> | ||||||
|  |         您的订单可能存在交易风险,请及时提交申诉材料,提交成功后,平台将及时完成审核并通知您! | ||||||
|  |       </div> | ||||||
|  |       <div>如果您的运单没有问题,可以提出申诉,并提供相关资料,我们将24小时内审核反馈</div> | ||||||
|  |       <ul *ngFor="let item of abnormalList"> | ||||||
|  |         <li>系统识别:{{item?.complianceTypeName}}</li> | ||||||
|  |         <li>{{item?.determineDetails}},您可在企业端提交申诉材料或联系客服。</li> | ||||||
|  |         <li>2021-11-07 03:20:15</li> | ||||||
|  |       </ul> | ||||||
|  |     </nz-tab> | ||||||
|  |     <nz-tab nzTitle="异常预警"> | ||||||
|  |       <st  #st [data]="addressItems" [columns]="logColumns2" [ps]="0" [page]="{ show: false, showSize: false }"> | ||||||
|  |       </st> | ||||||
|  |     </nz-tab> | ||||||
|  |     <nz-tab nzTitle="操作日志"> | ||||||
|  |       <st  #st [data]="addressItems" [columns]="logColumns2" [ps]="0" [page]="{ show: false, showSize: false }"> | ||||||
|  |       </st> | ||||||
|  |     </nz-tab> | ||||||
|  |   </nz-tabset> | ||||||
|  | </nz-card> | ||||||
| <nz-modal [(nzVisible)]="isVisible"   nzWidth="1000px"  [nzFooter]="nzModalFooter" [nzTitle]="modalTitle"  (nzOnOk)="handleOK()" (nzOnCancel)="handleCancel()"> | <nz-modal [(nzVisible)]="isVisible"   nzWidth="1000px"  [nzFooter]="nzModalFooter" [nzTitle]="modalTitle"  (nzOnOk)="handleOK()" (nzOnCancel)="handleCancel()"> | ||||||
|   <ng-container *nzModalContent> |   <ng-container *nzModalContent> | ||||||
|     <div *ngIf="!modalcontent">暂无附件信息</div> |     <div *ngIf="!modalcontent">暂无附件信息</div> | ||||||
|  | |||||||
| @ -4,7 +4,7 @@ | |||||||
|  * @Author       : Shiming |  * @Author       : Shiming | ||||||
|  * @Date         : 2021-12-28 14:42:03 |  * @Date         : 2021-12-28 14:42:03 | ||||||
|  * @LastEditors  : Shiming |  * @LastEditors  : Shiming | ||||||
|  * @LastEditTime : 2022-03-23 14:45:58 |  * @LastEditTime : 2022-03-29 16:08:56 | ||||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\vehicle-detail\\vehicle-detail.component.ts |  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\vehicle-detail\\vehicle-detail.component.ts | ||||||
|  * Copyright (C) 2022 huzhenhong. All rights reserved. |  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||||
|  */ |  */ | ||||||
| @ -29,6 +29,7 @@ export class OrderManagementVehicleDetailComponent implements OnInit { | |||||||
|   mapList: any[] = []; //地图点位数据组 |   mapList: any[] = []; //地图点位数据组 | ||||||
|   pois: any[] = []; |   pois: any[] = []; | ||||||
|   addressItems: any[] = []; //打点地址数据组 |   addressItems: any[] = []; //打点地址数据组 | ||||||
|  |   abnormalList: any[] = []; | ||||||
|   i: any = { |   i: any = { | ||||||
|     unLoadingPlaceList: [], |     unLoadingPlaceList: [], | ||||||
|     billExpenseDetails: [], |     billExpenseDetails: [], | ||||||
| @ -66,7 +67,7 @@ export class OrderManagementVehicleDetailComponent implements OnInit { | |||||||
|     } |     } | ||||||
|   ]; |   ]; | ||||||
|   constructor( |   constructor( | ||||||
|     private route: ActivatedRoute, |     public route: ActivatedRoute, | ||||||
|     private msgSrv: NzMessageService, |     private msgSrv: NzMessageService, | ||||||
|     private service: OrderManagementService, |     private service: OrderManagementService, | ||||||
|     private router: Router, |     private router: Router, | ||||||
| @ -102,6 +103,19 @@ export class OrderManagementVehicleDetailComponent implements OnInit { | |||||||
|         this.i.scheduleVOList = this.i?.scheduleVOList?.filter((data: any) => data.displayStatus !== 'HIDE'); |         this.i.scheduleVOList = this.i?.scheduleVOList?.filter((data: any) => data.displayStatus !== 'HIDE'); | ||||||
|       } |       } | ||||||
|     }); |     }); | ||||||
|  |     this.service.request(this.service.$api_listBillComplianceAbnormalByBillId, { id: this.id }).subscribe(res => { | ||||||
|  |       if (res) { | ||||||
|  |       console.log('风险详情') | ||||||
|  |       console.log(res) | ||||||
|  |       this.abnormalList = res | ||||||
|  |       } | ||||||
|  |     }); | ||||||
|  |     this.service.request(this.service.$api_getAbnormalWarningByBillId, { id: this.id }).subscribe(res => { | ||||||
|  |       if (res) { | ||||||
|  |       console.log('异常预警') | ||||||
|  |       console.log(res) | ||||||
|  |       } | ||||||
|  |     }); | ||||||
|   } |   } | ||||||
|   // 取消订单 |   // 取消订单 | ||||||
|   cancellation() { |   cancellation() { | ||||||
|  | |||||||
| @ -646,6 +646,30 @@ | |||||||
|             { |             { | ||||||
|               "text": "订单上报", |               "text": "订单上报", | ||||||
|               "link": "/datatable/reporting/order" |               "link": "/datatable/reporting/order" | ||||||
|  |             }, | ||||||
|  |             { | ||||||
|  |               "text": "合规监控报表", | ||||||
|  |               "children": [{ | ||||||
|  |                   "text": "合规监控报表", | ||||||
|  |                   "link": "/datatable/compliancetabel/index" | ||||||
|  |                 }, | ||||||
|  |                 { | ||||||
|  |                   "text": "业务员-合规报表", | ||||||
|  |                   "link": "/datatable/compliancetabel/salesman" | ||||||
|  |                 }, | ||||||
|  |                 { | ||||||
|  |                   "text": "客户-合规报表", | ||||||
|  |                   "link": "/datatable/compliancetabel/customer" | ||||||
|  |                 } | ||||||
|  |               ] | ||||||
|  |             }, | ||||||
|  |             { | ||||||
|  |               "text": "财务报表", | ||||||
|  |               "link": "/datatable/financetable" | ||||||
|  |             }, | ||||||
|  |             { | ||||||
|  |               "text": "开票数据报表", | ||||||
|  |               "link": "/datatable/invoicetable" | ||||||
|             } |             } | ||||||
|         ] |         ] | ||||||
|         } |         } | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user