<!--空运待出列表-->
<template>
  <div class="app-container">
    <!-- 搜索工作栏 -->
    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="100px">
      <el-form-item :label="$t('编号')" prop="orderNo">
        <el-input v-model="queryParams.numberKey" :placeholder="$t('请输入订单号、唛头、提单号')" clearable @keyup.enter.native="handleQuery" @input="replaceSpace(queryParams, 'numberKey')" />
      </el-form-item>

      <el-form-item :label="$t('发货人')" prop="consignorKey">
        <el-input v-model.trim="queryParams.consignorKey" :placeholder="$t('发货人')" clearable @keyup.enter.native="handleQuery" />
      </el-form-item>
      <el-form-item :label="$t('收货人')" prop="consigneeKey">
        <el-input v-model.trim="queryParams.consigneeKey" :placeholder="$t('收货人')" clearable @keyup.enter.native="handleQuery" />
      </el-form-item>
      <el-form-item :label="$t('客户经理')" >
        <user-selector manage v-model="queryParams.salesmanIds" multiple clearable @change="handleQuery"
                       :prepend="{ id: 0, nickname: $t('未分配客户经理')}"/>
      </el-form-item>
      <div>
        <el-form-item :label="$t('始发仓')" prop="startWarehouseIds">
          <el-select v-model="queryParams.startWarehouseIds" :placeholder="$t('请选择始发仓')" clearable multiple @change="handleQuery">
            <el-option v-for="item in exportWarehouseList" :label="$l(item, 'title')" :value="item.id" :key="item.id"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item :label="$t('目的国')" prop="destCountryId">
          <el-select
            v-model="destCountryId"
            multiple
            :label="destCountryId"
            :placeholder="$t('请选择目的国')"
            clearable
            @change="handleQuery"
          >
            <el-option
              v-for="item in AddressProvince"
              :key="item.guojia"
              :label="item.guojiaName"
              :value="item.guojia"
            ></el-option>
          </el-select>
        </el-form-item>
        <el-form-item :label="$t('目的城市')" prop="objectiveId">
          <el-select
            v-model="objectiveId"
            multiple
            :placeholder="$t('请选择目的城市')"
            style="width: 200px"
            clearable
            @change="handleQuery"
          >
            <el-option
              v-for="item in AddressCity"
              :key="item.shi"
              :label="item.shiName"
              :value="item.shi"
            ></el-option>
          </el-select>
        </el-form-item>
        <el-form-item :label="$t('目的仓')" prop="destWarehouseId">
          <el-select
            v-model="destWarehouseId"
            multiple
            :placeholder="$t('请选择目的仓')"
            style="width: 200px"
            clearable
            @change="handleQuery"
          >
            <el-option
              v-for="item in AddressTown"
              :key="item.id"
              :label="item.titleZh"
              :value="item.id"
            ></el-option>
          </el-select>
        </el-form-item>
      </div>

      <!--<el-form-item :label="$t('运输方式')" prop="transportId">
        <dict-selector :type="DICT_TYPE.ECW_TRANSPORT_TYPE" v-model.number="queryParams.transportId" clearable @change="handleQuery"/>
      </el-form-item>-->
      <!--根据需求文档 lanbm 2024-06-23-->
      <el-form-item :label="$t('控货')" prop="isCargoControl" v-show="showSearch">
        <dict-selector v-model="queryParams.isCargoControl" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" fomatter="bool" clearable />
      </el-form-item>
      <el-form-item :label="$t('商品类型')" prop="goodsTypes" v-show="showSearch">
        <selector v-model="queryParams.goodsTypes" multiple :options="productAttrList" label-field="attrName" value-field="id">
        </selector>
      </el-form-item>

      <el-form-item :label="$t('商品')" prop="tidanNo" v-show="showSearch">
        <el-input v-model.trim="queryParams.prodKey" :placeholder="$t('请输入商品类型、品名或品牌')" clearable  @keyup.enter.native="handleQuery" />
      </el-form-item>

      <!--根据需求文档 lanbm 2024-06-23 隐藏-->
      <el-form-item :label="$t('入仓类型')" prop="warehouseType" v-show="showSearch">
        <dict-selector :type="DICT_TYPE.ECW_WAREHOUSING_TYPE" v-model="queryParams.warehouseType"  clearable/>
      </el-form-item>

      <!--根据需求文档 lanbm 2024-06-23 隐藏-->
      <el-form-item :label="$t('订单状态')" prop="status" v-show="showSearch">
        <dict-selector :type="DICT_TYPE.ORDER_STATUS" v-model="queryParams.status"
          @keyup.enter.native="handleQuery" clearable />
      </el-form-item>
      <el-form-item :label="$t('报关方式')" prop="customsType" v-show="showSearch">
        <dict-selector :type="DICT_TYPE.ECW_CUSTOMS_TYPE" v-model="queryParams.customsType" clearable @change="handleQuery" />
      </el-form-item>
      <el-form-item :label="$t('是否齐货')" v-show="showSearch">
        <!--// 字段存疑-->
        <dict-selector v-model="queryParams.isNeat" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" fomatter="bool"  clearable @change="handleQuery"/>
      </el-form-item>

      <el-form-item :label="$t('备案属性')" prop="productRecords" v-show="showSearch">
        <dict-selector :type="DICT_TYPE.PRODUCT_RECORD_ATTRIBUTE" multiple v-model="queryParams.productRecords" clearable @change="handleQuery" />
      </el-form-item>
      <!--lanbm 2024-06-23 根据需求文档隐藏-->
      <el-form-item :label="$t('快递单号')" prop="number" v-show="showSearch">
        <el-input v-model="queryParams.number" :placeholder="$t('快递单号')" clearable @keyup.enter.native="handleQuery" onkeyup="this.value=this.value.replace(/\s+/g, '')" />
      </el-form-item>
      <el-form-item :label="$t('外部仓')" prop="number" v-show="showSearch">
        <el-select v-model="queryParams.isExternalWarehouse" :placeholder="$t('请选择')" clearable @change="handleQuery">
          <el-option :label="$t('外部仓')" :value="1"></el-option>
          <el-option :label="$t('自有仓')" :value="0"></el-option>
        </el-select>
      </el-form-item>

      <el-form-item :label="$t('异常状态')" prop="status" v-show="showSearch">
        <dict-selector :type="DICT_TYPE.ORDER_ABNORMAL_STATE" v-model="queryParams.abnormalState"
          @keyup.enter.native="handleQuery" clearable />
      </el-form-item>
      <el-form-item :label="$t('审核状态')" prop="status" v-show="showSearch">
        <dict-selector :type="DICT_TYPE.ECW_ORDER_APPROVAL_TYPE" v-model="queryParams.auditType"
          @keyup.enter.native="handleQuery" clearable />
      </el-form-item>
      <el-form-item :label="$t('增值服务')" prop="number" v-show="showSearch">
        <el-select v-model="queryParams.types" :placeholder="$t('请选择')" multiple clearable>
          <el-option :label="$t('普通订单')" :value="0"></el-option>
          <el-option :label="$t('集运服务')" :value="1"></el-option>
          <el-option :label="$t('海外仓')" :value="2"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item :label="$t('出货渠道')" prop="number">
        <selector clearable :options="channelList" :label-field="$l('name')" value-field="channelId" v-model="queryParams.channelIds" multiple></selector>
      </el-form-item>
      <el-form-item :label="$t('特需')" prop="packageType" v-show="showSearch">
        <el-select v-model="queryParams.packageTypeArr" multiple :placeholder="$t('请选择')" clearable >
          <template v-for="item in getDictDatas(DICT_TYPE.ORDER_SPECIAL_NEEDS)">
            <el-option :label="$l(item, 'label')" :value="item.value"></el-option>
          </template>
        </el-select>
      </el-form-item>
      <el-form-item label="">
        <dict-selector :type="DICT_TYPE.ECW_BEGINTIME_TYPE_ENDTIME" :filter="(item) => item.value != 'PickTime'" v-model="dateFilterType" defaultable style="width: 150px; margin-right: 5px" />
        <el-date-picker v-model="dateFilter" type="datetimerange"  range-separator="-"
                        :start-placeholder="$t('开始日期')"
                        :end-placeholder="$t('结束日期')"
                        value-format="yyyy-MM-dd HH:mm:ss"
                        @change="handleQuery"
        >
        </el-date-picker>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" icon="el-icon-search" @click="handleQuery">{{$t('搜索')}}</el-button>
        <el-button icon="el-icon-refresh" @click="resetQuery">{{$t('重置')}}</el-button>
      </el-form-item>
    </el-form>

    <!-- 操作工具栏 -->
    <el-row :gutter="10" class="mb8">
      <el-col :span="1.5">
        <el-button :disabled="!multipleSelection.length" type="primary" plain size="mini" @click="batchCanShipment" v-hasPermi="['ecw:order:peddingList:batch_can_shipment']">{{$t('批量可出')}}</el-button>
        <el-button :disabled="!multipleSelection.length" type="primary" plain size="mini" @click="batchException" v-hasPermi="['ecw:order:peddingList:batch_exception']">{{$t('批量转异')}}</el-button>
        <el-button :disabled="!multipleSelection.length" type="primary" :loading="exporting" plain size="mini" @click="exportXls(ids)" v-hasPermi="['ecw:order:peddingList:export_selected']">{{$t('导出所选')}}</el-button>
        <el-button type="primary" :loading="exporting" plain size="mini" @click="exportXls(queryParams)" v-hasPermi="['ecw:order:peddingList:export_search']">{{$t('导出搜索')}}</el-button>
      </el-col>
      <right-toolbar
        :showSearch.sync="showSearch"
        @queryTable="getList"
      ></right-toolbar>
    </el-row>

    <!-- 列表 -->
    <el-table v-loading="loading" :data="list" @selection-change="handleSelectionChange">
      <el-table-column type="selection" width="55" align="center" />

      <el-table-column :label="$t('订单编号')" width="120px" align="center" prop="orderNo" >
        <template slot-scope="scope">
          <router-link :to="{path: '/order/detail',query: {orderId: scope.row.orderId}}" class="link-type">
            <span>{{ scope.row.orderNo }}</span>
          </router-link>
          <div style="display: flex;flex-wrap: wrap;" v-if="scope.row.advanceType">
            <el-button @click="deleteSpecial(item.value,scope.row.orderId)" size="mini" style="margin-left: 20px" type="danger" circle v-for="(item,index) in specialRendering(scope.row.advanceType)" :key="index">{{item.label[0]}}</el-button>
          </div>
        </template>
      </el-table-column>
      <el-table-column :label="$t('唛头')" align="center" prop="marks" />
      <el-table-column :label="$t('总箱数/入仓箱数')" align="center" prop="sumNum">
        <template slot-scope="{row}">
          <div :style="{color:row.customsType != 1 ? 'red' : null}">{{row.totalNum}}{{$t('箱')}}/{{row.sumNum}}{{$t('箱')}}</div>
          <dict-tag v-if="row.customsType != 1" style="color:red" :type="DICT_TYPE.ECW_CUSTOMS_TYPE" :value="row.customsType"></dict-tag>
        </template>
      </el-table-column>
      <el-table-column :label="$t('体积/重量')" align="center" prop="sumWeight">
        <template slot-scope="{row}">
          <!--入仓前是填单数据,入仓后是入仓数据,装柜审核通过等状态inwarehouseState会变成0,所以只能通过sumNum来判断-->
          <component
            :is="row.orderType > 1 ? 'el-tooltip' : 'div'"
            class="item"
            :style="{
            color: row.orderType > 1 ? 'red' : null
          }"
            effect="dark"
            :content="row.orderType===2 ? (row.wvolume||0)+'m³' : (row.vweight || 0) + 'kg'"
            placement="bottom">
            <div v-if="row.sumNum > 0">{{row.sumVolume}}m³ /{{row.sumWeight}}Kg</div>
            <div v-else>{{row.costVO.totalVolume}}m³ /{{row.costVO.totalWeight}}Kg</div>
          </component>
        </template>
      </el-table-column>
      <el-table-column :label="$t('始发仓')" align="center" prop="startWarehouseName">
        <template slot-scope="{row}">
          {{row.startWarehouseName}}
          <span style="color:red" v-if="row.isExternalWarehouse">({{$t('外部仓')}})</span>
        </template>
      </el-table-column>
      <el-table-column :label="$t('运输方式/目的地')" align="center" prop="transportId">
        <template slot-scope="{row}">
          <dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="row.transportId" /> / {{row.dstWarehouseName}}
        </template>
      </el-table-column>
      <el-table-column :label="$t('控货')" align="center" prop="isCargoControl" v-show="showSearch">
        <template slot-scope="{row}">
          <dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="row.isCargoControl" />
        </template>
      </el-table-column>
      <el-table-column :label="$t('订单状态')" align="center" prop="status">
        <template slot-scope="scope">
          <!-- <dict-tag :type="DICT_TYPE.ORDER_STATUS" :value="scope.row.status" /> -->
          {{scope.row.statusMsg}}
        </template>
      </el-table-column>
      <el-table-column :label="$t('预计运费/清关费')" align="center" prop="status">
        <template slot-scope="{row}">
          <div v-if="row.costVO">
            <template v-for="item in row.costVO.feeDtoList">
              <div v-if="[1,2].indexOf(item.feeType) > -1">
                {{item.feeType == 1 ? $t('运费'):$t('清关费')}}
                {{item.amount}}
                {{currencyMap[item.currencyId]}}
              </div>
            </template>
          </div>
        </template>
      </el-table-column>
      <el-table-column :label="$t('操作')" align="center" class-name="small-padding fixed-width actions" width="150px">
        <template slot-scope="scope">
            <el-button type="text" @click="setCanShipment(scope.row)"  v-hasPermi="['ecw:order:peddingList:can_shipment']">{{$t('可出')}}</el-button>
            <el-button type="text" @click="printTagOrderId=scope.row.orderId" v-hasPermi="['ecw:order:peddingList:print_tag']">{{$t('打印标签')}}</el-button>
        </template>
      </el-table-column>
    </el-table>
    <!-- 分页组件 -->
    <pagination v-show="total > 0" :total="total" :page.sync="queryParams.page" :limit.sync="queryParams.rows"
      @pagination="getList" />

    <print-tag v-if="printTagOrderId !== null" :order-id="printTagOrderId" @close="printTagOrderId=null" />

    <el-dialog :title="$t('订单转异')" center :visible.sync="showBatchException">
      <el-form label-position="top" label-width="200" ref="batchExceptionForm" :model="batchExceptionForm" :rules="exceptionRules">
        <el-form-item :label="$t('订单号')" prop="manualExceptionType">
          {{multipleSelection.map(item => item.orderNo).join(',')}}
        </el-form-item>
        <el-form-item :label="$t('原因类型')" prop="manualExceptionType">
          <dict-selector v-model="batchExceptionForm.manualExceptionType" form-type="checkbox" :type="DICT_TYPE.MANUAL_EXCEPTION_TYPE" multiple ></dict-selector>
        </el-form-item>
        <el-form-item :label="$t('附件')">
          <image-and-video-upload v-model="batchExceptionForm.exceptionUrls"></image-and-video-upload>
        </el-form-item>
        <el-form-item :label="$t('详细信息')">
          <el-input v-model="batchExceptionForm.descZh" type="textarea"></el-input>
        </el-form-item>
      </el-form>
      <span slot="footer" class="dialog-footer">
        <el-button  type="primary" @click="handleBatchException">{{$t('确认转异')}}</el-button>
        <el-button @click="showBatchException = false">{{$t('取消')}}</el-button>
      </span>
    </el-dialog>
  </div>
</template>

<script>
import Selector from '@/components/Selector'
import ProductSelector from '@/components/ProductSelector'
import { getProductAttrList } from '@/api/ecw/productAttr'
import CustomerSelector from '@/components/CustomerSelector'
import specialNeeds from '@/views/ecw/order/components/specialNeeds';
import {
    setCanShipment,
    canShipmentPage,
    batchCanShipment,
    batchException,
    waitingShipmentPage,
    orderSpecialNeed, exportCanShipment, exportWaitingShipment
} from "@/api/ecw/order";
import PrintTag from './components/PrintTag'
import PrintWarehouseReceipt from './components/PrintWarehouseReceipt'
import PrintLadingBill from './components/PrintLadingBill'
import BatchPickup from './components/BatchPickup'
import withdrawal from "@/views/ecw/order/withdrawal";
import UserSelector from '@/components/UserSelector'
import BatchSingleApplication from "@/views/ecw/order/batchSingleApplication";
import FeeApplication from "@/views/ecw/order/feeApplication";
import MergeLog from '@/views/ecw/order/components/MergeLog'
import PickupLog from './components/PickupLog'
import {getWarehouseList} from '@/api/ecw/warehouse'
import { getCurrencyPage } from "@/api/ecw/currency";
import SplitRevoke from "@/views/ecw/order/components/SplitRevoke";
import {getChannelList} from "@/api/ecw/channel";
import ImageAndVideoUpload from "@/components/ImageAndVideoUpload";
import Template from "@/views/cms/template/index.vue";
import {getRegionList} from "@/api/ecw/order"

export default {
  name: "EcwOrderPenddinglist",
  components: {
    Template,
    UserSelector,
    FeeApplication,
    BatchSingleApplication,
    MergeLog,
    PickupLog,
    SplitRevoke,
    ImageAndVideoUpload,
    CustomerSelector, ProductSelector, Selector,specialNeeds,PrintTag, PrintWarehouseReceipt, PrintLadingBill, BatchPickup,withdrawal
  },
  data() {
    return {
      // 显示搜索条件
      showSearch: false,
      // 导出中
      exporting: false,
      // 选中数组
      ids: [],
      // 非单个禁用
      single: true,
      // 非多个禁用
      multiple: true,
      // 遮罩层
      loading: true,
      // 总条数
      total: 0,
      // 订单列表
      list: [],

      // 查询参数
      queryParams: {
        page: 1,
        rows: 10
      },
      warehouseList:[],
      productAttrList: [],  // 商品属性
      molecule: '', //重货比分子
      denominator: '', //重货比分母
      dateFilterType: '', //日期筛选类别
      dateFilter: [], //筛选日期

      printTagOrderId: null, // 显示打印标签的订单ID
      isShow:false,//特殊显示
      multipleSelection:[],
      params: {
        page: 1,
        rows: 20,
      },
      currencyList:[],
      channelList:[],
      // 是否显示批量转异弹层
      showBatchException: false,
      // 批量转异表单
      batchExceptionForm: {},
      // 批量转异表单验证规则
      exceptionRules: {
        manualExceptionType: [
          { required: true, message: '请勾选原因类型', trigger: 'change' },
          {
            validator: (rule, value, callback) => {
              if (value.length <= 0) {
                callback(new Error('请勾选原因类型'))
              }
              callback()
            }, trigger: 'change'
          }
        ]
      },
      AddressProvince: [],
      AddressCity: [],
      AddressTown: [],
      destCountryId: null,
      objectiveId: null,
      destWarehouseId: null,
    };
  },
  watch:{
    isChinese(){
      this.getList()
    },
    destCountryId: {
      //监听当前地区值的变化,于与上方地区值进行了双向绑定
      deep: true, //深度监听
      handler() {
        //每当值省份值改变时其下地区值进行清空
        this.AddressCity = [];
        this.AddressTown = [];
        this.objectiveId = "";
        this.destWarehouseId = "";
        this.findByprovinceCode();
        if (this.destCountryId == "") {
          this.getAddressCity()
          this.getAddressTown()
        } else if (
          this.destCountryId != "" &&
          this.objectiveId == "" &&
          this.destWarehouseId == ""
        ) {
          this.getAddressTown()
        }
      },
    },
    objectiveId: {
      deep: true, //深度监听
      handler() {
        this.AddressTown = [];
        this.destWarehouseId = "";
        this.findBycityCode();

        if (
          this.objectiveId != "" &&
          this.destCountryId != "" &&
          this.destWarehouseId == ""
        ) {
          //获取当前城市值id,获取该城市下区域
        } else if (
          this.destCountryId == "" &&
          this.objectiveId == "" &&
          this.destWarehouseId == ""
        ) {
          this.getAddressTown()
        } else if (
          this.destCountryId != "" &&
          this.objectiveId == "" &&
          this.destWarehouseId == ""
        ) {
          this.findByprovinceCode();
          this.getAddressTown()
        }
      },
    },
    destWarehouseId: {
      deep: true, //深度监听
      handler() {
        if (
          this.objectiveId != "" &&
          this.destCountryId != "" &&
          this.destWarehouseId == ""
        ) {
          //获取当前城市值id,获取该城市下区域
          this.findBycityCode();
        } else if (
          this.destCountryId != "" &&
          this.objectiveId == "" &&
          this.destWarehouseId == ""
        ) {
          this.getAddressTown()
        }
      },
    },
  },
  computed: {
    isChinese(){
      return this.$i18n.locale === 'zh_CN'
    },
    exportWarehouseList(){
      /* tradeType 1 进口,2出口,3进出口 */
      return this.warehouseList.filter(item => item.tradeType == 2 || item.tradeType == 3)
    },
    importWarehouseList(){
      return this.warehouseList.filter(item => item.tradeType == 1 || item.tradeType == 3)
    },
    combinedQueryParams(){
      let timeParams = {}
      if(this.dateFilterType && this.dateFilter){
        timeParams['begin' + this.dateFilterType] = this.dateFilter[0]
        timeParams['end' + this.dateFilterType] = this.dateFilter[1]
      }
      let queryParams = {}
      //目的国
      if (this.destCountryId != null && this.destCountryId != "") {
        queryParams.destCountryIds = this.destCountryId;
      }
      //目的城市
      if (this.objectiveId != null && this.objectiveId != "") {
        queryParams.objectiveIds = this.objectiveId;
      }
      //目的仓
      if (this.destWarehouseId != null && this.destWarehouseId != "") {
        queryParams.destWarehouseIds = this.destWarehouseId;
      }
      return Object.assign({}, this.queryParams, timeParams, queryParams)
    },
    currencyMap(){
      let map = {}
      this.currencyList.forEach(item => {
        map[item.id] = this.$l(item, 'title')
      })
      return map
    }
  },
  activated(){
    this.getList()
    this.$store.dispatch('getBadgeData')

  },
  created() {
    this.getList();
    getProductAttrList().then(res => this.productAttrList = res.data)
    getWarehouseList().then(res => this.warehouseList = res.data)

    getCurrencyPage(this.params).then(res => this.currencyList = res.data.list)
    getChannelList().then(res => this.channelList = res.data)

    this.$store.dispatch('getBadgeData')
    this.getAddressProvince()
    this.getAddressCity()
    this.getAddressTown()
  },
  methods: {
    /** 查询列表 */
    getList() {
      this.loading = true;
      const query = {...this.combinedQueryParams}
      if(query.packageTypeArr && query.packageTypeArr.length){
        query.packageType = query.packageTypeArr.join(',')
      }
      // 执行查询
      waitingShipmentPage(query).then(response => {
        // 部分情况下,订单后面的操作下拉菜单会显示按钮,但是下来没有选项,在elTable组件更新的时候会导致渲染错误,所以要在更新渲染前清空一次list让table彻底重新渲染,避免部分更新导致异常
        this.list = []
        this.$nextTick(() => {
          this.list = response.data.list
        })
        this.total = response.data.total;
        this.loading = false;
      });
    },
    /** 搜索按钮操作 */
    handleQuery() {
      this.queryParams.page = 1;
      this.$nextTick(this.getList)
    },
    /** 重置按钮操作 */
    resetQuery() {
      this.queryParams = {
        page: 1,
        rows: 10
      }
      this.dateFilter = []
      this.destCountryId = null
      this.destWarehouseId = null
      this.objectiveId = null

      this.queryParams.channelIds = null
      this.handleQuery();
    },
    /** 新增按钮操作 */
    handleAdd() {
      this.$router.push('create')
    },
    /** 修改按钮操作 */
    handleUpdate(row) {
      this.$router.push('edit?id=' + row.orderId)
    },
    // 表格多选
    handleSelectionChange(selection) {
      this.multipleSelection = selection
      this.ids = selection.map(item => item.orderId)
      this.single = selection.length !== 1
      this.multiple = !selection.length
    },
    // 设置可出
    setCanShipment(row){
      this.$confirm(this.$t(`您确定要将订单{orderNo}设置为可出吗?`, {orderNo: row.orderNo})).then(() =>{
        return setCanShipment(row.orderId)
      }).then(res =>{
        this.$message.success(res.message || this.$t('操作成功'))
        this.getList()
      })
    },
    // 批量可出
    batchCanShipment(){
      let orderNo = this.multipleSelection.map(item => item.orderNo).join(', ')
      this.$confirm(this.$t(`您确定要将订单{orderNo}设置为可出吗?`, {orderNo})).then(() =>{
        return batchCanShipment(this.ids)
      }).then(res =>{
        this.$message.success(res.message || this.$t('操作成功'))
        this.getList()
      })
    },
    // 批量转异
    batchException(){
      if(!this.multipleSelection.length){
        return this.$message.error("暂无选择订单")
      }
      this.showBatchException = true
      this.batchExceptionForm.exceptionUrls = []
    },
    handleBatchException(){
      // 以下代码是copilot生成,暂无接口,回头在改
      this.$refs.batchExceptionForm.validate(valid => {
        if (valid) {
          let params = Object.assign({}, this.batchExceptionForm, {orderIds: this.ids})
          params.manualExceptionType = params.manualExceptionType.join(',')
          batchException(params).then(res =>{
            this.$message.success(res.message || this.$t('操作成功'))
            this.showBatchException = false
            this.getList()
          })
        }
      })
    },
    specialRendering(val){
        console.log('val', val)
        if(val !== undefined){
            let i = val.split(',')
            return this.getDictDatas(this.DICT_TYPE.ORDER_SPECIAL_NEEDS).filter(e => {
                return i.indexOf(e.value) > -1
            }).map(item => {
                // 打字开头的用最后一个字,否则取第一个字
                item.symbol = item.label[0] == '打' ? item.label[item.label.length-1]: item.label[0]
                return item
            })
        }
    },
    deleteSpecial(id,orderId){
        this.$confirm(this.$t('确定删除此特需么?')).then(() => {
            return orderSpecialNeed({orderId:orderId,advanceType:id})
        }).then(() => {
            this.getList()
        })
    },
    exportXls(params){
        this.exporting = true
        const exportParams = Array.isArray(params) ? {orderIdList: params} : {...params}
        exportWaitingShipment(exportParams).then(res => {
            this.$message.success(this.$t('已加入导出队列,请稍后在下载日志中下载'))
        }).finally(() => {
            this.exporting = false
        })
    },
    getAddressProvince() {
      getRegionList(1, 1).then(({ data }) => {
        this.AddressProvince = data;
      })
    },
    getAddressCity() {
      getRegionList(4, 4).then(({ data }) => {
        this.AddressCity = data;
      })
    },
    getAddressTown() {
      getRegionList(5, 5).then(({ data }) => {
        this.AddressTown = data;
      })
    },
    findByprovinceCode() {
      if (this.destCountryId != null && this.destCountryId != '') {
        //获取当前省份值id,获取该省份下城市 destCountryId provinceCode
        getRegionList(2, this.destCountryId).then(({ data }) => {
          this.AddressCity = data;
        })
      }
    },
    findBycityCode() {
      if (this.objectiveId != null && this.objectiveId != '') {
        //获取当前城市值id,获取该城市下区域
        getRegionList(3, this.objectiveId).then(({ data }) => {
          this.AddressTown = data;
        })
      }
    },
    // 自动去除空格
    replaceSpace(obj, field) {
      obj[field] = obj[field].replace(/\s+/g, "")
    }
  }
};
</script>
<style lang="scss" scoped>
::v-deep .actions{
    .el-dropdown{
      margin-right: 10px;
      &:last-child {
        margin-right: 0;
      }
    }
}
</style>