index.vue 40.9 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 7
      <el-form-item :label="$t('编号')" prop="orderNo">
        <el-input v-model="queryParams.numberKey" :placeholder="$t('请输入订单号、唛头、提单号')" clearable @keyup.enter.native="handleQuery" />
ylpmty's avatar
ylpmty committed
8
      </el-form-item>
Marcus's avatar
Marcus committed
9 10
      <!-- <el-form-item :label="$t('唛头')" prop="marks">
        <el-input v-model="queryParams.marks" :placeholder="$t('唛头')" clearable @keyup.enter.native="handleQuery" />
11
      </el-form-item> -->
12

dragondean@qq.com's avatar
dragondean@qq.com committed
13 14
      <el-form-item :label="$t('发货人')" prop="consignorKey">
        <el-input v-model="queryParams.consignorKey" :placeholder="$t('发货人')" clearable @keyup.enter.native="handleQuery" />
15
      </el-form-item>
dragondean@qq.com's avatar
dragondean@qq.com committed
16 17
      <el-form-item :label="$t('收货人')" prop="consigneeKey">
        <el-input v-model="queryParams.consigneeKey" :placeholder="$t('收货人')" clearable @keyup.enter.native="handleQuery" />
18
      </el-form-item>
19
      <el-form-item label="">
20
        <dict-selector :type="DICT_TYPE.ECW_BEGINTIME_TYPE_ENDTIME" :filter="(item) => item.value != 'PickTime'" v-model="dateFilterType" defaultable style="width: 150px; margin-right: 5px" />
21
        <el-date-picker v-model="dateFilter" type="datetimerange"  range-separator="-"
22 23 24 25 26 27
          :start-placeholder="$t('开始日期')"
          :end-placeholder="$t('结束日期')"
          value-format="yyyy-MM-dd HH:mm:ss"
          @change="handleQuery"
          >
          </el-date-picker>
ylpmty's avatar
ylpmty committed
28
      </el-form-item>
29 30 31
      <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>
32 33
        </el-select>
      </el-form-item>
34 35 36
      <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>
37 38 39
        </el-select>
      </el-form-item>

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

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

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

60
      <el-form-item :label="$t('控货')" prop="isCargoControl">
dragondean@qq.com's avatar
dragondean@qq.com committed
61
        <dict-selector v-model="queryParams.isCargoControl" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" fomatter="bool" clearable />
62
      </el-form-item>
63
      <el-form-item :label="$t('入仓类型')" prop="warehouseType">
64
        <dict-selector :type="DICT_TYPE.ECW_WAREHOUSING_TYPE" v-model="queryParams.warehouseType"  clearable/>
65
      </el-form-item>
66
      <el-form-item :label="$t('客户经理')" >
邓春圆's avatar
邓春圆 committed
67
        <user-selector manage v-model="queryParams.salesmanId" clearable @change="handleQuery"/>
ylpmty's avatar
ylpmty committed
68
      </el-form-item>
69
      <el-form-item :label="$t('订单状态')" prop="status">
70
        <dict-selector :type="DICT_TYPE.ORDER_STATUS" v-model="queryParams.status"
dragondean@qq.com's avatar
dragondean@qq.com committed
71
          @keyup.enter.native="handleQuery" clearable />
72
      </el-form-item>
73
      <el-form-item :label="$t('报关方式')" prop="customsType">
74
        <dict-selector :type="DICT_TYPE.ECW_CUSTOMS_TYPE" v-model="queryParams.customsType" clearable @change="handleQuery" />
75
      </el-form-item>
76
      <el-form-item :label="$t('是否齐货')" >
77
        <!--// 字段存疑-->
78
        <dict-selector v-model="queryParams.isNeat" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" fomatter="bool"  clearable @change="handleQuery"/>
ylpmty's avatar
ylpmty committed
79
      </el-form-item>
Marcus's avatar
Marcus committed
80
      <!-- <el-form-item :label="$t('重货比')" prop="weightRatio">
81 82 83 84 85
        <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" />
86
      </el-form-item> -->
87
      <el-form-item :label="$t('备案属性')" prop="productRecord">
88
        <dict-selector :type="DICT_TYPE.PRODUCT_RECORD_ATTRIBUTE" v-model="queryParams.productRecord" clearable @change="handleQuery" />
89
      </el-form-item>
90 91
      <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
92
      </el-form-item>
dragondean@qq.com's avatar
dragondean@qq.com committed
93 94 95 96 97 98
      <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
99

100 101 102 103 104
      <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
105
        <dict-selector :type="DICT_TYPE.ECW_ORDER_APPROVAL_TYPE" v-model="queryParams.auditType"
106 107
          @keyup.enter.native="handleQuery" clearable />
      </el-form-item>
108 109 110 111 112 113 114
      <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>
ylpmty's avatar
ylpmty committed
115
      <el-form-item>
116 117
        <el-button type="primary" icon="el-icon-search" @click="handleQuery">{{$t('搜索')}}</el-button>
        <el-button icon="el-icon-refresh" @click="resetQuery">{{$t('重置')}}</el-button>
ylpmty's avatar
ylpmty committed
118 119 120 121 122 123 124
      </el-form-item>
    </el-form>

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

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

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

226
      <el-table-column :label="$t('操作')" align="center" class-name="small-padding fixed-width actions" width="150px">
ylpmty's avatar
ylpmty committed
227
        <template slot-scope="scope">
dragondean@qq.com's avatar
dragondean@qq.com committed
228 229 230 231 232 233
          <!-- 已删除的订单只需要删除和查看 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>
            <!--操作相关的-->
234 235 236 237 238 239 240 241 242 243 244 245
            <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',
246 247 248
              'ecw:order:split_log',
              // 下面几个是特价里的
              'ecw:order:discount',
249 250 251 252
              'ecw:order:reduce',
              'ecw:order:commission',
              'ecw:order:heavy',
              'ecw:order:bulky'
253
            ]" >
dragondean@qq.com's avatar
dragondean@qq.com committed
254 255 256 257
              <el-button type="text">{{$t('操作')}}</el-button>
              <el-dropdown-menu slot="dropdown">
                <!-- 编辑 -->
                <template v-if="
dragondean@qq.com's avatar
dragondean@qq.com committed
258
                  ( scope.row.status < 12 || (scope.row.status == 12 && scope.row.shipmentState == 314) ) && !scope.row.abnormalState && exclude(scope.row.inWarehouseState, [204,205,206])
dragondean@qq.com's avatar
dragondean@qq.com committed
259
                  ">
260
                  <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
261
                </template>
262

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

dragondean@qq.com's avatar
dragondean@qq.com committed
268 269
                <!-- 取消 -->
                <template v-if="include(scope.row.status, [2])">
270
                  <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
271
                </template>
272

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

dragondean@qq.com's avatar
dragondean@qq.com committed
276 277
                <!-- 费用申请 -->
                <template v-if="
278
                  exclude(scope.row.status, [0, 88]) && exclude(scope.row.inWarehouseState, [204,205,206])
dragondean@qq.com's avatar
dragondean@qq.com committed
279
                  ">
280
                  <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
281
                </template>
282

dragondean@qq.com's avatar
dragondean@qq.com committed
283 284
                <!-- 特需,互斥,关联 -->
                <template v-if="
285
                  include(scope.row.status, [2,3,5,8,9,10]) &&
dragondean@qq.com's avatar
dragondean@qq.com committed
286 287 288
                  exclude(scope.row.abnormalState, [1 ,99 ,2 ,3 ,4 ,9 ,10 ,11 ,12 ,14]) &&
                  exclude(scope.row.inWarehouseState, [204])
                  ">
289 290 291
                  <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
292
                </template>
293

dragondean@qq.com's avatar
dragondean@qq.com committed
294 295 296
                <!-- 特价 -->
                <template v-if="
                  exclude(scope.row.status, [0]) &&
297
                  // exclude(scope.row.abnormalState, [1 ,99 ,2 ,3 ,4 ,9 ,10 ,11 ,12 ,14]) &&
dragondean@qq.com's avatar
dragondean@qq.com committed
298
                  exclude(scope.row.inWarehouseState, [204,205,206])
dragondean@qq.com's avatar
dragondean@qq.com committed
299
                  ">
300 301 302 303 304 305 306 307
                  <!-- 特价里有多个操作,只要有其一权限就显示此菜单 -->
                  <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
308
                </template>
dcy's avatar
dcy committed
309

dragondean@qq.com's avatar
dragondean@qq.com committed
310 311
                <!-- 确认提货 -->
                <template v-if="
312
                  scope.row.status >= 5 &&
313
                  exclude(scope.row.inWarehouseState, [1,99,2,3,4,9,10,11,12,14]) &&
dragondean@qq.com's avatar
dragondean@qq.com committed
314
                  exclude(scope.row.inWarehouseState, [204,205,206])
dragondean@qq.com's avatar
dragondean@qq.com committed
315
                  ">
316
                  <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
317
                </template>
318

dragondean@qq.com's avatar
dragondean@qq.com committed
319
                <!-- 合单,拆单 -->
320
                <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])">
321 322
                  <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
323
                </template>
324

325
                <!--撤销拆单,拆单的子订单,预装前显示,预装后变灰不可点击-->
326 327
                <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>
328 329 330
                </template>


dragondean@qq.com's avatar
dragondean@qq.com committed
331
                <!-- 合单日志,提货日志 -->
dragondean@qq.com's avatar
dragondean@qq.com committed
332
                <template v-if="(
333
                  scope.row.status > 2
dragondean@qq.com's avatar
dragondean@qq.com committed
334
                )">
335 336
                  <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
337 338 339
                </template>
              </el-dropdown-menu>
            </el-dropdown>
340

341
            <template v-if="exclude(scope.row.status, [0, 11,12,13,14,15,17,18]) && exclude(scope.row.inWarehouseState, [204,205,206])">
342
              <!-- <el-divider direction="vertical"></el-divider> -->
343
              <!--仓库相关的-->
344 345 346 347 348 349 350 351
              <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'
                ]">
352 353 354
                <el-button type="text">{{$t('仓库')}}</el-button>
                <el-dropdown-menu slot="dropdown">
                  <!-- 入仓操作 -->
355
                  <template v-if="include(scope.row.status, [0,2]) || scope.row.inWarehouseState == 208">
356
                    <el-dropdown-item @click.native="$router.push('/order/warehousing?id=' + scope.row.orderId)" v-hasPermi="['ecw:order:warehouse_add']">{{$t('入仓操作')}}</el-dropdown-item>
357 358 359
                  </template>
                  <!-- 入仓补充 -->
                  <template v-if="
360
                    include(scope.row.inWarehouseState, [201,202, 202, 210, 202, 211, 202, 214, 215, 216]) &&
361 362
                    include(scope.row.status, [2,3,5,10,9,8])
                    ">
363
                    <el-dropdown-item @click.native="$router.push('/order/warehousing-add?id=' + scope.row.orderId)" v-hasPermi="['ecw:order:warehouse_replenish']">{{$t('入仓补充')}}</el-dropdown-item>
364 365 366
                  </template>
                  <!-- 入仓修改 -->
                  <template v-if="
dragondean@qq.com's avatar
dragondean@qq.com committed
367
                      (
368
                        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
369 370
                        scope.row.status != 11 && exclude(scope.row.shipmentState, [314,315,317,318])
                      )
371
                    ">
372
                    <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>
373
                  </template>
374

375 376 377
                  <!-- 退仓 -->
                  <template v-if="
                      (
dragondean@qq.com's avatar
dragondean@qq.com committed
378
                        include(scope.row.inWarehouseState, [202, 210, 211, 214, 215, 216]) &&
379 380 381 382
                        exclude(scope.row.abnormalState, [1])
                      ) ||
                      include(scope.row.status, [16])
                    ">
383
                    <el-dropdown-item @click.native="show = true;orderId = scope.row.orderId; " v-hasPermi="['ecw:order:warehouse_exit']">{{$t('退仓')}}</el-dropdown-item>
384
                  </template>
385 386


387 388
                  <!-- 调仓 -->
                  <template v-if="
389 390 391 392 393
                      (
                        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])
394
                    ">
395
                    <el-dropdown-item @click.native="orderId = scope.row.orderId;warehouseBol=true;"  v-hasPermi="['ecw:order:warehouse_adjustment']">{{$t('调仓')}}</el-dropdown-item>
396
                  </template>
dcy's avatar
dcy committed
397

398 399 400 401 402 403
                  <!-- 取消调仓 -->
                  <!-- <template v-if="
                      include(scope.row.inWarehouseState, [212,213,214])
                    ">
                    <el-dropdown-item @click.native="$alert('// TODO')" >{{$t('取消调仓')}}</el-dropdown-item>
                  </template> -->
404

405 406 407 408
                  <!-- 调拨出仓 -->
                  <template v-if="
                      include(scope.row.inWarehouseState, [213])
                    ">
409
                    <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>
410
                  </template>
411

412 413 414 415
                  <!-- 调拨到仓 -->
                  <template v-if="
                      include(scope.row.inWarehouseState, [214])
                    ">
416
                    <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>
417
                  </template>
418

419 420 421
                </el-dropdown-menu>
              </el-dropdown>
            </template>
422

423
            <!-- <el-divider direction="vertical" v-if="scope.row.status != 0"></el-divider> -->
dragondean@qq.com's avatar
dragondean@qq.com committed
424
            <!--打印相关的-->
425
            <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
426 427 428 429 430 431 432
              <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])
                ">
433
                  <el-dropdown-item @click.native="printTagOrderId=scope.row.orderId" v-hasPermi="['ecw:order:print_tag']">{{$t('打印标签')}}</el-dropdown-item>
dragondean@qq.com's avatar
dragondean@qq.com committed
434
                </template>
dcy's avatar
dcy committed
435

dragondean@qq.com's avatar
dragondean@qq.com committed
436 437 438 439 440 441
                <!-- 打印入仓单 -->
                <template v-if="
                  exclude(scope.row.status, [0, 2]) &&
                  exclude(scope.row.shipmentState, [320,322,323]) &&
                  exclude(scope.row.abnormalState, [1, 5,6,7,8])
                ">
442
                  <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
443
                </template>
444

dragondean@qq.com's avatar
dragondean@qq.com committed
445
                <!-- 打印提单 -->
446
                <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
447 448 449
              </el-dropdown-menu>
            </el-dropdown>
          </template>
ylpmty's avatar
ylpmty committed
450
        </template>
dcy's avatar
dcy committed
451

ylpmty's avatar
ylpmty committed
452 453 454
      </el-table-column>
    </el-table>
    <!-- 分页组件 -->
455
    <pagination v-show="total > 0" :total="total" :page.sync="queryParams.page" :limit.sync="queryParams.rows"
456
      @pagination="getList" />
ylpmty's avatar
ylpmty committed
457

我在何方's avatar
我在何方 committed
458
    <special-needs :orderNo="orderNo" :show.sync="isShow" :currency="JSON.stringify(currencyList)" :order-id="orderId" @determine="getList" ></special-needs>
dragondean@qq.com's avatar
dragondean@qq.com committed
459
    <print-tag v-if="printTagOrderId !== null" :order-id="printTagOrderId" @close="printTagOrderId=null" />
dragondean@qq.com's avatar
dragondean@qq.com committed
460
    <print-warehouse-receipt v-if="printWarehouseReceiptOrderId !== null" :order-id="printWarehouseReceiptOrderId" @close="printWarehouseReceiptOrderId=null" />
461
    <print-lading-bill v-if="printLadingBillOrderId !== null" :order-id="printLadingBillOrderId" @close="printLadingBillOrderId=null" />
462
    <batch-pickup v-if="showBatchPickup" @close="onBatchClose" @success="onBatchClose"/>
463
    <withdrawal v-if="show" :dialog-visible="show"  :orderId="orderId" ></withdrawal>
464
    <batch-single-application :order-list="orderId" :dialog-visible.sync="warehouseBol"></batch-single-application>
我在何方's avatar
我在何方 committed
465
    <fee-application :order-id="orderId" :currencys="JSON.stringify(currencyList)" :dialog-visible.sync="feeApplicationBol"></fee-application>
dragondean@qq.com's avatar
dragondean@qq.com committed
466
    <merge-log :order-no="showMergedLogOrderNo" v-if="showMergedLogOrderNo !== null" @close="showMergedLogOrderNo=null" />
467
    <pickup-log v-if="showPickupLogOrderNo" :order-no="showPickupLogOrderNo" @close="showPickupLogOrderNo=null" @delete="getList" />
468
    <SplitRevoke v-if="splitRevokeOrderId" :order-id="splitRevokeOrderId" @close="splitRevokeOrderId=null;getList()"></SplitRevoke>
ylpmty's avatar
ylpmty committed
469 470 471 472
  </div>
</template>

<script>
473 474 475 476
import Selector from '@/components/Selector'
import ProductSelector from '@/components/ProductSelector'
import { getProductAttrList } from '@/api/ecw/productAttr'
import CustomerSelector from '@/components/CustomerSelector'
477
import specialNeeds from '@/views/ecw/order/components/specialNeeds';
dcy's avatar
dcy committed
478 479 480 481 482 483 484
import {
  createOrder,
  updateOrder,
  deleteOrder,
  getOrder,
  getOrderPage,
  exportOrderExcel,
485 486
  orderSpecialNeed,
  cancelOrder,
487
  recoveryOrder,
488 489 490 491
  getMyOrderPage,
  deptOrderPage,
  orderStatistics,
  orderMyStatistics,
dragondean@qq.com's avatar
dragondean@qq.com committed
492 493 494
  orderDeptStatistics,
  orderExportSearch,
  orderExportMySearch,
TIAN.DESHENG's avatar
TIAN.DESHENG committed
495 496 497 498 499 500 501 502
  orderExportDeptSearch,
  exportAbnormal,
  exportHeavyOrder,
  exportReturnOrder,
  exportSaleRepay,
  exportCustomsDatas,
  exportShippingDatas,
  exportShipFee,
503
  exportUnload, splitCancelApply, orderSplitRevoke
dcy's avatar
dcy committed
504
} from "@/api/ecw/order";
505
/* import { getDictDatas, DICT_TYPE } from '@/utils/dict'; */
dragondean@qq.com's avatar
dragondean@qq.com committed
506
import PrintTag from './components/PrintTag'
dragondean@qq.com's avatar
dragondean@qq.com committed
507 508
import PrintWarehouseReceipt from './components/PrintWarehouseReceipt'
import PrintLadingBill from './components/PrintLadingBill'
dragondean@qq.com's avatar
dragondean@qq.com committed
509
import BatchPickup from './components/BatchPickup'
510
import withdrawal from "@/views/ecw/order/withdrawal";
511
import UserSelector from '@/components/UserSelector'
512 513
import BatchSingleApplication from "@/views/ecw/order/batchSingleApplication";
import FeeApplication from "@/views/ecw/order/feeApplication";
dragondean@qq.com's avatar
dragondean@qq.com committed
514
import MergeLog from '@/views/ecw/order/components/MergeLog'
dragondean@qq.com's avatar
dragondean@qq.com committed
515
import PickupLog from './components/PickupLog'
516
import {getWarehouseList} from '@/api/ecw/warehouse'
我在何方's avatar
我在何方 committed
517
import { getCurrencyPage } from "@/api/ecw/currency";
518
import SplitRevoke from "@/views/ecw/order/components/SplitRevoke";
ylpmty's avatar
ylpmty committed
519
export default {
dragondean@qq.com's avatar
dragondean@qq.com committed
520
  name: "EcwOrderIndex",
ylpmty's avatar
ylpmty committed
521
  components: {
522
    UserSelector,
523 524
    FeeApplication,
    BatchSingleApplication,
dragondean@qq.com's avatar
dragondean@qq.com committed
525
    MergeLog,
dragondean@qq.com's avatar
dragondean@qq.com committed
526
    PickupLog,
527
    SplitRevoke,
528
    CustomerSelector, ProductSelector, Selector,specialNeeds,PrintTag, PrintWarehouseReceipt, PrintLadingBill, BatchPickup,withdrawal
ylpmty's avatar
ylpmty committed
529
  },
530
  props: {
531 532
    mine: Boolean, // 标识我的订单列表
    dept: Boolean // 标识部门订单列表
533
  },
ylpmty's avatar
ylpmty committed
534 535
  data() {
    return {
536 537 538 539 540 541
      // 选中数组
      ids: [],
      // 非单个禁用
      single: true,
      // 非多个禁用
      multiple: true,
ylpmty's avatar
ylpmty committed
542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557
      // 遮罩层
      loading: true,
      // 导出遮罩层
      exportLoading: false,
      // 显示搜索条件
      showSearch: true,
      // 总条数
      total: 0,
      // 订单列表
      list: [],
      // 弹出层标题
      title: "",
      // 是否显示弹出层
      open: false,
      // 查询参数
      queryParams: {
558 559
        page: 1,
        rows: 10
ylpmty's avatar
ylpmty committed
560
      },
561 562
      warehouseList:[],
      // tradeCityList: [],
563 564
      productAttrList: [],  // 商品属性
      molecule: '', //重货比分子
ylpmty's avatar
ylpmty committed
565 566 567
      denominator: '', //重货比分母
      dateFilterType: '', //日期筛选类别
      dateFilter: [], //筛选日期
dragondean@qq.com's avatar
dragondean@qq.com committed
568

dragondean@qq.com's avatar
dragondean@qq.com committed
569 570
      printTagOrderId: null, // 显示打印标签的订单ID
      printWarehouseReceiptOrderId: null, // 打印入仓单的订单ID
571
      printLadingBillOrderId: null, // 打印提单的订单ID
dragondean@qq.com's avatar
dragondean@qq.com committed
572
      showBatchPickup: false, // 是否显示批量提货弹窗
dragondean@qq.com's avatar
dragondean@qq.com committed
573
      showMergedLogOrderNo:null, // 显示合单日志订单号
dragondean@qq.com's avatar
dragondean@qq.com committed
574
      showPickupLogOrderNo: null, // 显示提货日志的订单号
575 576
      isShow:false,//特殊显示
      orderId:undefined,
577 578
      adjustmentList:[],
      show:false,
579 580
      warehouseBol:false,//调仓申请
      feeApplicationBol:false,//费用申请
dragondean@qq.com's avatar
dragondean@qq.com committed
581 582 583
      multipleSelection:[],

      transportId: null, // 指定运输方式
我在何方's avatar
我在何方 committed
584 585 586 587 588
      orderNo:'',
      params: {
        page: 1,
        rows: 20,
      },
589 590
      currencyList:[],
      statistics: null ,// 统计数据
591 592

      splitRevokeOrderId: null, // 撤销拆单的订单ID
ylpmty's avatar
ylpmty committed
593 594
    };
  },
595 596 597 598 599
  watch:{
    isChinese(){
      this.getList()
    }
  },
600
  computed: {
601 602 603 604 605 606 607 608
    // 导出的权限字符串
    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
609 610 611 612
    // 是否全部订单
    isAll(){
      return !(this.mine || this.dept || this.transportId)
    },
613 614 615
    isChinese(){
      return this.$i18n.locale === 'zh_CN'
    },
616 617 618 619 620 621 622 623
    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() {
624 625 626 627
      return this.tradeCityList.filter(item => item.type == 2)
    },
    importCityList() {
      return this.tradeCityList.filter(item => item.type == 1)
628
    }, */
629 630 631 632 633 634
    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
635 636 637 638 639
        let queryParams = Object.assign({}, this.queryParams, timeParams)
        if(this.transportId){
          queryParams.transportId = this.transportId
        }
        return queryParams
640 641 642 643
    },
    batchWarehouseAdjustment(){
      return  this.multipleSelection.length > 0 && this.multipleSelection.every(e => e.status === 5)
    },
644 645 646 647 648 649 650 651 652 653
    include(){
      return (state, arr) => {
        return arr.indexOf(state) > -1
      }
    },
    exclude(){
      return (state, arr) => {
        return arr.indexOf(state) == -1
      }
    }
654
  },
dragondean@qq.com's avatar
dragondean@qq.com committed
655
  activated(){
656
    this.getList()
dragondean@qq.com's avatar
dragondean@qq.com committed
657
  },
ylpmty's avatar
ylpmty committed
658
  created() {
dragondean@qq.com's avatar
dragondean@qq.com committed
659
    this.getTransportFromRoute()
ylpmty's avatar
ylpmty committed
660
    this.getList();
661
    getProductAttrList().then(res => this.productAttrList = res.data)
662 663
    // getTradeCityList().then(res => this.tradeCityList = res.data)
    getWarehouseList().then(res => this.warehouseList = res.data)
我在何方's avatar
我在何方 committed
664 665

    getCurrencyPage(this.params).then(res => this.currencyList = res.data.list)
ylpmty's avatar
ylpmty committed
666 667
  },
  methods: {
668
    // 取消拆单申请
669 670
    splitRevoke(row){
      this.splitRevokeOrderId = row.orderId
671
    },
dragondean@qq.com's avatar
dragondean@qq.com committed
672 673 674 675 676 677 678
    // 获得导出函数
    getExportFunc(){
      let func = orderExportSearch
      if(this.mine)func = orderExportMySearch
      if(this.dept)func = orderExportDeptSearch
      return func
    },
679 680 681 682 683
    // 导出勾选
    exportChecked(){
      if(!this.ids.length){
        return this.$message.error(this.$t('请勾选需要导出的订单'))
      }
dragondean@qq.com's avatar
dragondean@qq.com committed
684
      return this.exportExcel(this.getExportFunc(), {orderIdList: this.ids}, this.$t("导出勾选"))
685 686 687
    },
    // 导出搜索
    exportSearch(){
dragondean@qq.com's avatar
dragondean@qq.com committed
688
      return this.exportExcel(this.getExportFunc(), this.combinedQueryParams, this.$t("导出搜索"))
689
    },
TIAN.DESHENG's avatar
TIAN.DESHENG committed
690
     // 导出异常单
TIAN.DESHENG's avatar
TIAN.DESHENG committed
691 692 693
    exportAbnormal(){
      return this.exportExcel(exportAbnormal, this.combinedQueryParams, this.$t("异常单统计"))
    },
TIAN.DESHENG's avatar
TIAN.DESHENG committed
694 695 696 697
    // 重货单统计
    exportHeavyOrder(){
      return this.exportExcel(exportHeavyOrder, this.combinedQueryParams, this.$t("重货单统计"))
    },
TIAN.DESHENG's avatar
TIAN.DESHENG committed
698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724
    // 退仓单统计
    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("卸货费统计"))
    },
725 726 727 728
    // 通用导出函数
    exportExcel(func, params, fileName = null){
      this.exportLoading = true;
      func(params).then(res => {
729
        console.log({res})
730 731 732 733 734 735 736 737
        if(!fileName){
          fileName = this.$t('订单')
        }
        this.$download.excel(res, fileName + '.xls');
      }).finally(() => {
        this.exportLoading = false
      })
    },
dragondean@qq.com's avatar
dragondean@qq.com committed
738 739 740 741 742 743
    // 提取路径中的运输方式
    getTransportFromRoute(){
        let match = this.$route.path.match(/transport_(\d)/)
        if(!match) return
        this.transportId = match[1]
    },
744 745 746 747
    oprateOrder(orderId, type){
      let actions = {
        cancelOrder: {
          callable: cancelOrder,
Marcus's avatar
Marcus committed
748
          confirm: this.$t('确定要取消此订单么?')
749 750 751
        },
        recoveryOrder: {
          callable: recoveryOrder,
Marcus's avatar
Marcus committed
752
          confirm: this.$t('确定要恢复此订单么?')
753 754 755
        },
        deleteOrder: {
          callable: deleteOrder,
Marcus's avatar
Marcus committed
756
          confirm: this.$t('确定要删除此订单么?')
757 758 759 760 761 762 763
        }
      }
      let action = actions[type]
      if(!action){
        return this.$alert('不支持此操作')
      }
      this.$confirm(action.confirm)
764
        .then(() => {
765 766
          return action.callable(orderId)
        })
767
        .then(() => {
768 769 770
          this.getList()
        })
    },
771

ylpmty's avatar
ylpmty committed
772 773 774
    /** 查询列表 */
    getList() {
      this.loading = true;
775
      console.log('this.combinedQueryParams', this.combinedQueryParams)
776
      let func = getOrderPage
777
      if(this.mine){
778 779
        func = getMyOrderPage
        /* return getMyOrderPage(this.combinedQueryParams).then(response => {
780 781 782
          this.list = response.data.list;
          this.total = response.data.total;
          this.loading = false;
783 784 785
        }); */
      }else if(this.dept){
        func = deptOrderPage
786
      }
ylpmty's avatar
ylpmty committed
787
      // 执行查询
788
      func(this.combinedQueryParams).then(response => {
789 790 791 792 793
        // 部分情况下,订单后面的操作下拉菜单会显示按钮,但是下来没有选项,在elTable组件更新的时候会导致渲染错误,所以要在更新渲染前清空一次list让table彻底重新渲染,避免部分更新导致异常
        this.list = []
        this.$nextTick(() => {
          this.list = response.data.list
        })
ylpmty's avatar
ylpmty committed
794 795 796
        this.total = response.data.total;
        this.loading = false;
      });
797 798 799 800 801 802 803 804 805 806 807 808 809 810

      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
811
    },
812

ylpmty's avatar
ylpmty committed
813 814
    /** 搜索按钮操作 */
    handleQuery() {
815
      this.queryParams.page = 1;
816
      this.$nextTick(this.getList)
ylpmty's avatar
ylpmty committed
817 818 819
    },
    /** 重置按钮操作 */
    resetQuery() {
dragondean@qq.com's avatar
dragondean@qq.com committed
820 821 822 823
      this.queryParams = {
        page: 1,
        rows: 10
      }
824
      this.dateFilter = []
ylpmty's avatar
ylpmty committed
825 826 827 828
      this.handleQuery();
    },
    /** 新增按钮操作 */
    handleAdd() {
829
      this.$router.push('create')
ylpmty's avatar
ylpmty committed
830 831 832
    },
    /** 修改按钮操作 */
    handleUpdate(row) {
833
      this.$router.push('edit?id=' + row.orderId)
ylpmty's avatar
ylpmty committed
834
    },
835

ylpmty's avatar
ylpmty committed
836 837 838 839
    /** 导出按钮操作 */
    handleExport() {
      // 处理查询参数
      // 执行导出
840
      this.$modal.confirm(this.$t('是否确认导出所有订单数据项?')).then(() => {
841
        this.exportLoading = true;
842
        return exportOrderExcel(this.combinedQueryParams);
843 844 845 846 847 848 849
      }).then(response => {
        this.$download.excel(response, '${table.classComment}.xls');
        this.exportLoading = false;
      }).catch(() => { });
    },
    // 表格多选
    handleSelectionChange(selection) {
850
      this.multipleSelection = selection
dragondean@qq.com's avatar
dragondean@qq.com committed
851
      this.ids = selection.map(item => item.orderId)
852 853
      this.single = selection.length !== 1
      this.multiple = !selection.length
854 855
    },
    handleEdit() {
856 857
      this.warehouseBol = true
      this.orderId = this.ids.join(',')
858 859
    },
    moleculeChange() { },
dcy's avatar
dcy committed
860 861
    denominatorChange() { },
    specialRendering(val){
862
      console.log('val', val)
dcy's avatar
dcy committed
863 864
      if(val !== undefined){
        let i = val.split(',')
865
        return this.getDictDatas(this.DICT_TYPE.ORDER_SPECIAL_NEEDS).filter(e => {
dcy's avatar
dcy committed
866
           return i.indexOf(e.value) > -1
867 868 869 870
        }).map(item => {
          // 打字开头的用最后一个字,否则取第一个字
          item.symbol = item.label[0] == '' ? item.label[item.label.length-1]: item.label[0]
           return item
dcy's avatar
dcy committed
871 872 873 874
        })
      }
    },
    deleteSpecial(id,orderId){
875
      this.$confirm(this.$t('确定删除此特需么?')).then(() => {
876 877 878 879
        return orderSpecialNeed({orderId:orderId,advanceType:id})
      }).then(() => {
        this.getList()
      })
880
    },
881 882 883 884
    onBatchClose(){
      this.showBatchPickup = false
      this.handleQuery()
    }
ylpmty's avatar
ylpmty committed
885 886 887
  }
};
</script>
888 889 890 891
<style lang="scss" scoped>
::v-deep .actions{
    .el-dropdown{
      margin-right: 10px;
892
      &:last-child {
893 894 895 896
        margin-right: 0;
      }
    }
}
897
</style>