<template>
  <div style="display: inline-block;margin-right: 10px">
    <el-button size="mini" @click="visible = true" type="text">{{ title }}</el-button>
    <el-dialog
      :title="title + ' - ' + warehousing.orderNo"
      :visible.sync="visible"
      width="1280px"
    >
      <el-tabs v-model="activeName" type="card">
        <el-tab-pane :label="edit ? $t('货物修改') : $t('货物入仓')" name="first">
          <el-form ref="form" :model="form" :rules="formRules" label-width="80px">
            <el-descriptions border :column="2">
              <el-descriptions-item>
                <template slot="label"><span style="color: red">*</span>{{ $t('中文品名') }}</template>
                <product-selector v-if="!order.parentOrderId && !isAdd" v-model="form.prodId" @change="onProductChange"/>
                <span v-else>{{ warehousing.prodTitleZh }}</span>
              </el-descriptions-item>
              <el-descriptions-item>
                <template slot="label"><span style="color: red">*</span>{{ $t('英文品名') }}</template>
                <product-selector v-if="!order.parentOrderId && !isAdd" lang="En" v-model="form.prodId" @change="onProductChange"/>
                <span v-else>{{ warehousing.prodTitleEn }}</span>
              </el-descriptions-item>
              <el-descriptions-item :label="$t('品牌')">
                <template slot="label"><span style="color: red">*</span>{{ $t('品牌') }}</template>
                <el-form-item required label="" prop="brand" label-width="0">
                  <el-select
                    v-model="form.brand"
                    :placeholder="$t('可修改')"
                    filterable
                    remote
                    @change="handleBrandChange"
                    :remote-method="getProductBrandPage"
                    clearable>
                    <el-option
                      v-for="item in brandList"
                      :key="item.id"
                      :label="item.titleZh"
                      :value="item.id">
                    </el-option>
                  </el-select>
                </el-form-item>
              </el-descriptions-item>
              <el-descriptions-item :label="$t('是否备案')">
                <template slot="label"><span style="color: red">*</span>{{ $t('是否备案') }}</template>
                {{ isBeian }}
              </el-descriptions-item>
              <el-descriptions-item :label="$t('收费模式')">
                <template slot="label"><span style="color: red">*</span>{{ $t('收费模式') }}</template>
                {{ feeType }}
              </el-descriptions-item>
              <el-descriptions-item :label="$t('填单参数')">{{ $t('箱数:') }}<el-input size="mini" v-if="edit" v-model="warehousing.num" style="display: inline-block;width: 100px"></el-input>
                <span v-else>{{ warehousing.num }}</span><br>{{ $t('体积:') }}<el-input size="mini" v-if="edit" v-model="warehousing.volume" style="display: inline-block;width: 100px"></el-input>
                <span v-else>{{ warehousing.volume }}</span>m³<br>{{ $t('重量:') }}<el-input size="mini" v-if="edit" v-model="warehousing.weight" style="display: inline-block;width: 100px"></el-input>
                <span v-else>{{ warehousing.weight }}</span>Kg
              </el-descriptions-item>
            </el-descriptions>
            <el-form-item :label="$t('材质')" style="margin-top: 20px">
              <dict-selector :type="DICT_TYPE.ECW_PRODUCT_MATERIAL" v-model="form.material" clearable></dict-selector>
            </el-form-item>
            <el-form-item :label="$t('入仓时间')" v-if="!edit">
              <el-date-picker v-model="form.inTime" type="datetime" :placeholder="$t('请选择入仓时间')" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
            </el-form-item>
          </el-form>

          <el-card class="box-card">
            <div slot="header" class="clearfix">
              <span>{{ $t('入仓记录') }}</span>
              <el-button style="float: right;margin-left: 15px" size="mini" type="primary" icon="el-icon-minus" circle @click="handleDelete" :disabled="form.table.length < protectRowCount"></el-button>
              <el-button style="float: right" size="mini" type="primary" icon="el-icon-plus" circle @click="handleAdd()"></el-button>
            </div>
            <el-form ref="tableForm" :rules="tableFormRules" :model="form" size="mini">
              <el-table
                :data="form.table"
                style="width: 100%">
                <el-table-column :label="$t('箱数')" width="150px">
                  <template v-slot:header>
                    <span style="color: red">*</span>{{ $t('箱数') }}</template>
                  <template v-slot="{r,c,$index}">
                    <el-form-item :rules="tableFormRules.cartonsNum">
                      <el-input v-model="form.table[$index].cartonsNum" placeholder="" @blur="handleVolume($index)" :disabled="$index < protectRowCount">
                        <span slot="append">{{ getDictDataLabel(DICT_TYPE.WAREHOUSING_SPECIFICATION_TYPE, form.table[$index].specificationType) }}</span>
                      </el-input>
                      <dict-selector :disabled="$index < protectRowCount" :type="DICT_TYPE.WAREHOUSING_SPECIFICATION_TYPE" v-model="form.table[$index].specificationType" @change="handleVolume($index)"></dict-selector>
                    </el-form-item>
                  </template>
                </el-table-column>
                <el-table-column :label="$t('包装类型')" width="100px">
                  <template v-slot:header>
                    <span style="color: red">*</span>{{ $t('包装类型') }}</template>
                  <template v-slot="{r,c,$index}">
                    <el-form-item>
                      <dict-selector :disabled="$index < protectRowCount" :type="DICT_TYPE.ECW_PACKAGING_TYPE" v-model="form.table[$index].unit"></dict-selector>
                    </el-form-item>
                  </template>
                </el-table-column>
                <el-table-column label="长(cm)">
                  <template v-slot:header>
                    <span>{{ $t('长') }}</span>(cm)
                  </template>
                  <template v-slot="{r,c,$index}">
                    <el-form-item :rules="tableFormRules.boxGauge1">
                      <el-input :disabled="$index < protectRowCount" type="number" v-model="form.table[$index].boxGauge1" placeholder="" @blur="handleVolume($index)"></el-input>
                    </el-form-item>
                  </template>
                </el-table-column>
                <el-table-column label="宽(cm)">
                  <template v-slot:header>
                    <span>{{ $t('宽') }}</span>(cm)
                  </template>
                  <template v-slot="{r,c,$index}">
                    <el-form-item :rules="tableFormRules.boxGauge2">
                      <el-input :disabled="$index < protectRowCount" type="number" v-model="form.table[$index].boxGauge2" placeholder="" @blur="handleVolume($index)"></el-input>
                    </el-form-item>
                  </template>
                </el-table-column>
                <el-table-column label="高(cm)">
                  <template v-slot:header>
                    <span>{{ $t('高') }}</span>(cm)
                  </template>
                  <template v-slot="{r,c,$index}">
                    <el-form-item :rules="tableFormRules.boxGauge3">
                      <el-input :disabled="$index < protectRowCount" type="number" v-model="form.table[$index].boxGauge3" placeholder="" @blur="handleVolume($index)"></el-input>
                    </el-form-item>
                  </template>
                </el-table-column>
                <el-table-column label="体积(m³)">
                  <template v-slot:header>
                    <span style="color: red">*</span> <span>{{ $t('体积') }}</span>(m³)
                  </template>
                  <template v-slot="{r,c,$index}">
                    <el-form-item :rules="tableFormRules.volume">
                      <el-input :disabled="$index < protectRowCount" v-model="form.table[$index].volume" placeholder="" type="number"></el-input>
                    </el-form-item>
                  </template>
                </el-table-column>
                <el-table-column label="重量(Kg)">
                  <template v-slot:header>
                    <span style="color: red">*</span> <span>{{ $t('重量') }}</span>(Kg)
                  </template>
                  <template v-slot="{r,c,$index}">
                    <el-form-item :rules="tableFormRules.weight">
                      <el-input :disabled="$index < protectRowCount" v-model="form.table[$index].weight" placeholder="" type="number"></el-input>
                    </el-form-item>
                  </template>
                </el-table-column>
                <el-table-column :label="$t('数量')" width="130px">
                  <template v-slot="{r,c,$index}">
                    <el-form-item :rules="tableFormRules.quantityAll">
                      <el-input :disabled="$index < protectRowCount" v-model.number="form.table[$index].quantityAll" placeholder="">
                        <template slot="append">{{ $t('个') }}</template>
                      </el-input>
                    </el-form-item>
                  </template>
                </el-table-column>
                <el-table-column :label="$t('快递单号')">
                  <template v-slot="{r,c,$index}">
                    <el-form-item>
                      <el-input :disabled="$index < protectRowCount" v-model="form.table[$index].expressNo" placeholder=""></el-input>
                    </el-form-item>
                  </template>
                </el-table-column>
                <el-table-column :label="$t('储位')" prop="orderLocationBackVOList"  width="150px">
                  <template v-slot="{ row, column, $index }">
                    <warehouse-area-select
                      v-if="visible"
                      v-model="form.table[$index].orderLocationBackVOList"
                      :order-id="orderId"
                      :order-item-id="warehousing.orderItemId"
                      :warehouse-in-id="form.table[$index].id"
                      :warehouse-id="warehouseId"
                      :is-editing="edit"></warehouse-area-select>
                  </template>
                </el-table-column>
              </el-table>

            </el-form>
          </el-card>
        </el-tab-pane>


        <el-tab-pane :label="$t('添加新品名')" name="second" v-if="!edit">
          <el-form ref="form1" :model="form1" :rules="formRules" label-width="80px">
            <el-descriptions border :column="2">
              <el-descriptions-item>
                <template slot="label"><span style="color: red">*</span>{{ $t('中文品名') }}</template>
                <el-form-item required label="" prop="prodId" label-width="0">
                  <product-selector v-model="form1.prodId" @change="onProductChange1"/>
                </el-form-item>
              </el-descriptions-item>
              <el-descriptions-item>
                <template slot="label"><span style="color: red">*</span>{{ $t('英文品名') }}</template>
                <el-form-item required label="" prop="prodId" label-width="0">
                  <product-selector lang="En" v-model="form1.prodId" @change="onProductChange1"/>
                </el-form-item>
              </el-descriptions-item>
              <el-descriptions-item :label="$t('品牌')">
                <template slot="label"><span style="color: red">*</span>{{ $t('品牌') }}</template>
                <el-form-item required label="" prop="brand" label-width="0">
                  <el-select
                    v-model="form1.brand"
                    :placeholder="$t('可修改')"
                    filterable
                    remote
                    @change="handleBrandChange"
                    :remote-method="getProductBrandPage1"
                    clearable>
                    <el-option
                      v-for="item in brandList1"
                      :key="item.id"
                      :label="item.titleZh"
                      :value="item.id">
                    </el-option>
                  </el-select>
                </el-form-item>
              </el-descriptions-item>
              <el-descriptions-item :label="$t('是否备案')">
                <template slot="label"><span style="color: red">*</span>{{ $t('是否备案') }}</template>
                {{ isBeian1 }}
              </el-descriptions-item>
              <el-descriptions-item :label="$t('收费模式')">
                <template slot="label"><span style="color: red">*</span>{{ $t('收费模式') }}</template>
                {{ feeType1 }}
              </el-descriptions-item>
              <el-descriptions-item :label="$t('填单参数')">{{ $t('非填单货物') }}</el-descriptions-item>
            </el-descriptions>
            <el-form-item :label="$t('材质')" style="margin-top: 20px">
              <dict-selector :type="DICT_TYPE.ECW_PRODUCT_MATERIAL" v-model="form1.material"></dict-selector>
            </el-form-item>
            <el-form-item :label="$t('入仓时间')">
              <el-date-picker v-model="form1.inTime" type="datetime" :placeholder="$t('请选择入仓时间')" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
            </el-form-item>
          </el-form>

          <el-card class="box-card">
            <div slot="header" class="clearfix">
              <span>{{ $t('入仓记录') }}</span>
              <el-button style="float: right;margin-left: 15px" size="mini" type="primary" icon="el-icon-minus" circle @click="handleDelete(1)"></el-button>
              <el-button style="float: right" size="mini" type="primary" icon="el-icon-plus" circle @click="handleAdd(1)"></el-button>
            </div>
            <el-form ref="tableForm1" :model="form1" :rules="tableFormRules" size="mini">
              <el-table
                :data="form1.table"
                style="width: 100%">
                <el-table-column :label="$t('箱数')" width="150px">
                  <template v-slot:header>
                    <span style="color: red">*</span>{{ $t('箱数') }}</template>
                  <template v-slot="{r,c,$index}">
                    <el-form-item>
                      <span v-if="form1.table[$index].id">
                        {{ form1.table[$index].cartonsNum }}
                        {{ getDictDataLabel(DICT_TYPE.ECW_PACKAGING_TYPE, form1.table[$index].unit) }}
                      </span>
                      <el-input v-else v-model="form1.table[$index].cartonsNum" placeholder="">
                        <span slot="append">{{ getDictDataLabel(DICT_TYPE.ECW_PACKAGING_TYPE, form1.table[$index].unit) }}</span>
                      </el-input>
                      <dict-selector :type="DICT_TYPE.WAREHOUSING_SPECIFICATION_TYPE" v-model="form1.table[$index].specificationType" @change="handleVolume($index, 1)"></dict-selector>
                    </el-form-item>
                  </template>
                </el-table-column>
                <el-table-column :label="$t('包装类型')" width="100px">
                  <template v-slot:header>
                    <span style="color: red">*</span>{{ $t('包装类型') }}</template>
                  <template v-slot="{r,c,$index}">
                    <el-form-item>
                      <span v-if="form1.table[$index].id">{{ getDictDataLabel(DICT_TYPE.ECW_PACKAGING_TYPE, form1.table[$index].unit) }}</span>
                      <dict-selector v-else :type="DICT_TYPE.ECW_PACKAGING_TYPE" v-model="form1.table[$index].unit"></dict-selector>
                    </el-form-item>
                  </template>
                </el-table-column>
                <el-table-column label="长(cm)">
                  <template v-slot:header>
                    <span>{{ $t('长') }}</span>(cm)
                  </template>
                  <template v-slot="{r,c,$index}">
                    <el-form-item>
                      <span v-if="form1.table[$index].id">{{ form1.table[$index].boxGauge ? form1.table[$index].boxGauge.split('*')[0] : '' }}</span>
                      <el-input v-else type="number" v-model="form1.table[$index].boxGauge1" placeholder="" @blur="handleVolume($index, 1)"></el-input>
                    </el-form-item>
                  </template>
                </el-table-column>
                <el-table-column label="宽(cm)">
                  <template v-slot:header>
                    <span>{{ $t('宽') }}</span>(cm)
                  </template>
                  <template v-slot="{r,c,$index}">
                    <el-form-item>
                      <span v-if="form1.table[$index].id">{{ form1.table[$index].boxGauge ? form1.table[$index].boxGauge.split('*')[1] : '' }}</span>
                      <el-input v-else type="number" v-model="form1.table[$index].boxGauge2" placeholder="" @blur="handleVolume($index, 1)"></el-input>
                    </el-form-item>
                  </template>
                </el-table-column>
                <el-table-column label="高(cm)">
                  <template v-slot:header>
                    <span>{{ $t('高') }}</span>(cm)
                  </template>
                  <template v-slot="{r,c,$index}">
                    <el-form-item>
                      <span v-if="form1.table[$index].id">{{ form1.table[$index].boxGauge ? form1.table[$index].boxGauge.split('*')[2] : '' }}</span>
                      <el-input v-else type="number" v-model="form1.table[$index].boxGauge3" placeholder="" @blur="handleVolume($index, 1)"></el-input>
                    </el-form-item>
                  </template>
                </el-table-column>
                <el-table-column label="体积(m³)">
                  <template v-slot:header>
                    <span style="color: red">*</span> <span>{{ $t('体积') }}</span>(m³)
                  </template>
                  <template v-slot="{r,c,$index}">
                    <el-form-item>
                      <span v-if="form1.table[$index].id">{{ form1.table[$index].volume }}</span>
                      <el-input v-else type="number" v-model="form1.table[$index].volume" placeholder=""></el-input>
                    </el-form-item>
                  </template>
                </el-table-column>
                <el-table-column label="重量(Kg)">
                  <template v-slot:header>
                    <span style="color: red">*</span> <span>{{ $t('重量') }}</span>(Kg)
                  </template>
                  <template v-slot="{r,c,$index}">
                    <el-form-item>
                      <span v-if="form1.table[$index].id">{{ form1.table[$index].weight }}</span>
                      <el-input v-else type="number" v-model="form1.table[$index].weight" placeholder=""></el-input>
                    </el-form-item>
                  </template>
                </el-table-column>
                <el-table-column :label="$t('数量')" width="130px">
                  <template v-slot="{r,c,$index}">
                    <el-form-item>
                      <span v-if="form1.table[$index].id">{{ form1.table[$index].quantityAll }}</span>
                      <el-input v-else v-model.number="form1.table[$index].quantityAll" placeholder="">
                        <template slot="append">{{ $t('个') }}</template>
                      </el-input>
                    </el-form-item>
                  </template>
                </el-table-column>
                <el-table-column :label="$t('快递单号')">
                  <template v-slot="{r,c,$index}">
                    <el-form-item>
                      <span v-if="form1.table[$index].id">{{ form1.table[$index].expressNo }}</span>
                      <el-input v-else v-model="form1.table[$index].expressNo" placeholder=""></el-input>
                    </el-form-item>
                  </template>
                </el-table-column>
                <el-table-column :label="$t('储位')" prop="orderLocationBackVOList"  width="150px">
                  <template v-slot="{ row, column, $index }">
                    <warehouse-area-select
                      v-model="form1.table[$index].orderLocationBackVOList"
                      :readonly="form1.table[$index].id && !edit"
                      :order-id="orderId"
                      :order-item-id="warehousing.orderItemId"
                      :warehouse-in-id="form1.table[$index].id"
                      :warehouse-id="warehouseId"
                      :is-editing="edit"></warehouse-area-select>
                  </template>
                </el-table-column>
              </el-table>
            </el-form>
          </el-card>

        </el-tab-pane>
      </el-tabs>

      <div v-if="edit && order.status !== 3">
        <h2>{{ $t('审批流程') }}</h2>
        <work-flow xmlkey="free_apply" v-model="selectedUsers"  />
        <!--        <div>选择的用户:{{selectedUsers}}</div>-->
      </div>

      <span slot="footer">
        <template v-if="!isEditing">
          <el-button @click="handleClose">{{ $t('关 闭') }}</el-button>
          <el-button type="primary" @click="handleSubmit()">{{ edit ? $t('确认修改') : $t('提 交') }}</el-button>
        </template>
        <template v-else>
          <el-button type="primary" @click="$router.push('/bpm/process-instance/detail?id=' + formId)">{{ $t('审核中') }}</el-button>
          <el-button type="primary" @click="handleCancelProcessInstance">{{ $t('取消审核') }}</el-button>
          <el-button @click="handleClose">{{ $t('返回') }}</el-button>
        </template>
        <template v-else>

        </template>
      </span>
    </el-dialog>
  </div>
</template>

<script>
import ProductSelector from "@/components/ProductSelector"
import WarehouseAreaSelect from "@/components/WarehouseAreaSelect"
import {getFeeTypeByOrderProduct, getProductBrankPage} from "@/api/ecw/productBrank"
import {cancelProcessInstance} from "@/api/bpm/processInstance"
import WorkFlow from "@/components/WorkFlow"
import {DICT_TYPE, getDictDataLabel, getDictDatas} from "@/utils/dict"
import {orderWarehouseIn, orderWarehouseInUpdateApply} from "@/api/ecw/order"

export default {
  name: "Warehouse",

  components: {
    ProductSelector,
    WarehouseAreaSelect,
    WorkFlow
  },

  props: {
    title: {
      type: String,
      default: undefined
    },
    order: {
      type: Object,
      default: undefined
    },
    isJiyun: {
      type: Boolean,
      default: false
    },
    // 入仓修改
    edit: {
      type: Boolean,
      default: false
    },
    orderItemA: {
      type: Object,
      default: () => {
        return {
          material: undefined,
          inTime: undefined,
          orderWarehouseInBackItemDoList: []
        }
      }
    },
    orderItemB: {
      type: Object,
      default: () => {
        return {
          material: undefined,
          inTime: undefined,
          orderWarehouseInBackItemDoList: []
        }
      }
    }
  },

  computed: {
    isAdd() {
      return this.$route.path === "/order/warehousing-add"
    },
    warehousing(){
      return {...this.orderItemA, ...this.orderItemB}
    },
    orderId(){
      return this.order.orderId
    },
    brandObject(){
      return this.brandList.find(e => e.id === this.form.brand) || ''
    },
    brandObject1(){
      return this.brandList.find(e => e.id === this.form1.brand) || ''
    },
    isBeian(){
      if (this.form.recordMode !== undefined){
        return [this.$t('无备案'), this.$t('有备案'), this.$t('中性')][this.form.recordMode]
      }
      if (this.brandObject.filing){
        return [this.$t('无备案'), this.$t('有备案'), this.$t('中性')][this.brandObject.filing]
      } else {
        return ''
      }
    },
    isBeian1(){
      if (this.form1.recordMode !== undefined){
        return [this.$t('无备案'), this.$t('有备案'), this.$t('中性')][this.form1.recordMode]
      }
      if (this.brandObject1.filing){
        return [this.$t('无备案'), this.$t('有备案'), this.$t('中性')][this.brandObject1.filing]
      } else {
        return ''
      }
    },
    /**
     * 收费模式
     * @returns {string} 无牌价0,有牌价1,中性品牌价2
     */
    feeType(){
      const feeType = this.form.feeType
      if (feeType >= 0 && feeType < 3) {
        return [this.$t('无牌价'), this.$t('有牌价'), this.$t('中性品牌价')][feeType]
      }
      return ''
    },
    feeType1(){
      const feeType = parseInt(this.form1.feeType)
      if (feeType >= 0 && feeType < 3) {
        return [this.$t('无牌价'), this.$t('有牌价'), this.$t('中性品牌价')][feeType]
      }
      return ''
    },
    warehouseId(){
      return this.order.adjustToDestWarehouseId || this.order?.logisticsInfoDto?.startWarehouseId
    }
  },

  watch: {
    visible(val){
      if (val) {
        this.init()
        this.getProductBrandPage(this.warehousing.brandName)
        this.getProductBrandPage1()
        this.handleBrandChange(parseInt(this.form.brand))
      } else {
        this.$emit('close')
      }
    }
  },

  data(){
    return {
      DICT_TYPE,
      getDictDataLabel,
      getDictDatas,
      activeName: 'first',
      visible: false,
      form: {
        table: [],
        brandType: undefined,
        orderId: undefined,
        orderNo: undefined,
        brand: undefined,
        inTime: undefined,
        material: undefined,
        orderItemId: undefined,
        prodAttrIds: undefined,
        prodId: undefined,
        prodTitleEn: undefined,
        prodTitleZh: undefined,
        prodType: undefined,
        type: undefined,
        feeType: undefined,
        recordMode: undefined
      },
      form1: {
        table: [],
        brandType: undefined,
        orderId: undefined,
        orderNo: undefined,
        brand: undefined,
        inTime: undefined,
        material: undefined,
        orderItemId: undefined,
        prodAttrIds: undefined,
        prodId: undefined,
        prodTitleEn: undefined,
        prodTitleZh: undefined,
        prodType: undefined,
        type: 1,
        feeType: undefined,
        recordMode: undefined
      },
      brandList: [],
      brandList1: [],
      formRules: {
        prodId: [{required: true, message: this.$t("请选择品名"), trigger: "change"}],
        brand: [{required: true, message: this.$t("请选择品牌"), trigger: "change"}],
      },
      tableFormRules: {
        // cartonsNum: [{required: true, message: this.$t("箱数不能为空"), trigger: "change"}],
        // boxGauge1: [{required: true, message: this.$t("货物长不能为空"), trigger: "change"}],
        // boxGauge2: [{required: true, message: this.$t("货物宽不能为空"), trigger: "change"}],
        // boxGauge3: [{required: true, message: this.$t("货物高不能为空"), trigger: "change"}],
        // volume: [{required: true, message: this.$t("体积不能为空"), trigger: "change"}],
        // weight: [{required: true, message: this.$t("重量不能为空"), trigger: "change"}],
        // // quantityAll: [{required: true, message: this.$t("数量不能为空"), trigger: "change"}]
      },


      selectedUsers: undefined,

      // 入仓修改正在审核中
      isEditing: false,
      // 审批业务id
      formId: '',

      // 追加时被保护的行数
      protectRowCount: -1
    }
  },

  methods: {
    init(){
      this.form.brandType = this.warehousing.brandType
      this.form.orderId = this.warehousing.orderId
      this.form.orderItemId = this.warehousing.orderNo
      this.form.orderNo = this.warehousing.orderNo
      this.form.brand = this.warehousing.brand
      this.form.brandType = this.warehousing.brandType
      this.form.inTime = this.warehousing.inTime
      this.form.material = this.warehousing.material
      this.form.orderId = this.warehousing.orderId
      this.form.orderItemId = this.warehousing.orderItemId
      this.form.orderNo = this.warehousing.orderNo
      this.form.prodAttrIds = this.warehousing.prodAttrIds
      this.form.prodId = this.warehousing.prodId
      this.form.prodTitleEn = this.warehousing.prodTitleEn
      this.form.prodTitleZh = this.warehousing.prodTitleZh
      this.form.prodType = this.warehousing.prodType
      this.form.type = this.warehousing.type
      this.form.feeType = this.warehousing.feeType

      this.warehousing.orderWarehouseInBackItemDoList.forEach(e => {
        let bg = {}
        if (e.boxGauge) {
          const boxGauge = e.boxGauge.split('*')
          // e.boxGauge1 = boxGauge[0]
          // e.boxGauge2 = boxGauge[1]
          // e.boxGauge3 = boxGauge[2]
          bg = {
            boxGauge1: boxGauge[0],
            boxGauge2: boxGauge[1],
            boxGauge3: boxGauge[2]
          }
        }
        this.form.table.push({...e, ...bg})
      })

      if (!this.edit){
        let protectRowCount = 0
        this.protectRowCount = this.form.table.map(e => {
          if (e.id){
            protectRowCount++
          }
        })
        this.protectRowCount = protectRowCount
        this.handleAdd()
        this.handleAdd(1)
      }
    },
    handleClose() {
      this.visible = false
    },
    handleVolume(index, val){
      setTimeout(() => {
        const {boxGauge1, boxGauge2, boxGauge3, specificationType, cartonsNum} = (val === 1 ? this.form1.table : this.form.table)[index]
        let result = ''
        if (boxGauge1 && boxGauge2 && boxGauge3 && specificationType && cartonsNum) {
          result = (((specificationType === 1 || specificationType === '1') ? cartonsNum : 1) * (boxGauge1 * boxGauge2 * boxGauge3) / 1000000)?.toFixed(2) || ''
        } else {
          result = ''
        }
        if (result === '0.00') result = '0.01';
        (val === 1 ? this.form1.table : this.form.table)[index].volume = result
      }, 0)
    },
    handleSubmit() {
      if (this.activeName !== "first"){
        // 添加非填单货物
        this.$refs['form1'].validate(valid => {
          this.$refs['tableForm1'].validate(valid1 => {
            if (!valid || !valid1) {
              return
            }
            return orderWarehouseIn({
              ...this.form1,
              brandType: this.warehousing.brandType,
              orderId: this.warehousing.orderId,
              orderItemId: undefined,
              orderNo: this.warehousing.orderNo,
              orderWarehouseInItemDoList: this.form1.table.map(e => {
                return {
                  ...e,
                  boxGauge: e.boxGauge1 + '*' + e.boxGauge2 + '*' + e.boxGauge3,
                  orderLocationCreateReqVOList: e.orderLocationBackVOList
                }
              })
            }).then(r => {
              if (r.data) {
                this.$message.success('新增入仓成功')
                this.handleClose()
              } else {
                this.$message.success('新增入仓失败')
              }
            })
          })
        })
      } else {
        this.$refs['form'].validate(valid => {
          this.$refs['tableForm'].validate(valid1 => {
            if (!valid || !valid1) {
              return
            }
            if (this.edit) {
              // 入仓修改
              return orderWarehouseInUpdateApply({
                ...this.form,
                brandType: this.warehousing.brandType,
                orderId: this.warehousing.orderId,
                orderItemId: this.warehousing.orderItemId,
                orderNo: this.warehousing.orderNo,
                num: this.warehousing.num,
                volume: (+this.warehousing.volume)?.toFixed(2) || '',
                weight: (+this.warehousing.weight)?.toFixed(2) || '',
                prodId: this.form.prodId,
                "orderWarehouseInUpdateItemDoList": this.form.table.map(e => {
                  return {
                    ...e,
                    boxGauge: e.boxGauge1 + '*' + e.boxGauge2 + '*' + e.boxGauge3,
                    orderLocationCreateReqVOList: e.orderLocationBackVOList
                  }
                }),
                copyUserId: this.selectedUsers
              }).then(r => {
                if (r.data) {
                  this.$message.success(r.msg || '入仓修改发起成功')
                  this.handleClose()
                } else {
                  this.$message.success(r.msg || '入仓修改发起失败')
                }
              })
            } else {
              // 首次入仓、入仓补充
              return orderWarehouseIn({
                ...this.form,
                brandType: this.warehousing.brandType,
                orderId: this.warehousing.orderId,
                orderItemId: this.warehousing.orderItemId,
                orderNo: this.warehousing.orderNo,
                isAppend: this.isAdd ? true : undefined,
                orderWarehouseInItemDoList: this.form.table.map(e => {
                  return {
                    ...e,
                    boxGauge: e.boxGauge1 + '*' + e.boxGauge2 + '*' + e.boxGauge3,
                    orderLocationCreateReqVOList: e.orderLocationBackVOList
                  }
                }),
              }).then(r => {
                if (r.data) {
                  this.$message.success('入仓成功')
                  this.handleClose()
                } else {
                  this.$message.success('入仓失败')
                }
              })
            }
          })
        })
      }
    },
    handleCancelProcessInstance(){
      this.$prompt('请输入取消原因?', this.$t("取消流程"), {
        type: 'warning',
        confirmButtonText: this.$t("确定"),
        cancelButtonText: this.$t("取消"),
        inputPattern: /^[\s\S]*.*\S[\s\S]*$/, // 判断非空,且非空格
        inputErrorMessage: this.$t("取消原因不能为空"),
      }).then(({ value }) => {
        cancelProcessInstance(this.formId, value).then(() => {
          this.opened = false
          this.$modal.msgSuccess("取消成功");
        })
      })
    },
    onProductChange(product){
      this.form.prodTitleZh = product.titleZh
      this.form.prodTitleEn = product.titleEn
      this.handleBrandChange(parseInt(this.form.brand))
    },
    onProductChange1(product){
      this.form1.prodTitleZh = product.titleZh
      this.form1.prodTitleEn = product.titleEn
      this.handleBrandChange(parseInt(this.form1.brand))
    },
    getProductBrandPage(titleZh = undefined) {
      getProductBrankPage({pageSize: 20, titleZh}).then(r => {
        this.brandList = r.data.list
      })
    },
    getProductBrandPage1(titleZh = undefined) {
      getProductBrankPage({pageSize: 20, titleZh}).then(r => {
        this.brandList1 = r.data.list
      })
    },
    handleBrandChange(v){
      getFeeTypeByOrderProduct({
        brandId: parseInt(v),
        productId: this.warehousing.prodId,
        orderId: this.orderId
      }).then(r => {
        if(r.code === 0){
          (this.activeName === "first" ? this.form : this.form1).feeType = parseInt(r.data.feeType);
          (this.activeName === "first" ? this.form : this.form1).recordMode = parseInt(r.data.recordMode)
        }
      })
    },
    handleDelete(val) {
      if (val === 1) {
        this.form1.table.pop()
      } else if (this.form.table.length > this.protectRowCount) {
        this.form.table.pop()
      }
    },
    handleAdd(val = 0) {
      let cartonsNum = ''
      if (val !== 1) { // 货物入仓
        let hasCartonsNum = 0
        this.form.table.forEach(e => {
          hasCartonsNum += e.cartonsNum
        })
        cartonsNum = this.warehousing.num - hasCartonsNum
      }

      const form = val === 1 ? this.form1 : this.form
      form.table.push({
        "boxGauge1": this.isJiyun ? 0 : '',
        "boxGauge2": this.isJiyun ? 0 : '',
        "boxGauge3": this.isJiyun ? 0 : '',
        "cartonsNum": cartonsNum > 0 ? cartonsNum : '',
        "expressNo": "",
        "quantityAll": undefined,
        "unit": "1",
        "volume": '',
        "weight": '',
        specificationType: '1',
        table: []
      })
    }
  }
}
</script>

<style scoped>

</style>