Merge branch 'develop' of https://gitlab.eascs.com/tms-ui/tms-obc-web into develop
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@ -25,6 +25,7 @@ scripts/var.less
|
|||||||
|
|
||||||
# IDE - VSCode
|
# IDE - VSCode
|
||||||
.vscode/*
|
.vscode/*
|
||||||
|
.vscode
|
||||||
!.vscode/settings.json
|
!.vscode/settings.json
|
||||||
!.vscode/tasks.json
|
!.vscode/tasks.json
|
||||||
!.vscode/launch.json
|
!.vscode/launch.json
|
||||||
|
|||||||
3
.vscode/settings.json
vendored
Normal file
3
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"compile-hero.disable-compile-files-on-did-save-code": true
|
||||||
|
}
|
||||||
@ -4,7 +4,7 @@
|
|||||||
* @Author : Shiming
|
* @Author : Shiming
|
||||||
* @Date : 2022-01-18 09:51:21
|
* @Date : 2022-01-18 09:51:21
|
||||||
* @LastEditors : Shiming
|
* @LastEditors : Shiming
|
||||||
* @LastEditTime : 2022-03-31 14:02:38
|
* @LastEditTime : 2022-04-01 14:41:31
|
||||||
* @FilePath : \\tms-obc-web\\proxy.conf.js
|
* @FilePath : \\tms-obc-web\\proxy.conf.js
|
||||||
* Copyright (C) 2022 huzhenhong. All rights reserved.
|
* Copyright (C) 2022 huzhenhong. All rights reserved.
|
||||||
*/
|
*/
|
||||||
@ -28,4 +28,14 @@ module.exports = {
|
|||||||
changeOrigin: true,
|
changeOrigin: true,
|
||||||
logLevel: 'debug'
|
logLevel: 'debug'
|
||||||
},
|
},
|
||||||
|
'//sascs': {
|
||||||
|
target: {
|
||||||
|
host: 'sascs-tj-tms-test.obs.cn-south-1.myhuaweicloud.com',
|
||||||
|
protocol: 'https:',
|
||||||
|
port: 443
|
||||||
|
},
|
||||||
|
secure: false,
|
||||||
|
changeOrigin: true,
|
||||||
|
logLevel: 'debug'
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
@ -17,7 +17,7 @@ const alainConfig: AlainConfig = {
|
|||||||
page: { show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000], toTop: false },
|
page: { show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000], toTop: false },
|
||||||
modal: { size: 'lg' }
|
modal: { size: 'lg' }
|
||||||
},
|
},
|
||||||
sf: { button: { search: '查询' }, ui: { placeholder: '请输入' } },
|
sf: { button: { search: '查询' } },
|
||||||
pageHeader: { homeI18n: 'home', recursiveBreadcrumb: true },
|
pageHeader: { homeI18n: 'home', recursiveBreadcrumb: true },
|
||||||
auth: { login_url: '/passport/login' },
|
auth: { login_url: '/passport/login' },
|
||||||
acl: { guard_url: '/exception/403' },
|
acl: { guard_url: '/exception/403' },
|
||||||
|
|||||||
@ -32,7 +32,7 @@
|
|||||||
<label nz-radio-button nzValue="month">月</label>
|
<label nz-radio-button nzValue="month">月</label>
|
||||||
</nz-radio-group>
|
</nz-radio-group>
|
||||||
<div class="dateBox">
|
<div class="dateBox">
|
||||||
<nz-date-picker [(ngModel)]="dateNext" [nzDisabledDate]="disabledDate" [nzMode]="mode" (ngModelChange)="onChangeNext($event)"></nz-date-picker>
|
<nz-date-picker [(ngModel)]="dateNext" [nzDisabledDate]="disabledDate" [nzMode]="modeNext" (ngModelChange)="onChangeNext($event)"></nz-date-picker>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -43,9 +43,9 @@
|
|||||||
<div class="title">
|
<div class="title">
|
||||||
<div class="box" style="background-color: #3ba1ff;"></div> 环比(%)
|
<div class="box" style="background-color: #3ba1ff;"></div> 环比(%)
|
||||||
</div>
|
</div>
|
||||||
<g2-custom delay="100" (render)="render($event)"></g2-custom>
|
<!-- <g2-custom delay="100" (render)="render($event)"></g2-custom> -->
|
||||||
<!-- <app-busitable-curve></app-busitable-curve> -->
|
<!-- <app-busitable-curve></app-busitable-curve> -->
|
||||||
<!-- <app-busitable-curve #curve [chartData]="chartData.chainRatio"></app-busitable-curve> -->
|
<app-busitable-curve #curve [chartData]="chartData.chainRatio"></app-busitable-curve>
|
||||||
</div>
|
</div>
|
||||||
<div nz-col class="gutter-row" [nzSpan]="12">
|
<div nz-col class="gutter-row" [nzSpan]="12">
|
||||||
<div class="title">
|
<div class="title">
|
||||||
@ -53,7 +53,6 @@
|
|||||||
</div>
|
</div>
|
||||||
<app-busitable-pillar #pillar [chartData]="chartData.performance"></app-busitable-pillar>
|
<app-busitable-pillar #pillar [chartData]="chartData.performance"></app-busitable-pillar>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</nz-card>
|
</nz-card>
|
||||||
@ -4,7 +4,8 @@ import { DatePipe, _HttpClient } from '@delon/theme';
|
|||||||
import { differenceInCalendarDays } from 'date-fns';
|
import { differenceInCalendarDays } from 'date-fns';
|
||||||
import { DataService } from '../../../services/data.service';
|
import { DataService } from '../../../services/data.service';
|
||||||
import { Chart } from '@antv/g2';
|
import { Chart } from '@antv/g2';
|
||||||
import { BusitableCurveComponent } from './curve2/curve.component';
|
import { BusitablePillarComponent } from './pillar/pillar.component';
|
||||||
|
import { BusitableCurveComponent } from './curve/curve.component';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-datatable-busiindex',
|
selector: 'app-datatable-busiindex',
|
||||||
@ -16,6 +17,7 @@ import { BusitableCurveComponent } from './curve2/curve.component';
|
|||||||
export class DatatableBusiindexComponent implements OnInit {
|
export class DatatableBusiindexComponent implements OnInit {
|
||||||
@ViewChild('st') private readonly st!: STComponent;
|
@ViewChild('st') private readonly st!: STComponent;
|
||||||
@ViewChild('curve') private readonly curve!: BusitableCurveComponent;
|
@ViewChild('curve') private readonly curve!: BusitableCurveComponent;
|
||||||
|
@ViewChild('pillar') private readonly pillar!: BusitablePillarComponent;
|
||||||
type = 1;
|
type = 1;
|
||||||
mode = 'year';
|
mode = 'year';
|
||||||
date: any = null;
|
date: any = null;
|
||||||
@ -26,9 +28,8 @@ export class DatatableBusiindexComponent implements OnInit {
|
|||||||
timeNext: any = ['2022-01-01 00:00:00']
|
timeNext: any = ['2022-01-01 00:00:00']
|
||||||
dateFormat = 'yyyy-MM-dd';
|
dateFormat = 'yyyy-MM-dd';
|
||||||
today = new Date();
|
today = new Date();
|
||||||
chainRatio: any = []
|
|
||||||
chartData: any = {}
|
chartData: any = {}
|
||||||
el: any;
|
flag = false;
|
||||||
|
|
||||||
columns: STColumn[] = [
|
columns: STColumn[] = [
|
||||||
{ title: '运营主体', index: 'networkTransporterName', className: 'text-center' },
|
{ title: '运营主体', index: 'networkTransporterName', className: 'text-center' },
|
||||||
@ -80,12 +81,11 @@ export class DatatableBusiindexComponent implements OnInit {
|
|||||||
};
|
};
|
||||||
this.service.request(this.service.$api_performanceReportHistogram, params).subscribe(res => {
|
this.service.request(this.service.$api_performanceReportHistogram, params).subscribe(res => {
|
||||||
if (res) {
|
if (res) {
|
||||||
this.chainRatio = res.chainRatio
|
|
||||||
this.chartData = res
|
this.chartData = res
|
||||||
setTimeout(() => {
|
if(this.flag) {
|
||||||
this.ngZone.runOutsideAngular(() => this.init(this.el));
|
this.pillar.reRender()
|
||||||
}, 1000);
|
this.curve.reRender()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -124,6 +124,8 @@ export class DatatableBusiindexComponent implements OnInit {
|
|||||||
} else if(this.mode === 'month') {
|
} else if(this.mode === 'month') {
|
||||||
this.timeNext = [this.datePipe.transform(this.dateNext, 'yyyy-MM') + '-01 00:00:00']
|
this.timeNext = [this.datePipe.transform(this.dateNext, 'yyyy-MM') + '-01 00:00:00']
|
||||||
}
|
}
|
||||||
|
this.flag = true
|
||||||
|
this.initData()
|
||||||
}
|
}
|
||||||
disabledDate = (current: Date): boolean =>
|
disabledDate = (current: Date): boolean =>
|
||||||
// Can not select days before today and today
|
// Can not select days before today and today
|
||||||
@ -131,38 +133,4 @@ export class DatatableBusiindexComponent implements OnInit {
|
|||||||
exportFun(){
|
exportFun(){
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
render(el: ElementRef<HTMLDivElement>): void {
|
|
||||||
this.el = el.nativeElement
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private init(el: HTMLElement): void {
|
|
||||||
const chart = new Chart({
|
|
||||||
container: el,
|
|
||||||
autoFit: true,
|
|
||||||
height: 500,
|
|
||||||
});
|
|
||||||
|
|
||||||
chart.data(this.chainRatio);
|
|
||||||
chart.scale({
|
|
||||||
year: {
|
|
||||||
range: [0, 1],
|
|
||||||
},
|
|
||||||
value: {
|
|
||||||
min: 0,
|
|
||||||
nice: true,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
chart.tooltip({
|
|
||||||
showCrosshairs: true, // 展示 Tooltip 辅助线
|
|
||||||
shared: true,
|
|
||||||
});
|
|
||||||
|
|
||||||
chart.line().position('time*value').label('value');
|
|
||||||
chart.point().position('time*value');
|
|
||||||
|
|
||||||
chart.render();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
<g2-custom delay="100" (render)="render($event)"></g2-custom>
|
<g2-custom delay="200" (render)="render($event)"></g2-custom>
|
||||||
@ -1,6 +1,4 @@
|
|||||||
import { Component, ElementRef, Input, NgZone, OnChanges, OnInit, SimpleChanges, ViewChild } from '@angular/core';
|
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';
|
|
||||||
import { Chart } from '@antv/g2';
|
import { Chart } from '@antv/g2';
|
||||||
import { DataService } from 'src/app/routes/datatable/services/data.service';
|
import { DataService } from 'src/app/routes/datatable/services/data.service';
|
||||||
@Component({
|
@Component({
|
||||||
@ -9,43 +7,44 @@ import { DataService } from 'src/app/routes/datatable/services/data.service';
|
|||||||
styleUrls: ['./curve.component.less']
|
styleUrls: ['./curve.component.less']
|
||||||
})
|
})
|
||||||
export class BusitableCurveComponent implements OnInit, OnChanges {
|
export class BusitableCurveComponent implements OnInit, OnChanges {
|
||||||
@Input() chartData: any;
|
|
||||||
el: any;
|
el: any;
|
||||||
|
@Input() chartData: any;
|
||||||
|
chart: any;
|
||||||
constructor(private service: DataService, private ngZone: NgZone) {
|
constructor(private service: DataService, private ngZone: NgZone) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
ngOnChanges(changes: SimpleChanges): void {
|
||||||
|
if (this.chartData) {
|
||||||
|
// setTimeout(()=>{
|
||||||
|
// this.chart.render(true)
|
||||||
|
// }, 1000)
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ngOnInit(): void {
|
ngOnInit(): void {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
reRender() {
|
||||||
ngOnChanges(changes: SimpleChanges): void {
|
setTimeout(() => {
|
||||||
if (this.chartData) {
|
this.chart.data(this.chartData);
|
||||||
setTimeout(() => {
|
this.chart.render();
|
||||||
this.ngZone.runOutsideAngular(() => this.init(this.el));
|
}, 500)
|
||||||
}, 2000)
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
handleClick(data: G2MiniAreaClickItem): void {
|
|
||||||
this.service.msgSrv.info(`${data.item.x} - ${data.item.y}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
render(el: ElementRef<HTMLDivElement>): void {
|
render(el: ElementRef<HTMLDivElement>): void {
|
||||||
this.el = el.nativeElement
|
this.el = el.nativeElement
|
||||||
// this.ngZone.runOutsideAngular(() => this.init(this.el));
|
this.ngZone.runOutsideAngular(() => this.init(this.el));
|
||||||
}
|
}
|
||||||
|
|
||||||
private init(el: HTMLElement): void {
|
private init(el: HTMLElement): void {
|
||||||
const chart = new Chart({
|
this.chart = new Chart({
|
||||||
container: el,
|
container: el,
|
||||||
autoFit: true,
|
autoFit: true,
|
||||||
height: 500,
|
height: 500,
|
||||||
});
|
});
|
||||||
|
|
||||||
chart.data(this.chartData);
|
this.chart.data(this.chartData);
|
||||||
chart.scale({
|
this.chart.scale({
|
||||||
year: {
|
year: {
|
||||||
range: [0, 1],
|
range: [0, 1],
|
||||||
},
|
},
|
||||||
@ -55,15 +54,15 @@ export class BusitableCurveComponent implements OnInit, OnChanges {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
chart.tooltip({
|
this.chart.tooltip({
|
||||||
showCrosshairs: true, // 展示 Tooltip 辅助线
|
showCrosshairs: true, // 展示 Tooltip 辅助线
|
||||||
shared: true,
|
shared: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
chart.line().position('time*value').label('value');
|
this.chart.line().position('time*value').label('value');
|
||||||
chart.point().position('time*value');
|
this.chart.point().position('time*value');
|
||||||
|
|
||||||
chart.render();
|
this.chart.render();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -1,92 +0,0 @@
|
|||||||
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';
|
|
||||||
import { Chart } from '@antv/g2';
|
|
||||||
import { DataService } from 'src/app/routes/datatable/services/data.service';
|
|
||||||
@Component({
|
|
||||||
selector: 'app-busitable-curve',
|
|
||||||
templateUrl: './curve.component.html',
|
|
||||||
styleUrls: ['./curve.component.less']
|
|
||||||
})
|
|
||||||
export class BusitableCurveComponent implements OnInit, OnChanges {
|
|
||||||
@Input() chartData: any ;
|
|
||||||
el: any;
|
|
||||||
constructor(private service: DataService, private ngZone: NgZone) {
|
|
||||||
|
|
||||||
}
|
|
||||||
ngOnChanges(changes: SimpleChanges): void {
|
|
||||||
if(this.chartData){
|
|
||||||
setTimeout(()=>{
|
|
||||||
this.ngZone.runOutsideAngular(() => this.init(this.el));
|
|
||||||
}, 3000)
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ngOnInit(): void {
|
|
||||||
this.initData()
|
|
||||||
}
|
|
||||||
initData(){
|
|
||||||
this.service.request(this.service.$api_operationalReportWaybillStatusDistribution).subscribe(res => {
|
|
||||||
if (res) {
|
|
||||||
this.chartData = res
|
|
||||||
this.ngZone.runOutsideAngular(() => this.init(this.el));
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
render(el: ElementRef<HTMLDivElement>): void {
|
|
||||||
this.el = el.nativeElement
|
|
||||||
}
|
|
||||||
private init(el: HTMLElement): void {
|
|
||||||
const ds = new DataSet();
|
|
||||||
const dv = ds.createView().source(this.chartData);
|
|
||||||
dv.transform({
|
|
||||||
type: 'map',
|
|
||||||
callback: row => {
|
|
||||||
row.year = parseInt(row.year, 10);
|
|
||||||
return row;
|
|
||||||
}
|
|
||||||
}).transform({
|
|
||||||
type: 'regression',
|
|
||||||
method: 'polynomial',
|
|
||||||
fields: ['year', 'value'],
|
|
||||||
bandwidth: 0.1,
|
|
||||||
as: ['Year', 'Value']
|
|
||||||
});
|
|
||||||
|
|
||||||
const chart = new Chart({
|
|
||||||
container: el,
|
|
||||||
autoFit: true,
|
|
||||||
height: 500,
|
|
||||||
padding: [20, 40],
|
|
||||||
});
|
|
||||||
|
|
||||||
const view1 = chart.createView();
|
|
||||||
view1.data(this.chartData);
|
|
||||||
view1.scale('price', {
|
|
||||||
nice: true,
|
|
||||||
});
|
|
||||||
view1.tooltip({
|
|
||||||
showMarkers: false,
|
|
||||||
shared: true,
|
|
||||||
});
|
|
||||||
|
|
||||||
view1
|
|
||||||
.interval()
|
|
||||||
.position('month*price')
|
|
||||||
.color('name')
|
|
||||||
.adjust([
|
|
||||||
{
|
|
||||||
type: 'dodge',
|
|
||||||
marginRatio: 0,
|
|
||||||
},
|
|
||||||
]);
|
|
||||||
|
|
||||||
|
|
||||||
// chart.interaction('active-region');
|
|
||||||
chart.render();
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@ -1 +1 @@
|
|||||||
<g2-custom delay="100" (render)="render($event)"></g2-custom>
|
<g2-custom delay="200" (render)="render($event)"></g2-custom>
|
||||||
@ -7,48 +7,50 @@ import { DataService } from 'src/app/routes/datatable/services/data.service';
|
|||||||
styleUrls: ['./pillar.component.less']
|
styleUrls: ['./pillar.component.less']
|
||||||
})
|
})
|
||||||
export class BusitablePillarComponent implements OnInit, OnChanges {
|
export class BusitablePillarComponent implements OnInit, OnChanges {
|
||||||
|
|
||||||
el: any;
|
el: any;
|
||||||
@Input() chartData: any ;
|
@Input() chartData: any;
|
||||||
|
chart: any;
|
||||||
constructor(private service: DataService, private ngZone: NgZone) {
|
constructor(private service: DataService, private ngZone: NgZone) {
|
||||||
|
|
||||||
}
|
}
|
||||||
ngOnChanges(changes: SimpleChanges): void {
|
ngOnChanges(changes: SimpleChanges): void {
|
||||||
if(this.chartData){
|
if (this.chartData) {
|
||||||
setTimeout(()=>{
|
// setTimeout(()=>{
|
||||||
this.ngZone.runOutsideAngular(() => this.init(this.el));
|
// this.chart.render(true)
|
||||||
}, 1000)
|
// }, 1000)
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit(): void {
|
ngOnInit(): void {
|
||||||
|
|
||||||
|
}
|
||||||
|
reRender() {
|
||||||
|
setTimeout(() => {
|
||||||
|
this.chart.data(this.chartData);
|
||||||
|
this.chart.render();
|
||||||
|
}, 500)
|
||||||
}
|
}
|
||||||
render(el: ElementRef<HTMLDivElement>): void {
|
render(el: ElementRef<HTMLDivElement>): void {
|
||||||
this.el = el.nativeElement
|
this.el = el.nativeElement
|
||||||
|
this.ngZone.runOutsideAngular(() => this.init(this.el));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private init(el: HTMLElement): void {
|
private init(el: HTMLElement): void {
|
||||||
const chart = new Chart({
|
this.chart = new Chart({
|
||||||
container: el,
|
container: el,
|
||||||
autoFit: true,
|
autoFit: true,
|
||||||
height: 500,
|
height: 500,
|
||||||
});
|
});
|
||||||
|
|
||||||
chart.data(this.chartData);
|
|
||||||
|
|
||||||
chart.tooltip({
|
this.chart.data(this.chartData);
|
||||||
|
|
||||||
|
this.chart.tooltip({
|
||||||
showMarkers: false,
|
showMarkers: false,
|
||||||
});
|
});
|
||||||
|
|
||||||
chart.interval().position('time*number');
|
this.chart.interval().position('time*number');
|
||||||
|
this.chart.render();
|
||||||
chart.interaction('element-active');
|
|
||||||
|
|
||||||
chart.render();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -38,5 +38,4 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
<app-datatable-curve></app-datatable-curve>
|
|
||||||
</nz-card>
|
</nz-card>
|
||||||
@ -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-row [nzGutter]="16">
|
||||||
<div nz-col class="gutter-row" [nzSpan]="6">
|
<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>
|
<ng-template #footer1>
|
||||||
<div class="card-f">
|
<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>
|
</div>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
</g2-card>
|
</g2-card>
|
||||||
</div>
|
</div>
|
||||||
<div nz-col class="gutter-row" [nzSpan]="6">
|
<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>
|
<ng-template #footer2>
|
||||||
<div class="card-f">
|
<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>
|
</div>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
</g2-card>
|
</g2-card>
|
||||||
</div>
|
</div>
|
||||||
<div nz-col class="gutter-row" [nzSpan]="6">
|
<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>
|
<ng-template #footer3>
|
||||||
<div class="card-f">
|
<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>
|
</div>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
</g2-card>
|
</g2-card>
|
||||||
</div>
|
</div>
|
||||||
<div nz-col class="gutter-row" [nzSpan]="6">
|
<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>
|
<ng-template #footer4>
|
||||||
<div class="card-f">
|
<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>
|
</div>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
</g2-card>
|
</g2-card>
|
||||||
@ -62,5 +62,6 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<nz-card nzTitle="平台合规情况监控报表">
|
<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>
|
</nz-card>
|
||||||
|
|||||||
@ -5,6 +5,9 @@ import { format } from 'date-fns';
|
|||||||
import { SFComponent, SFDateWidgetSchema, SFRadioWidgetSchema, SFSchema, SFUISchema } from '@delon/form';
|
import { SFComponent, SFDateWidgetSchema, SFRadioWidgetSchema, SFSchema, SFUISchema } from '@delon/form';
|
||||||
import { G2TimelineData, G2TimelineMap } from '@delon/chart/timeline';
|
import { G2TimelineData, G2TimelineMap } from '@delon/chart/timeline';
|
||||||
import { Chart } from '@antv/g2';
|
import { Chart } from '@antv/g2';
|
||||||
|
import { DataService } from '../../../services/data.service';
|
||||||
|
import { ComplianceCurveComponent } from './curve/curve.component';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-datatable-compliance-index',
|
selector: 'app-datatable-compliance-index',
|
||||||
templateUrl: './index.component.html',
|
templateUrl: './index.component.html',
|
||||||
@ -12,51 +15,107 @@ import { Chart } from '@antv/g2';
|
|||||||
providers: [DatePipe]
|
providers: [DatePipe]
|
||||||
})
|
})
|
||||||
export class DatatableComplianceIndexComponent implements OnInit {
|
export class DatatableComplianceIndexComponent implements OnInit {
|
||||||
|
@ViewChild('curve') private readonly curve!: ComplianceCurveComponent;
|
||||||
@ViewChild('sf', { static: false })
|
@ViewChild('sf', { static: false })
|
||||||
|
|
||||||
sf!: SFComponent;
|
sf!: SFComponent;
|
||||||
ui!: SFUISchema;
|
ui!: SFUISchema;
|
||||||
schema: SFSchema = {};
|
schema: SFSchema = {};
|
||||||
|
|
||||||
mode = 'year';
|
mode = 'year';
|
||||||
date: any = null;
|
date: any = null;
|
||||||
dateFormat = 'yyyy-MM-dd';
|
dateFormat = 'yyyy';
|
||||||
time: any = ['2022-01-01 00:00:00']
|
time: any = '2022'
|
||||||
constructor(private http: _HttpClient, private modal: ModalHelper, private ngZone: NgZone, private datePipe: DatePipe) {}
|
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 {
|
ngOnInit(): void {
|
||||||
this.initSF();
|
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(){
|
changeData(){
|
||||||
if(this.mode === 'year') {
|
if(this.mode === 'year') {
|
||||||
this.dateFormat = 'yyyy'
|
this.dateFormat = 'yyyy'
|
||||||
} else if(this.mode === 'month') {
|
} else if(this.mode === 'month') {
|
||||||
this.dateFormat = 'yyyy-MM'
|
this.dateFormat = 'yyyy-MM'
|
||||||
} else {
|
}
|
||||||
this.dateFormat = 'yyyy-MM-dd'
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
onChange(result: any) {
|
onChange(result: any) {
|
||||||
if(this.mode === 'year') {
|
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') {
|
} 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() {
|
initSF() {
|
||||||
this.schema = {
|
this.schema = {
|
||||||
properties: {
|
properties: {
|
||||||
name: {
|
enterpriseInfoId: {
|
||||||
type: 'string',
|
type: 'string',
|
||||||
title: '',
|
title: '',
|
||||||
ui: {
|
ui: {
|
||||||
widget: 'select',
|
widget: 'select',
|
||||||
placeholder: '网络货运人'
|
placeholder: '网络货运人',
|
||||||
|
asyncData: () => this.service.getNetworkFreightForwarder({}),
|
||||||
|
change:()=>{
|
||||||
|
this.initdData();
|
||||||
|
},
|
||||||
|
allowClear: true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
name2: {
|
enterpriseProjectId: {
|
||||||
type: 'string',
|
type: 'string',
|
||||||
title: '',
|
title: '',
|
||||||
ui: {
|
ui: {
|
||||||
@ -64,11 +123,12 @@ export class DatatableComplianceIndexComponent implements OnInit {
|
|||||||
placeholder: '部门'
|
placeholder: '部门'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
name3: {
|
salesmanId: {
|
||||||
type: 'string',
|
type: 'string',
|
||||||
title: '',
|
title: '',
|
||||||
ui: {
|
ui: {
|
||||||
placeholder: '业务员'
|
placeholder: '业务员',
|
||||||
|
enter: () => this.initdData(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -81,6 +141,9 @@ export class DatatableComplianceIndexComponent implements OnInit {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
render(el: ElementRef<HTMLDivElement>) {
|
render(el: ElementRef<HTMLDivElement>) {
|
||||||
this.ngZone.runOutsideAngular(() => this.init(el.nativeElement));
|
this.ngZone.runOutsideAngular(() => this.init(el.nativeElement));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -55,5 +55,4 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
<app-datatable-curve></app-datatable-curve>
|
|
||||||
</nz-card>
|
</nz-card>
|
||||||
@ -23,6 +23,7 @@ export class DatatableCustomindexComponent implements OnInit {
|
|||||||
dateNext: any = null;
|
dateNext: any = null;
|
||||||
modeNext = 'year';
|
modeNext = 'year';
|
||||||
timeNext: any = ['2022-01-01 00:00:00']
|
timeNext: any = ['2022-01-01 00:00:00']
|
||||||
|
|
||||||
|
|
||||||
columns: STColumn[] = [
|
columns: STColumn[] = [
|
||||||
{ title: '用户类型', index: 'networkTransporterName', className: 'text-center' },
|
{ title: '用户类型', index: 'networkTransporterName', className: 'text-center' },
|
||||||
|
|||||||
@ -52,7 +52,8 @@ export class DatatableDriverComponent implements OnInit {
|
|||||||
}
|
}
|
||||||
let params: any = {
|
let params: any = {
|
||||||
time: this.time,
|
time: this.time,
|
||||||
type: this.type
|
type: this.type,
|
||||||
|
...this.sf?.value
|
||||||
};
|
};
|
||||||
|
|
||||||
delete params._$expand;
|
delete params._$expand;
|
||||||
|
|||||||
@ -38,7 +38,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
<st #st multiSort [columns]="columns" [ps]="20" [data]="service.$api_listOperationalReportPage"
|
<st #st multiSort [columns]="columns" [ps]="20" [data]="service.$api_listShipperReportPage"
|
||||||
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
|
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
|
||||||
[scroll]="{ x: '1200px' }" [res]="{ reName: { list: 'data.records', total: 'data.total' } }"
|
[scroll]="{ x: '1200px' }" [res]="{ reName: { list: 'data.records', total: 'data.total' } }"
|
||||||
[page]="{ show: true, showSize: true, pageSizes: [20, 50, 100] }" [loading]="false"></st>
|
[page]="{ show: true, showSize: true, pageSizes: [20, 50, 100] }" [loading]="false"></st>
|
||||||
|
|||||||
@ -26,23 +26,33 @@ export class DatatableOwnerComponent implements OnInit {
|
|||||||
schema: SFSchema = {};
|
schema: SFSchema = {};
|
||||||
|
|
||||||
columns: STColumn[] = [
|
columns: STColumn[] = [
|
||||||
{ title: '货主名称', index: 'networkTransporterName', className: 'text-center' },
|
{ title: '货主名称', index: 'enterpriseName', className: 'text-center' },
|
||||||
{ title: '注册时间', index: 'zsl', className: 'text-center' },
|
{ title: '注册时间', index: 'registerTime', className: 'text-center' },
|
||||||
{ title: '客户类型', index: 'yingsje', className: 'text-center' },
|
{ title: '客户类型', index: 'customerType', className: 'text-center', type: 'enum', enum: {
|
||||||
{ title: '业务员', index: 'cys', className: 'text-center' },
|
1: '平台客户',
|
||||||
{ title: '合伙人', index: 'yingfyf', className: 'text-center' },
|
2: '直客',
|
||||||
{ title: '客户状态', index: 'yl', className: 'text-center' },
|
3: '渠道客户'
|
||||||
{ title: '订单数', index: 'djd', className: 'text-center' },
|
}
|
||||||
{ title: '订单金额', index: 'ysz', className: 'text-center' },
|
},
|
||||||
{ title: '应收订单数', index: 'yswc', className: 'text-center' },
|
{ title: '业务员', index: 'salesmanName', className: 'text-center' },
|
||||||
{ title: '应收金额', index: 'yisje', className: 'text-center' },
|
{ title: '合伙人', index: 'partnerName', className: 'text-center' },
|
||||||
|
{ title: '客户状态', index: 'customerStatus', className: 'text-center', type: 'enum', enum: {
|
||||||
|
1: '未激活',
|
||||||
|
2: '沉默',
|
||||||
|
3: '流失',
|
||||||
|
4: '活跃'
|
||||||
|
} },
|
||||||
|
{ title: '订单数', index: 'zsl', className: 'text-center' },
|
||||||
|
{ title: '订单金额', index: 'ddje', className: 'text-center' },
|
||||||
|
{ title: '应收订单数', index: 'ysdds', className: 'text-center' },
|
||||||
|
{ title: '应收金额', index: 'yingsje', className: 'text-center' },
|
||||||
{ title: '待开票订单数', index: 'yifyf', className: 'text-center' },
|
{ title: '待开票订单数', index: 'yifyf', className: 'text-center' },
|
||||||
{ title: '待开票金额', index: 'yifyf', className: 'text-center' },
|
{ title: '待开票金额', index: 'dkpdds', className: 'text-center' },
|
||||||
{ title: '已收金额', render: 'yifyf', className: 'text-center' },
|
{ title: '已收金额', render: 'yisje', className: 'text-center' },
|
||||||
{ title: '附加费金额', index: 'yifyf', className: 'text-center' },
|
{ title: '应收附加费', index: 'yingsfjf', className: 'text-center' },
|
||||||
{ title: '已收附加费', index: 'yifyf', className: 'text-center' },
|
{ title: '已收附加费', index: 'yisfjf', className: 'text-center' },
|
||||||
{ title: '附加费率', index: 'yifyf', className: 'text-center' },
|
{ title: '附加费率', index: 'fjfl', className: 'text-center' },
|
||||||
{ title: '已开票金额', index: 'yifyf', className: 'text-center' }
|
{ title: '已开票金额', index: 'ykpje', className: 'text-center' }
|
||||||
];
|
];
|
||||||
/**
|
/**
|
||||||
* 查询参数
|
* 查询参数
|
||||||
@ -59,7 +69,8 @@ export class DatatableOwnerComponent implements OnInit {
|
|||||||
}
|
}
|
||||||
let params: any = {
|
let params: any = {
|
||||||
time: this.time,
|
time: this.time,
|
||||||
type: this.type
|
type: this.type,
|
||||||
|
...this.sf?.value
|
||||||
};
|
};
|
||||||
|
|
||||||
delete params._$expand;
|
delete params._$expand;
|
||||||
@ -76,28 +87,41 @@ export class DatatableOwnerComponent implements OnInit {
|
|||||||
this.schema = {
|
this.schema = {
|
||||||
properties: {
|
properties: {
|
||||||
_$expand: { type: 'boolean', ui: { hidden: true } },
|
_$expand: { type: 'boolean', ui: { hidden: true } },
|
||||||
billCode: {
|
enterpriseName: {
|
||||||
type: 'string',
|
type: 'string',
|
||||||
title: '货主名称',
|
title: '货主名称',
|
||||||
ui: {
|
ui: {
|
||||||
placeholder: '请输入',
|
placeholder: '请输入',
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
resourceCode: {
|
customerType: {
|
||||||
type: 'string',
|
type: 'string',
|
||||||
title: '客户类型',
|
title: '客户类型',
|
||||||
ui: {
|
ui: {
|
||||||
|
widget: 'select',
|
||||||
placeholder: '请选择',
|
placeholder: '请选择',
|
||||||
}
|
},
|
||||||
|
enum: [
|
||||||
|
{label: '直客', value: 2},
|
||||||
|
{label: '渠道客户', value: 3},
|
||||||
|
{label: '平台客户', value: 1},
|
||||||
|
]
|
||||||
},
|
},
|
||||||
loadingPlace: {
|
customerStatus: {
|
||||||
type: 'string',
|
type: 'string',
|
||||||
title: '客户状态',
|
title: '客户状态',
|
||||||
ui: {
|
ui: {
|
||||||
|
widget: 'select',
|
||||||
placeholder: '请选择',
|
placeholder: '请选择',
|
||||||
}
|
},
|
||||||
|
enum: [
|
||||||
|
{label: '未激活', value: 1},
|
||||||
|
{label: '沉默', value: 2},
|
||||||
|
{label: '流失', value: 3},
|
||||||
|
{label: '活跃', value: 4},
|
||||||
|
]
|
||||||
},
|
},
|
||||||
createTime: {
|
registerTime: {
|
||||||
title: '注册时间',
|
title: '注册时间',
|
||||||
type: 'string',
|
type: 'string',
|
||||||
ui: {
|
ui: {
|
||||||
|
|||||||
@ -1,5 +1,2 @@
|
|||||||
<g2-custom delay="100" (render)="render($event)"></g2-custom>
|
<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 { G2MiniAreaClickItem } from '@delon/chart/mini-area';
|
||||||
import { DataService } from '../../../services/data.service';
|
import { DataService } from '../../../services/data.service';
|
||||||
// import DataSet from '@antv/data-set';
|
// import DataSet from '@antv/data-set';
|
||||||
@ -9,160 +9,81 @@ import { Chart } from '@antv/g2';
|
|||||||
templateUrl: './curve.component.html',
|
templateUrl: './curve.component.html',
|
||||||
styleUrls: ['./curve.component.less']
|
styleUrls: ['./curve.component.less']
|
||||||
})
|
})
|
||||||
export class FinanceTableCurveComponent implements OnInit {
|
export class FinanceTableCurveComponent implements OnInit,OnChanges {
|
||||||
constructor(private service: DataService, private ngZone: NgZone) {}
|
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 {
|
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,
|
container: el,
|
||||||
autoFit: true,
|
autoFit: true,
|
||||||
height: 500
|
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' }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
});
|
});
|
||||||
|
|
||||||
chart
|
this.chart.data(this.chartData);
|
||||||
.interval()
|
this.chart.scale({
|
||||||
.position('月份*月均降雨量')
|
time: {
|
||||||
.color('name')
|
range: [0, 1],
|
||||||
.adjust([
|
},
|
||||||
{
|
number: {
|
||||||
type: 'dodge',
|
nice: true,
|
||||||
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]
|
|
||||||
},
|
},
|
||||||
value: {
|
|
||||||
min: 0,
|
|
||||||
nice: true
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
// 图表下方图形文字自定义
|
|
||||||
chart.legend({
|
this.chart.tooltip({
|
||||||
items: [
|
|
||||||
{
|
|
||||||
name: '平均附加费率',
|
|
||||||
value: 'node_load1',
|
|
||||||
marker: {
|
|
||||||
symbol: 'circle',
|
|
||||||
style: { fill: '#6193f7' }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
});
|
|
||||||
// 提示自定义
|
|
||||||
chart.tooltip({
|
|
||||||
showCrosshairs: true,
|
showCrosshairs: true,
|
||||||
shared: true
|
shared: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
this.chart.axis('number', {
|
||||||
|
label: {
|
||||||
|
formatter: (val: any) => {
|
||||||
|
return val*100+ ' %';
|
||||||
|
},
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
//数据格式化
|
|
||||||
chart.axis('value', {
|
this.chart
|
||||||
label: {
|
|
||||||
formatter: val => {
|
|
||||||
return val + ' %';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
// 在x*y的坐标点上按z值绘制线条, 如果z值相同将使用直线连接
|
|
||||||
chart
|
|
||||||
.line()
|
.line()
|
||||||
.position('data*value')
|
.position('time*number')
|
||||||
.color('label')
|
.color('name')
|
||||||
.tooltip('label*value', (name: any, value: any) => {
|
.tooltip('name*number', (name:any, value:any) => {
|
||||||
return {
|
return {
|
||||||
name: name,
|
name: name,
|
||||||
value: value + '%'
|
value: value*100 + '%'
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
// 在x*y的坐标上按z值绘制圆点
|
|
||||||
// chart.point().position('data*value').size(4).color('label').shape('circle');
|
this.chart.render();
|
||||||
chart.render();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -50,7 +50,7 @@
|
|||||||
<nz-card nzTitle="运营报表" [nzExtra]="extraTemplate01">
|
<nz-card nzTitle="运营报表" [nzExtra]="extraTemplate01">
|
||||||
<ng-template #extraTemplate01>
|
<ng-template #extraTemplate01>
|
||||||
<div class="chooseBox">
|
<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-option [nzValue]="item.value" [nzLabel]="item.label" *ngFor="let item of interManlist"></nz-option>
|
||||||
</nz-select>
|
</nz-select>
|
||||||
<div class="timeBox">
|
<div class="timeBox">
|
||||||
@ -64,5 +64,12 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</ng-template>
|
</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>
|
</nz-card>
|
||||||
@ -4,6 +4,10 @@ import { SFSchema } from '@delon/form';
|
|||||||
import { DatePipe, ModalHelper, _HttpClient } from '@delon/theme';
|
import { DatePipe, ModalHelper, _HttpClient } from '@delon/theme';
|
||||||
import { DataService } from '../../services/data.service';
|
import { DataService } from '../../services/data.service';
|
||||||
import { differenceInCalendarDays } from 'date-fns';
|
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({
|
@Component({
|
||||||
selector: 'app-datatable-financetable',
|
selector: 'app-datatable-financetable',
|
||||||
@ -12,6 +16,8 @@ import { differenceInCalendarDays } from 'date-fns';
|
|||||||
providers: [DatePipe]
|
providers: [DatePipe]
|
||||||
})
|
})
|
||||||
export class DatatableFinancetableComponent implements OnInit {
|
export class DatatableFinancetableComponent implements OnInit {
|
||||||
|
@ViewChild('curve') private readonly curve!: FinanceTableCurveComponent;
|
||||||
|
@ViewChild('pillar') private readonly pillar!: FinancetablePillarComponent;
|
||||||
@ViewChild('st') private readonly st!: STComponent;
|
@ViewChild('st') private readonly st!: STComponent;
|
||||||
type = 1;
|
type = 1;
|
||||||
mode = 'year';
|
mode = 'year';
|
||||||
@ -24,8 +30,9 @@ export class DatatableFinancetableComponent implements OnInit {
|
|||||||
timeNext: any = ['2022-01-01 00:00:00']
|
timeNext: any = ['2022-01-01 00:00:00']
|
||||||
today = new Date();
|
today = new Date();
|
||||||
enterpriseInfoId = ''
|
enterpriseInfoId = ''
|
||||||
enterpriseInfoIdPie = ''
|
|
||||||
interManlist: any = []
|
interManlist: any = []
|
||||||
|
chartData: any = {}
|
||||||
|
flag = false;
|
||||||
columns: STColumn[] = [
|
columns: STColumn[] = [
|
||||||
{ title: '运营主体', index: 'networkTransporterName', className: 'text-center' },
|
{ title: '运营主体', index: 'networkTransporterName', className: 'text-center' },
|
||||||
{ title: '客户预存款', index: 'czcgje',render: 'czcgje', 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) { }
|
constructor(public service: DataService, private datePipe: DatePipe) { }
|
||||||
ngOnInit(): void {
|
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() {
|
initData() {
|
||||||
this.service.getNetworkFreightForwarder().subscribe(res => {
|
this.service.getNetworkFreightForwarder().subscribe(res => {
|
||||||
this.interManlist = res
|
this.interManlist = res
|
||||||
this.enterpriseInfoId = res[0].value
|
this.enterpriseInfoId = res[0].value
|
||||||
this.enterpriseInfoIdPie = res[0].value
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -119,6 +150,7 @@ export class DatatableFinancetableComponent implements OnInit {
|
|||||||
} else if(this.mode === 'month') {
|
} else if(this.mode === 'month') {
|
||||||
this.timeNext = [this.datePipe.transform(this.dateNext, 'yyyy-MM') + '-01 00:00:00']
|
this.timeNext = [this.datePipe.transform(this.dateNext, 'yyyy-MM') + '-01 00:00:00']
|
||||||
}
|
}
|
||||||
|
this.initPillarData();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -1,24 +0,0 @@
|
|||||||
import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
|
|
||||||
import { DatatableDataindexComponent } from './dataindex.component';
|
|
||||||
|
|
||||||
describe('DatatableDataindexComponent', () => {
|
|
||||||
let component: DatatableDataindexComponent;
|
|
||||||
let fixture: ComponentFixture<DatatableDataindexComponent>;
|
|
||||||
|
|
||||||
beforeEach(waitForAsync(() => {
|
|
||||||
TestBed.configureTestingModule({
|
|
||||||
declarations: [ DatatableDataindexComponent ]
|
|
||||||
})
|
|
||||||
.compileComponents();
|
|
||||||
}));
|
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
fixture = TestBed.createComponent(DatatableDataindexComponent);
|
|
||||||
component = fixture.componentInstance;
|
|
||||||
fixture.detectChanges();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should create', () => {
|
|
||||||
expect(component).toBeTruthy();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@ -1,131 +1,81 @@
|
|||||||
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';
|
|
||||||
import { Chart } from '@antv/g2';
|
import { Chart } from '@antv/g2';
|
||||||
|
import { DataService } from 'src/app/routes/datatable/services/data.service';
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-datatable-curve',
|
selector: 'app-operation-curve',
|
||||||
templateUrl: './curve.component.html',
|
templateUrl: './curve.component.html',
|
||||||
styleUrls: ['./curve.component.less']
|
styleUrls: ['./curve.component.less']
|
||||||
})
|
})
|
||||||
export class OperationtableCurveComponent implements OnInit {
|
export class OperationCurveComponent implements OnInit, OnChanges {
|
||||||
|
el: any;
|
||||||
|
@Input() chartData: any;
|
||||||
|
chart: any;
|
||||||
constructor(private service: DataService, private ngZone: NgZone) {
|
constructor(private service: DataService, private ngZone: NgZone) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
ngOnChanges(changes: SimpleChanges): void {
|
||||||
|
if (this.chartData) {
|
||||||
|
// setTimeout(()=>{
|
||||||
|
// this.chart.render(true)
|
||||||
|
// }, 1000)
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ngOnInit(): void {
|
ngOnInit(): void {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
reRender() {
|
||||||
|
setTimeout(() => {
|
||||||
|
this.chart.data(this.chartData);
|
||||||
|
this.chart.render();
|
||||||
handleClick(data: G2MiniAreaClickItem): void {
|
}, 1000)
|
||||||
this.service.msgSrv.info(`${data.item.x} - ${data.item.y}`);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
render(el: ElementRef<HTMLDivElement>): void {
|
render(el: ElementRef<HTMLDivElement>): void {
|
||||||
this.ngZone.runOutsideAngular(() => this.init(el.nativeElement));
|
this.el = el.nativeElement
|
||||||
|
setTimeout(() => {
|
||||||
|
this.ngZone.runOutsideAngular(() => this.init(this.el));
|
||||||
|
}, 1000)
|
||||||
}
|
}
|
||||||
private init(el: HTMLElement): void {
|
|
||||||
const data = [
|
|
||||||
{ name: '订单数', month: '01', count: 150, },
|
|
||||||
{ name: '订单数', month: '02', count: 288 },
|
|
||||||
{ name: '订单数', month: '03', count: 393 },
|
|
||||||
{ name: '订单数', month: '04', count: 814 },
|
|
||||||
{ name: '订单数', month: '05', count: 47 },
|
|
||||||
{ name: '承运数', month: '05', count: 124 },
|
|
||||||
{ name: '订单数', month: '06', count: 203 },
|
|
||||||
{ name: '承运数', month: '06', count: 203 },
|
|
||||||
{ name: '订单数', month: '07', count: 24 },
|
|
||||||
{ name: '订单数', month: '08', count: 356 },
|
|
||||||
{ name: '承运数', month: '09', count: 124 },
|
|
||||||
{ name: '承运数', month: '10', count: 232 },
|
|
||||||
{ name: '承运数', month: '11', count: 345 },
|
|
||||||
{ name: '承运数', month: '12', count: 997 }
|
|
||||||
];
|
|
||||||
const dataPillar = [
|
|
||||||
{ name: '应收金额(元)', month: '01', price: 18.9, },
|
|
||||||
{ name: '应收金额(元)', month: '02', price: 28.8 },
|
|
||||||
{ name: '应收金额(元)', month: '03', price: 39.3 },
|
|
||||||
{ name: '应收金额(元)', month: '04', price: 81.4 },
|
|
||||||
{ name: '应收金额(元)', month: '05', price: 47 },
|
|
||||||
{ name: '应付金额(元)', month: '05', price: 12.4 },
|
|
||||||
{ name: '应收金额(元)', month: '06', price: 20.3 },
|
|
||||||
{ name: '应付金额(元)', month: '06', price: 20.3 },
|
|
||||||
{ name: '应收金额(元)', month: '07', price: 24 },
|
|
||||||
{ name: '应收金额(元)', month: '08', price: 35.6 },
|
|
||||||
{ name: '应付金额(元)', month: '09', price: 12.4 },
|
|
||||||
{ name: '应付金额(元)', month: '10', price: 23.2 },
|
|
||||||
{ name: '应付金额(元)', month: '11', price: 34.5 },
|
|
||||||
{ name: '应付金额(元)', month: '12', price: 99.7 }
|
|
||||||
];
|
|
||||||
const ds = new DataSet();
|
|
||||||
const dv = ds.createView().source(data);
|
|
||||||
dv.transform({
|
|
||||||
type: 'map',
|
|
||||||
callback: row => {
|
|
||||||
row.year = parseInt(row.year, 10);
|
|
||||||
return row;
|
|
||||||
}
|
|
||||||
}).transform({
|
|
||||||
type: 'regression',
|
|
||||||
method: 'polynomial',
|
|
||||||
fields: ['year', 'value'],
|
|
||||||
bandwidth: 0.1,
|
|
||||||
as: ['Year', 'Value']
|
|
||||||
});
|
|
||||||
|
|
||||||
const chart = new Chart({
|
private init(el: HTMLElement): void {
|
||||||
|
this.chart = new Chart({
|
||||||
container: el,
|
container: el,
|
||||||
autoFit: true,
|
autoFit: true,
|
||||||
height: 500,
|
height: 500,
|
||||||
padding: [20, 40],
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const view1 = chart.createView();
|
this.chart.data(this.chartData);
|
||||||
view1.data(dataPillar);
|
this.chart.scale({
|
||||||
view1.scale('price', {
|
time: {
|
||||||
nice: true,
|
range: [0, 1],
|
||||||
|
},
|
||||||
|
number: {
|
||||||
|
nice: true,
|
||||||
|
},
|
||||||
});
|
});
|
||||||
view1.tooltip({
|
|
||||||
showMarkers: false,
|
this.chart.tooltip({
|
||||||
|
showCrosshairs: true,
|
||||||
shared: true,
|
shared: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
view1
|
this.chart.axis('number', {
|
||||||
.interval()
|
label: {
|
||||||
.position('month*price')
|
formatter: (val: any) => {
|
||||||
.color('name')
|
return val;
|
||||||
.adjust([
|
|
||||||
{
|
|
||||||
type: 'dodge',
|
|
||||||
marginRatio: 0,
|
|
||||||
},
|
},
|
||||||
]);
|
},
|
||||||
|
});
|
||||||
const view2 = chart.createView();
|
|
||||||
// view2.axis('count', {
|
this.chart
|
||||||
// label: {
|
|
||||||
// formatter: (val) => {
|
|
||||||
// return val + ' °C';
|
|
||||||
// },
|
|
||||||
// },
|
|
||||||
// });
|
|
||||||
view2.data(data);
|
|
||||||
view2
|
|
||||||
.line()
|
.line()
|
||||||
.position('month*count')
|
.position('time*number')
|
||||||
.color('name')
|
.color('name')
|
||||||
|
|
||||||
|
|
||||||
|
this.chart.render();
|
||||||
|
|
||||||
// chart.interaction('active-region');
|
|
||||||
chart.render();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -28,7 +28,7 @@
|
|||||||
<nz-card nzTitle="运营报表" [nzExtra]="extraTemplate01">
|
<nz-card nzTitle="运营报表" [nzExtra]="extraTemplate01">
|
||||||
<ng-template #extraTemplate01>
|
<ng-template #extraTemplate01>
|
||||||
<div class="chooseBox">
|
<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-option [nzValue]="item.value" [nzLabel]="item.label" *ngFor="let item of interManlist"></nz-option>
|
||||||
</nz-select>
|
</nz-select>
|
||||||
<div class="timeBox">
|
<div class="timeBox">
|
||||||
@ -42,11 +42,22 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
<app-datatable-curve></app-datatable-curve>
|
<div nz-row [nzGutter]="64">
|
||||||
|
<div nz-col class="gutter-row" [nzSpan]="12">
|
||||||
|
<!-- <div class="title">
|
||||||
|
<div class="box" style="background-color: #3ba1ff;"></div> 环比(%)
|
||||||
|
</div> -->
|
||||||
|
<!-- <g2-custom delay="100" (render)="render($event)"></g2-custom> -->
|
||||||
|
<!-- <app-busitable-curve></app-busitable-curve> -->
|
||||||
|
<app-operation-curve #curve [chartData]="chartData.lineChart"></app-operation-curve>
|
||||||
|
</div>
|
||||||
|
<div nz-col class="gutter-row" [nzSpan]="12">
|
||||||
|
<!-- <div class="title">
|
||||||
|
<div class="box" style="background-color: #f59a23;"></div> 业绩量(元)
|
||||||
|
</div> -->
|
||||||
|
<app-operation-pillar #pillar [chartData]="chartData.histogram"></app-operation-pillar>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</nz-card>
|
</nz-card>
|
||||||
<nz-card nzTitle="运单状态分布">
|
|
||||||
<nz-select [(ngModel)]="enterpriseInfoIdPie" style="width: 200px" (ngModelChange)="changeCurve()">
|
<app-opeationtable-pie #pie></app-opeationtable-pie>
|
||||||
<nz-option [nzValue]="item.value" [nzLabel]="item.label" *ngFor="let item of interManlist"></nz-option>
|
|
||||||
</nz-select>
|
|
||||||
<app-opeationtable-pie></app-opeationtable-pie>
|
|
||||||
</nz-card>
|
|
||||||
|
|||||||
@ -3,6 +3,8 @@ import { STColumn, STComponent } from '@delon/abc/st';
|
|||||||
import { DatePipe, _HttpClient } from '@delon/theme';
|
import { DatePipe, _HttpClient } from '@delon/theme';
|
||||||
import { DataService } from '../../services/data.service';
|
import { DataService } from '../../services/data.service';
|
||||||
import { differenceInCalendarDays } from 'date-fns';
|
import { differenceInCalendarDays } from 'date-fns';
|
||||||
|
import { OperationCurveComponent } from './curve/curve.component';
|
||||||
|
import { OperationPillarComponent } from './pillar/pillar.component';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-datatable-operationtable',
|
selector: 'app-datatable-operationtable',
|
||||||
@ -12,6 +14,8 @@ import { differenceInCalendarDays } from 'date-fns';
|
|||||||
|
|
||||||
})
|
})
|
||||||
export class DatatableOperationtableComponent implements OnInit {
|
export class DatatableOperationtableComponent implements OnInit {
|
||||||
|
@ViewChild('curve') private readonly curve!: OperationCurveComponent;
|
||||||
|
@ViewChild('pillar') private readonly pillar!: OperationPillarComponent;
|
||||||
@ViewChild('st') private readonly st!: STComponent;
|
@ViewChild('st') private readonly st!: STComponent;
|
||||||
type = 1;
|
type = 1;
|
||||||
mode = 'year';
|
mode = 'year';
|
||||||
@ -24,8 +28,10 @@ export class DatatableOperationtableComponent implements OnInit {
|
|||||||
timeNext: any = ['2022-01-01 00:00:00']
|
timeNext: any = ['2022-01-01 00:00:00']
|
||||||
today = new Date();
|
today = new Date();
|
||||||
enterpriseInfoId = ''
|
enterpriseInfoId = ''
|
||||||
enterpriseInfoIdPie = ''
|
|
||||||
interManlist: any = []
|
interManlist: any = []
|
||||||
|
chartData: any = {}
|
||||||
|
flag = false;
|
||||||
columns: STColumn[] = [
|
columns: STColumn[] = [
|
||||||
{ title: '运营主体', index: 'networkTransporterName', className: 'text-center' },
|
{ title: '运营主体', index: 'networkTransporterName', className: 'text-center' },
|
||||||
{ title: '订单数', index: 'zsl', className: 'text-center' },
|
{ title: '订单数', index: 'zsl', className: 'text-center' },
|
||||||
@ -64,12 +70,36 @@ export class DatatableOperationtableComponent implements OnInit {
|
|||||||
constructor(public service: DataService, private datePipe: DatePipe) { }
|
constructor(public service: DataService, private datePipe: DatePipe) { }
|
||||||
ngOnInit(): void {
|
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_operationalReportHistogram, params).subscribe(res => {
|
||||||
|
if (res) {
|
||||||
|
this.chartData = res
|
||||||
|
if(this.flag) {
|
||||||
|
this.pillar.reRender()
|
||||||
|
this.curve.reRender()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
initData() {
|
initData() {
|
||||||
|
|
||||||
this.service.getNetworkFreightForwarder().subscribe(res => {
|
this.service.getNetworkFreightForwarder().subscribe(res => {
|
||||||
this.interManlist = res
|
this.interManlist = res
|
||||||
this.enterpriseInfoId = res[0].value
|
this.enterpriseInfoId = res[0].value
|
||||||
this.enterpriseInfoIdPie = res[0].value
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,6 @@
|
|||||||
<div class="box">
|
<nz-card nzTitle="运单状态分布">
|
||||||
|
<nz-select [(ngModel)]="enterpriseInfoIdPie" style="width: 200px" (ngModelChange)="initData()">
|
||||||
|
<nz-option [nzValue]="item.value" [nzLabel]="item.label" *ngFor="let item of interManlist"></nz-option>
|
||||||
|
</nz-select>
|
||||||
<g2-custom delay="100" (render)="render($event)"></g2-custom>
|
<g2-custom delay="100" (render)="render($event)"></g2-custom>
|
||||||
</div>
|
</nz-card>
|
||||||
@ -1,5 +1,5 @@
|
|||||||
.box{
|
.box{
|
||||||
width: 50%;
|
width: 50%;
|
||||||
overflow: hidden;
|
|
||||||
margin:0 auto;
|
margin:0 auto;
|
||||||
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
@ -13,21 +13,30 @@ export class OperationtablePieComponent implements OnInit {
|
|||||||
@ViewChild('pie', { static: false }) pie!: G2PieComponent;
|
@ViewChild('pie', { static: false }) pie!: G2PieComponent;
|
||||||
chartData: any = [];
|
chartData: any = [];
|
||||||
el: any;
|
el: any;
|
||||||
|
enterpriseInfoIdPie = ''
|
||||||
|
interManlist: any = []
|
||||||
|
|
||||||
constructor(private service: DataService, private ngZone: NgZone) {
|
constructor(private service: DataService, private ngZone: NgZone) {
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit(): void {
|
ngOnInit(): void {
|
||||||
this.initData()
|
this.initData()
|
||||||
|
this.initManData()
|
||||||
}
|
}
|
||||||
initData(){
|
initData(){
|
||||||
this.service.request(this.service.$api_operationalReportWaybillStatusDistribution).subscribe(res => {
|
this.service.request(this.service.$api_operationalReportWaybillStatusDistribution, {id: this.enterpriseInfoIdPie}).subscribe(res => {
|
||||||
if (res) {
|
if (res) {
|
||||||
this.chartData = res
|
this.chartData = res
|
||||||
this.ngZone.runOutsideAngular(() => this.init(this.el));
|
this.ngZone.runOutsideAngular(() => this.init(this.el));
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
initManData() {
|
||||||
|
this.service.getNetworkFreightForwarder().subscribe(res => {
|
||||||
|
this.interManlist = res
|
||||||
|
this.enterpriseInfoIdPie = res[0].value
|
||||||
|
})
|
||||||
|
}
|
||||||
render(el: ElementRef<HTMLDivElement>): void {
|
render(el: ElementRef<HTMLDivElement>): void {
|
||||||
this.el = el.nativeElement
|
this.el = el.nativeElement
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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-operation-pillar',
|
||||||
|
templateUrl: './pillar.component.html',
|
||||||
|
styleUrls: ['./pillar.component.less']
|
||||||
|
})
|
||||||
|
export class OperationPillarComponent 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();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -8,7 +8,6 @@ import { DatatableOperationtableComponent } from './components/operationtable/op
|
|||||||
import { OperationtablePieComponent } from './components/operationtable/pie/pie.component';
|
import { OperationtablePieComponent } from './components/operationtable/pie/pie.component';
|
||||||
import { DatatableOrderReportingComponent } from './reporting/components/order-reporting/order-reporting.component';
|
import { DatatableOrderReportingComponent } from './reporting/components/order-reporting/order-reporting.component';
|
||||||
import { DatatableDataindexComponent } from './components/dataindex/dataindex.component';
|
import { DatatableDataindexComponent } from './components/dataindex/dataindex.component';
|
||||||
import { OperationtableCurveComponent } from './components/operationtable/curve/curve.component';
|
|
||||||
import { DatatableComplianceIndexComponent } from './components/compliance/index/index.component';
|
import { DatatableComplianceIndexComponent } from './components/compliance/index/index.component';
|
||||||
import { DatatableFinancetableComponent } from './components/financetable/financetable.component';
|
import { DatatableFinancetableComponent } from './components/financetable/financetable.component';
|
||||||
import { DatatableInvoicetableComponent } from './components/invoicetable/invoicetable.component';
|
import { DatatableInvoicetableComponent } from './components/invoicetable/invoicetable.component';
|
||||||
@ -23,8 +22,12 @@ import { DatatableBusiindexComponent } from './components/busitable/busiindex/bu
|
|||||||
import { DatatableMantableComponent } from './components/busitable/mantable/mantable.component';
|
import { DatatableMantableComponent } from './components/busitable/mantable/mantable.component';
|
||||||
import { BusitablePillarComponent } from './components/busitable/busiindex/pillar/pillar.component';
|
import { BusitablePillarComponent } from './components/busitable/busiindex/pillar/pillar.component';
|
||||||
import { DatatableReportingFundInfoComponent } from './reporting/components/fund-info/fund-info.component';
|
import { DatatableReportingFundInfoComponent } from './reporting/components/fund-info/fund-info.component';
|
||||||
import { BusitableCurveComponent } from './components/busitable/busiindex/curve2/curve.component';
|
import { BusitableCurveComponent } from './components/busitable/busiindex/curve/curve.component';
|
||||||
|
import { OperationPillarComponent } from './components/operationtable/pillar/pillar.component';
|
||||||
|
import { OperationCurveComponent } from './components/operationtable/curve/curve.component';
|
||||||
import { FinanceTableCurveComponent } from './components/financetable/curve/curve.component';
|
import { FinanceTableCurveComponent } from './components/financetable/curve/curve.component';
|
||||||
|
import { FinancetablePillarComponent } from './components/financetable/pillar/pillar.component';
|
||||||
|
import { ComplianceCurveComponent } from './components/compliance/index/curve/curve.component';
|
||||||
|
|
||||||
const COMPONENTS: Type<void>[] = [
|
const COMPONENTS: Type<void>[] = [
|
||||||
DatatableDataindexComponent,
|
DatatableDataindexComponent,
|
||||||
@ -34,7 +37,6 @@ const COMPONENTS: Type<void>[] = [
|
|||||||
DatatableOperationtableComponent,
|
DatatableOperationtableComponent,
|
||||||
OperationtablePieComponent,
|
OperationtablePieComponent,
|
||||||
DatatableOrderReportingComponent,
|
DatatableOrderReportingComponent,
|
||||||
OperationtableCurveComponent,
|
|
||||||
DatatableComplianceIndexComponent,
|
DatatableComplianceIndexComponent,
|
||||||
DatatableFinancetableComponent,
|
DatatableFinancetableComponent,
|
||||||
DatatableInvoicetableComponent,
|
DatatableInvoicetableComponent,
|
||||||
@ -49,9 +51,14 @@ const COMPONENTS: Type<void>[] = [
|
|||||||
DatatableMantableComponent,
|
DatatableMantableComponent,
|
||||||
BusitablePillarComponent,
|
BusitablePillarComponent,
|
||||||
DatatableFundReportingComponent,
|
DatatableFundReportingComponent,
|
||||||
BusitableCurveComponent,
|
|
||||||
DatatableReportingFundInfoComponent,
|
DatatableReportingFundInfoComponent,
|
||||||
FinanceTableCurveComponent
|
BusitableCurveComponent,
|
||||||
|
OperationPillarComponent,
|
||||||
|
OperationCurveComponent,
|
||||||
|
DatatableReportingFundInfoComponent,
|
||||||
|
FinanceTableCurveComponent,
|
||||||
|
FinancetablePillarComponent,
|
||||||
|
ComplianceCurveComponent
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -27,6 +27,8 @@ export class DataService extends BaseService {
|
|||||||
$api_listPerformanceReportPage = `/api/sdc/report/listPerformanceReportPage`;
|
$api_listPerformanceReportPage = `/api/sdc/report/listPerformanceReportPage`;
|
||||||
// 运营报表运单状态分布
|
// 运营报表运单状态分布
|
||||||
$api_operationalReportWaybillStatusDistribution = `/api/sdc/report/operationalReportWaybillStatusDistribution`;
|
$api_operationalReportWaybillStatusDistribution = `/api/sdc/report/operationalReportWaybillStatusDistribution`;
|
||||||
|
// 运营报表柱状图
|
||||||
|
$api_operationalReportHistogram = `/api/sdc/report/operationalReportHistogram`;
|
||||||
// 获取网络货运人
|
// 获取网络货运人
|
||||||
$api_get_network_freight_forwarder_list = `/api/mdc/cuc/networkTransporter/findAll`;
|
$api_get_network_freight_forwarder_list = `/api/mdc/cuc/networkTransporter/findAll`;
|
||||||
// 业绩报表柱状图
|
// 业绩报表柱状图
|
||||||
@ -37,6 +39,24 @@ export class DataService extends BaseService {
|
|||||||
// 查询开票数据报表
|
// 查询开票数据报表
|
||||||
$api_listFinancialReportPage = `/api/sdc/report/listFinancialReportPage`;
|
$api_listFinancialReportPage = `/api/sdc/report/listFinancialReportPage`;
|
||||||
|
|
||||||
|
|
||||||
|
// 查询货主报表
|
||||||
|
$api_listShipperReportPage = `/api/sdc/report/listShipperReportPage`;
|
||||||
|
// 财务报表柱状图
|
||||||
|
$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) {
|
constructor(public injector: Injector) {
|
||||||
super(injector);
|
super(injector);
|
||||||
}
|
}
|
||||||
@ -45,7 +65,7 @@ export class DataService extends BaseService {
|
|||||||
* 获取网络货运人
|
* 获取网络货运人
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
getNetworkFreightForwarder(params = {}, containerAll = false) {
|
getNetworkFreightForwarder(params = {}, containerAll = false) {
|
||||||
return this.request(this.$api_get_network_freight_forwarder_list, params).pipe(
|
return this.request(this.$api_get_network_freight_forwarder_list, params).pipe(
|
||||||
map((res: any) => {
|
map((res: any) => {
|
||||||
if (!res) {
|
if (!res) {
|
||||||
@ -66,7 +86,7 @@ export class DataService extends BaseService {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
getPerformanceReportHistogram(params = {}){
|
getPerformanceReportHistogram(params = {}) {
|
||||||
return this.request(this.$api_performanceReportHistogram, params)
|
return this.request(this.$api_performanceReportHistogram, params)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
<nz-card>
|
<nz-card>
|
||||||
<nz-row [nzGutter]="16">
|
<nz-row [nzGutter]="16">
|
||||||
<nz-col [nzXl]="9" [nzLg]="8" [nzSm]="12">
|
<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'}"
|
[nzTitle]="params.name+'('+params.phone+')'" [nzValueStyle]="{'font-size':'16px','font-weight':'bold'}"
|
||||||
class="bold">
|
class="bold">
|
||||||
</nz-statistic>
|
</nz-statistic>
|
||||||
|
|||||||
@ -35,7 +35,8 @@ export class DriverAccountDetailComponent implements OnInit {
|
|||||||
ltdId: this.params.ltdId,
|
ltdId: this.params.ltdId,
|
||||||
projectId: this.params.projectId,
|
projectId: this.params.projectId,
|
||||||
enterpriseId: this.params.enterpriseId,
|
enterpriseId: this.params.enterpriseId,
|
||||||
roleId: this.params.roleId
|
roleId: this.params.roleId,
|
||||||
|
bankType: this.params.bankType,
|
||||||
});
|
});
|
||||||
if (this.sf) {
|
if (this.sf) {
|
||||||
Object.assign(requestOptions.body, {
|
Object.assign(requestOptions.body, {
|
||||||
@ -59,6 +60,7 @@ export class DriverAccountDetailComponent implements OnInit {
|
|||||||
roleId: this.params.roleId,
|
roleId: this.params.roleId,
|
||||||
pageIndex: this.st.pi,
|
pageIndex: this.st.pi,
|
||||||
pageSize: this.st.ps,
|
pageSize: this.st.ps,
|
||||||
|
bankType: this.params.bankType,
|
||||||
createTime: {
|
createTime: {
|
||||||
start: this.sf?.value?.createTime?.[0] || '',
|
start: this.sf?.value?.createTime?.[0] || '',
|
||||||
end: this.sf?.value?.createTime?.[1] || ''
|
end: this.sf?.value?.createTime?.[1] || ''
|
||||||
@ -162,13 +164,13 @@ export class DriverAccountDetailComponent implements OnInit {
|
|||||||
|
|
||||||
private initST(): STColumn[] {
|
private initST(): STColumn[] {
|
||||||
return [
|
return [
|
||||||
{ title: '交易时间', index: 'createTime', type: 'date' },
|
{ title: '交易时间', index: 'createTime', type: 'date', width: 150 },
|
||||||
{ title: '流水号', index: 'channelPaySn' },
|
{ title: '流水号', index: 'channelPaySn', width: 170 },
|
||||||
{ title: '交易类型', index: 'tradeTypeLabel', className: 'text-center' },
|
{ title: '交易类型', index: 'tradeTypeLabel', className: 'text-center', width: 150 },
|
||||||
{ title: '交易单号', index: 'businessNumber' },
|
{ title: '交易单号', index: 'businessNumber' , width: 190},
|
||||||
{ title: '订单号', index: 'orderSn' },
|
{ title: '订单号', index: 'orderSn' , width: 190},
|
||||||
{ title: '运单号', index: 'transportSn' },
|
{ title: '运单号', index: 'transportSn', width: 190 },
|
||||||
{ title: '收支类型', index: 'incomeTypeLabel', className: 'text-center' },
|
{ title: '收支类型', index: 'incomeTypeLabel', className: 'text-center', width: 150 },
|
||||||
{
|
{
|
||||||
title: '交易金额',
|
title: '交易金额',
|
||||||
index: 'amount',
|
index: 'amount',
|
||||||
@ -185,9 +187,9 @@ export class DriverAccountDetailComponent implements OnInit {
|
|||||||
className: 'text-right',
|
className: 'text-right',
|
||||||
widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.accountBalance }) }
|
widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.accountBalance }) }
|
||||||
},
|
},
|
||||||
{ title: '付款方', index: 'payName'},
|
{ title: '付款方', index: 'payName', width: 150},
|
||||||
{ title: '收款方', index: 'payeeName' },
|
{ title: '收款方', index: 'incomeName', width: 150 },
|
||||||
{ title: '备注', index: 'tradeContent' },
|
{ title: '备注', index: 'tradeContent' , width: 150},
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
<nz-card>
|
<nz-card>
|
||||||
<nz-row [nzGutter]="16">
|
<nz-row [nzGutter]="16">
|
||||||
<nz-col [nzXl]="9" [nzLg]="8" [nzSm]="12">
|
<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">
|
[nzTitle]="params.tenantName" [nzValueStyle]="{'font-size':'16px','font-weight':'bold'}" class="bold">
|
||||||
</nz-statistic>
|
</nz-statistic>
|
||||||
</nz-col>
|
</nz-col>
|
||||||
|
|||||||
@ -134,7 +134,7 @@ export class FreightAccountDetailComponent implements OnInit {
|
|||||||
},
|
},
|
||||||
businessNumber: {
|
businessNumber: {
|
||||||
type: 'string',
|
type: 'string',
|
||||||
title: '关联单号',
|
title: '交易单号',
|
||||||
ui: {
|
ui: {
|
||||||
placeholder: '请输入'
|
placeholder: '请输入'
|
||||||
}
|
}
|
||||||
@ -178,7 +178,7 @@ export class FreightAccountDetailComponent implements OnInit {
|
|||||||
default: ''
|
default: ''
|
||||||
},
|
},
|
||||||
projectId: {
|
projectId: {
|
||||||
title: '项目',
|
title: '所属项目',
|
||||||
type: 'string',
|
type: 'string',
|
||||||
default: '',
|
default: '',
|
||||||
ui: {
|
ui: {
|
||||||
@ -221,7 +221,7 @@ export class FreightAccountDetailComponent implements OnInit {
|
|||||||
widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.accountBalance }) }
|
widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.accountBalance }) }
|
||||||
},
|
},
|
||||||
{ title: '付款方', index: 'payName' , width: 170},
|
{ title: '付款方', index: 'payName' , width: 170},
|
||||||
{ title: '收款方', index: 'payeeName', width: 170 },
|
{ title: '收款方', index: 'incomeName', width: 170 },
|
||||||
{ title: '备注', index: 'tradeContent', 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>
|
<ng-template #logo>
|
||||||
<button nz-button nz-tooltip nzTooltipTitle="返回上一页" (click)="goBack()">
|
<button nz-button nz-tooltip nzTooltipTitle="返回上一页" (click)="goBack()">
|
||||||
<i nz-icon nzType="left" nzTheme="outline"></i>
|
<i nz-icon nzType="left" nzTheme="outline"></i>
|
||||||
@ -7,7 +7,7 @@
|
|||||||
</page-header-wrapper>
|
</page-header-wrapper>
|
||||||
|
|
||||||
<nz-card>
|
<nz-card>
|
||||||
<h3 class="font-weight-bold">天津怡亚通物流科技有限公司(浦发银行)</h3>
|
<h3 class="font-weight-bold">{{params?.ltdName}}</h3>
|
||||||
<nz-row [nzGutter]="16">
|
<nz-row [nzGutter]="16">
|
||||||
<nz-col [nzXl]="4" [nzLg]="8" [nzSm]="12">
|
<nz-col [nzXl]="4" [nzLg]="8" [nzSm]="12">
|
||||||
<nz-statistic [nzValue]="((info.availableBalance |currency:' ') || 0)+'元'" nzTitle="平台账户余额"
|
<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 }) }
|
widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.accountBalance }) }
|
||||||
},
|
},
|
||||||
{ title: '付款方', index: 'payName', className: 'text-center', width: 150 },
|
{ 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 }
|
{ title: '备注', index: 'tradeContent', className: 'text-center', width: 150 }
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@ -187,7 +187,7 @@ export class PlatformAccountComponent implements OnInit {
|
|||||||
text: '查看明细',
|
text: '查看明细',
|
||||||
click: item =>
|
click: item =>
|
||||||
this.router.navigate(['/financial-management/platform-account/detail/' + item.id], {
|
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-row nzGutter="8">
|
||||||
<div nz-col [nzXl]="_$expand ? 24 : 18" [nzLg]="24" [nzSm]="24" [nzXs]="24">
|
<div nz-col [nzXl]="_$expand ? 24 : 18" [nzLg]="24" [nzSm]="24" [nzXs]="24">
|
||||||
<sf #sf [schema]="searchSchema"
|
<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>
|
[button]="'none'"></sf>
|
||||||
</div>
|
</div>
|
||||||
<div nz-col [nzXl]="_$expand ? 24 : 6" [nzLg]="24" [nzSm]="24" [nzXs]="24" [class.expend-options]="_$expand"
|
<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 }}
|
{{ item.transferBankOpenName }} <br> {{ item.transferBankCardNumber }}
|
||||||
</ng-template>
|
</ng-template>
|
||||||
</st>
|
</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 { Component, OnInit, ViewChild } from '@angular/core';
|
||||||
import { STComponent, STColumn, STChange, STRequestOptions } from '@delon/abc/st';
|
import { STComponent, STColumn, STChange, STRequestOptions } from '@delon/abc/st';
|
||||||
import { SFComponent, SFSchema, SFDateWidgetSchema } from '@delon/form';
|
import { SFComponent, SFSchema, SFDateWidgetSchema } from '@delon/form';
|
||||||
|
import { NzModalService } from 'ng-zorro-antd/modal';
|
||||||
import { FreightAccountService } from '../../services/freight-account.service';
|
import { FreightAccountService } from '../../services/freight-account.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
@ -16,8 +17,12 @@ export class RechargeRecordComponent implements OnInit {
|
|||||||
columns: STColumn[] = this.initST();
|
columns: STColumn[] = this.initST();
|
||||||
searchSchema: SFSchema = this.initSF();
|
searchSchema: SFSchema = this.initSF();
|
||||||
|
|
||||||
|
@ViewChild('remarkodal', { static: true })
|
||||||
|
remarkodal!: any;
|
||||||
|
rechargeRemark = '';
|
||||||
|
|
||||||
_$expand = false;
|
_$expand = false;
|
||||||
constructor(public service: FreightAccountService) {}
|
constructor(public service: FreightAccountService, private modal: NzModalService) {}
|
||||||
|
|
||||||
ngOnInit(): void {}
|
ngOnInit(): void {}
|
||||||
|
|
||||||
@ -28,6 +33,24 @@ export class RechargeRecordComponent implements OnInit {
|
|||||||
return requestOptions;
|
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() {
|
goBack() {
|
||||||
history.go(-1);
|
history.go(-1);
|
||||||
}
|
}
|
||||||
@ -110,7 +133,7 @@ export class RechargeRecordComponent implements OnInit {
|
|||||||
{ label: '全部', value: '' },
|
{ label: '全部', value: '' },
|
||||||
{ label: '货主账户', value: '1' },
|
{ label: '货主账户', value: '1' },
|
||||||
{ label: '司机账户', value: '2' },
|
{ label: '司机账户', value: '2' },
|
||||||
{ label: '营商账户', value: '3' }
|
{ label: '营商商账户', value: '3' }
|
||||||
],
|
],
|
||||||
ui: {
|
ui: {
|
||||||
widget: 'select',
|
widget: 'select',
|
||||||
@ -178,12 +201,13 @@ export class RechargeRecordComponent implements OnInit {
|
|||||||
{ title: '银行流水号', index: 'paySerialNumber', width: 120 },
|
{ title: '银行流水号', index: 'paySerialNumber', width: 120 },
|
||||||
{
|
{
|
||||||
title: '操作',
|
title: '操作',
|
||||||
width: 100,
|
width: 120,
|
||||||
fixed: 'right',
|
fixed: 'right',
|
||||||
className: 'text-center',
|
className: 'text-center',
|
||||||
buttons: [
|
buttons: [
|
||||||
|
{ type: 'divider' },
|
||||||
{
|
{
|
||||||
text: '查看回单',
|
text: '查看回单<br>',
|
||||||
click: item =>
|
click: item =>
|
||||||
this.service.getReceiptUrl(item.receiptUrl, {
|
this.service.getReceiptUrl(item.receiptUrl, {
|
||||||
bankType: item.bankType,
|
bankType: item.bankType,
|
||||||
@ -193,6 +217,10 @@ export class RechargeRecordComponent implements OnInit {
|
|||||||
ltdId: item.ltdId,
|
ltdId: item.ltdId,
|
||||||
accountType: item.accountType
|
accountType: item.accountType
|
||||||
})
|
})
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: '添加备注',
|
||||||
|
click: item => this.addRemark(item)
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@ -138,9 +138,9 @@ export class TransactionFlowComponent {
|
|||||||
title: '账户类型',
|
title: '账户类型',
|
||||||
enum: [
|
enum: [
|
||||||
{ label: '全部', value: '' },
|
{ label: '全部', value: '' },
|
||||||
{ label: '货主端', value: '1' },
|
{ label: '货主账户', value: '1' },
|
||||||
{ label: '司机端', value: '2' },
|
{ label: '司机账户', value: '2' },
|
||||||
{ label: '司机端', value: '3' }
|
{ label: '运营商账户', value: '3' }
|
||||||
],
|
],
|
||||||
ui: {
|
ui: {
|
||||||
widget: 'select',
|
widget: 'select',
|
||||||
|
|||||||
@ -59,7 +59,7 @@
|
|||||||
<strong class="text-red">{{ selectedRows.length }}</strong> 条数据 累计提现 <strong
|
<strong class="text-red">{{ selectedRows.length }}</strong> 条数据 累计提现 <strong
|
||||||
class="text-red">{{
|
class="text-red">{{
|
||||||
totalCallNo }}</strong>
|
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>
|
</div>
|
||||||
<button nz-button (click)="this.auditAction(null)">审核</button>
|
<button nz-button (click)="this.auditAction(null)">审核</button>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
* @Author : Shiming
|
* @Author : Shiming
|
||||||
* @Date : 2021-12-24 16:58:02
|
* @Date : 2021-12-24 16:58:02
|
||||||
* @LastEditors : Shiming
|
* @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
|
* @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.
|
* Copyright (C) 2022 huzhenhong. All rights reserved.
|
||||||
-->
|
-->
|
||||||
@ -33,8 +33,8 @@
|
|||||||
<sv label="货主">{{ i?.goodsResource?.shipperAppUserName }} </sv>
|
<sv label="货主">{{ i?.goodsResource?.shipperAppUserName }} </sv>
|
||||||
<sv label="所属项目">{{i?.goodsResource?.enterpriseProjectName}}</sv>
|
<sv label="所属项目">{{i?.goodsResource?.enterpriseProjectName}}</sv>
|
||||||
<sv label="服务类型">{{i?.goodsResource?.serviceTypeLabel}}</sv>
|
<sv label="服务类型">{{i?.goodsResource?.serviceTypeLabel}}</sv>
|
||||||
<sv label="录单员">{{i?.createUserName}} /{{i?.createUserPhone}} </sv>
|
<sv label="录单员">{{i?.createUserName}} {{ i?.createUserPhone ? "/" + i?.createUserPhone : ''}} </sv>
|
||||||
<sv label="调度员">{{i?.goodsResource?.dispatchName}}/{{i?.goodsResource?.dispatchPhone}} </sv>
|
<sv label="调度员">{{i?.goodsResource?.dispatchName}}{{ i?.goodsResource?.dispatchPhone ? "/" + i?.goodsResource?.dispatchPhone : ''}} </sv>
|
||||||
</div>
|
</div>
|
||||||
<nz-tabset style="margin-top: 15px;">
|
<nz-tabset style="margin-top: 15px;">
|
||||||
<nz-tab nzTitle="装卸货信息" (nzClick)="goDistance(distannce1)">
|
<nz-tab nzTitle="装卸货信息" (nzClick)="goDistance(distannce1)">
|
||||||
@ -236,10 +236,10 @@
|
|||||||
</ng-template>
|
</ng-template>
|
||||||
|
|
||||||
<ng-template sf-template="carmand" let-item let-ui="ui">
|
<ng-template sf-template="carmand" let-item let-ui="ui">
|
||||||
{{ i?.carModel }}/{{ i?.carLength }}
|
{{ i?.carModel }}{{ i?.carLength ? "/" + i?.carLength : ''}}
|
||||||
</ng-template>
|
</ng-template>
|
||||||
<ng-template sf-template="drivers" let-item let-ui="ui">
|
<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>
|
||||||
<ng-template sf-template="weightModel" let-item let-ui="ui">
|
<ng-template sf-template="weightModel" let-item let-ui="ui">
|
||||||
{{ i?.driverCarModelLabel }},{{ i?.driverCarLengthLabel }}米,{{ i?.driverCarWeight }}吨
|
{{ i?.driverCarModelLabel }},{{ i?.driverCarLengthLabel }}米,{{ i?.driverCarWeight }}吨
|
||||||
@ -275,7 +275,7 @@
|
|||||||
附加费{{ i?.totalSurcharge | currency }},附加费率{{ (i?.totalRate * 100).toFixed(2)}}%)
|
附加费{{ i?.totalSurcharge | currency }},附加费率{{ (i?.totalRate * 100).toFixed(2)}}%)
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div>收款人:{{ i?.payeeName }}/{{ i?.payeePhone }}</div>
|
<div>车队长:{{ i?.payeeName }}{{ i?.payeePhone ? "/" + i?.payeePhone : ''}}</div>
|
||||||
</nz-card>
|
</nz-card>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -532,7 +532,7 @@ export class OrderManagementBulkDetailChangeComponent implements OnInit {
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
// 运费信息
|
// 运费信息
|
||||||
// 收款人
|
// 车队长
|
||||||
payeeId: this.dirverPhone,
|
payeeId: this.dirverPhone,
|
||||||
dirverBankCard: this.dirverBankCard, // 银行卡
|
dirverBankCard: this.dirverBankCard, // 银行卡
|
||||||
// 发车时间
|
// 发车时间
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
* @Author : Shiming
|
* @Author : Shiming
|
||||||
* @Date : 2021-12-06 20:20:26
|
* @Date : 2021-12-06 20:20:26
|
||||||
* @LastEditors : Shiming
|
* @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
|
* @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\bulk-detail\\bulk-detail.component.html
|
||||||
* Copyright (C) 2022 huzhenhong. All rights reserved.
|
* Copyright (C) 2022 huzhenhong. All rights reserved.
|
||||||
-->
|
-->
|
||||||
@ -43,8 +43,8 @@
|
|||||||
<sv label="货主">{{ i?.goodsResource?.shipperAppUserName }} </sv>
|
<sv label="货主">{{ i?.goodsResource?.shipperAppUserName }} </sv>
|
||||||
<sv label="所属项目">{{ i?.goodsResource?.enterpriseProjectName }}</sv>
|
<sv label="所属项目">{{ i?.goodsResource?.enterpriseProjectName }}</sv>
|
||||||
<sv label="服务类型">{{ i?.goodsResource?.serviceTypeLabel }}</sv>
|
<sv label="服务类型">{{ i?.goodsResource?.serviceTypeLabel }}</sv>
|
||||||
<sv label="录单员">{{ i?.createUserName }} /{{ i?.createUserPhone }} </sv>
|
<sv label="录单员">{{ i?.createUserName }} {{ i?.createUserPhone ? "/" + i?.createUserPhone : ''}} </sv>
|
||||||
<sv label="调度员">{{ i?.goodsResource?.dispatchName }}/{{ i?.goodsResource?.dispatchPhone }} </sv>
|
<sv label="调度员">{{ i?.goodsResource?.dispatchName }}{{ i?.goodsResource?.dispatchPhone ? "/" + i?.goodsResource?.dispatchPhone : ''}} </sv>
|
||||||
<sv label="货源编号">{{ i?.goodsResource?.resourceCode }} </sv>
|
<sv label="货源编号">{{ i?.goodsResource?.resourceCode }} </sv>
|
||||||
<sv label="运单号">{{ i?.wayBill?.wayBillCode }}</sv>
|
<sv label="运单号">{{ i?.wayBill?.wayBillCode }}</sv>
|
||||||
<sv label="承诺付款天数">{{ i?.goodsResource?.paymentDays }}</sv>
|
<sv label="承诺付款天数">{{ i?.goodsResource?.paymentDays }}</sv>
|
||||||
@ -83,8 +83,8 @@
|
|||||||
</sv-container>
|
</sv-container>
|
||||||
<sv-container col="2">
|
<sv-container col="2">
|
||||||
<sv label="货物数量"> {{i?.goodsInfoList?.[0]?.weight}}吨,{{i?.goodsInfoList?.[0]?.volume}}方,{{i?.goodsInfoList?.[0]?.number}}件 </sv>
|
<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?.carModel }}{{ i?.carLength ? "/" + i?.carLength : ''}} </sv>
|
||||||
<sv label="承运司机"> {{ i?.driverName }}/{{ i?.driverPhone }}{{ i?.carNo }} </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?.driverCarModelLabel }},{{ i?.driverCarLengthLabel }}米,{{ i?.driverCarWeight }}吨 </sv>
|
||||||
<!-- <sv label="计划装货时间">
|
<!-- <sv label="计划装货时间">
|
||||||
{{ i?.loadPlanTime }}
|
{{ i?.loadPlanTime }}
|
||||||
@ -114,7 +114,7 @@
|
|||||||
<div class="handling-info-icon loading-bg">装</div>
|
<div class="handling-info-icon loading-bg">装</div>
|
||||||
<div class="info">
|
<div class="info">
|
||||||
<h4>装货地:{{ item?.province }}{{ item.city }}{{ item.area }}{{ item.detailedAddress }}</h4>
|
<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>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -127,7 +127,7 @@
|
|||||||
<div class="handling-info-icon unloaing-bg">卸</div>
|
<div class="handling-info-icon unloaing-bg">卸</div>
|
||||||
<div class="info">
|
<div class="info">
|
||||||
<h4>卸货地:{{ item?.province }}{{ item.city }}{{ item.area }}{{ item.detailedAddress }}</h4>
|
<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>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -156,7 +156,7 @@
|
|||||||
附加费{{ i?.totalSurcharge | currency }},附加费率{{ (i?.totalRate * 100).toFixed(2)}}%)
|
附加费{{ i?.totalSurcharge | currency }},附加费率{{ (i?.totalRate * 100).toFixed(2)}}%)
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div>收款人:{{ i?.payeeName }}/{{ i?.payeePhone }}</div>
|
<div>车队长:{{ i?.payeeName }}{{ i?.payeePhone ? "/" + i?.payeePhone : ''}}</div>
|
||||||
</nz-card>
|
</nz-card>
|
||||||
|
|
||||||
<nz-card nzTitle="附件信息" #distannce4>
|
<nz-card nzTitle="附件信息" #distannce4>
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
* @Author : Shiming
|
* @Author : Shiming
|
||||||
* @Date : 2022-01-12 10:52:50
|
* @Date : 2022-01-12 10:52:50
|
||||||
* @LastEditors : Shiming
|
* @LastEditors : Shiming
|
||||||
* @LastEditTime : 2022-03-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
|
* @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\bulk\\bulk.component.html
|
||||||
* Copyright (C) 2022 huzhenhong. All rights reserved.
|
* Copyright (C) 2022 huzhenhong. All rights reserved.
|
||||||
-->
|
-->
|
||||||
@ -76,13 +76,13 @@
|
|||||||
<div *ngIf="item?.unloadTime">卸 | {{ item?.unloadTime }}</div>
|
<div *ngIf="item?.unloadTime">卸 | {{ item?.unloadTime }}</div>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
<ng-template st-row="driverName" let-item let-index="index">
|
<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>
|
||||||
<ng-template st-row="payeeName" let-item let-index="index">
|
<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>
|
||||||
<ng-template st-row="createUserName" let-item let-index="index">
|
<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>
|
||||||
<ng-template st-row="billCode" let-item let-index="index">
|
<ng-template st-row="billCode" let-item let-index="index">
|
||||||
<a [routerLink]="'bulk-detail/' + item.id">{{ item.billCode }}</a>
|
<a [routerLink]="'bulk-detail/' + item.id">{{ item.billCode }}</a>
|
||||||
|
|||||||
@ -506,7 +506,7 @@ export class OrderManagementBulkComponent implements OnInit {
|
|||||||
render: 'driverName'
|
render: 'driverName'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '收款人',
|
title: '车队长',
|
||||||
className: 'text-left',
|
className: 'text-left',
|
||||||
width: '180px',
|
width: '180px',
|
||||||
index: 'payeeName',
|
index: 'payeeName',
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
* @Author : Shiming
|
* @Author : Shiming
|
||||||
* @Date : 2022-01-12 10:52:50
|
* @Date : 2022-01-12 10:52:50
|
||||||
* @LastEditors : Shiming
|
* @LastEditors : Shiming
|
||||||
* @LastEditTime : 2022-03-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
|
* @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\compliance-audit\\compliance-audit.component.html
|
||||||
* Copyright (C) 2022 huzhenhong. All rights reserved.
|
* Copyright (C) 2022 huzhenhong. All rights reserved.
|
||||||
-->
|
-->
|
||||||
@ -81,10 +81,10 @@
|
|||||||
<div *ngIf="item?.unloadingTime">卸 | {{ item?.unloadingTime }}</div>
|
<div *ngIf="item?.unloadingTime">卸 | {{ item?.unloadingTime }}</div>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
<ng-template st-row="driverName" let-item let-index="index">
|
<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>
|
||||||
<ng-template st-row="payeeName" let-item let-index="index">
|
<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>
|
||||||
<ng-template st-row="billCode" let-item let-index="index">
|
<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>
|
<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'
|
render: 'driverName'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '收款人',
|
title: '车队长',
|
||||||
className: 'text-left',
|
className: 'text-left',
|
||||||
width: '180px',
|
width: '180px',
|
||||||
index: 'payeeName',
|
index: 'payeeName',
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
* @Author : Shiming
|
* @Author : Shiming
|
||||||
* @Date : 2022-01-12 10:52:50
|
* @Date : 2022-01-12 10:52:50
|
||||||
* @LastEditors : Shiming
|
* @LastEditors : Shiming
|
||||||
* @LastEditTime : 2022-03-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
|
* @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\receipts-audit\\receipts-audit.component.html
|
||||||
* Copyright (C) 2022 huzhenhong. All rights reserved.
|
* Copyright (C) 2022 huzhenhong. All rights reserved.
|
||||||
-->
|
-->
|
||||||
@ -92,10 +92,10 @@
|
|||||||
<div *ngIf="item?.unloadingTime">卸 | {{ item?.unloadingTime }}</div>
|
<div *ngIf="item?.unloadingTime">卸 | {{ item?.unloadingTime }}</div>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
<ng-template st-row="driverName" let-item let-index="index">
|
<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>
|
||||||
<ng-template st-row="payeeName" let-item let-index="index">
|
<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>
|
||||||
<ng-template st-row="billCode" let-item let-index="index">
|
<ng-template st-row="billCode" let-item let-index="index">
|
||||||
<!-- <div>{{ item.billCode }}</div> -->
|
<!-- <div>{{ item.billCode }}</div> -->
|
||||||
|
|||||||
@ -364,7 +364,7 @@ export class OrderManagementReceiptsAuditComponent implements OnInit {
|
|||||||
render: 'driverName'
|
render: 'driverName'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '收款人',
|
title: '车队长',
|
||||||
className: 'text-left',
|
className: 'text-left',
|
||||||
width: '180px',
|
width: '180px',
|
||||||
index: 'payeeName',
|
index: 'payeeName',
|
||||||
@ -397,25 +397,25 @@ export class OrderManagementReceiptsAuditComponent implements OnInit {
|
|||||||
{
|
{
|
||||||
text: '生成电子单据',
|
text: '生成电子单据',
|
||||||
click: _record => this.generate(_record, 2),
|
click: _record => this.generate(_record, 2),
|
||||||
iif: item => item.auditStatus == '1',
|
iif: item => !item?.loadingElectronicsLadingBillFilePath,
|
||||||
acl: { ability: ['ORDER-RECEIPTS-electronicBillingOne'] },
|
acl: { ability: ['ORDER-RECEIPTS-electronicBillingOne'] },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: '通过',
|
text: '通过',
|
||||||
click: _record => this.sign(_record),
|
click: _record => this.sign(_record),
|
||||||
iif: item => item.auditStatus == '1',
|
iif: item => !item?.loadingElectronicsLadingBillFilePath,
|
||||||
acl: { ability: ['ORDER-RECEIPTS-billAuditPassBatch'] },
|
acl: { ability: ['ORDER-RECEIPTS-billAuditPassBatch'] },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: '修改',
|
text: '修改',
|
||||||
click: _record => this.modification(_record),
|
click: _record => this.modification(_record),
|
||||||
iif: item => item.auditStatus == '1',
|
iif: item => !item?.loadingElectronicsLadingBillFilePath,
|
||||||
acl: { ability: ['ORDER-RECEIPTS-updateBillExamine'] },
|
acl: { ability: ['ORDER-RECEIPTS-updateBillExamine'] },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: '查看凭证',
|
text: '查看凭证',
|
||||||
click: _record => this.generate(_record, 3),
|
click: _record => this.generate(_record, 3),
|
||||||
iif: item => item.auditStatus == '2',
|
iif: item => item?.loadingElectronicsLadingBillFilePath,
|
||||||
acl: { ability: ['ORDER-RECEIPTS-view'] },
|
acl: { ability: ['ORDER-RECEIPTS-view'] },
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
@ -491,8 +491,10 @@ export class OrderManagementReceiptsAuditComponent implements OnInit {
|
|||||||
nzFooter: null
|
nzFooter: null
|
||||||
});
|
});
|
||||||
modalRef.afterClose.subscribe((result: any) => {
|
modalRef.afterClose.subscribe((result: any) => {
|
||||||
this.st.load(1);
|
if(result) {
|
||||||
this.getGoodsSourceStatistical()
|
this.st.load();
|
||||||
|
this.getGoodsSourceStatistical()
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
// 通过
|
// 通过
|
||||||
@ -544,23 +546,14 @@ export class OrderManagementReceiptsAuditComponent implements OnInit {
|
|||||||
nzTitle: `<b>已选择${this.selectedRows.length}条订单,确认批量生成电子单据吗?</b>`,
|
nzTitle: `<b>已选择${this.selectedRows.length}条订单,确认批量生成电子单据吗?</b>`,
|
||||||
nzContent: `<b>确认后单据不可修改,请谨慎操作。</b>`,
|
nzContent: `<b>确认后单据不可修改,请谨慎操作。</b>`,
|
||||||
nzOnOk: () =>
|
nzOnOk: () =>
|
||||||
// this.service.request(this.service.$api_get_cancelAnOrder, { ids: params }).subscribe(res => {
|
{
|
||||||
// if (res === true) {
|
this.service.downloadFile(this.service.$api_createBillTakeGoods,params)
|
||||||
// this.service.msgSrv.success('操作成功!');
|
this.service.downloadFile(this.service.$api_createBillDischargeGoods,params)
|
||||||
// this.st?.reload(1);
|
this.service.msgSrv.success('生成成功!');
|
||||||
// this.getGoodsSourceStatistical();
|
this.st?.reload()
|
||||||
// this.initST();
|
|
||||||
// }
|
|
||||||
// this.st?.reload(1);
|
|
||||||
// this.getGoodsSourceStatistical();
|
// 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) {
|
getRegionCode(regionCode: any) {
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
* @Author : Shiming
|
* @Author : Shiming
|
||||||
* @Date : 2022-01-12 10:52:50
|
* @Date : 2022-01-12 10:52:50
|
||||||
* @LastEditors : Shiming
|
* @LastEditors : Shiming
|
||||||
* @LastEditTime : 2022-03-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
|
* @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\risk\\risk.component.html
|
||||||
* Copyright (C) 2022 huzhenhong. All rights reserved.
|
* Copyright (C) 2022 huzhenhong. All rights reserved.
|
||||||
-->
|
-->
|
||||||
@ -33,7 +33,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div nz-col [nzSpan]="_$expand ? 24 : 6" class="text-right">
|
<div nz-col [nzSpan]="_$expand ? 24 : 6" class="text-right">
|
||||||
<button nz-button nzType="primary" [nzLoading]="false" (click)="search()" acl [acl-ability]="['ORDER-RISK-search']">查询</button>
|
<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 [disabled]="false" (click)="resetSF()">重置</button>
|
||||||
<button nz-button nzType="link" (click)="expandToggle()">
|
<button nz-button nzType="link" (click)="expandToggle()">
|
||||||
{{ !_$expand ? '展开' : '收起' }}
|
{{ !_$expand ? '展开' : '收起' }}
|
||||||
@ -84,10 +84,10 @@
|
|||||||
</div>
|
</div>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
<ng-template st-row="driverName" let-item let-index="index">
|
<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>
|
||||||
<ng-template st-row="payeeName" let-item let-index="index">
|
<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>
|
||||||
<ng-template st-row="freightDetails" let-item let-index="index">
|
<ng-template st-row="freightDetails" let-item let-index="index">
|
||||||
<div *ngIf="item.freightDetails.length > 0">
|
<div *ngIf="item.freightDetails.length > 0">
|
||||||
@ -97,8 +97,8 @@
|
|||||||
<ng-template st-row="goodsInfoVOList" let-item let-index="index">
|
<ng-template st-row="goodsInfoVOList" let-item let-index="index">
|
||||||
<div *ngFor="let i of item?.goodsInfoVOList">
|
<div *ngFor="let i of item?.goodsInfoVOList">
|
||||||
<p>货物名称:{{ i?.goodsName }}</p>
|
<p>货物名称:{{ i?.goodsName }}</p>
|
||||||
<p>重量/体积:{{ i?.weight }}吨/{{ i?.volume }}方</p>
|
<p>重量/体积:{{ i?.weight ? i?.weight + '吨' : '' }}{{ i?.volume ? "/" + i?.volume + '方' : ''}}</p>
|
||||||
<p>车型/车长:{{ i?.carModelLabel }}/ {{ i?.carLengthLabel }}</p>
|
<p>车型/车长:{{ i?.carModelLabel }} {{ i?.carLengthLabel ? "/" + i?.carLengthLabel : ''}}</p>
|
||||||
</div>
|
</div>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
</st>
|
</st>
|
||||||
|
|||||||
@ -182,7 +182,7 @@ export class OrderManagementRiskComponent implements OnInit {
|
|||||||
},
|
},
|
||||||
payeeName: {
|
payeeName: {
|
||||||
type: 'string',
|
type: 'string',
|
||||||
title: '收款人',
|
title: '车队长',
|
||||||
ui: {
|
ui: {
|
||||||
visibleIf: {
|
visibleIf: {
|
||||||
_$expand: (value: boolean) => value
|
_$expand: (value: boolean) => value
|
||||||
@ -314,7 +314,7 @@ export class OrderManagementRiskComponent implements OnInit {
|
|||||||
render: 'driverName'
|
render: 'driverName'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '收款人',
|
title: '车队长',
|
||||||
className: 'text-left',
|
className: 'text-left',
|
||||||
width: '200px',
|
width: '200px',
|
||||||
render: 'payeeName'
|
render: 'payeeName'
|
||||||
@ -532,4 +532,12 @@ export class OrderManagementRiskComponent implements OnInit {
|
|||||||
viewEvaluate(item: any) {
|
viewEvaluate(item: any) {
|
||||||
this.router.navigate(['/order-management/risk-detail', item.id]);
|
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
|
* @Author : Shiming
|
||||||
* @Date : 2021-12-23 13:39:58
|
* @Date : 2021-12-23 13:39:58
|
||||||
* @LastEditors : Shiming
|
* @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
|
* @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.
|
* Copyright (C) 2022 huzhenhong. All rights reserved.
|
||||||
-->
|
-->
|
||||||
@ -32,8 +32,10 @@
|
|||||||
<sv label="货主">{{ i?.goodsResource?.shipperAppUserName }} </sv>
|
<sv label="货主">{{ i?.goodsResource?.shipperAppUserName }} </sv>
|
||||||
<sv label="所属项目">{{ i?.goodsResource?.enterpriseProjectName }}</sv>
|
<sv label="所属项目">{{ i?.goodsResource?.enterpriseProjectName }}</sv>
|
||||||
<sv label="服务类型">{{ i?.goodsResource?.serviceTypeLabel }}</sv>
|
<sv label="服务类型">{{ i?.goodsResource?.serviceTypeLabel }}</sv>
|
||||||
<sv label="录单员">{{ i?.createUserName || i?.goodsResource?.createUserName }} /{{ i?.createUserPhone || i?.goodsResource?.createUserPhone }} </sv>
|
<sv label="录单员">{{ i?.createUserName }} {{ i?.createUserPhone ? '/' + i?.createUserPhone : '' }} </sv>
|
||||||
<sv label="调度员">{{ i?.goodsResource?.dispatchName }}/{{ i?.goodsResource?.dispatchPhone }} </sv>
|
<sv label="调度员"
|
||||||
|
>{{ i?.goodsResource?.dispatchName }}{{ i?.goodsResource?.dispatchPhone ? '/' + i?.goodsResource?.dispatchPhone : '' }}
|
||||||
|
</sv>
|
||||||
<sv label="外部订单号">{{ i?.externalBillCode }}</sv>
|
<sv label="外部订单号">{{ i?.externalBillCode }}</sv>
|
||||||
<sv label="货源编号">{{ i?.goodsResource?.resourceCode }} </sv>
|
<sv label="货源编号">{{ i?.goodsResource?.resourceCode }} </sv>
|
||||||
<sv label="运单号">{{ i?.wayBillId }}</sv>
|
<sv label="运单号">{{ i?.wayBillId }}</sv>
|
||||||
@ -216,10 +218,10 @@
|
|||||||
</ng-template>
|
</ng-template>
|
||||||
|
|
||||||
<ng-template sf-template="carmand" let-item let-ui="ui">
|
<ng-template sf-template="carmand" let-item let-ui="ui">
|
||||||
{{ i?.carModel }}/{{ i?.carLength }}
|
{{ i?.carModel }}{{ i?.carLength ? '/' + i?.carLength : '' }}
|
||||||
</ng-template>
|
</ng-template>
|
||||||
<ng-template sf-template="drivers" let-item let-ui="ui">
|
<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>
|
||||||
|
|
||||||
<ng-template sf-template="weightModel" let-item let-ui="ui">
|
<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 }},
|
总计:<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>
|
||||||
<div>收款人:{{ i?.payeeName }}/{{ i?.payeePhone }}</div>
|
<div>车队长:{{ i?.payeeName }}{{ i?.payeePhone ? "/" + i?.payeePhone : ''}}</div>
|
||||||
</nz-card>
|
</nz-card>
|
||||||
|
|
||||||
<nz-card nzTitle="附件信息" #distannce4>
|
<nz-card nzTitle="附件信息" #distannce4>
|
||||||
|
|||||||
@ -520,7 +520,7 @@ export class OrderManagementVehicleDetailChangeComponent implements OnInit {
|
|||||||
],
|
],
|
||||||
// 运费信息
|
// 运费信息
|
||||||
billExpenseDetailDTOList: this.st._data,
|
billExpenseDetailDTOList: this.st._data,
|
||||||
// 收款人
|
// 车队长
|
||||||
payeeId: this.dirverPhone,
|
payeeId: this.dirverPhone,
|
||||||
dirverBankCard: this.dirverBankCard, // 银行卡
|
dirverBankCard: this.dirverBankCard, // 银行卡
|
||||||
// 发车时间
|
// 发车时间
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
* @Author : Shiming
|
* @Author : Shiming
|
||||||
* @Date : 2021-12-28 14:42:03
|
* @Date : 2021-12-28 14:42:03
|
||||||
* @LastEditors : Shiming
|
* @LastEditors : Shiming
|
||||||
* @LastEditTime : 2022-03-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
|
* @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\vehicle-detail\\vehicle-detail.component.html
|
||||||
* Copyright (C) 2022 huzhenhong. All rights reserved.
|
* Copyright (C) 2022 huzhenhong. All rights reserved.
|
||||||
-->
|
-->
|
||||||
@ -15,24 +15,26 @@
|
|||||||
</button>
|
</button>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
<ng-template #headerContent>
|
<ng-template #headerContent>
|
||||||
<div nz-row>
|
<div nz-row>
|
||||||
<button nz-button nzType="primary" nzSize="small" nzDanger>{{ i?.billStatusLabel }}</button>
|
<button nz-button nzType="primary" nzSize="small" nzDanger>{{ i?.billStatusLabel }}</button>
|
||||||
<h4 class="ml-md" style="font-size: 18px">订单号: {{ i?.billCode }}</h4>
|
<h4 class="ml-md" style="font-size: 18px">订单号: {{ i?.billCode }}</h4>
|
||||||
</div>
|
</div>
|
||||||
<div nz-row style="display: flex; justify-content: end" class="mb-xs">
|
<div nz-row style="display: flex; justify-content: end" class="mb-xs">
|
||||||
<div nz-col >
|
<div nz-col>
|
||||||
<button
|
<button
|
||||||
(click)="cancellation()"
|
(click)="cancellation()"
|
||||||
nz-button
|
nz-button
|
||||||
*ngIf="i.billStatus == '4' || i.billStatus == '5' || i.billStatus == '2' || i.billStatus == '3' || i.billStatus == '1'"
|
*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
|
||||||
>
|
>
|
||||||
<button
|
<button
|
||||||
nz-button
|
nz-button
|
||||||
(click)="changeOrder()"
|
(click)="changeOrder()"
|
||||||
*ngIf="i.billStatus == '4' || i.billStatus == '5' || i.billStatus == '2' || i.billStatus == '3'"
|
*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
|
>修改订单</button
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
@ -43,8 +45,10 @@
|
|||||||
<sv label="货主">{{ i?.goodsResource?.shipperAppUserName }} </sv>
|
<sv label="货主">{{ i?.goodsResource?.shipperAppUserName }} </sv>
|
||||||
<sv label="所属项目">{{ i?.goodsResource?.enterpriseProjectName }}</sv>
|
<sv label="所属项目">{{ i?.goodsResource?.enterpriseProjectName }}</sv>
|
||||||
<sv label="服务类型">{{ i?.goodsResource?.serviceTypeLabel }}</sv>
|
<sv label="服务类型">{{ i?.goodsResource?.serviceTypeLabel }}</sv>
|
||||||
<sv label="录单员">{{ i?.createUserName || i?.goodsResource?.createUserName }} /{{ i?.createUserPhone || i?.goodsResource?.createUserPhone }} </sv>
|
<sv label="录单员">{{ i?.createUserName }} {{ i?.createUserPhone ? '/' + i?.createUserPhone : '' }} </sv>
|
||||||
<sv label="调度员">{{ i?.goodsResource?.dispatchName }}/{{ i?.goodsResource?.dispatchPhone }} </sv>
|
<sv label="调度员"
|
||||||
|
>{{ i?.goodsResource?.dispatchName }}{{ i?.goodsResource?.dispatchPhone ? '/' + i?.goodsResource?.dispatchPhone : '' }}
|
||||||
|
</sv>
|
||||||
<sv label="外部订单号">{{ i?.externalBillCode }}</sv>
|
<sv label="外部订单号">{{ i?.externalBillCode }}</sv>
|
||||||
<sv label="货源编号">{{ i?.goodsResource?.resourceCode }} </sv>
|
<sv label="货源编号">{{ i?.goodsResource?.resourceCode }} </sv>
|
||||||
<sv label="运单号">{{ i?.wayBill?.wayBillCode }}</sv>
|
<sv label="运单号">{{ i?.wayBill?.wayBillCode }}</sv>
|
||||||
@ -66,9 +70,13 @@
|
|||||||
<div style="width: 60%; margin: 0 auto">
|
<div style="width: 60%; margin: 0 auto">
|
||||||
|
|
||||||
<nz-steps [nzCurrent]="i?.scheduleVOList?.length + 1" nzLabelPlacement="vertical">
|
<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 : ''"
|
[nzDescription]="item.cancelReason ? '取消原因:' + item.cancelReason : ''"
|
||||||
[nzStatus]="item.displayStatus === 'SHOW' ? 'finish' : 'wait'"></nz-step>
|
[nzStatus]="item.displayStatus === 'SHOW' ? 'finish' : 'wait'"
|
||||||
|
></nz-step>
|
||||||
</nz-steps>
|
</nz-steps>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -86,8 +94,8 @@
|
|||||||
</sv-container>
|
</sv-container>
|
||||||
<sv-container col="2">
|
<sv-container col="2">
|
||||||
<sv label="货物数量"> {{i?.goodsInfoList?.[0]?.weight}}吨,{{i?.goodsInfoList?.[0]?.volume}}方,{{i?.goodsInfoList?.[0]?.number}}件 </sv>
|
<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?.carModel }}{{ i?.carLength ? '/' + i?.carLength : '' }}</sv>
|
||||||
<sv label="承运司机"> {{ i?.driverName }}/{{ i?.driverPhone }}/{{ i?.carNo }} </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?.driverCarModelLabel }},{{ i?.driverCarLengthLabel }}米,{{ i?.driverCarWeight }}吨 </sv>
|
||||||
</sv-container>
|
</sv-container>
|
||||||
<div class="mt-md">
|
<div class="mt-md">
|
||||||
@ -108,7 +116,7 @@
|
|||||||
<div class="handling-info-icon loading-bg">装</div>
|
<div class="handling-info-icon loading-bg">装</div>
|
||||||
<div class="info">
|
<div class="info">
|
||||||
<h4>装货地:{{ item?.province }}{{ item.city }}{{ item.area }}{{ item.detailedAddress }}</h4>
|
<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>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -122,7 +130,7 @@
|
|||||||
<div class="handling-info-icon unloaing-bg">卸</div>
|
<div class="handling-info-icon unloaing-bg">卸</div>
|
||||||
<div class="info">
|
<div class="info">
|
||||||
<h4>卸货地:{{ item?.province }}{{ item.city }}{{ item.area }}{{ item.detailedAddress }}</h4>
|
<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>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -135,25 +143,24 @@
|
|||||||
<nz-card nzTitle="服务信息">
|
<nz-card nzTitle="服务信息">
|
||||||
<sv-container>
|
<sv-container>
|
||||||
<sv label="服务包">
|
<sv label="服务包">
|
||||||
{{i?.goodsResource?.insuranceTypeLabel}}
|
{{ i?.goodsResource?.insuranceTypeLabel }}
|
||||||
</sv>
|
</sv>
|
||||||
<sv label="货物价值">
|
<sv label="货物价值">
|
||||||
{{i?.goodsResource?.goodsValue !==null?(i?.goodsResource?.goodsValue|currency)+'元':'-'}}
|
{{ i?.goodsResource?.goodsValue !== null ? (i?.goodsResource?.goodsValue | currency) + '元' : '-' }}
|
||||||
</sv>
|
</sv>
|
||||||
<sv label="服务包费用">
|
<sv label="服务包费用">
|
||||||
{{i?.goodsResource?.insurancePremium!==null?(i?.goodsResource?.insurancePremium |currency)+'元':'-'}}
|
{{ i?.goodsResource?.insurancePremium !== null ? (i?.goodsResource?.insurancePremium | currency) + '元' : '-' }}
|
||||||
</sv>
|
</sv>
|
||||||
</sv-container>
|
</sv-container>
|
||||||
</nz-card>
|
</nz-card>
|
||||||
|
|
||||||
|
|
||||||
<nz-card nzTitle="运费信息" #distannce3>
|
<nz-card nzTitle="运费信息" #distannce3>
|
||||||
<st #st [data]="billExpenses" [columns]="logColumns" [ps]="0" [page]="{ show: false, showSize: false }">
|
<st #st [data]="billExpenses" [columns]="logColumns" [ps]="0" [page]="{ show: false, showSize: false }">
|
||||||
<ng-template st-row="price" let-item let-index="index">
|
<ng-template st-row="price" let-item let-index="index">
|
||||||
{{ item.price | currency }}
|
{{ item.price | currency }}
|
||||||
</ng-template>
|
</ng-template>
|
||||||
<ng-template st-row="prices" let-item let-index="index">
|
<ng-template st-row="prices" let-item let-index="index">
|
||||||
{{ item.price + item.surcharge | currency }}
|
{{ item.price + item.surcharge | currency }}
|
||||||
</ng-template>
|
</ng-template>
|
||||||
<ng-template st-row="surcharge" let-item let-index="index">
|
<ng-template st-row="surcharge" let-item let-index="index">
|
||||||
{{ item.surcharge | currency }}
|
{{ item.surcharge | currency }}
|
||||||
@ -161,16 +168,16 @@
|
|||||||
</st>
|
</st>
|
||||||
<div>
|
<div>
|
||||||
总计:<span style="color: #da001b; font-size: 18px">{{ i?.totalAmount | currency }}</span> (运费{{ i?.totalFreight | currency }},
|
总计:<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>
|
||||||
<div>收款人:{{ i?.payeeName }}/{{ i?.payeePhone }}</div>
|
<div>车队长:{{ i?.payeeName }}{{ i?.payeePhone ? '/' + i?.payeePhone : '' }}</div>
|
||||||
</nz-card>
|
</nz-card>
|
||||||
|
|
||||||
<nz-card nzTitle="附件信息" #distannce4>
|
<nz-card nzTitle="附件信息" #distannce4>
|
||||||
<sv-container>
|
<sv-container>
|
||||||
<sv label="协议附件">
|
<sv label="协议附件">
|
||||||
<a *ngIf = "i?.contractContent?.contractContent" (click)="agreement('1')">查看附件</a>
|
<a *ngIf="i?.contractContent?.contractContent" (click)="agreement('1')">查看附件</a>
|
||||||
<a *ngIf = "i?.supplementContent?.contractContent" (click)="agreement('2')">补充协议</a>
|
<a *ngIf="i?.supplementContent?.contractContent" (click)="agreement('2')">补充协议</a>
|
||||||
</sv>
|
</sv>
|
||||||
</sv-container>
|
</sv-container>
|
||||||
<sv-container col="2" class="mt-md">
|
<sv-container col="2" class="mt-md">
|
||||||
@ -190,7 +197,9 @@
|
|||||||
<sv label="回单类型" *ngIf="i?.supplementaryInformationVO?.stateReceipt">
|
<sv label="回单类型" *ngIf="i?.supplementaryInformationVO?.stateReceipt">
|
||||||
{{ i?.supplementaryInformationVO?.receiptType === '1' ? '电子回单' : '纸质回单' }}
|
{{ i?.supplementaryInformationVO?.receiptType === '1' ? '电子回单' : '纸质回单' }}
|
||||||
</sv>
|
</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">
|
<sv label="所在地区" *ngIf="i?.supplementaryInformationVO?.stateReceipt">
|
||||||
{{ i?.supplementaryInformationVO?.area }}
|
{{ i?.supplementaryInformationVO?.area }}
|
||||||
</sv>
|
</sv>
|
||||||
@ -213,12 +222,20 @@
|
|||||||
<nz-card nzTitle="轨迹信息" style="width: 100%" [nzExtra]="extraTemplate" #distannce5>
|
<nz-card nzTitle="轨迹信息" style="width: 100%" [nzExtra]="extraTemplate" #distannce5>
|
||||||
<div nz-row>
|
<div nz-row>
|
||||||
<div nz-col [nzSpan]="12">
|
<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>
|
</st>
|
||||||
</div>
|
</div>
|
||||||
<div nz-col [nzSpan]="12">
|
<div nz-col [nzSpan]="12">
|
||||||
<amap-path-simplifier [mapWidth]="'100%'" [mapHeight]="'600px'" [mapList]="mapList" [pois]="pois"></amap-path-simplifier>
|
<amap-path-simplifier [mapWidth]="'100%'" [mapHeight]="'600px'" [mapList]="mapList" [pois]="pois"></amap-path-simplifier>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</nz-card>
|
</nz-card>
|
||||||
<ng-template #extraTemplate>
|
<ng-template #extraTemplate>
|
||||||
@ -230,36 +247,39 @@
|
|||||||
</div>
|
</div>
|
||||||
</nz-card>
|
</nz-card>
|
||||||
<nz-card *ngIf="!route?.snapshot?.queryParams?.sts && abnormalList.length > 0">
|
<nz-card *ngIf="!route?.snapshot?.queryParams?.sts && abnormalList.length > 0">
|
||||||
<nz-tabset >
|
<nz-tabset>
|
||||||
<nz-tab nzTitle="风险异常检测">
|
<nz-tab nzTitle="风险异常检测">
|
||||||
<button nz-button nzType="primary"[disabled]="">申 诉</button>
|
<button nz-button nzType="primary" [disabled]="">申 诉</button>
|
||||||
<div>
|
<div> 您的订单可能存在交易风险,请及时提交申诉材料,提交成功后,平台将及时完成审核并通知您! </div>
|
||||||
您的订单可能存在交易风险,请及时提交申诉材料,提交成功后,平台将及时完成审核并通知您!
|
|
||||||
</div>
|
|
||||||
<div>如果您的运单没有问题,可以提出申诉,并提供相关资料,我们将24小时内审核反馈</div>
|
<div>如果您的运单没有问题,可以提出申诉,并提供相关资料,我们将24小时内审核反馈</div>
|
||||||
<ul *ngFor="let item of abnormalList">
|
<ul *ngFor="let item of abnormalList">
|
||||||
<li>系统识别:{{item?.complianceTypeName}}</li>
|
<li>系统识别:{{ item?.complianceTypeName }}</li>
|
||||||
<li>{{item?.determineDetails}},您可在企业端提交申诉材料或联系客服。</li>
|
<li>{{ item?.determineDetails }},您可在企业端提交申诉材料或联系客服。</li>
|
||||||
<li>2021-11-07 03:20:15</li>
|
<li>2021-11-07 03:20:15</li>
|
||||||
</ul>
|
</ul>
|
||||||
</nz-tab>
|
</nz-tab>
|
||||||
<nz-tab nzTitle="异常预警">
|
<nz-tab nzTitle="异常预警">
|
||||||
<st #st [data]="addressItems" [columns]="logColumns2" [ps]="0" [page]="{ show: false, showSize: false }">
|
<st #st [data]="addressItems" [columns]="logColumns2" [ps]="0" [page]="{ show: false, showSize: false }"> </st>
|
||||||
</st>
|
|
||||||
</nz-tab>
|
</nz-tab>
|
||||||
<nz-tab nzTitle="操作日志">
|
<nz-tab nzTitle="操作日志">
|
||||||
<st #st [data]="addressItems" [columns]="logColumns2" [ps]="0" [page]="{ show: false, showSize: false }">
|
<st #st [data]="addressItems" [columns]="logColumns2" [ps]="0" [page]="{ show: false, showSize: false }"> </st>
|
||||||
</st>
|
|
||||||
</nz-tab>
|
</nz-tab>
|
||||||
</nz-tabset>
|
</nz-tabset>
|
||||||
</nz-card>
|
</nz-card>
|
||||||
<nz-modal [(nzVisible)]="isVisible" nzWidth="1000px" [nzFooter]="nzModalFooter" [nzTitle]="modalTitle" (nzOnOk)="handleOK()" (nzOnCancel)="handleCancel()">
|
<nz-modal
|
||||||
|
[(nzVisible)]="isVisible"
|
||||||
|
nzWidth="1000px"
|
||||||
|
[nzFooter]="nzModalFooter"
|
||||||
|
[nzTitle]="modalTitle"
|
||||||
|
(nzOnOk)="handleOK()"
|
||||||
|
(nzOnCancel)="handleCancel()"
|
||||||
|
>
|
||||||
<ng-container *nzModalContent>
|
<ng-container *nzModalContent>
|
||||||
<div *ngIf="!modalcontent">暂无附件信息</div>
|
<div *ngIf="!modalcontent">暂无附件信息</div>
|
||||||
<div [innerHTML]="modalcontent"></div>
|
<div [innerHTML]="modalcontent"></div>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
<ng-template #nzModalFooter>
|
<ng-template #nzModalFooter>
|
||||||
<button nz-button nzType="primary" (click)="handleOK()" [disabled]="">取消</button>
|
<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>
|
</ng-template>
|
||||||
</nz-modal>
|
</nz-modal>
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
* @Author : Shiming
|
* @Author : Shiming
|
||||||
* @Date : 2022-01-12 10:52:50
|
* @Date : 2022-01-12 10:52:50
|
||||||
* @LastEditors : Shiming
|
* @LastEditors : Shiming
|
||||||
* @LastEditTime : 2022-03-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
|
* @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\vehicle\\vehicle.component.html
|
||||||
* Copyright (C) 2022 huzhenhong. All rights reserved.
|
* Copyright (C) 2022 huzhenhong. All rights reserved.
|
||||||
-->
|
-->
|
||||||
@ -69,7 +69,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
<ng-template st-row="createUserName" let-item let-index="index">
|
<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>
|
||||||
<!-- <ng-template st-row="mybidDetailInfo" let-item let-index="index">
|
<!-- <ng-template st-row="mybidDetailInfo" let-item let-index="index">
|
||||||
<div *ngIf="item.mybidDetailInfo.length > 0">
|
<div *ngIf="item.mybidDetailInfo.length > 0">
|
||||||
|
|||||||
@ -765,6 +765,7 @@ export class OrderManagementVehicleComponent extends BasicTableComponent impleme
|
|||||||
if (res) {
|
if (res) {
|
||||||
this.resetSF;
|
this.resetSF;
|
||||||
this.st.load();
|
this.st.load();
|
||||||
|
this.getGoodsSourceStatistical();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,23 +4,19 @@
|
|||||||
* @Author : Shiming
|
* @Author : Shiming
|
||||||
* @Date : 2021-12-15 13:17:42
|
* @Date : 2021-12-15 13:17:42
|
||||||
* @LastEditors : Shiming
|
* @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
|
* @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\modal\\audit\\voucher-view\\voucher-view.component.html
|
||||||
* Copyright (C) 2022 huzhenhong. All rights reserved.
|
* Copyright (C) 2022 huzhenhong. All rights reserved.
|
||||||
-->
|
-->
|
||||||
<div class="sfBox" [ngClass]="Status !== 1 ? 'hideBtn' : ''">
|
<div class="sfBox" [ngClass]="Status !== 1 ? 'hideBtn' : ''">
|
||||||
<sf #sf mode="edit" [schema]="schema" [ui]="ui" [formData]="formData" button="none">
|
<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">
|
<ng-template sf-template="no0" let-me let-ui="ui" let-schema="schema">
|
||||||
<div style="display: flex">
|
<div style="color: #1890FF" >
|
||||||
<nz-input-number [(ngModel)]="data.weight" [nzMin]="1" [nzMax]="10" [nzStep]="1"></nz-input-number>
|
<div (click)="openlaod(1)">电子装货单</div>
|
||||||
<div class="left_btn">吨</div>
|
|
||||||
</div>
|
</div>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
<ng-template sf-template="volume" let-me let-ui="ui" let-schema="schema">
|
<ng-template sf-template="no6" let-me let-ui="ui" let-schema="schema">
|
||||||
<div style="display: flex">
|
<div style="color: #1890FF" (click)="openlaod(2)">电子卸货单</div>
|
||||||
<nz-input-number [(ngModel)]="data.volume" [nzMin]="1" [nzMax]="10" [nzStep]="1"></nz-input-number>
|
|
||||||
<div class="left_btn">方</div>
|
|
||||||
</div>
|
|
||||||
</ng-template>
|
</ng-template>
|
||||||
</sf>
|
</sf>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -30,7 +30,9 @@ import { OrderManagementService } from '../../../services/order-management.servi
|
|||||||
export class orderManagementVoucherViewComponent implements OnInit {
|
export class orderManagementVoucherViewComponent implements OnInit {
|
||||||
record: any = {};
|
record: any = {};
|
||||||
i: any;
|
i: any;
|
||||||
|
loadPDF: string = '';
|
||||||
formData: any;
|
formData: any;
|
||||||
|
datas: any;
|
||||||
Status: any;
|
Status: any;
|
||||||
data: any ={
|
data: any ={
|
||||||
weight: 0,
|
weight: 0,
|
||||||
@ -52,6 +54,7 @@ export class orderManagementVoucherViewComponent implements OnInit {
|
|||||||
if(this.Status == 1) {
|
if(this.Status == 1) {
|
||||||
|
|
||||||
this.schema = {
|
this.schema = {
|
||||||
|
|
||||||
properties: {
|
properties: {
|
||||||
loadingLadingBillFilePath: {
|
loadingLadingBillFilePath: {
|
||||||
type: 'string',
|
type: 'string',
|
||||||
@ -217,9 +220,15 @@ export class orderManagementVoucherViewComponent implements OnInit {
|
|||||||
required: ['loadingLadingBillFilePath', 'loadingPeopleVehiclesGoodsFilePath','unloadingLadingBillFilePath','unloadingPeopleVehiclesGoodsFilePath' ]
|
required: ['loadingLadingBillFilePath', 'loadingPeopleVehiclesGoodsFilePath','unloadingLadingBillFilePath','unloadingPeopleVehiclesGoodsFilePath' ]
|
||||||
};
|
};
|
||||||
}else {
|
}else {
|
||||||
console.log('只读')
|
|
||||||
this.schema = {
|
this.schema = {
|
||||||
properties: {
|
properties: {
|
||||||
|
no0: {
|
||||||
|
type: 'string',
|
||||||
|
title: '',
|
||||||
|
ui: {
|
||||||
|
widget: 'custom',
|
||||||
|
},
|
||||||
|
},
|
||||||
loadingLadingBillFilePath: {
|
loadingLadingBillFilePath: {
|
||||||
type: 'string',
|
type: 'string',
|
||||||
title: '装货凭证',
|
title: '装货凭证',
|
||||||
@ -298,6 +307,7 @@ export class orderManagementVoucherViewComponent implements OnInit {
|
|||||||
listType: 'picture-card',
|
listType: 'picture-card',
|
||||||
} as SFUploadWidgetSchema,
|
} as SFUploadWidgetSchema,
|
||||||
},
|
},
|
||||||
|
|
||||||
no4: {
|
no4: {
|
||||||
type: 'string',
|
type: 'string',
|
||||||
title: '',
|
title: '',
|
||||||
@ -306,6 +316,13 @@ export class orderManagementVoucherViewComponent implements OnInit {
|
|||||||
},
|
},
|
||||||
default: '单张大小不超过5M,支持.jpg、.jpeg和 .png格式',
|
default: '单张大小不超过5M,支持.jpg、.jpeg和 .png格式',
|
||||||
},
|
},
|
||||||
|
no6: {
|
||||||
|
type: 'string',
|
||||||
|
title: '',
|
||||||
|
ui: {
|
||||||
|
widget: 'custom',
|
||||||
|
},
|
||||||
|
},
|
||||||
unloadingLadingBillFilePath: {
|
unloadingLadingBillFilePath: {
|
||||||
type: 'string',
|
type: 'string',
|
||||||
title: '卸货凭证',
|
title: '卸货凭证',
|
||||||
@ -421,18 +438,17 @@ export class orderManagementVoucherViewComponent implements OnInit {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
sure() {
|
sure() {
|
||||||
const params = [this.i.id];
|
const params = [this.i?.id];
|
||||||
this.service.request(this.service.$api_get_billAuditPass, params).subscribe((res) => {
|
this.service.downloadFile(this.service.$api_createBillTakeGoods,params)
|
||||||
if(res) {
|
this.service.downloadFile(this.service.$api_createBillDischargeGoods,params)
|
||||||
this.service.msgSrv.success('生成电子单据成功!')
|
this.service.msgSrv.success('生成电子单据成功!')
|
||||||
this.modal.destroy(true);
|
this.modal.destroy(true);
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
// 确认到车界面信息(两个只能看的图片)
|
// 确认到车界面信息(两个只能看的图片)
|
||||||
initData() {
|
initData() {
|
||||||
this.service.request(this.service.$api_get_getCredentials, { id : this.i?.id}).subscribe((res) => {
|
this.service.request(this.service.$api_get_getCredentials, { id : this.i?.id}).subscribe((res) => {
|
||||||
console.log(res)
|
console.log(res)
|
||||||
|
this.datas = res
|
||||||
if (res.unloadingLadingBillFilePath) {
|
if (res.unloadingLadingBillFilePath) {
|
||||||
this.formData = {
|
this.formData = {
|
||||||
loadingLadingBillFilePath: [
|
loadingLadingBillFilePath: [
|
||||||
@ -486,5 +502,22 @@ export class orderManagementVoucherViewComponent implements OnInit {
|
|||||||
close(): void {
|
close(): void {
|
||||||
this.modal.destroy(true);
|
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
|
* @Author : Shiming
|
||||||
* @Date : 2021-12-15 13:17:42
|
* @Date : 2021-12-15 13:17:42
|
||||||
* @LastEditors : Shiming
|
* @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
|
* @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\modal\\vehicle\\confir-receipt\\confir-receipt.component.html
|
||||||
* Copyright (C) 2022 huzhenhong. All rights reserved.
|
* Copyright (C) 2022 huzhenhong. All rights reserved.
|
||||||
-->
|
-->
|
||||||
@ -28,7 +28,7 @@
|
|||||||
{{item.BACK | currency}}
|
{{item.BACK | currency}}
|
||||||
</ng-template>
|
</ng-template>
|
||||||
<ng-template st-row="traiPrice" let-item let-index="index">
|
<ng-template st-row="traiPrice" let-item let-index="index">
|
||||||
{{item.surcharge + item.traiPrice | currency}}
|
{{ item.traiPrice | currency}}
|
||||||
</ng-template>
|
</ng-template>
|
||||||
<ng-template st-row="surcharge" let-item let-index="index">
|
<ng-template st-row="surcharge" let-item let-index="index">
|
||||||
{{item.surcharge | currency}}
|
{{item.surcharge | currency}}
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
* @Author : Shiming
|
* @Author : Shiming
|
||||||
* @Date : 2021-12-03 15:31:52
|
* @Date : 2021-12-03 15:31:52
|
||||||
* @LastEditors : Shiming
|
* @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
|
* @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\services\\order-management.service.ts
|
||||||
* Copyright (C) 2022 huzhenhong. All rights reserved.
|
* 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_asyncExportBulkList = `/api/sdc/billOperate/asyncExportBulkList`;
|
||||||
// 异步导出运营后台整车订单列表
|
// 异步导出运营后台整车订单列表
|
||||||
$api_get_asyncExportWholeList = `/api/sdc/billOperate/asyncExportWholeList`;
|
$api_get_asyncExportWholeList = `/api/sdc/billOperate/asyncExportWholeList`;
|
||||||
|
// 异步导出风险单导出
|
||||||
|
$api_get_asyncExportRiskBillList = `/api/sdc/billRiskOperate/asyncExportRiskBillList`;
|
||||||
/**
|
/**
|
||||||
* 根据企业ID,获取企业历史网络货运人
|
* 根据企业ID,获取企业历史网络货运人
|
||||||
* @returns
|
* @returns
|
||||||
|
|||||||
@ -1,8 +1,9 @@
|
|||||||
import { Component, ViewChild } from '@angular/core';
|
import { Component, ViewChild } from '@angular/core';
|
||||||
import { Router } from '@angular/router';
|
import { Router } from '@angular/router';
|
||||||
import { STComponent, STColumn, STRequestOptions, STChange } from '@delon/abc/st';
|
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 { 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 { 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';
|
import { PartnerListService } from '../../services/partner-list.service';
|
||||||
@ -24,7 +25,7 @@ export class PartnerListComponent {
|
|||||||
|
|
||||||
@ViewChild('editTemplate', { static: true })
|
@ViewChild('editTemplate', { static: true })
|
||||||
editTemplate: any;
|
editTemplate: any;
|
||||||
templateId: any;
|
templateId: any;
|
||||||
templates: any[] = [];
|
templates: any[] = [];
|
||||||
|
|
||||||
@ViewChild('editCannel', { static: true })
|
@ViewChild('editCannel', { static: true })
|
||||||
@ -241,11 +242,22 @@ export class PartnerListComponent {
|
|||||||
type: 'string',
|
type: 'string',
|
||||||
title: '渠道销售',
|
title: '渠道销售',
|
||||||
ui: {
|
ui: {
|
||||||
placeholder: '请输入姓名或者手机号',
|
widget: 'select',
|
||||||
|
searchDebounceTime: 300,
|
||||||
|
searchLoadingText: '搜索中...',
|
||||||
|
allowClear: true,
|
||||||
visibleIf: {
|
visibleIf: {
|
||||||
expand: (value: boolean) => value
|
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: {
|
partnerType: {
|
||||||
type: 'string',
|
type: 'string',
|
||||||
@ -367,13 +379,12 @@ export class PartnerListComponent {
|
|||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
title: '合伙人名称',
|
title: '合伙人名称',
|
||||||
index: 'enterpriseName',
|
index: 'contactName',
|
||||||
width: 180,
|
width: 180
|
||||||
format: item => (item.partnerType ? `${item.enterpriseName || item.contactName}` : '')
|
|
||||||
},
|
},
|
||||||
{ title: '付款编码', index: 'payCode', width: 160 },
|
{ title: '付款编码', index: 'payCode', width: 160 },
|
||||||
{ title: '邀请码', index: 'invitationCode', className: 'text-center', width: 130 },
|
{ 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: 'contactMobile', className: 'text-center', width: 150 },
|
||||||
{ title: '类型', index: 'partnerType', className: 'text-center', width: 130, type: 'enum', enum: { 1: '企业', 2: '个人' } },
|
{ title: '类型', index: 'partnerType', className: 'text-center', width: 130, type: 'enum', enum: { 1: '企业', 2: '个人' } },
|
||||||
{ title: '注册渠道', index: 'source', type: 'enum', enum: { 1: '合伙人注册', 2: '平台添加' }, width: 130 },
|
{ title: '注册渠道', index: 'source', type: 'enum', enum: { 1: '合伙人注册', 2: '平台添加' }, width: 130 },
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
* @Author : Shiming
|
* @Author : Shiming
|
||||||
* @Date : 2022-01-12 10:52:50
|
* @Date : 2022-01-12 10:52:50
|
||||||
* @LastEditors : Shiming
|
* @LastEditors : Shiming
|
||||||
* @LastEditTime : 2022-03-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
|
* @FilePath : \\tms-obc-web\\src\\app\\routes\\supply-management\\components\\bulk\\bulk.component.html
|
||||||
* Copyright (C) 2022 huzhenhong. All rights reserved.
|
* Copyright (C) 2022 huzhenhong. All rights reserved.
|
||||||
-->
|
-->
|
||||||
@ -76,7 +76,7 @@
|
|||||||
[loading]="false"
|
[loading]="false"
|
||||||
>
|
>
|
||||||
<ng-template st-row="createUserName" let-item let-index="index">
|
<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>
|
||||||
<!--运费单价 -->
|
<!--运费单价 -->
|
||||||
<ng-template st-row="freightPrice" let-item let-index="index">
|
<ng-template st-row="freightPrice" let-item let-index="index">
|
||||||
|
|||||||
@ -190,7 +190,7 @@
|
|||||||
</span>
|
</span>
|
||||||
<span>(运费{{ i?.totalFreight | currency }}含附加运费 {{ i?.totalSurcharge | currency }})</span>
|
<span>(运费{{ i?.totalFreight | currency }}含附加运费 {{ i?.totalSurcharge | currency }})</span>
|
||||||
</h3>
|
</h3>
|
||||||
<div>收款人:{{ i?.payeeName }}/{{ i?.payeePhone }}/{{ i?.payeeCardNo }}</div>
|
<div>车队长:{{ i?.payeeName }}/{{ i?.payeePhone }}/{{ i?.payeeCardNo }}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</nz-card>
|
</nz-card>
|
||||||
|
|||||||
@ -34,7 +34,7 @@
|
|||||||
已选择
|
已选择
|
||||||
<strong class="text-red">{{ selectedRows.length }}</strong> 张发票 发票金额总计
|
<strong class="text-red">{{ selectedRows.length }}</strong> 张发票 发票金额总计
|
||||||
<strong class="text-red">{{totalCallNo }}</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>
|
</div>
|
||||||
<button nz-button *ngIf="resourceStatus===1 || !resourceStatus" (click)="this.batchPush()">推送开票</button>
|
<button nz-button *ngIf="resourceStatus===1 || !resourceStatus" (click)="this.batchPush()">推送开票</button>
|
||||||
<!-- <button nz-button *ngIf="resourceStatus===1 || !resourceStatus"
|
<!-- <button nz-button *ngIf="resourceStatus===1 || !resourceStatus"
|
||||||
|
|||||||
@ -402,11 +402,11 @@ export class CancellationInvoiceComponent implements OnInit {
|
|||||||
iif: item => item.sts != '3',
|
iif: item => item.sts != '3',
|
||||||
click: item => this.requestedAction(item)
|
click: item => this.requestedAction(item)
|
||||||
},
|
},
|
||||||
{
|
// {
|
||||||
text: '推送开票<br>',
|
// text: '推送开票<br>',
|
||||||
iif: item => item.sts === '1',
|
// iif: item => item.sts === '1',
|
||||||
click: item => this.pushInvoiceAction(item)
|
// click: item => this.pushInvoiceAction(item)
|
||||||
}
|
// }
|
||||||
// {
|
// {
|
||||||
// text: '作废发票',
|
// text: '作废发票',
|
||||||
// iif: item => item.sts === '3',
|
// iif: item => item.sts === '3',
|
||||||
|
|||||||
@ -102,7 +102,7 @@
|
|||||||
<strong class="text-red">{{ selectedRows.length }}</strong> 条数据 开票金额总计 <strong
|
<strong class="text-red">{{ selectedRows.length }}</strong> 条数据 开票金额总计 <strong
|
||||||
class="text-red">{{
|
class="text-red">{{
|
||||||
totalCallNo |currency }}</strong>
|
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>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@ -45,7 +45,7 @@
|
|||||||
已选择
|
已选择
|
||||||
<strong class="text-red">{{ selectedRows.length }}</strong> 条数据 开票金额总计
|
<strong class="text-red">{{ selectedRows.length }}</strong> 条数据 开票金额总计
|
||||||
<strong class="text-red">{{ totalCallNo }}</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>
|
</div>
|
||||||
<button nz-button *ngIf="resourceStatus==='1' || !resourceStatus" (click)="this.batchRequested()">批量受理</button>
|
<button nz-button *ngIf="resourceStatus==='1' || !resourceStatus" (click)="this.batchRequested()">批量受理</button>
|
||||||
<button nz-button *ngIf="resourceStatus==='1' || !resourceStatus"
|
<button nz-button *ngIf="resourceStatus==='1' || !resourceStatus"
|
||||||
|
|||||||
@ -49,6 +49,22 @@ export class FreightComponentsListComponent implements OnInit {
|
|||||||
Object.assign(requestOptions.body, {
|
Object.assign(requestOptions.body, {
|
||||||
...this.sf.value
|
...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;
|
this.loadingList = true;
|
||||||
return requestOptions;
|
return requestOptions;
|
||||||
@ -215,9 +231,11 @@ export class FreightComponentsListComponent implements OnInit {
|
|||||||
customerType: {
|
customerType: {
|
||||||
type: 'string',
|
type: 'string',
|
||||||
title: '客户类型',
|
title: '客户类型',
|
||||||
enum: [{ label: '全部', value: '' },
|
enum: [
|
||||||
{ label: '直客', value: 1 },
|
{ label: '全部', value: '' },
|
||||||
{ label: '渠道客户', value: 20 }],
|
{ label: '直客', value: 1 },
|
||||||
|
{ label: '渠道客户', value: 20 }
|
||||||
|
],
|
||||||
default: '',
|
default: '',
|
||||||
ui: {
|
ui: {
|
||||||
widget: 'select',
|
widget: 'select',
|
||||||
@ -363,7 +381,7 @@ export class FreightComponentsListComponent implements OnInit {
|
|||||||
initST() {
|
initST() {
|
||||||
this.columns = [
|
this.columns = [
|
||||||
// { title: '', type: 'checkbox', className: 'text-center' },
|
// { 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: '统一社会信用代码', className: 'text-center', render: 'unifiedSocialCreditCode', width: 200 },
|
||||||
{
|
{
|
||||||
title: '公司所在地',
|
title: '公司所在地',
|
||||||
|
|||||||
@ -154,7 +154,7 @@
|
|||||||
totalObj?.price - attObj?.price | currency
|
totalObj?.price - attObj?.price | currency
|
||||||
}},附加运费{{ attObj?.price | currency}},附加费率{{ (attObj?.price / totalObj?.price) * 100 | number: '0.2-2' }}%)
|
}},附加运费{{ attObj?.price | currency}},附加费率{{ (attObj?.price / totalObj?.price) * 100 | number: '0.2-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> -->
|
||||||
<nz-card [nzTitle]="'运费信息' +'(到货后'+i?.paymentDays+'天内支付运费)'" #distannce3>
|
<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>
|
<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)}}%)
|
附加费{{ i?.totalSurcharge | currency }},附加费率{{ (i?.totalRate * 100).toFixed(2)}}%)
|
||||||
</div>
|
</div>
|
||||||
</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>
|
||||||
|
|
||||||
<nz-card nzTitle="附件信息" #distannce4>
|
<nz-card nzTitle="附件信息" #distannce4>
|
||||||
|
|||||||
@ -302,7 +302,7 @@ export class WaybillManagementBulkComponent implements OnInit {
|
|||||||
render: 'driverName'
|
render: 'driverName'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '收款人',
|
title: '车队长',
|
||||||
className: 'text-left',
|
className: 'text-left',
|
||||||
width: '200px',
|
width: '200px',
|
||||||
render: 'payeeName',
|
render: 'payeeName',
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
<!--
|
<!--
|
||||||
* @Author: your name
|
* @Author: your name
|
||||||
* @Date: 2021-12-03 15:31:52
|
* @Date: 2021-12-03 15:31:52
|
||||||
* @LastEditTime : 2022-03-30 17:16:40
|
* @LastEditTime : 2022-04-01 11:12:17
|
||||||
* @LastEditors : Shiming
|
* @LastEditors : Shiming
|
||||||
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
* @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
|
* @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?.shippername }} </sv>
|
||||||
<sv label="所属项目">{{i?.enterpriseProjectName}}</sv>
|
<sv label="所属项目">{{i?.enterpriseProjectName}}</sv>
|
||||||
<sv label="服务类型">{{i?.serviceTypeLabel}}</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?.resourceCode }} </sv>
|
||||||
<sv label="承诺付款天数">{{ i?.paymentDays }}</sv>
|
<sv label="承诺付款天数">{{ i?.paymentDays }}</sv>
|
||||||
</div>
|
</div>
|
||||||
@ -78,10 +78,10 @@
|
|||||||
{{i?.goodsInfos?.[0]?.carModelLabel}}{{ i?.goodsInfos?.[0]?.carLength ? '/' + i?.goodsInfos?.[0]?.carLength + '米': ''}}
|
{{i?.goodsInfos?.[0]?.carModelLabel}}{{ i?.goodsInfos?.[0]?.carLength ? '/' + i?.goodsInfos?.[0]?.carLength + '米': ''}}
|
||||||
</sv>
|
</sv>
|
||||||
<sv label="承运司机">
|
<sv label="承运司机">
|
||||||
{{i?.driverVo?.name}}/{{i?.driverVo?.phone}}
|
{{i?.driverVo?.name}}{{ i?.driverVo?.phone ? '/' + i?.driverVo?.phone : ''}}
|
||||||
</sv>
|
</sv>
|
||||||
<sv label="车型车长载重">
|
<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>
|
||||||
<sv label="计划装货时间">
|
<sv label="计划装货时间">
|
||||||
{{i?.loadingTime}}
|
{{i?.loadingTime}}
|
||||||
@ -157,7 +157,7 @@
|
|||||||
总计:<span style="color: #da001b; font-size: 18px">{{ i?.totalAmount | currency }}</span> (运费{{ i?.totalFreight | currency }},
|
总计:<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>
|
||||||
<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>
|
||||||
|
|
||||||
<nz-card nzTitle="附件信息" #distannce4>
|
<nz-card nzTitle="附件信息" #distannce4>
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* @Author: your name
|
* @Author: your name
|
||||||
* @Date: 2021-12-03 15:31:52
|
* @Date: 2021-12-03 15:31:52
|
||||||
* @LastEditTime : 2022-03-23 14:49:13
|
* @LastEditTime : 2022-04-01 11:11:14
|
||||||
* @LastEditors : Shiming
|
* @LastEditors : Shiming
|
||||||
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
* @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
|
* @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 {
|
export class WaybillManagementVehicleDetailComponent implements OnInit, OnDestroy {
|
||||||
id = this.route.snapshot.params.id;
|
id = this.route.snapshot.params.id;
|
||||||
MapList: any[] = [];
|
MapList: any[] = [];
|
||||||
trajectory = 'car';
|
trajectory = 'car';
|
||||||
mapList: any[] = []; //地图点位数据组
|
mapList: any[] = []; //地图点位数据组
|
||||||
addressItems: any[] = []; //打点地址数据组
|
addressItems: any[] = []; //打点地址数据组
|
||||||
i: any;
|
i: any;
|
||||||
|
|||||||
@ -322,7 +322,7 @@ export class WaybillManagementVehicleComponent implements OnInit {
|
|||||||
render: 'driverName'
|
render: 'driverName'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '收款人',
|
title: '车队长',
|
||||||
className: 'text-left',
|
className: 'text-left',
|
||||||
width: '200px',
|
width: '200px',
|
||||||
render: 'payeeName'
|
render: 'payeeName'
|
||||||
|
|||||||
@ -176,21 +176,23 @@ export class ShipperBaseService extends BaseService {
|
|||||||
getEnterpriceList(params = { enterpriseName: '' }, containerAll = false) {
|
getEnterpriceList(params = { enterpriseName: '' }, containerAll = false) {
|
||||||
let str = params.enterpriseName.replace(/^\s+|\s+$/g, '');
|
let str = params.enterpriseName.replace(/^\s+|\s+$/g, '');
|
||||||
if (str) {
|
if (str) {
|
||||||
return this.request(this.$api_enterpriceList, params).pipe(
|
return this.request(this.$api_enterpriceList, params)
|
||||||
map((res: any) => {
|
.pipe(
|
||||||
if (!res) {
|
map((res: any) => {
|
||||||
return [];
|
if (!res) {
|
||||||
}
|
return [];
|
||||||
const list = res.map((item: any) => {
|
}
|
||||||
return { label: item.enterpriseName, value: item.id };
|
const list = res.map((item: any) => {
|
||||||
});
|
return { label: item.enterpriseName, value: item.id };
|
||||||
const obj = [];
|
});
|
||||||
if (containerAll) {
|
const obj = [];
|
||||||
obj.push({ label: '全部', value: '' });
|
if (containerAll) {
|
||||||
}
|
obj.push({ label: '全部', value: '' });
|
||||||
return [...obj, ...list];
|
}
|
||||||
})
|
return [...obj, ...list];
|
||||||
).toPromise();;
|
})
|
||||||
|
)
|
||||||
|
.toPromise();
|
||||||
} else {
|
} else {
|
||||||
return of([]);
|
return of([]);
|
||||||
}
|
}
|
||||||
@ -291,14 +293,15 @@ export class ShipperBaseService extends BaseService {
|
|||||||
* 获取渠道销售管理集合
|
* 获取渠道销售管理集合
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
getChannel() {
|
getChannel(params = {}, containerAll = false) {
|
||||||
const params = {};
|
|
||||||
return this.request(this.$api_get_channel, params, 'POST').pipe(
|
return this.request(this.$api_get_channel, params, 'POST').pipe(
|
||||||
map(res => {
|
map(res => {
|
||||||
if (res) {
|
if (res) {
|
||||||
return res.map((m: any) => {
|
const obj = [];
|
||||||
return { label: `${m.employeeVO?.empName}/${m.employeeVO?.mobile}`, value: m.id };
|
if (containerAll) {
|
||||||
});
|
obj.push({ label: '全部', value: '' });
|
||||||
|
}
|
||||||
|
return [...obj, ...res.map((m: any) => ({ label: `${m.employeeVO?.empName}/${m.employeeVO?.mobile}`, value: m.id }))];
|
||||||
} else {
|
} else {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user