219 lines
6.2 KiB
TypeScript
219 lines
6.2 KiB
TypeScript
/*
|
||
* @Description :
|
||
* @Version : 1.0
|
||
* @Author : Shiming
|
||
* @Date : 2021-12-14 14:03:07
|
||
* @LastEditors : Shiming
|
||
* @LastEditTime : 2022-02-23 14:23:26
|
||
* @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;
|
||
freightTypeOptions: any;
|
||
|
||
calculateSub!: Subscription;
|
||
constructor(private service: OrderManagementService, private modal: NzModalRef) {}
|
||
|
||
ngOnInit(): void {
|
||
this.schema = this.initSF(this.data);
|
||
this.service.getDictByKey('freight:type').subscribe(res => {
|
||
this.freightTypeOptions = res;
|
||
});
|
||
}
|
||
|
||
/**
|
||
* 初始化表单
|
||
*/
|
||
private initSF(data: any): SFSchema {
|
||
return {
|
||
properties: {
|
||
freightPrice: {
|
||
type: 'number',
|
||
title: '运费单价',
|
||
ui: {
|
||
placeholder: '请输入',
|
||
widget: 'custom',
|
||
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,
|
||
ui: {
|
||
widget: 'dict-select',
|
||
params: { dictKey: 'goodresource:settlement:type' },
|
||
containsAllLabel: false,
|
||
placeholder: '结算依据',
|
||
errors: { required: '请选择结算依据' },
|
||
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
|
||
},
|
||
loadWeight: {
|
||
type: 'number',
|
||
title: '装货重量',
|
||
default: data.loadWeight || 0,
|
||
minimum: 0,
|
||
maximum: 99999,
|
||
ui: {
|
||
unit: '吨',
|
||
placeholder: '请输入',
|
||
grid: {
|
||
span: 12
|
||
},
|
||
hideStep: true,
|
||
change: (val: any) => this.changeNumVal()
|
||
} as SFNumberWidgetSchema
|
||
},
|
||
loadVolume: {
|
||
type: 'number',
|
||
title: '装货体积',
|
||
default: data.loadVolume || 0,
|
||
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 || 0,
|
||
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 || 0,
|
||
minimum: 0,
|
||
maximum: 99999,
|
||
ui: {
|
||
unit: '方',
|
||
placeholder: '请输入',
|
||
grid: {
|
||
span: 12
|
||
},
|
||
hideStep: true,
|
||
change: (val: any) => this.changeNumVal()
|
||
} as SFNumberWidgetSchema
|
||
},
|
||
changeCause: {
|
||
title: '审核备注',
|
||
type: 'string',
|
||
maxLength: 100,
|
||
default: data.changeCause,
|
||
ui: {
|
||
widget: 'textarea',
|
||
span: 24,
|
||
placeholder: '选填,最多不超过100字',
|
||
autosize: {
|
||
minRows: 3,
|
||
maxRows: 5
|
||
}
|
||
} as SFTextWidgetSchema
|
||
},
|
||
},
|
||
required: ['freightPrice', 'settlementBasis']
|
||
};
|
||
}
|
||
|
||
changeNumVal() {
|
||
if (this.calculateSub) {
|
||
this.calculateSub.unsubscribe();
|
||
}
|
||
const params = { billId: this.data.billId, changeCause: this.sf.value.changeCause, dto: {...this.sf.value} }
|
||
this.calculateSub = this.service
|
||
.request(this.service.$api_calculate_cost, params)
|
||
.subscribe((res: any) => {
|
||
if (res) {
|
||
Object.assign(this.data, {
|
||
totalFreight: res.totalFreight,
|
||
freight: res.freight,
|
||
surcharge: res.surcharge
|
||
});
|
||
}
|
||
});
|
||
}
|
||
|
||
save(value: any): void {
|
||
if (!this.sf.valid) {
|
||
this.sf.validator({ emitError: true });
|
||
return;
|
||
}
|
||
const params = { billId: this.data.billId, changeCause: this.sf.value.changeCause, dto: {...this.sf.value} }
|
||
this.service.request(this.service.$api_change_bulk,params).subscribe((res: any) => {
|
||
if (res) {
|
||
this.service.msgSrv.success('变更运费成功!');
|
||
this.modal.destroy(true);
|
||
}
|
||
});
|
||
}
|
||
|
||
close(): void {
|
||
this.modal.destroy(false);
|
||
}
|
||
}
|