index.vue 44.5 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"
dragondean@qq.com's avatar
dragondean@qq.com committed
79
          @keyup.enter.native="handleQuery" 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 125 126
      <!--空运多一个出货渠道筛选-->
      <el-form-item :label="$t('出货渠道')" prop="channelId" v-if="channelList.length">
        <selector :options="channelList" :label-field="$l('name')" value-field="channelId" v-model="queryParams.channelId"></selector>
      </el-form-item>
ylpmty's avatar
ylpmty committed
127
      <el-form-item>
128
        <el-button type="primary" icon="el-icon-search" @click="handleQuery" :loading="loading">{{$t('搜索')}}</el-button>
129
        <el-button icon="el-icon-refresh" @click="resetQuery">{{$t('重置')}}</el-button>
ylpmty's avatar
ylpmty committed
130 131 132 133 134
      </el-form-item>
    </el-form>

    <!-- 操作工具栏 -->
    <el-row :gutter="10" class="mb8">
dragondean@qq.com's avatar
dragondean@qq.com committed
135
      <el-col :span="1.5" v-if="transportId">
ylpmty's avatar
ylpmty committed
136
        <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
137
          v-hasPermi="['ecw:order:create']">{{$t('新增')}}</el-button>
ylpmty's avatar
ylpmty committed
138 139
      </el-col>
      <el-col :span="1.5">
dcy's avatar
dcy committed
140 141
<!--        <el-button type="primary" plain icon="el-icon-setting" size="mini" @click="handleEdit" :disabled="!batchWarehouseAdjustment">{{$t('批量调仓')}}-->
<!--        </el-button>-->
142
        <el-button type="primary" v-hasPermi="['ecw:order:batch_release']" plain icon="el-icon-setting" size="mini" @click="showBatchPickup=true">{{$t('批量提货')}}</el-button>
143 144
      </el-col>
      <el-col :span="1.5">
145 146
        <!-- <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
          :loading="exportLoading" v-hasPermi="['ecw:order:export']">{{$t('导出')}}</el-button> -->
147
        <el-dropdown v-hasPermi="isAll ? ['ecw:order:export','ecw:order:export:other']:[exportPermiString]">
148
          <el-button type="primary" :loading="exportLoading" size="mini">
dragondean@qq.com's avatar
dragondean@qq.com committed
149
            {{$t('导出')}} <i class="el-icon-arrow-down el-icon--right"></i>
150 151
          </el-button>
          <el-dropdown-menu slot="dropdown">
dragondean@qq.com's avatar
dragondean@qq.com committed
152 153
            <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
154
            <template v-if="isAll">
dragondean@qq.com's avatar
dragondean@qq.com committed
155 156 157 158 159 160 161
              <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
162
            </template>
163 164 165 166 167
          </el-dropdown-menu>
        </el-dropdown>
      </el-col>
      <el-col :span="15" v-if="statistics">
        <!-- 订单列表显示搜索条件对应箱数、仓库实测、收款方数、重量 -->
dragondean@qq.com's avatar
dragondean@qq.com committed
168
        {{$t('合计:{totalNum}箱,{totalVolume}m³(测) {totalChargeVolume}m³(重) {totalWeight}KG', statistics)}}
ylpmty's avatar
ylpmty committed
169 170 171 172 173
      </el-col>
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
    </el-row>

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

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

238
      <el-table-column :label="$t('操作')" align="center" class-name="small-padding fixed-width actions" width="150px">
ylpmty's avatar
ylpmty committed
239
        <template slot-scope="scope">
dragondean@qq.com's avatar
dragondean@qq.com committed
240 241 242 243 244 245
          <!-- 已删除的订单只需要删除和查看 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>
            <!--操作相关的-->
246 247 248 249 250 251 252 253 254 255 256 257
            <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',
258 259 260
              'ecw:order:split_log',
              // 下面几个是特价里的
              'ecw:order:discount',
261 262 263 264
              'ecw:order:reduce',
              'ecw:order:commission',
              'ecw:order:heavy',
              'ecw:order:bulky'
265
            ]" >
dragondean@qq.com's avatar
dragondean@qq.com committed
266 267 268 269
              <el-button type="text">{{$t('操作')}}</el-button>
              <el-dropdown-menu slot="dropdown">
                <!-- 编辑 -->
                <template v-if="
270 271 272 273
                  ( 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
274
                  ">
275
                  <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
276
                </template>
277

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

dragondean@qq.com's avatar
dragondean@qq.com committed
283 284
                <!-- 取消 -->
                <template v-if="include(scope.row.status, [2])">
285
                  <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
286
                </template>
287

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

dragondean@qq.com's avatar
dragondean@qq.com committed
291 292
                <!-- 费用申请 -->
                <template v-if="
293 294 295
                  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
296
                  ">
297
                  <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
298
                </template>
299

dragondean@qq.com's avatar
dragondean@qq.com committed
300 301
                <!-- 特需,互斥,关联 -->
                <template v-if="
302
                  include(scope.row.status, [2,3,5,8,9,10]) &&
dragondean@qq.com's avatar
dragondean@qq.com committed
303 304 305
                  exclude(scope.row.abnormalState, [1 ,99 ,2 ,3 ,4 ,9 ,10 ,11 ,12 ,14]) &&
                  exclude(scope.row.inWarehouseState, [204])
                  ">
306 307 308
                  <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
309
                </template>
310

dragondean@qq.com's avatar
dragondean@qq.com committed
311 312 313
                <!-- 特价 -->
                <template v-if="
                  exclude(scope.row.status, [0]) &&
314
                  exclude(scope.row.abnormalState, [1]) &&
dragondean@qq.com's avatar
dragondean@qq.com committed
315
                  exclude(scope.row.inWarehouseState, [204,205,206])
dragondean@qq.com's avatar
dragondean@qq.com committed
316
                  ">
317 318 319 320 321 322 323 324
                  <!-- 特价里有多个操作,只要有其一权限就显示此菜单 -->
                  <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
325
                </template>
dcy's avatar
dcy committed
326

dragondean@qq.com's avatar
dragondean@qq.com committed
327 328
                <!-- 确认提货 -->
                <template v-if="
329
                  scope.row.status >= 5 &&
330
                  exclude(scope.row.inWarehouseState, [1,99,2,3,4,9,10,11,12,14]) &&
331 332
                  exclude(scope.row.inWarehouseState, [204,205,206]) &&
                  exclude(scope.row.abnormalState, [1])
dragondean@qq.com's avatar
dragondean@qq.com committed
333
                  ">
334
                  <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
335
                </template>
336

dragondean@qq.com's avatar
dragondean@qq.com committed
337
                <!-- 合单,拆单 -->
338
                <template v-if=" (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])">
339 340
                  <el-dropdown-item @click.native="$router.push(`/order/singleApply?orderNo=${scope.row.orderNo}`)"  v-hasPermi="['ecw:order:merge']">{{$t('合单申请')}}</el-dropdown-item>
                  <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
341
                </template>
342

343
                <!--撤销拆单,拆单的子订单,预装前显示,预装后变灰不可点击-->
344 345
                <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>
346
                </template>
347 348 349
                <template v-if="scope.row.parentOrderId">
                  <el-dropdown-item @click.native="$router.push('./detail?orderId=' + scope.row.parentOrderId)">{{$t('查看母订单')}}</el-dropdown-item>
                </template>
350 351


dragondean@qq.com's avatar
dragondean@qq.com committed
352
                <!-- 合单日志,提货日志 -->
dragondean@qq.com's avatar
dragondean@qq.com committed
353
                <template v-if="(
354
                  scope.row.status > 2
dragondean@qq.com's avatar
dragondean@qq.com committed
355
                )">
356 357
                  <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
358
                </template>
359 360 361 362 363 364 365

                <!--变更出货渠道-->
                <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
366 367
              </el-dropdown-menu>
            </el-dropdown>
368

369
            <template v-if="exclude(scope.row.status, [0, 11,12,13,14,15,17,18]) && exclude(scope.row.inWarehouseState, [204,205,206])">
370
              <!-- <el-divider direction="vertical"></el-divider> -->
371
              <!--仓库相关的-->
372 373 374 375 376 377 378 379
              <el-dropdown v-hasPermi="[
                  'ecw:order:warehouse_add',
                  'ecw:order:warehouse_update',
                  'ecw:order:warehouse_exit',
                  'ecw:order:warehouse_adjustment',
                  'ecw:order:warehouse_transfer',
                  'ecw:order:warehouse_arrive'
                ]">
380 381 382
                <el-button type="text">{{$t('仓库')}}</el-button>
                <el-dropdown-menu slot="dropdown">
                  <!-- 入仓操作 -->
383
                  <template v-if="include(scope.row.status, [0,2]) || scope.row.inWarehouseState == 208">
384
                    <el-dropdown-item @click.native="$router.push('/order/warehousing?id=' + scope.row.orderId)" v-hasPermi="['ecw:order:warehouse_add']">{{$t('入仓操作')}}</el-dropdown-item>
385 386 387
                  </template>
                  <!-- 入仓补充 -->
                  <template v-if="
388
                    include(scope.row.inWarehouseState, [201,202, 202, 210, 202, 211, 202, 214, 215, 216]) &&
389 390
                    include(scope.row.status, [2,3,5,10,9,8])
                    ">
391
                    <el-dropdown-item @click.native="$router.push('/order/warehousing-add?id=' + scope.row.orderId)" v-hasPermi="['ecw:order:warehouse_replenish']">{{$t('入仓补充')}}</el-dropdown-item>
392 393 394
                  </template>
                  <!-- 入仓修改 -->
                  <template v-if="
dragondean@qq.com's avatar
dragondean@qq.com committed
395
                      (
396
                        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
397 398
                        scope.row.status != 11 && exclude(scope.row.shipmentState, [314,315,317,318])
                      )
399
                    ">
400
                    <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>
401
                  </template>
402

403 404 405
                  <!-- 退仓 -->
                  <template v-if="
                      (
dragondean@qq.com's avatar
dragondean@qq.com committed
406
                        include(scope.row.inWarehouseState, [202, 210, 211, 214, 215, 216]) &&
407 408 409 410
                        exclude(scope.row.abnormalState, [1])
                      ) ||
                      include(scope.row.status, [16])
                    ">
411
                    <el-dropdown-item @click.native="show = true;orderId = scope.row.orderId; " v-hasPermi="['ecw:order:warehouse_exit']">{{$t('退仓')}}</el-dropdown-item>
412
                  </template>
413 414


415 416
                  <!-- 调仓 -->
                  <template v-if="
417 418 419 420 421
                      (
                        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])
422
                    ">
423
                    <el-dropdown-item @click.native="orderId = scope.row.orderId;warehouseBol=true;"  v-hasPermi="['ecw:order:warehouse_adjustment']">{{$t('调仓')}}</el-dropdown-item>
424
                  </template>
dcy's avatar
dcy committed
425

426 427 428 429 430 431
                  <!-- 取消调仓 -->
                  <!-- <template v-if="
                      include(scope.row.inWarehouseState, [212,213,214])
                    ">
                    <el-dropdown-item @click.native="$alert('// TODO')" >{{$t('取消调仓')}}</el-dropdown-item>
                  </template> -->
432

433 434 435 436
                  <!-- 调拨出仓 -->
                  <template v-if="
                      include(scope.row.inWarehouseState, [213])
                    ">
437
                    <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>
438
                  </template>
439

440 441 442 443
                  <!-- 调拨到仓 -->
                  <template v-if="
                      include(scope.row.inWarehouseState, [214])
                    ">
444
                    <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>
445
                  </template>
446

447 448 449 450 451 452 453 454 455 456 457 458 459
                  <!--开始备货-->
                  <template v-if="
                      include(scope.row.airShipment, [2])
                    ">
                    <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="
                      include(scope.row.airShipment, [3, 4, 10])
                    ">
                    <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>

460 461 462
                </el-dropdown-menu>
              </el-dropdown>
            </template>
463

464
            <!-- <el-divider direction="vertical" v-if="scope.row.status != 0"></el-divider> -->
dragondean@qq.com's avatar
dragondean@qq.com committed
465
            <!--打印相关的-->
466
            <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
467 468 469 470 471 472 473
              <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])
                ">
474
                  <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
475
                </template>
dcy's avatar
dcy committed
476

dragondean@qq.com's avatar
dragondean@qq.com committed
477 478 479 480
                <!-- 打印入仓单 -->
                <template v-if="
                  exclude(scope.row.status, [0, 2]) &&
                  exclude(scope.row.shipmentState, [320,322,323]) &&
481
                  exclude(scope.row.abnormalState, [5,6,7,8])
dragondean@qq.com's avatar
dragondean@qq.com committed
482
                ">
483
                  <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
484
                </template>
485

dragondean@qq.com's avatar
dragondean@qq.com committed
486
                <!-- 打印提单 -->
487
                <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
488 489 490
              </el-dropdown-menu>
            </el-dropdown>
          </template>
ylpmty's avatar
ylpmty committed
491
        </template>
dcy's avatar
dcy committed
492

ylpmty's avatar
ylpmty committed
493 494 495
      </el-table-column>
    </el-table>
    <!-- 分页组件 -->
496
    <pagination v-show="total > 0" :total="total" :page.sync="queryParams.page" :limit.sync="queryParams.rows"
497
      @pagination="getList" />
ylpmty's avatar
ylpmty committed
498

我在何方's avatar
我在何方 committed
499
    <special-needs :orderNo="orderNo" :show.sync="isShow" :currency="JSON.stringify(currencyList)" :order-id="orderId" @determine="getList" ></special-needs>
500
    <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
501
    <print-warehouse-receipt v-if="printWarehouseReceiptOrderId !== null" :order-id="printWarehouseReceiptOrderId" @close="printWarehouseReceiptOrderId=null" />
502
    <print-lading-bill v-if="printLadingBillOrderId !== null" :order-id="printLadingBillOrderId" @close="printLadingBillOrderId=null" />
503
    <batch-pickup v-if="showBatchPickup" @close="onBatchClose" @success="onBatchClose"/>
504
    <withdrawal v-if="show" :dialog-visible="show"  :orderId="orderId" ></withdrawal>
邓春圆's avatar
邓春圆 committed
505
    <batch-single-application @getList="getList" :order-list="orderId" :dialog-visible.sync="warehouseBol"></batch-single-application>
506
    <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
507
    <merge-log :order-no="showMergedLogOrderNo" v-if="showMergedLogOrderNo !== null" @close="showMergedLogOrderNo=null" />
508
    <pickup-log v-if="showPickupLogOrderNo" :order-no="showPickupLogOrderNo" @close="showPickupLogOrderNo=null" @delete="getList" />
509
    <SplitRevoke v-if="splitRevokeOrderId" :order-id="splitRevokeOrderId" @close="splitRevokeOrderId=null;getList()"></SplitRevoke>
ylpmty's avatar
ylpmty committed
510 511 512 513
  </div>
</template>

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

dragondean@qq.com's avatar
dragondean@qq.com committed
613
      printTagOrderId: null, // 显示打印标签的订单ID
614
      printTagWarehouseInNum: 0, // 打印标签的订单入仓箱数
dragondean@qq.com's avatar
dragondean@qq.com committed
615
      printWarehouseReceiptOrderId: null, // 打印入仓单的订单ID
616
      printLadingBillOrderId: null, // 打印提单的订单ID
dragondean@qq.com's avatar
dragondean@qq.com committed
617
      showBatchPickup: false, // 是否显示批量提货弹窗
dragondean@qq.com's avatar
dragondean@qq.com committed
618
      showMergedLogOrderNo:null, // 显示合单日志订单号
dragondean@qq.com's avatar
dragondean@qq.com committed
619
      showPickupLogOrderNo: null, // 显示提货日志的订单号
620 621
      isShow:false,//特殊显示
      orderId:undefined,
622 623
      adjustmentList:[],
      show:false,
624 625
      warehouseBol:false,//调仓申请
      feeApplicationBol:false,//费用申请
dragondean@qq.com's avatar
dragondean@qq.com committed
626 627 628
      multipleSelection:[],

      transportId: null, // 指定运输方式
我在何方's avatar
我在何方 committed
629 630 631 632 633
      orderNo:'',
      params: {
        page: 1,
        rows: 20,
      },
634 635
      currencyList:[],
      statistics: null ,// 统计数据
636 637

      splitRevokeOrderId: null, // 撤销拆单的订单ID
638
      // 渠道列表,空运需要渠道筛选
639 640
      channelList:[],
      // 编号搜索条件
dragondean@qq.com's avatar
dragondean@qq.com committed
641 642 643 644
      noParam: {
        key: 'numberKey',
        value: ''
      },
645
      // 商品搜索条件
dragondean@qq.com's avatar
dragondean@qq.com committed
646 647 648 649
      prodParam: {
        key: 'prodKey',
        value: ''
      }
ylpmty's avatar
ylpmty committed
650 651
    };
  },
652 653 654 655 656
  watch:{
    isChinese(){
      this.getList()
    }
  },
657
  computed: {
658 659 660 661 662 663 664 665
    // 导出的权限字符串
    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
666 667 668 669
    // 是否全部订单
    isAll(){
      return !(this.mine || this.dept || this.transportId)
    },
670 671 672
    isChinese(){
      return this.$i18n.locale === 'zh_CN'
    },
673 674 675 676 677 678 679 680
    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() {
681 682 683 684
      return this.tradeCityList.filter(item => item.type == 2)
    },
    importCityList() {
      return this.tradeCityList.filter(item => item.type == 1)
685
    }, */
686 687 688 689 690 691
    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
692 693 694 695
        let queryParams = Object.assign({}, this.queryParams, timeParams)
        if(this.transportId){
          queryParams.transportId = this.transportId
        }
696 697 698 699 700 701
        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
702
        return queryParams
703
    },
704
    /*batchWarehouseAdjustment(){
705
      return  this.multipleSelection.length > 0 && this.multipleSelection.every(e => e.status === 5)
706
    },*/
707 708 709 710 711 712 713 714 715 716
    include(){
      return (state, arr) => {
        return arr.indexOf(state) > -1
      }
    },
    exclude(){
      return (state, arr) => {
        return arr.indexOf(state) == -1
      }
    }
717
  },
dragondean@qq.com's avatar
dragondean@qq.com committed
718
  activated(){
719
    this.getList()
dragondean@qq.com's avatar
dragondean@qq.com committed
720
  },
ylpmty's avatar
ylpmty committed
721
  created() {
dragondean@qq.com's avatar
dragondean@qq.com committed
722
    this.getTransportFromRoute()
ylpmty's avatar
ylpmty committed
723
    this.getList();
724
    getProductAttrList().then(res => this.productAttrList = res.data)
725 726
    // getTradeCityList().then(res => this.tradeCityList = res.data)
    getWarehouseList().then(res => this.warehouseList = res.data)
我在何方's avatar
我在何方 committed
727 728

    getCurrencyPage(this.params).then(res => this.currencyList = res.data.list)
729 730 731 732
    // 如果是空运(专线空运和海空联运)则获取渠道
    if(this.transportId == 3 || this.transportId == 4){
      getChannelList().then(res => this.channelList = res.data)
    }
ylpmty's avatar
ylpmty committed
733 734
  },
  methods: {
735

736
    // 取消拆单申请
737 738
    splitRevoke(row){
      this.splitRevokeOrderId = row.orderId
739
    },
dragondean@qq.com's avatar
dragondean@qq.com committed
740 741 742 743 744 745 746
    // 获得导出函数
    getExportFunc(){
      let func = orderExportSearch
      if(this.mine)func = orderExportMySearch
      if(this.dept)func = orderExportDeptSearch
      return func
    },
747 748 749 750 751
    // 导出勾选
    exportChecked(){
      if(!this.ids.length){
        return this.$message.error(this.$t('请勾选需要导出的订单'))
      }
dragondean@qq.com's avatar
dragondean@qq.com committed
752
      return this.exportExcel(this.getExportFunc(), {orderIdList: this.ids}, this.$t("导出勾选"))
753 754 755
    },
    // 导出搜索
    exportSearch(){
dragondean@qq.com's avatar
dragondean@qq.com committed
756
      return this.exportExcel(this.getExportFunc(), this.combinedQueryParams, this.$t("导出搜索"))
757
    },
TIAN.DESHENG's avatar
TIAN.DESHENG committed
758
     // 导出异常单
TIAN.DESHENG's avatar
TIAN.DESHENG committed
759 760 761
    exportAbnormal(){
      return this.exportExcel(exportAbnormal, this.combinedQueryParams, this.$t("异常单统计"))
    },
TIAN.DESHENG's avatar
TIAN.DESHENG committed
762 763 764 765
    // 重货单统计
    exportHeavyOrder(){
      return this.exportExcel(exportHeavyOrder, this.combinedQueryParams, this.$t("重货单统计"))
    },
TIAN.DESHENG's avatar
TIAN.DESHENG committed
766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792
    // 退仓单统计
    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("卸货费统计"))
    },
793 794 795 796
    // 通用导出函数
    exportExcel(func, params, fileName = null){
      this.exportLoading = true;
      func(params).then(res => {
797
        console.log({res})
798 799 800
        if(!fileName){
          fileName = this.$t('订单')
        }
801 802
        this.$message.success(this.$t('已加入导出队列,请稍后在下载日志中下载'))
        // this.$download.excel(res, fileName + '.xls');
803 804 805 806
      }).finally(() => {
        this.exportLoading = false
      })
    },
dragondean@qq.com's avatar
dragondean@qq.com committed
807 808 809 810 811 812
    // 提取路径中的运输方式
    getTransportFromRoute(){
        let match = this.$route.path.match(/transport_(\d)/)
        if(!match) return
        this.transportId = match[1]
    },
813 814 815 816
    oprateOrder(orderId, type){
      let actions = {
        cancelOrder: {
          callable: cancelOrder,
Marcus's avatar
Marcus committed
817
          confirm: this.$t('确定要取消此订单么?')
818 819 820
        },
        recoveryOrder: {
          callable: recoveryOrder,
Marcus's avatar
Marcus committed
821
          confirm: this.$t('确定要恢复此订单么?')
822 823 824
        },
        deleteOrder: {
          callable: deleteOrder,
Marcus's avatar
Marcus committed
825
          confirm: this.$t('确定要删除此订单么?')
826 827 828 829 830 831 832
        }
      }
      let action = actions[type]
      if(!action){
        return this.$alert('不支持此操作')
      }
      this.$confirm(action.confirm)
833
        .then(() => {
834 835
          return action.callable(orderId)
        })
836
        .then(() => {
837 838 839
          this.getList()
        })
    },
840

ylpmty's avatar
ylpmty committed
841 842 843
    /** 查询列表 */
    getList() {
      this.loading = true;
844
      console.log('this.combinedQueryParams', this.combinedQueryParams)
845
      let func = getOrderPage
846
      if(this.mine){
847 848
        func = getMyOrderPage
        /* return getMyOrderPage(this.combinedQueryParams).then(response => {
849 850 851
          this.list = response.data.list;
          this.total = response.data.total;
          this.loading = false;
852 853 854
        }); */
      }else if(this.dept){
        func = deptOrderPage
855
      }
ylpmty's avatar
ylpmty committed
856
      // 执行查询
857
      func(this.combinedQueryParams).then(response => {
858 859 860 861 862
        // 部分情况下,订单后面的操作下拉菜单会显示按钮,但是下来没有选项,在elTable组件更新的时候会导致渲染错误,所以要在更新渲染前清空一次list让table彻底重新渲染,避免部分更新导致异常
        this.list = []
        this.$nextTick(() => {
          this.list = response.data.list
        })
ylpmty's avatar
ylpmty committed
863 864 865
        this.total = response.data.total;
        this.loading = false;
      });
866 867 868 869 870 871 872 873 874 875 876 877 878 879

      this.getStatistics()
    },
    // 获得统计数据
    getStatistics(){
      let func = orderStatistics
      if(this.mine){
        func = orderMyStatistics
      }else if(this.dept){
        func = orderDeptStatistics
      }
      func(this.combinedQueryParams).then(res => {
        this.statistics = res.data
      })
ylpmty's avatar
ylpmty committed
880
    },
881

ylpmty's avatar
ylpmty committed
882 883
    /** 搜索按钮操作 */
    handleQuery() {
884
      this.queryParams.page = 1;
885
      this.$nextTick(this.getList)
ylpmty's avatar
ylpmty committed
886 887 888
    },
    /** 重置按钮操作 */
    resetQuery() {
dragondean@qq.com's avatar
dragondean@qq.com committed
889 890 891 892
      this.queryParams = {
        page: 1,
        rows: 10
      }
dragondean@qq.com's avatar
dragondean@qq.com committed
893 894
      this.noParam.value = ''
      this.prodParam.value = ''
895
      this.dateFilter = []
ylpmty's avatar
ylpmty committed
896 897 898 899
      this.handleQuery();
    },
    /** 新增按钮操作 */
    handleAdd() {
dragondean@qq.com's avatar
dragondean@qq.com committed
900
      this.$router.push('create?transportType=' + this.transportId)
ylpmty's avatar
ylpmty committed
901
    },
902 903 904 905 906 907 908
    /** 修改按钮操作, 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
909
    },
910

ylpmty's avatar
ylpmty committed
911 912 913 914
    /** 导出按钮操作 */
    handleExport() {
      // 处理查询参数
      // 执行导出
915
      this.$modal.confirm(this.$t('是否确认导出所有订单数据项?')).then(() => {
916
        this.exportLoading = true;
917
        return exportOrderExcel(this.combinedQueryParams);
918 919 920 921 922 923 924
      }).then(response => {
        this.$download.excel(response, '${table.classComment}.xls');
        this.exportLoading = false;
      }).catch(() => { });
    },
    // 表格多选
    handleSelectionChange(selection) {
925
      this.multipleSelection = selection
dragondean@qq.com's avatar
dragondean@qq.com committed
926
      this.ids = selection.map(item => item.orderId)
927 928
      this.single = selection.length !== 1
      this.multiple = !selection.length
929 930
    },
    handleEdit() {
931 932
      this.warehouseBol = true
      this.orderId = this.ids.join(',')
933 934
    },
    moleculeChange() { },
dcy's avatar
dcy committed
935 936
    denominatorChange() { },
    specialRendering(val){
937
      console.log('val', val)
dcy's avatar
dcy committed
938 939
      if(val !== undefined){
        let i = val.split(',')
940
        return this.getDictDatas(this.DICT_TYPE.ORDER_SPECIAL_NEEDS).filter(e => {
dcy's avatar
dcy committed
941
           return i.indexOf(e.value) > -1
942 943 944 945
        }).map(item => {
          // 打字开头的用最后一个字,否则取第一个字
          item.symbol = item.label[0] == '' ? item.label[item.label.length-1]: item.label[0]
           return item
dcy's avatar
dcy committed
946 947 948 949
        })
      }
    },
    deleteSpecial(id,orderId){
950
      this.$confirm(this.$t('确定删除此特需么?')).then(() => {
951 952 953 954
        return orderSpecialNeed({orderId:orderId,advanceType:id})
      }).then(() => {
        this.getList()
      })
955
    },
956 957 958
    onBatchClose(){
      this.showBatchPickup = false
      this.handleQuery()
959 960 961 962 963
    },
    // 打印标签
    printTag(order){
      this.printTagOrderId=order.orderId
      this.printTagWarehouseInNum = order.sumNum
964
    }
ylpmty's avatar
ylpmty committed
965 966 967
  }
};
</script>
968 969 970 971
<style lang="scss" scoped>
::v-deep .actions{
    .el-dropdown{
      margin-right: 10px;
972
      &:last-child {
973 974 975 976
        margin-right: 0;
      }
    }
}
977
</style>