<template>
  <div>
    <div class="customer-head">
      <div class="customer-back">
        <el-button type="danger" style="border: none;background: none;color: red" icon="el-icon-arrow-left"
                   @click="backToList(0)">返回列表
        </el-button>
        <el-button v-if="detailData.id" type="danger" style="border: none;background: none;color: red"
                   icon="el-icon-arrow-left"
                   @click="backToList(1)">返回审核列表
        </el-button>
      </div>
      <div class="add-customer-btn">
        <el-button class="el-button--small-yh" type="primary" size="small"
                   :disabled="form.status>0"
                   @click="confirmEdit" v-if="optionForm.disabled === true">编辑
        </el-button>
        <el-button style="margin-right: 10px" type="primary" size="small"
                   :disabled="form.status>0 || !form.id"
                   @click="excelBox = true">上传
        </el-button>
        <el-dropdown style="margin-right: 10px">
          <el-button type="primary" size="small">
            初审审核<i class="el-icon-arrow-down el-icon--right"></i>
          </el-button>
          <el-dropdown-menu slot="dropdown">
            <el-dropdown-item @click.native="pleaseCheck" :disabled="!(form.status === 0)">请核数据</el-dropdown-item>
            <el-dropdown-item @click.native="checkScheduleDialog = true,checkId = form.id,times = 1" :disabled="form.status < 1">审核进度</el-dropdown-item>
            <el-dropdown-item @click.native="repealCancel(1)" :disabled="roleName.includes('admin')?!(form.status === 1) || !(form.status === 4):!(form.status === 1)" v-if="!detailData.id">撤销请核</el-dropdown-item>
            <!--             <el-dropdown-item @click.native="changeApproveOpen">特殊审批</el-dropdown-item>-->
          </el-dropdown-menu>
        </el-dropdown>
        <el-dropdown style="margin-right: 10px">
          <el-button type="primary" size="small">
            复审审核<i class="el-icon-arrow-down el-icon--right"></i>
          </el-button>
          <el-dropdown-menu slot="dropdown">
            <el-dropdown-item @click.native="pleaseCheck" :disabled="!(form.status === 4)">请核数据</el-dropdown-item>
            <el-dropdown-item @click.native="checkScheduleDialog = true,checkId = form.id,times = 2" :disabled="form.status < 5">审核进度</el-dropdown-item>
            <el-dropdown-item @click.native="repealCancel(2)" :disabled="roleName.includes('admin')?!(form.status === 5) || !(form.status === 5):!(form.status === 7)" v-if="!detailData.id">撤销请核
            </el-dropdown-item>
            <!--            <el-dropdown-item @click.native="changeApproveOpen">特殊审批</el-dropdown-item>-->
          </el-dropdown-menu>
        </el-dropdown>
        <el-button class="el-button--small-yh" type="primary" size="small" :disabled="form.status>0" @click="editCustomer">
          保存数据
        </el-button>
      </div>
    </div>
    <trade-card title="基础资料" style="margin-top: 50px">
      <avue-form :option="optionForm" v-model="form" ref="form">
        <!--<template slot="purchaseCompanyId" slot-scope="scope">-->
        <!--  <crop-select-->
        <!--  v-model="form.purchaseCompanyId"-->
        <!--  @getCorpData="(row)=>{getGSData(row,['form','purchaseCompanyName'])}"-->
        <!--  :disabled="scope.disabled"-->
        <!--  corpType="KH"/>-->
        <!--</template>-->
        <template slot="customsDeclarationPlaceLabel">
          <e-crop-jump label="申报地海关:" corp-type="KH"></e-crop-jump>
        </template>
        <template slot="declareStatusLabel">
          <e-crop-jump label="申报状态:" corp-type="ZD"></e-crop-jump>
        </template>
        <template slot="exitCustomsLabel">
          <e-crop-jump label="进境关别:" corp-type="ZD"></e-crop-jump>
        </template>
        <template slot="domesticNoLabel">
          <e-crop-jump label="境内收发货人:" corp-type="KH"></e-crop-jump>
        </template>
        <template slot="abroadNoLabel">
          <e-crop-jump label="境外收发货人:" corp-type="KH"></e-crop-jump>
        </template>
        <template slot="consumptionUnitNoLabel">
          <e-crop-jump label="消费使用单位:" corp-type="KH"></e-crop-jump>
        </template>
        <template slot="applicantNoLabel">
          <e-crop-jump label="申报单位:" corp-type="KH"></e-crop-jump>
        </template>
        <template slot="transportTypeLabel">
          <e-crop-jump label="运输方式:" corp-type="ZD"></e-crop-jump>
        </template>
        <template slot="superviseModeLabel">
          <e-crop-jump label="监管方式:" corp-type="ZD"></e-crop-jump>
        </template>
        <template slot="expropriationExemptionNatureLabel">
          <e-crop-jump label="征免性质:" corp-type="ZD"></e-crop-jump>
        </template>
        <template slot="countryOriginIdLabel">
          <e-crop-jump label="启运国:" corp-type="DD"></e-crop-jump>
        </template>
        <template slot="stopOverHarborIdLabel">
          <e-crop-jump label="经停港:" corp-type="DD"></e-crop-jump>
        </template>
        <template slot="transactionModeLabel">
          <e-crop-jump label="成交方式:" corp-type="ZD"></e-crop-jump>
        </template>
        <template slot="freightMethodLabel">
          <e-crop-jump label="方式:" corp-type="ZD"></e-crop-jump>
        </template>
        <template slot="insuranceMethodLabel">
          <e-crop-jump label="方式:" corp-type="ZD"></e-crop-jump>
        </template>
        <template slot="sundryFeesMethodLabel">
          <e-crop-jump label="方式:" corp-type="ZD"></e-crop-jump>
        </template>
        <template slot="packingLabel">
          <e-crop-jump label="包装:" corp-type="ZD"></e-crop-jump>
        </template>
        <template slot="tradeCountryIdLabel">
          <e-crop-jump label="贸易国别(地区):" corp-type="DD"></e-crop-jump>
        </template>
        <template slot="portEntryIdLabel">
          <e-crop-jump label="入境口岸:" corp-type="DD"></e-crop-jump>
        </template>
        <template slot="portDepartureIdLabel">
          <e-crop-jump label="启运港:" corp-type="DD"></e-crop-jump>
        </template>
        <template slot="customsDeclarationTypeLabel">
          <e-crop-jump label="报关单类型:" corp-type="ZD"></e-crop-jump>
        </template>
        <template slot="domesticNo" slot-scope="scope">
          <crop-select v-model="form.domesticNo"
                       label="code"
                       :disabled="scope.disabled"
                       @getCorpData="(row)=>{getGSData(row,['form','domesticName','domesticCustomsNo'])}"
                       corpType="KH"/>
        </template>
        <template slot="abroadNo" slot-scope="scope">
          <crop-select v-model="form.abroadNo"
                       label="code"
                       :disabled="scope.disabled"
                       @getCorpData="(row)=>{getGSData(row,['form','abroadName','abroadCustomsNo'])}"
                       corpType="KH"/>
        </template>
        <template slot="consumptionUnitNo" slot-scope="scope">
          <crop-select v-model="form.consumptionUnitNo"
                       label="code"
                       :disabled="scope.disabled"
                       @getCorpData="(row)=>{getGSData(row,['form','consumptionUnitName','consumptionUnitCustomsNo'])}"
                       corpType="KH"/>
        </template>
        <template slot="applicantNo" slot-scope="scope">
          <crop-select v-model="form.applicantNo"
                       label="code"
                       :disabled="scope.disabled"
                       @getCorpData="(row)=>{getGSData(row,['form','applicantName','applicantCustomsNo'])}"
                       corpType="KH"/>
        </template>
        <template slot="countryOriginId" slot-scope="scope">
          <port-info v-model="form.countryOriginId" type="id" @balabalaTow="(row)=>{balabala(row,['form','countryOriginName'])}" :search="{typeName: '国家'}" :disabled="scope.disabled"/>
        </template>
        <template slot="tradeCountryId" slot-scope="scope">
          <port-info v-model="form.tradeCountryId" type="id" @balabalaTow="(row)=>{balabala(row,['form','tradeCountryName'])}" :search="{typeName: '国家'}" :disabled="scope.disabled"/>
        </template>
        <template slot="stopOverHarborId" slot-scope="scope">
          <port-info v-model="form.stopOverHarborId" type="id" @balabalaTow="(row)=>{balabala(row,['form','stopOverHarborName'])}" :search="{typeName: '港口'}" :disabled="scope.disabled"/>
        </template>
        <template slot="portDepartureId" slot-scope="scope">
          <port-info v-model="form.portDepartureId" type="id" @balabalaTow="(row)=>{balabala(row,['form','portDepartureName'])}" :search="{typeName: '港口'}" :disabled="scope.disabled"/>
        </template>
        <template slot="portEntryId" slot-scope="scope">
          <port-info v-model="form.portEntryId" type="id" @balabalaTow="(row)=>{balabala(row,['form','portEntryName'])}" :search="{typeName: '港口'}" :disabled="scope.disabled"/>
        </template>
      </avue-form>
    </trade-card>
    <trade-card title="商品信息">
      <avue-crud
          :option="option"
          :data="dataList"
          v-model="formTwo"
          ref="crud"
          :key="key"
          :before-open="beforeOpen"
          @row-save="rowSave"
          @row-update="rowUpdate"
          @resetColumn="resetColumnTwo('crud','option','optionBack',246.1)"
          @saveColumn="saveColumnTwo('crud','option','optionBack',246.1)">
        <template slot-scope="{type,size,row,index,disabled}" slot="menu">
          <el-button icon="el-icon-edit" :size="size" :disabled="disabled" :type="type"
                     @click="$refs.crud.rowEdit(row,index)">编辑
          </el-button>
          <el-button icon="el-icon-delete" :size="size" :disabled="disabled" :type="type"
                     @click="rowDel(row,index,'SP')">删除
          </el-button>
        </template>
        <!--        <template slot="boxMakingCompanyForm" slot-scope="scope">-->
        <!--          <crop-select v-model="formTwo.boxMakingCompanyId" :disabled="scope.disabled" :refresh="false"-->
        <!--                       @getCorpData="(row)=>{getGSData(row,['formTwo','boxMakingCompany'])}" corpType="GS"/>-->
        <!--        </template>-->
        <template slot="originatedCountriesNameForm" slot-scope="scope">
          <port-info v-model="formTwo.originatedCountriesId" type="id" @balabalaTow="(row)=>{balabala(row,['formTwo','originatedCountriesName'])}" :search="{typeName: '国家'}" :disabled="scope.disabled"/>
        </template>
        <template slot="finalDestinationCountryNameForm" slot-scope="scope">
          <port-info v-model="formTwo.finalDestinationCountryId" type="id" @balabalaTow="(row)=>{balabala(row,['formTwo','finalDestinationCountryName'])}" :search="{typeName: '国家'}" :disabled="scope.disabled"/>
        </template>
      </avue-crud>
    </trade-card>
    <trade-card title="集装箱">
      <avue-crud
          :option="optionTwo"
          :data="containerList"
          v-model="formTwoTwo"
          ref="crudTwo"
          :key="key"
          :before-open="beforeOpen"
          @row-save="rowSave"
          @row-update="rowUpdate"
          @resetColumn="resetColumnTwo('crudTwo','optionTwo','optionTwoBack',246.2)"
          @saveColumn="saveColumnTwo('crudTwo','optionTwo','optionTwoBack',246.2)">
        <template slot-scope="{type,size,row,index,disabled}" slot="menu">
          <el-button icon="el-icon-edit" :size="size" :disabled="disabled" :type="type"
                     @click="$refs.crudTwo.rowEdit(row,index)">编辑
          </el-button>
          <el-button icon="el-icon-delete" :size="size" :disabled="disabled" :type="type"
                     @click="rowDel(row,index,'JZX')">删除
          </el-button>
        </template>
      </avue-crud>
    </trade-card>
    <trade-card title="单证">
      <avue-crud
          :option="optionThree"
          :data="documentsList"
          v-model="formTwoThree"
          ref="crudThree"
          :key="key"
          :before-open="beforeOpen"
          @row-save="rowSave"
          @row-update="rowUpdate"
          @resetColumn="resetColumnTwo('crudThree','optionThree','optionThreeBack',246.21)"
          @saveColumn="saveColumnTwo('crudThree','optionThree','optionThreeBack',246.21)">
        <template slot-scope="{type,size,row,index,disabled}" slot="menu">
          <el-button icon="el-icon-edit" :size="size" :disabled="disabled" :type="type"
                     @click="$refs.crudThree.rowEdit(row,index)">编辑
          </el-button>
          <el-button icon="el-icon-delete" :size="size" :disabled="disabled" :type="type"
                     @click="rowDel(row,index,'DZ')">删除
          </el-button>
        </template>
      </avue-crud>
    </trade-card>
    <!--    费用信息组件-->
    <box-cost v-model="dataListTwo" :id="form.id" activeName="second" ref="boxCost" type="BG" @resetTrigger="resetTrigger" url="/api/blade-box-tube/declareCustomsFees/remove"></box-cost>
    <trade-card title="附件明细">
      <c-upload
          basic
          :data="tradingBoxFilesList"
          :disabled="disabled"
          deleteUrl="/api/blade-box-tube/declareCustomsFiles/remove"
          :enumerationValue="246.3"
          display
      />
    </trade-card>
    <el-dialog
        append-to-body
        title="审批进度"
        class="el-dialogDeep"
        :visible.sync="checkScheduleDialog"
        width="40%"
        :close-on-click-modal="false"
        :destroy-on-close="true"
        :close-on-press-escape="false"
        v-dialog-drag
    >
      <check-schedule
          :checkId="checkId"
          :times="times"
          :key="times"
          :batchNo="batchNo"
          @choceScheduleFun="choceScheduleFun"
      ></check-schedule>
    </el-dialog>
    <el-dialog
        title="上传附件"
        append-to-body
        :visible.sync="excelBox"
        width="555px"
        v-if="excelBox"
        :close-on-click-modal="false"
        v-dialog-drag
    >
      <el-upload
          class="upload-demo"
          drag
          style="text-align: center"
          ref="upload"
          :action="action"
          :headers="headers"
          :data="{id:form.id}"
          accept=".pdf,.PDF"
          :show-file-list="false"
          :on-success="onSuccess"
          :on-error="onError"
          multiple
      >
        <i class="el-icon-upload"></i>
        <div class="el-upload__text">将文件拖到此处，或<em>点击上传</em></div>
        <div class="el-upload__tip" slot="tip">
          如上传文件过大，请耐心等待上传成功
        </div>
      </el-upload>
    </el-dialog>
  </div>
</template>

<script>
import {
  detail,
  submit,
  tradingBoxFiles,
  selectArchivesList,
  tradingBoxItem,
  tradingBoxFees,
  containerItem,
  documentsItem,
  pleaseCheck,
  repealCancel, copyDetail
} from "@/api/importTrade/importDeclaration.js";

import checkSchedule from "@/components/check/checkSchedule";
import {selectByName} from "@/api/boxManagement";
import {getToken} from "@/util/auth";

export default {
  name: "detailsPage",
  props: {
    onLoad: Object,
    detailData: Object
  },
  components: {checkSchedule},
  data() {
    return {
      excelBox:false,
      action: "/api/blade-box-tube/declareCustoms/importPDF",
      headers: { "Blade-Auth": "Bearer " + getToken() },
      roleName:'',
      key: 0,
      formTwoTwo:{},
      formTwoThree:{},
      containerList:[],
      documentsList:[],
      checkScheduleDialog: false,
      checkId: '',
      batchNo: '',
      times: '',
      breakConfiguration: {
        multipleChoices: false,
        multiple: false,
        disabled: false,
        searchShow: true,
        collapseTags: false,
        clearable: true,
        placeholder: "请点击右边按钮选择",
        dicData: []
      },
      form: {},
      formTwo: {},
      optionForm: {
        menuBtn: false,
        span: 6,
        column: [{
          label: '申报地海关',
          prop: 'customsDeclarationPlace',
          filterable: true,
          type: 'select',
          dicUrl: "/api/blade-system/dict-biz/dictionary?code=customs",
          props: {
            label: "dictValue",
            value: "dictValue"
          }
        }, {
          label: '申报状态',
          prop: 'declareStatus',
          filterable: true,
          type: 'select',
          dicUrl: "/api/blade-system/dict-biz/dictionary?code=declare_status",
          props: {
            label: "dictValue",
            value: "dictValue"
          }
        }, {
          label: '统一编号',
          prop: 'unifiedNumbering'
        }, {
          label: '预录入编号',
          prop: 'preEntryNo'
        }, {
          label: '海关编号',
          prop: 'customsNo'
        }, {
          label: '进境关别',
          prop: 'exitCustoms',
          filterable: true,
          type: 'select',
          dicUrl: "/api/blade-system/dict-biz/dictionary?code=customs",
          props: {
            label: "dictValue",
            value: "dictValue"
          }
        }, {
          label: '已实施防御性防疫',
          prop: 'whetherEpidemicPrevention',
          labelWidth:115,
          overHidden: true,
          filterable: true,
          type: 'select',
          dicData:[{
            label:'是',
            value:1
          },{
            label:'否',
            value:0
          }]
        }, {
          label: '备案号',
          prop: 'filingNo'
        }, {
          label: '合同协议号',
          prop: 'contractAgreementNo'
        }, {
          label: '进口日期',
          prop: 'importExportDate',
          type: "date",
          format: "yyyy-MM-dd",
          valueFormat: "yyyy-MM-dd HH:mm:ss"
        }, {
          label: '启运日期',
          prop: 'shipmentDate',
          type: "date",
          format: "yyyy-MM-dd",
          valueFormat: "yyyy-MM-dd HH:mm:ss"
        }, {
          label: '申报日期',
          prop: 'declareDate',
          type: "date",
          format: "yyyy-MM-dd",
          valueFormat: "yyyy-MM-dd HH:mm:ss"
        },{
          label: '境内收发货人',
          prop: 'domesticNo'
        }, {
          label: '海关号',
          prop: 'domesticCustomsNo'
        }, {
          label: '名称',
          prop: 'domesticName',
          span: 12
        },{
          label: '境外收发货人',
          prop: 'abroadNo'
        }, {
          label: '海关号',
          prop: 'abroadCustomsNo'
        }, {
          label: '名称',
          prop: 'abroadName',
          span: 12
        }, {
          label: '消费使用单位',
          prop: 'consumptionUnitNo'
        }, {
          label: '海关号',
          prop: 'consumptionUnitCustomsNo'
        }, {
          label: '名称',
          prop: 'consumptionUnitName',
          span: 12
        }, {
          label: '申报单位',
          prop: 'applicantNo'
        }, {
          label: '海关号',
          prop: 'applicantCustomsNo'
        }, {
          label: '名称',
          prop: 'applicantName',
          span: 12
        }, {
          label: '运输方式',
          prop: 'transportType',
          filterable: true,
          type: 'select',
          dicUrl: "/api/blade-system/dict-biz/dictionary?code=mode_transport",
          props: {
            label: "dictValue",
            value: "dictValue"
          }
        }, {
          label: '运输工具名称',
          prop: 'conveyanceName'
        }, {
          label: '航次号',
          prop: 'voyageNo'
        }, {
          label: '提运单号',
          prop: 'deliveryNumbers'
        }, {
          label: '监管方式',
          prop: 'superviseMode',
          span: 8,
          filterable: true,
          type: 'select',
          dicUrl: "/api/blade-system/dict-biz/dictionary?code=supervise_mode",
          props: {
            label: "dictValue",
            value: "dictValue"
          }
        }, {
          label: '征免性质',
          prop: 'expropriationExemptionNature',
          span: 8,
          filterable: true,
          type: 'select',
          dicUrl: "/api/blade-system/dict-biz/dictionary?code=expropriation_nature",
          props: {
            label: "dictValue",
            value: "dictValue"
          }
        }, {
          label: '许可证号',
          prop: 'licenseKey',
          span: 8
        }, {
          label: '启运国',
          prop: 'countryOriginId',
          span: 8
        }, {
          label: '经停港',
          prop: 'stopOverHarborId',
          span: 8
        }, {
          label: '成交方式',
          prop: 'transactionMode',
          span: 8,
          filterable: true,
          type: 'select',
          dicUrl: "/api/blade-system/dict-biz/dictionary?code=transaction_mode",
          props: {
            label: "dictValue",
            value: "dictValue"
          }
        }, {
          label: '运费',
          prop: 'freight',
          type: 'number',
          controls: false,
          precision:2
        }, {
          label: '方式',
          prop: 'freightMethod',
          filterable: true,
          type: 'select',
          dicUrl: "/api/blade-system/dict-biz/dictionary?code=method",
          props: {
            label: "dictValue",
            value: "dictValue"
          }
        }, {
          label: '金额',
          prop: 'freightAmount',
          type: 'number',
          controls: false,
          precision:2
        }, {
          label: '币别',
          prop: 'freightCurrency',
          overHidden: true,
          filterable: true,
          type: "select",
          dicUrl: "/api/blade-system/dict-biz/dictionary?code=currency",
          props: {
            label: "dictValue",
            value: "dictValue"
          },
        }, {
          label: '保险',
          prop: 'insurance',
          type: 'number',
          controls: false,
          precision:2
        }, {
          label: '方式',
          prop: 'insuranceMethod',
          filterable: true,
          type: 'select',
          dicUrl: "/api/blade-system/dict-biz/dictionary?code=method",
          props: {
            label: "dictValue",
            value: "dictValue"
          }
        }, {
          label: '金额',
          prop: 'insuranceAmount',
          type: 'number',
          controls: false,
          precision:2
        }, {
          label: '币别',
          prop: 'insuranceCurrency',
          overHidden: true,
          filterable: true,
          type: "select",
          dicUrl: "/api/blade-system/dict-biz/dictionary?code=currency",
          props: {
            label: "dictValue",
            value: "dictValue"
          },
        }, {
          label: '杂费',
          prop: 'sundryFees',
          type: 'number',
          controls: false,
          precision:2
        }, {
          label: '方式',
          prop: 'sundryFeesMethod',
          filterable: true,
          type: 'select',
          dicUrl: "/api/blade-system/dict-biz/dictionary?code=method",
          props: {
            label: "dictValue",
            value: "dictValue"
          }
        }, {
          label: '金额',
          prop: 'sundryFeesAmount',
          type: 'number',
          controls: false,
          precision:2
        }, {
          label: '币别',
          prop: 'sundryFeesCurrency',
          overHidden: true,
          filterable: true,
          type: "select",
          dicUrl: "/api/blade-system/dict-biz/dictionary?code=currency",
          props: {
            label: "dictValue",
            value: "dictValue"
          },
        }, {
          label: '件数',
          prop: 'number',
          type: 'number',
          controls: false,
          precision:2
        }, {
          label: '包装',
          prop: 'packing',
          filterable: true,
          type: 'select',
          dicUrl: "/api/blade-system/dict-biz/dictionary?code=packing",
          props: {
            label: "dictValue",
            value: "dictValue"
          }
        }, {
          label: '毛重(kg)',
          prop: 'grossWeight',
          type: 'number',
          controls: false,
          precision:2
        }, {
          label: '净重(kg)',
          prop: 'netWeight'
        }, {
          label: '贸易国别(地区)',
          prop: 'tradeCountryId',
          labelWidth:100
        }, {
          label: '集装箱数',
          prop: 'containersNumber',
          type: 'number',
          controls: false,
          precision:2
        }, {
          label: '随附单证',
          prop: 'documentsAttached'
        }, {
          label: '入境口岸',
          prop: 'portEntryId'
        }, {
          label: '货物存放地点',
          prop: 'storagePlaceGoods'
        }, {
          label: '启运港',
          prop: 'portDepartureId'
        }, {
          label: '报关单类型',
          prop: 'customsDeclarationType',
          filterable: true,
          type: 'select',
          dicUrl: "/api/blade-system/dict-biz/dictionary?code=declaration_type",
          props: {
            label: "dictValue",
            value: "dictValue"
          }
        }, {
          label: '系统编号',
          prop: 'sysNo',
          disabled:true
        }, {
          label: '备注',
          prop: 'remark',
          type: 'textarea',
          minRows: 3,
          span: 12
        }, {
          label: '唛头',
          prop: 'shippingMark',
          type: 'textarea',
          minRows: 3,
          span: 12
        }]
      },
      option: {},
      optionBack: {
        align: 'center',
        index: true,
        addBtnText: "录入明细",
        refreshBtn: false,
        addBtn: true,
        span: 8,
        addRowBtn: false,
        cellBtn: false,
        editBtn: false,
        delBtn: false,
        menuWidth: 140,
        dialogTop: 25,
        dialogWidth: "80%",
        showSummary: true,
        sumColumnList: [{
          name: 'amount',
          type: 'sum',
          decimals: 2
        }],
        column: [{
          label: '备案编号',
          prop: 'goodsFilingNo',
          width: 100,
          overHidden: true
        }, {
          label: '商品编号',
          prop: 'commodityNo',
          width: 100,
        }, {
          label: '检验检疫名称',
          prop: 'quarantineName',
          width: 100
        }, {
          label: '商品名称',
          prop: 'commodityName',
          overHidden: true,
          filterable: true,
          type: "select",
          dicUrl: "/api/blade-client/goodsdesc/descListAll",
          props: {
            label: "cname",
            value: "cname"
          },
          width: 100
        }, {
          label: '规格型号',
          prop: 'specificationModel',
          overHidden: true,
          width: 100
        }, {
          label: '成交数量',
          prop: 'transactionsNumber',
          overHidden: true,
          width: 100
        }, {
          label: '单位',
          prop: 'dealUnitMeasurement',
          overHidden: true,
          width: 100,
          filterable: true,
          type: 'select',
          dicUrl: "/api/blade-system/dict-biz/dictionary?code=deal_unit",
          props: {
            label: "dictValue",
            value: "dictValue"
          }
        }, {
          label: '单价',
          prop: 'price',
          overHidden: true,
          width: 100
        }, {
          label: '总价',
          prop: 'totalPrice',
          overHidden: true,
          width: 100
        }, {
          label: '币制',
          prop: 'currencySystem',
          overHidden: true,
          width: 100,
          filterable: true,
          type: 'select',
          dicUrl: "/api/blade-system/dict-biz/dictionary?code=currency",
          props: {
            label: "dictValue",
            value: "dictValue"
          }
        }, {
          label: '法定第一数量',
          prop: 'statutoryFirstQuantity',
          overHidden: true,
          width: 100
        }, {
          label: '法定第一计量单位',
          prop: 'statutoryFirstMeasurement',
          labelWidth: 120,
          overHidden: true,
          width: 120,
          filterable: true,
          type: 'select',
          dicUrl: "/api/blade-system/dict-biz/dictionary?code=deal_unit",
          props: {
            label: "dictValue",
            value: "dictValue"
          }
        }, {
          label: '加工成品单耗版本号',
          prop: 'versionNo',
          labelWidth:125,
          overHidden: true,
          width: 130
        }, {
          label: '货号',
          prop: 'articleNo',
          overHidden: true,
          width: 100
        }, {
          label: '最终目的国',
          prop: 'finalDestinationCountryName',
          overHidden: true,
          width: 100
        }, {
          label: '法定第二数量',
          prop: 'legalSecondQuantity',
          overHidden: true,
          width: 100
        }, {
          label: '法定第二计量单位',
          prop: 'legalSecondMeasurement',
          labelWidth: 120,
          overHidden: true,
          width: 120,
          filterable: true,
          type: 'select',
          dicUrl: "/api/blade-system/dict-biz/dictionary?code=deal_unit",
          props: {
            label: "dictValue",
            value: "dictValue"
          }
        }, {
          label: '原产国',
          prop: 'originatedCountriesName',
          overHidden: true,
          width: 100
        }, {
          label: '原产地区',
          prop: 'regionOrigin',
          overHidden: true,
          width: 100
        }, {
          label: '境内目的地',
          prop: 'domesticDestination',
          overHidden: true,
          width: 100
        }, {
          label: '征免方式',
          prop: 'expropriationExemptionType',
          overHidden: true,
          width: 100,
          filterable: true,
          type: 'select',
          dicUrl: "/api/blade-system/dict-biz/dictionary?code=expropriation_type",
          props: {
            label: "dictValue",
            value: "dictValue"
          }
        }]
      },
      optionTwo:{},
      optionTwoBack: {
        align: 'center',
        index: true,
        addBtnText: "录入明细",
        refreshBtn: false,
        addBtn: true,
        span: 8,
        addRowBtn: false,
        cellBtn: false,
        editBtn: false,
        delBtn: false,
        menuWidth: 140,
        dialogTop: 25,
        dialogWidth: "80%",
        showSummary: true,
        sumColumnList: [{
          name: 'amount',
          type: 'sum',
          decimals: 2
        }],
        column: [{
          label: '箱号',
          prop: 'caseNo',
          overHidden: true,
          rules: [{
            required: true,
            message: " ",
            trigger: "blur"
          }]
        }, {
          label: '箱类型',
          prop: 'boxType',
          overHidden: true
        }, {
          label: '拼箱标识',
          prop: 'lclSign',
          overHidden: true,
          filterable: true,
          type: 'select',
          dicData:[{
            label:'是',
            value:1
          },{
            label:'否',
            value:0
          }]
        }]
      },
      optionThree:{},
      optionThreeBack: {
        align: 'center',
        index: true,
        addBtnText: "录入明细",
        refreshBtn: false,
        addBtn: true,
        span: 8,
        addRowBtn: false,
        cellBtn: false,
        editBtn: false,
        delBtn: false,
        menuWidth: 140,
        dialogTop: 25,
        dialogWidth: "80%",
        showSummary: true,
        sumColumnList: [{
          name: 'amount',
          type: 'sum',
          decimals: 2
        }],
        column: [{
          label: '单证代码',
          prop: 'documentCode',
          overHidden: true
        },{
          label: '单证编码',
          prop: 'documentNo',
          overHidden: true
        }]
      },
      dataList: [],
      dataListTwo: [],
      tradingBoxFilesList: [],
      disabled: false,
      costData: {}
    }
  },
  async created() {
    this.roleName=localStorage.getItem("roleName")
    this.option = await this.getColumnData(this.getColumnName(246.1), this.optionBack);
    this.findObject(this.option.column, "commodityName").change = ({value, column}) => {
      for (let item of this.$refs.crud.DIC.commodityName){
        if (value === item.cname){
          this.formTwo.commodityNo = item.code
          this.formTwo.specificationModel = item.typeno
        }
      }
    }
    this.optionTwo = await this.getColumnData(this.getColumnName(246.2), this.optionTwoBack);
    this.optionThree = await this.getColumnData(this.getColumnName(246.21), this.optionThreeBack);
    selectByName("买箱费").then(res => {
      this.costData = res.data.data
    })
    this.key++
    if (this.onLoad.id.slice(0, 2) === '复制'){
      this.copyData(this.onLoad.id.slice(2, this.onLoad.id.length), false)
    } else if (this.onLoad.id && this.detailData.id) {
      this.refresh(this.onLoad.id, true)
    } else if (this.onLoad.id) {
      this.refresh(this.onLoad.id, true)
    }
  },
  methods: {
    onSuccess(response, file, fileList) {
      this.excelBox = false;
      this.refresh(this.form.id)
    },
    onError(err, file, fileList){
      this.$message.error(JSON.parse(err.message).msg)
    },
    confirmEdit() {
      if (this.form.status > 0) {
        //基础资料
        this.$set(this.optionForm, "disabled", true)
        //箱信息
        this.$set(this.option, "disabled", true)
        this.$set(this.option, "addBtn", false)
        this.$set(this.option, "menu", false)
        //费用信息
        this.$set(this.$refs.boxCost.option, "disabled", true)
        this.$set(this.$refs.boxCost.option, "addBtn", false)
        this.$set(this.$refs.boxCost.option, "menu", false)
        //集装箱
        this.$set(this.optionTwo, "disabled", true)
        this.$set(this.optionTwo, "addBtn", false)
        this.$set(this.optionTwo, "menu", false)
        //单证
        this.$set(this.optionThree, "disabled", true)
        this.$set(this.optionThree, "addBtn", false)
        this.$set(this.optionThree, "menu", false)
        //附件和顶部按钮
        this.disabled = true
      } else {
        //基础资料
        this.$set(this.optionForm, "disabled", false)
        //箱信息
        this.$set(this.option, "disabled", false)
        this.$set(this.option, "addBtn", true)
        this.$set(this.option, "menu", true)
        //集装箱
        this.$set(this.optionTwo, "disabled", false)
        this.$set(this.optionTwo, "addBtn", true)
        this.$set(this.optionTwo, "menu", true)
        //单证
        this.$set(this.optionThree, "disabled", false)
        this.$set(this.optionThree, "addBtn", true)
        this.$set(this.optionThree, "menu", true)
        //费用信息
        this.$set(this.$refs.boxCost.option, "disabled", false)
        this.$set(this.$refs.boxCost.option, "addBtn", true)
        this.$set(this.$refs.boxCost.option, "menu", true)
        //附件和顶部按钮
        this.disabled = false
      }
    },
    // 明细删除
    rowDel(row, index, type) {
      this.$confirm("确定将选择数据删除?", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      }).then(() => {
            if (row.id) {
              if (type == "SP"){
                tradingBoxItem(row.id).then(res => {
                  if (res.data.success) {
                    this.$message.success("操作成功!");
                    this.dataList.splice(index, 1);
                  }
                });
              }
              if (type == "JZX"){
                containerItem(row.id).then(res => {
                  if (res.data.success) {
                    this.$message.success("操作成功!");
                    this.containerList.splice(index, 1);
                  }
                });
              }
              if (type == "DZ"){
                documentsItem(row.id).then(res => {
                  if (res.data.success) {
                    this.$message.success("操作成功!");
                    this.documentsList.splice(index, 1);
                  }
                });
              }
            } else {
              if (type == "DZ"){
                this.dataList.splice(index, 1);
              }
              if (type == "JZX"){
                this.containerList.splice(index, 1);
              }
              if (type == "DZ"){
                this.documentsList.splice(index, 1);
              }
              this.$message.success("操作成功!");
            }
          }
      )
      ;
    },
    balabala(row,type) {
      if (row.name){
        this[type[0]][type[1]] = row.name
      }else {
        this[type[0]][type[1]] = row.cname
      }
    },
    //选择费用名称
    selectValue(value) {
      this.formThree.itemName = value.cname
    },
    //撤销
    repealCancel(tyrp) {
      this.$confirm("您确定撤回此次申请吗？", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      }).then(() => {
        const data = {
          id: this.form.id,
          pageLabel: "进口报关",
          importExportSigns: "BGJK",
          checkFlag:tyrp
        }
        const loading = this.$loading({
          lock: true,
          text: '加载中',
          spinner: 'el-icon-loading',
          background: 'rgba(255,255,255,0.7)'
        });
        repealCancel(data).then(res => {
          loading.close();
          this.$message.success('撤回成功')
          this.refresh(this.form.id)
        }).catch(() => {
          loading.close();
        })
      })
    },
    // 请核
    pleaseCheck() {
      this.$confirm("您确定提交请核申请吗?", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      }).then(() => {
        this.$refs["form"].validate((valid, done) => {
          done()
          if (valid) {
            if (this.dataList.length === 0) {
              return this.$message.error("商品信息不能为空")
            }
            if (this.$refs.boxCost.dataList.length === 0) {
              return this.$message.error("费用信息不能为空")
            } else {
              for (let item of this.$refs.boxCost.dataList) {
                if (!item.id) {
                  return this.$message.error("费用信息未保存")
                }
              }
            }
            let data = {
              ...this.form,
              itemList: this.dataList,
              feesList: this.dataListTwo,
              fileList: this.tradingBoxFilesList,
              containerList:this.containerList,
              documentsList:this.documentsList,
              importExportSigns: "BGJK",
            }
            const loading = this.$loading({
              lock: true,
              text: '加载中',
              spinner: 'el-icon-loading',
              background: 'rgba(255,255,255,0.7)'
            });
            submit(data).then(res => {
              const data = {
                id: res.data.data.id,
                url: '/purchase/importDeclaration/index',
                pageStatus: "this.$store.getters.domSaleStatus",
                pageLabel: "进口报关",
                checkFlag: 1,
              }
              pleaseCheck({
                ...data,
                importExportSigns: "BGJK"
              }).then(rest => {
                loading.close();
                this.$message.success('请核成功')
                this.refresh(res.data.data.id)
              }).catch(() => {
                loading.close();
              })
            }).catch(() => {
              loading.close();
            })
          }
        });
      })
    },
    //审核关闭
    choceScheduleFun() {
      this.checkScheduleDialog = false
    },
    refresh(id, type) {
      const loading = this.$loading({
        lock: true,
        text: '加载中',
        spinner: 'el-icon-loading',
        background: 'rgba(255,255,255,0.7)'
      });
      detail({id: id}).then(res => {
        this.form = res.data.data
        this.dataList = res.data.data.itemList
        this.dataListTwo = res.data.data.feesList
        this.tradingBoxFilesList = res.data.data.fileList
        this.containerList = res.data.data.containerList
        this.documentsList = res.data.data.documentsList
        delete this.form.containerList
        delete this.form.documentsList
        delete this.form.itemList
        delete this.form.feesList
        delete this.form.fileList
        loading.close();
        if (type) {
          //基础资料
          this.$set(this.optionForm, "disabled", true)
          //箱信息
          this.$set(this.option, "disabled", true)
          this.$set(this.option, "addBtn", false)
          this.$set(this.option, "menu", false)
          //集装箱
          this.$set(this.optionTwo, "disabled", true)
          this.$set(this.optionTwo, "addBtn", false)
          this.$set(this.optionTwo, "menu", false)
          //单证
          this.$set(this.optionThree, "disabled", true)
          this.$set(this.optionThree, "addBtn", false)
          this.$set(this.optionThree, "menu", false)
          //费用信息
          this.$set(this.$refs.boxCost.option, "disabled", true)
          this.$set(this.$refs.boxCost.option, "addBtn", false)
          this.$set(this.$refs.boxCost.option, "menu", false)
          //附件和顶部按钮
          this.disabled = true
        } else {
          if (this.form.status > 0) {
            //基础资料
            this.$set(this.optionForm, "disabled", true)
            //箱信息
            this.$set(this.option, "disabled", true)
            this.$set(this.option, "addBtn", false)
            this.$set(this.option, "menu", false)
            //集装箱
            this.$set(this.optionTwo, "disabled", true)
            this.$set(this.optionTwo, "addBtn", false)
            this.$set(this.optionTwo, "menu", false)
            //单证
            this.$set(this.optionThree, "disabled", true)
            this.$set(this.optionThree, "addBtn", false)
            this.$set(this.optionThree, "menu", false)
            //费用信息
            this.$set(this.$refs.boxCost.option, "disabled", true)
            this.$set(this.$refs.boxCost.option, "addBtn", false)
            this.$set(this.$refs.boxCost.option, "menu", false)
            //附件和顶部按钮
            this.disabled = true
          } else {
            //基础资料
            this.$set(this.optionForm, "disabled", false)
            //箱信息
            this.$set(this.option, "disabled", false)
            this.$set(this.option, "addBtn", true)
            this.$set(this.option, "menu", true)
            //集装箱
            this.$set(this.optionTwo, "disabled", false)
            this.$set(this.optionTwo, "addBtn", true)
            this.$set(this.optionTwo, "menu", true)
            //单证
            this.$set(this.optionThree, "disabled", false)
            this.$set(this.optionThree, "addBtn", true)
            this.$set(this.optionThree, "menu", true)
            //费用信息
            this.$set(this.$refs.boxCost.option, "disabled", false)
            this.$set(this.$refs.boxCost.option, "addBtn", true)
            this.$set(this.$refs.boxCost.option, "menu", true)
            //附件和顶部按钮
            this.disabled = false
          }
        }
      })
    },
    copyData(id, type){
      const loading = this.$loading({
        lock: true,
        text: '加载中',
        spinner: 'el-icon-loading',
        background: 'rgba(255,255,255,0.7)'
      });
      copyDetail({id: id}).then(res => {
        this.form = res.data.data
        this.dataList = res.data.data.itemList
        this.dataListTwo = res.data.data.feesList
        this.tradingBoxFilesList = res.data.data.fileList
        this.containerList = res.data.data.containerList
        this.documentsList = res.data.data.documentsList
        delete this.form.containerList
        delete this.form.documentsList
        delete this.form.itemList
        delete this.form.feesList
        delete this.form.fileList
        loading.close();
        if (type) {
          //基础资料
          this.$set(this.optionForm, "disabled", true)
          //箱信息
          this.$set(this.option, "disabled", true)
          this.$set(this.option, "addBtn", false)
          this.$set(this.option, "menu", false)
          //集装箱
          this.$set(this.optionTwo, "disabled", true)
          this.$set(this.optionTwo, "addBtn", false)
          this.$set(this.optionTwo, "menu", false)
          //单证
          this.$set(this.optionThree, "disabled", true)
          this.$set(this.optionThree, "addBtn", false)
          this.$set(this.optionThree, "menu", false)
          //费用信息
          this.$set(this.$refs.boxCost.option, "disabled", true)
          this.$set(this.$refs.boxCost.option, "addBtn", false)
          this.$set(this.$refs.boxCost.option, "menu", false)
          //附件和顶部按钮
          this.disabled = true
        } else {
          if (this.form.status > 0) {
            //基础资料
            this.$set(this.optionForm, "disabled", true)
            //箱信息
            this.$set(this.option, "disabled", true)
            this.$set(this.option, "addBtn", false)
            this.$set(this.option, "menu", false)
            //集装箱
            this.$set(this.optionTwo, "disabled", true)
            this.$set(this.optionTwo, "addBtn", false)
            this.$set(this.optionTwo, "menu", false)
            //单证
            this.$set(this.optionThree, "disabled", true)
            this.$set(this.optionThree, "addBtn", false)
            this.$set(this.optionThree, "menu", false)
            //费用信息
            this.$set(this.$refs.boxCost.option, "disabled", true)
            this.$set(this.$refs.boxCost.option, "addBtn", false)
            this.$set(this.$refs.boxCost.option, "menu", false)
            //附件和顶部按钮
            this.disabled = true
          } else {
            //基础资料
            this.$set(this.optionForm, "disabled", false)
            //箱信息
            this.$set(this.option, "disabled", false)
            this.$set(this.option, "addBtn", true)
            this.$set(this.option, "menu", true)
            //集装箱
            this.$set(this.optionTwo, "disabled", false)
            this.$set(this.optionTwo, "addBtn", true)
            this.$set(this.optionTwo, "menu", true)
            //单证
            this.$set(this.optionThree, "disabled", false)
            this.$set(this.optionThree, "addBtn", true)
            this.$set(this.optionThree, "menu", true)
            //费用信息
            this.$set(this.$refs.boxCost.option, "disabled", false)
            this.$set(this.$refs.boxCost.option, "addBtn", true)
            this.$set(this.$refs.boxCost.option, "menu", true)
            //附件和顶部按钮
            this.disabled = false
          }
        }
      })
    },
    //新增修改
    editCustomer() {
      this.$refs["form"].validate((valid, done) => {
        done()
        if (valid) {
          let data = {
            ...this.form,
            itemList: this.dataList,
            feesList: this.dataListTwo,
            fileList: this.tradingBoxFilesList,
            containerList:this.containerList,
            documentsList:this.documentsList,
            importExportSigns: "BGJK"
          }
          const loading = this.$loading({
            lock: true,
            text: '加载中',
            spinner: 'el-icon-loading',
            background: 'rgba(255,255,255,0.7)'
          });
          submit(data).then(res => {
            if (this.form.id) {
              this.$message.success("修改成功")
            } else {
              this.$message.success("新增成功")
            }
            loading.close();
            this.refresh(res.data.data.id)
          }).catch(() => {
            loading.close();
          })
        }
      });
    },
    rowSave(form, done, loading) {
      done(form)
    },
    rowUpdate(form, index, done, loading) {
      done(form)
    },
    //打开表单前
    beforeOpen(done, type) {
      done();
    },
    getGSData(row, type) {
      // this[type[0]][type[1]] = row.cname
      if (type[1] === "domesticName" || type[1] === "abroadName" || type[1] === "consumptionUnitName" || type[1] === "applicantName"){
        this[type[0]][type[1]] = row.cname
        this[type[0]][type[2]] = row.customsNo
      }
    },
    backToList(type) {
      if (type == 0) {
        if (this.detailData.id) {
          this.$router.push({
            path: '/purchase/importDeclaration/index'
          });
        }
        this.$emit("backToList", type);
      } else if (type == 1) {
        this.$router.push({
          path: '/approveData/index'
        });
        this.$emit("backToList", type);
      }
    },
    //自定义列保存
    async saveColumnTwo(ref, option, optionBack, code) {
      /**
       * 已定义全局方法，直接使用，saveColumnData保存列数据方法,参数传值(表格名称，当前表格的option数据)
       * 已定义全局方法，直接使用，getColumnName方法用来获取枚举值，参数根据自己定义的code值获取中文名
       * 一定要执行异步操作，要等接口成功返回，才能执行下一行代码
       */
      const inSave = await this.saveColumnData(this.getColumnName(code), this[option]);
      if (inSave) {
        this.$message.success("保存成功");
        //关闭窗口
        this.$refs[ref].$refs.dialogColumn.columnBox = false;
      }
    },
    resetTrigger() {
      if (this.optionForm.disabled == true) {
        if (this.form.status > 0) {
          //基础资料
          this.$set(this.optionForm, "disabled", true)
          //箱信息
          this.$set(this.option, "disabled", true)
          this.$set(this.option, "addBtn", false)
          this.$set(this.option, "menu", false)
          //集装箱
          this.$set(this.optionTwo, "disabled", true)
          this.$set(this.optionTwo, "addBtn", false)
          this.$set(this.optionTwo, "menu", false)
          //单证
          this.$set(this.optionThree, "disabled", true)
          this.$set(this.optionThree, "addBtn", false)
          this.$set(this.optionThree, "menu", false)
          //费用信息
          this.$set(this.$refs.boxCost.option, "disabled", true)
          this.$set(this.$refs.boxCost.option, "addBtn", false)
          this.$set(this.$refs.boxCost.option, "menu", false)
          //附件和顶部按钮
          this.disabled = true
        } else {
          //基础资料
          this.$set(this.optionForm, "disabled", false)
          //箱信息
          this.$set(this.option, "disabled", false)
          this.$set(this.option, "addBtn", true)
          this.$set(this.option, "menu", true)
          //集装箱
          this.$set(this.optionTwo, "disabled", false)
          this.$set(this.optionTwo, "addBtn", true)
          this.$set(this.optionTwo, "menu", true)
          //单证
          this.$set(this.optionThree, "disabled", false)
          this.$set(this.optionThree, "addBtn", true)
          this.$set(this.optionThree, "menu", true)
          //费用信息
          this.$set(this.$refs.boxCost.option, "disabled", false)
          this.$set(this.$refs.boxCost.option, "addBtn", true)
          this.$set(this.$refs.boxCost.option, "menu", true)
          //附件和顶部按钮
          this.disabled = false
        }
      } else {
        //基础资料
        this.$set(this.optionForm, "disabled", false)
        //箱信息
        this.$set(this.option, "disabled", false)
        this.$set(this.option, "addBtn", true)
        this.$set(this.option, "menu", true)
        //集装箱
        this.$set(this.optionTwo, "disabled", false)
        this.$set(this.optionTwo, "addBtn", true)
        this.$set(this.optionTwo, "menu", true)
        //单证
        this.$set(this.optionThree, "disabled", false)
        this.$set(this.optionThree, "addBtn", true)
        this.$set(this.optionThree, "menu", true)
        //费用信息
        this.$set(this.$refs.boxCost.option, "disabled", false)
        this.$set(this.$refs.boxCost.option, "addBtn", true)
        this.$set(this.$refs.boxCost.option, "menu", true)
        //附件和顶部按钮
        this.disabled = false
      }
    },
    //自定义列重置
    async resetColumnTwo(ref, option, optionBack, code) {
      this[option] = this[optionBack];
      const inSave = await this.delColumnData(this.getColumnName(code), this[optionBack]);
      if (inSave) {
        this.resetTrigger()
        this.$message.success("重置成功");
        this.$refs[ref].$refs.dialogColumn.columnBox = false;
      }
    }
  }
}
</script>

<style scoped>
::v-deep .el-form-item {
  margin-bottom: 8px;
}
</style>
