<template>
  <div class="app-container" v-if="detail">
    <div class="page-title">{{ $t("控货订单") }}</div>
    <el-form ref="elForm" :model="formData" :rules="rules" size="small" label-width="100px">
      <el-row>
        <el-col :span="6">
          <el-form-item :label="$t('订单号')">
            {{ detail.orderNo }}
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item :label="$t('总控货数')">
            {{ detail.sumNum }}
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item :label="$t('体积')"> {{ detail.sumVolume }} m³ </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item :label="$t('重量')"> {{ detail.sumWeight }} kg </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item :label="$t('可放货箱数')">
            {{ detail.sumNum - detail.releaseNum }}
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item :label="$t('已放货箱数')">
            {{ detail.releaseNum }}
          </el-form-item>
        </el-col>
      </el-row>
    </el-form>

    <div class="page-title">{{ $t("放货详情") }}</div>
    <el-table :data="detail.cargoControlPickBackVOList || []" border>
      <el-table-column :label="$t('序号')" width="50px">
        <template slot-scope="scope">{{ scope.$index + 1 }}</template>
      </el-table-column>
      <el-table-column :label="$t('收货人')" prop="consigneeName" />
      <el-table-column :label="$t('收货人电话')" prop="consigneePhone">
        <template slot-scope="{ row }"> +{{ row.consigneeCountryCode }} {{ row.consigneePhone }} </template>
      </el-table-column>
      <el-table-column :label="$t('控货箱数')" prop="controlNum"></el-table-column>
      <el-table-column :label="$t('放货箱数')" prop="pickNum"></el-table-column>
      <el-table-column :label="$t('体积') + '(m³)'" prop="pickVolume"></el-table-column>
      <el-table-column :label="$t('提单号')" prop="tidanNo"></el-table-column>
      <el-table-column :label="$t('备注')" prop="remarks"></el-table-column>
      <el-table-column :label="$t('操作人')" prop="operator"></el-table-column>
      <el-table-column :label="$t('放货日期')" prop="createTime">
        <template slot-scope="{ row }">
          {{ row.createTime | parseTime }}
        </template>
      </el-table-column>
      <el-table-column :label="$t('复核日期')" prop="createTime">
        <template slot-scope="{ row }">
          {{ row.checkTime | parseTime }}
        </template>
      </el-table-column>
      <el-table-column :label="$t('状态')" prop="status">
        <template slot-scope="{ row }">
          <dict-tag :type="DICT_TYPE.ECW_RELEASE_STATUS" :value="row.status" />
        </template>
      </el-table-column>
      <el-table-column :label="$t('操作')" width="300px">
        <template slot-scope="scope">
          <el-button v-if="scope.row.status == 1" type="primary" size="mini" @click="editIndex = scope.$index">{{ $t("修改") }}</el-button>
          <el-button v-if="scope.row.status == 1" type="danger" size="mini" @click="cancelCargoPickId = scope.row.id">{{ $t("取消") }}</el-button>
          <el-button v-if="scope.row.status == 1" type="success" size="mini" @click="review(scope.row.id)">{{ $t("放货复核") }}</el-button>
          <el-button v-if="scope.row.status == 3" type="danger" size="mini" @click="fallbackIndex = scope.$index">{{ $t("反复核") }}</el-button>
          <el-button v-if="scope.row.status == 3" type="success" size="mini" @click="cargoControlPickId = scope.row.id">{{ $t("调货") }}</el-button>

          <el-button v-if="[2, 4, 5, 6].indexOf(scope.row.status) > -1" type="primary" size="mini" @click="showApprovalDetail(scope.row.formId)">{{ $t("审核详情") }}</el-button>
          <el-button v-if="[2, 4, 5, 6].indexOf(scope.row.status) > -1" type="danger" size="mini" @click="cancelApproval(scope.row.id)">{{ $t("取消审核") }}</el-button>
        </template>
      </el-table-column>
    </el-table>

    <!-- <div class="page-title">{{ $t('历史放货记录') }}</div>
        <el-table :data="[1]" border>
            <el-table-column :label="$t('序号')" width="50px">

            </el-table-column>
            <el-table-column :label="$t('操作')">
                <el-input v-model="formData.field110" :placeholder="$t('请输入收货人邮箱')" clearable></el-input>
            </el-table-column>
            <el-table-column :label="$t('申请原因')">
                <el-input v-model="formData.field110" :placeholder="$t('请输入收货人邮箱')" clearable></el-input>
            </el-table-column>
            <el-table-column :label="$t('附件')">
                <el-input v-model="formData.field110" :placeholder="$t('请输入收货人邮箱')" clearable></el-input>
            </el-table-column>
            <el-table-column :label="$t('申请时间')">
                <el-input v-model="formData.field110" :placeholder="$t('请输入收货人邮箱')" clearable></el-input>
            </el-table-column>
            <el-table-column :label="$t('申请人')">
                <el-input v-model="formData.field110" :placeholder="$t('请输入收货人邮箱')" clearable></el-input>
            </el-table-column>
            <el-table-column :label="$t('审批时间')">
                <el-input v-model="formData.field110" :placeholder="$t('请输入收货人邮箱')" clearable></el-input>
            </el-table-column>
            <el-table-column :label="$t('审批人')">
                <el-input v-model="formData.field110" :placeholder="$t('请输入收货人邮箱')" clearable></el-input>
            </el-table-column>
            <el-table-column :label="$t('备注')">
                <el-input v-model="formData.field110" :placeholder="$t('请输入收货人邮箱')" clearable></el-input>
            </el-table-column>
        </el-table> -->
    <fallback v-if="fallbackIndex !== null" :order="detail" :index="fallbackIndex" @close="fallbackIndex = null" @success="onFallbackSuccess" />
    <edit v-if="editIndex !== null" @close="editIndex = null" :order="detail" :index="editIndex" @success="onEditSuccess" />
    <transfer-cargo v-if="cargoControlPickId !== null" :order-id="detail.orderId" :cargo-control-pick-id="cargoControlPickId" @close="cargoControlPickId = null" @success="onTransferCargoSuccess" />
    <cancel-cargo v-if="!!cancelCargoPickId" :order="detail" :cargo-control-pick-id="cancelCargoPickId" @close="cancelCargoPickId = null" @success="onCancelCargoSuccess" />
  </div>
</template>
<script>
import edit from "./components/CargoControlEdit.vue"
import { createPick, getPickRleaseInfo, review, cancel, cancelApproval } from "@/api/ecw/orderCargoControl"
import { parseTime } from "@/utils/ruoyi"
import Fallback from "./components/Fallback"
import TransferCargo from "@/views/ecw/order/components/TransferCargo"
import CancelCargo from "./components/CancelCargo.vue"

export default {
  filters: { parseTime },
  components: { edit, Fallback, TransferCargo, CancelCargo, CancelCargo },
  data() {
    return {
      detail: null,
      formData: {},
      rules: {},
      editIndex: null, // 修改索引
      fallbackIndex: null, // 反复核索引
      cargoControlPickId: null, // 调货ID
      cancelCargoPickId: null // 取消返货ID
    }
  },
  created() {
    this.loadData()
  },
  methods: {
    loadData() {
      console.log("loadData")
      getPickRleaseInfo(this.$route.query.id).then((res) => (this.detail = res.data))
    },
    review(id) {
      this.$confirm(this.$t("已核实放货信息,确认放货?"))
        .then((res) => {
          return review(id)
        })
        .then((res) => {
          this.$message.success(this.$t("操作成功"))
          this.loadData()
        })
    },
    unReview() {},
    cancel(id) {
      this.$confirm(this.$t("确定取消这条放货么?"))
        .then((res) => {
          return cancel(id)
        })
        .then((res) => {
          this.$message.success(this.$t("操作成功"))
          this.loadData()
        })
    },
    onEditSuccess() {
      console.log("onEditSuccess")
      this.loadData()
      this.editIndex = null
    },
    onFallbackSuccess() {
      this.fallbackIndex = null
      this.loadData()
    },
    // 查看审核详情
    showApprovalDetail(formId) {
      this.$router.push("/bpm/process-instance/detail?id=" + formId)
    },
    // 取消审核
    cancelApproval(id) {
      this.$confirm(this.$t("确定取消此申请么?"))
        .then((res) => {
          let approvalId = this.getApproval(id)
          return cancelApproval(approvalId, { reason: this.$t("无") })
        })
        .then((res) => {
          this.$message.success(this.$t("操作成功"))
          this.loadData()
        })
    },
    // 根据id查找审核id
    getApproval(id, field = "orderApprovalId") {
      if (!this.detail.orderApprovalBackVOList || !this.detail.orderApprovalBackVOList.length) {
        this.$message.error(this.$t("未找到审批ID"))
        Promise.reject(this.$t("未找到审批ID"))
      }
      let item = this.detail.orderApprovalBackVOList.find((item) => {
        let details = JSON.parse(item.details)
        return details.cargoControlPickId == id && details.applyStatus == 1
      })
      console.log({ item })
      return item[field]
    },
    onTransferCargoSuccess() {
      this.cargoControlPickId = null
      this.loadData()
    },
    onCancelCargoSuccess() {
      this.cancelCargoPickId = null
      this.loadData()
    }
  }
}
</script>