Files
bbq/src/app/routes/order-management/modal/vehicle/update-freight/update-freight.component.ts
wangshiming df5b4ad0ad fix bug
2022-02-14 10:06:21 +08:00

188 lines
5.7 KiB
TypeScript

/*
* @Description :
* @Version : 1.0
* @Author : Shiming
* @Date : 2021-12-15 13:17:42
* @LastEditors : Shiming
* @LastEditTime : 2022-02-14 09:34:18
* @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\modal\\vehicle\\update-freight\\update-freight.component.ts
* Copyright (C) 2022 huzhenhong. All rights reserved.
*/
import { Component, Input, OnInit, ViewChild } from '@angular/core';
import { SFComponent, SFNumberWidgetSchema, SFSchema, SFTextareaWidgetSchema, SFUISchema } from '@delon/form';
import { NzMessageService } from 'ng-zorro-antd/message';
import { NzModalRef } from 'ng-zorro-antd/modal';
import { Subscription } from 'rxjs';
import { OrderManagementService } from '../../../services/order-management.service';
@Component({
selector: 'app-order-management-vehicle-update-freight',
templateUrl: './update-freight.component.html',
styleUrls: ['./update-freight.component.less']
})
export class VehicleUpdateFreightComponent implements OnInit {
@ViewChild('sf', { static: false }) sf!: SFComponent;
schema: SFSchema = {};
ui: SFUISchema = {};
aggreechecked = false;
@Input()
data: any;
calculateSub!: Subscription;
constructor(private modal: NzModalRef, private msgSrv: NzMessageService, public service: OrderManagementService) {}
ngOnInit(): void {
console.log(this.data)
this.initSF(this.data);
}
initSF(data: any) {
const info = {
prePay: data.list?.filter((item: any) => item.costCode === 'PRE')[0],
toPay: data.list?.filter((item: any) => item.costCode === 'RECE')[0],
receiptPay: data.list?.filter((item: any) => item.costCode === 'BACK')[0]
};
this.schema = {
properties: {
prePay: {
type: 'number',
title: '预付',
default: info.prePay?.price || 0,
minimum: 0,
maximum: 99999,
readOnly: info.prePay?.paymentStatus === '2' || info.prePay?.paymentStatus === '4',
ui: {
prefix: '¥',
widgetWidth: 200,
precision: 2,
change: (val: any) => this.changeNumVal()
} as SFNumberWidgetSchema
},
toPay: {
type: 'number',
title: '到付',
default: info.toPay?.price || 0,
minimum: 0,
maximum: 99999,
readOnly: info.toPay?.paymentStatus === '2' || info.toPay?.paymentStatus === '4',
ui: {
prefix: '¥',
widgetWidth: 200,
precision: 2,
change: (val: any) => this.changeNumVal()
} as SFNumberWidgetSchema
},
// oilCardPay: {
// type: 'number',
// title: '油卡',
// default: 0.0,
// minimum:0,
// readOnly: this.i.oilCardPayStatus === '1' || this.i.oilCardPayStatus === '3',
// ui: {
// prefix: '¥',
// widgetWidth: 200,
// precision: 2,
// change: (val: any) => this.changeNumVal()
// } as SFNumberWidgetSchema
// },
receiptPay: {
type: 'number',
title: '回单付',
maximum: 99999,
default: info.receiptPay?.price || 0,
minimum: 0,
readOnly: info.receiptPay?.paymentStatus === '2' || info.receiptPay?.paymentStatus === '4',
ui: {
prefix: '¥',
widgetWidth: 200,
precision: 2,
change: (val: any) => this.changeNumVal()
} as SFNumberWidgetSchema
},
changeCause: {
type: 'string',
title: '变更原因',
maxLength: 100,
ui: {
widget: 'textarea',
autosize: { minRows: 3, maxRows: 6 }
} as SFTextareaWidgetSchema
}
},
required: ['changeCause']
};
this.ui = {
'*': {
spanLabelFixed: 100,
grid: { span: 16 }
}
};
}
save(value: any): void {
if (!this.sf.valid) {
this.service.msgSrv.error('请填写必填项!');
return;
}
console.log(this.getParams())
this.service.request(this.service.$api_get_insertFreightChangeWhole, this.getParams()).subscribe(res => {
if (res) {
this.modal.destroy(true);
this.service.msgSrv.success('变更运费成功');
}
});
}
close(): void {
this.modal.destroy();
}
/**
* 更新数字框
*
*/
changeNumVal() {
if (this.calculateSub) {
this.calculateSub.unsubscribe();
}
this.calculateSub = this.service.request(this.service.$api_getWholeSurchargeDetail, this.getParams()).subscribe((res: any) => {
if (res) {
Object.assign(this.data, {
totalFreight: res.totalFreight,
freight: res.freight,
surcharge: res.surcharge
});
}
});
// this.tranPrice = this.sf.value.prePay + this.sf.value.toPay + this.sf.value.oilCardPay + this.sf.value.receiptPay;
// this.totalPrice = this.sf.value.prePay + this.sf.value.toPay + this.sf.value.oilCardPay + this.sf.value.receiptPay + this.otherPrice;
}
getParams() {
const editItems = this.data.list?.filter((info: any) => info.toPay?.paymentStatus !== '2' && info.toPay?.paymentStatus !== '4');
editItems.forEach((item: any) => {
switch (item.costName) {
case '预付':
item.price = this.sf.value.prePay;
break;
case '到付':
item.price = this.sf.value.toPay;
break;
case '回单付':
item.price = this.sf.value.receiptPay;
break;
default:
break;
}
});
const params = {
billId: this.data.id,
dtos: editItems,
changeCause: this.sf.value.changeCause
};
return params;
}
}