<template>
  <div>
    <el-form ref="bookingForm" :rules="rules" :model="bookingObj" label-width="140px">
      <el-form-item :label="$t('提单号')">
        <el-input v-model="bookingObj.blNo" :placeholder="$t('请输入提单号')"></el-input>
      </el-form-item>
      <el-form-item :label="$t('起运港')">
        <dockSelect v-model="bookingObj.departurePortId" :placeholder="$t('请选择起运港')" portType="1" :allDocks="this.$attrs.allDocks" />
      </el-form-item>
      <el-form-item :label="$t('目的港')">
        <dockSelect v-model="bookingObj.destPortId" :placeholder="$t('请选择目的港')" portType="1" :allDocks="this.$attrs.allDocks" />
      </el-form-item>
      <el-form-item :label="$t('订舱代理')">
        <supplierSelect v-model="bookingObj.shipperId" :companyType="'5'" :placeholder="$t('请选择订舱代理')" :allSupplier="this.$attrs.allSupplier" />
      </el-form-item>
      <el-form-item :label="$t('航空公司')">
        <supplierSelect v-model="bookingObj.airlineCompanyId" :companyType="'7'" :placeholder="$t('请选择航空公司')" :allSupplier="this.$attrs.allSupplier" />
      </el-form-item>
      <el-form-item :label="$t('预计起飞时间')" prop="flyTime">
        <el-date-picker type="datetime" :placeholder="$t('请选择日期')" value-format="yyyy-MM-dd HH:mm:ss" v-model="bookingObj.flyTime"></el-date-picker>
      </el-form-item>

      <el-form-item :label="$t('截关时间')">
        <el-date-picker type="datetime" :placeholder="$t('请选择日期')" value-format="yyyy-MM-dd HH:mm:ss" v-model="bookingObj.closingTime"></el-date-picker>
      </el-form-item>

      <el-form-item :label="$t('截补料时间')">
        <el-date-picker type="datetime" :placeholder="$t('请选择日期')" value-format="yyyy-MM-dd HH:mm:ss" v-model="bookingObj.replenishmentTime"></el-date-picker>
      </el-form-item>

      <el-form-item :label="$t('航程')" prop="voyage">
        <el-radio-group v-model="bookingObj.voyage">
          <el-radio v-for="item in voyageData" :key="item.value" :label="item.value">{{item.label}}</el-radio>
        </el-radio-group>
      </el-form-item>

      <el-form-item :label="$t('截止送货时间')">
        <el-date-picker type="datetime" :placeholder="$t('请选择日期')" value-format="yyyy-MM-dd HH:mm:ss" v-model="bookingObj.deliveryTime"></el-date-picker>
      </el-form-item>

      <el-form-item :label="$t('出货渠道')">
        <el-select v-model="bookingObj.airlineTypeId" :placeholder="$t('请选择出货渠道')">
          <el-option v-for="item in channelList" :label="$l(item, 'name')" :value="item.channelId" :key="item.channelId"></el-option>
        </el-select>
      </el-form-item>

    </el-form>
    <el-row class="operate-button">
      <el-button type="primary" @click="onSubmit">{{$t('提交')}}</el-button>
      <el-button @click="cancel">{{$t('关闭')}}</el-button>
    </el-row>
  </div>

</template>

<script>
import { booking } from "@/api/ecw/boxAir";
import supplierSelect from "./common/supplierSelect.vue";
import dockSelect from "./common/dockSelect.vue";
import userSelect from "./common/userSelect.vue";
import { formatStringNumber, formatDateStr, serviceMsg, constantDict } from "../utils";
import { getChannelList } from '@/api/ecw/channel'
/**
 * 订舱
 */
export default {
  name: "booking",
  inheritAttrs: false,
  components: {
    supplierSelect,
    dockSelect,
    userSelect,
  },
  props: {
    shipmentObj: Object,
  },
  data() {
    return {
      // 订舱对象
      bookingObj: {},
      channelList: [],
      voyageData: constantDict.voyageData,
      // 校验
      rules: {
        flyTime: [{ required: true, message: this.$t("必填"), trigger: "change" }],
        voyage: [{ required: true, message: this.$t("必填"), trigger: "change" }],
      },
    };
  },
  created() {
    getChannelList().then((res) => (this.channelList = res.data))
    const voName = this.$attrs.currNode.voName;
    let oldData = { ...this.shipmentObj[voName] };
    oldData = formatStringNumber(oldData, ["shipCompanyType", "spaceCompany"]);
    oldData = formatDateStr(oldData, [
      "flyTime",
      "closingTime",
      "replenishmentTime",
      "deliveryTime"
    ]);
    this.bookingObj = oldData;
  },
  methods: {
    /** 提交 */
    onSubmit() {
      this.$refs["bookingForm"].validate((valid) => {
        if (valid) {
          booking({
            shipmentId: this.shipmentObj.id,
            ...this.bookingObj,
            operateType: 2,
          }).then((res) => {
            serviceMsg(res, this).then(() => {
              this.cancel("submit");
            });
          });
        }
      });
    },
    /** 取消 */
    cancel(type) {
      this.$emit("closeDialog", type);
    },
  },
};
</script>
