/* * @Description : * @Version : 1.0 * @Author : Shiming * @Date : 2021-12-15 13:17:42 * @LastEditors : Shiming * @LastEditTime : 2022-03-24 19:17:10 * @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 = {}; isVisible = false; modalcontent = ''; aggreechecked = false; @Input() data: any; dataJSON: any; calculateSub!: Subscription; constructor(private modal: NzModalRef, private msgSrv: NzMessageService, public service: OrderManagementService) {} ngOnInit(): void { console.log(this.data) this.dataJSON = JSON.stringify(this.data) console.log(this.dataJSON) 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.data.isFreightChangeApplication) { this.service.msgSrv.error('变更申请未处理,请勿重复申请!'); return; } if (!this.save) { this.service.msgSrv.error('请填写必填项!'); return; } 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(false); } /** * 更新数字框 * */ 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, { totalAmount: res.totalAmount, 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; } agreement() { const param = { billId: this.data.id, pre: this.sf.value.prePay, rece: this.sf.value.toPay, back: this.sf.value.receiptPay, total: this.data.totalFreight, freightAmount: this.data.totalAmount, } this.service.request(this.service.$api_getSupplementaryAgreement, param).subscribe(res => { if (res) { this.modalcontent = res.contractContent; this.isVisible = true; } }); } handleCancel() { this.isVisible = false; } handleOK() { this.isVisible = false; } }