Files
bbq/src/app/routes/ticket-management/components/invoice-detail/invoice-detail.component.ts
Taric Xin 48ce6a1d10 edit
2022-01-19 16:30:12 +08:00

263 lines
7.3 KiB
TypeScript

import { Component, OnInit, ViewChild } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { STComponent, STColumn, STChange, STRequestOptions } from '@delon/abc/st';
import { SFComponent, SFSchema } from '@delon/form';
import { NzModalService } from 'ng-zorro-antd/modal';
import { TicketService } from '../../services/ticket.service';
@Component({
selector: 'app-invoice-detail',
templateUrl: './invoice-detail.component.html',
styleUrls: ['./invoice-detail.component.less']
})
export class InvoiceDetailComponent implements OnInit {
@ViewChild('orderST', { static: true })
orderST!: STComponent;
@ViewChild('orderSf', { static: false })
orderSf!: SFComponent;
orderColumns: STColumn[] = this.initOrderST();
orderSchema: SFSchema = this.initOrderSF();
@ViewChild('costST', { static: true })
costST!: STComponent;
@ViewChild('costSf', { static: false })
costSf!: SFComponent;
costColumns: STColumn[] = this.initCostST();
costSchema: SFSchema = this.initCostSF();
@ViewChild('invoiceST', { static: true })
invoiceST!: STComponent;
invoiceColumns: STColumn[] = this.initInvoiceST();
isCanEdit = false;
isEdit = false;
headerInfo: any = {};
routesInfo: any = {
mailNo: '',
routes: []
};
id: any = null;
constructor(public service: TicketService, private route: ActivatedRoute) {
this.isCanEdit = !!route.snapshot.queryParams.type;
const expressno = route.snapshot.queryParams.expressno;
this.id = route.snapshot.params.id;
this.loadInvoiceHeader(this.id);
if (expressno) {
this.loadRoutes(expressno);
}
}
ngOnInit(): void {}
beforeReq = (requestOptions: STRequestOptions) => {
Object.assign(requestOptions.body, { vatinvHId: this.id });
if (this.orderSf) {
Object.assign(requestOptions.body, { ...this.orderSf.value });
}
if (this.costSf) {
Object.assign(requestOptions.body, { ...this.costSf.value });
}
return requestOptions;
};
loadInvoiceHeader(id: string) {
this.service.request(this.service.$api_get_invoice_header_detail, { id }).subscribe(res => {
console.log(res);
if (res) {
this.headerInfo = res;
}
});
}
loadRoutes(expressno: string) {
this.service.request(this.service.$api_get_express_routes, expressno).subscribe(res => {
console.log(res);
if (res) {
res.routes = res.routes.map((route: any) => ({ time: route.acceptTime, value: route.remark + route.acceptAddress, color: 'gray' }));
this.routesInfo = res;
}
});
}
goBack() {
history.go(-1);
}
saveInvoices() {
console.log(this.invoiceST._data);
this.isEdit = false;
}
/**
* 重置表单
*/
resetSF(tab: number) {
switch (tab) {
case 1:
this.orderSf.reset();
break;
case 2:
this.costSf.reset();
break;
default:
break;
}
}
private initOrderSF(): SFSchema {
return {
properties: {
billHId: {
type: 'string',
title: '订单号',
ui: {
autocomplete: 'off'
}
},
billType: {
type: 'string',
title: '订单类型',
enum: [
{ label: '全部', value: '' },
{ label: '整车', value: 1 },
{ label: '大宗', value: 2 }
],
ui: {
widget: 'select',
placeholder: '请选择'
},
default: ''
},
projectId: {
type: 'string',
title: '所属项目',
ui: {
widget: 'select',
placeholder: '请选择',
allowClear: true,
asyncData: () => this.service.getEnterpriseProject()
},
default: ''
}
}
};
}
private initOrderST(): STColumn[] {
return [
{ title: '订单号', index: 'billHId', width: 140 },
{ title: '订单完成日期', index: 'billTime', type: 'date', width: 150 },
{ title: '所属项目', index: 'projectId', width: 140 },
{ title: '订单类型', index: 'billType', width: 120 },
{ title: '装货地', index: 'loadingfrom', width: 200 },
{ title: '卸货地', index: 'loadingto', width: 200 },
{ title: '货物信息', index: 'goodsinfo', width: 140 },
{ title: '承运司机', index: 'driverinfo', width: 140 },
{
title: '申请金额',
index: 'billkpnotax',
width: 120,
type: 'widget',
className: 'text-right',
widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.billkpnotax }) }
},
{
title: '运输费',
index: 'fjfmoney2',
width: 120,
type: 'widget',
className: 'text-right',
widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.fjfmoney2 }) }
},
{
title: '附加费',
index: 'fjfmoney',
width: 120,
type: 'widget',
className: 'text-right',
widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.fjfmoney }) }
},
{
title: '开票金额',
index: 'billkpmoney',
width: 120,
type: 'widget',
className: 'text-right',
widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.billkpmoney }) }
}
];
}
private initCostSF(): SFSchema {
return {
properties: {
billHId: {
type: 'string',
title: '订单号',
ui: {
autocomplete: 'off'
}
},
feeHId: {
type: 'string',
title: '费用号',
ui: {
autocomplete: 'off'
}
}
}
};
}
private initCostST(): STColumn[] {
return [
{ title: '费用号', index: 'feeHId' },
{ title: '订单号', index: 'billHId' },
{ title: '订单日期', index: 'createTime', type: 'date' },
{ title: '计费日期', index: 'callNo', type: 'date' },
{ title: '税率', index: 'vatrate' },
{
title: '申请金额',
index: 'vatmoney',
type: 'widget',
className: 'text-right',
widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.vatmoney }) }
},
{
title: '开票金额',
index: 'vatnotax',
type: 'widget',
className: 'text-right',
widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.vatnotax }) }
}
];
}
private initInvoiceST(): STColumn[] {
return [
{ title: '服务名称', render: 'vatname', width: 350 },
{ title: '规格型号', render: 'vatmodel' },
{ title: '单位', render: 'vatunit', width: 100 },
{ title: '数量', render: 'vatqty', width: 140, className: 'text-right' },
{
title: '金额',
index: 'vatnotax',
width: 140,
type: 'widget',
className: 'text-right',
widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.vatnotax }) }
},
{ title: '税率', index: 'vatrate', width: 140, className: 'text-right' },
{
title: '税额',
index: 'vattax',
width: 140,
type: 'widget',
className: 'text-right',
widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.vattax }) }
}
];
}
}