This commit is contained in:
Lingzi
2022-04-02 15:50:03 +08:00
77 changed files with 1162 additions and 486 deletions

1
.gitignore vendored
View File

@ -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
View File

@ -0,0 +1,3 @@
{
"compile-hero.disable-compile-files-on-did-save-code": true
}

View File

@ -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'
},
}; };

View File

@ -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' },

View File

@ -0,0 +1,2 @@
<g2-custom delay="100" (render)="render($event)"></g2-custom>

View File

@ -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();
}
}

View File

@ -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>

View File

@ -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));
} }

View File

@ -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>

View File

@ -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('月均降雨量', { this.chart.data(this.chartData);
nice: true this.chart.scale({
}); time: {
chart.tooltip({ range: [0, 1],
showMarkers: false,
shared: true
});
// 图表下方图形文字自定义
chart.legend({
items: [
{
name: '已收金额(元)',
value: 'node_load1',
marker: {
symbol: 'circle',
style: { fill: '#6395f9' }
}
}, },
{ number: {
name: '已付运费(元)', nice: true,
value: 'node_load1',
marker: {
symbol: 'circle',
style: { fill: '#62daab' }
}
}
]
});
chart
.interval()
.position('月份*月均降雨量')
.color('name')
.adjust([
{
type: 'dodge',
marginRatio: 0
}
]);
chart.render();
}
render2(el: ElementRef<HTMLDivElement>): void {
this.ngZone.runOutsideAngular(() => this.initCurve(el.nativeElement));
}
private initCurve(el: HTMLElement): void {
const chart = new Chart({
container: el,
autoFit: true,
height: 400
});
// 以三组数据为例, 需要展示 91/92/93年中a/b/c数据走势
const data = [
{ data: '1月', label: '平均附加费率', value: 5 },
{ data: '2月', label: '平均附加费率', value: 10 },
{ data: '3月', label: '平均附加费率', value: 25 },
{ data: '4月', label: '平均附加费率', value: 35 },
{ data: '5月', label: '平均附加费率', value: 15 },
{ data: '6月', label: '平均附加费率', value: 5 },
{ data: '7月', label: '平均附加费率', value: 95 },
{ data: '8月', label: '平均附加费率', value: 45 }
];
chart.data(data);
//刻度自定义
chart.scale({
data: {
range: [0, 1]
}, },
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', {
chart.axis('value', {
label: { label: {
formatter: val => { formatter: (val: any) => {
return val + ' %'; return val*100+ ' %';
} },
} },
}); });
// 在x*y的坐标点上按z值绘制线条, 如果z值相同将使用直线连接
chart
this.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();
} }
} }

View File

@ -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>

View File

@ -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();
} }
} }

View File

@ -0,0 +1 @@
<g2-custom delay="100" (render)="render($event)"></g2-custom>

View File

@ -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();
}
}

View File

@ -27,6 +27,8 @@ import { OperationPillarComponent } from './components/operationtable/pillar/pil
import { OperationCurveComponent } from './components/operationtable/curve/curve.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 { DatatableDatascreenComponent } from './components/datascreen/datascreen.component'; import { DatatableDatascreenComponent } from './components/datascreen/datascreen.component';
import { FinancetablePillarComponent } from './components/financetable/pillar/pillar.component';
import { ComplianceCurveComponent } from './components/compliance/index/curve/curve.component';
const COMPONENTS: Type<void>[] = [ const COMPONENTS: Type<void>[] = [
DatatableDataindexComponent, DatatableDataindexComponent,
@ -56,7 +58,10 @@ const COMPONENTS: Type<void>[] = [
OperationCurveComponent, OperationCurveComponent,
DatatableReportingFundInfoComponent, DatatableReportingFundInfoComponent,
FinanceTableCurveComponent, FinanceTableCurveComponent,
DatatableDatascreenComponent] DatatableDatascreenComponent,
FinancetablePillarComponent,
ComplianceCurveComponent
]
@NgModule({ @NgModule({

View File

@ -1,14 +1,15 @@
<nz-spin [nzSpinning]="service.http.loading"></nz-spin> <div>
<st #st [scroll]="{x:'1000px'}" [data]="service.$api_get_fund_valid_result" [columns]="columns" <nz-spin [nzSpinning]="service.http.loading"></nz-spin>
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }" <st #st [scroll]="{x:'1000px',y:'600px'}" [data]="service.$api_get_fund_valid_result" [columns]="columns"
[res]="{ reName: { list: 'data.records', total: 'data.total' } }" [page]="{ show: false}" [loading]="false" [req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams,process: beforeReq }"
[bordered]="true"> [res]="{ reName: { list: 'data' } }" [page]="{ show: false,showSize:false}" [loading]="false" [bordered]="true">
<ng-template st-row="freightDetails" let-item> <ng-template st-row="freightDetails" let-item>
<div *ngFor="let item of item.freightDetails"> <div *ngFor="let item of item.freightDetails">
<div>{{item.expenseName}}:{{item.price | currency}} </div> <div>{{item.expenseName}}:{{item.price | currency}} </div>
</div> </div>
</ng-template> </ng-template>
</st> </st>
</div>
<div class="modal-footer"> <div class="modal-footer">
<button nz-button type="submit" nzType="primary" (click)="close()">确定</button> <button nz-button type="submit" nzType="primary" (click)="close()">确定</button>

View File

@ -1,6 +1,6 @@
import { Component, OnInit, ViewChild } from '@angular/core'; import { Component, OnInit, ViewChild } from '@angular/core';
import { Router } from '@angular/router'; import { Router } from '@angular/router';
import { STColumn, STComponent } from '@delon/abc/st'; import { STColumn, STComponent, STRequestOptions } from '@delon/abc/st';
import { SFSchema } from '@delon/form'; import { SFSchema } from '@delon/form';
import { ModalHelper, _HttpClient } from '@delon/theme'; import { ModalHelper, _HttpClient } from '@delon/theme';
import { NzModalRef } from 'ng-zorro-antd/modal'; import { NzModalRef } from 'ng-zorro-antd/modal';
@ -21,6 +21,14 @@ export class DatatableReportingFundInfoComponent implements OnInit {
get reqParams() { get reqParams() {
return { capitalCode: this?.record?.orderCode }; return { capitalCode: this?.record?.orderCode };
} }
beforeReq(requestOptions: STRequestOptions) {
delete requestOptions?.body?.pageSize;
delete requestOptions?.body?.pageIndex;
return requestOptions;
}
constructor(public service: ReportingService, private modalRef: NzModalRef, public router: Router) { constructor(public service: ReportingService, private modalRef: NzModalRef, public router: Router) {
} }
@ -34,22 +42,22 @@ export class DatatableReportingFundInfoComponent implements OnInit {
*/ */
initST() { initST() {
this.columns = [ this.columns = [
{ title: '序号', type: 'no', className: 'text-center', width: '60px', }, { title: '序号', type: 'no', className: 'text-center', width: '10%', },
{ title: '监管平台字段', index: 'thirdPartyFieldName', className: 'text-center', width: '120px', }, { title: '监管平台字段', index: 'thirdPartyFieldName', className: 'text-center', width: '15%', },
{ title: '系统字段', index: 'checkFieldName', className: 'text-center', width: '100px', }, { title: '系统字段', index: 'checkFieldName', className: 'text-center', width: '15%', },
{ title: '归属模块', index: 'orderStatus', className: 'text-center', width: '120px', }, { title: '归属模块', index: 'orderStatus', className: 'text-center', width: '15%', },
{ {
title: '是否必填', title: '是否必填',
index: 'orderStatus', index: 'orderStatus',
className: 'text-center', className: 'text-center',
width: '100px', width: '10%',
type: 'enum', type: 'enum',
enum: { enum: {
'0': '非必填', '0': '非必填',
'1': '必填', '1': '必填',
}, },
}, },
{ title: '上传值', index: 'fieldValue', className: 'text-center', width: '150px', }, { title: '上传值', index: 'fieldValue', className: 'text-center', width: '15%', },
{ {
title: '本地校验', title: '本地校验',
index: 'checkStatus', index: 'checkStatus',
@ -60,9 +68,9 @@ export class DatatableReportingFundInfoComponent implements OnInit {
'1': '通过', '1': '通过',
'2': '不通过' '2': '不通过'
}, },
width: '100px', width: '10%',
}, },
{ title: '错误内容', index: 'remark', className: 'text-center', width: '150px', }, { title: '错误内容', index: 'remark', className: 'text-center', width: '20%', },
] ]
} }

View File

@ -34,8 +34,8 @@
<span [ngClass]="{'text-red-dark':item?.uploadStatus === '4'}">{{item?.billStatusLabel}}</span> <span [ngClass]="{'text-red-dark':item?.uploadStatus === '4'}">{{item?.billStatusLabel}}</span>
</ng-template> </ng-template>
<ng-template st-row="verifyStatus" let-item> <ng-template st-row="verifyStatus" let-item>
<a (click)="viewAuditResult(item)" *ngIf="item?.billStatus === '2'">{{item?.billStatusLabel}}</a> <a (click)="viewResult(item)" *ngIf="item?.verifyStatus === '1'">1111{{item?.verifyStatusLabel}}</a>
<span *ngIf="item?.billStatus !== '2'">{{item?.billStatusLabel}}</span> <span *ngIf="item?.verifyStatus !== '1'">{{item?.verifyStatusLabel}}</span>
</ng-template> </ng-template>
<ng-template st-row="orderCode" let-item> <ng-template st-row="orderCode" let-item>
<span class="text-blue-dark">{{item?.orderCode}}</span> <span class="text-blue-dark">{{item?.orderCode}}</span>
@ -43,11 +43,6 @@
<ng-template st-row="wayBillCode" let-item> <ng-template st-row="wayBillCode" let-item>
<span class="text-blue-dark">{{item?.wayBillCode}}</span> <span class="text-blue-dark">{{item?.wayBillCode}}</span>
</ng-template> </ng-template>
<ng-template st-row="localValid" let-item let-index="index">
<a (click)="viewResult(item)" *ngIf="item?.billStatus === '2'">{{item?.billStatusLabel}}</a>
<span *ngIf="item?.billStatus !== '2'">{{item?.billStatusLabel}}</span>
</ng-template>
<ng-template st-row="tolalAmount" let-item let-index="index"> <ng-template st-row="tolalAmount" let-item let-index="index">
<div class="text-right">{{item?.tolalAmount | currency }}</div> <div class="text-right">{{item?.tolalAmount | currency }}</div>
</ng-template> </ng-template>

View File

@ -175,7 +175,9 @@ export class DatatableFundReportingComponent implements OnInit {
placeholder: '请选择', placeholder: '请选择',
widget: 'select', widget: 'select',
asyncData: () => this.shipperSrv.getNetworkFreightForwarder({}, false), asyncData: () => this.shipperSrv.getNetworkFreightForwarder({}, false),
visibleIf: {
_$expand: (value: boolean) => value,
},
allowClear: true allowClear: true
} }
}, },
@ -363,6 +365,7 @@ export class DatatableFundReportingComponent implements OnInit {
const modalRef = this.modal.create({ const modalRef = this.modal.create({
nzTitle: '校验结果', nzTitle: '校验结果',
nzWidth: 1200, nzWidth: 1200,
nzContent: DatatableReportingFundInfoComponent, nzContent: DatatableReportingFundInfoComponent,
nzComponentParams: { nzComponentParams: {
record record
@ -377,7 +380,7 @@ export class DatatableFundReportingComponent implements OnInit {
* 查看监管审核结果 * 查看监管审核结果
*/ */
viewAuditResult(record: any) { viewAuditResult(record: any) {
if (record?.billStatus !== '2') { if (record?.verifyStatus !== '1') {
return; return;
} }
this.openWainingModal('监管审核结果', record?.result) this.openWainingModal('监管审核结果', record?.result)

View File

@ -29,18 +29,40 @@
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }" [req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
[res]="{ reName: { list: 'data.records', total: 'data.total' } }" [res]="{ reName: { list: 'data.records', total: 'data.total' } }"
[page]="{ show: true, showSize: true, pageSizes: [10,20, 50, 100] }" [loading]="service.http.loading"> [page]="{ show: true, showSize: true, pageSizes: [10,20, 50, 100] }" [loading]="service.http.loading">
<ng-template st-row="orderStatus" let-item let-index="index"> <ng-template st-row="orderCheckStatus" let-item let-index="index">
<a (click)="viewAuditResult(item)" *ngIf="item?.billStatus === '2'">{{item?.billStatusLabel}}</a> <a (click)="viewAuditResult(item)"
<span *ngIf="item?.billStatus !== '2'">{{item?.billStatusLabel}}</span> *ngIf="item?.orderCheckStatus === '2'">{{filterStatus(item?.orderCheckStatus)}}</a>
<span *ngIf="item?.orderCheckStatus !== '2'">{{filterStatus(item?.orderCheckStatus)}}</span>
</ng-template>
<ng-template st-row="driverCheckStatus" let-item let-index="index">
<a (click)="viewAuditResult(item)"
*ngIf="item?.driverCheckStatus === '2'">{{filterStatus(item?.driverCheckStatus)}}</a>
<span *ngIf="item?.driverCheckStatus !== '2'">{{filterStatus(item?.driverCheckStatus)}}</span>
</ng-template>
<ng-template st-row="orderCheckStatus" let-item let-index="index">
<a (click)="viewAuditResult(item)"
*ngIf="item?.orderCheckStatus === '2'">{{filterStatus(item?.orderCheckStatus)}}</a>
<span *ngIf="item?.orderCheckStatus !== '2'">{{filterStatus(item?.orderCheckStatus)}}</span>
</ng-template> </ng-template>
<ng-template st-row="localValid" let-item let-index="index"> <ng-template st-row="checkStatus" let-item let-index="index">
<a (click)="viewResult(item)" *ngIf="item?.billStatus === '2'">{{item?.billStatusLabel}}</a> <a (click)="viewResult(item)" *ngIf="item?.billStatus === '2'">{{filterStatus(item?.checkStatus)}}</a>
<span *ngIf="item?.billStatus !== '2'">{{item?.billStatusLabel}}</span> <span *ngIf="item?.billStatus !== '2'">{{filterStatus(item?.checkStatus)}}</span>
</ng-template> </ng-template>
<ng-template st-row="amount" let-item let-index="index"> <ng-template st-row="billCode" let-item>
<div class="text-right">{{item?.amount | currency :' '}}</div> <span class="text-red-dark">{{item?.billCode}}</span>
</ng-template>
<ng-template st-row="wayBillCode" let-item>
<span class="text-red-dark">{{item?.wayBillCode}}</span>
</ng-template>
<ng-template st-row="freightAmount" let-item let-index="index">
<div class="text-right">{{item?.freightAmount | currency :' '}}</div>
</ng-template>
<ng-template st-row="goodsInfoList" let-item let-index="index">
<div *ngFor="let _item of item?.goodsInfoList">
{{_item?.goodsTypeName}}/{{_item?.goodsName}}/{{_item?.weight}}吨/{{_item?.volume}}m³
</div>
</ng-template> </ng-template>
<ng-template st-row="car" let-item let-index="index"> <ng-template st-row="car" let-item let-index="index">

View File

@ -95,7 +95,7 @@ export class DatatableOrderReportingComponent implements OnInit {
properties: { properties: {
_$expand: { type: 'boolean', ui: { hidden: true } }, _$expand: { type: 'boolean', ui: { hidden: true } },
billCode: { title: '订单号', type: 'string', ui: { placeholder: '请输入' } }, billCode: { title: '订单号', type: 'string', ui: { placeholder: '请输入' } },
resourceCode: { wayBillCode: {
type: 'string', type: 'string',
title: '运单号', title: '运单号',
ui: { ui: {
@ -113,7 +113,7 @@ export class DatatableOrderReportingComponent implements OnInit {
allowClear: true allowClear: true
} }
}, },
externalResourceCode: { shipperName: {
title: '货主', title: '货主',
type: 'string', type: 'string',
ui: { ui: {
@ -143,33 +143,40 @@ export class DatatableOrderReportingComponent implements OnInit {
}, },
} }
}, },
serviceType: { putStatus: {
title: '上传状态', title: '上传状态',
type: 'string', type: 'string',
enum: [
{ label: '待上传', value: 0 },
{ label: '已上传', value: 1 },
{ label: '异常', value: 2 }
],
ui: { ui: {
placeholder: '请选择', placeholder: '请选择',
widget: 'dict-select', widget: 'select',
params: { dictKey: 'service:type' },
containsAllLabel: true,
visibleIf: { visibleIf: {
_$expand: (value: boolean) => value, _$expand: (value: boolean) => value,
}, },
} }
}, },
serviceType1: { checkStatus: {
title: '本地校验', title: '本地校验',
type: 'string', type: 'string',
enum: [
{ label: '校验中', value: 0 },
{ label: '通过', value: 1 },
{ label: '不通过', value: 2 }
],
ui: { ui: {
placeholder: '请选择', placeholder: '请选择',
widget: 'dict-select', widget: 'select',
params: { dictKey: 'service:type' },
containsAllLabel: true,
visibleIf: { visibleIf: {
_$expand: (value: boolean) => value, _$expand: (value: boolean) => value,
}, },
} }
}, },
createTime: { putTime: {
title: '上传时间', title: '上传时间',
type: 'string', type: 'string',
ui: { ui: {
@ -181,7 +188,7 @@ export class DatatableOrderReportingComponent implements OnInit {
}, },
} as SFDateWidgetSchema, } as SFDateWidgetSchema,
}, },
createTime1: { orderReceivingTime: {
title: '运单生成时间', title: '运单生成时间',
type: 'string', type: 'string',
ui: { ui: {
@ -193,7 +200,7 @@ export class DatatableOrderReportingComponent implements OnInit {
}, },
} as SFDateWidgetSchema, } as SFDateWidgetSchema,
}, },
createTime2: { dispatchedDate: {
title: '发货时间', title: '发货时间',
type: 'string', type: 'string',
ui: { ui: {
@ -205,7 +212,7 @@ export class DatatableOrderReportingComponent implements OnInit {
}, },
} as SFDateWidgetSchema, } as SFDateWidgetSchema,
}, },
createTime3: { receivingDate: {
title: '收货时间', title: '收货时间',
type: 'string', type: 'string',
ui: { ui: {
@ -218,7 +225,7 @@ export class DatatableOrderReportingComponent implements OnInit {
} as SFDateWidgetSchema, } as SFDateWidgetSchema,
}, },
loadingPlace: { trajectoryDataAppStatus: {
title: '车辆轨迹', title: '车辆轨迹',
type: 'string', type: 'string',
enum: [ enum: [
@ -234,7 +241,7 @@ export class DatatableOrderReportingComponent implements OnInit {
}, },
} }
}, },
loadingPlace1: { trajectoryDataStatus: {
title: '司机轨迹', title: '司机轨迹',
type: 'string', type: 'string',
enum: [ enum: [
@ -264,48 +271,65 @@ export class DatatableOrderReportingComponent implements OnInit {
initST() { initST() {
this.columns = [ this.columns = [
{ title: '', type: 'checkbox', className: 'text-center', width: '60px', }, { title: '', type: 'checkbox', className: 'text-center', width: '60px', },
{ title: '订单状态', render: 'orderStatus', className: 'text-center', width: '120px', }, { title: '订单状态', render: 'orderCheckStatus', className: 'text-center', width: '120px', },
{ title: '司机状态', render: 'driverStatus', className: 'text-center', width: '120px', }, { title: '司机状态', render: 'driverCheckStatus', className: 'text-center', width: '120px', },
{ title: '车辆状态', render: 'carStatus', className: 'text-center', width: '120px', }, { title: '车辆状态', render: 'carStatus', className: 'text-center', width: '120px', },
{ title: '本地校验', render: 'localValid', className: 'text-center', width: '120px', },
{ title: '本地校验', render: 'checkStatus', className: 'text-center', width: '120px', },
{ {
title: '订单号', title: '订单号',
render: 'billComplianceVOS', render: 'billCode',
className: 'text-center', className: 'text-center',
width: '150px', width: '150px',
}, },
{ title: '运单号', render: 'freightDetails', className: 'text-center', width: '150px', }, { title: '运单号', render: 'wayBillCode', className: 'text-center', width: '150px', },
{ {
title: '网络货运人', title: '网络货运人',
render: 'serviceType', index: 'enterpriseInfoName',
className: 'text-center', className: 'text-center',
width: '180px', width: '180px',
}, },
{ title: '统一社会信用代码', index: 'loadingPlace', render: 'loadingPlace', className: 'text-center', width: '200px' },
{ title: '业务类型', index: 'dischargePlace', render: 'dischargePlace', className: 'text-center', width: '120px' }, { title: '统一社会信用代码', index: 'unifiedSocialCreditCode', render: 'loadingPlace', className: 'text-center', width: '200px' },
{ title: '运单生成时间', render: 'goodsInfoVOList', className: 'text-center', width: '180px' }, { title: '运单生成时间', index: 'wayBillCreateTime', className: 'text-center', width: '180px' },
{ title: '发货时间', render: 'driver2', className: 'text-center', width: '180px' }, { title: '发货时间', index: 'dispatchedDate', className: 'text-center', width: '180px' },
{ title: '收货时间', render: 'payeeName', className: 'text-center', width: '180px' }, { title: '收货时间', index: 'receivingDate', className: 'text-center', width: '180px' },
{ title: '托运人名称', render: 'transportInfo', className: 'text-center', width: '250px' }, { title: '托运人名称', index: 'shipperName', className: 'text-center', width: '250px' },
{ title: '托运人统一社会信用代码', index: 'loadingPlace', render: 'loadingPlace', className: 'text-center', width: '200px' }, { title: '托运人统一社会信用代码', index: 'shipperCreditCode', render: 'loadingPlace', className: 'text-center', width: '200px' },
{ title: '装货地址', index: 'dischargePlace', render: 'dischargePlace', className: 'text-center', width: '200px' }, { title: '装货地址', index: 'loadingAddress', render: 'dischargePlace', className: 'text-center', width: '200px' },
{ title: '收货方名称', render: 'driver1', className: 'text-center', width: '150px' }, { title: '收货方名称', index: 'receivingName', className: 'text-center', width: '150px' },
{ title: '收货地址', render: 'payeeName', className: 'text-center', width: '150px' }, { title: '收货地址', index: 'consigneeAddress', className: 'text-center', width: '150px' },
{ title: '运费金额', render: 'amount', className: 'text-center', width: '250px' }, { title: '运费金额', render: 'freightAmount', className: 'text-center', width: '250px' },
{ title: '车牌号', render: 'payeeName', className: 'text-center', width: '150px' }, { title: '车牌号', index: 'carNo', className: 'text-center', width: '150px' },
{ title: '车牌颜色', render: 'transportInfo', className: 'text-center', width: '250px' }, {
{ title: '司机姓名', render: 'payeeName', className: 'text-center', width: '150px' }, title: '车牌颜色',
{ title: '司机手机号码', render: 'transportInfo', className: 'text-center', width: '200px' }, index: 'carNoColor',
{ title: '司机身份证号', render: 'payeeName', className: 'text-center', width: '150px' }, className: 'text-center',
{ title: '货物信息', render: 'transportInfo', className: 'text-center', width: '180px' }, width: '250px',
{ title: '实际承运人名称', render: 'payeeName', className: 'text-center', width: '150px' }, type: 'enum',
{ title: '实际承运人证件号码', render: 'transportInfo', className: 'text-center', width: '200px' }, enum: {
"4": "绿色",
"3": "黄绿色",
"2": "黄色",
"1": "蓝色"
}
},
{ title: '司机姓名', index: 'driverName', className: 'text-center', width: '150px' },
{ title: '司机手机号码', index: 'driverPhone', className: 'text-center', width: '200px' },
{ title: '司机身份证号', index: 'driverIdentityNo', className: 'text-center', width: '150px' },
{ title: '货物信息', render: 'goodsInfoList', className: 'text-center', width: '180px' },
{ title: '实际承运人名称', index: 'carrierName', className: 'text-center', width: '150px' },
{ title: '实际承运人证件号码', index: 'carrierIdentityNo', className: 'text-center', width: '200px' },
{ title: '实际承运人道路运输许可证号', render: 'payeeName', className: 'text-center', width: '150px' }, { title: '实际承运人道路运输许可证号', render: 'payeeName', className: 'text-center', width: '150px' },
{ title: '车辆轨迹', render: 'car', className: 'text-center', width: '250px' }, { title: '车辆轨迹', render: 'car', className: 'text-center', width: '250px' },
{ title: '司机轨迹', render: 'driver', className: 'text-center', width: '150px' }, { title: '司机轨迹', render: 'driver', className: 'text-center', width: '150px' },
{ title: '上传次数', render: 'transportInfo', className: 'text-center', width: '150px' }, { title: '上传次数', index: 'putNumber', className: 'text-center', width: '150px' },
{ title: '上传时间', render: 'transportInfo', className: 'text-center', width: '180px' }, { title: '上传时间', index: 'recentlyPutTime', className: 'text-center', width: '180px' },
]; ];
} }
@ -455,5 +479,18 @@ export class DatatableOrderReportingComponent implements OnInit {
}) })
} }
filterStatus(status: string) {
switch (status) {
case '0':
return '校验中';
case '1':
return '通过';
case '2':
return '不通过';
default:
return '';
}
}
} }

View File

@ -5,7 +5,7 @@
</nz-tabset> </nz-tabset>
</div> </div>
<div style="width: 90%;"> <div style="width: 90%;">
<st #st [scroll]="{x:'1000px'}" [data]="service.$api_get_order_reporting_page" [columns]="columns" <st #st [scroll]="{x:'1000px',y:'600px'}" [data]="service.$api_get_order_reporting_page" [columns]="columns"
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }" [req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
[res]="{ reName: { list: 'data.records', total: 'data.total' } }" [page]="{ show: false}" [loading]="false" [res]="{ reName: { list: 'data.records', total: 'data.total' } }" [page]="{ show: false}" [loading]="false"
[bordered]="true"> [bordered]="true">

View File

@ -6,7 +6,7 @@ import { BaseService } from '@shared';
}) })
export class ReportingService extends BaseService { export class ReportingService extends BaseService {
$api_get_order_reporting_page = `/api/sdc/billOperate/listWholePage`; // 订单上报列表 $api_get_order_reporting_page = `/api/sdc/regulation/list/page`; // 订单上报列表
$api_recall_reporting = ``; // 撤回 $api_recall_reporting = ``; // 撤回
$api_async_export_order_reporting_list = ``; // 导出订单上报 $api_async_export_order_reporting_list = ``; // 导出订单上报
$api_get_upload_setting = ``; // 修改上传设置 $api_get_upload_setting = ``; // 修改上传设置
@ -16,6 +16,8 @@ export class ReportingService extends BaseService {
$api_fund_reporting_upload = `/api/fcc/fundUploadHead/uploadFundNumber`; // 资金批量上传 $api_fund_reporting_upload = `/api/fcc/fundUploadHead/uploadFundNumber`; // 资金批量上传
$api_fund_reporting_recall = `/api/fcc/fundUploadHead/recallUploadFundNumber`; //资金批量撤回 $api_fund_reporting_recall = `/api/fcc/fundUploadHead/recallUploadFundNumber`; //资金批量撤回
$api_get_fund_valid_result = `/api/fcc/capitalFieldCheck/getCapitalFieldCheckList`; // 查询资金校验表 $api_get_fund_valid_result = `/api/fcc/capitalFieldCheck/getCapitalFieldCheckList`; // 查询资金校验表
constructor(public injector: Injector) { constructor(public injector: Injector) {
super(injector); super(injector);
} }

View File

@ -44,6 +44,20 @@ export class DataService extends BaseService {
$api_listShipperReportPage = `/api/sdc/report/listShipperReportPage`; $api_listShipperReportPage = `/api/sdc/report/listShipperReportPage`;
// 司机报表 // 司机报表
$api_listDriverReportPage = `/api/sdc/report/listDriverReportPage`; $api_listDriverReportPage = `/api/sdc/report/listDriverReportPage`;
// 财务报表柱状图
$api_financialReportHistogram = `/api/sdc/report/financialReportHistogram`;
// 合规监控报表-运费直付占比
$api_getBillRateDirectPayment = `/api/sdc/reportComplianceMonitor/getBillRateDirectPayment`;
// 合规监控报表-货源单占比
$api_getBillRateProportion = `/api/sdc/reportComplianceMonitor/getBillRateProportion`;
// 合规监控报表-订单合格率
$api_getBillRateQualified = `/api/sdc/reportComplianceMonitor/getBillRateQualified`;
// 合规监控报表-付款及时率
$api_getBillTimelyPayment = `/api/sdc/reportComplianceMonitor/getBillTimelyPayment`;
// 合规监控报表-监控报表(折线图)
$api_listMonitorSituation = `/api/sdc/reportComplianceMonitor/listMonitorSituation`;
constructor(public injector: Injector) { constructor(public injector: Injector) {
super(injector); super(injector);

View File

@ -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>

View File

@ -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},
]; ];
} }
} }

View File

@ -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>

View File

@ -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 }
]; ];
} }

View File

@ -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="平台账户余额"

View File

@ -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 }
]; ];
} }

View File

@ -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})` }
}) })
} }
] ]

View 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;

View File

@ -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"
@ -43,3 +43,14 @@
</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>

View File

@ -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)
} }
] ]
} }

View File

@ -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',

View File

@ -59,7 +59,7 @@
<strong class="text-red">{{ selectedRows.length }}</strong> 条数据&nbsp;&nbsp; 累计提现 <strong <strong class="text-red">{{ selectedRows.length }}</strong> 条数据&nbsp;&nbsp; 累计提现 <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>

View File

@ -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>

View File

@ -532,7 +532,7 @@ export class OrderManagementBulkDetailChangeComponent implements OnInit {
} }
], ],
// 运费信息 // 运费信息
// 收款人 // 车队长
payeeId: this.dirverPhone, payeeId: this.dirverPhone,
dirverBankCard: this.dirverBankCard, // 银行卡 dirverBankCard: this.dirverBankCard, // 银行卡
// 发车时间 // 发车时间

View File

@ -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>

View File

@ -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>

View File

@ -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',

View File

@ -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>

View File

@ -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',

View File

@ -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> -->

View File

@ -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.st.load();
this.getGoodsSourceStatistical() 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.msgSrv.success('操作成功!');
// this.st?.reload(1);
// this.getGoodsSourceStatistical();
// this.initST();
// }
// this.st?.reload(1);
// this.getGoodsSourceStatistical();
// })
{ {
this.service.downloadFile(this.service.$api_createBillTakeGoods,{billIds: params.join(',')}) this.service.downloadFile(this.service.$api_createBillTakeGoods,params)
this.service.downloadFile(this.service.$api_createBillDischargeGoods,params)
this.service.msgSrv.success('生成成功!');
this.service.downloadFile(this.service.$api_createBillDischargeGoods,{billIds: params.join(',')})} this.st?.reload()
// this.getGoodsSourceStatistical();
}); }
})
} }
// 获取所属项目 // 获取所属项目
getRegionCode(regionCode: any) { getRegionCode(regionCode: any) {

View File

@ -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>

View File

@ -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('导出成功,请去下载中心下载!');
}
});
}
} }

View File

@ -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>

View File

@ -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, // 银行卡
// 发车时间 // 发车时间

View File

@ -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.
--> -->
@ -20,19 +20,21 @@
<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,18 +143,17 @@
<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">
@ -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> &nbsp;&nbsp;&nbsp;&nbsp; <a *ngIf="i?.contractContent?.contractContent" (click)="agreement('1')">查看附件</a> &nbsp;&nbsp;&nbsp;&nbsp;
<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,7 +222,15 @@
<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">
@ -230,30 +247,33 @@
</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>

View File

@ -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">

View File

@ -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();
} }
}); });
} }

View File

@ -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>

View File

@ -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); //下载完成移除元素
}
}
} }

View File

@ -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}}

View File

@ -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

View File

@ -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';
@ -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 },

View File

@ -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">

View File

@ -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>

View File

@ -34,7 +34,7 @@
已选择 已选择
<strong class="text-red">{{ selectedRows.length }}</strong> 张发票&nbsp;&nbsp; 发票金额总计 <strong class="text-red">{{ selectedRows.length }}</strong> 张发票&nbsp;&nbsp; 发票金额总计
<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"
@ -77,7 +77,7 @@
{{openInfo?.isdetail?'需要':'不需要'}} {{openInfo?.isdetail?'需要':'不需要'}}
</se> </se>
<se [col]="1" label="开票金额" class="mb-sm"> <se [col]="1" label="开票金额" class="mb-sm">
{{openInfo?.vatnotax | currency}} {{openInfo?.vatmoney | currency}}
</se> </se>
<se [col]="1" label="开票日期" required> <se [col]="1" label="开票日期" required>
<nz-date-picker [(ngModel)]="openInfo.invoicedate" nzPlaceHolder="请选择" style=" width: 100%;"> <nz-date-picker [(ngModel)]="openInfo.invoicedate" nzPlaceHolder="请选择" style=" width: 100%;">

View File

@ -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',

View File

@ -123,7 +123,7 @@ export class InputInvoiceComponent implements OnInit {
title: '发票类型', title: '发票类型',
ui: { ui: {
widget: 'dict-select', widget: 'dict-select',
params: { dictKey: 'DictConstants.INVOICE_TYPE' }, params: { dictKey: 'invoice:type' },
placeholder: '请选择', placeholder: '请选择',
visibleIf: { visibleIf: {
expand: (value: boolean) => value expand: (value: boolean) => value

View File

@ -30,6 +30,9 @@
<se label="税额"> <se label="税额">
{{ headerInfo?.vattax | currency }} {{ headerInfo?.vattax | currency }}
</se> </se>
<se label="票面备注">
{{ headerInfo?.remarks }}
</se>
</div> </div>
<div nz-col [nzXl]="8" [nzLg]="8" [nzSm]="8" [nzXs]="8" se-container [labelWidth]="100" col="1"> <div nz-col [nzXl]="8" [nzLg]="8" [nzSm]="8" [nzXs]="8" se-container [labelWidth]="100" col="1">
<se label="购买方"> <se label="购买方">
@ -50,27 +53,24 @@
<se label="银行账户"> <se label="银行账户">
{{ headerInfo?.artoacc }} {{ headerInfo?.artoacc }}
</se> </se>
<se label="票面备注"> <se label="其他要求">
{{ headerInfo?.remarks }} {{headerInfo?.otherremarks || '-'}}
</se> </se>
<!-- <se label="其他要求">
{{headerInfo?.otherremarks}}
</se> -->
</div> </div>
<div *ngIf="isCanEdit" nz-col [nzXl]="8" [nzLg]="8" [nzSm]="8" [nzXs]="8" class="text-right"> <div *ngIf="isCanEdit && selectedIndex===2" nz-col [nzXl]="8" [nzLg]="8" [nzSm]="8" [nzXs]="8" class="text-right">
<ng-container *ngIf="isEdit; else elseTemplate"> <ng-container *ngIf="isEdit; else elseTemplate">
<button nz-button (click)="isEdit = false; invoiceST?.load(1)">取消</button> <button nz-button (click)="isEdit = false; invoiceST?.load(1)">取消</button>
<button nz-button nzType="primary" (click)="saveInvoices()">保 存</button> <button nz-button nzType="primary" (click)="saveInvoices()">保 存</button>
</ng-container> </ng-container>
<ng-template #elseTemplate> <ng-template #elseTemplate>
<!-- <button nz-button nzType="primary" (click)="isEdit = true">修改</button> --> <button nz-button nzType="primary" (click)="isEdit = true">修改</button>
</ng-template> </ng-template>
</div> </div>
</div> </div>
</nz-card> </nz-card>
<nz-card class="search-box" nzBordered> <nz-card class="search-box" nzBordered>
<nz-tabset> <nz-tabset [(nzSelectedIndex)]="selectedIndex">
<nz-tab nzTitle="订单明细"> <nz-tab nzTitle="订单明细">
<div nz-row nzGutter="8" class="mb-md"> <div nz-row nzGutter="8" class="mb-md">
<div nz-col [nzXl]="18" [nzLg]="24" [nzSm]="24" [nzXs]="24"> <div nz-col [nzXl]="18" [nzLg]="24" [nzSm]="24" [nzXs]="24">
@ -85,8 +85,8 @@
</div> </div>
</div> </div>
<st #orderST [scroll]="{ x: '1200px' }" [data]="service.$api_get_invoice_order_detail" [columns]="orderColumns" [page]="{}" <st #orderST [scroll]="{ x: '1200px' }" [data]="service.$api_get_invoice_order_detail" [columns]="orderColumns"
size="small" bordered="true" [req]="{ process: beforeReq }" [loading]="false" [page]="{}" size="small" bordered="true" [req]="{ process: beforeReq }" [loading]="false"
[scroll]="{ x: '1200px', y: '250px' }"></st> [scroll]="{ x: '1200px', y: '250px' }"></st>
</nz-tab> </nz-tab>
<nz-tab nzTitle="费用明细"> <nz-tab nzTitle="费用明细">
@ -103,12 +103,16 @@
</div> </div>
</div> </div>
<st #costST [data]="service.$api_get_invoice_cost_detail" [columns]="costColumns" size="small" bordered="true" [page]="{}" <st #costST [data]="service.$api_get_invoice_cost_detail" [columns]="costColumns" size="small" bordered="true"
[req]="{ process: beforeReq }" [loading]="false" [scroll]="{ x: '1200px', y: '250px' }"></st> [page]="{}" [req]="{ process: beforeReq }" [loading]="false" [scroll]="{ x: '1200px', y: '250px' }">
<ng-template st-row="vatmoney" let-item let-index="index">
{{ item.billLType }}: {{ item.vatmoney |currency }}
</ng-template>
</st>
</nz-tab> </nz-tab>
<nz-tab nzTitle="发票明细"> <nz-tab nzTitle="发票明细">
<st #invoiceST [data]="service.$api_get_invoice_details" [columns]="invoiceColumns" size="small" bordered="true" [page]="{}" <st #invoiceST [data]="service.$api_get_invoice_details" [columns]="invoiceColumns" size="small" bordered="true"
[req]="{ process: beforeReq }" [loading]="false" [scroll]="{ x: '1200px', y: '250px' }"> [page]="{}" [req]="{ process: beforeReq }" [loading]="false" [scroll]="{ x: '1200px', y: '250px' }">
<ng-template st-row="vatname" let-item let-index="index"> <ng-template st-row="vatname" let-item let-index="index">
<nz-select *ngIf="isEdit" [ngModel]="item.owner" <nz-select *ngIf="isEdit" [ngModel]="item.owner"
(ngModelChange)="invoiceST.setRow(index, { vatname: $event })" style="width: 100%"> (ngModelChange)="invoiceST.setRow(index, { vatname: $event })" style="width: 100%">
@ -126,7 +130,7 @@
<ng-container *ngIf="!isEdit">{{ item.vatunit }}</ng-container> <ng-container *ngIf="!isEdit">{{ item.vatunit }}</ng-container>
</ng-template> </ng-template>
<ng-template st-row="vatqty" let-item let-index="index"> <ng-template st-row="vatqty" let-item let-index="index">
<input *ngIf="isEdit" nz-input [ngModel]="item.vatqty" <input *ngIf="isEdit" nz-input [ngModel]="item.vatqty" type="number"
(ngModelChange)="invoiceST.setRow(index, { vatqty: $event })" /> (ngModelChange)="invoiceST.setRow(index, { vatqty: $event })" />
<ng-container *ngIf="!isEdit">{{ item.vatqty }}</ng-container> <ng-container *ngIf="!isEdit">{{ item.vatqty }}</ng-container>
</ng-template> </ng-template>

View File

@ -40,8 +40,10 @@ export class InvoiceDetailComponent implements OnInit {
id: any = null; id: any = null;
ltdId: any = null; ltdId: any = null;
type: any = 1; type: any = 1;
selectedIndex = 0;
constructor(public service: TicketService, private route: ActivatedRoute) { constructor(public service: TicketService, private route: ActivatedRoute) {
this.isCanEdit = !!route.snapshot.queryParams.type; this.isCanEdit = route.snapshot.queryParams.type === '1';
const expressno = route.snapshot.queryParams.expressno; const expressno = route.snapshot.queryParams.expressno;
this.type = route.snapshot.queryParams.type; this.type = route.snapshot.queryParams.type;
this.id = route.snapshot.params.id; this.id = route.snapshot.params.id;
@ -226,10 +228,7 @@ export class InvoiceDetailComponent implements OnInit {
{ title: '税率', index: 'vatrate', format: item => `${item.vatrate ? ((item.vatrate as number) * 100).toFixed(2) : 0}%` }, { title: '税率', index: 'vatrate', format: item => `${item.vatrate ? ((item.vatrate as number) * 100).toFixed(2) : 0}%` },
{ {
title: '申请金额', title: '申请金额',
index: 'vatmoney', render: 'vatmoney'
type: 'widget',
className: 'text-right',
widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.vatmoney }) }
}, },
{ {
title: '开票金额', title: '开票金额',

View File

@ -102,7 +102,7 @@
<strong class="text-red">{{ selectedRows.length }}</strong> 条数据&nbsp;&nbsp; 开票金额总计 <strong <strong class="text-red">{{ selectedRows.length }}</strong> 条数据&nbsp;&nbsp; 开票金额总计 <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>

View File

@ -45,7 +45,7 @@
已选择 已选择
<strong class="text-red">{{ selectedRows.length }}</strong> 条数据&nbsp;&nbsp; 开票金额总计 <strong class="text-red">{{ selectedRows.length }}</strong> 条数据&nbsp;&nbsp; 开票金额总计
<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"

View File

@ -406,6 +406,7 @@ export class InvoiceRequestedComponent {
return [ return [
{ title: '', index: 'key', type: 'checkbox' }, { title: '', index: 'key', type: 'checkbox' },
{ title: '申请编号', render: 'vatappcode', width: 190 }, { title: '申请编号', render: 'vatappcode', width: 190 },
{ title: '发票类型', index: 'vatapptypeLable', width: 140 },
{ title: '网络货运人', index: 'ltdName', width: 170 }, { title: '网络货运人', index: 'ltdName', width: 170 },
{ title: '货主名称', index: 'artoName', width: 170 }, { title: '货主名称', index: 'artoName', width: 170 },
{ title: '订单数', index: 'ordlines', width: 90 }, { title: '订单数', index: 'ordlines', width: 90 },
@ -444,6 +445,7 @@ export class InvoiceRequestedComponent {
params: ({ record }) => ({ value: record.invoicedMoney }) params: ({ record }) => ({ value: record.invoicedMoney })
} }
}, },
{ title: '已开票张数', index: 'invoicedNum', width: 160 },
{ title: '开户行', index: 'bankName', width: 160 }, { title: '开户行', index: 'bankName', width: 160 },
{ title: '银行账户', index: 'bankAccount', width: 140 }, { title: '银行账户', index: 'bankAccount', width: 140 },
{ title: '注册地址', index: 'registerAddr', width: 140 }, { title: '注册地址', index: 'registerAddr', width: 140 },
@ -463,7 +465,7 @@ export class InvoiceRequestedComponent {
{ {
title: '快递是否下单成功', title: '快递是否下单成功',
index: 'expressHSts', index: 'expressHSts',
width: 150, width: 170,
className: 'text-center', className: 'text-center',
type: 'enum', type: 'enum',
enum: { true: '是', false: '否' } enum: { true: '是', false: '否' }

View File

@ -75,7 +75,7 @@ export class TicketService extends ShipperBaseService {
// 获取分票发票明细 // 获取分票发票明细
$api_get_invoice_details = '/api/fcc/ficoVatinvL/getDetailByVatinvHId'; $api_get_invoice_details = '/api/fcc/ficoVatinvL/getDetailByVatinvHId';
// 运营端订单明细开票处理 // 运营端订单明细开票处理
$api_get_applyFicoVatinv = '/api/fcc/ficoVatinvH/applyFicoVatinv'; $api_get_applyFicoVatinv = '/api/fcc/ficoVatinvH/applyBatchFicoVatinv';
// 开票申请列表批量开票 // 开票申请列表批量开票
$api_get_applyBatchFicoVatinv = '/api/fcc/ficoVatinvH/applyBatchFicoVatinv'; $api_get_applyBatchFicoVatinv = '/api/fcc/ficoVatinvH/applyBatchFicoVatinv';
// 删除销项发票抬头 // 删除销项发票抬头

View File

@ -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: '' },
{ label: '直客', value: 1 }, { label: '直客', value: 1 },
{ label: '渠道客户', value: 20 }], { label: '渠道客户', value: 20 }
],
default: '', default: '',
ui: { ui: {
widget: 'select', widget: 'select',

View File

@ -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>

View File

@ -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',

View File

@ -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>

View File

@ -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

View File

@ -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'

View File

@ -176,7 +176,8 @@ 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)
.pipe(
map((res: any) => { map((res: any) => {
if (!res) { if (!res) {
return []; return [];
@ -190,7 +191,8 @@ export class ShipperBaseService extends BaseService {
} }
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 [];
} }