<template>
  <div>
    <el-form ref="cusDeclarationForm" :rules="rules" :model="cusDeclarationObj" label-width="120px">
      <el-form-item label="单证要求">我司全代 <el-button type="primary" style="margin-left:10px;" @click="downloadVGM">VGM声明</el-button>
      </el-form-item>
      <el-form-item label="柜重" prop="dcBoxWgt">
        <el-input v-model="cusDeclarationObj.dcBoxWgt" placeholder="请输入柜重" clearable />
      </el-form-item>
      <el-form-item label="货重" prop="dcGoodsWgt">
        <el-input v-model="cusDeclarationObj.dcGoodsWgt" placeholder="请输入货重" clearable />
      </el-form-item>
      <el-form-item label="VGM重量">
        <el-input v-model="cusDeclarationObj.dcVgmWgt" placeholder="请输入VGM重量" clearable />
      </el-form-item>
      <el-form-item label="报关方式" prop="dcCustomsType">
        <el-select v-model="cusDeclarationObj.dcCustomsType" placeholder="请选择报关方式">
          <el-option v-for="type in this.getDictDatas(DICT_TYPE.BOX_SHIPPING_CUSTOMS_TYPE)" :key="type.value" :label="type.label" :value="type.value"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="正常报关订单">
      </el-form-item>
      <el-form-item label="报关公司名称">
        <supplierSelect v-model="cusDeclarationObj.dcCompanyId" :companyType="'2'" placeholder="请选择报关公司名称" :allSupplier="this.$attrs.allSupplier" />
      </el-form-item>
      <el-form-item label="截关时间">
        <el-date-picker type="date" placeholder="请选择日期" v-model="cusDeclarationObj.dcCutOffTime" value-format="yyyy-MM-dd"></el-date-picker>
      </el-form-item>
      <el-form-item label="状态">
        <el-radio-group v-model="cusDeclarationObj.dcCustomsStatus">
          <el-radio v-for="item in this.getDictDatas(DICT_TYPE.BOX_SHIPPING_DCCUSTOMS_STATUS)" :key="item.value" :label="item.value">{{item.label}}</el-radio>
        </el-radio-group>
      </el-form-item>

      <!-- 查验 -->
      <div v-show="cusDeclarationObj.dcCustomsStatus === '3'">
        <el-form-item label="查验">
          <el-radio-group v-model="cusDeclarationObj.dcCheckStatus">
            <el-radio v-for="item in this.getDictDatas(DICT_TYPE.BOX_SHIPPING_CHECK_STATUS)" :key="item.value" :label="item.value">{{item.label}}</el-radio>
          </el-radio-group>
        </el-form-item>
      </div>

      <!-- 退场 -->
      <div v-show="cusDeclarationObj.dcCheckStatus === '1' || cusDeclarationObj.dcCheckStatus === '2'">
        <el-form-item label="查验时间">
          <el-date-picker type="date" placeholder="请选择日期" v-model="cusDeclarationObj.dcCheckTime" value-format="yyyy-MM-dd"></el-date-picker>
        </el-form-item>
        <el-form-item label="查验前图片">
          <el-upload action="" :limit="1" :file-list="cusDeclarationObj.dcCheckPreImg">
            <el-button size="small" type="primary">选择文件</el-button>
          </el-upload>
        </el-form-item>
        <el-form-item label="新封条">
          <el-input v-model="cusDeclarationObj.dcStripSeal" placeholder="请输入新封条" clearable />
        </el-form-item>
      </div>

      <!-- 放行 -->
      <el-form-item label="放行时间" v-show="cusDeclarationObj.dcCustomsStatus === '2' || cusDeclarationObj.dcCheckStatus === '2'">
        <el-date-picker type="date" placeholder="请选择日期" v-model="cusDeclarationObj.dcPassTime" value-format="yyyy-MM-dd"></el-date-picker>
      </el-form-item>

      <el-form-item label="装箱单">
        <el-button type="primary">下载装箱单</el-button>
      </el-form-item>
      <el-form-item label="报关单">
        <el-button type="primary">下载所有报关单</el-button>
      </el-form-item>

    </el-form>
    <el-row class="operate-button">
      <el-button type="primary" @click="onSubmit(1)">保存</el-button>
      <el-button type="success" @click="onSubmit(2)">提交</el-button>
      <el-button @click="cancel">关闭</el-button>
      <el-button type="primary" @click="extraCost">额外费用</el-button>
    </el-row>

    <!-- 对话框 -->
    <el-dialog custom-class="shipping-dialog customsClearance" :title="dialogConfig.title" :visible.sync="dialogConfig.dialogVisible" width="700px" :modal-append-to-body=false append-to-body destroy-on-close>
      <el-row>
        <el-row>
          <el-form label-width="100px">
            <el-form-item label="订单号" class="two-element">
              <el-input v-model="orderNo" placeholder="请输入订单号" clearable />
              <el-button type="primary" icon="el-icon-search"></el-button>
            </el-form-item>
          </el-form>
        </el-row>
        <el-row>
          <el-table :data="[{}]">
            <el-table-column label="订单号" align="center" prop="selfNo" />
            <el-table-column label="报关费用" align="center" prop="orderFees">
              <template slot-scope="scope">
                <el-input v-model="scope.row.orderFees" placeholder="请输入内容" />
              </template>
            </el-table-column>
            <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
              <template slot-scope="scope">
                <el-button type="primary" size="small">确定</el-button>
              </template>
            </el-table-column>
          </el-table>
        </el-row>
        <el-row class="cost-title">
          <div>额外费用订单</div>
          <div>
            <el-button size="small">重置</el-button>
          </div>
        </el-row>
        <el-row>
          <el-table :data="[{}]">
            <el-table-column type="selection" width="55" />
            <el-table-column label="订单号" align="center" prop="selfNo" />
            <el-table-column label="报关费用" align="center" prop="customsFees">
              <template slot-scope="scope">
                <el-input v-model="scope.row.customsFees" placeholder="请输入内容" />
              </template>
            </el-table-column>
            <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
              <template slot-scope="scope">
                <el-button type="primary" size="small">修改</el-button>
                <el-button size="small">重置</el-button>
              </template>
            </el-table-column>
          </el-table>
        </el-row>
      </el-row>
    </el-dialog>
  </div>
</template>

<script>
import supplierSelect from "./common/supplierSelect.vue";
import { customsCreate, serviceMsg } from "@/api/ecw/boxSea";
import { formatNumberString, formatDateStr } from "../utils";
/**
 * 报关
 */
export default {
  name: "cusDeclaration",
  inheritAttrs: false,
  components: { supplierSelect },
  data() {
    return {
      // 报关对象
      cusDeclarationObj: {},
      // 校验
      rules: {
        dcBoxWgt: [{ required: true, message: "必填", trigger: "change" }],
        dcGoodsWgt: [{ required: true, message: "必填", trigger: "change" }],
        dcCustomsType: [{ required: true, message: "必填", trigger: "change" }],
      },
      // 弹窗配置
      dialogConfig: {
        title: "",
        dialogVisible: false,
      },
      // 订单号
      orderNo: "",
    };
  },
  created() {
    const voName = this.$attrs.currNode.voName;
    let oldData = { ...this.$attrs.shipmentObj[voName] };
    oldData = formatDateStr(oldData, [
      "dcCutOffTime",
      "dcCheckTime",
      "dcPassTime",
    ]);
    oldData = formatNumberString(oldData, [
      "dcCustomsType",
      "dcCustomsStatus",
      "dcCheckStatus",
    ]);
    this.cusDeclarationObj = oldData;
  },
  methods: {
    /** 提交 */
    onSubmit(operateType) {
      this.$refs["cusDeclarationForm"].validate((valid) => {
        if (valid) {
          customsCreate({
            ...this.cusDeclarationObj,
            shipmentId: this.$attrs.shipmentObj.id,
            operateType,
          }).then((res) => {
            serviceMsg(res, this).then(() => {
              this.cancel("submit");
            });
          });
        }
      });
    },
    /** 取消 */
    cancel(type) {
      this.$emit("closeDialog", type);
    },
    // 下载VGM
    downloadVGM() {
      window.open(
        "http://pdatest.groupage.cn//apivue/boxTrack/vgmExport?token=930b11a41d9ca06f306d157f336a5dcb&id=1752"
      );
    },
    // 额外费用
    extraCost() {
      this.$set(this.dialogConfig, "title", "自编号");
      this.$set(this.dialogConfig, "dialogVisible", true);
    },
    // 计算VGM重量
    calcVGM(dcBoxWgt, dcGoodsWgt) {
      let dcBoxWgtTmp = 0,
        dcGoodsWgtTmp = 0;
      if (!Number.isNaN(Number(dcBoxWgt))) {
        dcBoxWgtTmp = Number(dcBoxWgt);
      }
      if (!Number.isNaN(Number(dcGoodsWgt))) {
        dcGoodsWgtTmp = Number(dcGoodsWgt);
      }
      this.$set(
        this.cusDeclarationObj,
        "dcVgmWgt",
        dcBoxWgtTmp + dcGoodsWgtTmp
      );
    },
  },
  watch: {
    "cusDeclarationObj.dcBoxWgt"(dcBoxWgt) {
      this.calcVGM(dcBoxWgt, this.cusDeclarationObj.dcGoodsWgt);
    },
    "cusDeclarationObj.dcGoodsWgt"(dcGoodsWgt) {
      this.calcVGM(this.cusDeclarationObj.dcBoxWgt, dcGoodsWgt);
    },
    "cusDeclarationObj.dcCustomsStatus"(val) {
      if (val !== "3") {
        this.$set(this.cusDeclarationObj, "dcCheckStatus", "");
      }
    },
  },
};
</script>

<style lang="scss">
.customsClearance {
  .cost-title {
    display: flex;
    align-items: center;
    margin: 20px 0;
    border-left: 5px solid gray;
    > div:first-child {
      margin-left: 10px;
    }
    > div:last-child {
      flex: 1;
      text-align: right;
    }
  }
}
</style>
