fix bug
This commit is contained in:
		| @ -0,0 +1,2 @@ | ||||
| <g2-custom delay="100" (render)="render($event)"></g2-custom> | ||||
|  | ||||
| @ -0,0 +1,91 @@ | ||||
| import { Component, ElementRef, Input, NgZone, OnChanges, OnInit, SimpleChanges, ViewChild } from '@angular/core'; | ||||
| import { G2MiniAreaClickItem } from '@delon/chart/mini-area'; | ||||
|  | ||||
| // import DataSet from '@antv/data-set'; | ||||
| const DataSet = require('@antv/data-set'); | ||||
| import { Chart } from '@antv/g2'; | ||||
| import { DataService } from 'src/app/routes/datatable/services/data.service'; | ||||
| @Component({ | ||||
|   selector: 'app-compliance-curve', | ||||
|   templateUrl: './curve.component.html', | ||||
|   styleUrls: ['./curve.component.less'] | ||||
| }) | ||||
| export class ComplianceCurveComponent implements OnInit,OnChanges { | ||||
|   el: any; | ||||
|   @Input() chartData: any; | ||||
|   chart: any; | ||||
|   constructor(private service: DataService, private ngZone: NgZone) { | ||||
|  | ||||
|   } | ||||
|   ngOnChanges(changes: SimpleChanges): void { | ||||
|     if (this.chartData) { | ||||
|       // setTimeout(()=>{ | ||||
|       //   this.chart.render(true) | ||||
|       // }, 1000) | ||||
|  | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   ngOnInit(): void { | ||||
|  | ||||
|   } | ||||
|   reRender() { | ||||
|     setTimeout(() => { | ||||
|       this.chart.data(this.chartData); | ||||
|       this.chart.render(); | ||||
|     }, 1000) | ||||
|   } | ||||
|   render(el: ElementRef<HTMLDivElement>): void { | ||||
|     this.el = el.nativeElement | ||||
|     setTimeout(() => { | ||||
|       console.log(this.chartData) | ||||
|       this.ngZone.runOutsideAngular(() => this.init(this.el)); | ||||
|       }, 1000) | ||||
|   } | ||||
|  | ||||
|   private init(el: HTMLElement): void { | ||||
|     this.chart = new Chart({ | ||||
|       container: el, | ||||
|       autoFit: true, | ||||
|       height: 500, | ||||
|     }); | ||||
|  | ||||
|     this.chart.data(this.chartData); | ||||
|     this.chart.scale({ | ||||
|       time: { | ||||
|         range: [0, 1], | ||||
|       }, | ||||
|       number: { | ||||
|         min: 0, | ||||
|         nice: true, | ||||
|       }, | ||||
|     }); | ||||
|      | ||||
|     this.chart.tooltip({ | ||||
|       showCrosshairs: true, | ||||
|       shared: true, | ||||
|     }); | ||||
|      | ||||
|     this.chart.axis('proportion', { | ||||
|       label: { | ||||
|         formatter: (val: any) => { | ||||
|           return val*100+ ' %'; | ||||
|         }, | ||||
|       }, | ||||
|     }); | ||||
|      | ||||
|     this.chart | ||||
|       .line() | ||||
|       .position('situationDate*proportion') | ||||
|       .color('type') | ||||
|       .tooltip('proportion*type', function(name: any, value: any) { | ||||
|         return { | ||||
|           name: name*100+'%', | ||||
|           value: value | ||||
|         }; | ||||
|       }); | ||||
|  | ||||
|     this.chart.render(); | ||||
|      | ||||
|   } | ||||
| } | ||||
| @ -24,37 +24,37 @@ | ||||
|  | ||||
| <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"> | ||||
|     <g2-card [title]="'订单合格率'" [bordered]="true" [total]="cardData1?.proportion" [footer]="footer1" contentHeight="46"> | ||||
|       <ng-template #footer1> | ||||
|         <div class="card-f"> | ||||
|           <span class="card-f-l">合格:12423</span> <span>不合格:12423</span> | ||||
|           <span class="card-f-l">合格:{{cardData1?.leftQuantity}}</span> <span>不合格:{{cardData1?.rightQuantity}}</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"> | ||||
|     <g2-card [title]="'货源单占比'" [bordered]="true" [total]="cardData2?.proportion" [footer]="footer2" contentHeight="46"> | ||||
|       <ng-template #footer2> | ||||
|         <div class="card-f"> | ||||
|           <span class="card-f-l">货源单:12423</span> <span>合同单:12423</span> | ||||
|           <span class="card-f-l">货源单:{{cardData2?.leftQuantity}}</span> <span>合同单:{{cardData2?.rightQuantity}}</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"> | ||||
|     <g2-card [title]="'运费直付占比'" [bordered]="true" [total]="cardData3?.proportion" [footer]="footer3" contentHeight="46"> | ||||
|       <ng-template #footer3> | ||||
|         <div class="card-f"> | ||||
|           <span class="card-f-l">司机:12423</span> <span>车队长:12423</span> | ||||
|           <span class="card-f-l">司机:{{cardData3?.leftQuantity}}</span> <span>车队长:{{cardData3?.rightQuantity}}</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"> | ||||
|     <g2-card [title]="'付款及时率'" [bordered]="true" [total]="cardData4?.proportion" [footer]="footer4" contentHeight="46"> | ||||
|       <ng-template #footer4> | ||||
|         <div class="card-f"> | ||||
|           <span class="card-f-l">准时:12423</span> <span>逾期:12423</span> | ||||
|           <span class="card-f-l">准时:{{cardData4?.leftQuantity}}</span> <span>逾期:{{cardData4?.rightQuantity}}</span> | ||||
|         </div> | ||||
|       </ng-template> | ||||
|     </g2-card> | ||||
| @ -62,5 +62,6 @@ | ||||
| </div> | ||||
|  | ||||
| <nz-card nzTitle="平台合规情况监控报表"> | ||||
|   <g2-custom delay="100" (render)="render($event)"></g2-custom> | ||||
|   <app-compliance-curve #curve [chartData]="chartData"></app-compliance-curve> | ||||
|   <!-- <g2-custom delay="100" (render)="render($event)"></g2-custom> --> | ||||
| </nz-card> | ||||
|  | ||||
| @ -5,6 +5,9 @@ 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'; | ||||
| import { DataService } from '../../../services/data.service'; | ||||
| import { ComplianceCurveComponent } from './curve/curve.component'; | ||||
|  | ||||
| @Component({ | ||||
|   selector: 'app-datatable-compliance-index', | ||||
|   templateUrl: './index.component.html', | ||||
| @ -12,51 +15,107 @@ import { Chart } from '@antv/g2'; | ||||
|   providers: [DatePipe] | ||||
| }) | ||||
| export class DatatableComplianceIndexComponent implements OnInit { | ||||
|   @ViewChild('curve') private readonly curve!: ComplianceCurveComponent; | ||||
|   @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) {} | ||||
|   dateFormat = 'yyyy'; | ||||
|   time: any = '2022' | ||||
|   chartData: any = {} | ||||
|  | ||||
|   cardData1:any; | ||||
|   cardData2:any; | ||||
|   cardData3:any; | ||||
|   cardData4:any; | ||||
|   | ||||
|   constructor(private http: _HttpClient, private modal: ModalHelper, private ngZone: NgZone,public service: DataService, private datePipe: DatePipe) {} | ||||
|  | ||||
|   ngOnInit(): void { | ||||
|     this.initSF(); | ||||
|     this.initdData(); | ||||
|   } | ||||
|  | ||||
|   initdData(){ | ||||
|     const params ={ | ||||
|       ...this.sf?.value, | ||||
|       timeType:this.mode ==='month'?'M':'Y', | ||||
|       time:this.time | ||||
|     } | ||||
|     this.service.request(this.service.$api_getBillRateQualified, params).subscribe(res => { | ||||
|         if (res) { | ||||
|          this.cardData1 = res; | ||||
|          this.cardData1.proportion = this.cardData1.proportion*100 +'%' | ||||
|         } | ||||
|     }); | ||||
|     this.service.request(this.service.$api_getBillRateProportion, params).subscribe(res => { | ||||
|         if (res) { | ||||
|          this.cardData2 = res; | ||||
|          this.cardData2.proportion = this.cardData2.proportion*100 +'%' | ||||
|         } | ||||
|     }); | ||||
|     this.service.request(this.service.$api_getBillRateDirectPayment, params).subscribe(res => { | ||||
|         if (res) { | ||||
|          this.cardData3 = res; | ||||
|          this.cardData3.proportion = this.cardData3.proportion*100 +'%' | ||||
|         } | ||||
|     }); | ||||
|     this.service.request(this.service.$api_getBillTimelyPayment, params).subscribe(res => { | ||||
|         if (res) { | ||||
|          this.cardData4 = res; | ||||
|          this.cardData4.proportion = this.cardData4.proportion*100 +'%' | ||||
|         } | ||||
|     }); | ||||
|  | ||||
|     this.service.request(this.service.$api_listMonitorSituation, params).subscribe(res => { | ||||
|       if (res) { | ||||
|         this.chartData = res | ||||
|         this.curve.reRender(); | ||||
|  | ||||
|       } | ||||
|     }) | ||||
|   } | ||||
|    | ||||
|  | ||||
|   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'] | ||||
|       this.time = this.datePipe.transform(this.date, 'yyyy') | ||||
|     } else if(this.mode === 'month') { | ||||
|       this.time = [this.datePipe.transform(this.date, 'yyyy-MM') + '-01 00:00:00'] | ||||
|       this.time = this.datePipe.transform(this.date, 'yyyy-MM') | ||||
|     } | ||||
|     this.initdData(); | ||||
|   } | ||||
|  | ||||
|   initSF() { | ||||
|     this.schema = { | ||||
|       properties: { | ||||
|         name: { | ||||
|         enterpriseInfoId: { | ||||
|           type: 'string', | ||||
|           title: '', | ||||
|           ui: { | ||||
|             widget: 'select', | ||||
|             placeholder: '网络货运人' | ||||
|             placeholder: '网络货运人', | ||||
|             asyncData: () => this.service.getNetworkFreightForwarder({}), | ||||
|             change:()=>{ | ||||
|               this.initdData(); | ||||
|             }, | ||||
|             allowClear: true | ||||
|           } | ||||
|         }, | ||||
|         name2: { | ||||
|         enterpriseProjectId: { | ||||
|           type: 'string', | ||||
|           title: '', | ||||
|           ui: { | ||||
| @ -64,11 +123,12 @@ export class DatatableComplianceIndexComponent implements OnInit { | ||||
|             placeholder: '部门' | ||||
|           } | ||||
|         }, | ||||
|         name3: { | ||||
|         salesmanId: { | ||||
|           type: 'string', | ||||
|           title: '', | ||||
|           ui: { | ||||
|             placeholder: '业务员' | ||||
|             placeholder: '业务员', | ||||
|             enter: () => this.initdData(), | ||||
|           } | ||||
|         } | ||||
|       } | ||||
| @ -81,6 +141,9 @@ export class DatatableComplianceIndexComponent implements OnInit { | ||||
|  | ||||
|   } | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|   render(el: ElementRef<HTMLDivElement>) { | ||||
|     this.ngZone.runOutsideAngular(() => this.init(el.nativeElement)); | ||||
|   } | ||||
|  | ||||
| @ -1,5 +1,2 @@ | ||||
| <g2-custom delay="100" (render)="render($event)"></g2-custom> | ||||
| <nz-divider></nz-divider> | ||||
|  | ||||
| <g2-custom delay="100" (render)="render2($event)"></g2-custom> | ||||
|  | ||||
|  | ||||
| @ -1,4 +1,4 @@ | ||||
| import { Component, ElementRef, NgZone, OnInit, ViewChild } from '@angular/core'; | ||||
| import { Component, ElementRef, Input, NgZone, OnChanges, OnInit, SimpleChanges, ViewChild } from '@angular/core'; | ||||
| import { G2MiniAreaClickItem } from '@delon/chart/mini-area'; | ||||
| import { DataService } from '../../../services/data.service'; | ||||
| // import DataSet from '@antv/data-set'; | ||||
| @ -9,160 +9,81 @@ import { Chart } from '@antv/g2'; | ||||
|   templateUrl: './curve.component.html', | ||||
|   styleUrls: ['./curve.component.less'] | ||||
| }) | ||||
| export class FinanceTableCurveComponent implements OnInit { | ||||
|   constructor(private service: DataService, private ngZone: NgZone) {} | ||||
| export class FinanceTableCurveComponent implements OnInit,OnChanges { | ||||
|   el: any; | ||||
|   @Input() chartData: any; | ||||
|   chart: any; | ||||
|   constructor(private service: DataService, private ngZone: NgZone) { | ||||
|  | ||||
|   ngOnInit(): void {} | ||||
|   } | ||||
|   ngOnChanges(changes: SimpleChanges): void { | ||||
|     if (this.chartData) { | ||||
|       // setTimeout(()=>{ | ||||
|       //   this.chart.render(true) | ||||
|       // }, 1000) | ||||
|  | ||||
|   handleClick(data: G2MiniAreaClickItem): void { | ||||
|     this.service.msgSrv.info(`${data.item.x} - ${data.item.y}`); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   ngOnInit(): void { | ||||
|  | ||||
|   } | ||||
|   reRender() { | ||||
|     setTimeout(() => { | ||||
|       this.chart.data(this.chartData); | ||||
|       this.chart.render(); | ||||
|     }, 1000) | ||||
|   } | ||||
|   render(el: ElementRef<HTMLDivElement>): void { | ||||
|     this.ngZone.runOutsideAngular(() => this.initBar(el.nativeElement)); | ||||
|     this.el = el.nativeElement | ||||
|     setTimeout(() => { | ||||
|       this.ngZone.runOutsideAngular(() => this.init(this.el)); | ||||
|       }, 1000) | ||||
|   } | ||||
|   private initBar(el: HTMLElement): void { | ||||
|     const data = [ | ||||
|       { name: '已收金额(元)', 月份: 'Jan.', 月均降雨量: 18.9 }, | ||||
|       { name: '已收金额(元)', 月份: 'Feb.', 月均降雨量: 28.8 }, | ||||
|       { name: '已收金额(元)', 月份: 'Mar.', 月均降雨量: 39.3 }, | ||||
|       { name: '已收金额(元)', 月份: 'Apr.', 月均降雨量: 81.4 }, | ||||
|       { name: '已收金额(元)', 月份: 'May', 月均降雨量: 47 }, | ||||
|       { name: '已收金额(元)', 月份: 'Jun.', 月均降雨量: 20.3 }, | ||||
|       { name: '已收金额(元)', 月份: 'Jul.', 月均降雨量: 24 }, | ||||
|       { name: '已收金额(元)', 月份: 'Aug.', 月均降雨量: 35.6 }, | ||||
|       { name: '已付运费(元)', 月份: 'Jan.', 月均降雨量: 12.4 }, | ||||
|       { name: '已付运费(元)', 月份: 'Feb.', 月均降雨量: 23.2 }, | ||||
|       { name: '已付运费(元)', 月份: 'Mar.', 月均降雨量: 34.5 }, | ||||
|       { name: '已付运费(元)', 月份: 'Apr.', 月均降雨量: 99.7 }, | ||||
|       { name: '已付运费(元)', 月份: 'May', 月均降雨量: 52.6 }, | ||||
|       { name: '已付运费(元)', 月份: 'Jun.', 月均降雨量: 35.5 }, | ||||
|       { name: '已付运费(元)', 月份: 'Jul.', 月均降雨量: 37.4 }, | ||||
|       { name: '已付运费(元)', 月份: 'Aug.', 月均降雨量: 42.4 } | ||||
|     ]; | ||||
|  | ||||
|     const chart = new Chart({ | ||||
|   private init(el: HTMLElement): void { | ||||
|     this.chart = new Chart({ | ||||
|       container: el, | ||||
|       autoFit: true, | ||||
|       height: 500 | ||||
|     }); | ||||
|     chart.data(data); | ||||
|     chart.scale('月均降雨量', { | ||||
|       nice: true | ||||
|     }); | ||||
|     chart.tooltip({ | ||||
|       showMarkers: false, | ||||
|       shared: true | ||||
|     }); | ||||
|     // 图表下方图形文字自定义 | ||||
|     chart.legend({ | ||||
|       items: [ | ||||
|         { | ||||
|           name: '已收金额(元)', | ||||
|           value: 'node_load1', | ||||
|           marker: { | ||||
|             symbol: 'circle', | ||||
|             style: { fill: '#6395f9' } | ||||
|           } | ||||
|         }, | ||||
|         { | ||||
|           name: '已付运费(元)', | ||||
|           value: 'node_load1', | ||||
|           marker: { | ||||
|             symbol: 'circle', | ||||
|             style: { fill: '#62daab' } | ||||
|           } | ||||
|         } | ||||
|       ] | ||||
|       height: 500, | ||||
|     }); | ||||
|  | ||||
|     chart | ||||
|       .interval() | ||||
|       .position('月份*月均降雨量') | ||||
|       .color('name') | ||||
|       .adjust([ | ||||
|         { | ||||
|           type: 'dodge', | ||||
|           marginRatio: 0 | ||||
|         } | ||||
|       ]); | ||||
|  | ||||
|     chart.render(); | ||||
|   } | ||||
|  | ||||
|   render2(el: ElementRef<HTMLDivElement>): void { | ||||
|     this.ngZone.runOutsideAngular(() => this.initCurve(el.nativeElement)); | ||||
|   } | ||||
|  | ||||
|   private initCurve(el: HTMLElement): void { | ||||
|     const chart = new Chart({ | ||||
|       container: el, | ||||
|       autoFit: true, | ||||
|       height: 400 | ||||
|     }); | ||||
|     // 以三组数据为例, 需要展示 91/92/93年中a/b/c数据走势 | ||||
|     const data = [ | ||||
|       { data: '1月', label: '平均附加费率', value: 5 }, | ||||
|       { data: '2月', label: '平均附加费率', value: 10 }, | ||||
|       { data: '3月', label: '平均附加费率', value: 25 }, | ||||
|       { data: '4月', label: '平均附加费率', value: 35 }, | ||||
|       { data: '5月', label: '平均附加费率', value: 15 }, | ||||
|       { data: '6月', label: '平均附加费率', value: 5 }, | ||||
|       { data: '7月', label: '平均附加费率', value: 95 }, | ||||
|       { data: '8月', label: '平均附加费率', value: 45 } | ||||
|     ]; | ||||
|  | ||||
|     chart.data(data); | ||||
|     //刻度自定义 | ||||
|     chart.scale({ | ||||
|       data: { | ||||
|         range: [0, 1] | ||||
|     this.chart.data(this.chartData); | ||||
|     this.chart.scale({ | ||||
|       time: { | ||||
|         range: [0, 1], | ||||
|       }, | ||||
|       number: { | ||||
|         nice: true, | ||||
|       }, | ||||
|       value: { | ||||
|         min: 0, | ||||
|         nice: true | ||||
|       } | ||||
|     }); | ||||
|     // 图表下方图形文字自定义 | ||||
|     chart.legend({ | ||||
|       items: [ | ||||
|         { | ||||
|           name: '平均附加费率', | ||||
|           value: 'node_load1', | ||||
|           marker: { | ||||
|             symbol: 'circle', | ||||
|             style: { fill: '#6193f7' } | ||||
|           } | ||||
|         } | ||||
|       ] | ||||
|     }); | ||||
|     // 提示自定义 | ||||
|     chart.tooltip({ | ||||
|      | ||||
|     this.chart.tooltip({ | ||||
|       showCrosshairs: true, | ||||
|       shared: true | ||||
|       shared: true, | ||||
|     }); | ||||
|      | ||||
|     this.chart.axis('number', { | ||||
|       label: { | ||||
|         formatter: (val: any) => { | ||||
|           return val*100+ ' %'; | ||||
|         }, | ||||
|       }, | ||||
|     }); | ||||
|  | ||||
|     //数据格式化 | ||||
|     chart.axis('value', { | ||||
|       label: { | ||||
|         formatter: val => { | ||||
|           return val + ' %'; | ||||
|         } | ||||
|       } | ||||
|     }); | ||||
|     // 在x*y的坐标点上按z值绘制线条, 如果z值相同将使用直线连接 | ||||
|     chart | ||||
|      | ||||
|     this.chart | ||||
|       .line() | ||||
|       .position('data*value') | ||||
|       .color('label') | ||||
|       .tooltip('label*value', (name: any, value: any) => { | ||||
|       .position('time*number') | ||||
|       .color('name') | ||||
|       .tooltip('name*number', (name:any, value:any) => { | ||||
|         return { | ||||
|           name: name, | ||||
|           value: value + '%' | ||||
|           value: value*100 + '%' | ||||
|         }; | ||||
|       }); | ||||
|     // 在x*y的坐标上按z值绘制圆点 | ||||
|     // chart.point().position('data*value').size(4).color('label').shape('circle'); | ||||
|     chart.render(); | ||||
|      | ||||
|     this.chart.render(); | ||||
|      | ||||
|   } | ||||
| } | ||||
|  | ||||
| @ -50,7 +50,7 @@ | ||||
| <nz-card nzTitle="运营报表" [nzExtra]="extraTemplate01"> | ||||
|   <ng-template #extraTemplate01> | ||||
|     <div class="chooseBox"> | ||||
|       <nz-select [(ngModel)]="enterpriseInfoId" style="width: 200px" (ngModelChange)="changeCurve()"> | ||||
|       <nz-select [(ngModel)]="enterpriseInfoId" style="width: 200px" (ngModelChange)="initPillarData()"> | ||||
|         <nz-option [nzValue]="item.value" [nzLabel]="item.label" *ngFor="let item of interManlist"></nz-option> | ||||
|       </nz-select> | ||||
|       <div class="timeBox"> | ||||
| @ -64,5 +64,12 @@ | ||||
|       </div> | ||||
|     </div> | ||||
|   </ng-template> | ||||
|   <app-financetable-curve></app-financetable-curve> | ||||
|   <div nz-row [nzGutter]="64"> | ||||
|     <div nz-col class="gutter-row" [nzSpan]="12"> | ||||
|      <app-financetable-curve #curve [chartData]="chartData.lineChart"></app-financetable-curve> | ||||
|     </div> | ||||
|     <div nz-col class="gutter-row" [nzSpan]="12"> | ||||
|       <app-financetable-pillar #pillar [chartData]="chartData.histogram"></app-financetable-pillar> | ||||
|     </div> | ||||
|   </div> | ||||
| </nz-card> | ||||
| @ -4,6 +4,10 @@ import { SFSchema } from '@delon/form'; | ||||
| import { DatePipe, ModalHelper, _HttpClient } from '@delon/theme'; | ||||
| import { DataService } from '../../services/data.service'; | ||||
| import { differenceInCalendarDays } from 'date-fns'; | ||||
| import { OperationCurveComponent } from '../operationtable/curve/curve.component'; | ||||
| import { OperationPillarComponent } from '../operationtable/pillar/pillar.component'; | ||||
| import { FinanceTableCurveComponent } from './curve/curve.component'; | ||||
| import { FinancetablePillarComponent } from './pillar/pillar.component'; | ||||
|  | ||||
| @Component({ | ||||
|   selector: 'app-datatable-financetable', | ||||
| @ -12,6 +16,8 @@ import { differenceInCalendarDays } from 'date-fns'; | ||||
|   providers: [DatePipe] | ||||
| }) | ||||
| export class DatatableFinancetableComponent implements OnInit { | ||||
|   @ViewChild('curve') private readonly curve!: FinanceTableCurveComponent; | ||||
|   @ViewChild('pillar') private readonly pillar!: FinancetablePillarComponent; | ||||
|   @ViewChild('st') private readonly st!: STComponent; | ||||
|   type = 1; | ||||
|   mode = 'year'; | ||||
| @ -24,8 +30,9 @@ export class DatatableFinancetableComponent implements OnInit { | ||||
|   timeNext: any = ['2022-01-01 00:00:00'] | ||||
|   today = new Date(); | ||||
|   enterpriseInfoId = '' | ||||
|   enterpriseInfoIdPie = '' | ||||
|   interManlist: any = [] | ||||
|   chartData: any = {} | ||||
|   flag = false; | ||||
|   columns: STColumn[] = [ | ||||
|     { title: '运营主体', index: 'networkTransporterName', className: 'text-center' }, | ||||
|     { title: '客户预存款', index: 'czcgje',render: 'czcgje', className: 'text-center' }, | ||||
| @ -63,13 +70,37 @@ export class DatatableFinancetableComponent implements OnInit { | ||||
|  | ||||
|   constructor(public service: DataService, private datePipe: DatePipe) { } | ||||
|   ngOnInit(): void { | ||||
|     this.initData() | ||||
|     this.initData(); | ||||
|     this.initPillarData(); | ||||
|   } | ||||
|  | ||||
|   initPillarData(){ | ||||
|     let type = 1 | ||||
|     if(this.mode === 'year') { | ||||
|       type = 1 | ||||
|     } else if(this.mode === 'month') { | ||||
|       type = 2 | ||||
|     } | ||||
|     const params: any = { | ||||
|       time: this.timeNext, | ||||
|       type, | ||||
|       enterpriseInfoId: this.enterpriseInfoId | ||||
|      }; | ||||
|     this.flag = true | ||||
|     this.service.request(this.service.$api_financialReportHistogram, params).subscribe(res => { | ||||
|       if (res) { | ||||
|         this.chartData = res | ||||
|         if(this.flag) { | ||||
|           this.pillar.reRender() | ||||
|           this.curve.reRender() | ||||
|         } | ||||
|       } | ||||
|     }) | ||||
|   } | ||||
|   initData() { | ||||
|     this.service.getNetworkFreightForwarder().subscribe(res => { | ||||
|       this.interManlist = res | ||||
|       this.enterpriseInfoId = res[0].value | ||||
|       this.enterpriseInfoIdPie = res[0].value | ||||
|     }) | ||||
|   } | ||||
|  | ||||
| @ -119,6 +150,7 @@ export class DatatableFinancetableComponent implements OnInit { | ||||
|     } else if(this.mode === 'month') { | ||||
|       this.timeNext = [this.datePipe.transform(this.dateNext, 'yyyy-MM') + '-01 00:00:00'] | ||||
|     } | ||||
|     this.initPillarData(); | ||||
|   } | ||||
|  | ||||
| } | ||||
|  | ||||
| @ -0,0 +1 @@ | ||||
| <g2-custom delay="100" (render)="render($event)"></g2-custom> | ||||
| @ -0,0 +1,75 @@ | ||||
| import { Component, ElementRef, Input, NgZone, OnChanges, OnInit, SimpleChanges, ViewChild } from '@angular/core'; | ||||
| import { Chart } from '@antv/g2'; | ||||
| import { DataService } from 'src/app/routes/datatable/services/data.service'; | ||||
| @Component({ | ||||
|   selector: 'app-financetable-pillar', | ||||
|   templateUrl: './pillar.component.html', | ||||
|   styleUrls: ['./pillar.component.less'] | ||||
| }) | ||||
| export class FinancetablePillarComponent implements OnInit, OnChanges { | ||||
|   el: any; | ||||
|   @Input() chartData: any; | ||||
|   chart: any; | ||||
|   constructor(private service: DataService, private ngZone: NgZone) { | ||||
|  | ||||
|   } | ||||
|   ngOnChanges(changes: SimpleChanges): void { | ||||
|     if (this.chartData) { | ||||
|       // setTimeout(()=>{ | ||||
|       //   this.chart.render(true) | ||||
|       // }, 1000) | ||||
|  | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   ngOnInit(): void { | ||||
|  | ||||
|   } | ||||
|   reRender() { | ||||
|     setTimeout(() => { | ||||
|       this.chart.data(this.chartData); | ||||
|       console.log(this.chartData) | ||||
|       this.chart.render(); | ||||
|     }, 1000) | ||||
|   } | ||||
|   render(el: ElementRef<HTMLDivElement>): void { | ||||
|     this.el = el.nativeElement | ||||
|     setTimeout(() => { | ||||
|     this.ngZone.runOutsideAngular(() => this.init(this.el)); | ||||
|     },1000) | ||||
|   } | ||||
|  | ||||
|   private init(el: HTMLElement): void { | ||||
|     this.chart = new Chart({ | ||||
|       container: el, | ||||
|       autoFit: true, | ||||
|       height: 500, | ||||
|     }); | ||||
|  | ||||
|     this.chart.data(this.chartData); | ||||
|  | ||||
|     this.chart.scale('number', { | ||||
|       nice: true, | ||||
|     }); | ||||
|     this.chart.tooltip({ | ||||
|       showMarkers: false, | ||||
|       shared: true, | ||||
|     }); | ||||
|  | ||||
|     this.chart | ||||
|       .interval() | ||||
|       .position('time*number') | ||||
|       .color('name') | ||||
|       .adjust([ | ||||
|         { | ||||
|           type: 'dodge', | ||||
|           marginRatio: 0, | ||||
|         }, | ||||
|       ]); | ||||
|  | ||||
|     this.chart.interaction('active-region'); | ||||
|  | ||||
|     this.chart.render(); | ||||
|   } | ||||
|  | ||||
| } | ||||
| @ -27,6 +27,8 @@ import { OperationPillarComponent } from './components/operationtable/pillar/pil | ||||
| import { OperationCurveComponent } from './components/operationtable/curve/curve.component'; | ||||
| import { FinanceTableCurveComponent } from './components/financetable/curve/curve.component'; | ||||
| import { DatatableDatascreenComponent } from './components/datascreen/datascreen.component'; | ||||
| import { FinancetablePillarComponent } from './components/financetable/pillar/pillar.component'; | ||||
| import { ComplianceCurveComponent } from './components/compliance/index/curve/curve.component'; | ||||
|  | ||||
| const COMPONENTS: Type<void>[] = [ | ||||
|   DatatableDataindexComponent, | ||||
| @ -56,7 +58,10 @@ const COMPONENTS: Type<void>[] = [ | ||||
|   OperationCurveComponent, | ||||
|   DatatableReportingFundInfoComponent, | ||||
|   FinanceTableCurveComponent, | ||||
|   DatatableDatascreenComponent] | ||||
|   DatatableDatascreenComponent, | ||||
|   FinancetablePillarComponent, | ||||
|   ComplianceCurveComponent | ||||
| ] | ||||
|  | ||||
|  | ||||
| @NgModule({ | ||||
|  | ||||
| @ -1,14 +1,15 @@ | ||||
| <nz-spin [nzSpinning]="service.http.loading"></nz-spin> | ||||
| <st #st [scroll]="{x:'1000px'}" [data]="service.$api_get_fund_valid_result" [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" | ||||
|   [bordered]="true"> | ||||
|   <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> | ||||
|   <nz-spin [nzSpinning]="service.http.loading"></nz-spin> | ||||
|   <st #st [scroll]="{x:'1000px',y:'600px'}" [data]="service.$api_get_fund_valid_result" [columns]="columns" | ||||
|     [req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams,process: beforeReq }" | ||||
|     [res]="{ reName: { list: 'data' } }" [page]="{ show: false,showSize:false}" [loading]="false" [bordered]="true"> | ||||
|     <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 class="modal-footer"> | ||||
|   <button nz-button type="submit" nzType="primary" (click)="close()">确定</button> | ||||
|  | ||||
| @ -1,6 +1,6 @@ | ||||
| import { Component, OnInit, ViewChild } from '@angular/core'; | ||||
| import { Router } from '@angular/router'; | ||||
| import { STColumn, STComponent } from '@delon/abc/st'; | ||||
| import { STColumn, STComponent, STRequestOptions } from '@delon/abc/st'; | ||||
| import { SFSchema } from '@delon/form'; | ||||
| import { ModalHelper, _HttpClient } from '@delon/theme'; | ||||
| import { NzModalRef } from 'ng-zorro-antd/modal'; | ||||
| @ -21,6 +21,14 @@ export class DatatableReportingFundInfoComponent implements OnInit { | ||||
|   get reqParams() { | ||||
|     return { capitalCode: this?.record?.orderCode }; | ||||
|   } | ||||
|  | ||||
|   beforeReq(requestOptions: STRequestOptions) { | ||||
|     delete requestOptions?.body?.pageSize; | ||||
|     delete requestOptions?.body?.pageIndex; | ||||
|     return requestOptions; | ||||
|  | ||||
|  | ||||
|   } | ||||
|   constructor(public service: ReportingService, private modalRef: NzModalRef, public router: Router) { | ||||
|  | ||||
|   } | ||||
| @ -34,22 +42,22 @@ export class DatatableReportingFundInfoComponent implements OnInit { | ||||
|  */ | ||||
|   initST() { | ||||
|     this.columns = [ | ||||
|       { title: '序号', type: 'no', className: 'text-center', width: '60px', }, | ||||
|       { title: '监管平台字段', index: 'thirdPartyFieldName', className: 'text-center', width: '120px', }, | ||||
|       { title: '系统字段', index: 'checkFieldName', className: 'text-center', width: '100px', }, | ||||
|       { title: '归属模块', index: 'orderStatus', className: 'text-center', width: '120px', }, | ||||
|       { title: '序号', type: 'no', className: 'text-center', width: '10%', }, | ||||
|       { title: '监管平台字段', index: 'thirdPartyFieldName', className: 'text-center', width: '15%', }, | ||||
|       { title: '系统字段', index: 'checkFieldName', className: 'text-center', width: '15%', }, | ||||
|       { title: '归属模块', index: 'orderStatus', className: 'text-center', width: '15%', }, | ||||
|       { | ||||
|         title: '是否必填', | ||||
|         index: 'orderStatus', | ||||
|         className: 'text-center', | ||||
|         width: '100px', | ||||
|         width: '10%', | ||||
|         type: 'enum', | ||||
|         enum: { | ||||
|           '0': '非必填', | ||||
|           '1': '必填', | ||||
|         }, | ||||
|       }, | ||||
|       { title: '上传值', index: 'fieldValue', className: 'text-center', width: '150px', }, | ||||
|       { title: '上传值', index: 'fieldValue', className: 'text-center', width: '15%', }, | ||||
|       { | ||||
|         title: '本地校验', | ||||
|         index: 'checkStatus', | ||||
| @ -60,9 +68,9 @@ export class DatatableReportingFundInfoComponent implements OnInit { | ||||
|           '1': '通过', | ||||
|           '2': '不通过' | ||||
|         }, | ||||
|         width: '100px', | ||||
|         width: '10%', | ||||
|       }, | ||||
|       { title: '错误内容', index: 'remark', className: 'text-center', width: '150px', }, | ||||
|       { title: '错误内容', index: 'remark', className: 'text-center', width: '20%', }, | ||||
|     ] | ||||
|   } | ||||
|  | ||||
|  | ||||
| @ -34,8 +34,8 @@ | ||||
|       <span [ngClass]="{'text-red-dark':item?.uploadStatus === '4'}">{{item?.billStatusLabel}}</span> | ||||
|     </ng-template> | ||||
|     <ng-template st-row="verifyStatus" let-item> | ||||
|       <a (click)="viewAuditResult(item)" *ngIf="item?.billStatus === '2'">{{item?.billStatusLabel}}</a> | ||||
|       <span *ngIf="item?.billStatus !== '2'">{{item?.billStatusLabel}}</span> | ||||
|       <a (click)="viewResult(item)" *ngIf="item?.verifyStatus === '1'">1111{{item?.verifyStatusLabel}}</a> | ||||
|       <span *ngIf="item?.verifyStatus !== '1'">{{item?.verifyStatusLabel}}</span> | ||||
|     </ng-template> | ||||
|     <ng-template st-row="orderCode" let-item> | ||||
|       <span class="text-blue-dark">{{item?.orderCode}}</span> | ||||
| @ -43,11 +43,6 @@ | ||||
|     <ng-template st-row="wayBillCode" let-item> | ||||
|       <span class="text-blue-dark">{{item?.wayBillCode}}</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="tolalAmount" let-item let-index="index"> | ||||
|       <div class="text-right">{{item?.tolalAmount | currency }}</div> | ||||
|     </ng-template> | ||||
|  | ||||
| @ -175,7 +175,9 @@ export class DatatableFundReportingComponent implements OnInit { | ||||
|             placeholder: '请选择', | ||||
|             widget: 'select', | ||||
|             asyncData: () => this.shipperSrv.getNetworkFreightForwarder({}, false), | ||||
|  | ||||
|             visibleIf: { | ||||
|               _$expand: (value: boolean) => value, | ||||
|             }, | ||||
|             allowClear: true | ||||
|           } | ||||
|         }, | ||||
| @ -363,6 +365,7 @@ export class DatatableFundReportingComponent implements OnInit { | ||||
|     const modalRef = this.modal.create({ | ||||
|       nzTitle: '校验结果', | ||||
|       nzWidth: 1200, | ||||
|  | ||||
|       nzContent: DatatableReportingFundInfoComponent, | ||||
|       nzComponentParams: { | ||||
|         record | ||||
| @ -377,7 +380,7 @@ export class DatatableFundReportingComponent implements OnInit { | ||||
|    * 查看监管审核结果 | ||||
|    */ | ||||
|   viewAuditResult(record: any) { | ||||
|     if (record?.billStatus !== '2') { | ||||
|     if (record?.verifyStatus !== '1') { | ||||
|       return; | ||||
|     } | ||||
|     this.openWainingModal('监管审核结果', record?.result) | ||||
|  | ||||
| @ -29,18 +29,40 @@ | ||||
|     [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]="service.http.loading"> | ||||
|     <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 st-row="orderCheckStatus" let-item let-index="index"> | ||||
|       <a (click)="viewAuditResult(item)" | ||||
|         *ngIf="item?.orderCheckStatus === '2'">{{filterStatus(item?.orderCheckStatus)}}</a> | ||||
|       <span *ngIf="item?.orderCheckStatus !== '2'">{{filterStatus(item?.orderCheckStatus)}}</span> | ||||
|     </ng-template> | ||||
|     <ng-template st-row="driverCheckStatus" let-item let-index="index"> | ||||
|       <a (click)="viewAuditResult(item)" | ||||
|         *ngIf="item?.driverCheckStatus === '2'">{{filterStatus(item?.driverCheckStatus)}}</a> | ||||
|       <span *ngIf="item?.driverCheckStatus !== '2'">{{filterStatus(item?.driverCheckStatus)}}</span> | ||||
|     </ng-template> | ||||
|     <ng-template st-row="orderCheckStatus" let-item let-index="index"> | ||||
|       <a (click)="viewAuditResult(item)" | ||||
|         *ngIf="item?.orderCheckStatus === '2'">{{filterStatus(item?.orderCheckStatus)}}</a> | ||||
|       <span *ngIf="item?.orderCheckStatus !== '2'">{{filterStatus(item?.orderCheckStatus)}}</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 st-row="checkStatus" let-item let-index="index"> | ||||
|       <a (click)="viewResult(item)" *ngIf="item?.billStatus === '2'">{{filterStatus(item?.checkStatus)}}</a> | ||||
|       <span *ngIf="item?.billStatus !== '2'">{{filterStatus(item?.checkStatus)}}</span> | ||||
|     </ng-template> | ||||
|     <ng-template st-row="amount" let-item let-index="index"> | ||||
|       <div class="text-right">{{item?.amount | currency :' '}}</div> | ||||
|     <ng-template st-row="billCode" let-item> | ||||
|       <span class="text-red-dark">{{item?.billCode}}</span> | ||||
|     </ng-template> | ||||
|     <ng-template st-row="wayBillCode" let-item> | ||||
|       <span class="text-red-dark">{{item?.wayBillCode}}</span> | ||||
|     </ng-template> | ||||
|  | ||||
|     <ng-template st-row="freightAmount" let-item let-index="index"> | ||||
|       <div class="text-right">{{item?.freightAmount | currency :' '}}</div> | ||||
|     </ng-template> | ||||
|     <ng-template st-row="goodsInfoList" let-item let-index="index"> | ||||
|       <div *ngFor="let _item of item?.goodsInfoList"> | ||||
|         {{_item?.goodsTypeName}}/{{_item?.goodsName}}/{{_item?.weight}}吨/{{_item?.volume}}m³ | ||||
|       </div> | ||||
|     </ng-template> | ||||
|  | ||||
|     <ng-template st-row="car" let-item let-index="index"> | ||||
|  | ||||
| @ -95,7 +95,7 @@ export class DatatableOrderReportingComponent implements OnInit { | ||||
|       properties: { | ||||
|         _$expand: { type: 'boolean', ui: { hidden: true } }, | ||||
|         billCode: { title: '订单号', type: 'string', ui: { placeholder: '请输入' } }, | ||||
|         resourceCode: { | ||||
|         wayBillCode: { | ||||
|           type: 'string', | ||||
|           title: '运单号', | ||||
|           ui: { | ||||
| @ -113,7 +113,7 @@ export class DatatableOrderReportingComponent implements OnInit { | ||||
|             allowClear: true | ||||
|           } | ||||
|         }, | ||||
|         externalResourceCode: { | ||||
|         shipperName: { | ||||
|           title: '货主', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
| @ -143,33 +143,40 @@ export class DatatableOrderReportingComponent implements OnInit { | ||||
|             }, | ||||
|           } | ||||
|         }, | ||||
|         serviceType: { | ||||
|         putStatus: { | ||||
|           title: '上传状态', | ||||
|           type: 'string', | ||||
|           enum: [ | ||||
|             { label: '待上传', value: 0 }, | ||||
|             { label: '已上传', value: 1 }, | ||||
|             { label: '异常', value: 2 } | ||||
|           ], | ||||
|  | ||||
|           ui: { | ||||
|             placeholder: '请选择', | ||||
|             widget: 'dict-select', | ||||
|             params: { dictKey: 'service:type' }, | ||||
|             containsAllLabel: true, | ||||
|             widget: 'select', | ||||
|             visibleIf: { | ||||
|               _$expand: (value: boolean) => value, | ||||
|             }, | ||||
|           } | ||||
|         }, | ||||
|         serviceType1: { | ||||
|         checkStatus: { | ||||
|           title: '本地校验', | ||||
|           type: 'string', | ||||
|           enum: [ | ||||
|             { label: '校验中', value: 0 }, | ||||
|             { label: '通过', value: 1 }, | ||||
|             { label: '不通过', value: 2 } | ||||
|           ], | ||||
|           ui: { | ||||
|             placeholder: '请选择', | ||||
|             widget: 'dict-select', | ||||
|             params: { dictKey: 'service:type' }, | ||||
|             containsAllLabel: true, | ||||
|             widget: 'select', | ||||
|             visibleIf: { | ||||
|               _$expand: (value: boolean) => value, | ||||
|             }, | ||||
|           } | ||||
|         }, | ||||
|         createTime: { | ||||
|         putTime: { | ||||
|           title: '上传时间', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
| @ -181,7 +188,7 @@ export class DatatableOrderReportingComponent implements OnInit { | ||||
|             }, | ||||
|           } as SFDateWidgetSchema, | ||||
|         }, | ||||
|         createTime1: { | ||||
|         orderReceivingTime: { | ||||
|           title: '运单生成时间', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
| @ -193,7 +200,7 @@ export class DatatableOrderReportingComponent implements OnInit { | ||||
|             }, | ||||
|           } as SFDateWidgetSchema, | ||||
|         }, | ||||
|         createTime2: { | ||||
|         dispatchedDate: { | ||||
|           title: '发货时间', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
| @ -205,7 +212,7 @@ export class DatatableOrderReportingComponent implements OnInit { | ||||
|             }, | ||||
|           } as SFDateWidgetSchema, | ||||
|         }, | ||||
|         createTime3: { | ||||
|         receivingDate: { | ||||
|           title: '收货时间', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
| @ -218,7 +225,7 @@ export class DatatableOrderReportingComponent implements OnInit { | ||||
|           } as SFDateWidgetSchema, | ||||
|         }, | ||||
|  | ||||
|         loadingPlace: { | ||||
|         trajectoryDataAppStatus: { | ||||
|           title: '车辆轨迹', | ||||
|           type: 'string', | ||||
|           enum: [ | ||||
| @ -234,7 +241,7 @@ export class DatatableOrderReportingComponent implements OnInit { | ||||
|             }, | ||||
|           } | ||||
|         }, | ||||
|         loadingPlace1: { | ||||
|         trajectoryDataStatus: { | ||||
|           title: '司机轨迹', | ||||
|           type: 'string', | ||||
|           enum: [ | ||||
| @ -264,48 +271,65 @@ export class DatatableOrderReportingComponent implements OnInit { | ||||
|   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: 'orderCheckStatus', className: 'text-center', width: '120px', }, | ||||
|       { title: '司机状态', render: 'driverCheckStatus', className: 'text-center', width: '120px', }, | ||||
|  | ||||
|       { title: '车辆状态', render: 'carStatus', className: 'text-center', width: '120px', }, | ||||
|       { title: '本地校验', render: 'localValid', className: 'text-center', width: '120px', }, | ||||
|  | ||||
|       { title: '本地校验', render: 'checkStatus', className: 'text-center', width: '120px', }, | ||||
|       { | ||||
|         title: '订单号', | ||||
|         render: 'billComplianceVOS', | ||||
|         render: 'billCode', | ||||
|         className: 'text-center', | ||||
|         width: '150px', | ||||
|       }, | ||||
|       { title: '运单号', render: 'freightDetails', className: 'text-center', width: '150px', }, | ||||
|       { title: '运单号', render: 'wayBillCode', className: 'text-center', width: '150px', }, | ||||
|  | ||||
|       { | ||||
|         title: '网络货运人', | ||||
|         render: 'serviceType', | ||||
|         index: 'enterpriseInfoName', | ||||
|         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: 'driver2', 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: 'driver1', 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: '统一社会信用代码', index: 'unifiedSocialCreditCode', render: 'loadingPlace', className: 'text-center', width: '200px' }, | ||||
|       { title: '运单生成时间', index: 'wayBillCreateTime', className: 'text-center', width: '180px' }, | ||||
|       { title: '发货时间', index: 'dispatchedDate', className: 'text-center', width: '180px' }, | ||||
|       { title: '收货时间', index: 'receivingDate', className: 'text-center', width: '180px' }, | ||||
|       { title: '托运人名称', index: 'shipperName', className: 'text-center', width: '250px' }, | ||||
|       { title: '托运人统一社会信用代码', index: 'shipperCreditCode', render: 'loadingPlace', className: 'text-center', width: '200px' }, | ||||
|       { title: '装货地址', index: 'loadingAddress', render: 'dischargePlace', className: 'text-center', width: '200px' }, | ||||
|       { title: '收货方名称', index: 'receivingName', className: 'text-center', width: '150px' }, | ||||
|       { title: '收货地址', index: 'consigneeAddress', className: 'text-center', width: '150px' }, | ||||
|       { title: '运费金额', render: 'freightAmount', className: 'text-center', width: '250px' }, | ||||
|       { title: '车牌号', index: 'carNo', className: 'text-center', width: '150px' }, | ||||
|       { | ||||
|         title: '车牌颜色', | ||||
|         index: 'carNoColor', | ||||
|         className: 'text-center', | ||||
|         width: '250px', | ||||
|         type: 'enum', | ||||
|         enum: { | ||||
|           "4": "绿色", | ||||
|           "3": "黄绿色", | ||||
|           "2": "黄色", | ||||
|           "1": "蓝色" | ||||
|         } | ||||
|  | ||||
|       }, | ||||
|       { title: '司机姓名', index: 'driverName', className: 'text-center', width: '150px' }, | ||||
|       { title: '司机手机号码', index: 'driverPhone', className: 'text-center', width: '200px' }, | ||||
|       { title: '司机身份证号', index: 'driverIdentityNo', className: 'text-center', width: '150px' }, | ||||
|       { title: '货物信息', render: 'goodsInfoList', className: 'text-center', width: '180px' }, | ||||
|       { title: '实际承运人名称', index: 'carrierName', className: 'text-center', width: '150px' }, | ||||
|       { title: '实际承运人证件号码', index: 'carrierIdentityNo', className: 'text-center', width: '200px' }, | ||||
|  | ||||
|       { title: '实际承运人道路运输许可证号', render: 'payeeName', className: 'text-center', width: '150px' }, | ||||
|  | ||||
|       { title: '车辆轨迹', render: 'car', className: 'text-center', width: '250px' }, | ||||
|       { title: '司机轨迹', render: 'driver', className: 'text-center', width: '150px' }, | ||||
|       { title: '上传次数', render: 'transportInfo', className: 'text-center', width: '150px' }, | ||||
|       { title: '上传时间', render: 'transportInfo', className: 'text-center', width: '180px' }, | ||||
|       { title: '上传次数', index: 'putNumber', className: 'text-center', width: '150px' }, | ||||
|       { title: '上传时间', index: 'recentlyPutTime', className: 'text-center', width: '180px' }, | ||||
|     ]; | ||||
|   } | ||||
|  | ||||
| @ -455,5 +479,18 @@ export class DatatableOrderReportingComponent implements OnInit { | ||||
|     }) | ||||
|   } | ||||
|  | ||||
|   filterStatus(status: string) { | ||||
|     switch (status) { | ||||
|       case '0': | ||||
|         return '校验中'; | ||||
|       case '1': | ||||
|         return '通过'; | ||||
|       case '2': | ||||
|         return '不通过'; | ||||
|       default: | ||||
|         return ''; | ||||
|  | ||||
|     } | ||||
|   } | ||||
|  | ||||
| } | ||||
|  | ||||
| @ -5,7 +5,7 @@ | ||||
|     </nz-tabset> | ||||
|   </div> | ||||
|   <div style="width: 90%;"> | ||||
|     <st #st [scroll]="{x:'1000px'}" [data]="service.$api_get_order_reporting_page" [columns]="columns" | ||||
|     <st #st [scroll]="{x:'1000px',y:'600px'}" [data]="service.$api_get_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" | ||||
|       [bordered]="true"> | ||||
|  | ||||
| @ -6,7 +6,7 @@ import { BaseService } from '@shared'; | ||||
| }) | ||||
| export class ReportingService extends BaseService { | ||||
|  | ||||
|   $api_get_order_reporting_page = `/api/sdc/billOperate/listWholePage`; // 订单上报列表 | ||||
|   $api_get_order_reporting_page = `/api/sdc/regulation/list/page`; // 订单上报列表 | ||||
|   $api_recall_reporting = ``; // 撤回 | ||||
|   $api_async_export_order_reporting_list = ``; // 导出订单上报 | ||||
|   $api_get_upload_setting = ``; // 修改上传设置 | ||||
| @ -16,6 +16,8 @@ export class ReportingService extends BaseService { | ||||
|   $api_fund_reporting_upload = `/api/fcc/fundUploadHead/uploadFundNumber`; // 资金批量上传 | ||||
|   $api_fund_reporting_recall = `/api/fcc/fundUploadHead/recallUploadFundNumber`; //资金批量撤回 | ||||
|   $api_get_fund_valid_result = `/api/fcc/capitalFieldCheck/getCapitalFieldCheckList`; // 查询资金校验表 | ||||
|  | ||||
|  | ||||
|   constructor(public injector: Injector) { | ||||
|     super(injector); | ||||
|   } | ||||
|  | ||||
| @ -44,6 +44,20 @@ export class DataService extends BaseService { | ||||
|   $api_listShipperReportPage = `/api/sdc/report/listShipperReportPage`; | ||||
|   // 司机报表 | ||||
|   $api_listDriverReportPage = `/api/sdc/report/listDriverReportPage`; | ||||
|   // 财务报表柱状图 | ||||
|   $api_financialReportHistogram = `/api/sdc/report/financialReportHistogram`; | ||||
|   // 合规监控报表-运费直付占比 | ||||
|   $api_getBillRateDirectPayment = `/api/sdc/reportComplianceMonitor/getBillRateDirectPayment`; | ||||
|   // 合规监控报表-货源单占比 | ||||
|   $api_getBillRateProportion = `/api/sdc/reportComplianceMonitor/getBillRateProportion`; | ||||
|   // 合规监控报表-订单合格率 | ||||
|   $api_getBillRateQualified = `/api/sdc/reportComplianceMonitor/getBillRateQualified`; | ||||
|   // 合规监控报表-付款及时率 | ||||
|   $api_getBillTimelyPayment = `/api/sdc/reportComplianceMonitor/getBillTimelyPayment`; | ||||
|   // 合规监控报表-监控报表(折线图) | ||||
|   $api_listMonitorSituation = `/api/sdc/reportComplianceMonitor/listMonitorSituation`; | ||||
|  | ||||
|  | ||||
|  | ||||
|   constructor(public injector: Injector) { | ||||
|     super(injector); | ||||
|  | ||||
| @ -9,7 +9,7 @@ | ||||
| <nz-card> | ||||
|     <nz-row [nzGutter]="16"> | ||||
|         <nz-col [nzXl]="9" [nzLg]="8" [nzSm]="12"> | ||||
|             <nz-statistic [nzValue]="params?.ltdName+'('+(params?.bankType===1?'平安':'浦发')+')'" | ||||
|             <nz-statistic [nzValue]="params?.ltdName+'('+(params?.bankType==='1'?'平安':'浦发')+')'" | ||||
|                 [nzTitle]="params.name+'('+params.phone+')'" [nzValueStyle]="{'font-size':'16px','font-weight':'bold'}" | ||||
|                 class="bold"> | ||||
|             </nz-statistic> | ||||
|  | ||||
| @ -35,7 +35,8 @@ export class DriverAccountDetailComponent implements OnInit { | ||||
|       ltdId: this.params.ltdId, | ||||
|       projectId: this.params.projectId, | ||||
|       enterpriseId: this.params.enterpriseId, | ||||
|       roleId: this.params.roleId | ||||
|       roleId: this.params.roleId, | ||||
|       bankType: this.params.bankType, | ||||
|     }); | ||||
|     if (this.sf) { | ||||
|       Object.assign(requestOptions.body, { | ||||
| @ -59,6 +60,7 @@ export class DriverAccountDetailComponent implements OnInit { | ||||
|         roleId: this.params.roleId, | ||||
|         pageIndex: this.st.pi, | ||||
|         pageSize: this.st.ps, | ||||
|         bankType: this.params.bankType, | ||||
|         createTime: { | ||||
|           start: this.sf?.value?.createTime?.[0] || '', | ||||
|           end: this.sf?.value?.createTime?.[1] || '' | ||||
| @ -162,13 +164,13 @@ export class DriverAccountDetailComponent implements OnInit { | ||||
|  | ||||
|   private initST(): STColumn[] { | ||||
|     return [ | ||||
|       { title: '交易时间', index: 'createTime', type: 'date' }, | ||||
|       { title: '流水号', index: 'channelPaySn' }, | ||||
|       { title: '交易类型', index: 'tradeTypeLabel', className: 'text-center' }, | ||||
|       { title: '交易单号', index: 'businessNumber' }, | ||||
|       { title: '订单号', index: 'orderSn' }, | ||||
|       { title: '运单号', index: 'transportSn' }, | ||||
|       { title: '收支类型', index: 'incomeTypeLabel', className: 'text-center' }, | ||||
|       { title: '交易时间', index: 'createTime', type: 'date', width: 150 }, | ||||
|       { title: '流水号', index: 'channelPaySn', width: 170 }, | ||||
|       { title: '交易类型', index: 'tradeTypeLabel', className: 'text-center', width: 150 }, | ||||
|       { title: '交易单号', index: 'businessNumber' , width: 190}, | ||||
|       { title: '订单号', index: 'orderSn' , width: 190}, | ||||
|       { title: '运单号', index: 'transportSn', width: 190 }, | ||||
|       { title: '收支类型', index: 'incomeTypeLabel', className: 'text-center', width: 150 }, | ||||
|       { | ||||
|         title: '交易金额', | ||||
|         index: 'amount', | ||||
| @ -185,9 +187,9 @@ export class DriverAccountDetailComponent implements OnInit { | ||||
|         className: 'text-right', | ||||
|         widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.accountBalance }) } | ||||
|       }, | ||||
|       { title: '付款方', index: 'payName'}, | ||||
|       { title: '收款方', index: 'payeeName' }, | ||||
|       { title: '备注', index: 'tradeContent' }, | ||||
|       { title: '付款方', index: 'payName', width: 150}, | ||||
|       { title: '收款方', index: 'incomeName', width: 150 }, | ||||
|       { title: '备注', index: 'tradeContent' , width: 150}, | ||||
|     ]; | ||||
|   } | ||||
| } | ||||
|  | ||||
| @ -9,7 +9,7 @@ | ||||
| <nz-card> | ||||
|     <nz-row [nzGutter]="16"> | ||||
|         <nz-col [nzXl]="9" [nzLg]="8" [nzSm]="12"> | ||||
|             <nz-statistic [nzValue]="params.ltdName+'('+(params.bankType===1?'平安':'浦发')+')'" | ||||
|             <nz-statistic [nzValue]="params.ltdName+'('+(params.bankType==='1'?'平安':'浦发')+')'" | ||||
|                 [nzTitle]="params.tenantName" [nzValueStyle]="{'font-size':'16px','font-weight':'bold'}" class="bold"> | ||||
|             </nz-statistic> | ||||
|         </nz-col> | ||||
|  | ||||
| @ -134,7 +134,7 @@ export class FreightAccountDetailComponent implements OnInit { | ||||
|         }, | ||||
|         businessNumber: { | ||||
|           type: 'string', | ||||
|           title: '关联单号', | ||||
|           title: '交易单号', | ||||
|           ui: { | ||||
|             placeholder: '请输入' | ||||
|           } | ||||
| @ -178,7 +178,7 @@ export class FreightAccountDetailComponent implements OnInit { | ||||
|           default: '' | ||||
|         }, | ||||
|         projectId: { | ||||
|           title: '项目', | ||||
|           title: '所属项目', | ||||
|           type: 'string', | ||||
|           default: '', | ||||
|           ui: { | ||||
| @ -221,7 +221,7 @@ export class FreightAccountDetailComponent implements OnInit { | ||||
|         widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.accountBalance }) } | ||||
|       }, | ||||
|       { title: '付款方', index: 'payName' , width: 170}, | ||||
|       { title: '收款方', index: 'payeeName', width: 170 }, | ||||
|       { title: '收款方', index: 'incomeName', width: 170 }, | ||||
|       { title: '备注', index: 'tradeContent', width: 170 } | ||||
|     ]; | ||||
|   } | ||||
|  | ||||
| @ -1,4 +1,4 @@ | ||||
| <page-header-wrapper [title]="'开票订单明细'" [logo]="logo"> | ||||
| <page-header-wrapper [title]="'平台账户明细'" [logo]="logo"> | ||||
|     <ng-template #logo> | ||||
|         <button nz-button nz-tooltip nzTooltipTitle="返回上一页" (click)="goBack()"> | ||||
|             <i nz-icon nzType="left" nzTheme="outline"></i> | ||||
| @ -7,7 +7,7 @@ | ||||
| </page-header-wrapper> | ||||
|  | ||||
| <nz-card> | ||||
|     <h3 class="font-weight-bold">天津怡亚通物流科技有限公司(浦发银行)</h3> | ||||
|     <h3 class="font-weight-bold">{{params?.ltdName}}</h3> | ||||
|     <nz-row [nzGutter]="16"> | ||||
|         <nz-col [nzXl]="4" [nzLg]="8" [nzSm]="12"> | ||||
|             <nz-statistic [nzValue]="((info.availableBalance |currency:' ') || 0)+'元'" nzTitle="平台账户余额" | ||||
|  | ||||
| @ -221,7 +221,7 @@ export class PlatformAccountDetailComponent implements OnInit { | ||||
|         widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.accountBalance }) } | ||||
|       }, | ||||
|       { title: '付款方', index: 'payName', className: 'text-center', width: 150 }, | ||||
|       { title: '收款方', index: 'payeeName', className: 'text-center', width: 150 }, | ||||
|       { title: '收款方', index: 'incomeName', className: 'text-center', width: 150 }, | ||||
|       { title: '备注', index: 'tradeContent', className: 'text-center', width: 150 } | ||||
|     ]; | ||||
|   } | ||||
|  | ||||
| @ -187,7 +187,7 @@ export class PlatformAccountComponent implements OnInit { | ||||
|             text: '查看明细', | ||||
|             click: item => | ||||
|               this.router.navigate(['/financial-management/platform-account/detail/' + item.id], { | ||||
|                 queryParams: { ltdId: item.ltdId, bankType: item.bankType } | ||||
|                 queryParams: { ltdId: item.ltdId, bankType: item.bankType, ltdName: `${item.ltdName}(${item.bankTypeLabel})` } | ||||
|               }) | ||||
|           } | ||||
|         ] | ||||
|  | ||||
							
								
								
									
										252
									
								
								src/app/routes/financial-management/components/recharge-record/dist/recharge-record.component.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										252
									
								
								src/app/routes/financial-management/components/recharge-record/dist/recharge-record.component.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,252 @@ | ||||
| "use strict"; | ||||
| var __assign = (this && this.__assign) || function () { | ||||
|     __assign = Object.assign || function(t) { | ||||
|         for (var s, i = 1, n = arguments.length; i < n; i++) { | ||||
|             s = arguments[i]; | ||||
|             for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) | ||||
|                 t[p] = s[p]; | ||||
|         } | ||||
|         return t; | ||||
|     }; | ||||
|     return __assign.apply(this, arguments); | ||||
| }; | ||||
| var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { | ||||
|     var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; | ||||
|     if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); | ||||
|     else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; | ||||
|     return c > 3 && r && Object.defineProperty(target, key, r), r; | ||||
| }; | ||||
| exports.__esModule = true; | ||||
| exports.RechargeRecordComponent = void 0; | ||||
| var core_1 = require("@angular/core"); | ||||
| var RechargeRecordComponent = /** @class */ (function () { | ||||
|     function RechargeRecordComponent(service, modal) { | ||||
|         var _this = this; | ||||
|         this.service = service; | ||||
|         this.modal = modal; | ||||
|         this.columns = this.initST(); | ||||
|         this.searchSchema = this.initSF(); | ||||
|         this.rechargeRemark = ''; | ||||
|         this._$expand = false; | ||||
|         this.beforeReq = function (requestOptions) { | ||||
|             if (_this.sf) { | ||||
|                 Object.assign(requestOptions.body, __assign({}, _this.sf.value)); | ||||
|             } | ||||
|             return requestOptions; | ||||
|         }; | ||||
|     } | ||||
|     RechargeRecordComponent.prototype.ngOnInit = function () { }; | ||||
|     RechargeRecordComponent.prototype.addRemark = function (item) { | ||||
|         var _this = this; | ||||
|         this.rechargeRemark = item.rechargeRemark; | ||||
|         var modal = this.modal.create({ | ||||
|             nzTitle: this.rechargeRemark ? '修改备注' : '添加备注', | ||||
|             nzContent: this.remarkodal, | ||||
|             nzFooter: [ | ||||
|                 { | ||||
|                     type: 'primary', | ||||
|                     label: '确认', | ||||
|                     loading: function () { return _this.service.http.loading; }, | ||||
|                     onClick: function () { | ||||
|                         modal.destroy(); | ||||
|                     } | ||||
|                 } | ||||
|             ] | ||||
|         }); | ||||
|     }; | ||||
|     RechargeRecordComponent.prototype.goBack = function () { | ||||
|         history.go(-1); | ||||
|     }; | ||||
|     /** | ||||
|      * 重置表单 | ||||
|      */ | ||||
|     RechargeRecordComponent.prototype.resetSF = function () { | ||||
|         this.sf.reset(); | ||||
|         this._$expand = false; | ||||
|     }; | ||||
|     /** | ||||
|      * 伸缩查询条件 | ||||
|      */ | ||||
|     RechargeRecordComponent.prototype.expandToggle = function () { | ||||
|         var _a; | ||||
|         this._$expand = !this._$expand; | ||||
|         (_a = this.sf) === null || _a === void 0 ? void 0 : _a.setValue('/expand', this._$expand); | ||||
|     }; | ||||
|     RechargeRecordComponent.prototype.exportList = function () { | ||||
|         this.service.downloadFile(this.service.$mock_url, __assign(__assign({}, this.sf.value), { pageSize: -1 })); | ||||
|     }; | ||||
|     RechargeRecordComponent.prototype.initSF = function () { | ||||
|         var _this = this; | ||||
|         return { | ||||
|             properties: { | ||||
|                 expand: { | ||||
|                     type: 'boolean', | ||||
|                     ui: { | ||||
|                         hidden: true | ||||
|                     } | ||||
|                 }, | ||||
|                 rechargeNo: { | ||||
|                     type: 'string', | ||||
|                     title: '充值单号', | ||||
|                     ui: { | ||||
|                         placeholder: '请输入' | ||||
|                     } | ||||
|                 }, | ||||
|                 rechargeStatus: { | ||||
|                     type: 'string', | ||||
|                     title: '充值状态', | ||||
|                     "enum": [ | ||||
|                         { label: '全部', value: '' }, | ||||
|                         { label: '充值中', value: '1' }, | ||||
|                         { label: '充值失败', value: '2' }, | ||||
|                         { label: '充值成功', value: '3' } | ||||
|                     ], | ||||
|                     ui: { | ||||
|                         widget: 'select', | ||||
|                         placeholder: '请选择' | ||||
|                     }, | ||||
|                     "default": '' | ||||
|                 }, | ||||
|                 createTime: { | ||||
|                     title: '充值时间', | ||||
|                     type: 'string', | ||||
|                     ui: { | ||||
|                         widget: 'date', | ||||
|                         mode: 'range', | ||||
|                         format: 'yyyy-MM-dd' | ||||
|                     } | ||||
|                 }, | ||||
|                 roleName: { | ||||
|                     type: 'string', | ||||
|                     title: '账户名称', | ||||
|                     ui: { | ||||
|                         placeholder: '请输入', | ||||
|                         autocomplete: 'off', | ||||
|                         visibleIf: { | ||||
|                             expand: function (value) { return value; } | ||||
|                         } | ||||
|                     } | ||||
|                 }, | ||||
|                 accountType: { | ||||
|                     type: 'string', | ||||
|                     title: '账户类型', | ||||
|                     "enum": [ | ||||
|                         { label: '全部', value: '' }, | ||||
|                         { label: '货主账户', value: '1' }, | ||||
|                         { label: '司机账户', value: '2' }, | ||||
|                         { label: '营商商账户', value: '3' } | ||||
|                     ], | ||||
|                     ui: { | ||||
|                         widget: 'select', | ||||
|                         placeholder: '请选择', | ||||
|                         visibleIf: { | ||||
|                             expand: function (value) { return value; } | ||||
|                         } | ||||
|                     }, | ||||
|                     "default": '' | ||||
|                 }, | ||||
|                 ltdId: { | ||||
|                     type: 'string', | ||||
|                     title: '网络货运人', | ||||
|                     ui: { | ||||
|                         widget: 'select', | ||||
|                         placeholder: '请选择', | ||||
|                         visibleIf: { | ||||
|                             expand: function (value) { return value; } | ||||
|                         }, | ||||
|                         allowClear: true, | ||||
|                         asyncData: function () { return _this.service.getNetworkFreightForwarder(); } | ||||
|                     } | ||||
|                 }, | ||||
|                 bankType: { | ||||
|                     type: 'string', | ||||
|                     title: '银行类型', | ||||
|                     "enum": [ | ||||
|                         { label: '全部', value: '' }, | ||||
|                         { label: '平安银行', value: '1' }, | ||||
|                         { label: '浦发银行', value: '2' } | ||||
|                     ], | ||||
|                     ui: { | ||||
|                         widget: 'select', | ||||
|                         placeholder: '请选择', | ||||
|                         visibleIf: { | ||||
|                             expand: function (value) { return value; } | ||||
|                         } | ||||
|                     }, | ||||
|                     "default": '' | ||||
|                 } | ||||
|             } | ||||
|         }; | ||||
|     }; | ||||
|     RechargeRecordComponent.prototype.initST = function () { | ||||
|         var _this = this; | ||||
|         return [ | ||||
|             { title: '充值时间', index: 'createTime', type: 'date', width: 180 }, | ||||
|             { title: '充值单号', index: 'rechargeNo', width: 140 }, | ||||
|             { title: '网络货运人', index: 'ltdName', width: 160 }, | ||||
|             { title: '银行类型', index: 'bankTypeLabel', width: 100 }, | ||||
|             { title: '账户类型', index: 'accountTypeLabel', width: 100 }, | ||||
|             { title: '账户名称', index: 'roleName', width: 160 }, | ||||
|             { title: '虚拟账户', index: 'virtualAccount', width: 100 }, | ||||
|             { | ||||
|                 title: '充值金额', | ||||
|                 index: 'rechargeAmount', | ||||
|                 width: 160, | ||||
|                 type: 'widget', | ||||
|                 className: 'text-right', | ||||
|                 widget: { type: 'currency-chy', params: function (_a) { | ||||
|                         var record = _a.record; | ||||
|                         return ({ value: record.rechargeAmount }); | ||||
|                     } } | ||||
|             }, | ||||
|             { title: '充值银行账户', render: 'transferBankAccount', width: 200 }, | ||||
|             { title: '充值方式', index: 'payChannelLabel', width: 100 }, | ||||
|             { title: '充值状态', index: 'rechargeStatusLabel', width: 100 }, | ||||
|             { title: '银行流水号', index: 'paySerialNumber', width: 120 }, | ||||
|             { | ||||
|                 title: '操作', | ||||
|                 width: 120, | ||||
|                 fixed: 'right', | ||||
|                 className: 'text-center', | ||||
|                 buttons: [ | ||||
|                     { type: 'divider' }, | ||||
|                     { | ||||
|                         text: '查看回单<br>', | ||||
|                         click: function (item) { | ||||
|                             return _this.service.getReceiptUrl(item.receiptUrl, { | ||||
|                                 bankType: item.bankType, | ||||
|                                 rmYll: item.roleId, | ||||
|                                 snglFlgCd: item.paySerialNumber2, | ||||
|                                 bussType: '06', | ||||
|                                 ltdId: item.ltdId, | ||||
|                                 accountType: item.accountType | ||||
|                             }); | ||||
|                         } | ||||
|                     }, | ||||
|                     { | ||||
|                         text: '添加备注', | ||||
|                         click: function (item) { return _this.addRemark(item); } | ||||
|                     } | ||||
|                 ] | ||||
|             } | ||||
|         ]; | ||||
|     }; | ||||
|     __decorate([ | ||||
|         core_1.ViewChild('st', { static: true }) | ||||
|     ], RechargeRecordComponent.prototype, "st"); | ||||
|     __decorate([ | ||||
|         core_1.ViewChild('sf', { static: false }) | ||||
|     ], RechargeRecordComponent.prototype, "sf"); | ||||
|     __decorate([ | ||||
|         core_1.ViewChild('remarkodal', { static: true }) | ||||
|     ], RechargeRecordComponent.prototype, "remarkodal"); | ||||
|     RechargeRecordComponent = __decorate([ | ||||
|         core_1.Component({ | ||||
|             selector: 'app-recharge-record', | ||||
|             templateUrl: './recharge-record.component.html', | ||||
|             styleUrls: ['../../../commom/less/box.less', '../../../commom/less/expend-but.less'] | ||||
|         }) | ||||
|     ], RechargeRecordComponent); | ||||
|     return RechargeRecordComponent; | ||||
| }()); | ||||
| exports.RechargeRecordComponent = RechargeRecordComponent; | ||||
| @ -19,7 +19,7 @@ | ||||
|     <div nz-row nzGutter="8"> | ||||
|         <div nz-col [nzXl]="_$expand ? 24 : 18" [nzLg]="24" [nzSm]="24" [nzXs]="24"> | ||||
|             <sf #sf [schema]="searchSchema" | ||||
|                 [ui]="{ '*': { spanLabelFixed: 90,grid: { lg: 8, md: 12, sm: 12, xs: 24 } }}" [compact]="true" | ||||
|                 [ui]="{ '*': { spanLabelFixed: 110,grid: { lg: 8, md: 12, sm: 12, xs: 24 } }}" [compact]="true" | ||||
|                 [button]="'none'"></sf> | ||||
|         </div> | ||||
|         <div nz-col [nzXl]="_$expand ? 24 : 6" [nzLg]="24" [nzSm]="24" [nzXs]="24" [class.expend-options]="_$expand" | ||||
| @ -42,4 +42,15 @@ | ||||
|             {{ item.transferBankOpenName }} <br> {{ item.transferBankCardNumber }} | ||||
|         </ng-template> | ||||
|     </st> | ||||
| </nz-card> | ||||
| </nz-card> | ||||
|  | ||||
| <ng-template #remarkodal> | ||||
|     <div nz-row> | ||||
|         <div nz-col nzSpan="24" se-container [labelWidth]="80"> | ||||
|             <se [col]="1" label="备注"> | ||||
|                 <textarea nz-input rows="3" [(ngModel)]="rechargeRemark" placeholder="最多不能超过100字" | ||||
|                     maxlength="100"></textarea> | ||||
|             </se> | ||||
|         </div> | ||||
|     </div> | ||||
| </ng-template> | ||||
| @ -1,6 +1,7 @@ | ||||
| import { Component, OnInit, ViewChild } from '@angular/core'; | ||||
| import { STComponent, STColumn, STChange, STRequestOptions } from '@delon/abc/st'; | ||||
| import { SFComponent, SFSchema, SFDateWidgetSchema } from '@delon/form'; | ||||
| import { NzModalService } from 'ng-zorro-antd/modal'; | ||||
| import { FreightAccountService } from '../../services/freight-account.service'; | ||||
|  | ||||
| @Component({ | ||||
| @ -16,8 +17,12 @@ export class RechargeRecordComponent implements OnInit { | ||||
|   columns: STColumn[] = this.initST(); | ||||
|   searchSchema: SFSchema = this.initSF(); | ||||
|  | ||||
|   @ViewChild('remarkodal', { static: true }) | ||||
|   remarkodal!: any; | ||||
|   rechargeRemark = ''; | ||||
|  | ||||
|   _$expand = false; | ||||
|   constructor(public service: FreightAccountService) {} | ||||
|   constructor(public service: FreightAccountService, private modal: NzModalService) {} | ||||
|  | ||||
|   ngOnInit(): void {} | ||||
|  | ||||
| @ -28,6 +33,24 @@ export class RechargeRecordComponent implements OnInit { | ||||
|     return requestOptions; | ||||
|   }; | ||||
|  | ||||
|   addRemark(item: any) { | ||||
|     this.rechargeRemark = item.rechargeRemark; | ||||
|     const modal = this.modal.create({ | ||||
|       nzTitle: this.rechargeRemark ? '修改备注' : '添加备注', | ||||
|       nzContent: this.remarkodal, | ||||
|       nzFooter: [ | ||||
|         { | ||||
|           type: 'primary', | ||||
|           label: '确认', | ||||
|           loading: () => this.service.http.loading, | ||||
|           onClick: () => { | ||||
|             modal.destroy(); | ||||
|           } | ||||
|         } | ||||
|       ] | ||||
|     }); | ||||
|   } | ||||
|  | ||||
|   goBack() { | ||||
|     history.go(-1); | ||||
|   } | ||||
| @ -110,7 +133,7 @@ export class RechargeRecordComponent implements OnInit { | ||||
|             { label: '全部', value: '' }, | ||||
|             { label: '货主账户', value: '1' }, | ||||
|             { label: '司机账户', value: '2' }, | ||||
|             { label: '营商账户', value: '3' } | ||||
|             { label: '营商商账户', value: '3' } | ||||
|           ], | ||||
|           ui: { | ||||
|             widget: 'select', | ||||
| @ -178,12 +201,13 @@ export class RechargeRecordComponent implements OnInit { | ||||
|       { title: '银行流水号', index: 'paySerialNumber', width: 120 }, | ||||
|       { | ||||
|         title: '操作', | ||||
|         width: 100, | ||||
|         width: 120, | ||||
|         fixed: 'right', | ||||
|         className: 'text-center', | ||||
|         buttons: [ | ||||
|           { type: 'divider' }, | ||||
|           { | ||||
|             text: '查看回单', | ||||
|             text: '查看回单<br>', | ||||
|             click: item => | ||||
|               this.service.getReceiptUrl(item.receiptUrl, { | ||||
|                 bankType: item.bankType, | ||||
| @ -193,6 +217,10 @@ export class RechargeRecordComponent implements OnInit { | ||||
|                 ltdId: item.ltdId, | ||||
|                 accountType: item.accountType | ||||
|               }) | ||||
|           }, | ||||
|           { | ||||
|             text: '添加备注', | ||||
|             click: item => this.addRemark(item) | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|  | ||||
| @ -138,9 +138,9 @@ export class TransactionFlowComponent { | ||||
|           title: '账户类型', | ||||
|           enum: [ | ||||
|             { label: '全部', value: '' }, | ||||
|             { label: '货主端', value: '1' }, | ||||
|             { label: '司机端', value: '2' }, | ||||
|             { label: '司机端', value: '3' } | ||||
|             { label: '货主账户', value: '1' }, | ||||
|             { label: '司机账户', value: '2' }, | ||||
|             { label: '运营商账户', value: '3' } | ||||
|           ], | ||||
|           ui: { | ||||
|             widget: 'select', | ||||
|  | ||||
| @ -59,7 +59,7 @@ | ||||
|                 <strong class="text-red">{{ selectedRows.length }}</strong> 条数据   累计提现 <strong | ||||
|                     class="text-red">{{ | ||||
|                     totalCallNo }}</strong> | ||||
|                 <a *ngIf="totalCallNo > 0" (click)="st.clearCheck()" class="ml-lg">清空</a> | ||||
|                 <a *ngIf="totalCallNo > 0" (click)="st.clearCheck();totalCallNo=0" class="ml-lg">清空</a> | ||||
|             </div> | ||||
|             <button nz-button (click)="this.auditAction(null)">审核</button> | ||||
|         </div> | ||||
|  | ||||
| @ -4,7 +4,7 @@ | ||||
|  * @Author       : Shiming | ||||
|  * @Date         : 2021-12-24 16:58:02 | ||||
|  * @LastEditors  : Shiming | ||||
|  * @LastEditTime : 2022-03-11 16:40:47 | ||||
|  * @LastEditTime : 2022-04-01 10:58:50 | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\bulk-detail-change\\bulk-detail-change.component.html | ||||
|  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||
| --> | ||||
| @ -33,8 +33,8 @@ | ||||
|         <sv label="货主">{{ i?.goodsResource?.shipperAppUserName }} </sv> | ||||
|         <sv label="所属项目">{{i?.goodsResource?.enterpriseProjectName}}</sv> | ||||
|         <sv label="服务类型">{{i?.goodsResource?.serviceTypeLabel}}</sv> | ||||
|         <sv label="录单员">{{i?.createUserName}} /{{i?.createUserPhone}} </sv> | ||||
|         <sv label="调度员">{{i?.goodsResource?.dispatchName}}/{{i?.goodsResource?.dispatchPhone}} </sv> | ||||
|         <sv label="录单员">{{i?.createUserName}} {{  i?.createUserPhone ? "/" + i?.createUserPhone : ''}} </sv> | ||||
|         <sv label="调度员">{{i?.goodsResource?.dispatchName}}{{  i?.goodsResource?.dispatchPhone ? "/" + i?.goodsResource?.dispatchPhone : ''}} </sv> | ||||
|      </div> | ||||
|      <nz-tabset style="margin-top: 15px;"> | ||||
|       <nz-tab nzTitle="装卸货信息" (nzClick)="goDistance(distannce1)"> | ||||
| @ -236,10 +236,10 @@ | ||||
|         </ng-template> | ||||
|  | ||||
|         <ng-template sf-template="carmand" let-item let-ui="ui"> | ||||
|           {{ i?.carModel }}/{{ i?.carLength }} | ||||
|           {{ i?.carModel }}{{  i?.carLength ? "/" +  i?.carLength : ''}} | ||||
|         </ng-template> | ||||
|         <ng-template sf-template="drivers" let-item let-ui="ui"> | ||||
|           {{i?.driverName}}/{{i?.driverPhone}}/{{i?.carNo}} | ||||
|           {{i?.driverName}}{{ i?.driverPhone ? "/" +  i?.driverPhone : ''}}{{  i?.carNo ? "/" +  i?.carNo : ''}} | ||||
|         </ng-template> | ||||
|         <ng-template sf-template="weightModel" let-item let-ui="ui"> | ||||
|           {{ i?.driverCarModelLabel }},{{ i?.driverCarLengthLabel }}米,{{ i?.driverCarWeight }}吨  | ||||
| @ -275,7 +275,7 @@ | ||||
|       附加费{{ i?.totalSurcharge | currency }},附加费率{{ (i?.totalRate * 100).toFixed(2)}}%) | ||||
|     </div> | ||||
|   </div> | ||||
|   <div>收款人:{{ i?.payeeName }}/{{ i?.payeePhone }}</div> | ||||
|   <div>车队长:{{ i?.payeeName }}{{ i?.payeePhone ? "/" +  i?.payeePhone : ''}}</div> | ||||
| </nz-card> | ||||
|  | ||||
|  | ||||
|  | ||||
| @ -532,7 +532,7 @@ export class OrderManagementBulkDetailChangeComponent implements OnInit { | ||||
|         } | ||||
|       ], | ||||
|       // 运费信息 | ||||
|       // 收款人 | ||||
|       // 车队长 | ||||
|       payeeId: this.dirverPhone, | ||||
|       dirverBankCard: this.dirverBankCard, // 银行卡 | ||||
|       // 发车时间 | ||||
|  | ||||
| @ -4,7 +4,7 @@ | ||||
|  * @Author       : Shiming | ||||
|  * @Date         : 2021-12-06 20:20:26 | ||||
|  * @LastEditors  : Shiming | ||||
|  * @LastEditTime : 2022-03-30 17:39:43 | ||||
|  * @LastEditTime : 2022-04-01 10:56:13 | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\bulk-detail\\bulk-detail.component.html | ||||
|  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||
| --> | ||||
| @ -43,8 +43,8 @@ | ||||
|         <sv label="货主">{{ i?.goodsResource?.shipperAppUserName }} </sv> | ||||
|         <sv label="所属项目">{{ i?.goodsResource?.enterpriseProjectName }}</sv> | ||||
|         <sv label="服务类型">{{ i?.goodsResource?.serviceTypeLabel }}</sv> | ||||
|         <sv label="录单员">{{ i?.createUserName }} /{{ i?.createUserPhone }} </sv> | ||||
|         <sv label="调度员">{{ i?.goodsResource?.dispatchName }}/{{ i?.goodsResource?.dispatchPhone }} </sv> | ||||
|         <sv label="录单员">{{ i?.createUserName }} {{   i?.createUserPhone ? "/" +  i?.createUserPhone : ''}} </sv> | ||||
|         <sv label="调度员">{{ i?.goodsResource?.dispatchName }}{{  i?.goodsResource?.dispatchPhone ? "/" + i?.goodsResource?.dispatchPhone : ''}} </sv> | ||||
|         <sv label="货源编号">{{ i?.goodsResource?.resourceCode }} </sv> | ||||
|         <sv label="运单号">{{ i?.wayBill?.wayBillCode }}</sv> | ||||
|         <sv label="承诺付款天数">{{ i?.goodsResource?.paymentDays }}</sv> | ||||
| @ -83,8 +83,8 @@ | ||||
|   </sv-container> | ||||
|   <sv-container col="2"> | ||||
|     <sv label="货物数量"> {{i?.goodsInfoList?.[0]?.weight}}吨,{{i?.goodsInfoList?.[0]?.volume}}方,{{i?.goodsInfoList?.[0]?.number}}件 </sv> | ||||
|     <sv label="用车需求">{{ i?.carModel }}/{{ i?.carLength }} </sv> | ||||
|     <sv label="承运司机"> {{ i?.driverName }}/{{ i?.driverPhone }}{{ i?.carNo }} </sv> | ||||
|     <sv label="用车需求">{{ i?.carModel }}{{ i?.carLength ? "/" + i?.carLength : ''}} </sv> | ||||
|     <sv label="承运司机"> {{ i?.driverName }}{{i?.driverPhone ? "/" + i?.driverPhone : ''}}{{ i?.carNo ? "/" + i?.carNo : ''}} </sv> | ||||
|     <sv label="车型车长载重"> {{ i?.driverCarModelLabel }},{{ i?.driverCarLengthLabel }}米,{{ i?.driverCarWeight }}吨 </sv> | ||||
|     <!-- <sv label="计划装货时间"> | ||||
|       {{ i?.loadPlanTime }} | ||||
| @ -114,7 +114,7 @@ | ||||
|               <div class="handling-info-icon loading-bg">装</div> | ||||
|               <div class="info"> | ||||
|                 <h4>装货地:{{ item?.province }}{{ item.city }}{{ item.area }}{{ item.detailedAddress }}</h4> | ||||
|                 <p>联系人:{{ item.appUserName }}/{{ item.contractTelephone }}</p> | ||||
|                 <p>联系人:{{ item.appUserName }}{{  item.contractTelephone ? "/" + item.contractTelephone : '' }}</p> | ||||
|               </div> | ||||
|             </div> | ||||
|           </div> | ||||
| @ -127,7 +127,7 @@ | ||||
|               <div class="handling-info-icon unloaing-bg">卸</div> | ||||
|               <div class="info"> | ||||
|                 <h4>卸货地:{{ item?.province }}{{ item.city }}{{ item.area }}{{ item.detailedAddress }}</h4> | ||||
|                 <p>联系人:{{ item.appUserName }}/{{ item.contractTelephone }}</p> | ||||
|                 <p>联系人:{{ item.appUserName }}{{   item.contractTelephone ? "/" + item.contractTelephone : ''}}</p> | ||||
|               </div> | ||||
|             </div> | ||||
|           </div> | ||||
| @ -156,7 +156,7 @@ | ||||
|       附加费{{ i?.totalSurcharge | currency }},附加费率{{ (i?.totalRate * 100).toFixed(2)}}%) | ||||
|     </div> | ||||
|   </div> | ||||
|   <div>收款人:{{ i?.payeeName }}/{{ i?.payeePhone }}</div> | ||||
|   <div>车队长:{{ i?.payeeName }}{{   i?.payeePhone ? "/" +  i?.payeePhone : ''}}</div> | ||||
| </nz-card> | ||||
|  | ||||
| <nz-card nzTitle="附件信息" #distannce4> | ||||
|  | ||||
| @ -4,7 +4,7 @@ | ||||
|  * @Author       : Shiming | ||||
|  * @Date         : 2022-01-12 10:52:50 | ||||
|  * @LastEditors  : Shiming | ||||
|  * @LastEditTime : 2022-03-07 11:12:57 | ||||
|  * @LastEditTime : 2022-04-01 10:52:51 | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\bulk\\bulk.component.html | ||||
|  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||
| --> | ||||
| @ -76,13 +76,13 @@ | ||||
|         <div *ngIf="item?.unloadTime">卸 | {{ item?.unloadTime }}</div> | ||||
|       </ng-template> | ||||
|       <ng-template st-row="driverName" let-item let-index="index"> | ||||
|         <div> {{ item?.driverName }}/{{ item?.driverPhone }}/{{ item?.carNo }} </div> | ||||
|         <div> {{ item?.driverName }}{{  item?.driverPhone ? "/" + item?.driverPhone : '' }}{{   item?.carNo ? "/" + item?.carNo : ''}} </div> | ||||
|       </ng-template> | ||||
|       <ng-template st-row="payeeName" let-item let-index="index"> | ||||
|         <div> {{ item?.payeeName }}/{{ item?.payeePhone }} </div> | ||||
|         <div> {{ item?.payeeName }}{{ item?.payeePhone ? "/" + item?.payeePhone : ''  }} </div> | ||||
|       </ng-template> | ||||
|       <ng-template st-row="createUserName" let-item let-index="index"> | ||||
|         <div> {{ item?.createUserName }}/{{ item?.createUserPhone }} </div> | ||||
|         <div> {{ item?.createUserName }}{{  item?.createUserPhone ? "/" + item?.createUserPhone : '' }} </div> | ||||
|       </ng-template> | ||||
|       <ng-template st-row="billCode" let-item let-index="index"> | ||||
|         <a [routerLink]="'bulk-detail/' + item.id">{{ item.billCode }}</a> | ||||
|  | ||||
| @ -506,7 +506,7 @@ export class OrderManagementBulkComponent implements OnInit { | ||||
|         render: 'driverName' | ||||
|       }, | ||||
|       { | ||||
|         title: '收款人', | ||||
|         title: '车队长', | ||||
|         className: 'text-left', | ||||
|         width: '180px', | ||||
|         index: 'payeeName', | ||||
|  | ||||
| @ -4,7 +4,7 @@ | ||||
|  * @Author       : Shiming | ||||
|  * @Date         : 2022-01-12 10:52:50 | ||||
|  * @LastEditors  : Shiming | ||||
|  * @LastEditTime : 2022-03-29 14:28:39 | ||||
|  * @LastEditTime : 2022-04-01 10:59:54 | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\compliance-audit\\compliance-audit.component.html | ||||
|  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||
| --> | ||||
| @ -81,10 +81,10 @@ | ||||
|         <div *ngIf="item?.unloadingTime">卸 | {{ item?.unloadingTime }}</div> | ||||
|       </ng-template> | ||||
|       <ng-template st-row="driverName" let-item let-index="index"> | ||||
|         <div> {{ item?.driverName }}/{{ item?.driverPhone }}/{{ item?.carNo }} </div> | ||||
|         <div> {{ item?.driverName }}{{ item?.driverPhone ? "/" + item?.driverPhone : '' }}{{ item?.carNo ? "/" + item?.carNo : '' }} </div> | ||||
|       </ng-template> | ||||
|       <ng-template st-row="payeeName" let-item let-index="index"> | ||||
|         <div> {{ item?.payeeName }}/{{ item?.payeePhone }} </div> | ||||
|         <div> {{ item?.payeeName }}{{ item?.payeePhone ? "/" + item?.payeePhone : '' }} </div> | ||||
|       </ng-template> | ||||
|       <ng-template st-row="billCode" let-item let-index="index"> | ||||
|         <a *ngIf="item.billType == '1'" [routerLink]="'/order-management/vehicle/vehicle-detail/' + item.id">{{ item.billCode }}</a> | ||||
|  | ||||
| @ -353,7 +353,7 @@ export class OrderManagementComplianceAuditComponent implements OnInit { | ||||
|         render: 'driverName' | ||||
|       }, | ||||
|       { | ||||
|         title: '收款人', | ||||
|         title: '车队长', | ||||
|         className: 'text-left', | ||||
|         width: '180px', | ||||
|         index: 'payeeName', | ||||
|  | ||||
| @ -4,7 +4,7 @@ | ||||
|  * @Author       : Shiming | ||||
|  * @Date         : 2022-01-12 10:52:50 | ||||
|  * @LastEditors  : Shiming | ||||
|  * @LastEditTime : 2022-03-25 13:44:11 | ||||
|  * @LastEditTime : 2022-04-01 11:00:38 | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\receipts-audit\\receipts-audit.component.html | ||||
|  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||
| --> | ||||
| @ -92,10 +92,10 @@ | ||||
|         <div *ngIf="item?.unloadingTime">卸 | {{ item?.unloadingTime }}</div> | ||||
|       </ng-template> | ||||
|       <ng-template st-row="driverName" let-item let-index="index"> | ||||
|         <div> {{ item?.driverName }}/{{ item?.driverPhone }}/{{ item?.carNo }} </div> | ||||
|         <div> {{ item?.driverName }}{{ item?.driverPhone ? "/" + item?.driverPhone : ''}}{{  item?.carNo ? "/" + item?.carNo : '' }} </div> | ||||
|       </ng-template> | ||||
|       <ng-template st-row="payeeName" let-item let-index="index"> | ||||
|         <div> {{ item?.payeeName }}/{{ item?.payeePhone }} </div> | ||||
|         <div> {{ item?.payeeName }}{{item?.payeePhone ? "/" + item?.payeePhone : '' }} </div> | ||||
|       </ng-template> | ||||
|       <ng-template st-row="billCode" let-item let-index="index"> | ||||
|         <!-- <div>{{ item.billCode }}</div> --> | ||||
|  | ||||
| @ -364,7 +364,7 @@ export class OrderManagementReceiptsAuditComponent implements OnInit { | ||||
|         render: 'driverName' | ||||
|       }, | ||||
|       { | ||||
|         title: '收款人', | ||||
|         title: '车队长', | ||||
|         className: 'text-left', | ||||
|         width: '180px', | ||||
|         index: 'payeeName', | ||||
| @ -397,25 +397,25 @@ export class OrderManagementReceiptsAuditComponent implements OnInit { | ||||
|           { | ||||
|             text: '生成电子单据', | ||||
|             click: _record => this.generate(_record, 2), | ||||
|             iif: item => item.auditStatus == '1', | ||||
|             iif: item =>  !item?.loadingElectronicsLadingBillFilePath, | ||||
|             acl: { ability: ['ORDER-RECEIPTS-electronicBillingOne'] }, | ||||
|           }, | ||||
|           { | ||||
|             text: '通过', | ||||
|             click: _record => this.sign(_record), | ||||
|             iif: item => item.auditStatus == '1', | ||||
|             iif: item =>  !item?.loadingElectronicsLadingBillFilePath, | ||||
|             acl: { ability: ['ORDER-RECEIPTS-billAuditPassBatch'] }, | ||||
|           }, | ||||
|           { | ||||
|             text: '修改', | ||||
|             click: _record => this.modification(_record), | ||||
|             iif: item => item.auditStatus == '1', | ||||
|             iif: item =>   !item?.loadingElectronicsLadingBillFilePath, | ||||
|             acl: { ability: ['ORDER-RECEIPTS-updateBillExamine'] }, | ||||
|           }, | ||||
|           { | ||||
|             text: '查看凭证', | ||||
|             click: _record => this.generate(_record, 3), | ||||
|             iif: item => item.auditStatus == '2', | ||||
|             iif: item => item?.loadingElectronicsLadingBillFilePath, | ||||
|             acl: { ability: ['ORDER-RECEIPTS-view'] }, | ||||
|           }, | ||||
|         ] | ||||
| @ -491,8 +491,10 @@ export class OrderManagementReceiptsAuditComponent implements OnInit { | ||||
|       nzFooter: null | ||||
|     }); | ||||
|     modalRef.afterClose.subscribe((result: any) => { | ||||
|       this.st.load(1); | ||||
|       this.getGoodsSourceStatistical() | ||||
|       if(result) { | ||||
|         this.st.load(); | ||||
|         this.getGoodsSourceStatistical() | ||||
|       } | ||||
|     }); | ||||
|   } | ||||
|   // 通过 | ||||
| @ -544,23 +546,14 @@ export class OrderManagementReceiptsAuditComponent implements OnInit { | ||||
|       nzTitle: `<b>已选择${this.selectedRows.length}条订单,确认批量生成电子单据吗?</b>`, | ||||
|       nzContent: `<b>确认后单据不可修改,请谨慎操作。</b>`, | ||||
|       nzOnOk: () => | ||||
|         // this.service.request(this.service.$api_get_cancelAnOrder, { ids: params }).subscribe(res => { | ||||
|         //   if (res === true) { | ||||
|         //     this.service.msgSrv.success('操作成功!'); | ||||
|         //     this.st?.reload(1); | ||||
|         //     this.getGoodsSourceStatistical(); | ||||
|         //     this.initST(); | ||||
|         //   } | ||||
|         //   this.st?.reload(1); | ||||
|            { | ||||
|             this.service.downloadFile(this.service.$api_createBillTakeGoods,params) | ||||
|             this.service.downloadFile(this.service.$api_createBillDischargeGoods,params) | ||||
|             this.service.msgSrv.success('生成成功!'); | ||||
|              this.st?.reload() | ||||
|         //   this.getGoodsSourceStatistical(); | ||||
|         // }) | ||||
|     {    | ||||
|        this.service.downloadFile(this.service.$api_createBillTakeGoods,{billIds: params.join(',')}) | ||||
|  | ||||
|         | ||||
|        this.service.downloadFile(this.service.$api_createBillDischargeGoods,{billIds: params.join(',')})} | ||||
|          | ||||
|     }); | ||||
|        } | ||||
|       }) | ||||
|   } | ||||
|    // 获取所属项目 | ||||
|    getRegionCode(regionCode: any) { | ||||
|  | ||||
| @ -4,7 +4,7 @@ | ||||
|  * @Author       : Shiming | ||||
|  * @Date         : 2022-01-12 10:52:50 | ||||
|  * @LastEditors  : Shiming | ||||
|  * @LastEditTime : 2022-03-24 19:53:19 | ||||
|  * @LastEditTime : 2022-04-01 11:02:21 | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\risk\\risk.component.html | ||||
|  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||
| --> | ||||
| @ -33,7 +33,7 @@ | ||||
|       </div> | ||||
|       <div nz-col [nzSpan]="_$expand ? 24 : 6" class="text-right"> | ||||
|         <button nz-button nzType="primary" [nzLoading]="false" (click)="search()"  acl  [acl-ability]="['ORDER-RISK-search']">查询</button> | ||||
|         <button nz-button nzType="primary" [disabled]="false">导出</button> | ||||
|         <button nz-button nzType="primary" [disabled]="false" (click)="exprot()">导出</button> | ||||
|         <button nz-button [disabled]="false" (click)="resetSF()">重置</button> | ||||
|         <button nz-button nzType="link" (click)="expandToggle()"> | ||||
|           {{ !_$expand ? '展开' : '收起' }} | ||||
| @ -84,10 +84,10 @@ | ||||
|         </div> | ||||
|       </ng-template> | ||||
|       <ng-template st-row="driverName" let-item let-index="index"> | ||||
|         <div> {{ item?.driverName }}/{{ item?.driverPhone }} </div> | ||||
|         <div> {{ item?.driverName }}{{  item?.driverPhone ? "/" + item?.driverPhone : '' }}{{   item?.carNo ? "/" + item?.carNo : ''}} </div> | ||||
|       </ng-template> | ||||
|       <ng-template st-row="payeeName" let-item let-index="index"> | ||||
|         <div> {{ item?.payeeName }}/{{ item?.payeePhone }} </div> | ||||
|         <div> {{ item?.payeeName }}{{ item?.payeePhone ? "/" + item?.payeePhone : ''  }} </div> | ||||
|       </ng-template> | ||||
|       <ng-template st-row="freightDetails" let-item let-index="index"> | ||||
|         <div *ngIf="item.freightDetails.length > 0"> | ||||
| @ -97,8 +97,8 @@ | ||||
|       <ng-template st-row="goodsInfoVOList" let-item let-index="index"> | ||||
|         <div *ngFor="let i of item?.goodsInfoVOList"> | ||||
|           <p>货物名称:{{ i?.goodsName }}</p> | ||||
|           <p>重量/体积:{{ i?.weight }}吨/{{ i?.volume }}方</p> | ||||
|           <p>车型/车长:{{ i?.carModelLabel }}/ {{ i?.carLengthLabel }}</p> | ||||
|           <p>重量/体积:{{ i?.weight ? i?.weight + '吨' : '' }}{{  i?.volume ? "/" + i?.volume + '方' : ''}}</p> | ||||
|           <p>车型/车长:{{ i?.carModelLabel }} {{ i?.carLengthLabel ? "/" + i?.carLengthLabel : ''}}</p> | ||||
|         </div> | ||||
|       </ng-template> | ||||
|     </st> | ||||
|  | ||||
| @ -182,7 +182,7 @@ export class OrderManagementRiskComponent implements OnInit { | ||||
|         }, | ||||
|         payeeName: { | ||||
|           type: 'string', | ||||
|           title: '收款人', | ||||
|           title: '车队长', | ||||
|           ui: { | ||||
|             visibleIf: { | ||||
|               _$expand: (value: boolean) => value | ||||
| @ -314,7 +314,7 @@ export class OrderManagementRiskComponent implements OnInit { | ||||
|         render: 'driverName' | ||||
|       }, | ||||
|       { | ||||
|         title: '收款人', | ||||
|         title: '车队长', | ||||
|         className: 'text-left', | ||||
|         width: '200px', | ||||
|         render: 'payeeName' | ||||
| @ -532,4 +532,12 @@ export class OrderManagementRiskComponent implements OnInit { | ||||
|   viewEvaluate(item: any) { | ||||
|     this.router.navigate(['/order-management/risk-detail', item.id]); | ||||
|   } | ||||
|     // 导出 | ||||
|     exprot() { | ||||
|       this.service.request(this.service.$api_get_asyncExportRiskBillList, this.reqParams).subscribe((res: any) => { | ||||
|         if (res) { | ||||
|           this.service.msgSrv.success('导出成功,请去下载中心下载!'); | ||||
|         } | ||||
|       }); | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -4,7 +4,7 @@ | ||||
|  * @Author       : Shiming | ||||
|  * @Date         : 2021-12-23 13:39:58 | ||||
|  * @LastEditors  : Shiming | ||||
|  * @LastEditTime : 2022-03-23 14:46:17 | ||||
|  * @LastEditTime : 2022-04-01 11:08:44 | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\vehicle-detail-change\\vehicle-detail-change.component.html | ||||
|  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||
| --> | ||||
| @ -32,8 +32,10 @@ | ||||
|         <sv label="货主">{{ i?.goodsResource?.shipperAppUserName }} </sv> | ||||
|         <sv label="所属项目">{{ i?.goodsResource?.enterpriseProjectName }}</sv> | ||||
|         <sv label="服务类型">{{ i?.goodsResource?.serviceTypeLabel }}</sv> | ||||
|         <sv label="录单员">{{ i?.createUserName || i?.goodsResource?.createUserName }} /{{ i?.createUserPhone || i?.goodsResource?.createUserPhone }} </sv> | ||||
|         <sv label="调度员">{{ i?.goodsResource?.dispatchName }}/{{ i?.goodsResource?.dispatchPhone }} </sv> | ||||
|         <sv label="录单员">{{ i?.createUserName }} {{ i?.createUserPhone ? '/' + i?.createUserPhone : '' }} </sv> | ||||
|         <sv label="调度员" | ||||
|           >{{ i?.goodsResource?.dispatchName }}{{ i?.goodsResource?.dispatchPhone ? '/' + i?.goodsResource?.dispatchPhone : '' }} | ||||
|         </sv> | ||||
|         <sv label="外部订单号">{{ i?.externalBillCode }}</sv> | ||||
|         <sv label="货源编号">{{ i?.goodsResource?.resourceCode }} </sv> | ||||
|         <sv label="运单号">{{ i?.wayBillId }}</sv> | ||||
| @ -216,10 +218,10 @@ | ||||
|         </ng-template> | ||||
|  | ||||
|         <ng-template sf-template="carmand" let-item let-ui="ui"> | ||||
|           {{ i?.carModel }}/{{ i?.carLength }} | ||||
|           {{ i?.carModel }}{{ i?.carLength ? '/' + i?.carLength : '' }} | ||||
|         </ng-template> | ||||
|         <ng-template sf-template="drivers" let-item let-ui="ui"> | ||||
|           {{i?.driverName}}/{{i?.driverPhone}}/{{i?.carNo}} | ||||
|           {{ i?.driverName }}{{i?.driverPhone ? "/" + i?.driverPhone : ''}}{{ i?.carNo ? "/" + i?.carNo : ''}}  | ||||
|         </ng-template> | ||||
|  | ||||
|         <ng-template sf-template="weightModel" let-item let-ui="ui"> | ||||
| @ -251,7 +253,7 @@ | ||||
|     总计:<span style="color: #da001b; font-size: 18px">{{ i?.totalAmount | currency }}</span> (运费{{ i?.totalFreight | currency }}, | ||||
|     附加费{{ i?.totalSurcharge | currency }},附加费率{{ (i?.totalRate * 100).toFixed(2)}}% ) | ||||
|   </div> | ||||
|   <div>收款人:{{ i?.payeeName }}/{{ i?.payeePhone }}</div> | ||||
|   <div>车队长:{{ i?.payeeName }}{{   i?.payeePhone ? "/" +  i?.payeePhone : ''}}</div> | ||||
| </nz-card> | ||||
|  | ||||
| <nz-card nzTitle="附件信息" #distannce4> | ||||
|  | ||||
| @ -520,7 +520,7 @@ export class OrderManagementVehicleDetailChangeComponent implements OnInit { | ||||
|       ], | ||||
|       // 运费信息 | ||||
|       billExpenseDetailDTOList: this.st._data, | ||||
|       // 收款人 | ||||
|       // 车队长 | ||||
|       payeeId: this.dirverPhone, | ||||
|       dirverBankCard: this.dirverBankCard, // 银行卡 | ||||
|       // 发车时间 | ||||
|  | ||||
| @ -4,7 +4,7 @@ | ||||
|  * @Author       : Shiming | ||||
|  * @Date         : 2021-12-28 14:42:03 | ||||
|  * @LastEditors  : Shiming | ||||
|  * @LastEditTime : 2022-03-30 09:36:23 | ||||
|  * @LastEditTime : 2022-04-01 11:06:21 | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\vehicle-detail\\vehicle-detail.component.html | ||||
|  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||
| --> | ||||
| @ -15,24 +15,26 @@ | ||||
|     </button> | ||||
|   </ng-template> | ||||
|   <ng-template #headerContent> | ||||
|     <div  nz-row> | ||||
|     <div nz-row> | ||||
|       <button nz-button nzType="primary" nzSize="small" nzDanger>{{ i?.billStatusLabel }}</button> | ||||
|       <h4 class="ml-md" style="font-size: 18px">订单号: {{ i?.billCode }}</h4> | ||||
|     </div> | ||||
|     <div nz-row style="display: flex; justify-content: end" class="mb-xs"> | ||||
|       <div nz-col > | ||||
|       <div nz-col> | ||||
|         <button | ||||
|           (click)="cancellation()" | ||||
|           nz-button | ||||
|           *ngIf="i.billStatus == '4' || i.billStatus == '5' || i.billStatus == '2' || i.billStatus == '3' || i.billStatus == '1'" | ||||
|           acl  [acl-ability]="['ORDER-VEHICLE-DETAIL-cancelAnOrder']" | ||||
|           acl | ||||
|           [acl-ability]="['ORDER-VEHICLE-DETAIL-cancelAnOrder']" | ||||
|           >取消订单</button | ||||
|         > | ||||
|         <button | ||||
|           nz-button | ||||
|           (click)="changeOrder()" | ||||
|           *ngIf="i.billStatus == '4' || i.billStatus == '5' || i.billStatus == '2' || i.billStatus == '3'" | ||||
|           acl  [acl-ability]="['ORDER-VEHICLE-DETAIL-modifyOrder']" | ||||
|           acl | ||||
|           [acl-ability]="['ORDER-VEHICLE-DETAIL-modifyOrder']" | ||||
|           >修改订单</button | ||||
|         > | ||||
|       </div> | ||||
| @ -43,8 +45,10 @@ | ||||
|         <sv label="货主">{{ i?.goodsResource?.shipperAppUserName }} </sv> | ||||
|         <sv label="所属项目">{{ i?.goodsResource?.enterpriseProjectName }}</sv> | ||||
|         <sv label="服务类型">{{ i?.goodsResource?.serviceTypeLabel }}</sv> | ||||
|         <sv label="录单员">{{ i?.createUserName || i?.goodsResource?.createUserName }} /{{ i?.createUserPhone || i?.goodsResource?.createUserPhone }} </sv> | ||||
|         <sv label="调度员">{{ i?.goodsResource?.dispatchName }}/{{ i?.goodsResource?.dispatchPhone }} </sv> | ||||
|         <sv label="录单员">{{ i?.createUserName }} {{ i?.createUserPhone ? '/' + i?.createUserPhone : '' }} </sv> | ||||
|         <sv label="调度员" | ||||
|           >{{ i?.goodsResource?.dispatchName }}{{ i?.goodsResource?.dispatchPhone ? '/' + i?.goodsResource?.dispatchPhone : '' }} | ||||
|         </sv> | ||||
|         <sv label="外部订单号">{{ i?.externalBillCode }}</sv> | ||||
|         <sv label="货源编号">{{ i?.goodsResource?.resourceCode }} </sv> | ||||
|         <sv label="运单号">{{ i?.wayBill?.wayBillCode }}</sv> | ||||
| @ -66,9 +70,13 @@ | ||||
|     <div style="width: 60%; margin: 0 auto"> | ||||
|         | ||||
|       <nz-steps [nzCurrent]="i?.scheduleVOList?.length + 1" nzLabelPlacement="vertical"> | ||||
|         <nz-step *ngFor="let item of i?.scheduleVOList" [nzTitle]="item.state" [nzSubtitle]="item.stateTime" | ||||
|         <nz-step | ||||
|           *ngFor="let item of i?.scheduleVOList" | ||||
|           [nzTitle]="item.state" | ||||
|           [nzSubtitle]="item.stateTime" | ||||
|           [nzDescription]="item.cancelReason ? '取消原因:' + item.cancelReason : ''" | ||||
|           [nzStatus]="item.displayStatus === 'SHOW' ? 'finish' : 'wait'"></nz-step> | ||||
|           [nzStatus]="item.displayStatus === 'SHOW' ? 'finish' : 'wait'" | ||||
|         ></nz-step> | ||||
|       </nz-steps> | ||||
|     </div> | ||||
|   </div> | ||||
| @ -86,8 +94,8 @@ | ||||
|   </sv-container> | ||||
|   <sv-container col="2"> | ||||
|     <sv label="货物数量"> {{i?.goodsInfoList?.[0]?.weight}}吨,{{i?.goodsInfoList?.[0]?.volume}}方,{{i?.goodsInfoList?.[0]?.number}}件 </sv> | ||||
|     <sv label="用车需求">{{ i?.carModel }}/{{ i?.carLength }} </sv> | ||||
|     <sv label="承运司机"> {{ i?.driverName }}/{{ i?.driverPhone }}/{{ i?.carNo }} </sv> | ||||
|     <sv label="用车需求">{{ i?.carModel }}{{ i?.carLength ? '/' + i?.carLength : '' }}</sv> | ||||
|     <sv label="承运司机"> {{ i?.driverName }}{{ i?.driverPhone ? '/' + i?.driverPhone : '' }}{{ i?.carNo ? '/' + i?.carNo : '' }} </sv> | ||||
|     <sv label="车型车长载重"> {{ i?.driverCarModelLabel }},{{ i?.driverCarLengthLabel }}米,{{ i?.driverCarWeight }}吨 </sv> | ||||
|   </sv-container> | ||||
|   <div class="mt-md"> | ||||
| @ -108,7 +116,7 @@ | ||||
|               <div class="handling-info-icon loading-bg">装</div> | ||||
|               <div class="info"> | ||||
|                 <h4>装货地:{{ item?.province }}{{ item.city }}{{ item.area }}{{ item.detailedAddress }}</h4> | ||||
|                 <p>联系人:{{ item.appUserName }}/{{ item.contractTelephone }}</p> | ||||
|                 <p>联系人:{{ item.appUserName }}{{ item.contractTelephone ? '/' + item.contractTelephone : '' }}</p> | ||||
|               </div> | ||||
|             </div> | ||||
|           </div> | ||||
| @ -122,7 +130,7 @@ | ||||
|               <div class="handling-info-icon unloaing-bg">卸</div> | ||||
|               <div class="info"> | ||||
|                 <h4>卸货地:{{ item?.province }}{{ item.city }}{{ item.area }}{{ item.detailedAddress }}</h4> | ||||
|                 <p>联系人:{{ item.appUserName }}/{{ item.contractTelephone }}</p> | ||||
|                 <p>联系人:{{ item.appUserName }}{{ item.contractTelephone ? '/' + item.contractTelephone : '' }}</p> | ||||
|               </div> | ||||
|             </div> | ||||
|           </div> | ||||
| @ -135,25 +143,24 @@ | ||||
| <nz-card nzTitle="服务信息"> | ||||
|   <sv-container> | ||||
|     <sv label="服务包"> | ||||
|       {{i?.goodsResource?.insuranceTypeLabel}} | ||||
|       {{ i?.goodsResource?.insuranceTypeLabel }} | ||||
|     </sv> | ||||
|     <sv label="货物价值"> | ||||
|       {{i?.goodsResource?.goodsValue !==null?(i?.goodsResource?.goodsValue|currency)+'元':'-'}} | ||||
|       {{ i?.goodsResource?.goodsValue !== null ? (i?.goodsResource?.goodsValue | currency) + '元' : '-' }} | ||||
|     </sv> | ||||
|     <sv label="服务包费用"> | ||||
|       {{i?.goodsResource?.insurancePremium!==null?(i?.goodsResource?.insurancePremium |currency)+'元':'-'}} | ||||
|       {{ i?.goodsResource?.insurancePremium !== null ? (i?.goodsResource?.insurancePremium | currency) + '元' : '-' }} | ||||
|     </sv> | ||||
|   </sv-container> | ||||
| </nz-card> | ||||
|  | ||||
|  | ||||
| <nz-card nzTitle="运费信息" #distannce3> | ||||
|   <st #st [data]="billExpenses" [columns]="logColumns" [ps]="0" [page]="{ show: false, showSize: false }"> | ||||
|     <ng-template st-row="price" let-item let-index="index"> | ||||
|       {{ item.price | currency }} | ||||
|     </ng-template> | ||||
|     <ng-template st-row="prices" let-item let-index="index"> | ||||
|       {{ item.price + item.surcharge  | currency }} | ||||
|       {{ item.price + item.surcharge | currency }} | ||||
|     </ng-template> | ||||
|     <ng-template st-row="surcharge" let-item let-index="index"> | ||||
|       {{ item.surcharge | currency }} | ||||
| @ -161,16 +168,16 @@ | ||||
|   </st> | ||||
|   <div> | ||||
|     总计:<span style="color: #da001b; font-size: 18px">{{ i?.totalAmount | currency }}</span> (运费{{ i?.totalFreight | currency }}, | ||||
|     附加费{{ i?.totalSurcharge | currency }},附加费率{{ (i?.totalRate * 100).toFixed(2)}}% ) | ||||
|     附加费{{ i?.totalSurcharge | currency }},附加费率{{ (i?.totalRate * 100).toFixed(2) }}% ) | ||||
|   </div> | ||||
|   <div>收款人:{{ i?.payeeName }}/{{ i?.payeePhone }}</div> | ||||
|   <div>车队长:{{ i?.payeeName }}{{ i?.payeePhone ? '/' + i?.payeePhone : '' }}</div> | ||||
| </nz-card> | ||||
|  | ||||
| <nz-card nzTitle="附件信息" #distannce4> | ||||
|   <sv-container> | ||||
|     <sv label="协议附件"> | ||||
|       <a *ngIf = "i?.contractContent?.contractContent" (click)="agreement('1')">查看附件</a>      | ||||
|       <a *ngIf = "i?.supplementContent?.contractContent" (click)="agreement('2')">补充协议</a> | ||||
|       <a *ngIf="i?.contractContent?.contractContent" (click)="agreement('1')">查看附件</a>      | ||||
|       <a *ngIf="i?.supplementContent?.contractContent" (click)="agreement('2')">补充协议</a> | ||||
|     </sv> | ||||
|   </sv-container> | ||||
|   <sv-container col="2" class="mt-md"> | ||||
| @ -190,7 +197,9 @@ | ||||
|     <sv label="回单类型" *ngIf="i?.supplementaryInformationVO?.stateReceipt"> | ||||
|       {{ i?.supplementaryInformationVO?.receiptType === '1' ? '电子回单' : '纸质回单' }} | ||||
|     </sv> | ||||
|     <sv label="联系人" *ngIf="i?.supplementaryInformationVO?.stateReceipt">  {{ i?.supplementaryInformationVO?.receiptUserName }} / {{ i?.supplementaryInformationVO?.phon }} </sv> | ||||
|     <sv label="联系人" *ngIf="i?.supplementaryInformationVO?.stateReceipt"> | ||||
|       {{ i?.supplementaryInformationVO?.receiptUserName }} / {{ i?.supplementaryInformationVO?.phon }} | ||||
|     </sv> | ||||
|     <sv label="所在地区" *ngIf="i?.supplementaryInformationVO?.stateReceipt"> | ||||
|       {{ i?.supplementaryInformationVO?.area }} | ||||
|     </sv> | ||||
| @ -213,12 +222,20 @@ | ||||
|     <nz-card nzTitle="轨迹信息" style="width: 100%" [nzExtra]="extraTemplate" #distannce5> | ||||
|       <div nz-row> | ||||
|         <div nz-col [nzSpan]="12"> | ||||
|           <st [scroll]="{y: '500px'}" style="min-height: 600px;" #st [data]="addressItems" [columns]="logColumns2" [ps]="0" [page]="{ show: false, showSize: false }"> | ||||
|           <st | ||||
|             [scroll]="{ y: '500px' }" | ||||
|             style="min-height: 600px" | ||||
|             #st | ||||
|             [data]="addressItems" | ||||
|             [columns]="logColumns2" | ||||
|             [ps]="0" | ||||
|             [page]="{ show: false, showSize: false }" | ||||
|           > | ||||
|           </st> | ||||
|         </div> | ||||
|         <div nz-col [nzSpan]="12"> | ||||
|           <amap-path-simplifier [mapWidth]="'100%'" [mapHeight]="'600px'" [mapList]="mapList" [pois]="pois"></amap-path-simplifier> | ||||
|         </div>  | ||||
|         </div> | ||||
|       </div> | ||||
|     </nz-card> | ||||
|     <ng-template #extraTemplate> | ||||
| @ -230,36 +247,39 @@ | ||||
|   </div> | ||||
| </nz-card> | ||||
| <nz-card *ngIf="!route?.snapshot?.queryParams?.sts && abnormalList.length > 0"> | ||||
|   <nz-tabset > | ||||
|   <nz-tabset> | ||||
|     <nz-tab nzTitle="风险异常检测"> | ||||
|       <button nz-button nzType="primary"[disabled]="">申 诉</button> | ||||
|       <div> | ||||
|         您的订单可能存在交易风险,请及时提交申诉材料,提交成功后,平台将及时完成审核并通知您! | ||||
|       </div> | ||||
|       <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>系统识别:{{ 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> | ||||
|       <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> | ||||
|       <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> | ||||
|     <div *ngIf="!modalcontent">暂无附件信息</div> | ||||
|     <div [innerHTML]="modalcontent"></div> | ||||
|   </ng-container> | ||||
|   <ng-template #nzModalFooter> | ||||
|     <button nz-button nzType="primary" (click)="handleOK()" [disabled]="">取消</button> | ||||
|     <button nz-button nzType="default" (click)="handleCancel()">确定  </button> | ||||
|     <button nz-button nzType="default" (click)="handleCancel()">确定 </button> | ||||
|   </ng-template> | ||||
| </nz-modal> | ||||
|  | ||||
| @ -4,7 +4,7 @@ | ||||
|  * @Author       : Shiming | ||||
|  * @Date         : 2022-01-12 10:52:50 | ||||
|  * @LastEditors  : Shiming | ||||
|  * @LastEditTime : 2022-03-31 16:05:06 | ||||
|  * @LastEditTime : 2022-04-01 11:03:39 | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\vehicle\\vehicle.component.html | ||||
|  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||
| --> | ||||
| @ -69,7 +69,7 @@ | ||||
|         </div> | ||||
|       </ng-template> | ||||
|       <ng-template st-row="createUserName" let-item let-index="index"> | ||||
|         <div> {{ item?.createUserName }}/{{ item?.createUserPhone }} </div> | ||||
|         <div> {{ item?.createUserName }}{{  item?.createUserPhone ? "/" + item?.createUserPhone : ''  }} </div> | ||||
|       </ng-template> | ||||
|       <!-- <ng-template st-row="mybidDetailInfo" let-item let-index="index"> | ||||
|         <div *ngIf="item.mybidDetailInfo.length > 0"> | ||||
|  | ||||
| @ -765,6 +765,7 @@ export class OrderManagementVehicleComponent extends BasicTableComponent impleme | ||||
|       if (res) { | ||||
|         this.resetSF; | ||||
|         this.st.load(); | ||||
|         this.getGoodsSourceStatistical(); | ||||
|       } | ||||
|     }); | ||||
|   } | ||||
|  | ||||
| @ -4,23 +4,19 @@ | ||||
|  * @Author       : Shiming | ||||
|  * @Date         : 2021-12-15 13:17:42 | ||||
|  * @LastEditors  : Shiming | ||||
|  * @LastEditTime : 2022-02-21 20:25:47 | ||||
|  * @LastEditTime : 2022-04-01 15:48:01 | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\order-management\\modal\\audit\\voucher-view\\voucher-view.component.html | ||||
|  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||
| --> | ||||
| <div class="sfBox" [ngClass]="Status !== 1 ? 'hideBtn' : ''"> | ||||
| <sf #sf mode="edit" [schema]="schema" [ui]="ui" [formData]="formData" button="none"> | ||||
|   <ng-template sf-template="weight" let-me let-ui="ui" let-schema="schema"> | ||||
|     <div style="display: flex"> | ||||
|       <nz-input-number [(ngModel)]="data.weight" [nzMin]="1" [nzMax]="10" [nzStep]="1"></nz-input-number> | ||||
|       <div class="left_btn">吨</div> | ||||
|   <ng-template sf-template="no0" let-me let-ui="ui" let-schema="schema"> | ||||
|     <div style="color: #1890FF" > | ||||
|       <div (click)="openlaod(1)">电子装货单</div> | ||||
|     </div> | ||||
|   </ng-template> | ||||
|   <ng-template sf-template="volume" let-me let-ui="ui" let-schema="schema"> | ||||
|     <div style="display: flex"> | ||||
|       <nz-input-number [(ngModel)]="data.volume" [nzMin]="1" [nzMax]="10" [nzStep]="1"></nz-input-number> | ||||
|       <div class="left_btn">方</div> | ||||
|     </div> | ||||
|   <ng-template sf-template="no6" let-me let-ui="ui" let-schema="schema"> | ||||
|     <div style="color: #1890FF" (click)="openlaod(2)">电子卸货单</div> | ||||
|   </ng-template> | ||||
| </sf> | ||||
| </div> | ||||
|  | ||||
| @ -30,7 +30,9 @@ import { OrderManagementService } from '../../../services/order-management.servi | ||||
| export class orderManagementVoucherViewComponent implements OnInit { | ||||
|   record: any = {}; | ||||
|   i: any; | ||||
|   loadPDF: string = ''; | ||||
|   formData: any; | ||||
|   datas: any; | ||||
|   Status: any; | ||||
|   data: any ={ | ||||
|     weight: 0, | ||||
| @ -52,6 +54,7 @@ export class orderManagementVoucherViewComponent implements OnInit { | ||||
|     if(this.Status == 1) { | ||||
|  | ||||
|     this.schema = { | ||||
|      | ||||
|       properties: { | ||||
|         loadingLadingBillFilePath: { | ||||
|           type: 'string', | ||||
| @ -217,9 +220,15 @@ export class orderManagementVoucherViewComponent implements OnInit { | ||||
|       required: ['loadingLadingBillFilePath', 'loadingPeopleVehiclesGoodsFilePath','unloadingLadingBillFilePath','unloadingPeopleVehiclesGoodsFilePath' ] | ||||
|     }; | ||||
|   }else { | ||||
|     console.log('只读') | ||||
|     this.schema = { | ||||
|       properties: { | ||||
|         no0: { | ||||
|           type: 'string', | ||||
|           title: '', | ||||
|           ui: { | ||||
|             widget: 'custom', | ||||
|            }, | ||||
|         }, | ||||
|         loadingLadingBillFilePath: { | ||||
|           type: 'string', | ||||
|           title: '装货凭证', | ||||
| @ -298,6 +307,7 @@ export class orderManagementVoucherViewComponent implements OnInit { | ||||
|             listType: 'picture-card', | ||||
|           } as SFUploadWidgetSchema, | ||||
|         }, | ||||
|  | ||||
|         no4: { | ||||
|           type: 'string', | ||||
|           title: '', | ||||
| @ -306,6 +316,13 @@ export class orderManagementVoucherViewComponent implements OnInit { | ||||
|            }, | ||||
|            default: '单张大小不超过5M,支持.jpg、.jpeg和 .png格式', | ||||
|         }, | ||||
|         no6: { | ||||
|           type: 'string', | ||||
|           title: '', | ||||
|           ui: { | ||||
|             widget: 'custom', | ||||
|            }, | ||||
|         }, | ||||
|         unloadingLadingBillFilePath: { | ||||
|           type: 'string', | ||||
|           title: '卸货凭证', | ||||
| @ -421,18 +438,17 @@ export class orderManagementVoucherViewComponent implements OnInit { | ||||
|       }) | ||||
|   } | ||||
|   sure() { | ||||
|     const params = [this.i.id]; | ||||
|    this.service.request(this.service.$api_get_billAuditPass, params).subscribe((res) => { | ||||
|      if(res) { | ||||
|        this.service.msgSrv.success('生成电子单据成功!') | ||||
|         this.modal.destroy(true); | ||||
|      } | ||||
|    }) | ||||
|     const params = [this.i?.id]; | ||||
|    this.service.downloadFile(this.service.$api_createBillTakeGoods,params) | ||||
|    this.service.downloadFile(this.service.$api_createBillDischargeGoods,params) | ||||
|    this.service.msgSrv.success('生成电子单据成功!') | ||||
|    this.modal.destroy(true); | ||||
|   } | ||||
|     //  确认到车界面信息(两个只能看的图片) | ||||
|   initData() { | ||||
|     this.service.request(this.service.$api_get_getCredentials, { id : this.i?.id}).subscribe((res) => { | ||||
|       console.log(res) | ||||
|       this.datas = res | ||||
|     if (res.unloadingLadingBillFilePath) { | ||||
|     this.formData = { | ||||
|           loadingLadingBillFilePath: [ | ||||
| @ -486,5 +502,22 @@ export class orderManagementVoucherViewComponent implements OnInit { | ||||
|   close(): void { | ||||
|     this.modal.destroy(true); | ||||
|   } | ||||
|  | ||||
|   openlaod(value: any) { | ||||
|     if(value === 1) { | ||||
|       const a = document.createElement('a'); | ||||
|       a.href = this.datas?.loadingElectronicsLadingBillFilePath; | ||||
|       document.body.appendChild(a); | ||||
|       console.log(document.body.contains(a)) | ||||
|       a.click(); //点击下载 | ||||
|       document.body.removeChild(a); //下载完成移除元素 | ||||
|     } else { | ||||
|       const a = document.createElement('a'); | ||||
|       a.href = this.datas?.unloadingElectronicsLadingBillFilePath; | ||||
|       document.body.appendChild(a); | ||||
|       console.log(document.body.contains(a)) | ||||
|       a.click(); //点击下载 | ||||
|       document.body.removeChild(a); //下载完成移除元素 | ||||
|     } | ||||
|     | ||||
|   } | ||||
| } | ||||
|  | ||||
| @ -4,7 +4,7 @@ | ||||
|  * @Author       : Shiming | ||||
|  * @Date         : 2021-12-15 13:17:42 | ||||
|  * @LastEditors  : Shiming | ||||
|  * @LastEditTime : 2022-03-31 14:20:41 | ||||
|  * @LastEditTime : 2022-04-01 10:39:59 | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\order-management\\modal\\vehicle\\confir-receipt\\confir-receipt.component.html | ||||
|  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||
| --> | ||||
| @ -28,7 +28,7 @@ | ||||
|         {{item.BACK | currency}} | ||||
|       </ng-template> | ||||
|       <ng-template st-row="traiPrice" let-item let-index="index"> | ||||
|         {{item.surcharge + item.traiPrice | currency}} | ||||
|         {{ item.traiPrice | currency}} | ||||
|       </ng-template> | ||||
|       <ng-template st-row="surcharge" let-item let-index="index"> | ||||
|         {{item.surcharge | currency}} | ||||
|  | ||||
| @ -4,7 +4,7 @@ | ||||
|  * @Author       : Shiming | ||||
|  * @Date         : 2021-12-03 15:31:52 | ||||
|  * @LastEditors  : Shiming | ||||
|  * @LastEditTime : 2022-03-30 16:08:50 | ||||
|  * @LastEditTime : 2022-04-02 13:10:13 | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\order-management\\services\\order-management.service.ts | ||||
|  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||
|  */ | ||||
| @ -191,6 +191,8 @@ export class OrderManagementService extends ShipperBaseService { | ||||
|   $api_get_asyncExportBulkList = `/api/sdc/billOperate/asyncExportBulkList`; | ||||
|   //  异步导出运营后台整车订单列表 | ||||
|   $api_get_asyncExportWholeList = `/api/sdc/billOperate/asyncExportWholeList`; | ||||
|   //  异步导出风险单导出 | ||||
|   $api_get_asyncExportRiskBillList = `/api/sdc/billRiskOperate/asyncExportRiskBillList`; | ||||
|   /** | ||||
|    * 根据企业ID,获取企业历史网络货运人 | ||||
|    * @returns | ||||
|  | ||||
| @ -1,8 +1,9 @@ | ||||
| import { Component, ViewChild } from '@angular/core'; | ||||
| import { Router } from '@angular/router'; | ||||
| import { STComponent, STColumn, STRequestOptions, STChange } from '@delon/abc/st'; | ||||
| import { SFComponent, SFSchema, SFDateWidgetSchema } from '@delon/form'; | ||||
| import { SFComponent, SFSchema, SFDateWidgetSchema, SFAutoCompleteWidgetSchema, SFSelectWidgetSchema } from '@delon/form'; | ||||
| import { NzModalService } from 'ng-zorro-antd/modal'; | ||||
| import { of } from 'rxjs'; | ||||
| import { AddCollectionInvoiceModalComponent } from 'src/app/routes/ticket-management/components/input-invoice/add-collection-invoice-modal/add-collection-invoice-modal.component'; | ||||
|  | ||||
| import { PartnerListService } from '../../services/partner-list.service'; | ||||
| @ -24,7 +25,7 @@ export class PartnerListComponent { | ||||
|  | ||||
|   @ViewChild('editTemplate', { static: true }) | ||||
|   editTemplate: any; | ||||
|   templateId: any; | ||||
|   templateId: any;    | ||||
|   templates: any[] = []; | ||||
|  | ||||
|   @ViewChild('editCannel', { static: true }) | ||||
| @ -241,11 +242,22 @@ export class PartnerListComponent { | ||||
|           type: 'string', | ||||
|           title: '渠道销售', | ||||
|           ui: { | ||||
|             placeholder: '请输入姓名或者手机号', | ||||
|             widget: 'select', | ||||
|             searchDebounceTime: 300, | ||||
|             searchLoadingText: '搜索中...', | ||||
|             allowClear: true, | ||||
|             visibleIf: { | ||||
|               expand: (value: boolean) => value | ||||
|             }, | ||||
|             onSearch: (q: any) => { | ||||
|               let str = q.replace(/^\s+|\s+$/g, ''); | ||||
|               if (str) { | ||||
|                 return this.service.getChannel({ name: str }).toPromise(); | ||||
|               } else { | ||||
|                 return of([]); | ||||
|               } | ||||
|             } | ||||
|           } | ||||
|           } as SFSelectWidgetSchema | ||||
|         }, | ||||
|         partnerType: { | ||||
|           type: 'string', | ||||
| @ -367,13 +379,12 @@ export class PartnerListComponent { | ||||
|     return [ | ||||
|       { | ||||
|         title: '合伙人名称', | ||||
|         index: 'enterpriseName', | ||||
|         width: 180, | ||||
|         format: item => (item.partnerType ? `${item.enterpriseName || item.contactName}` : '') | ||||
|         index: 'contactName', | ||||
|         width: 180 | ||||
|       }, | ||||
|       { title: '付款编码', index: 'payCode', width: 160 }, | ||||
|       { title: '邀请码', index: 'invitationCode', className: 'text-center', width: 130 }, | ||||
|       { title: '企业管理员', index: 'contactName', width: 150, format: item => (item.partnerType ? `${item.contactName}` : '') }, | ||||
|       { title: '企业管理员', index: 'adminName', width: 150 }, | ||||
|       { title: '手机号', index: 'contactMobile', className: 'text-center', width: 150 }, | ||||
|       { title: '类型', index: 'partnerType', className: 'text-center', width: 130, type: 'enum', enum: { 1: '企业', 2: '个人' } }, | ||||
|       { title: '注册渠道', index: 'source', type: 'enum', enum: { 1: '合伙人注册', 2: '平台添加' }, width: 130 }, | ||||
|  | ||||
| @ -4,7 +4,7 @@ | ||||
|  * @Author       : Shiming | ||||
|  * @Date         : 2022-01-12 10:52:50 | ||||
|  * @LastEditors  : Shiming | ||||
|  * @LastEditTime : 2022-03-25 16:51:13 | ||||
|  * @LastEditTime : 2022-04-01 11:09:23 | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\supply-management\\components\\bulk\\bulk.component.html | ||||
|  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||
| --> | ||||
| @ -76,7 +76,7 @@ | ||||
|       [loading]="false" | ||||
|     > | ||||
|     <ng-template st-row="createUserName" let-item let-index="index"> | ||||
|       <div> {{ item?.createUserName }}/{{ item?.createUserPhone }} </div> | ||||
|       <div> {{ item?.createUserName }}{{   item?.createUserPhone ? '/' + item?.createUserPhone : ''}} </div> | ||||
|     </ng-template> | ||||
|       <!--运费单价  --> | ||||
|       <ng-template st-row="freightPrice" let-item let-index="index"> | ||||
|  | ||||
| @ -190,7 +190,7 @@ | ||||
|           </span> | ||||
|           <span>(运费{{ i?.totalFreight | currency }}含附加运费 {{ i?.totalSurcharge | currency }})</span> | ||||
|         </h3> | ||||
|         <div>收款人:{{ i?.payeeName }}/{{ i?.payeePhone }}/{{ i?.payeeCardNo }}</div> | ||||
|         <div>车队长:{{ i?.payeeName }}/{{ i?.payeePhone }}/{{ i?.payeeCardNo }}</div> | ||||
|       </div> | ||||
|     </div> | ||||
|   </nz-card> | ||||
|  | ||||
| @ -34,7 +34,7 @@ | ||||
|                 已选择 | ||||
|                 <strong class="text-red">{{ selectedRows.length }}</strong> 张发票   发票金额总计 | ||||
|                 <strong class="text-red">{{totalCallNo }}</strong> | ||||
|                 <a *ngIf="totalCallNo > 0" (click)="st.clearCheck()" class="ml-lg">清空</a> | ||||
|                 <a *ngIf="totalCallNo > 0" (click)="st.clearCheck();totalCallNo=0" class="ml-lg">清空</a> | ||||
|             </div> | ||||
|             <button nz-button *ngIf="resourceStatus===1 || !resourceStatus" (click)="this.batchPush()">推送开票</button> | ||||
|             <!-- <button nz-button *ngIf="resourceStatus===1 || !resourceStatus" | ||||
| @ -77,7 +77,7 @@ | ||||
|                 {{openInfo?.isdetail?'需要':'不需要'}} | ||||
|             </se> | ||||
|             <se [col]="1" label="开票金额" class="mb-sm"> | ||||
|                 {{openInfo?.vatnotax | currency}} | ||||
|                 {{openInfo?.vatmoney | currency}} | ||||
|             </se> | ||||
|             <se [col]="1" label="开票日期" required> | ||||
|                 <nz-date-picker [(ngModel)]="openInfo.invoicedate" nzPlaceHolder="请选择" style=" width: 100%;"> | ||||
|  | ||||
| @ -402,11 +402,11 @@ export class CancellationInvoiceComponent implements OnInit { | ||||
|             iif: item => item.sts != '3', | ||||
|             click: item => this.requestedAction(item) | ||||
|           }, | ||||
|           { | ||||
|             text: '推送开票<br>', | ||||
|             iif: item => item.sts === '1', | ||||
|             click: item => this.pushInvoiceAction(item) | ||||
|           } | ||||
|           // { | ||||
|           //   text: '推送开票<br>', | ||||
|           //   iif: item => item.sts === '1', | ||||
|           //   click: item => this.pushInvoiceAction(item) | ||||
|           // } | ||||
|           // { | ||||
|           //   text: '作废发票', | ||||
|           //   iif: item => item.sts === '3', | ||||
|  | ||||
| @ -123,7 +123,7 @@ export class InputInvoiceComponent implements OnInit { | ||||
|           title: '发票类型', | ||||
|           ui: { | ||||
|             widget: 'dict-select', | ||||
|             params: { dictKey: 'DictConstants.INVOICE_TYPE' }, | ||||
|             params: { dictKey: 'invoice:type' }, | ||||
|             placeholder: '请选择', | ||||
|             visibleIf: { | ||||
|               expand: (value: boolean) => value | ||||
|  | ||||
| @ -30,6 +30,9 @@ | ||||
|       <se label="税额"> | ||||
|         {{ headerInfo?.vattax | currency }} | ||||
|       </se> | ||||
|       <se label="票面备注"> | ||||
|         {{ headerInfo?.remarks }} | ||||
|       </se> | ||||
|     </div> | ||||
|     <div nz-col [nzXl]="8" [nzLg]="8" [nzSm]="8" [nzXs]="8" se-container [labelWidth]="100" col="1"> | ||||
|       <se label="购买方"> | ||||
| @ -50,27 +53,24 @@ | ||||
|       <se label="银行账户"> | ||||
|         {{ headerInfo?.artoacc }} | ||||
|       </se> | ||||
|       <se label="票面备注"> | ||||
|         {{ headerInfo?.remarks }} | ||||
|       <se label="其他要求"> | ||||
|         {{headerInfo?.otherremarks || '-'}} | ||||
|       </se> | ||||
|       <!-- <se label="其他要求"> | ||||
|                 {{headerInfo?.otherremarks}} | ||||
|             </se> --> | ||||
|     </div> | ||||
|     <div *ngIf="isCanEdit" nz-col [nzXl]="8" [nzLg]="8" [nzSm]="8" [nzXs]="8" class="text-right"> | ||||
|     <div *ngIf="isCanEdit && selectedIndex===2" nz-col [nzXl]="8" [nzLg]="8" [nzSm]="8" [nzXs]="8" class="text-right"> | ||||
|       <ng-container *ngIf="isEdit; else elseTemplate"> | ||||
|         <button nz-button (click)="isEdit = false; invoiceST?.load(1)">取消</button> | ||||
|         <button nz-button nzType="primary" (click)="saveInvoices()">保 存</button> | ||||
|       </ng-container> | ||||
|       <ng-template #elseTemplate> | ||||
|         <!-- <button nz-button nzType="primary" (click)="isEdit = true">修改</button> --> | ||||
|         <button nz-button nzType="primary" (click)="isEdit = true">修改</button> | ||||
|       </ng-template> | ||||
|     </div> | ||||
|   </div> | ||||
| </nz-card> | ||||
|  | ||||
| <nz-card class="search-box" nzBordered> | ||||
|   <nz-tabset> | ||||
|   <nz-tabset [(nzSelectedIndex)]="selectedIndex"> | ||||
|     <nz-tab nzTitle="订单明细"> | ||||
|       <div nz-row nzGutter="8" class="mb-md"> | ||||
|         <div nz-col [nzXl]="18" [nzLg]="24" [nzSm]="24" [nzXs]="24"> | ||||
| @ -85,8 +85,8 @@ | ||||
|         </div> | ||||
|       </div> | ||||
|  | ||||
|       <st #orderST [scroll]="{ x: '1200px' }" [data]="service.$api_get_invoice_order_detail" [columns]="orderColumns" [page]="{}" | ||||
|         size="small" bordered="true" [req]="{ process: beforeReq }" [loading]="false" | ||||
|       <st #orderST [scroll]="{ x: '1200px' }" [data]="service.$api_get_invoice_order_detail" [columns]="orderColumns" | ||||
|         [page]="{}" size="small" bordered="true" [req]="{ process: beforeReq }" [loading]="false" | ||||
|         [scroll]="{ x: '1200px', y: '250px' }"></st> | ||||
|     </nz-tab> | ||||
|     <nz-tab nzTitle="费用明细"> | ||||
| @ -103,12 +103,16 @@ | ||||
|         </div> | ||||
|       </div> | ||||
|  | ||||
|       <st #costST [data]="service.$api_get_invoice_cost_detail" [columns]="costColumns" size="small" bordered="true" [page]="{}" | ||||
|         [req]="{  process: beforeReq }" [loading]="false" [scroll]="{ x: '1200px', y: '250px' }"></st> | ||||
|       <st #costST [data]="service.$api_get_invoice_cost_detail" [columns]="costColumns" size="small" bordered="true" | ||||
|         [page]="{}" [req]="{  process: beforeReq }" [loading]="false" [scroll]="{ x: '1200px', y: '250px' }"> | ||||
|         <ng-template st-row="vatmoney" let-item let-index="index"> | ||||
|           {{ item.billLType }}: {{ item.vatmoney |currency }} | ||||
|         </ng-template> | ||||
|       </st> | ||||
|     </nz-tab> | ||||
|     <nz-tab nzTitle="发票明细"> | ||||
|       <st #invoiceST [data]="service.$api_get_invoice_details" [columns]="invoiceColumns" size="small" bordered="true" [page]="{}" | ||||
|         [req]="{ process: beforeReq }" [loading]="false" [scroll]="{ x: '1200px', y: '250px' }"> | ||||
|       <st #invoiceST [data]="service.$api_get_invoice_details" [columns]="invoiceColumns" size="small" bordered="true" | ||||
|         [page]="{}" [req]="{ process: beforeReq }" [loading]="false" [scroll]="{ x: '1200px', y: '250px' }"> | ||||
|         <ng-template st-row="vatname" let-item let-index="index"> | ||||
|           <nz-select *ngIf="isEdit" [ngModel]="item.owner" | ||||
|             (ngModelChange)="invoiceST.setRow(index, { vatname: $event })" style="width: 100%"> | ||||
| @ -126,7 +130,7 @@ | ||||
|           <ng-container *ngIf="!isEdit">{{ item.vatunit }}</ng-container> | ||||
|         </ng-template> | ||||
|         <ng-template st-row="vatqty" let-item let-index="index"> | ||||
|           <input *ngIf="isEdit" nz-input [ngModel]="item.vatqty" | ||||
|           <input *ngIf="isEdit" nz-input [ngModel]="item.vatqty" type="number" | ||||
|             (ngModelChange)="invoiceST.setRow(index, { vatqty: $event })" /> | ||||
|           <ng-container *ngIf="!isEdit">{{ item.vatqty }}</ng-container> | ||||
|         </ng-template> | ||||
|  | ||||
| @ -40,8 +40,10 @@ export class InvoiceDetailComponent implements OnInit { | ||||
|   id: any = null; | ||||
|   ltdId: any = null; | ||||
|   type: any = 1; | ||||
|  | ||||
|   selectedIndex = 0; | ||||
|   constructor(public service: TicketService, private route: ActivatedRoute) { | ||||
|     this.isCanEdit = !!route.snapshot.queryParams.type; | ||||
|     this.isCanEdit = route.snapshot.queryParams.type === '1'; | ||||
|     const expressno = route.snapshot.queryParams.expressno; | ||||
|     this.type = route.snapshot.queryParams.type; | ||||
|     this.id = route.snapshot.params.id; | ||||
| @ -226,10 +228,7 @@ export class InvoiceDetailComponent implements OnInit { | ||||
|       { title: '税率', index: 'vatrate', format: item => `${item.vatrate ? ((item.vatrate as number) * 100).toFixed(2) : 0}%` }, | ||||
|       { | ||||
|         title: '申请金额', | ||||
|         index: 'vatmoney', | ||||
|         type: 'widget', | ||||
|         className: 'text-right', | ||||
|         widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.vatmoney }) } | ||||
|         render: 'vatmoney' | ||||
|       }, | ||||
|       { | ||||
|         title: '开票金额', | ||||
|  | ||||
| @ -102,7 +102,7 @@ | ||||
|             <strong class="text-red">{{ selectedRows.length }}</strong> 条数据   开票金额总计 <strong | ||||
|                 class="text-red">{{ | ||||
|                 totalCallNo |currency }}</strong> | ||||
|             <a *ngIf="selectedRows.length > 0" (click)="st.clearCheck()" class="ml-lg">清空</a> | ||||
|             <a *ngIf="selectedRows.length > 0" (click)="st.clearCheck();totalCallNo='0'" class="ml-lg">清空</a> | ||||
|         </div> | ||||
|     </div> | ||||
|  | ||||
|  | ||||
| @ -45,7 +45,7 @@ | ||||
|         已选择 | ||||
|         <strong class="text-red">{{ selectedRows.length }}</strong> 条数据   开票金额总计 | ||||
|         <strong class="text-red">{{ totalCallNo }}</strong> | ||||
|         <a *ngIf="totalCallNo > 0" (click)="st.clearCheck()" class="ml-lg">清空</a> | ||||
|         <a *ngIf="totalCallNo > 0" (click)="st.clearCheck();totalCallNo=0" class="ml-lg">清空</a> | ||||
|       </div> | ||||
|       <button nz-button *ngIf="resourceStatus==='1' || !resourceStatus" (click)="this.batchRequested()">批量受理</button> | ||||
|       <button nz-button *ngIf="resourceStatus==='1' || !resourceStatus" | ||||
|  | ||||
| @ -406,6 +406,7 @@ export class InvoiceRequestedComponent { | ||||
|     return [ | ||||
|       { title: '', index: 'key', type: 'checkbox' }, | ||||
|       { title: '申请编号', render: 'vatappcode', width: 190 }, | ||||
|       { title: '发票类型', index: 'vatapptypeLable', width: 140 }, | ||||
|       { title: '网络货运人', index: 'ltdName', width: 170 }, | ||||
|       { title: '货主名称', index: 'artoName', width: 170 }, | ||||
|       { title: '订单数', index: 'ordlines', width: 90 }, | ||||
| @ -444,6 +445,7 @@ export class InvoiceRequestedComponent { | ||||
|           params: ({ record }) => ({ value: record.invoicedMoney }) | ||||
|         } | ||||
|       }, | ||||
|       { title: '已开票张数', index: 'invoicedNum', width: 160 }, | ||||
|       { title: '开户行', index: 'bankName', width: 160 }, | ||||
|       { title: '银行账户', index: 'bankAccount', width: 140 }, | ||||
|       { title: '注册地址', index: 'registerAddr', width: 140 }, | ||||
| @ -463,7 +465,7 @@ export class InvoiceRequestedComponent { | ||||
|       { | ||||
|         title: '快递是否下单成功', | ||||
|         index: 'expressHSts', | ||||
|         width: 150, | ||||
|         width: 170, | ||||
|         className: 'text-center', | ||||
|         type: 'enum', | ||||
|         enum: { true: '是', false: '否' } | ||||
|  | ||||
| @ -75,7 +75,7 @@ export class TicketService extends ShipperBaseService { | ||||
|   // 获取分票发票明细 | ||||
|   $api_get_invoice_details = '/api/fcc/ficoVatinvL/getDetailByVatinvHId'; | ||||
|   // 运营端订单明细开票处理 | ||||
|   $api_get_applyFicoVatinv = '/api/fcc/ficoVatinvH/applyFicoVatinv'; | ||||
|   $api_get_applyFicoVatinv = '/api/fcc/ficoVatinvH/applyBatchFicoVatinv'; | ||||
|   // 开票申请列表批量开票 | ||||
|   $api_get_applyBatchFicoVatinv = '/api/fcc/ficoVatinvH/applyBatchFicoVatinv'; | ||||
|   // 删除销项发票抬头 | ||||
|  | ||||
| @ -49,6 +49,22 @@ export class FreightComponentsListComponent implements OnInit { | ||||
|       Object.assign(requestOptions.body, { | ||||
|         ...this.sf.value | ||||
|       }); | ||||
|       if (this.sf.value.createTime) { | ||||
|         Object.assign(requestOptions.body, { | ||||
|           createTime: { | ||||
|             start: this.sf.value.createTime[0], | ||||
|             end: this.sf.value.createTime[1] | ||||
|           } | ||||
|         }); | ||||
|       } | ||||
|       if (this.sf.value.approvalTime) { | ||||
|         Object.assign(requestOptions.body, { | ||||
|           approvalTime: { | ||||
|             start: this.sf.value.approvalTime[0], | ||||
|             end: this.sf.value.approvalTime[1] | ||||
|           } | ||||
|         }); | ||||
|       } | ||||
|     } | ||||
|     this.loadingList = true; | ||||
|     return requestOptions; | ||||
| @ -215,9 +231,11 @@ export class FreightComponentsListComponent implements OnInit { | ||||
|         customerType: { | ||||
|           type: 'string', | ||||
|           title: '客户类型', | ||||
|           enum: [{ label: '全部', value: '' }, | ||||
|           { label: '直客', value: 1 }, | ||||
|           { label: '渠道客户', value: 20 }], | ||||
|           enum: [ | ||||
|             { label: '全部', value: '' }, | ||||
|             { label: '直客', value: 1 }, | ||||
|             { label: '渠道客户', value: 20 } | ||||
|           ], | ||||
|           default: '', | ||||
|           ui: { | ||||
|             widget: 'select', | ||||
| @ -363,7 +381,7 @@ export class FreightComponentsListComponent implements OnInit { | ||||
|   initST() { | ||||
|     this.columns = [ | ||||
|       // { title: '', type: 'checkbox', className: 'text-center' }, | ||||
|       { title: '企业名称',  render: 'enterpriseName', width: 350 }, | ||||
|       { title: '企业名称', render: 'enterpriseName', width: 350 }, | ||||
|       { title: '统一社会信用代码', className: 'text-center', render: 'unifiedSocialCreditCode', width: 200 }, | ||||
|       { | ||||
|         title: '公司所在地', | ||||
|  | ||||
| @ -154,7 +154,7 @@ | ||||
|       totalObj?.price - attObj?.price | currency | ||||
|     }},附加运费{{ attObj?.price | currency}},附加费率{{ (attObj?.price / totalObj?.price) * 100 | number: '0.2-2' }}%) | ||||
|   </div> | ||||
|   <div>收款人:{{ i?.payee?.name }}/{{ i?.payee?.phone }}/{{ i?.payee?.idNo }}</div> | ||||
|   <div>车队长:{{ i?.payee?.name }}/{{ i?.payee?.phone }}/{{ i?.payee?.idNo }}</div> | ||||
| </nz-card> --> | ||||
| <nz-card  [nzTitle]="'运费信息' +'(到货后'+i?.paymentDays+'天内支付运费)'"  #distannce3> | ||||
|   <h2>{{i?.goodsInfos?.[0]?.freightPrice}}{{i?.goodsInfos?.[0]?.freightTypeLabel}}({{ i?.goodsInfos?.[0]?.settlementBasisLabel ? i?.goodsInfos?.[0]?.settlementBasisLabel + ',' :' ' }}{{i?.goodsInfos?.[0]?.ruleLabel}})</h2> | ||||
| @ -176,7 +176,7 @@ | ||||
|       附加费{{ i?.totalSurcharge | currency }},附加费率{{ (i?.totalRate * 100).toFixed(2)}}%) | ||||
|     </div> | ||||
|   </div> | ||||
|   <div>收款人:{{ i?.payee?.name }}/{{ i?.payee?.phone }}/{{ i?.payee?.idNo }}</div> | ||||
|   <div>车队长:{{ i?.payee?.name }}/{{ i?.payee?.phone }}/{{ i?.payee?.idNo }}</div> | ||||
| </nz-card> | ||||
|  | ||||
| <nz-card nzTitle="附件信息" #distannce4> | ||||
|  | ||||
| @ -302,7 +302,7 @@ export class WaybillManagementBulkComponent implements OnInit { | ||||
|         render: 'driverName' | ||||
|       }, | ||||
|       { | ||||
|         title: '收款人', | ||||
|         title: '车队长', | ||||
|         className: 'text-left', | ||||
|         width: '200px', | ||||
|         render: 'payeeName', | ||||
|  | ||||
| @ -1,7 +1,7 @@ | ||||
| <!-- | ||||
|  * @Author: your name | ||||
|  * @Date: 2021-12-03 15:31:52 | ||||
|  * @LastEditTime : 2022-03-30 17:16:40 | ||||
|  * @LastEditTime : 2022-04-01 11:12:17 | ||||
|  * @LastEditors  : Shiming | ||||
|  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\waybill-management\\components\\vehicle-detail\\vehicle-detail.component.html | ||||
| @ -29,7 +29,7 @@ | ||||
|         <sv label="货主">{{ i?.shippername }} </sv> | ||||
|         <sv label="所属项目">{{i?.enterpriseProjectName}}</sv> | ||||
|         <sv label="服务类型">{{i?.serviceTypeLabel}}</sv> | ||||
|         <sv label="调度员">{{i?.dispatchName}} /{{i?.dispatchPhone}}</sv> | ||||
|         <sv label="调度员">{{i?.dispatchName}}{{ i?.dispatchPhone ? '/' + i?.dispatchPhone : '' }}</sv> | ||||
|         <sv label="货源编号">{{ i?.resourceCode }} </sv> | ||||
|         <sv label="承诺付款天数">{{ i?.paymentDays }}</sv> | ||||
|      </div> | ||||
| @ -78,10 +78,10 @@ | ||||
|       {{i?.goodsInfos?.[0]?.carModelLabel}}{{ i?.goodsInfos?.[0]?.carLength ? '/' + i?.goodsInfos?.[0]?.carLength + '米': ''}} | ||||
|     </sv> | ||||
|     <sv label="承运司机"> | ||||
|       {{i?.driverVo?.name}}/{{i?.driverVo?.phone}} | ||||
|       {{i?.driverVo?.name}}{{ i?.driverVo?.phone ? '/' + i?.driverVo?.phone : ''}} | ||||
|     </sv> | ||||
|     <sv label="车型车长载重"> | ||||
|       {{i?.carVO?.carModelLabel}},{{i?.carVO?.carLengthLabel}}米,{{i?.carVO?.carLoad ? i?.carVO?.carLoad +'吨': ''}} | ||||
|       {{ i?.carVO?.carModelLabel ? i?.carVO?.carModelLabel +',': ''}}{{ i?.carVO?.carLengthLabel ? i?.carVO?.carLengthLabel +'米,': ''}}{{i?.carVO?.carLoad ? i?.carVO?.carLoad +'吨': ''}} | ||||
|     </sv> | ||||
|     <sv label="计划装货时间"> | ||||
|       {{i?.loadingTime}} | ||||
| @ -157,7 +157,7 @@ | ||||
|     总计:<span style="color: #da001b; font-size: 18px">{{ i?.totalAmount | currency }}</span> (运费{{ i?.totalFreight | currency }}, | ||||
|     附加费{{ i?.totalSurcharge | currency }},附加费率{{ (i?.totalRate * 100).toFixed(2)}}% ) | ||||
|   </div> | ||||
|   <div>收款人:{{ i?.payee?.name }}/{{ i?.payee?.phone }}/{{ i?.payee?.idNo }}</div> | ||||
|   <div>车队长:{{ i?.payee?.name }}/{{ i?.payee?.phone }}/{{ i?.payee?.idNo }}</div> | ||||
| </nz-card> | ||||
|  | ||||
| <nz-card nzTitle="附件信息" #distannce4> | ||||
|  | ||||
| @ -1,7 +1,7 @@ | ||||
| /* | ||||
|  * @Author: your name | ||||
|  * @Date: 2021-12-03 15:31:52 | ||||
|  * @LastEditTime : 2022-03-23 14:49:13 | ||||
|  * @LastEditTime : 2022-04-01 11:11:14 | ||||
|  * @LastEditors  : Shiming | ||||
|  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\waybill-management\\components\\vehicle-detail\\vehicle-detail.component.ts | ||||
| @ -26,7 +26,7 @@ import { WaybillManagementServe } from '../../services/waybill-management.servic | ||||
| export class WaybillManagementVehicleDetailComponent implements OnInit, OnDestroy { | ||||
|   id = this.route.snapshot.params.id; | ||||
|   MapList: any[] = []; | ||||
|   trajectory = 'car'; | ||||
|   trajectory = 'car';  | ||||
|   mapList: any[] = []; //地图点位数据组 | ||||
|   addressItems: any[] = []; //打点地址数据组 | ||||
|   i: any; | ||||
|  | ||||
| @ -322,7 +322,7 @@ export class WaybillManagementVehicleComponent implements OnInit { | ||||
|         render: 'driverName' | ||||
|       }, | ||||
|       { | ||||
|         title: '收款人', | ||||
|         title: '车队长', | ||||
|         className: 'text-left', | ||||
|         width: '200px', | ||||
|         render: 'payeeName' | ||||
|  | ||||
		Reference in New Issue
	
	Block a user