/* * @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(); } }