/* * @Description : * @Version : 1.0 * @Author : Shiming * @Date : 2021-12-14 14:03:07 * @LastEditors : Shiming * @LastEditTime : 2022-01-24 17:04:28 * @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(); } }