import { preloaderFinished } from '@delon/theme';
/*
 * @Author: your name
 * @Date: 2021-12-14 14:03:07
 * @LastEditTime: 2021-12-21 14:56:26
 * @LastEditors: Please set LastEditors
 * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 * @FilePath: \tms-obc-web\src\app\routes\order-management\modal\bulk\update-freight\update-freight.component.ts
 */
import { Component, Input, OnInit, ViewChild } from '@angular/core';
import {
  SFComponent,
  SFCustomWidgetSchema,
  SFNumberWidgetSchema,
  SFRadioWidgetSchema,
  SFSchema,
  SFSelectWidgetSchema,
  SFTextareaWidgetSchema,
  SFUISchema
} from '@delon/form';
import { _HttpClient } from '@delon/theme';
import { NzMessageService } from 'ng-zorro-antd/message';
import { NzModalRef } from 'ng-zorro-antd/modal';
import { OrderManagementService } from '../../../services/order-management.service';

@Component({
  selector: 'app-order-management-vehicle-update-freight',
  templateUrl: './update-freight.component.html',
  styleUrls: ['./update-freight.component.less']
})
export class VehicleUpdateFreightComponent implements OnInit {
  @ViewChild('sf', { static: false }) sf!: SFComponent;
  schema: SFSchema = {};
  ui: SFUISchema = {};

  aggreechecked = false;

  @Input()
  data: any;

  constructor(private modal: NzModalRef, private msgSrv: NzMessageService, public service: OrderManagementService) {}

  ngOnInit(): void {
    this.initSF(this.data);
  }
  initSF(data: any) {
    const info = {
      prePay: data.list?.filter((item: any) => item.costCode === 'PRE')[0],
      toPay: data.list?.filter((item: any) => item.costCode === 'RECE')[0],
      receiptPay: data.list?.filter((item: any) => item.costCode === 'BACK')[0]
    };
    this.schema = {
      properties: {
        prePay: {
          type: 'number',
          title: '预付',
          default: info.prePay?.price || 0,
          readOnly: info.prePay?.paymentStatus === '2' || info.prePay?.paymentStatus === '4',
          ui: {
            prefix: '￥',
            widgetWidth: 200,
            precision: 2,
            change: (val: any) => this.changeNumVal()
          } as SFNumberWidgetSchema
        },
        toPay: {
          type: 'number',
          title: '到付',
          default: info.toPay?.price || 0,
          readOnly: info.toPay?.paymentStatus === '2' || info.toPay?.paymentStatus === '4',
          ui: {
            prefix: '￥',
            widgetWidth: 200,
            precision: 2,
            change: (val: any) => this.changeNumVal()
          } as SFNumberWidgetSchema
        },
        // oilCardPay: {
        //   type: 'number',
        //   title: '油卡',
        //   default: 0.0,
        //   readOnly: this.i.oilCardPayStatus === '1' || this.i.oilCardPayStatus === '3',
        //   ui: {
        //     prefix: '￥',
        //     widgetWidth: 200,
        //     precision: 2,
        //     change: (val: any) => this.changeNumVal()
        //   } as SFNumberWidgetSchema
        // },
        receiptPay: {
          type: 'number',
          title: '回单付',
          default: info.receiptPay?.price || 0,
          readOnly: info.receiptPay?.paymentStatus === '2' || info.receiptPay?.paymentStatus === '4',
          ui: {
            prefix: '￥',
            widgetWidth: 200,
            precision: 2,
            change: (val: any) => this.changeNumVal()
          } as SFNumberWidgetSchema
        },
        changeCause: {
          type: 'string',
          title: '变更原因',
          maxLength: 100,
          ui: {
            widget: 'textarea',
            autosize: { minRows: 3, maxRows: 6 }
          } as SFTextareaWidgetSchema
        }
      },
      required: ['changeCause']
    };
    this.ui = {
      '*': {
        spanLabelFixed: 100,
        grid: { span: 16 }
      }
    };
  }

  save(value: any): void {
    const editItems = this.data.list?.filter((info: any) => info.toPay?.paymentStatus !== '2' && info.toPay?.paymentStatus !== '4');
    editItems.forEach((item: any) => {
      switch (item.costName) {
        case '预付':
          item.price = this.sf.value.prePay;
          break;
        case '到付':
          item.price = this.sf.value.toPay;
          break;
        case '回单付':
          item.price = this.sf.value.receiptPay;
          break;
        default:
          break;
      }
    });

    const params = {
      billId: this.data.id,
      dtos: editItems,
      changeCause: this.sf.value.changeCause
    };

    this.service.request(this.service.$api_get_insertFreightChangeWhole, params).subscribe((res: any) => {
      if (res) {
        this.modal.destroy();
        this.service.msgSrv.success('变更运费成功');
      }
    });
  }

  close(): void {
    this.modal.destroy();
  }
  /**
   * 更新数字框
   *
   */
  changeNumVal() {
    // this.tranPrice = this.sf.value.prePay + this.sf.value.toPay + this.sf.value.oilCardPay + this.sf.value.receiptPay;
    // this.totalPrice = this.sf.value.prePay + this.sf.value.toPay + this.sf.value.oilCardPay + this.sf.value.receiptPay + this.otherPrice;
  }
}
