Files
bbq/src/app/routes/order-management/modal/bulk/update-freight/update-freight.component.ts
2022-01-24 16:37:26 +08:00

225 lines
6.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* @Description :
* @Version : 1.0
* @Author : Shiming
* @Date : 2021-12-14 14:03:07
* @LastEditors : Shiming
* @LastEditTime : 2022-01-24 16:28:40
* @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\modal\\bulk\\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, SFSelectWidgetSchema, SFStringWidgetSchema, SFTextWidgetSchema } from '@delon/form';
import { NzModalRef } from 'ng-zorro-antd/modal';
import { Subscription } from 'rxjs';
import { OrderManagementService } from '../../../services/order-management.service';
@Component({
selector: 'app-order-management-update-freight',
templateUrl: './update-freight.component.html',
styleUrls: ['./update-freight.component.less']
})
export class UpdateFreightComponent implements OnInit {
@ViewChild('sf', { static: false }) sf!: SFComponent;
schema!: SFSchema;
@Input()
data: any;
calculateSub!: Subscription;
constructor(private service: OrderManagementService, private modal: NzModalRef) {}
ngOnInit(): void {
this.schema = this.initSF(this.data);
}
/**
* 初始化表单
*/
private initSF(data: any): SFSchema {
return {
properties: {
dto: {
type: 'object',
properties: {
freightPrice: {
type: 'number',
title: '运费单价',
minimum: 0,
maximum: 99999,
ui: {
addOnAfter: data.freightTypeLabel,
placeholder: '请输入',
grid: {
span: 12
},
change: (val: any) => this.changeNumVal()
} as SFStringWidgetSchema,
default: data.freightPrice
},
rule: {
title: '',
type: 'string',
default: data.rule,
enum: [
{ label: '保留小数', value: '1' },
{ label: '抹除小数', value: '2' },
{ label: '抹除个数', value: '3' }
],
ui: {
widget: 'select',
spanLabelFixed: 10,
grid: {
span: 10
}
} as SFSelectWidgetSchema
},
settlementBasis: {
title: '结算依据',
type: 'string',
default: data.settlementBasis,
enum: [
{ label: '以收货为准', value: '1' },
{ label: '以发货为准', value: '2' }
],
ui: {
widget: 'select',
grid: {
span: 12
}
} as SFSelectWidgetSchema
},
blank1: {
title: '',
type: 'string',
ui: { widget: 'text', grid: { span: 12 }, class: 'input-back' },
default: ' '
},
freightType: {
title: '',
type: 'string',
ui: { hidden: true },
default: data.freightType
},
acceptWeight: {
type: 'number',
title: '装货重量',
default: data.acceptWeight,
minimum: 0,
maximum: 99999,
ui: {
unit: '吨',
placeholder: '请输入',
grid: {
span: 12
},
hideStep: true,
change: (val: any) => this.changeNumVal()
} as SFNumberWidgetSchema
},
acceptVolume: {
type: 'number',
title: '装货体积',
default: data.acceptVolume,
minimum: 0,
maximum: 99999,
ui: {
unit: '吨',
placeholder: '请输入',
grid: {
span: 12
},
hideStep: true,
change: (val: any) => this.changeNumVal()
} as SFNumberWidgetSchema
},
settlementWeight: {
type: 'number',
title: '卸货重量',
default: data.settlementWeight,
minimum: 0,
maximum: 99999,
ui: {
unit: '吨',
placeholder: '请输入',
grid: {
span: 12
},
hideStep: true,
change: (val: any) => this.changeNumVal()
} as SFNumberWidgetSchema
},
settlementVolume: {
type: 'number',
title: '卸货体积',
default: data.settlementVolume,
minimum: 0,
maximum: 99999,
ui: {
unit: '吨',
placeholder: '请输入',
grid: {
span: 12
},
hideStep: true,
change: (val: any) => this.changeNumVal()
} as SFNumberWidgetSchema
}
},
required: ['freightPrice', 'settlementBasis']
},
changeCause: {
title: '审核备注',
type: 'string',
maxLength: 100,
default: data.changeCause,
ui: {
widget: 'textarea',
span: 24,
placeholder: '选填最多不超过100字',
autosize: {
minRows: 3,
maxRows: 5
}
} as SFTextWidgetSchema
}
}
};
}
changeNumVal() {
if (this.calculateSub) {
this.calculateSub.unsubscribe();
}
this.calculateSub = this.service
.request(this.service.$api_calculate_cost, { billId: this.data.billId, ...this.sf.value, changeCause: '' })
.subscribe(res => {
if (res) {
Object.assign(this.data, {
totalFreight: res.totalFreight,
freight: res.freight,
surcharge: res.surcharge
});
}
});
}
save(value: any): void {
console.log(this.sf.value)
if (!this.sf.valid) {
this.sf.validator({ emitError: true });
return;
}
this.service.request(this.service.$api_change_bulk, { billId: this.data.billId, ...this.sf.value }).subscribe(res => {
if (res) {
this.service.msgSrv.success('变更运费成功');
this.modal.destroy(true);
}
});
}
close(): void {
this.modal.destroy();
}
}