/**
* @Description: 入库明细新增
* @author xioln
* @date 2023-06-21
* @FilePath: applications/dee-mes/src/privateComponents/components/StorageDetailsCreate/index.cue
*/
<template>
  <div class="storageDetails-create">
    <dee-dialog v-if="dialogVisibleDetails" :dialog-visible="dialogVisibleDetails" title="采购入库申请创建" width="90%" @handleClose="handleClose">
      <dee-form
        ref="form"
        :form="form"
        :form-data="formFileds"
        :rules="rules"
        label-width="200px"
        form-btn-position="center"
        :form-buttons="formButtons"
        @on-submit="save"
        @on-cancel="handleClose"
      >
        <!-- <el-button ref="saveButton" :disabled="disabled" :loading="saveLoading" type="primary" size="medium" @click.native="()=>{save()}">确定</el-button>
        <el-button :disabled="disabled" size="medium" @click="handleClose">取消</el-button> -->
      </dee-form>
    </dee-dialog>
  </div>
</template>
<script>
import { post } from '@/utils/http'

export default {
  componentName: '采购入库申请创建',
  name: 'StorageDetailsCreate', // name写在组件的最前方,自定义组件为必填
  components: {},
  props: {
    // basicData: {
    //   type: Object,
    //   default: () => { }
    // }
  },
  data() {
    return {
      dialogVisibleDetails: false,
      disabled: false,
      saveLoading: false,
      header: {},
      billType: '',
      form: {},
      formFileds: [
        {
          split: 3,
          data: []
        }
      ],
      formButtons: [
        {
          text: '提交',
          type: 'submit',
          component: {
            type: 'primary',
            loading: false
          }
        },
        {
          text: '取消',
          type: 'cancel'
        }
      ],
      material: [],
      suppliers: [],
      isChild: false,
      // 表单校验
      rules: {
        resCode: [
          {
            required: true,
            message: '请填写表单信息',
            trigger: ['blur', 'change']
          }
        ],
        resName: [
          {
            required: true,
            message: '请填写表单信息',
            trigger: ['blur', 'change']
          }
        ],
        airModel: [
          {
            required: true,
            message: '请填写表单信息',
            trigger: ['blur', 'change']
          }
        ],
        reqUnit: [
          {
            required: true,
            message: '请填写表单信息',
            trigger: ['blur', 'change']
          }
        ],
        reqAmount: [
          {
            required: true,
            message: '请填写表单信息',
            trigger: ['blur', 'change']
          }
        ],
        supplier: [
          {
            required: true,
            message: '请填写表单信息',
            trigger: ['blur', 'change']
          }
        ],
        arrivalDate: [
          {
            required: true,
            message: '请填写表单信息',
            trigger: ['blur', 'change']
          }
        ],
        withProductMaterial: [
          {
            required: true,
            message: '请填写表单信息',
            trigger: ['blur', 'change']
          }
        ],
        urgency: [
          {
            required: true,
            message: '请填写表单信息',
            trigger: ['blur', 'change']
          }
        ],
        isSupplierY: [
          {
            required: true,
            message: '请填写表单信息',
            trigger: ['blur', 'change']
          }
        ],
        lotNo: [
          {
            required: true,
            message: '请填写表单信息',
            trigger: ['blur', 'change']
          }
        ],
        storageCondition: [
          {
            required: true,
            message: '请填写表单信息',
            trigger: ['blur', 'change']
          }
        ],
        arrivalVer: [
          {
            required: true,
            message: '请填写表单信息',
            trigger: ['blur', 'change']
          }
        ],
        producedTime: [
          {
            required: true,
            message: '请填写表单信息',
            trigger: ['blur', 'change']
          }
        ],
        modelNo: [
          {
            required: true,
            message: '请填写表单信息',
            trigger: ['blur', 'change']
          }
        ],
        sorties: [
          {
            required: true,
            message: '请填写表单信息',
            trigger: ['blur', 'change']
          }
        ],
        serialNo: [
          {
            required: true,
            message: '请填写表单信息',
            trigger: ['blur', 'change']
          }
        ],
        arrivedDrawNo: [
          {
            required: true,
            message: '请填写表单信息',
            trigger: ['blur', 'change']
          }
        ],
        contractNo: [
          {
            required: true,
            message: '请填写表单信息',
            trigger: ['blur', 'change']
          }
        ],
        taxRate: [
          {
            required: true,
            message: '请填写表单信息',
            trigger: ['blur', 'change']
          }
        ],
        taxUnitPrice: [
          {
            required: true,
            message: '请填写表单信息',
            trigger: ['blur', 'change']
          }
        ],
        isVirtual: [
          {
            required: true,
            message: '请填写表单信息',
            trigger: ['blur', 'change']
          }
        ],
        smallType: [
          {
            required: true,
            message: '请填写表单信息',
            trigger: ['blur', 'change']
          }
        ],
        storageZone: [
          {
            required: true,
            message: '请填写表单信息',
            trigger: ['blur', 'change']
          }
        ]
        // purchaseAmount: [{ required: true, message: '请填写表单信息', trigger: ['blur', 'change'] }],
      },
      extMaterialId: '',
      parentId: null,
      operateType: null,
      parentRowId: ''
    }
  },
  computed: {
  },
  watch: {
    // 'form.resCode': {
    //   handler: function(v) {
    //     this.resetMaterial(v)
    //   }
    // }
    // 'basicData': {
    //   handler: function(v) {
    //     console.log('vvv', v)
    //   },
    //   deep: true
    // },
    'form.airModel': {
      handler: function(val) {
        val && this.changeSorties()
      }
    },
    // 1.父级明细不是虚拟件时,含税单价及税率必填,子明细非必填,如果添加子明细时,子明细税率及单价禁用,取值取父级上的
    // 2.父级明细是虚拟件时,含税单价及税率为0且禁用,子明细必填,子明细上的税率及单价也必填
    // 3.子明细添加时查询物料不作限制
    'form.isVirtual': {
      immediate: true,
      handler: function(val) {
        if (this.isChild) return
        let isVirtualFlag = false
        if (val) { // 父级明细是虚拟件时,含税单价及税率为0且禁用
          isVirtualFlag = true
          this.$set(this.form, 'taxRate', 0)
          this.$set(this.form, 'taxUnitPrice', 0)
          this.$set(this.form, 'stockUnitPrice', 0)
          !this.form.stockPrice && this.$set(this.form, 'stockPrice', 0)
          this.$set(this.form, 'taxPrice', 0)
        } else {
          isVirtualFlag = false
        }
        if (this.header.hasTaxExemption === '是') {
          isVirtualFlag = true
        }
        const targetArr = this.formFileds[0].data.filter(item => item.title === '税率' || item.title === '含税单价')
        targetArr.forEach(item => (item.component.disabled = isVirtualFlag))
      }
    },
    isChild: {
      immediate: true,
      handler(val) {
        if (val) return
        let isVirtualFlag = false
        if (this.form.isVirtual) { // 父级明细是虚拟件时,含税单价及税率为0且禁用
          isVirtualFlag = true
          this.$set(this.form, 'taxRate', 0)
          this.$set(this.form, 'taxUnitPrice', 0)
          this.$set(this.form, 'stockUnitPrice', 0)
          !this.form.stockPrice && this.$set(this.form, 'stockPrice', 0)
          this.$set(this.form, 'taxPrice', 0)
        } else {
          isVirtualFlag = false
        }
        const targetArr = this.formFileds[0].data.filter(item => item.title === '税率' || item.title === '含税单价')
        targetArr.forEach(item => (item.component.disabled = isVirtualFlag))
      }
    }
  },
  created() {
    // 初始化数据

  },
  mounted() {
    // this.form.arrivalDate = this.basicData.arrivalDate || ''
  },
  methods: {
    handleOpen(type, basicData, row) {
      this.basicData = basicData
      this.form = { 'reqAmount': 1 }
      this.dialogVisibleDetails = true
      this.operateType = type
      if (type === 'NEW') {
        this.$set(this.form, 'operator', 'ADD')
      } else if (type === 'ADD') {
        this.parentId = row.id || null
        this.parentRowId = row.rowId ? row.rowId : row.id
        this.$set(this.form, 'operator', 'ADD')
        delete row.id
        this.form = JSON.parse(JSON.stringify(row))
        this.$set(this.form, 'supplier', row.extDxSipplierId)
        this.$set(this.form, 'withProductMaterial', Array.isArray(row.withProductMaterial) ? row.withProductMaterial : row.withProductMaterial && row.withProductMaterial.split(';') || [])
        this.resetMaterial(row.extMaterial ? row.extMaterial.resCode : '')
        this.changeMaterial(row.extMaterial ? row.extMaterial.resCode : '')
        this.$set(this.form, 'resCode', '')
        this.$set(this.form, 'resName', '')
        this.$set(this.form, 'reqUnit', '')
        this.$set(this.form, 'modelNo', '')
      } else if (type === 'MODIFY') {
        this.dispalyData(row)
      }
      this.resetForm()
    },
    // 回显数据
    dispalyData(row) {
      this.form = this.$utils.deepClone(row)
      this.$set(this.form, 'operator', row.id && this.basicData.operator !== 'ADD' ? 'MODIFY' : 'ADD')
      row.billType === 'AirEquipment' && this.$set(this.form, 'reqAmount', 1)
      this.$set(this.form, 'resCode', row.extMaterial && row.extMaterial.resCode || row.resCode || '')
      this.$set(this.form, 'resName', row.extMaterial && row.extMaterial.resName || row.resName || '')
      this.$set(this.form, 'reqUnit', row.extMaterial && row.extMaterial.extUnit && row.extMaterial.extUnit.unitName || row.reqUnit || '')
      this.$set(this.form, 'modelNo', row.extMaterial && row.extMaterial.modelNo || row.modelNo || '')
      this.$set(this.form, 'extMaterialId', row.extMaterialId || '')
      this.$set(this.form, 'supplier', row.extDxSipplier && row.extDxSipplier.supplierFullName || row.supplier || '')
      this.$set(this.form, 'storageZoneName', row.storageZone && row.storageZone.extname || '')
      this.$set(this.form, 'storageZone', row.storageZoneId)
      this.$set(this.form, 'withProductMaterial', Array.isArray(row.withProductMaterial) ? row.withProductMaterial : row.withProductMaterial && row.withProductMaterial.split(';') || [])
      this.resetMaterial(row.extMaterial ? row.extMaterial.resCode : row.resCode || '')
      this.changeMaterial(row.extMaterial ? row.extMaterial.resCode : row.resCode || '')
    },
    handleClose() {
      this.dialogVisibleDetails = false
      // this.form = {}
    },
    getBasicData() {
      const v = this.basicData
      if (
        v.billType === 'AirEquipment' &&
        (['标准件', '金属材料', '非金属材料'].includes(v.materialTypeName.label)) &&
        this.formFileds[0].data.find(item => item.title !== '所属设备')
      ) {
        this.formFileds[0].data.unshift({
          title: '所属设备',
          key: 'subEquipment',
          component: {
            clearable: true,
            name: 'el-input',
            placeholder: '请输入所属设备'
          }
        })
        this.$set(this.rules, 'subEquipment', [
          {
            required: true,
            message: '请输入所属设备',
            trigger: ['blur', 'change']
          }
        ])
      }
    },
    // 重设表单
    resetForm() {
      this.header = this.basicData
      if (!this.header) return
      this.$set(this.form, 'supplier', this.header.supplierFullName.label || '')
      this.$set(this.form, 'arrivalDate', this.header.arrivalDate)
      const childrenAddOrEdit = this.header.materialTypeName.label === '外购成品' && (this.operateType === 'ADD' || (this.operateType === 'MODIFY' && !this.form.isRoot))
      const parentIsVirtual = this.form.isVirtual
      let isTaxExemption = false
      if (this.header.hasTaxExemption === '是') {
        isTaxExemption = true
        this.$set(this.form, 'taxRate', 0)
      }
      switch (this.header.billType) {
        case '器材':
        case 'Material':
          this.billType = '器材'
          this.formFileds[0].data = [
            {
              title: '物料关键词',
              key: 'resCode',
              component: {
                clearable: true,
                name: 'el-select',
                placeholder: '请输入物料关键词',
                remote: true,
                filterable: true,
                'remote-method': this.resetMaterial,
                options: []
              },
              handler: {
                change: (v) => this.changeMaterial(v)
              }
            },
            {
              title: '物料编码',
              key: 'resCode',
              component: {
                clearable: true,
                name: 'el-input',
                disabled: true,
                placeholder: '请输入物料名称'
              }
            },
            {
              title: '物料名称',
              key: 'resName',
              component: {
                clearable: true,
                name: 'el-input',
                disabled: true,
                placeholder: '请输入物料编码'
              }
            },
            {
              title: '计量单位',
              key: 'reqUnit',
              component: {
                clearable: true,
                name: 'el-input',
                disabled: true,
                placeholder: '请输入计量单位'
              }
            },
            // { title: '物料类型', key: 'subTypeName', component: { name: 'el-input', disabled: true, placeholder: '请输入物料类型' }},
            // { title: '名称', key: 'resName', component: { name: 'el-input', disabled: true, placeholder: '请输入名称' }},
            // { title: '编号', key: 'number', component: { name: 'el-input', disabled: true, placeholder: '请输入编号' }},
            {
              title: '牌号/型号/件号',
              key: 'modelNo',
              component: {
                clearable: true,
                name: 'el-input',
                disabled: true,
                placeholder: '请输入牌号/型号/件号'
              }
            },
            {
              title: '技术条件',
              key: 'techSpec',
              component: {
                clearable: true,
                name: 'el-input',
                disabled: true,
                placeholder: '请输入技术条件'
              }
            },
            {
              title: '规格',
              key: 'spec',
              component: {
                clearable: true,
                name: 'el-input',
                disabled: true,
                placeholder: '请输入规格'
              }
            },
            {
              title: '供应状态',
              key: 'supplyStatus',
              component: {
                clearable: true,
                name: 'el-input',
                disabled: true,
                placeholder: '请输入供应状态'
              }
            },
            {
              title: '炉/批号',
              key: 'lotNo',
              component: {
                clearable: true,
                name: 'el-input',
                placeholder: '请输入炉/批号'
              }
            },
            {
              title: '机型',
              key: 'airModel',
              component: {
                clearable: true,
                name: 'el-select',
                placeholder: '请输入机型',
                options: []
              },
              change: (v) => {
                v && this.changeSorties()
              }
            },
            {
              title: '架次',
              key: 'sorties',
              component: {
                clearable: true,
                name: 'el-select',
                'allow-create': true,
                placeholder: '请输入架次',
                options: []
              }
            },
            // { title: '采购数量/重量', key: 'purchaseAmount', component: { name: 'el-input-number', placeholder: '请输入采购数量/重量' }},
            // { title: '采购单位', key: 'purchaseUnit', component: { name: 'el-select', placeholder: '请输入采购单位' }},
            {
              title: '入库数量',
              key: 'reqAmount',
              component: {
                clearable: true,
                name: 'el-input-number',
                min: 0,
                placeholder: '请输入入库数量'
              },
              handler: {
                change: () => this.changeComputed()
              }
            },
            {
              title: '供应商',
              key: 'supplier',
              component: {
                name: 'el-select',
                disabled: true,
                placeholder: '请输入供应商'
              },
              handler: {
              }
            },
            // {
            //   title: '是否合格供应商',
            //   key: 'isSupplierY',
            //   component: {
            //     clearable: true,
            //     name: 'el-select',
            //     disabled: true,
            //     placeholder: '请选择是否合格供应商',
            //     options: [
            //       { label: '是', value: true },
            //       { label: '否', value: false }
            //     ]
            //   }
            // },
            {
              title: '制造商',
              key: 'manufacturer',
              component: {
                clearable: true,
                name: 'el-input',
                placeholder: '请输入制造商'
              }
            },
            {
              title: '到货日期',
              key: 'arrivalDate',
              component: {
                clearable: true,
                name: 'el-date-picker',
                disabled: true,
                format: 'yyyy-MM-dd',
                valueFormat: 'yyyy-MM-dd hh:mm:ss',
                placeholder: '请选择到货日期'
              }
            },
            {
              title: '生产日期',
              key: 'producedTime',
              component: {
                clearable: true,
                name: 'el-date-picker',
                format: 'yyyy-MM-dd',
                valueFormat: 'yyyy-MM-dd hh:mm:ss',
                placeholder: '请选择生产日期'
              }
            },
            {
              title: '贮存条件',
              key: 'storageCondition',
              component: {
                clearable: true,
                name: 'el-input',
                placeholder: '请输入贮存条件'
              }
            },
            {
              title: '随产品资料',
              key: 'withProductMaterial',
              component: {
                clearable: true,
                name: 'el-select',
                multiple: true,
                placeholder: '请选择随产品资料',
                options: []
              }
            },
            {
              title: '紧急程度',
              key: 'urgency',
              component: {
                clearable: true,
                name: 'el-select',
                placeholder: '请选择紧急程度',
                options: [
                  { label: '紧急', value: true },
                  { label: '正常', value: false }
                ]
              }
            },
            {
              title: '到货标准',
              key: 'arrivedDrawNo',
              component: {
                clearable: true,
                name: 'el-input',
                placeholder: '请输入到货标准'
              }
            },
            {
              title: '到货版次',
              key: 'arrivalVer',
              component: {
                clearable: true,
                name: 'el-input',
                placeholder: '请输入到货版次'
              }
            },
            {
              title: '入库单价',
              key: 'stockUnitPrice',
              component: {
                clearable: true,
                disabled: true,
                name: 'el-input',
                placeholder: '请输入入库单价'
              }
            },
            {
              title: '税率',
              key: 'taxRate',
              component: {
                disabled: isTaxExemption,
                clearable: true,
                name: 'el-input-number',
                min: 0,
                placeholder: '请输入税率'
              },
              handler: {
                change: () => this.changeComputed()
              }
            },
            {
              title: '入库金额',
              key: 'stockPrice',
              component: {
                clearable: true,
                name: 'el-input',
                disabled: true,
                placeholder: '请输入入库金额'
              }
            },
            {
              title: '含税单价',
              key: 'taxUnitPrice',
              component: {
                clearable: true,
                name: 'el-input-number',
                placeholder: '请输入含税单价'
              },
              handler: {
                change: () => this.changeComputed()
              }
            },
            {
              title: '含税金额',
              key: 'taxPrice',
              component: {
                clearable: true,
                name: 'el-input',
                disabled: true,
                placeholder: '请输入含税金额'
              }
            },
            // { title: '报检人', key: 'userName', component: { name: 'el-input', disabled: true, placeholder: '请输入报检人' }},
            {
              title: '接收仓库',
              key: 'storageZone',
              component: {
                clearable: true,
                name: 'el-select',
                placeholder: '请输入接收仓库',
                options: []
              },
              handler: {
                change: (v) => {
                  const STORAGE = this.formFileds[0].data.find(
                    (item) => item.key === 'storageZone'
                  )
                  const label = STORAGE.component.options.find(item => item.value === v).label
                  this.form.storageZoneName = label
                }
              }
            },
            {
              title: '合同号/框架协议号',
              key: 'contractNo',
              component: {
                clearable: true,
                name: 'el-input',
                placeholder: '请输入合同号'
              }
            },
            {
              title: '制造偏离单号',
              key: 'deviationNo',
              component: {
                clearable: true,
                name: 'el-input',
                placeholder: '请输入制造偏离单号'
              }
            },
            // { title: '订货单号', key: 'purchaseOrderNo', component: { name: 'el-input', placeholder: '请输入订货单号' }},
            {
              title: '备注',
              key: 'remark',
              component: {
                clearable: true,
                name: 'el-input',
                placeholder: '请输入备注'
              }
            }
          ]
          break
        case '机载设备':
        case 'AirEquipment':
          this.billType = '机载设备'
          this.formFileds[0].data = [
            {
              title: '物料关键词',
              key: 'resCode',
              component: {
                clearable: true,
                name: 'el-select',
                placeholder: '请输入物料关键词',
                remote: true,
                filterable: true,
                'remote-method': this.resetMaterial,
                options: []
              },
              handler: {
                change: (v) => this.changeMaterial(v)
              }
            },
            // { title: '物料编码', key: 'resCode', component: { name: 'el-select', placeholder: '请输入物料编码', remote: true, filterable: true, 'remote-method': this.resetMaterial, options: [] }, handler: {
            //   change: v => this.changeMaterial(v)
            // }},
            {
              title: '物料编码',
              key: 'resCode',
              component: {
                clearable: true,
                name: 'el-input',
                disabled: true,
                placeholder: '请输入物料名称'
              }
            },
            {
              title: '物料名称',
              key: 'resName',
              component: {
                clearable: true,
                name: 'el-input',
                disabled: true,
                placeholder: '请输入物料编码'
              }
            },
            {
              title: '计量单位',
              key: 'reqUnit',
              component: {
                clearable: true,
                name: 'el-input',
                disabled: true,
                placeholder: '请输入计量单位'
              }
            },
            // { title: '物料类型', key: 'resType2.typeName', component: { name: 'el-input', disabled: true, placeholder: '请输入物料类型' }},
            // { title: '名称', key: 'resName', component: { name: 'el-input', disabled: true, placeholder: '请输入名称' }},
            {
              title: '牌号/型号/件号',
              key: 'modelNo',
              component: {
                clearable: true,
                name: 'el-input',
                disabled: true,
                placeholder: '请输入牌号/型号/件号'
              }
            },
            {
              title: '系列号',
              key: 'serialNo',
              component: {
                clearable: true,
                name: 'el-input',
                disabled: childrenAddOrEdit,
                placeholder: '请输入系列号'
              }
            },
            {
              title: '机型',
              key: 'airModel',
              component: {
                clearable: true,
                disabled: childrenAddOrEdit,
                name: 'el-select',
                placeholder: '请输入机型',
                options: []
              },
              change: (v) => {
                v && this.changeSorties()
              }
            },
            {
              title: '架次',
              key: 'sorties',
              component: {
                clearable: true,
                'allow-create': true,
                name: 'el-select',
                placeholder: '请输入架次',
                options: []
              }
            },
            {
              title: '入库数量',
              key: 'reqAmount',
              component: {
                clearable: true,
                name: 'el-input-number',
                min: 1,
                disabled: false,
                placeholder: '请输入入库数量'
              },
              handler: {
                change: (v) => {
                  this.changeComputed()
                }
              }
            },
            {
              title: '供应商',
              key: 'supplier',
              component: {
                name: 'el-select',
                disabled: true,
                placeholder: '请输入供应商'
              },
              handler: {
              }
            },
            // {
            //   title: '是否合格供应商',
            //   key: 'isSupplierY',
            //   component: {
            //     clearable: true,
            //     name: 'el-select',
            //     disabled: true,
            //     placeholder: '请选择是否合格供应商',
            //     options: [
            //       { label: '是', value: true },
            //       { label: '否', value: false }
            //     ]
            //   }
            // },
            {
              title: '制造商',
              key: 'manufacturer',
              component: {
                clearable: true,
                disabled: childrenAddOrEdit,
                name: 'el-input',
                placeholder: '请输入制造商'
              }
            },
            {
              title: '到货日期',
              key: 'arrivalDate',
              component: {
                clearable: true,
                name: 'el-date-picker',
                disabled: true,
                format: 'yyyy-MM-dd',
                valueFormat: 'yyyy-MM-dd hh:mm:ss',
                placeholder: '请选择到货日期'
              }
            },
            {
              title: '生产日期',
              key: 'producedTime',
              component: {
                clearable: true,
                disabled: childrenAddOrEdit,
                name: 'el-date-picker',
                format: 'yyyy-MM-dd',
                valueFormat: 'yyyy-MM-dd hh:mm:ss',
                placeholder: '请选择生产日期'
              }
            },
            {
              title: '产品图号/版本',
              key: 'productDwawVer',
              component: {
                clearable: true,
                disabled: childrenAddOrEdit,
                name: 'el-input',
                placeholder: '请输入产品图号/版本'
              }
            },
            {
              title: 'ATP名称',
              key: 'atpName',
              component: {
                clearable: true,
                disabled: childrenAddOrEdit,
                name: 'el-input',
                placeholder: '请输入ATP名称'
              }
            },
            {
              title: 'ATP编号及版次',
              key: 'atpNo',
              component: {
                clearable: true,
                disabled: childrenAddOrEdit,
                name: 'el-input',
                placeholder: '请输入ATP编号及版次'
              }
            },
            {
              title: '软件构型件号/版次',
              key: 'softConfPieceNo',
              component: {
                clearable: true,
                disabled: childrenAddOrEdit,
                name: 'el-input',
                placeholder: '请输入软件构型件号/版次',
                type: 'textarea',
                rows: 3
              }
            },
            {
              title: '电子硬件构型件号/版本',
              key: 'elecHardwareConfPieceNo',
              component: {
                clearable: true,
                disabled: childrenAddOrEdit,
                name: 'el-input',
                placeholder: '请输入电子硬件构型件号/版本',
                type: 'textarea',
                rows: 3
              }
            },
            {
              title: '适航批准标签/批准放行证书',
              key: 'approvalCert',
              component: {
                clearable: true,
                disabled: childrenAddOrEdit,
                name: 'el-input',
                placeholder: '请输入适航批准标签/批准放行证书'
              }
            },
            {
              title: '随产品资料',
              key: 'withProductMaterial',
              component: {
                clearable: true,
                disabled: childrenAddOrEdit,
                name: 'el-select',
                multiple: true,
                placeholder: '请选择随产品资料',
                options: []
              }
            },
            {
              title: '紧急程度',
              key: 'urgency',
              component: {
                clearable: true,
                disabled: childrenAddOrEdit,
                name: 'el-select',
                placeholder: '请选择紧急程度',
                options: [
                  { label: '紧急', value: true },
                  { label: '正常', value: false }
                ]
              }
            },
            {
              title: '是否新研产品',
              key: 'isNewlyProduct',
              component: {
                clearable: true,
                disabled: childrenAddOrEdit,
                name: 'el-select',
                placeholder: '请选择是否新研产品',
                options: [
                  { label: '是', value: true },
                  { label: '否', value: false }
                ]
              }
            },
            {
              title: '入库单价',
              key: 'stockUnitPrice',
              component: {
                clearable: true,
                disabled: true,
                name: 'el-input',
                placeholder: '请输入入库单价'
              }
            },
            {
              title: '税率',
              key: 'taxRate',
              component: {
                clearable: true,
                // disabled: childrenAddOrEdit && !parentIsVirtual,
                disabled: isTaxExemption,
                name: 'el-input-number',
                min: 0,
                placeholder: '请输入税率'
              },
              handler: {
                change: () => this.changeComputed()
              }
            },
            {
              title: '入库金额',
              key: 'stockPrice',
              component: {
                clearable: true,
                name: 'el-input',
                disabled: true,
                placeholder: '请输入入库金额'
              }
            },
            {
              title: '含税单价',
              key: 'taxUnitPrice',
              component: {
                clearable: true,
                disabled: childrenAddOrEdit && !parentIsVirtual,
                name: 'el-input-number',
                placeholder: '请输入含税单价'
              },
              handler: {
                change: () => this.changeComputed()
              }
            },
            {
              title: '含税金额',
              key: 'taxPrice',
              component: {
                clearable: true,
                name: 'el-input',
                disabled: true,
                placeholder: '请输入含税金额'
              }
            },
            // { title: '报检人', key: 'userName', component: { name: 'el-input', disabled: true, placeholder: '请输入报检人' }},
            {
              title: '接收仓库',
              key: 'storageZone',
              component: {
                clearable: true,
                disabled: childrenAddOrEdit,
                name: 'el-select',
                placeholder: '请输入接收仓库',
                options: []
              },
              handler: {
                change: (v) => {
                  const STORAGE = this.formFileds[0].data.find(
                    (item) => item.key === 'storageZone'
                  )
                  const label = STORAGE.component.options.find(item => item.value === v).label
                  this.form.storageZoneName = label
                }
              }
            },
            {
              title: '合同号/框架协议号',
              key: 'contractNo',
              component: {
                clearable: true,
                disabled: childrenAddOrEdit,
                name: 'el-input',
                placeholder: '请输入合同号/框架协议号'
              }
            },
            {
              title: '制造偏离单号',
              key: 'deviationNo',
              component: {
                clearable: true,
                name: 'el-input',
                placeholder: '请输入制造偏离单号'
              }
            },
            // { title: '订货单号', key: 'purchaseOrderNo', component: { name: 'el-input', placeholder: '请输入订货单号' }},
            {
              title: '备注',
              key: 'remark',
              component: {
                clearable: true,
                disabled: childrenAddOrEdit,
                name: 'el-input',
                placeholder: '请输入备注'
              }
            }
          ]
          break
        case '外包产品':
        case 'OutSource':
          this.billType = '外包产品'
          this.formFileds[0].data = [
            {
              title: '物料关键词',
              key: 'resCode',
              component: {
                clearable: true,
                name: 'el-select',
                placeholder: '请输入物料关键词',
                remote: true,
                filterable: true,
                'remote-method': this.resetMaterial,
                options: []
              },
              handler: {
                change: (v) => this.changeMaterial(v)
              }
            },
            // { title: '物料编码', key: 'resCode', component: { name: 'el-select', placeholder: '请输入物料编码', remote: true, filterable: true, 'remote-method': this.resetMaterial, options: [] }, handler: {
            //   change: v => this.changeMaterial(v)
            // }},
            {
              title: '物料编码',
              key: 'resCode',
              component: {
                clearable: true,
                name: 'el-input',
                disabled: true,
                placeholder: '请输入物料编码'
              }
            },
            {
              title: '物料名称',
              key: 'resName',
              component: {
                clearable: true,
                name: 'el-input',
                disabled: true,
                placeholder: '请输入物料名称'
              }
            },
            {
              title: '计量单位',
              key: 'reqUnit',
              component: {
                clearable: true,
                name: 'el-input',
                disabled: true,
                placeholder: '请输入计量单位'
              }
            },
            // { title: '物料类型', key: 'subTypeName', component: { name: 'el-input', disabled: true, placeholder: '请输入物料类型' }},
            // { title: '名称', key: 'resName', component: { name: 'el-input', disabled: true, placeholder: '请输入名称' }},
            {
              title: '牌号/型号/件号',
              key: 'modelNo',
              component: {
                clearable: true,
                name: 'el-input',
                disabled: true,
                placeholder: '请输入牌号/型号/件号'
              }
            },
            {
              title: '生产序列号',
              key: 'serialNo',
              component: {
                clearable: true,
                disabled: childrenAddOrEdit,
                name: 'el-input',
                placeholder: '请输入生产序列号'
              }
            },
            {
              title: '机型',
              key: 'airModel',
              component: {
                clearable: true,
                disabled: childrenAddOrEdit,
                name: 'el-select',
                placeholder: '请输入机型',
                options: []
              },
              handler: {
                change: (v) => {
                  v && this.changeSorties()
                }
              }
            },
            {
              title: '架次',
              key: 'sorties',
              component: {
                clearable: true,
                'allow-create': true,
                name: 'el-select',
                placeholder: '请输入架次',
                options: []
              }
            },
            {
              title: '入库数量',
              key: 'reqAmount',
              component: {
                name: 'el-input-number',
                disabled: childrenAddOrEdit,
                min: 0,
                placeholder: '请输入入库数量'
              },
              handler: {
                change: () => this.changeComputed()
              }
            },
            {
              title: '供应商',
              key: 'supplier',
              component: {
                name: 'el-select',
                disabled: true,
                placeholder: '请输入供应商'
              },
              handler: {
              }
            },
            // {
            //   title: '是否合格供应商',
            //   key: 'isSupplierY',
            //   component: {
            //     clearable: true,
            //     name: 'el-select',
            //     disabled: true,
            //     placeholder: '请选择是否合格供应商',
            //     options: [
            //       { label: '是', value: true },
            //       { label: '否', value: false }
            //     ]
            //   }
            // },
            {
              title: '制造商',
              key: 'manufacturer',
              component: {
                clearable: true,
                disabled: childrenAddOrEdit,
                name: 'el-input',
                placeholder: '请输入制造商'
              }
            },
            {
              title: '到货日期',
              key: 'arrivalDate',
              component: {
                clearable: true,
                name: 'el-date-picker',
                disabled: true,
                format: 'yyyy-MM-dd',
                valueFormat: 'yyyy-MM-dd hh:mm:ss',
                placeholder: '请选择到货日期'
              }
            },
            {
              title: '生产日期',
              key: 'producedTime',
              component: {
                clearable: true,
                disabled: childrenAddOrEdit,
                name: 'el-date-picker',
                format: 'yyyy-MM-dd',
                valueFormat: 'yyyy-MM-dd hh:mm:ss',
                placeholder: '请选择生产日期'
              }
            },
            {
              title: '到货图号',
              key: 'arrivedDrawNo',
              component: {
                clearable: true,
                disabled: childrenAddOrEdit,
                name: 'el-input',
                placeholder: '请输入到货图号'
              }
            },
            {
              title: '到货版次',
              key: 'arrivalVer',
              component: {
                clearable: true,
                disabled: childrenAddOrEdit,
                name: 'el-input',
                placeholder: '请输入到货版次'
              }
            },
            {
              title: '交付规范及版次',
              key: 'deliverySpec',
              component: {
                clearable: true,
                disabled: childrenAddOrEdit,
                name: 'el-input',
                placeholder: '请输入交付规范及版次'
              }
            },
            {
              title: '适航批准标签/批准放行证书',
              key: 'approvalCert',
              component: {
                name: 'el-input',
                disabled: childrenAddOrEdit,
                placeholder: '请输入适航批准标签/批准放行证书'
              }
            },
            {
              title: '随产品资料',
              key: 'withProductMaterial',
              component: {
                clearable: true,
                disabled: childrenAddOrEdit,
                name: 'el-select',
                multiple: true,
                placeholder: '请选择随产品资料',
                options: []
              }
            },
            {
              title: '紧急程度',
              key: 'urgency',
              component: {
                clearable: true,
                disabled: childrenAddOrEdit,
                name: 'el-select',
                placeholder: '请选择紧急程度',
                options: [
                  { label: '紧急', value: true },
                  { label: '正常', value: false }
                ]
              }
            },
            {
              title: '入库单价',
              key: 'stockUnitPrice',
              component: {
                clearable: true,
                disabled: true,
                name: 'el-input',
                placeholder: '请输入入库单价'
              }
            },
            {
              title: '税率',
              key: 'taxRate',
              component: {
                clearable: true,
                // disabled: childrenAddOrEdit && !parentIsVirtual,
                disabled: isTaxExemption,
                name: 'el-input-number',
                min: 0,
                placeholder: '请输入税率'
              },
              handler: {
                change: () => this.changeComputed()
              }
            },
            {
              title: '入库金额',
              key: 'stockPrice',
              component: {
                clearable: true,
                name: 'el-input',
                disabled: true,
                placeholder: '请输入入库金额'
              }
            },
            {
              title: '含税单价',
              key: 'taxUnitPrice',
              component: {
                clearable: true,
                disabled: childrenAddOrEdit && !parentIsVirtual,
                name: 'el-input-number',
                placeholder: '请输入含税单价'
              },
              handler: {
                change: () => this.changeComputed()
              }
            },
            {
              title: '含税金额',
              key: 'taxPrice',
              component: {
                clearable: true,
                name: 'el-input',
                disabled: true,
                placeholder: '请输入含税金额'
              }
            },
            // { title: '报检人', key: 'userName', component: { name: 'el-input', disabled: true, placeholder: '请输入报检人' }},
            {
              title: '接收仓库',
              key: 'storageZone',
              component: {
                clearable: true,
                disabled: childrenAddOrEdit,
                name: 'el-select',
                placeholder: '请输入接收仓库',
                options: []
              },
              handler: {
                change: (v) => {
                  const STORAGE = this.formFileds[0].data.find(
                    (item) => item.key === 'storageZone'
                  )
                  const label = STORAGE.component.options.find(item => item.value === v).label
                  this.form.storageZoneName = label
                }
              }
            },
            {
              title: '合同号/框架协议号',
              key: 'contractNo',
              component: {
                clearable: true,
                disabled: childrenAddOrEdit,
                name: 'el-input',
                placeholder: '请输入合同号'
              }
            },
            {
              title: '制造偏离单号',
              key: 'deviationNo',
              component: {
                clearable: true,
                name: 'el-input',
                placeholder: '请输入制造偏离单号'
              }
            },
            // { title: '订货单号', key: 'purchaseOrderNo', component: { name: 'el-input', placeholder: '请输入订货单号' }},
            {
              title: '备注',
              key: 'remark',
              component: {
                clearable: true,
                disabled: childrenAddOrEdit,
                name: 'el-input',
                placeholder: '请输入备注'
              }
            }
          ]
          break
        default:
          break
      }
      // 外购成品添加明细时
      if (this.header.materialTypeName.label === '外购成品' && !childrenAddOrEdit) {
        this.isChild = false
        this.formFileds[0].data.unshift(
          {
            title: '是否虚拟件',
            key: 'isVirtual',
            component: {
              clearable: true,
              name: 'el-select',
              placeholder: '请选择是否虚拟件',
              options: [
                { label: '否', value: false },
                { label: '是', value: true }
              ]
            }
          }
        )
      }
      // 添加子明细时
      if (childrenAddOrEdit) {
        this.isChild = true
        this.formFileds[0].data.push(
          {
            title: '批次号',
            key: 'lotNo',
            component: {
              clearable: true,
              name: 'el-input',
              placeholder: '请输入批次号'
            }
          },
          {
            title: '子件附件',
            key: 'smallType',
            component: {
              clearable: true,
              name: 'el-select',
              placeholder: '请选择子件附件',
              options: [
                { label: '子件', value: '子件' },
                { label: '附件', value: '附件' }
              ]
            }
          }
        )
      }
      this.getBasicData()
      // 设置物料类型下拉
      this.resetMaterial()
      // 设置带出接收仓库
      this.defaultStorage()
      // 设置带出机型
      this.defaultAirModel()
      // 设置随产品资料
      this.resetProductFiles()
      // 设置供应商
      this.getExtDxSipplier()
    },
    // 设置物料类型下拉
    async resetMaterial(query) {
      if (query && query.length > 1) {
        let paramsArr = []
        await post(
          `/ExtDxProcessResourceType/search`,
          {
            'pageFrom': 1,
            'pageSize': 20,
            'searchItems': {
              'children': [
                {
                  'items': [
                    {
                      'fieldName': 'parentId',
                      'operator': 'EQ',
                      'value': this.basicData.materialTypeId
                    }
                  ],
                  'operator': 'AND'
                }
              ],
              'items': [],
              'operator': 'AND'
            },
            'openProps': [],
            'sortItem': [
              {
                'fieldName': 'modifyTime',
                'sortOrder': 'desc'
              }
            ]
          }
        )
          .then((res) => {
            paramsArr = res.items.content.map(item => {
              return item.id
            })
            paramsArr.push(this.basicData.materialTypeId)
          })
          .catch((err) => {
            console.log(err)
          })
        let parentIdItems = []
        if (!this.isChild) {
          parentIdItems = [
            {
              'fieldName': 'resType2.id',
              'operator': 'IN',
              'value': paramsArr
            }
          ]
        } else {
          parentIdItems = []
        }
        await post(
          `/ExtDxProcessMaterial/search`,
          {
            'pageFrom': 1,
            'pageSize': 20,
            'searchItems': {
              'children': [
                {
                  'items': parentIdItems,
                  'operator': 'AND'
                },
                {
                  'items': [
                    {
                      'fieldName': 'resCode',
                      'operator': 'LIKE',
                      'value': query
                    },
                    {
                      'fieldName': 'resName',
                      'operator': 'LIKE',
                      'value': query
                    },
                    {
                      'fieldName': 'modelNo',
                      'operator': 'LIKE',
                      'value': query
                    },
                    {
                      'fieldName': 'spec',
                      'operator': 'LIKE',
                      'value': query
                    },
                    {
                      'fieldName': 'techSpec',
                      'operator': 'LIKE',
                      'value': query
                    }
                  ],
                  'operator': 'OR'
                }
              ],
              'items': []
            },
            'openProps': [
              {
                'name': 'extUnit'
              },
              {
                'name': 'resType2'
              }
            ],
            'sortItem': [
              {
                'fieldName': 'modifyTime',
                'sortOrder': 'desc'
              }
            ]
          }
        )
          .then((res) => {
            this.material = res.items.content
            const keywordField = this.formFileds[0].data.find(field => field.title === '物料关键词')

            if (keywordField) {
              keywordField.component.options = res.items.content.map(item => {
                const labelParts = []
                if (item.resName) labelParts.push(item.resName + '/')
                if (item.modelNo) labelParts.push(item.modelNo + '/')
                if (item.techSpec) labelParts.push(item.techSpec + '/')
                if (item.spec) labelParts.push(item.spec + '/')
                if (item.supplyStatus) labelParts.push(item.supplyStatus + '/')
                if (item.supplierName) labelParts.push(item.supplierName + '/')

                const label = labelParts.join('')

                return {
                  label,
                  value: item.resCode,
                  disabled: ((this.operateType === 'MODIFY' && !this.form.isRoot) || this.operateType === 'ADD') && (this.form.extMaterial && item.resCode === this.form.extMaterial.resCode)
                }
              })
            }

            // this.formFileds[0].data.forEach(filed => {
            //   if (filed.title === '物料关键词') {
            //     filed.component.options = res.items.content.map(
            //       (item) => {
            //         // 新增或编辑子产品时和父产品物料类型不能一致
            //         if (((this.operateType === 'MODIFY' && !this.form.isRoot) || this.operateType === 'ADD') && item.resCode === this.form.extMaterial.resCode) {
            //           return {
            //             label: `${item.resName ? item.resName + '/' : ''}${item.modelNo ? item.modelNo + '/' : ''
            //             }${item.techSpec ? item.techSpec + '/' : ''}${item.spec ? item.spec + '/' : ''
            //             }${item.supplyStatus ? item.supplyStatus + '/' : ''}${item.supplierName ? item.supplierName + '/' : ''
            //             }`,
            //             value: item.resCode,
            //             disabled: true
            //           }
            //         } else {
            //           return {
            //             label: `${item.resName ? item.resName + '/' : ''}${item.modelNo ? item.modelNo + '/' : ''
            //             }${item.techSpec ? item.techSpec + '/' : ''}${item.spec ? item.spec + '/' : ''
            //             }${item.supplyStatus ? item.supplyStatus + '/' : ''}${item.supplierName ? item.supplierName + '/' : ''
            //             }`,
            //             value: item.resCode
            //           }
            //         }
            //       }
            //     )
            //   }
            // })
          })
          .catch((err) => {
            console.log(err)
          })
      }
    },
    // 默认带出机型
    defaultAirModel() {
      const params = {
        searchItems: {
          'operator': 'AND',
          'items': [
            // {
            //   'fieldName': 'name',
            //   'operator': 'EQ',
            //   'value': ''
            // }
          ]
        }
      }
      this.$api.searchApi('AircraftType', params).then(res => {
        const AIRMODEL = this.formFileds[0].data.find(
          (item) => item.key === 'airModel'
        )
        AIRMODEL.component.options = res.items.content.map((item) => {
          return {
            label: item.defName,
            value: item.defCode
          }
        })
        this.$set(this.form, 'airModel', AIRMODEL.component.options[0].label)
      })
    },
    // 根据机型带出架次
    changeSorties() {
      const params = {
        searchItems: {
          'operator': 'AND',
          'items': [
            {
              'fieldName': 'aircraftType.defCode',
              'operator': 'EQ',
              'value': this.form.airModel
            }
          ]
        }
      }
      this.$api.searchApi('AircraftSorties', params).then(res => {
        const SORTIES = this.formFileds[0].data.find(
          (item) => item.key === 'sorties'
        )
        SORTIES.component.options = res.items.content.map((item) => {
          return {
            label: item.defName,
            value: item.defCode
          }
        })
      })
    },
    // material display
    materialDisplay(id) {
      post(
        `/ExtDxProcessResourceType/search`,
        {
          'pageFrom': 1,
          'pageSize': 9999,
          'searchItems': {
            'children': [
              {
                'items': [
                  {
                    'fieldName': 'id',
                    'operator': 'EQ',
                    'value': id || ''
                  }
                ],
                'operator': 'AND'
              }
            ],
            'items': []
          },
          'openProps': [],
          'sortItem': [
            {
              'fieldName': 'modifyTime',
              'sortOrder': 'desc'
            }
          ]
        },
      )
        .then((res) => {
          console.log('materialDisplay', res)
        })
        .catch((err) => {
          console.log(err)
        })
    },
    // 默认带出接收仓库
    defaultStorage() {
      const params = {
        'pageFrom': 1,
        'pageSize': 9999,
        'searchItems': {
          'children': [
            {
              'items': [{
                'fieldName': 'targetId',
                'operator': 'EQ',
                'value': this.basicData.materialTypeId || ''
              },
              {
                'fieldName': 'source.extDxProductAreaId',
                'operator': 'EQ',
                'value': this.basicData.extDxProductAreaId || ''
              }
              ],
              'operator': 'AND'
            }
          ],
          'items': [],
          'operator': 'AND'
        },
        'openProps': [{ 'name': 'source' }]

      }
      post(`ExtCenterResourceTypeLink/search`, params)
        .then((res) => {
          const STORAGE = this.formFileds[0].data.find(
            (item) => item.key === 'storageZone'
          )
          STORAGE.component.options = res.items.content.map((item) => {
            return {
              label: item.source && item.source.extname,
              value: item.source && item.source.id
            }
          })
        })
        .catch((err) => {
          console.log(err)
        })
    },
    // 切换物料下拉
    changeMaterial(v) {
      // 带出物料相关默认值
      const SELECT_MATERIAL = this.material.find((item) => item.resCode === v)
      if (SELECT_MATERIAL) {
        this.$set(this.form, 'modelNo', SELECT_MATERIAL.modelNo || '/')
        this.$set(this.form, 'techSpec', SELECT_MATERIAL.techSpec || '/')
        this.$set(this.form, 'spec', SELECT_MATERIAL.spec || '/')
        this.$set(this.form, 'supplyStatus', SELECT_MATERIAL.supplyStatus || '/')
        this.$set(this.form, 'reqUnit', SELECT_MATERIAL.extUnit && SELECT_MATERIAL.extUnit.unitName || '/')
        this.$set(this.form, 'resName', SELECT_MATERIAL.resName)
        this.$set(this.form, 'extMaterial', SELECT_MATERIAL)
        // this.extMaterialId = SELECT_MATERIAL.id || ''
        this.extUnitId = SELECT_MATERIAL.extUnitId || ''
      }
    },
    // 供应商ExtDxSipplier/find/recursion
    getExtDxSipplier() {
      const param = {}
      post('ExtDxSipplier/find/recursion', param).then(res => {
        this.formFileds[0].data.forEach(item => {
          item.key === 'supplier' && (item.component.options = res.items.content.map(row => { return { value: row.id, label: `${row.supplierCode}-${row.supplierName}` } }))
        })
      }).catch((err) => {
        console.log(err)
      })
    },
    // 设置随产品资料
    resetProductFiles(value) {
      const PRODUCT = this.formFileds[0].data.find(
        (item) => item.key === 'withProductMaterial'
      )
      switch (this.header.billType) {
        case 'Material':
          PRODUCT.component.options = [
            { label: '合格证', value: '合格证' },
            { label: '试验报告', value: '试验报告' },
            { label: '其他资料', value: '其他资料' }
          ]
          break
        case 'AirEquipment':
          PRODUCT.component.options = [
            { label: '装箱单/发货清单', value: '装箱单/发货清单' },
            { label: '交付资料清单', value: '交付资料清单' },
            { label: '合格证', value: '合格证' },
            { label: '履历本', value: '履历本' },
            {
              label: '适航批准标签/批准放行证书',
              value: '适航批准标签/批准放行证书'
            },
            { label: '不合格品审理单清单', value: '不合格品审理单清单' },
            { label: '不合格品审理单复印件', value: '不合格品审理单复印件' },
            { label: '器材代用单清单', value: '器材代用单清单' },
            { label: '器材代用单复印件', value: '器材代用单复印件' },
            { label: '配套清单及合格证', value: '配套清单及合格证' },
            { label: '备件清单及合格证', value: '备件清单及合格证' },
            { label: '工具清单及合格证', value: '工具清单及合格证' },
            { label: '使用说明书', value: '使用说明书' },
            { label: '维护手册', value: '维护手册' },
            { label: '光盘', value: '光盘' },
            { label: '其他资料', value: '其他资料' }
          ]
          break
        case 'OutSource':
          PRODUCT.component.options = [
            { label: '装箱单/发货清单', value: '装箱单/发货清单' },
            { label: '合格证', value: '合格证' },
            {
              label: '适航批准标签/批准放行证书',
              value: '适航批准标签/批准放行证书'
            },
            { label: '器材合格证', value: '器材合格证' },
            { label: '测量报告/尺寸数据报告', value: '测量报告/尺寸数据报告' },
            { label: '试验报告', value: '试验报告' },
            { label: '器材代用单清单', value: '器材代用单清单' },
            { label: '不合格品审理单清单', value: '不合格品审理单清单' },
            { label: '多余物声明', value: '多余物声明' },
            { label: '光盘', value: '光盘' },
            { label: '其他资料', value: '其他资料' }
          ]
          break
        default:
          break
      }
      if (value) this.$set(this.form, 'withProductMaterial', value)
    },
    // 计算金额
    changeComputed() {
      // 含税金额=含税单价 * 入库数量
      if (this.form.taxUnitPrice && this.form.reqAmount) {
        this.form = Object.assign({}, this.form, {
          taxPrice: (this.form.taxUnitPrice * this.form.reqAmount).toFixed(2)
        })
      } else {
        this.form = Object.assign({}, this.form, { taxPrice: 0 })
      }

      // 入库单价=含税单价/(1+税率/100)
      if (
        this.form.taxUnitPrice &&
        (this.form.taxRate || this.form.taxRate === 0)
      ) {
        this.form = Object.assign({}, this.form, {
          stockUnitPrice: (
            this.form.taxUnitPrice /
            (1 + this.form.taxRate / 100)
          ).toFixed(8)
        })
      } else {
        this.form = Object.assign({}, this.form, { stockUnitPrice: 0 })
      }

      // 入库金额=含税单价/(1+税率/100)* 入库数量
      if (
        this.form.taxUnitPrice &&
        (this.form.taxRate || this.form.taxRate === 0) &&
        this.form.reqAmount
      ) {
        this.form = Object.assign({}, this.form, {
          stockPrice: (
            (this.form.taxUnitPrice / (1 + this.form.taxRate / 100)) *
            this.form.reqAmount
          ).toFixed(2)
        })
      } else {
        this.form = Object.assign({}, this.form, { stockPrice: 0 })
      }
    },
    save() {
      this.$set(this.formButtons[0].component, 'loading', true)
      this.$refs.form.validate((isok) => {
        if (isok) {
          // 校验通过
          const newTableData = {
            ...this.form,
            'operator': this.form.operator,
            'subTypeName': 'InStoragePurchaseItem',
            'rowId': this.form.id || this.generateUUID(),
            'parentId': this.isChild ? this.parentId || this.form.parentId : null,
            'parentRowId': this.parentRowId,
            'extMaterialId': this.form.extMaterial ? this.form.extMaterial.id : this.form.extMaterialId,
            'extMaterialIdType': 'ExtDxProcessMaterial',
            'materialTypeName': this.basicData.materialTypeName.label,
            'purchaseUnitId': this.extUnitId,
            'purchaseUnitIdType': 'ExtUnit',
            // 'isSupplierY': this.basicData.extDxSipplier.isPass === 'Y',
            'lotNo': this.form.lotNo,
            'airModel': this.form.airModel,
            'sorties': this.form.sorties,
            'reqAmount': this.form.reqAmount || 0,
            'extDxSipplierId': this.basicData.extDxSipplierId || '',
            'extDxSipplierIdType': 'ExtDxSipplier',
            'manufacturer': this.form.manufacturer || '/',
            'arrivalDate': this.form.arrivalDate,
            'producedTime': this.form.producedTime,
            'storageCondition': this.form.storageCondition || '/',
            'withProductMaterial': Array.isArray(this.form.withProductMaterial) ? this.form.withProductMaterial.join(';') : this.form.withProductMaterial || '/',
            'urgency': this.form.urgency,
            'arrivedDrawNo': this.form.arrivedDrawNo || '/',
            'arrivalVer': this.form.arrivalVer || '/',
            'stockUnitPrice': this.form.stockUnitPrice || 0,
            'taxRate': this.form.taxRate,
            'stockPrice': this.form.stockPrice || 0,
            'taxUnitPrice': this.form.taxUnitPrice,
            'taxPrice': this.form.taxPrice || 0,
            'storageZoneName': this.form.storageZoneName,
            'storageZoneId': typeof (this.form.storageZone) === 'object' ? this.form.storageZone.id : this.form.storageZone,
            'storageZoneIdType': 'ExtDxProductWorkCenter',
            'inventoryReqId': this.basicData.id,
            'inventoryReqIdType': 'InventoryRequest',
            'contractNo': this.form.contractNo,
            'deviationNo': this.form.deviationNo || '/',
            'isRoot': !this.isChild,
            'subEquipment': this.form.subEquipment || '/',
            'productDwawVer': this.form.productDwawVer || '/',
            'atpName': this.form.atpName || '/',
            'atpNo': this.form.atpNo || '/',
            'softConfPieceNo': this.form.softConfPieceNo || '/',
            'elecHardwareConfPieceNo': this.form.elecHardwareConfPieceNo || '/',
            'approvalCert': this.form.approvalCert || '/',
            'isNewlyProduct': this.form.isNewlyProduct || false,
            'reqUnit': this.form.reqUnit || '/',
            'remark': this.form.remark || '/',
            'operateType': this.operateType,
            'MaterialResCode': this.form.resCode,
            'deliverySpec': this.basicData.deliverySpec || '/',
            'hasTaxExemption': this.header.hasTaxExemption || ''
          }
          newTableData.extMaterial.operator = 'NO_CHANGE'
          this.$emit('addTableData', newTableData)
          this.handleClose()
        }
        this.$set(this.formButtons[0].component, 'loading', false)
      })

      //   post(
      //     '/InStorageRequestItem/recursion',
      //     {
      //       'operator': 'ADD',
      //       'subTypeName': 'InStoragePurchaseItem',
      //       'extMaterialId': this.extMaterialId,
      //       'extMaterialIdType': 'ExtDxProcessMaterial',
      //       'purchaseUnitId': this.extUnitId,
      //       'purchaseUnitIdType': 'ExtUnit',
      //       'lotNo': this.form.lotNo,
      //       'airModel': this.form.airModel,
      //       'sorties': this.form.sorties,
      //       'reqAmount': this.form.reqAmount,
      //       'extDxSipplierId': this.basicData.extDxSipplierId,
      //       'extDxSipplierIdType': 'ExtDxSipplier',
      //       'manufacturer': this.form.manufacturer,
      //       'arrivalDate': this.form.arrivalDate ? this.form.arrivalDate : null,
      //       'producedTime': this.form.producedTime ? this.form.producedTime + ' 00:00:00' : null,
      //       'storageCondition': this.form.storageCondition,
      //       'withProductMaterial': this.form.withProductMaterial ? this.form.withProductMaterial.join(';') : '',
      //       'urgency': this.form.urgency,
      //       'arrivedDrawNo': this.form.arrivedDrawNo,
      //       'arrivalVer': this.form.arrivalVer,
      //       'stockUnitPrice': this.form.stockUnitPrice,
      //       'taxRate': this.form.taxRate,
      //       'stockPrice': this.form.stockPrice,
      //       'taxUnitPrice': this.form.taxUnitPrice,
      //       'taxPrice': this.form.taxPrice,
      //       'storageZoneId': this.form.storageZone,
      //       'storageZoneIdType': 'ExtDxProductWorkCenter',
      //       'inventoryReqId': this.basicData.id,
      //       'inventoryReqIdType': 'InventoryRequest',
      //       'contractNo': this.form.contractNo,
      //       'isRoot': true,
      //       'subEquipment': this.form.subEquipment,
      //       'productDwawVer': this.form.productDwawVer,
      //       'atpName': this.form.atpName,
      //       'atpNo': this.form.atpNo,
      //       'softConfPieceNo': this.form.softConfPieceNo,
      //       'elecHardwareConfPieceNo': this.form.elecHardwareConfPieceNo,
      //       'approvalCert': this.form.approvalCert,
      //       'isNewlyProduct': this.form.isNewlyProduct
      //     }
      //   ).then((res) => {
      //     this.$utils.showMessageSuccess('保存成功')
      //     this.handleClose()
      //   })
      //     .catch((err) => {
      //       console.log(err)
      //     })
    },
    generateUUID() {
      let d = new Date().getTime()
      const uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
        const r = (d + Math.random() * 16) % 16 | 0
        d = Math.floor(d / 16)
        return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16)
      })
      return uuid
    }
  }

}
</script>
<style lang='scss'></style>