220 lines
6.5 KiB
TypeScript
220 lines
6.5 KiB
TypeScript
import { Component, OnInit, ViewChild } from '@angular/core';
|
||
import { Router } from '@angular/router';
|
||
import { STComponent, STColumn, STChange, STRequestOptions } from '@delon/abc/st';
|
||
import { SFComponent, SFSchema, SFDateWidgetSchema } from '@delon/form';
|
||
import { NzModalService } from 'ng-zorro-antd/modal';
|
||
import { TicketService } from '../../services/ticket.service';
|
||
|
||
@Component({
|
||
selector: 'app-etc-invoiced-logs',
|
||
templateUrl: './etc-invoiced-logs.component.html',
|
||
styleUrls: ['../../../commom/less/box.less', '../../../commom/less/expend-but.less']
|
||
})
|
||
export class ETCInvoicedLogsComponent implements OnInit {
|
||
@ViewChild('st', { static: true })
|
||
st!: STComponent;
|
||
@ViewChild('sf', { static: false })
|
||
sf!: SFComponent;
|
||
columns: STColumn[] = this.initST();
|
||
searchSchema: SFSchema = this.initSF();
|
||
|
||
_$expand = false;
|
||
|
||
constructor(public service: TicketService, private nzModalService: NzModalService, private router: Router) {}
|
||
|
||
ngOnInit(): void {}
|
||
|
||
beforeReq = (requestOptions: STRequestOptions) => {
|
||
if (this.sf) {
|
||
Object.assign(requestOptions.body, {
|
||
...this.sf.value,
|
||
exTime: {
|
||
start: this.sf.value.exTime?.[0] || '',
|
||
end: this.sf.value.exTime?.[1] || ''
|
||
},
|
||
invoiceMakeTime: {
|
||
start: this.sf.value.invoiceMakeTime?.[0] || '',
|
||
end: this.sf.value.invoiceMakeTime?.[1] || ''
|
||
}
|
||
});
|
||
}
|
||
return requestOptions;
|
||
};
|
||
|
||
routeTo(item: any) {
|
||
return;
|
||
this.router.navigate(['/ticket/invoice-requested-detail/1']);
|
||
}
|
||
|
||
/**
|
||
* 重置表单
|
||
*/
|
||
resetSF() {
|
||
this.sf.reset();
|
||
this._$expand = false;
|
||
}
|
||
|
||
/**
|
||
* 伸缩查询条件
|
||
*/
|
||
expandToggle() {
|
||
this._$expand = !this._$expand;
|
||
this.sf?.setValue('/expand', this._$expand);
|
||
}
|
||
|
||
exportList() {
|
||
const params = { listSource: 1, pageSize: -1 };
|
||
if (this.sf) {
|
||
Object.assign(params, {
|
||
...this.sf.value
|
||
});
|
||
}
|
||
this.service.downloadFile(this.service.$api_export_invoice_logs_page, params);
|
||
}
|
||
|
||
private initSF(): SFSchema {
|
||
return {
|
||
properties: {
|
||
expand: {
|
||
type: 'boolean',
|
||
ui: {
|
||
hidden: true
|
||
}
|
||
},
|
||
invoiceNum: {
|
||
type: 'string',
|
||
title: '发票号码',
|
||
ui: {
|
||
placeholder: '请输入',
|
||
autocomplete: 'off'
|
||
}
|
||
},
|
||
billCode: {
|
||
type: 'string',
|
||
title: '订单号',
|
||
ui: {
|
||
placeholder: '请输入'
|
||
}
|
||
},
|
||
waybillCode: {
|
||
type: 'string',
|
||
title: '运单号',
|
||
ui: {
|
||
placeholder: '请输入'
|
||
}
|
||
},
|
||
carNo: {
|
||
type: 'string',
|
||
title: '车牌号',
|
||
ui: {
|
||
placeholder: '请输入',
|
||
visibleIf: {
|
||
expand: (value: boolean) => value
|
||
}
|
||
}
|
||
},
|
||
exTime: {
|
||
title: '交易时间',
|
||
type: 'string',
|
||
ui: {
|
||
widget: 'sl-from-to-search',
|
||
format: 'yyyy-MM-dd',
|
||
visibleIf: {
|
||
expand: (value: boolean) => value
|
||
}
|
||
} as SFDateWidgetSchema
|
||
},
|
||
invoiceMakeTime: {
|
||
title: '开票日期',
|
||
type: 'string',
|
||
ui: {
|
||
widget: 'sl-from-to-search',
|
||
format: 'yyyy-MM-dd',
|
||
visibleIf: {
|
||
expand: (value: boolean) => value
|
||
}
|
||
} as SFDateWidgetSchema
|
||
},
|
||
sellerName: {
|
||
type: 'string',
|
||
title: '销售方',
|
||
ui: {
|
||
placeholder: '请输入',
|
||
visibleIf: {
|
||
expand: (value: boolean) => value
|
||
}
|
||
}
|
||
},
|
||
ltdId: {
|
||
type: 'string',
|
||
title: '网络货运人',
|
||
ui: {
|
||
widget: 'select',
|
||
placeholder: '请选择',
|
||
allowClear: true,
|
||
visibleIf: {
|
||
expand: (value: boolean) => value
|
||
},
|
||
asyncData: () => this.service.getNetworkFreightForwarder()
|
||
},
|
||
default: ''
|
||
}
|
||
}
|
||
};
|
||
}
|
||
|
||
private initST(): STColumn[] {
|
||
return [
|
||
{ title: '发票号码', index: 'invoiceNum', width: 100, type: 'link', click: item => this.routeTo(item) },
|
||
{ title: '发票代码', index: 'invoiceCode', width: 130 },
|
||
{ title: '订单号', index: 'billCode', width: 180 },
|
||
{ title: '运单号', index: 'waybillCode', width: 180 },
|
||
{ title: '入站口', index: 'enStationName', width: 100 },
|
||
{ title: '出站口', index: 'exStationName', width: 100 },
|
||
{ title: '司机', render: 'call3No', width: 140 },
|
||
{ title: '车牌号', index: 'carNo', width: 100 },
|
||
// { title: '里程(km)', index: 'mileage', width: 120 },
|
||
{ title: '交易id', index: 'tradeId', width: 200 },
|
||
{
|
||
title: '交易金额(元)',
|
||
index: 'fee',
|
||
width: 150,
|
||
type: 'widget',
|
||
className: 'text-right',
|
||
widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.fee }) }
|
||
},
|
||
{ title: '税率', index: 'taxRate', width: 90, format: item => `${item.taxRate ? ((item.taxRate as number) * 100).toFixed(2) : 0}%` },
|
||
{
|
||
title: '金额(元)',
|
||
index: 'invoiceAmount',
|
||
width: 120,
|
||
type: 'widget',
|
||
className: 'text-right',
|
||
widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.invoiceAmount }) }
|
||
},
|
||
{
|
||
title: '税额(元)',
|
||
index: 'totalTaxAmount',
|
||
width: 150,
|
||
type: 'widget',
|
||
className: 'text-right',
|
||
widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.totalTaxAmount }) }
|
||
},
|
||
{
|
||
title: '价税合计(元)',
|
||
index: 'totalAmount',
|
||
width: 150,
|
||
type: 'widget',
|
||
className: 'text-right font-weight-bold',
|
||
widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.totalAmount }) }
|
||
},
|
||
{ title: '进站时间', index: 'trafficStartTime', type: 'date', width: 150 },
|
||
{ title: '出站时间', index: 'trafficEndTime', type: 'date', width: 150 },
|
||
{ title: '交易时间', index: 'exTime', type: 'date', width: 150 },
|
||
{ title: '开票日期', index: 'invoiceMakeTime', type: 'date', width: 150 },
|
||
{ title: '销售方', index: 'sellerName', width: 150 },
|
||
{ title: '网络货运人', index: 'enterpriseInfoName', width: 220 }
|
||
];
|
||
}
|
||
}
|