225 lines
6.6 KiB
TypeScript
225 lines
6.6 KiB
TypeScript
/*
|
||
* @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();
|
||
}
|
||
}
|