index.vue 47.3 KB
Newer Older
ylpmty's avatar
ylpmty committed
1 2 3 4
<template>
  <div class="app-container">

    <!-- 搜索工作栏 -->
5
    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
dragondean@qq.com's avatar
dragondean@qq.com committed
6
      <el-form-item :label="$t('编号')" prop="orderNo">
7 8 9 10 11
        <el-input v-model="noParam.value" :placeholder="$t('请输入订单号、唛头、提单号')" clearable @keyup.enter.native="handleQuery">
          <template slot="prepend">
            <dict-selector :type="DICT_TYPE.ORDER_QUERY_NO_FIELD" defaultable v-model="noParam.key" class="w-50" />
          </template>
        </el-input>
ylpmty's avatar
ylpmty committed
12
      </el-form-item>
Marcus's avatar
Marcus committed
13 14
      <!-- <el-form-item :label="$t('唛头')" prop="marks">
        <el-input v-model="queryParams.marks" :placeholder="$t('唛头')" clearable @keyup.enter.native="handleQuery" />
15
      </el-form-item> -->
16

dragondean@qq.com's avatar
dragondean@qq.com committed
17 18
      <el-form-item :label="$t('发货人')" prop="consignorKey">
        <el-input v-model="queryParams.consignorKey" :placeholder="$t('发货人')" clearable @keyup.enter.native="handleQuery" />
19
      </el-form-item>
dragondean@qq.com's avatar
dragondean@qq.com committed
20 21
      <el-form-item :label="$t('收货人')" prop="consigneeKey">
        <el-input v-model="queryParams.consigneeKey" :placeholder="$t('收货人')" clearable @keyup.enter.native="handleQuery" />
22
      </el-form-item>
23
      <el-form-item label="">
24
        <dict-selector :type="DICT_TYPE.ECW_BEGINTIME_TYPE_ENDTIME" :filter="(item) => item.value != 'PickTime'" v-model="dateFilterType" defaultable style="width: 150px; margin-right: 5px" />
25
        <el-date-picker v-model="dateFilter" type="datetimerange"  range-separator="-"
26 27 28 29 30 31
          :start-placeholder="$t('开始日期')"
          :end-placeholder="$t('结束日期')"
          value-format="yyyy-MM-dd HH:mm:ss"
          @change="handleQuery"
          >
          </el-date-picker>
ylpmty's avatar
ylpmty committed
32
      </el-form-item>
33 34 35
      <el-form-item :label="$t('始发仓')" prop="startWarehouseId">
        <el-select v-model="queryParams.startWarehouseId" :placeholder="$t('请选择始发仓')" clearable @change="handleQuery">
          <el-option v-for="item in exportWarehouseList" :label="$l(item, 'title')" :value="item.id" :key="item.id"></el-option>
36 37
        </el-select>
      </el-form-item>
38 39 40
      <el-form-item :label="$t('目的仓')" prop="destWarehouseId">
        <el-select v-model="queryParams.destWarehouseId" :placeholder="$t('请选择目的仓')" clearable @change="handleQuery">
          <el-option v-for="item in importWarehouseList" :label="$l(item, 'title')" :value="item.id" :key="item.id"></el-option>
41 42 43
        </el-select>
      </el-form-item>

dragondean@qq.com's avatar
dragondean@qq.com committed
44
      <el-form-item :label="$t('运输方式')" prop="transportId" v-if="!transportId">
45
        <dict-selector :type="DICT_TYPE.ECW_TRANSPORT_TYPE" v-model.number="queryParams.transportId" clearable @change="handleQuery"/>
46 47
      </el-form-item>

Marcus's avatar
Marcus committed
48
      <!-- <el-form-item :label="$t('商品分类')" prop="goodsType">
49 50 51
        <selector v-model="queryParams.goodsType" :options="productAttrList" label-field="attrName" value-field="id">
        </selector>
      </el-form-item>
Marcus's avatar
Marcus committed
52
      <el-form-item :label="$t('品名')" prop="prodId">
53 54
        <product-selector v-model="queryParams.prodId" @keyup.enter.native="handleQuery" />
      </el-form-item>
Marcus's avatar
Marcus committed
55
      <el-form-item :label="$t('品牌')" prop="brand">
56 57
        <dict-selector v-model="queryParams.brand" :type="DICT_TYPE.ECW_IS_BRAND" formatter="bool" clearable
          @keyup.enter.native="handleQuery" />
58 59
      </el-form-item> -->

60
      <el-form-item :label="$t('商品')" prop="tidanNo">
61 62 63 64 65
        <el-input v-model="prodParam.value" :placeholder="$t('请输入商品类型、品名或品牌')" clearable @keyup.enter.native="handleQuery">
          <template slot="prepend">
            <dict-selector :type="DICT_TYPE.ORDER_QUERY_PROD_FIELD" defaultable v-model="prodParam.key" class="w-50" />
          </template>
        </el-input>
66 67
      </el-form-item>

68
      <el-form-item :label="$t('控货')" prop="isCargoControl">
dragondean@qq.com's avatar
dragondean@qq.com committed
69
        <dict-selector v-model="queryParams.isCargoControl" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" fomatter="bool" clearable />
70
      </el-form-item>
71
      <el-form-item :label="$t('入仓类型')" prop="warehouseType">
72
        <dict-selector :type="DICT_TYPE.ECW_WAREHOUSING_TYPE" v-model="queryParams.warehouseType"  clearable/>
73
      </el-form-item>
74
      <el-form-item :label="$t('客户经理')" >
邓春圆's avatar
邓春圆 committed
75
        <user-selector manage v-model="queryParams.salesmanId" clearable @change="handleQuery"/>
ylpmty's avatar
ylpmty committed
76
      </el-form-item>
77
      <el-form-item :label="$t('订单状态')" prop="status">
78
        <dict-selector :type="DICT_TYPE.ORDER_STATUS" v-model="queryParams.status"
79
          @keyup.enter.native="handleQuery" :filter="statusDictFilter" clearable />
80
      </el-form-item>
81
      <el-form-item :label="$t('报关方式')" prop="customsType">
82
        <dict-selector :type="DICT_TYPE.ECW_CUSTOMS_TYPE" v-model="queryParams.customsType" clearable @change="handleQuery" />
83
      </el-form-item>
84
      <el-form-item :label="$t('是否齐货')" >
85
        <!--// 字段存疑-->
86
        <dict-selector v-model="queryParams.isNeat" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" fomatter="bool"  clearable @change="handleQuery"/>
ylpmty's avatar
ylpmty committed
87
      </el-form-item>
Marcus's avatar
Marcus committed
88
      <!-- <el-form-item :label="$t('重货比')" prop="weightRatio">
89 90 91 92 93
        <el-input style="width: 100px;" v-model="molecule" placeholder="" clearable @change="moleculeChange"
          @keyup.enter.native="handleQuery" />
        -
        <el-input style="width: 100px;" v-model="denominator" placeholder="" clearable @change="denominatorChange"
          @keyup.enter.native="handleQuery" />
94
      </el-form-item> -->
95
      <el-form-item :label="$t('备案属性')" prop="productRecord">
96
        <dict-selector :type="DICT_TYPE.PRODUCT_RECORD_ATTRIBUTE" v-model="queryParams.productRecord" clearable @change="handleQuery" />
97
      </el-form-item>
98 99
      <el-form-item :label="$t('快递单号')" prop="number">
        <el-input v-model="queryParams.number" :placeholder="$t('快递单号')" clearable @keyup.enter.native="handleQuery" />
ylpmty's avatar
ylpmty committed
100
      </el-form-item>
dragondean@qq.com's avatar
dragondean@qq.com committed
101 102 103 104 105 106
      <el-form-item :label="$t('外部仓')" prop="number">
        <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>
ylpmty's avatar
ylpmty committed
107

108 109 110 111 112
      <el-form-item :label="$t('异常状态')" prop="status">
        <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">
dragondean@qq.com's avatar
dragondean@qq.com committed
113
        <dict-selector :type="DICT_TYPE.ECW_ORDER_APPROVAL_TYPE" v-model="queryParams.auditType"
114 115
          @keyup.enter.native="handleQuery" clearable />
      </el-form-item>
116 117 118 119 120 121 122
      <el-form-item :label="$t('订单类型')" prop="number">
        <el-select v-model="queryParams.type" :placeholder="$t('请选择')" 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>
123 124
      <!--空运多一个出货渠道筛选-->
      <el-form-item :label="$t('出货渠道')" prop="channelId" v-if="channelList.length">
邓春圆's avatar
邓春圆 committed
125
        <selector :clearable="true" :options="channelList" :label-field="$l('name')" value-field="channelId" v-model="queryParams.channelId"></selector>
126
      </el-form-item>
127 128 129 130 131 132 133
      <el-form-item :label="$t('特需')" prop="packageType">
        <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>
ylpmty's avatar
ylpmty committed
134
      <el-form-item>
135
        <el-button type="primary" icon="el-icon-search" @click="handleQuery" :loading="loading">{{$t('搜索')}}</el-button>
136
        <el-button icon="el-icon-refresh" @click="resetQuery">{{$t('重置')}}</el-button>
ylpmty's avatar
ylpmty committed
137 138 139 140 141
      </el-form-item>
    </el-form>

    <!-- 操作工具栏 -->
    <el-row :gutter="10" class="mb8">
dragondean@qq.com's avatar
dragondean@qq.com committed
142
      <el-col :span="1.5" v-if="transportId">
ylpmty's avatar
ylpmty committed
143
        <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
144
          v-hasPermi="['ecw:order:create']">{{$t('新增')}}</el-button>
ylpmty's avatar
ylpmty committed
145 146
      </el-col>
      <el-col :span="1.5">
dcy's avatar
dcy committed
147 148
<!--        <el-button type="primary" plain icon="el-icon-setting" size="mini" @click="handleEdit" :disabled="!batchWarehouseAdjustment">{{$t('批量调仓')}}-->
<!--        </el-button>-->
149
        <el-button type="primary" v-hasPermi="['ecw:order:batch_release']" plain icon="el-icon-setting" size="mini" @click="showBatchPickup=true">{{$t('批量提货')}}</el-button>
150 151
      </el-col>
      <el-col :span="1.5">
152 153
        <!-- <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
          :loading="exportLoading" v-hasPermi="['ecw:order:export']">{{$t('导出')}}</el-button> -->
154
        <el-dropdown v-hasPermi="isAll ? ['ecw:order:export','ecw:order:export:other']:[exportPermiString]">
155
          <el-button type="primary" :loading="exportLoading" size="mini">
dragondean@qq.com's avatar
dragondean@qq.com committed
156
            {{$t('导出')}} <i class="el-icon-arrow-down el-icon--right"></i>
157 158
          </el-button>
          <el-dropdown-menu slot="dropdown">
dragondean@qq.com's avatar
dragondean@qq.com committed
159 160
            <el-dropdown-item v-hasPermi="[exportPermiString]" @click.native="exportChecked">{{$t('导出勾选')}}</el-dropdown-item>
            <el-dropdown-item v-hasPermi="[exportPermiString]" @click.native="exportSearch">{{$t('导出搜索')}}</el-dropdown-item>
TIAN.DESHENG's avatar
TIAN.DESHENG committed
161
            <template v-if="isAll">
dragondean@qq.com's avatar
dragondean@qq.com committed
162 163 164 165 166 167 168
              <el-dropdown-item hasPermi="[exportPermiString]" @click.native="exportAbnormal">{{$t('异常单统计')}}</el-dropdown-item>
              <el-dropdown-item hasPermi="[exportPermiString]" @click.native="exportHeavyOrder">{{$t('重货单统计')}}</el-dropdown-item>
              <el-dropdown-item hasPermi="[exportPermiString]" @click.native="exportReturnOrder">{{$t('退仓单统计')}}</el-dropdown-item>
              <el-dropdown-item hasPermi="[exportPermiString]" @click.native="exportSaleRepay">{{$t('售后赔偿金额统计')}}</el-dropdown-item>
              <el-dropdown-item hasPermi="[exportPermiString]" @click.native="exportCustomsDatas">{{$t('报关数据统计')}}</el-dropdown-item>
              <el-dropdown-item hasPermi="[exportPermiString]" @click.native="exportShippingDatas">{{$t('客户出货量统计')}}</el-dropdown-item>
              <el-dropdown-item hasPermi="[exportPermiString]" @click.native="exportShipFee">{{$t('预付运费统计')}}</el-dropdown-item>
dragondean@qq.com's avatar
dragondean@qq.com committed
169
            </template>
170 171 172 173 174
          </el-dropdown-menu>
        </el-dropdown>
      </el-col>
      <el-col :span="15" v-if="statistics">
        <!-- 订单列表显示搜索条件对应箱数、仓库实测、收款方数、重量 -->
dragondean@qq.com's avatar
dragondean@qq.com committed
175
        {{$t('合计:{totalNum}箱,{totalVolume}m³(测) {totalChargeVolume}m³(重) {totalWeight}KG', statistics)}}
ylpmty's avatar
ylpmty committed
176 177 178 179 180
      </el-col>
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
    </el-row>

    <!-- 列表 -->
181 182
    <el-table v-loading="loading" :data="list" @selection-change="handleSelectionChange">
      <el-table-column type="selection" width="55" align="center" />
ylpmty's avatar
ylpmty committed
183

184
      <el-table-column :label="$t('订单编号')" width="120px" align="center" prop="orderNo" >
ylpmty's avatar
ylpmty committed
185 186 187 188
        <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>
dragondean@qq.com's avatar
dragondean@qq.com committed
189
          <div style="display: flex;flex-wrap: wrap;" v-if="scope.row.advanceType">
190
            <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.symbol}}</el-button>
dcy's avatar
dcy committed
191
          </div>
ylpmty's avatar
ylpmty committed
192 193
        </template>
      </el-table-column>
194 195
      <el-table-column :label="$t('唛头')" align="center" prop="marks" />
      <el-table-column :label="$t('总箱数/入仓箱数')" align="center" prop="sumNum">
dragondean@qq.com's avatar
dragondean@qq.com committed
196
        <template slot-scope="{row}">
dragondean@qq.com's avatar
dragondean@qq.com committed
197 198
          <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>
dragondean@qq.com's avatar
dragondean@qq.com committed
199
        </template>
200
      </el-table-column>
201
      <el-table-column :label="$t('体积/重量')" align="center" prop="sumWeight">
dragondean@qq.com's avatar
dragondean@qq.com committed
202
        <template slot-scope="{row}">
203
          <!--入仓前是填单数据,入仓后是入仓数据,装柜审核通过等状态inwarehouseState会变成0,所以只能通过sumNum来判断-->
dragondean@qq.com's avatar
dragondean@qq.com committed
204
          <component
205
          :is="row.orderType > 1 ? 'el-tooltip' : 'div'"
dragondean@qq.com's avatar
dragondean@qq.com committed
206 207
          class="item"
          :style="{
208
            color: row.orderType > 1 ? 'red' : null
dragondean@qq.com's avatar
dragondean@qq.com committed
209 210
          }"
          effect="dark"
211
          :content="row.orderType===2 ? (row.wvolume||0)+'m³' : (row.vweight || 0) + 'kg'"
212
          placement="bottom">
213 214
            <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>
dragondean@qq.com's avatar
dragondean@qq.com committed
215
          </component>
216 217 218 219
          <!-- <el-tooltip v-if="scope.row.orderExceptionType=='order_heavy_cargo_exception'" class="item" effect="dark" :content="(scope.row.wvolume||0)+'m³'" placement="bottom">
            <span style="color:#ff4949" v-if="scope.row.orderStatus >= 5 ">{{scope.row.volume+"m³/"+scope.row.weight+"kg"}}</span>
            <span style="color:#ff4949" v-else>{{scope.row.totalVolume+"m³/"+scope.row.totalWeight+"kg"}}</span>
          </el-tooltip> -->
dragondean@qq.com's avatar
dragondean@qq.com committed
220
        </template>
221
      </el-table-column>
222
      <el-table-column :label="$t('始发仓')" align="center" prop="startWarehouseName">
dragondean@qq.com's avatar
dragondean@qq.com committed
223
        <template slot-scope="{row}">
224
          {{row.startWarehouseName}}
225
          <span style="color:red" v-if="row.isExternalWarehouse">({{$t('外部仓')}})</span>
dragondean@qq.com's avatar
dragondean@qq.com committed
226 227
        </template>
      </el-table-column>
228
      <el-table-column :label="$t('运输方式/目的地')" align="center" prop="transportId">
229
        <template slot-scope="{row}">
230
          <dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="row.transportId" /> / {{row.dstWarehouseName}}
231 232
        </template>
      </el-table-column>
233
      <el-table-column :label="$t('控货')" align="center" prop="transportId">
234 235
        <template slot-scope="{row}">
          <dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="row.isCargoControl" />
ylpmty's avatar
ylpmty committed
236 237
        </template>
      </el-table-column>
238
      <el-table-column :label="$t('订单状态')" align="center" prop="status">
ylpmty's avatar
ylpmty committed
239
        <template slot-scope="scope">
dragondean@qq.com's avatar
dragondean@qq.com committed
240 241
          <!-- <dict-tag :type="DICT_TYPE.ORDER_STATUS" :value="scope.row.status" /> -->
          {{scope.row.statusMsg}}
ylpmty's avatar
ylpmty committed
242 243
        </template>
      </el-table-column>
dcy's avatar
dcy committed
244

245
      <el-table-column :label="$t('操作')" align="center" class-name="small-padding fixed-width actions" width="150px">
ylpmty's avatar
ylpmty committed
246
        <template slot-scope="scope">
dragondean@qq.com's avatar
dragondean@qq.com committed
247 248 249 250 251 252
          <!-- 已删除的订单只需要删除和查看 https://zentao.jdshangmen.com/bug-view-684.html -->
          <template v-if="scope.row.status == 88">
            <el-button type="text" @click.native="oprateOrder(scope.row.orderId, 'deleteOrder')" v-hasPermi="['ecw:order:delete']" >{{$t('删除')}}</el-button>
          </template>
          <template v-else>
            <!--操作相关的-->
253 254 255 256 257 258 259 260 261 262 263 264
            <el-dropdown v-hasPermi="[
              'ecw:order:edit',
              'ecw:order:delete',
              'ecw:order:cancel',
              'ecw:order:fee_apply',
              'ecw:order:special',
              'ecw:order:associate',
              'ecw:order:mutex',
              'ecw:order:release',
              'ecw:order:merge',
              'ecw:order:split',
              'ecw:order:merge_log',
265 266 267
              'ecw:order:split_log',
              // 下面几个是特价里的
              'ecw:order:discount',
268 269 270
              'ecw:order:reduce',
              'ecw:order:commission',
              'ecw:order:heavy',
dragondean@qq.com's avatar
dragondean@qq.com committed
271 272
              'ecw:order:bulky',
              'ecw:order:setCanNotShipment'
273
            ]" >
dragondean@qq.com's avatar
dragondean@qq.com committed
274 275 276 277
              <el-button type="text">{{$t('操作')}}</el-button>
              <el-dropdown-menu slot="dropdown">
                <!-- 编辑 -->
                <template v-if="
278 279 280 281
                  ( scope.row.status < 12 || (scope.row.status == 12 && scope.row.shipmentState == 314) ) &&
                  !scope.row.abnormalState &&
                  exclude(scope.row.inWarehouseState, [204,205,206]) &&
                  exclude(scope.row.shipmentState, [307, 407])
dragondean@qq.com's avatar
dragondean@qq.com committed
282
                  ">
283
                  <el-dropdown-item @click.native="handleUpdate(scope.row)" v-hasPermi="['ecw:order:edit']" >{{$t('编辑')}}</el-dropdown-item>
dragondean@qq.com's avatar
dragondean@qq.com committed
284
                </template>
285

dragondean@qq.com's avatar
dragondean@qq.com committed
286
                <!-- 删除 -->
287
                <template v-if="include(scope.row.status, [0,2, 88])">
dragondean@qq.com's avatar
dragondean@qq.com committed
288 289
                  <el-dropdown-item @click.native="oprateOrder(scope.row.orderId, 'deleteOrder')" v-hasPermi="['ecw:order:delete']" >{{$t('删除')}}</el-dropdown-item>
                </template>
290

dragondean@qq.com's avatar
dragondean@qq.com committed
291 292
                <!-- 取消 -->
                <template v-if="include(scope.row.status, [2])">
293
                  <el-dropdown-item @click.native="oprateOrder(scope.row.orderId, 'cancelOrder')" v-hasPermi="['ecw:order:cancel']">{{$t('取消订单')}}</el-dropdown-item>
dragondean@qq.com's avatar
dragondean@qq.com committed
294
                </template>
295

dragondean@qq.com's avatar
dragondean@qq.com committed
296 297
                <!-- 恢复 -->
                <!-- <el-dropdown-item @click.native="oprateOrder(scope.row.orderId, 'recoveryOrder')" >{{$t('恢复订单')}}</el-dropdown-item>-->
dcy's avatar
dcy committed
298

dragondean@qq.com's avatar
dragondean@qq.com committed
299 300
                <!-- 费用申请 -->
                <template v-if="
301 302 303
                  exclude(scope.row.status, [0, 88]) &&
                  exclude(scope.row.inWarehouseState, [204,205,206]) &&
                  exclude(scope.row.abnormalState, [1])
dragondean@qq.com's avatar
dragondean@qq.com committed
304
                  ">
305
                  <el-dropdown-item @click.native="feeApplicationBol = true; orderId = scope.row.orderId" v-hasPermi="['ecw:order:fee_apply']" >{{$t('费用申请')}}</el-dropdown-item>
dragondean@qq.com's avatar
dragondean@qq.com committed
306
                </template>
307

dragondean@qq.com's avatar
dragondean@qq.com committed
308 309
                <!-- 特需,互斥,关联 -->
                <template v-if="
310
                  include(scope.row.status, [2,3,5,8,9,10]) &&
dragondean@qq.com's avatar
dragondean@qq.com committed
311 312 313
                  exclude(scope.row.abnormalState, [1 ,99 ,2 ,3 ,4 ,9 ,10 ,11 ,12 ,14]) &&
                  exclude(scope.row.inWarehouseState, [204])
                  ">
314 315 316
                  <el-dropdown-item @click.native="orderId = scope.row.orderId;orderNo = scope.row.orderNo;isShow = true"  v-hasPermi="['ecw:order:special']">{{$t('特需')}}</el-dropdown-item>
                  <el-dropdown-item @click.native="$router.push(`/order/associated-order/${scope.row.orderId}`)"           v-hasPermi="['ecw:order:associate']">{{$t('关联')}}</el-dropdown-item>
                  <el-dropdown-item @click.native="$router.push(`/order/mutex-order/${scope.row.orderId}`)"                v-hasPermi="['ecw:order:mutex']">{{$t('互斥')}}</el-dropdown-item>
dragondean@qq.com's avatar
dragondean@qq.com committed
317
                </template>
318

dragondean@qq.com's avatar
dragondean@qq.com committed
319 320 321
                <!-- 特价 -->
                <template v-if="
                  exclude(scope.row.status, [0]) &&
322
                  exclude(scope.row.abnormalState, [1]) &&
dragondean@qq.com's avatar
dragondean@qq.com committed
323
                  exclude(scope.row.inWarehouseState, [204,205,206])
dragondean@qq.com's avatar
dragondean@qq.com committed
324
                  ">
325 326 327 328 329 330 331 332
                  <!-- 特价里有多个操作,只要有其一权限就显示此菜单 -->
                  <el-dropdown-item @click.native="$router.push('/order/special/' + scope.row.orderId)" v-hasPermi="[
                    'ecw:order:discount',
                    'ecw:order:reduce',
                    'ecw:order:commission',
                    'ecw:order:heavy',
                    'ecw:order:bulky'
                  ]" >{{$t('特价')}}</el-dropdown-item>
dragondean@qq.com's avatar
dragondean@qq.com committed
333
                </template>
dcy's avatar
dcy committed
334

dragondean@qq.com's avatar
dragondean@qq.com committed
335 336
                <!-- 确认提货 -->
                <template v-if="
337
                  scope.row.status >= 5 &&
338
                  exclude(scope.row.inWarehouseState, [1,99,2,3,4,9,10,11,12,14]) &&
339 340
                  exclude(scope.row.inWarehouseState, [204,205,206]) &&
                  exclude(scope.row.abnormalState, [1])
dragondean@qq.com's avatar
dragondean@qq.com committed
341
                  ">
342
                  <el-dropdown-item @click.native="$router.push(`/order/release?orderId=${scope.row.orderId}`)" v-hasPermi="['ecw:order:release']">{{$t('确认提货')}}</el-dropdown-item>
dragondean@qq.com's avatar
dragondean@qq.com committed
343
                </template>
344

dragondean@qq.com's avatar
dragondean@qq.com committed
345
                <!-- 合单,拆单 -->
346 347 348 349 350 351
								<!--可出后不显示拆单(经确认合单也不显示) https://zentao.test.jdshangmen.com/bug-view-5322.html-->
                <template
                  v-if=" ([3,4].indexOf(scope.row.transportId) < 0 || scope.row.airShipment < 2) &&
                  (scope.row.status < 12 || (scope.row.status == 12 && scope.row.shipmentState == 314))
                  && !scope.row.abnormalState && scope.row.status > 3
                  && exclude(scope.row.inWarehouseState, [204,205,206,212,213])">
352
                  <el-dropdown-item @click.native="$router.push(`/order/singleApply?orderNo=${scope.row.orderNo}`)"  v-hasPermi="['ecw:order:merge']">{{$t('合单申请')}}</el-dropdown-item>
353 354 355 356

                  <el-dropdown-item
                    @click.native="$router.push(`/order/splitApply?orderId=${scope.row.orderId}`)"
                    v-hasPermi="['ecw:order:split']">{{$t('拆单申请')}}</el-dropdown-item>
dragondean@qq.com's avatar
dragondean@qq.com committed
357
                </template>
358

359
                <!--撤销拆单,拆单的子订单,预装前显示,预装后变灰不可点击-->
360 361
                <template v-if="scope.row.parentOrderId && scope.row.status < 11">
                  <el-dropdown-item @click.native="splitRevoke(scope.row)" v-hasPermi="['ecw:order:split_revoke']">{{$t('撤销拆单')}}</el-dropdown-item>
362
                </template>
363
                <template v-if="scope.row.parentOrderId">
364
                  <el-dropdown-item @click.native="showParentOrder(scope.row)">{{$t('查看母订单')}}</el-dropdown-item>
365
                </template>
366 367


dragondean@qq.com's avatar
dragondean@qq.com committed
368
                <!-- 合单日志,提货日志 -->
dragondean@qq.com's avatar
dragondean@qq.com committed
369
                <template v-if="(
370
                  scope.row.status > 2
dragondean@qq.com's avatar
dragondean@qq.com committed
371
                )">
372 373
                  <el-dropdown-item @click.native="showMergedLogOrderNo=scope.row.orderNo"  v-hasPermi="['ecw:order:merge_log']">{{$t('合单日志')}}</el-dropdown-item>
                  <el-dropdown-item @click.native="showPickupLogOrderNo=scope.row.orderNo"  v-hasPermi="['ecw:order:split_log']">{{$t('提货日志')}}</el-dropdown-item>
dragondean@qq.com's avatar
dragondean@qq.com committed
374
                </template>
375 376 377 378 379 380 381

                <!--变更出货渠道-->
                <template v-if="(
                  scope.row.transportId == 3
                )">
                  <el-dropdown-item @click.native="handleUpdate(scope.row, true)"  v-hasPermi="['ecw:order:update_channel']">{{$t('变更出货渠道')}}</el-dropdown-item>
                </template>
dragondean@qq.com's avatar
dragondean@qq.com committed
382 383

                <!--不可出-->
384
                <template  v-if="include(scope.row.airShipment, [2,3,4]) && scope.row.status < 11">
dragondean@qq.com's avatar
dragondean@qq.com committed
385 386
                  <el-dropdown-item @click.native="setCanNotShipment(scope.row)"  v-hasPermi="['ecw:order:setCanNotShipment']">{{$t('不可出')}}</el-dropdown-item>
                </template>
dragondean@qq.com's avatar
dragondean@qq.com committed
387 388
              </el-dropdown-menu>
            </el-dropdown>
389

390
            <template v-if="exclude(scope.row.status, [0, 11,12,13,14,15,17,18, 32]) && exclude(scope.row.inWarehouseState, [204,205,206])">
391
              <!-- <el-divider direction="vertical"></el-divider> -->
392
              <!--仓库相关的-->
393 394 395 396 397 398
              <el-dropdown v-hasPermi="[
                  'ecw:order:warehouse_add',
                  'ecw:order:warehouse_update',
                  'ecw:order:warehouse_exit',
                  'ecw:order:warehouse_adjustment',
                  'ecw:order:warehouse_transfer',
399 400
                  'ecw:order:warehouse_arrive',
                  'ecw:order:stocking'
401
                ]">
402 403 404
                <el-button type="text">{{$t('仓库')}}</el-button>
                <el-dropdown-menu slot="dropdown">
                  <!-- 入仓操作 -->
405
                  <template v-if="include(scope.row.status, [0,2]) || scope.row.inWarehouseState == 208">
406
                    <el-dropdown-item @click.native="$router.push('/order/warehousing?id=' + scope.row.orderId)" v-hasPermi="['ecw:order:warehouse_add']">{{$t('入仓操作')}}</el-dropdown-item>
407 408 409
                  </template>
                  <!-- 入仓补充 -->
                  <template v-if="
410
                    include(scope.row.inWarehouseState, [201,202, 202, 210, 202, 211, 202, 214, 215, 216]) &&
411 412
                    include(scope.row.status, [2,3,5,10,9,8])
                    ">
413
                    <el-dropdown-item @click.native="$router.push('/order/warehousing-add?id=' + scope.row.orderId)" v-hasPermi="['ecw:order:warehouse_replenish']">{{$t('入仓补充')}}</el-dropdown-item>
414 415 416
                  </template>
                  <!-- 入仓修改 -->
                  <template v-if="
dragondean@qq.com's avatar
dragondean@qq.com committed
417
                      (
418
                        include(scope.row.inWarehouseState, [201, 202, 207, 202, 209, 210, 202, 211, 202, 214, 215, 216, 204, 205]) &&
dragondean@qq.com's avatar
dragondean@qq.com committed
419 420
                        scope.row.status != 11 && exclude(scope.row.shipmentState, [314,315,317,318])
                      )
421
                    ">
422
                    <el-dropdown-item @click.native="$router.push('/order/warehousing-update?id=' + scope.row.orderId)"  v-hasPermi="['ecw:order:warehouse_update']" :disabled2="scope.row.parentOrderId">{{$t('入仓修改')}}</el-dropdown-item>
423
                  </template>
424

425 426 427
                  <!-- 退仓 -->
                  <template v-if="
                      (
dragondean@qq.com's avatar
dragondean@qq.com committed
428
                        include(scope.row.inWarehouseState, [202, 210, 211, 214, 215, 216]) &&
429 430 431 432
                        exclude(scope.row.abnormalState, [1])
                      ) ||
                      include(scope.row.status, [16])
                    ">
433
                    <el-dropdown-item @click.native="show = true;orderId = scope.row.orderId; " v-hasPermi="['ecw:order:warehouse_exit']">{{$t('退仓')}}</el-dropdown-item>
434
                  </template>
435 436


437 438
                  <!-- 调仓 -->
                  <template v-if="
439 440 441 442 443
                      (
                        include(scope.row.inWarehouseState, [202, 207, 209, 210, 202, 211, 212, 215, 216, 218]) ||
                        (include(scope.row.status, [16]) && exclude(scope.row.inWarehouseState, [213,214]))
                      )
                      && exclude(scope.row.abnormalState, [1 ,99 ,2 ,3 ,4 ,9 ,10 ,11 ,12 ,14])
444
                    ">
445
                    <el-dropdown-item @click.native="orderId = scope.row.orderId;warehouseBol=true;"  v-hasPermi="['ecw:order:warehouse_adjustment']">{{$t('调仓')}}</el-dropdown-item>
446
                  </template>
dcy's avatar
dcy committed
447

448 449 450 451 452 453
                  <!-- 取消调仓 -->
                  <!-- <template v-if="
                      include(scope.row.inWarehouseState, [212,213,214])
                    ">
                    <el-dropdown-item @click.native="$alert('// TODO')" >{{$t('取消调仓')}}</el-dropdown-item>
                  </template> -->
454

455 456 457 458
                  <!-- 调拨出仓 -->
                  <template v-if="
                      include(scope.row.inWarehouseState, [213])
                    ">
459
                    <el-dropdown-item @click.native="$router.push({path:'/order/transfer-warehousing/' + scope.row.orderId + '/'  + 1 })" v-hasPermi="['ecw:order:warehouse_transfer']">{{$t('调拨出仓')}}</el-dropdown-item>
460
                  </template>
461

462 463 464 465
                  <!-- 调拨到仓 -->
                  <template v-if="
                      include(scope.row.inWarehouseState, [214])
                    ">
466
                    <el-dropdown-item @click.native="$router.push({path:'/order/transfer-to-warehouse/' + scope.row.orderId + '/'  + 2 })"  v-hasPermi="['ecw:order:warehouse_arrive']">{{$t('调拨到仓')}}</el-dropdown-item>
467
                  </template>
468

469
                  <!--开始备货-->
470
                  <!--需要异常处理后才能备货 https://zentao.test.jdshangmen.com/bug-view-4736.html-->
471
                  <template v-if="
472 473
                      include(scope.row.airShipment, [2]) &&
                      scope.row.abnormalState === 0
474 475 476 477 478
                    ">
                    <el-dropdown-item @click.native="$router.push({path:'/order/stocking?id=' + scope.row.orderId})"  v-hasPermi="['ecw:order:stocking']">{{$t('开始备货')}}</el-dropdown-item>
                  </template>
                  <!--修改备货-->
                  <template v-if="
479
                      include(scope.row.airShipment, [3, 4, 10]) &&
480 481
                      scope.row.abnormalState === 0 &&
                      scope.row.status <= 5
482 483 484 485
                    ">
                    <el-dropdown-item @click.native="$router.push({path:'/order/stocking?action=update&id=' + scope.row.orderId})"  v-hasPermi="['ecw:order:stocking_update']">{{$t('修改备货')}}</el-dropdown-item>
                  </template>

486 487 488
                </el-dropdown-menu>
              </el-dropdown>
            </template>
489

490
            <!-- <el-divider direction="vertical" v-if="scope.row.status != 0"></el-divider> -->
dragondean@qq.com's avatar
dragondean@qq.com committed
491
            <!--打印相关的-->
492
            <el-dropdown v-if="scope.row.status != 0" v-hasPermi="['ecw:order:print_tag', 'ecw:order:warehouse_receipt', 'ecw:order:landing_bill']">
dragondean@qq.com's avatar
dragondean@qq.com committed
493 494 495 496 497 498 499
              <el-button type="text">{{$t('打印')}}</el-button>
              <el-dropdown-menu slot="dropdown">
                <!-- 打印标签 -->
                <template v-if="
                  exclude(scope.row.status, [0]) &&
                  exclude(scope.row.abnormalState, [5,6,7,8])
                ">
500
                  <el-dropdown-item @click.native="printTag(scope.row)" v-hasPermi="['ecw:order:print_tag']">{{$t('打印标签')}}</el-dropdown-item>
dragondean@qq.com's avatar
dragondean@qq.com committed
501
                </template>
dcy's avatar
dcy committed
502

dragondean@qq.com's avatar
dragondean@qq.com committed
503 504 505
                <!-- 打印入仓单 -->
                <template v-if="
                  exclude(scope.row.status, [0, 2]) &&
506
                  exclude(scope.row.abnormalState, [5,6,7,8])
dragondean@qq.com's avatar
dragondean@qq.com committed
507
                ">
508
                  <el-dropdown-item @click.native="printWarehouseReceiptOrderId=scope.row.orderId" v-hasPermi="['ecw:order:warehouse_receipt']">{{$t('打印入仓单')}}</el-dropdown-item>
dragondean@qq.com's avatar
dragondean@qq.com committed
509
                </template>
510

dragondean@qq.com's avatar
dragondean@qq.com committed
511
                <!-- 打印提单 -->
512
                <el-dropdown-item @click.native="printLadingBillOrderId=scope.row.orderId" :disabled="!scope.row.tidanNo" v-hasPermi="['ecw:order:landing_bill']">{{$t('打印提单')}}</el-dropdown-item>
dragondean@qq.com's avatar
dragondean@qq.com committed
513 514 515
              </el-dropdown-menu>
            </el-dropdown>
          </template>
ylpmty's avatar
ylpmty committed
516
        </template>
dcy's avatar
dcy committed
517

ylpmty's avatar
ylpmty committed
518 519 520
      </el-table-column>
    </el-table>
    <!-- 分页组件 -->
521
    <pagination v-show="total > 0" :total="total" :page.sync="queryParams.page" :limit.sync="queryParams.rows"
522
      @pagination="getList" />
ylpmty's avatar
ylpmty committed
523

我在何方's avatar
我在何方 committed
524
    <special-needs :orderNo="orderNo" :show.sync="isShow" :currency="JSON.stringify(currencyList)" :order-id="orderId" @determine="getList" ></special-needs>
525
    <print-tag v-if="printTagOrderId !== null" :order-id="printTagOrderId" @close="printTagOrderId=null" :warehouse-in-num="printTagWarehouseInNum" />
dragondean@qq.com's avatar
dragondean@qq.com committed
526
    <print-warehouse-receipt v-if="printWarehouseReceiptOrderId !== null" :order-id="printWarehouseReceiptOrderId" @close="printWarehouseReceiptOrderId=null" />
527
    <print-lading-bill v-if="printLadingBillOrderId !== null" :order-id="printLadingBillOrderId" @close="printLadingBillOrderId=null" />
528
    <batch-pickup v-if="showBatchPickup" @close="onBatchClose" @success="onBatchClose"/>
529
    <withdrawal v-if="show" :dialog-visible="show"  :orderId="orderId" ></withdrawal>
邓春圆's avatar
邓春圆 committed
530
    <batch-single-application @getList="getList" :order-list="orderId" :dialog-visible.sync="warehouseBol"></batch-single-application>
531
    <fee-application v-if="feeApplicationBol" :order-id="orderId" :currencys="JSON.stringify(currencyList)" :dialog-visible.sync="feeApplicationBol"></fee-application>
dragondean@qq.com's avatar
dragondean@qq.com committed
532
    <merge-log :order-no="showMergedLogOrderNo" v-if="showMergedLogOrderNo !== null" @close="showMergedLogOrderNo=null" />
533
    <pickup-log v-if="showPickupLogOrderNo" :order-no="showPickupLogOrderNo" @close="showPickupLogOrderNo=null" @delete="getList" />
534
    <SplitRevoke v-if="splitRevokeOrderId" :order-id="splitRevokeOrderId" @close="splitRevokeOrderId=null;getList()"></SplitRevoke>
ylpmty's avatar
ylpmty committed
535 536 537 538
  </div>
</template>

<script>
539 540 541 542
import Selector from '@/components/Selector'
import ProductSelector from '@/components/ProductSelector'
import { getProductAttrList } from '@/api/ecw/productAttr'
import CustomerSelector from '@/components/CustomerSelector'
543
import specialNeeds from '@/views/ecw/order/components/specialNeeds';
dcy's avatar
dcy committed
544 545 546 547 548 549 550
import {
  createOrder,
  updateOrder,
  deleteOrder,
  getOrder,
  getOrderPage,
  exportOrderExcel,
551 552
  orderSpecialNeed,
  cancelOrder,
553
  recoveryOrder,
554 555 556 557
  getMyOrderPage,
  deptOrderPage,
  orderStatistics,
  orderMyStatistics,
dragondean@qq.com's avatar
dragondean@qq.com committed
558 559 560
  orderDeptStatistics,
  orderExportSearch,
  orderExportMySearch,
TIAN.DESHENG's avatar
TIAN.DESHENG committed
561 562 563 564 565 566 567 568
  orderExportDeptSearch,
  exportAbnormal,
  exportHeavyOrder,
  exportReturnOrder,
  exportSaleRepay,
  exportCustomsDatas,
  exportShippingDatas,
  exportShipFee,
dragondean@qq.com's avatar
dragondean@qq.com committed
569
  exportUnload, splitCancelApply, orderSplitRevoke, setCanShipment, setCanNotShipment
570
  ,getParentOrder
dcy's avatar
dcy committed
571
} from "@/api/ecw/order";
572
/* import { getDictDatas, DICT_TYPE } from '@/utils/dict'; */
dragondean@qq.com's avatar
dragondean@qq.com committed
573
import PrintTag from './components/PrintTag'
dragondean@qq.com's avatar
dragondean@qq.com committed
574 575
import PrintWarehouseReceipt from './components/PrintWarehouseReceipt'
import PrintLadingBill from './components/PrintLadingBill'
dragondean@qq.com's avatar
dragondean@qq.com committed
576
import BatchPickup from './components/BatchPickup'
577
import withdrawal from "@/views/ecw/order/withdrawal";
578
import UserSelector from '@/components/UserSelector'
579 580
import BatchSingleApplication from "@/views/ecw/order/batchSingleApplication";
import FeeApplication from "@/views/ecw/order/feeApplication";
dragondean@qq.com's avatar
dragondean@qq.com committed
581
import MergeLog from '@/views/ecw/order/components/MergeLog'
dragondean@qq.com's avatar
dragondean@qq.com committed
582
import PickupLog from './components/PickupLog'
583
import {getWarehouseList} from '@/api/ecw/warehouse'
我在何方's avatar
我在何方 committed
584
import { getCurrencyPage } from "@/api/ecw/currency";
585
import SplitRevoke from "@/views/ecw/order/components/SplitRevoke";
586
import {getChannelList} from "@/api/ecw/channel";
587
import Template from "@/views/cms/template/index.vue";
588
import {getDictDatas} from "@/utils/dict";
ylpmty's avatar
ylpmty committed
589
export default {
dragondean@qq.com's avatar
dragondean@qq.com committed
590
  name: "EcwOrderIndex",
ylpmty's avatar
ylpmty committed
591
  components: {
592
    Template,
593
    UserSelector,
594 595
    FeeApplication,
    BatchSingleApplication,
dragondean@qq.com's avatar
dragondean@qq.com committed
596
    MergeLog,
dragondean@qq.com's avatar
dragondean@qq.com committed
597
    PickupLog,
598
    SplitRevoke,
599
    CustomerSelector, ProductSelector, Selector,specialNeeds,PrintTag, PrintWarehouseReceipt, PrintLadingBill, BatchPickup,withdrawal
ylpmty's avatar
ylpmty committed
600
  },
601
  props: {
602 603
    mine: Boolean, // 标识我的订单列表
    dept: Boolean // 标识部门订单列表
604
  },
ylpmty's avatar
ylpmty committed
605 606
  data() {
    return {
607 608 609 610 611 612
      // 选中数组
      ids: [],
      // 非单个禁用
      single: true,
      // 非多个禁用
      multiple: true,
ylpmty's avatar
ylpmty committed
613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628
      // 遮罩层
      loading: true,
      // 导出遮罩层
      exportLoading: false,
      // 显示搜索条件
      showSearch: true,
      // 总条数
      total: 0,
      // 订单列表
      list: [],
      // 弹出层标题
      title: "",
      // 是否显示弹出层
      open: false,
      // 查询参数
      queryParams: {
629
        page: 1,
630 631
        rows: 10,
        packageTypeArr: []
ylpmty's avatar
ylpmty committed
632
      },
633 634
      warehouseList:[],
      // tradeCityList: [],
635 636
      productAttrList: [],  // 商品属性
      molecule: '', //重货比分子
ylpmty's avatar
ylpmty committed
637 638 639
      denominator: '', //重货比分母
      dateFilterType: '', //日期筛选类别
      dateFilter: [], //筛选日期
dragondean@qq.com's avatar
dragondean@qq.com committed
640

dragondean@qq.com's avatar
dragondean@qq.com committed
641
      printTagOrderId: null, // 显示打印标签的订单ID
642
      printTagWarehouseInNum: 0, // 打印标签的订单入仓箱数
dragondean@qq.com's avatar
dragondean@qq.com committed
643
      printWarehouseReceiptOrderId: null, // 打印入仓单的订单ID
644
      printLadingBillOrderId: null, // 打印提单的订单ID
dragondean@qq.com's avatar
dragondean@qq.com committed
645
      showBatchPickup: false, // 是否显示批量提货弹窗
dragondean@qq.com's avatar
dragondean@qq.com committed
646
      showMergedLogOrderNo:null, // 显示合单日志订单号
dragondean@qq.com's avatar
dragondean@qq.com committed
647
      showPickupLogOrderNo: null, // 显示提货日志的订单号
648 649
      isShow:false,//特殊显示
      orderId:undefined,
650 651
      adjustmentList:[],
      show:false,
652 653
      warehouseBol:false,//调仓申请
      feeApplicationBol:false,//费用申请
dragondean@qq.com's avatar
dragondean@qq.com committed
654 655 656
      multipleSelection:[],

      transportId: null, // 指定运输方式
我在何方's avatar
我在何方 committed
657 658 659 660 661
      orderNo:'',
      params: {
        page: 1,
        rows: 20,
      },
662 663
      currencyList:[],
      statistics: null ,// 统计数据
664 665

      splitRevokeOrderId: null, // 撤销拆单的订单ID
666
      // 渠道列表,空运需要渠道筛选
667 668
      channelList:[],
      // 编号搜索条件
dragondean@qq.com's avatar
dragondean@qq.com committed
669 670 671 672
      noParam: {
        key: 'numberKey',
        value: ''
      },
673
      // 商品搜索条件
dragondean@qq.com's avatar
dragondean@qq.com committed
674 675 676 677
      prodParam: {
        key: 'prodKey',
        value: ''
      }
ylpmty's avatar
ylpmty committed
678 679
    };
  },
680 681 682 683 684
  watch:{
    isChinese(){
      this.getList()
    }
  },
685
  computed: {
686 687 688 689 690 691 692 693
    // 导出的权限字符串
    exportPermiString(){
      let arr = ['ecw:order:export']
      if(this.mine)arr.push('my')
      if(this.dept)arr.push('dept')
      if(this.transportId)arr.push(this.transportId)
      return arr.join(":")
    },
dragondean@qq.com's avatar
dragondean@qq.com committed
694 695 696 697
    // 是否全部订单
    isAll(){
      return !(this.mine || this.dept || this.transportId)
    },
698 699 700
    isChinese(){
      return this.$i18n.locale === 'zh_CN'
    },
701 702 703 704 705 706 707 708
    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)
    },
    /* exportCityList() {
709 710 711 712
      return this.tradeCityList.filter(item => item.type == 2)
    },
    importCityList() {
      return this.tradeCityList.filter(item => item.type == 1)
713
    }, */
714 715 716 717 718 719
    combinedQueryParams(){
        let timeParams = {}
        if(this.dateFilterType && this.dateFilter){
          timeParams['begin' + this.dateFilterType] = this.dateFilter[0]
          timeParams['end' + this.dateFilterType] = this.dateFilter[1]
        }
dragondean@qq.com's avatar
dragondean@qq.com committed
720 721 722 723
        let queryParams = Object.assign({}, this.queryParams, timeParams)
        if(this.transportId){
          queryParams.transportId = this.transportId
        }
724 725 726 727 728 729
        if(this.noParam.value){
          queryParams[this.noParam.key] = this.noParam.value
        }
        if(this.prodParam.value){
          queryParams[this.prodParam.key] = this.prodParam.value
        }
dragondean@qq.com's avatar
dragondean@qq.com committed
730
        return queryParams
731
    },
732
    /*batchWarehouseAdjustment(){
733
      return  this.multipleSelection.length > 0 && this.multipleSelection.every(e => e.status === 5)
734
    },*/
735 736 737 738 739 740 741 742 743 744
    include(){
      return (state, arr) => {
        return arr.indexOf(state) > -1
      }
    },
    exclude(){
      return (state, arr) => {
        return arr.indexOf(state) == -1
      }
    }
745
  },
dragondean@qq.com's avatar
dragondean@qq.com committed
746
  activated(){
747
    this.getList()
dragondean@qq.com's avatar
dragondean@qq.com committed
748
  },
ylpmty's avatar
ylpmty committed
749
  created() {
dragondean@qq.com's avatar
dragondean@qq.com committed
750
    this.getTransportFromRoute()
ylpmty's avatar
ylpmty committed
751
    this.getList();
752
    getProductAttrList().then(res => this.productAttrList = res.data)
753 754
    // getTradeCityList().then(res => this.tradeCityList = res.data)
    getWarehouseList().then(res => this.warehouseList = res.data)
我在何方's avatar
我在何方 committed
755 756

    getCurrencyPage(this.params).then(res => this.currencyList = res.data.list)
757 758 759 760
    // 如果是空运(专线空运和海空联运)则获取渠道
    if(this.transportId == 3 || this.transportId == 4){
      getChannelList().then(res => this.channelList = res.data)
    }
ylpmty's avatar
ylpmty committed
761 762
  },
  methods: {
763
    getDictDatas,
764

765
    // 取消拆单申请
766 767
    splitRevoke(row){
      this.splitRevokeOrderId = row.orderId
768
    },
dragondean@qq.com's avatar
dragondean@qq.com committed
769 770 771 772 773 774 775
    // 获得导出函数
    getExportFunc(){
      let func = orderExportSearch
      if(this.mine)func = orderExportMySearch
      if(this.dept)func = orderExportDeptSearch
      return func
    },
776 777 778 779 780
    // 导出勾选
    exportChecked(){
      if(!this.ids.length){
        return this.$message.error(this.$t('请勾选需要导出的订单'))
      }
dragondean@qq.com's avatar
dragondean@qq.com committed
781
      return this.exportExcel(this.getExportFunc(), {orderIdList: this.ids}, this.$t("导出勾选"))
782 783 784
    },
    // 导出搜索
    exportSearch(){
dragondean@qq.com's avatar
dragondean@qq.com committed
785
      return this.exportExcel(this.getExportFunc(), this.combinedQueryParams, this.$t("导出搜索"))
786
    },
TIAN.DESHENG's avatar
TIAN.DESHENG committed
787
     // 导出异常单
TIAN.DESHENG's avatar
TIAN.DESHENG committed
788 789 790
    exportAbnormal(){
      return this.exportExcel(exportAbnormal, this.combinedQueryParams, this.$t("异常单统计"))
    },
TIAN.DESHENG's avatar
TIAN.DESHENG committed
791 792 793 794
    // 重货单统计
    exportHeavyOrder(){
      return this.exportExcel(exportHeavyOrder, this.combinedQueryParams, this.$t("重货单统计"))
    },
TIAN.DESHENG's avatar
TIAN.DESHENG committed
795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821
    // 退仓单统计
    exportReturnOrder(){
      return this.exportExcel(exportReturnOrder, this.combinedQueryParams, this.$t("退仓单统计"))
    },
    // 售后赔偿金额统计
    exportSaleRepay(){
      return this.exportExcel(exportSaleRepay, this.combinedQueryParams, this.$t("售后赔偿金额统计"))
    },
    // 报关数据统计
    exportCustomsDatas(){
      return this.exportExcel(exportCustomsDatas, this.combinedQueryParams, this.$t("报关数据统计"))
    },

    // 客户出货量统计
    exportShippingDatas(){
      return this.exportExcel(exportShippingDatas, this.combinedQueryParams, this.$t("客户出货量统计"))
    },

    // 预付运费统计
    exportShipFee(){
      return this.exportExcel(exportShipFee, this.combinedQueryParams, this.$t("预付运费统计"))
    },

    // 卸货费统计
    exportUnload(){
      return this.exportExcel(exportUnload, this.combinedQueryParams, this.$t("卸货费统计"))
    },
822 823 824 825
    // 通用导出函数
    exportExcel(func, params, fileName = null){
      this.exportLoading = true;
      func(params).then(res => {
826
        console.log({res})
827 828 829
        if(!fileName){
          fileName = this.$t('订单')
        }
830 831
        this.$message.success(this.$t('已加入导出队列,请稍后在下载日志中下载'))
        // this.$download.excel(res, fileName + '.xls');
832 833 834 835
      }).finally(() => {
        this.exportLoading = false
      })
    },
dragondean@qq.com's avatar
dragondean@qq.com committed
836 837 838 839 840 841
    // 提取路径中的运输方式
    getTransportFromRoute(){
        let match = this.$route.path.match(/transport_(\d)/)
        if(!match) return
        this.transportId = match[1]
    },
842 843 844 845
    oprateOrder(orderId, type){
      let actions = {
        cancelOrder: {
          callable: cancelOrder,
Marcus's avatar
Marcus committed
846
          confirm: this.$t('确定要取消此订单么?')
847 848 849
        },
        recoveryOrder: {
          callable: recoveryOrder,
Marcus's avatar
Marcus committed
850
          confirm: this.$t('确定要恢复此订单么?')
851 852 853
        },
        deleteOrder: {
          callable: deleteOrder,
Marcus's avatar
Marcus committed
854
          confirm: this.$t('确定要删除此订单么?')
855 856 857 858 859 860 861
        }
      }
      let action = actions[type]
      if(!action){
        return this.$alert('不支持此操作')
      }
      this.$confirm(action.confirm)
862
        .then(() => {
863 864
          return action.callable(orderId)
        })
865
        .then(() => {
866 867 868
          this.getList()
        })
    },
869

ylpmty's avatar
ylpmty committed
870 871 872
    /** 查询列表 */
    getList() {
      this.loading = true;
873
      console.log('this.combinedQueryParams', this.combinedQueryParams)
874 875 876 877
      const query = {...this.combinedQueryParams}
      if(query.packageTypeArr && query.packageTypeArr.length){
        query.packageType = query.packageTypeArr.join(',')
      }
878
      let func = getOrderPage
879
      if(this.mine){
880 881
        func = getMyOrderPage
        /* return getMyOrderPage(this.combinedQueryParams).then(response => {
882 883 884
          this.list = response.data.list;
          this.total = response.data.total;
          this.loading = false;
885 886 887
        }); */
      }else if(this.dept){
        func = deptOrderPage
888
      }
ylpmty's avatar
ylpmty committed
889
      // 执行查询
890
      func(query).then(response => {
891 892 893 894 895
        // 部分情况下,订单后面的操作下拉菜单会显示按钮,但是下来没有选项,在elTable组件更新的时候会导致渲染错误,所以要在更新渲染前清空一次list让table彻底重新渲染,避免部分更新导致异常
        this.list = []
        this.$nextTick(() => {
          this.list = response.data.list
        })
ylpmty's avatar
ylpmty committed
896 897 898
        this.total = response.data.total;
        this.loading = false;
      });
899 900 901 902 903 904 905 906 907 908 909

      this.getStatistics()
    },
    // 获得统计数据
    getStatistics(){
      let func = orderStatistics
      if(this.mine){
        func = orderMyStatistics
      }else if(this.dept){
        func = orderDeptStatistics
      }
910 911 912 913 914 915
      const query = {...this.combinedQueryParams}
      if(query.packageTypeArr && query.packageTypeArr.length){
        query.packageType = query.packageTypeArr.join(',')
        delete query.packageTypeArr
      }
      func(query).then(res => {
916 917
        this.statistics = res.data
      })
ylpmty's avatar
ylpmty committed
918
    },
919

ylpmty's avatar
ylpmty committed
920 921
    /** 搜索按钮操作 */
    handleQuery() {
922
      this.queryParams.page = 1;
923
      this.$nextTick(this.getList)
ylpmty's avatar
ylpmty committed
924 925 926
    },
    /** 重置按钮操作 */
    resetQuery() {
dragondean@qq.com's avatar
dragondean@qq.com committed
927 928
      this.queryParams = {
        page: 1,
929 930
        rows: 10,
        packageTypeArr: []
dragondean@qq.com's avatar
dragondean@qq.com committed
931
      }
邓春圆's avatar
邓春圆 committed
932
      this.queryParams.channelId = ''
dragondean@qq.com's avatar
dragondean@qq.com committed
933 934
      this.noParam.value = ''
      this.prodParam.value = ''
935
      this.dateFilter = []
ylpmty's avatar
ylpmty committed
936 937 938 939
      this.handleQuery();
    },
    /** 新增按钮操作 */
    handleAdd() {
dragondean@qq.com's avatar
dragondean@qq.com committed
940
      this.$router.push('create?transportType=' + this.transportId)
ylpmty's avatar
ylpmty committed
941
    },
942 943 944 945 946 947 948
    /** 修改按钮操作, updateChannel表示变更出货渠道 */
    handleUpdate(row, updateChannel = false) {
      let url = 'edit?id=' + row.orderId
      if(updateChannel){
        url += "&updateChannel=1"
      }
      this.$router.push(url)
ylpmty's avatar
ylpmty committed
949
    },
950

ylpmty's avatar
ylpmty committed
951 952 953 954
    /** 导出按钮操作 */
    handleExport() {
      // 处理查询参数
      // 执行导出
955
      this.$modal.confirm(this.$t('是否确认导出所有订单数据项?')).then(() => {
956
        this.exportLoading = true;
957
        return exportOrderExcel(this.combinedQueryParams);
958 959 960 961 962 963 964
      }).then(response => {
        this.$download.excel(response, '${table.classComment}.xls');
        this.exportLoading = false;
      }).catch(() => { });
    },
    // 表格多选
    handleSelectionChange(selection) {
965
      this.multipleSelection = selection
dragondean@qq.com's avatar
dragondean@qq.com committed
966
      this.ids = selection.map(item => item.orderId)
967 968
      this.single = selection.length !== 1
      this.multiple = !selection.length
969 970
    },
    handleEdit() {
971 972
      this.warehouseBol = true
      this.orderId = this.ids.join(',')
973 974
    },
    moleculeChange() { },
dcy's avatar
dcy committed
975 976
    denominatorChange() { },
    specialRendering(val){
977
      console.log('val', val)
dcy's avatar
dcy committed
978 979
      if(val !== undefined){
        let i = val.split(',')
980
        return this.getDictDatas(this.DICT_TYPE.ORDER_SPECIAL_NEEDS).filter(e => {
dcy's avatar
dcy committed
981
           return i.indexOf(e.value) > -1
982 983 984 985
        }).map(item => {
          // 打字开头的用最后一个字,否则取第一个字
          item.symbol = item.label[0] == '' ? item.label[item.label.length-1]: item.label[0]
           return item
dcy's avatar
dcy committed
986 987 988 989
        })
      }
    },
    deleteSpecial(id,orderId){
990
      this.$confirm(this.$t('确定删除此特需么?')).then(() => {
991 992 993 994
        return orderSpecialNeed({orderId:orderId,advanceType:id})
      }).then(() => {
        this.getList()
      })
995
    },
996 997 998
    onBatchClose(){
      this.showBatchPickup = false
      this.handleQuery()
999 1000 1001 1002 1003
    },
    // 打印标签
    printTag(order){
      this.printTagOrderId=order.orderId
      this.printTagWarehouseInNum = order.sumNum
1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017
    },
    // 过滤订单状态筛选字典内容
    statusDictFilter(item){
      console.log('statusDictFilter', item)
      if(this.transportId == 3 && item.cssClass && item.cssClass != 'air'){
        return false
      }
      if(this.transportId == 1 && item.cssClass && item.cssClass != 'sea'){
        return false
      }
      if(this.transportId == 4 && item.cssClass && item.cssClass != 'sea-air'){
        return false
      }
      return true
dragondean@qq.com's avatar
dragondean@qq.com committed
1018 1019 1020 1021 1022 1023 1024 1025
    },
    // 设置空运订单不可出
    async setCanNotShipment(order){
      await this.$confirm(this.$t("确定设置订单{orderNo}不可出么?", {orderNo: order.orderNo}))
      setCanNotShipment(order.orderId).then(res => {
        this.$message(this.$t('操作成功'))
        this.getList()
      })
1026 1027 1028 1029 1030 1031
    },
    // 查看母订单
    showParentOrder(row){
      getParentOrder(row.orderId).then(res => {
        this.$router.push('./detail?orderId=' + res.data.orderId)
      })
1032
    }
ylpmty's avatar
ylpmty committed
1033 1034 1035
  }
};
</script>
1036 1037 1038 1039
<style lang="scss" scoped>
::v-deep .actions{
    .el-dropdown{
      margin-right: 10px;
1040
      &:last-child {
1041 1042 1043 1044
        margin-right: 0;
      }
    }
}
1045
</style>