Files
bbq/src/app/routes/order-management/modal/bulk/update-freight/update-freight.component.ts
wangshiming b868555ef4 解决冲突
2022-02-23 14:26:30 +08:00

219 lines
6.2 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-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);
}
}