stockingList.vue 26.7 KB
Newer Older
lanbaoming's avatar
lanbaoming committed
1 2 3 4 5 6
<!--空运备货列表-->
<template>
  <div class="app-container">
    <!-- 搜索工作栏 -->
    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true">
      <el-form-item :label="$t('编号')" prop="orderNo">
lanbaoming's avatar
lanbaoming committed
7
        <el-input
8
          v-model.trim="queryParams.numberKey"
lanbaoming's avatar
lanbaoming committed
9 10 11
          :placeholder="$t('请输入订单号、唛头、提单号')"
          clearable
          @keyup.enter.native="handleQuery"
12
          @input="replaceSpace(queryParams, 'numberKey')"
lanbaoming's avatar
lanbaoming committed
13
        />
lanbaoming's avatar
lanbaoming committed
14 15 16
      </el-form-item>

      <el-form-item :label="$t('发货人')" prop="consignorKey">
lanbaoming's avatar
lanbaoming committed
17
        <el-input
18
          v-model.trim="queryParams.consignorKey"
lanbaoming's avatar
lanbaoming committed
19 20 21
          :placeholder="$t('发货人')"
          clearable
          @keyup.enter.native="handleQuery"
22
          @input="replaceSpace(queryParams, 'consignorKey')"
lanbaoming's avatar
lanbaoming committed
23
        />
lanbaoming's avatar
lanbaoming committed
24 25
      </el-form-item>
      <el-form-item :label="$t('收货人')" prop="consigneeKey">
lanbaoming's avatar
lanbaoming committed
26
        <el-input
27
          v-model.trim="queryParams.consigneeKey"
lanbaoming's avatar
lanbaoming committed
28 29 30
          :placeholder="$t('收货人')"
          clearable
          @keyup.enter.native="handleQuery"
31
          @input="replaceSpace(queryParams, 'consigneeKey')"
lanbaoming's avatar
lanbaoming committed
32
        />
lanbaoming's avatar
lanbaoming committed
33 34
      </el-form-item>
      <el-form-item label="">
lanbaoming's avatar
lanbaoming committed
35 36 37 38 39 40 41 42 43 44 45
        <dict-selector
          :type="DICT_TYPE.ECW_BEGINTIME_TYPE_ENDTIME"
          :filter="(item) => item.value != 'PickTime'"
          v-model="dateFilterType"
          defaultable
          style="width: 150px; margin-right: 5px"
        />
        <el-date-picker
          v-model="dateFilter"
          type="datetimerange"
          range-separator="-"
lanbaoming's avatar
lanbaoming committed
46 47 48 49
          :start-placeholder="$t('开始日期')"
          :end-placeholder="$t('结束日期')"
          value-format="yyyy-MM-dd HH:mm:ss"
          @change="handleQuery"
lanbaoming's avatar
lanbaoming committed
50 51
        >
        </el-date-picker>
lanbaoming's avatar
lanbaoming committed
52
      </el-form-item>
余金瑶's avatar
余金瑶 committed
53 54
      <div>
        <el-form-item :label="$t('始发仓')" prop="startWarehouseIds">
yujinyao's avatar
yujinyao committed
55
          <el-select v-model="queryParams.startWarehouseIds" multiple :placeholder="$t('请选择始发仓')" clearable @change="handleQuery">
余金瑶's avatar
余金瑶 committed
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
            <el-option v-for="item in exportWarehouseList" :label="$l(item, 'title')" :value="item.id" :key="item.id"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item :label="$t('目的国')" prop="destCountryId">
          <el-select
            v-model="destCountryId"
            multiple
            :label="destCountryId"
            :placeholder="$t('请选择目的国')"
            clearable
            @change="handleQuery"
          >
            <el-option
              v-for="item in AddressProvince"
              :key="item.guojia"
              :label="item.guojiaName"
              :value="item.guojia"
            ></el-option>
          </el-select>
        </el-form-item>
        <el-form-item :label="$t('目的城市')" prop="objectiveId">
          <el-select
            v-model="objectiveId"
            multiple
            :placeholder="$t('请选择目的城市')"
            style="width: 200px"
            clearable
            @change="handleQuery"
          >
            <el-option
              v-for="item in AddressCity"
              :key="item.shi"
              :label="item.shiName"
              :value="item.shi"
            ></el-option>
          </el-select>
        </el-form-item>
        <el-form-item :label="$t('目的仓')" prop="destWarehouseId">
          <el-select
            v-model="destWarehouseId"
            multiple
            :placeholder="$t('请选择目的仓')"
            style="width: 200px"
            clearable
            @change="handleQuery"
          >
            <el-option
              v-for="item in AddressTown"
              :key="item.id"
              :label="item.titleZh"
              :value="item.id"
            ></el-option>
          </el-select>
        </el-form-item>
      </div>
lanbaoming's avatar
lanbaoming committed
111 112 113 114 115

      <!--<el-form-item :label="$t('运输方式')" prop="transportId">
        <dict-selector :type="DICT_TYPE.ECW_TRANSPORT_TYPE" v-model.number="queryParams.transportId" clearable @change="handleQuery"/>
      </el-form-item>-->

116 117 118 119 120
      <el-form-item :label="$t('商品类型')" prop="goodsTypes" v-show="showSearch">
        <selector v-model="queryParams.goodsTypes" multiple :options="productAttrList" label-field="attrName" value-field="id">
        </selector>
      </el-form-item>

121
      <el-form-item :label="$t('商品')" prop="prodKey" v-show="showSearch">
lanbaoming's avatar
lanbaoming committed
122
        <el-input
123
          v-model.trim="queryParams.prodKey"
lanbaoming's avatar
lanbaoming committed
124 125 126
          :placeholder="$t('请输入商品类型、品名或品牌')"
          clearable
          @keyup.enter.native="handleQuery"
127
          @input="replaceSpace(queryParams, 'prodKey')"
lanbaoming's avatar
lanbaoming committed
128
        />
lanbaoming's avatar
lanbaoming committed
129 130
      </el-form-item>

余金瑶's avatar
余金瑶 committed
131
      <el-form-item :label="$t('控货')" prop="isCargoControl" v-show="showSearch">
lanbaoming's avatar
lanbaoming committed
132 133 134 135 136 137
        <dict-selector
          v-model="queryParams.isCargoControl"
          :type="DICT_TYPE.INFRA_BOOLEAN_STRING"
          fomatter="bool"
          clearable
        />
lanbaoming's avatar
lanbaoming committed
138
      </el-form-item>
余金瑶's avatar
余金瑶 committed
139
      <el-form-item :label="$t('入仓类型')" prop="warehouseType" v-show="showSearch">
lanbaoming's avatar
lanbaoming committed
140 141 142 143 144
        <dict-selector
          :type="DICT_TYPE.ECW_WAREHOUSING_TYPE"
          v-model="queryParams.warehouseType"
          clearable
        />
lanbaoming's avatar
lanbaoming committed
145
      </el-form-item>
lanbaoming's avatar
lanbaoming committed
146 147 148
      <el-form-item :label="$t('客户经理')">
        <user-selector
          manage
余金瑶's avatar
余金瑶 committed
149 150
          v-model="queryParams.salesmanIds"
          multiple
lanbaoming's avatar
lanbaoming committed
151 152 153 154
          clearable
          @change="handleQuery"
          :prepend="{ id: 0, nickname: $t('未分配客户经理') }"
        />
lanbaoming's avatar
lanbaoming committed
155
      </el-form-item>
余金瑶's avatar
余金瑶 committed
156
      <el-form-item :label="$t('订单状态')" prop="status" v-show="showSearch">
lanbaoming's avatar
lanbaoming committed
157 158 159 160 161 162
        <dict-selector
          :type="DICT_TYPE.ORDER_STATUS"
          v-model="queryParams.status"
          @keyup.enter.native="handleQuery"
          clearable
        />
lanbaoming's avatar
lanbaoming committed
163
      </el-form-item>
余金瑶's avatar
余金瑶 committed
164
      <el-form-item :label="$t('报关方式')" prop="customsType" v-show="showSearch">
lanbaoming's avatar
lanbaoming committed
165 166 167 168 169 170
        <dict-selector
          :type="DICT_TYPE.ECW_CUSTOMS_TYPE"
          v-model="queryParams.customsType"
          clearable
          @change="handleQuery"
        />
lanbaoming's avatar
lanbaoming committed
171
      </el-form-item>
余金瑶's avatar
余金瑶 committed
172
      <el-form-item :label="$t('是否齐货')" v-show="showSearch">
lanbaoming's avatar
lanbaoming committed
173
        <!--// 字段存疑-->
lanbaoming's avatar
lanbaoming committed
174 175 176 177 178 179 180
        <dict-selector
          v-model="queryParams.isNeat"
          :type="DICT_TYPE.INFRA_BOOLEAN_STRING"
          fomatter="bool"
          clearable
          @change="handleQuery"
        />
lanbaoming's avatar
lanbaoming committed
181 182
      </el-form-item>

余金瑶's avatar
余金瑶 committed
183
      <el-form-item :label="$t('备案属性')" prop="productRecord" v-show="showSearch">
lanbaoming's avatar
lanbaoming committed
184 185
        <dict-selector
          :type="DICT_TYPE.PRODUCT_RECORD_ATTRIBUTE"
186
          v-model="queryParams.productRecords"
余金瑶's avatar
余金瑶 committed
187
          multiple
lanbaoming's avatar
lanbaoming committed
188 189 190
          clearable
          @change="handleQuery"
        />
lanbaoming's avatar
lanbaoming committed
191
      </el-form-item>
余金瑶's avatar
余金瑶 committed
192
      <el-form-item :label="$t('快递单号')" prop="number" v-show="showSearch">
lanbaoming's avatar
lanbaoming committed
193 194 195 196 197
        <el-input
          v-model="queryParams.number"
          :placeholder="$t('快递单号')"
          clearable
          @keyup.enter.native="handleQuery"
余金瑶's avatar
余金瑶 committed
198
          onkeyup="this.value=this.value.replace(/\s+/g, '')"
lanbaoming's avatar
lanbaoming committed
199
        />
lanbaoming's avatar
lanbaoming committed
200
      </el-form-item>
201
      <el-form-item :label="$t('外部仓')" prop="isExternalWarehouse" v-show="showSearch">
lanbaoming's avatar
lanbaoming committed
202 203 204 205 206 207
        <el-select
          v-model="queryParams.isExternalWarehouse"
          :placeholder="$t('请选择')"
          clearable
          @change="handleQuery"
        >
lanbaoming's avatar
lanbaoming committed
208 209 210 211 212
          <el-option :label="$t('外部仓')" :value="1"></el-option>
          <el-option :label="$t('自有仓')" :value="0"></el-option>
        </el-select>
      </el-form-item>

余金瑶's avatar
余金瑶 committed
213
      <el-form-item :label="$t('异常状态')" prop="status" v-show="showSearch">
lanbaoming's avatar
lanbaoming committed
214 215 216 217 218 219
        <dict-selector
          :type="DICT_TYPE.ORDER_ABNORMAL_STATE"
          v-model="queryParams.abnormalState"
          @keyup.enter.native="handleQuery"
          clearable
        />
lanbaoming's avatar
lanbaoming committed
220
      </el-form-item>
余金瑶's avatar
余金瑶 committed
221
      <el-form-item :label="$t('审核状态')" prop="status" v-show="showSearch">
lanbaoming's avatar
lanbaoming committed
222 223 224 225 226 227
        <dict-selector
          :type="DICT_TYPE.ECW_ORDER_APPROVAL_TYPE"
          v-model="queryParams.auditType"
          @keyup.enter.native="handleQuery"
          clearable
        />
lanbaoming's avatar
lanbaoming committed
228
      </el-form-item>
余金瑶's avatar
余金瑶 committed
229
      <el-form-item :label="$t('增值服务')" prop="types" v-show="showSearch">
lanbaoming's avatar
lanbaoming committed
230
        <el-select
余金瑶's avatar
余金瑶 committed
231 232
          v-model="queryParams.types"
          multiple
lanbaoming's avatar
lanbaoming committed
233 234 235
          :placeholder="$t('请选择')"
          clearable
        >
lanbaoming's avatar
lanbaoming committed
236 237 238 239 240
          <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>
余金瑶's avatar
余金瑶 committed
241
      <el-form-item :label="$t('出货渠道')" prop="channelIds">
lanbaoming's avatar
lanbaoming committed
242 243 244 245
        <selector
          :options="channelList"
          :label-field="$l('name')"
          value-field="channelId"
余金瑶's avatar
余金瑶 committed
246 247
          v-model="queryParams.channelIds"
          multiple
lanbaoming's avatar
lanbaoming committed
248
        ></selector>
lanbaoming's avatar
lanbaoming committed
249
      </el-form-item>
余金瑶's avatar
余金瑶 committed
250
      <el-form-item :label="$t('特需')" prop="packageType" v-show="showSearch">
lanbaoming's avatar
lanbaoming committed
251 252 253 254 255 256
        <el-select
          v-model="queryParams.packageTypeArr"
          multiple
          :placeholder="$t('请选择')"
          clearable
        >
lanbaoming's avatar
lanbaoming committed
257
          <template v-for="item in getDictDatas(DICT_TYPE.ORDER_SPECIAL_NEEDS)">
lanbaoming's avatar
lanbaoming committed
258 259 260 261
            <el-option
              :label="$l(item, 'label')"
              :value="item.value"
            ></el-option>
lanbaoming's avatar
lanbaoming committed
262 263 264 265
          </template>
        </el-select>
      </el-form-item>
      <el-form-item>
lanbaoming's avatar
lanbaoming committed
266 267 268 269 270 271
        <el-button type="primary" icon="el-icon-search" @click="handleQuery">{{
          $t("搜索")
        }}</el-button>
        <el-button icon="el-icon-refresh" @click="resetQuery">{{
          $t("重置")
        }}</el-button>
lanbaoming's avatar
lanbaoming committed
272 273 274 275 276 277
      </el-form-item>
    </el-form>

    <!-- 操作工具栏 -->
    <el-row :gutter="10" class="mb8">
      <el-col :span="1.5">
lanbaoming's avatar
lanbaoming committed
278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296
        <el-button
          :disabled="!multipleSelection.length"
          type="primary"
          :loading="exporting"
          plain
          size="mini"
          @click="exportXls(ids)"
          v-hasPermi="['ecw:order:stockingList:export_selected']"
          >{{ $t("导出所选") }}</el-button
        >
        <el-button
          type="primary"
          :loading="exporting"
          plain
          size="mini"
          @click="exportXls(queryParams)"
          v-hasPermi="['ecw:order:stockingList:export_search']"
          >{{ $t("导出搜索") }}</el-button
        >
lanbaoming's avatar
lanbaoming committed
297
      </el-col>
余金瑶's avatar
余金瑶 committed
298 299 300 301
      <right-toolbar
        :showSearch.sync="showSearch"
        @queryTable="getList"
      ></right-toolbar>
lanbaoming's avatar
lanbaoming committed
302 303 304
    </el-row>

    <!-- 列表 -->
lanbaoming's avatar
lanbaoming committed
305 306 307 308 309
    <el-table
      v-loading="loading"
      :data="list"
      @selection-change="handleSelectionChange"
    >
lanbaoming's avatar
lanbaoming committed
310 311
      <el-table-column type="selection" width="55" align="center" />

lanbaoming's avatar
lanbaoming committed
312 313 314 315 316 317
      <el-table-column
        :label="$t('订单编号')"
        width="120px"
        align="center"
        prop="orderNo"
      >
lanbaoming's avatar
lanbaoming committed
318
        <template slot-scope="scope">
lanbaoming's avatar
lanbaoming committed
319 320 321 322 323 324 325
          <router-link
            :to="{
              path: '/order/detail',
              query: { orderId: scope.row.orderId },
            }"
            class="link-type"
          >
lanbaoming's avatar
lanbaoming committed
326 327
            <span>{{ scope.row.orderNo }}</span>
          </router-link>
lanbaoming's avatar
lanbaoming committed
328 329 330 331 332 333 334 335 336 337 338 339 340 341
          <div
            style="display: flex; flex-wrap: wrap"
            v-if="scope.row.advanceType"
          >
            <el-button
              @click="deleteSpecial(item.value, scope.row.orderId)"
              size="mini"
              style="margin-left: 20px"
              type="danger"
              circle
              v-for="(item, index) in specialRendering(scope.row.advanceType)"
              :key="index"
              >{{ item.label[0] }}</el-button
            >
lanbaoming's avatar
lanbaoming committed
342 343 344 345
          </div>
        </template>
      </el-table-column>
      <el-table-column :label="$t('唛头')" align="center" prop="marks" />
lanbaoming's avatar
lanbaoming committed
346 347 348 349 350 351 352 353 354 355 356 357 358 359 360
      <el-table-column
        :label="$t('总箱数/入仓箱数')"
        align="center"
        prop="sumNum"
      >
        <template slot-scope="{ row }">
          <div :style="{ color: row.customsType != 1 ? 'red' : null }">
            {{ row.totalNum }}{{ $t("") }}/{{ row.sumNum }}{{ $t("") }}
          </div>
          <dict-tag
            v-if="row.customsType != 1"
            style="color: red"
            :type="DICT_TYPE.ECW_CUSTOMS_TYPE"
            :value="row.customsType"
          ></dict-tag>
lanbaoming's avatar
lanbaoming committed
361 362 363
        </template>
      </el-table-column>
      <el-table-column :label="$t('体积/重量')" align="center" prop="sumWeight">
lanbaoming's avatar
lanbaoming committed
364
        <template slot-scope="{ row }">
lanbaoming's avatar
lanbaoming committed
365 366 367 368 369
          <!--入仓前是填单数据,入仓后是入仓数据,装柜审核通过等状态inwarehouseState会变成0,所以只能通过sumNum来判断-->
          <component
            :is="row.orderType > 1 ? 'el-tooltip' : 'div'"
            class="item"
            :style="{
lanbaoming's avatar
lanbaoming committed
370 371
              color: row.orderType > 1 ? 'red' : null,
            }"
lanbaoming's avatar
lanbaoming committed
372
            effect="dark"
lanbaoming's avatar
lanbaoming committed
373 374 375 376 377 378 379 380 381 382 383 384 385
            :content="
              row.orderType === 2
                ? (row.wvolume || 0) + 'm³'
                : (row.vweight || 0) + 'kg'
            "
            placement="bottom"
          >
            <div v-if="row.sumNum > 0">
              {{ row.sumVolume }}m³ /{{ row.sumWeight }}Kg
            </div>
            <div v-else>
              {{ row.costVO.totalVolume }}m³ /{{ row.costVO.totalWeight }}Kg
            </div>
lanbaoming's avatar
lanbaoming committed
386 387 388
          </component>
        </template>
      </el-table-column>
lanbaoming's avatar
lanbaoming committed
389 390 391 392 393 394 395 396 397 398
      <el-table-column
        :label="$t('始发仓')"
        align="center"
        prop="startWarehouseName"
      >
        <template slot-scope="{ row }">
          {{ row.startWarehouseName }}
          <span style="color: red" v-if="row.isExternalWarehouse"
            >({{ $t("外部仓") }})</span
          >
lanbaoming's avatar
lanbaoming committed
399 400
        </template>
      </el-table-column>
lanbaoming's avatar
lanbaoming committed
401 402 403 404 405 406 407 408 409 410 411
      <el-table-column
        :label="$t('运输方式/目的地')"
        align="center"
        prop="transportId"
      >
        <template slot-scope="{ row }">
          <dict-tag
            :type="DICT_TYPE.ECW_TRANSPORT_TYPE"
            :value="row.transportId"
          />
          / {{ row.dstWarehouseName }}
lanbaoming's avatar
lanbaoming committed
412 413 414
        </template>
      </el-table-column>
      <el-table-column :label="$t('控货')" align="center" prop="isCargoControl">
lanbaoming's avatar
lanbaoming committed
415 416 417 418 419
        <template slot-scope="{ row }">
          <dict-tag
            :type="DICT_TYPE.INFRA_BOOLEAN_STRING"
            :value="row.isCargoControl"
          />
lanbaoming's avatar
lanbaoming committed
420 421 422 423 424
        </template>
      </el-table-column>
      <el-table-column :label="$t('订单状态')" align="center" prop="status">
        <template slot-scope="scope">
          <!-- <dict-tag :type="DICT_TYPE.ORDER_STATUS" :value="scope.row.status" /> -->
lanbaoming's avatar
lanbaoming committed
425
          {{ scope.row.statusMsg }}
lanbaoming's avatar
lanbaoming committed
426 427 428
        </template>
      </el-table-column>

lanbaoming's avatar
lanbaoming committed
429 430 431 432 433 434
      <el-table-column
        :label="$t('操作')"
        align="center"
        class-name="small-padding fixed-width actions"
        width="150px"
      >
lanbaoming's avatar
lanbaoming committed
435
        <template slot-scope="scope">
lanbaoming's avatar
lanbaoming committed
436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453
          <el-button
            type="text"
            @click="setCanNotShipment(scope.row)"
            v-hasPermi="['ecw:order:setCanNotShipment']"
            >{{ $t("不可出") }}</el-button
          >
          <el-button
            type="text"
            @click="$router.push('stocking?id=' + scope.row.orderId)"
            v-hasPermi="['ecw:order:stockingList:stocking']"
            >{{ $t("备货") }}</el-button
          >
          <el-button
            type="text"
            @click="printTagOrderId = scope.row.orderId"
            v-hasPermi="['ecw:order:stockingList:print_tag']"
            >{{ $t("打印标签") }}</el-button
          >
lanbaoming's avatar
lanbaoming committed
454 455 456 457
        </template>
      </el-table-column>
    </el-table>
    <!-- 分页组件 -->
lanbaoming's avatar
lanbaoming committed
458 459 460 461 462 463 464
    <pagination
      v-show="total > 0"
      :total="total"
      :page.sync="queryParams.page"
      :limit.sync="queryParams.rows"
      @pagination="getList"
    />
lanbaoming's avatar
lanbaoming committed
465

lanbaoming's avatar
lanbaoming committed
466 467 468 469 470
    <print-tag
      v-if="printTagOrderId !== null"
      :order-id="printTagOrderId"
      @close="printTagOrderId = null"
    />
lanbaoming's avatar
lanbaoming committed
471 472 473 474
  </div>
</template>

<script>
lanbaoming's avatar
lanbaoming committed
475 476 477 478 479
import Selector from "@/components/Selector";
import ProductSelector from "@/components/ProductSelector";
import { getProductAttrList } from "@/api/ecw/productAttr";
import CustomerSelector from "@/components/CustomerSelector";
import specialNeeds from "@/views/ecw/order/components/specialNeeds";
lanbaoming's avatar
lanbaoming committed
480 481 482 483 484 485

import {
  canReadyStockShipmentPage,
  exportReadyStock,
  canShipmentPage,
  orderSpecialNeed,
lanbaoming's avatar
lanbaoming committed
486 487 488
  exportCanShipment,
  setNotCanShipment,
  setCanNotShipment,
lanbaoming's avatar
lanbaoming committed
489
} from "@/api/ecw/order";
lanbaoming's avatar
lanbaoming committed
490 491 492 493
import PrintTag from "./components/PrintTag";
import PrintWarehouseReceipt from "./components/PrintWarehouseReceipt";
import PrintLadingBill from "./components/PrintLadingBill";
import BatchPickup from "./components/BatchPickup";
lanbaoming's avatar
lanbaoming committed
494
import withdrawal from "@/views/ecw/order/withdrawal";
lanbaoming's avatar
lanbaoming committed
495
import UserSelector from "@/components/UserSelector";
lanbaoming's avatar
lanbaoming committed
496 497
import BatchSingleApplication from "@/views/ecw/order/batchSingleApplication";
import FeeApplication from "@/views/ecw/order/feeApplication";
lanbaoming's avatar
lanbaoming committed
498 499 500
import MergeLog from "@/views/ecw/order/components/MergeLog";
import PickupLog from "./components/PickupLog";
import { getWarehouseList } from "@/api/ecw/warehouse";
lanbaoming's avatar
lanbaoming committed
501 502
import { getCurrencyPage } from "@/api/ecw/currency";
import SplitRevoke from "@/views/ecw/order/components/SplitRevoke";
lanbaoming's avatar
lanbaoming committed
503
import { getChannelList } from "@/api/ecw/channel";
lanbaoming's avatar
lanbaoming committed
504
import Template from "@/views/cms/template/index.vue";
余金瑶's avatar
余金瑶 committed
505
import {getRegionList} from "@/api/ecw/order"
lanbaoming's avatar
lanbaoming committed
506 507 508 509 510 511 512 513 514 515
export default {
  name: "EcwOrderStockinglist",
  components: {
    Template,
    UserSelector,
    FeeApplication,
    BatchSingleApplication,
    MergeLog,
    PickupLog,
    SplitRevoke,
lanbaoming's avatar
lanbaoming committed
516 517 518 519 520 521 522 523 524
    CustomerSelector,
    ProductSelector,
    Selector,
    specialNeeds,
    PrintTag,
    PrintWarehouseReceipt,
    PrintLadingBill,
    BatchPickup,
    withdrawal,
lanbaoming's avatar
lanbaoming committed
525 526 527
  },
  data() {
    return {
余金瑶's avatar
余金瑶 committed
528
      // 显示搜索条件
529
      showSearch: false,
lanbaoming's avatar
lanbaoming committed
530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547
      // 导出中状态
      exporting: false,
      // 选中数组
      ids: [],
      // 非单个禁用
      single: true,
      // 非多个禁用
      multiple: true,
      // 遮罩层
      loading: true,
      // 总条数
      total: 0,
      // 订单列表
      list: [],

      // 查询参数
      queryParams: {
        page: 1,
lanbaoming's avatar
lanbaoming committed
548
        rows: 10,
lanbaoming's avatar
lanbaoming committed
549
      },
lanbaoming's avatar
lanbaoming committed
550 551 552 553 554
      warehouseList: [],
      productAttrList: [], // 商品属性
      molecule: "", //重货比分子
      denominator: "", //重货比分母
      dateFilterType: "", //日期筛选类别
lanbaoming's avatar
lanbaoming committed
555 556 557
      dateFilter: [], //筛选日期

      printTagOrderId: null, // 显示打印标签的订单ID
lanbaoming's avatar
lanbaoming committed
558 559
      isShow: false, //特殊显示
      multipleSelection: [],
lanbaoming's avatar
lanbaoming committed
560 561 562 563
      params: {
        page: 1,
        rows: 20,
      },
lanbaoming's avatar
lanbaoming committed
564 565
      currencyList: [],
      channelList: [],
余金瑶's avatar
余金瑶 committed
566 567 568 569 570 571
      AddressProvince: [],
      AddressCity: [],
      AddressTown: [],
      destCountryId: null,
      objectiveId: null,
      destWarehouseId: null,
lanbaoming's avatar
lanbaoming committed
572 573
    };
  },
lanbaoming's avatar
lanbaoming committed
574 575 576 577
  watch: {
    isChinese() {
      this.getList();
    },
余金瑶's avatar
余金瑶 committed
578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647
    destCountryId: {
      //监听当前地区值的变化,于与上方地区值进行了双向绑定
      deep: true, //深度监听
      handler() {
        //每当值省份值改变时其下地区值进行清空
        this.AddressCity = [];
        this.AddressTown = [];
        this.objectiveId = "";
        this.destWarehouseId = "";
        this.findByprovinceCode();
        if (this.destCountryId == "") {
          this.getAddressCity()
          this.getAddressTown()
        } else if (
          this.destCountryId != "" &&
          this.objectiveId == "" &&
          this.destWarehouseId == ""
        ) {
          this.getAddressTown()
        }
      },
    },
    objectiveId: {
      deep: true, //深度监听
      handler() {
        this.AddressTown = [];
        this.destWarehouseId = "";
        this.findBycityCode();

        if (
          this.objectiveId != "" &&
          this.destCountryId != "" &&
          this.destWarehouseId == ""
        ) {
          //获取当前城市值id,获取该城市下区域
        } else if (
          this.destCountryId == "" &&
          this.objectiveId == "" &&
          this.destWarehouseId == ""
        ) {
          this.getAddressTown()
        } else if (
          this.destCountryId != "" &&
          this.objectiveId == "" &&
          this.destWarehouseId == ""
        ) {
          this.findByprovinceCode();
          this.getAddressTown()
        }
      },
    },
    destWarehouseId: {
      deep: true, //深度监听
      handler() {
        if (
          this.objectiveId != "" &&
          this.destCountryId != "" &&
          this.destWarehouseId == ""
        ) {
          //获取当前城市值id,获取该城市下区域
          this.findBycityCode();
        } else if (
          this.destCountryId != "" &&
          this.objectiveId == "" &&
          this.destWarehouseId == ""
        ) {
          this.getAddressTown()
        }
      },
    },
lanbaoming's avatar
lanbaoming committed
648 649
  },
  computed: {
lanbaoming's avatar
lanbaoming committed
650 651
    isChinese() {
      return this.$i18n.locale === "zh_CN";
lanbaoming's avatar
lanbaoming committed
652
    },
lanbaoming's avatar
lanbaoming committed
653
    exportWarehouseList() {
lanbaoming's avatar
lanbaoming committed
654
      /* tradeType 1 进口,2出口,3进出口 */
lanbaoming's avatar
lanbaoming committed
655 656 657
      return this.warehouseList.filter(
        (item) => item.tradeType == 2 || item.tradeType == 3
      );
lanbaoming's avatar
lanbaoming committed
658
    },
lanbaoming's avatar
lanbaoming committed
659 660 661 662
    importWarehouseList() {
      return this.warehouseList.filter(
        (item) => item.tradeType == 1 || item.tradeType == 3
      );
lanbaoming's avatar
lanbaoming committed
663
    },
lanbaoming's avatar
lanbaoming committed
664 665 666 667 668 669
    combinedQueryParams() {
      let timeParams = {};
      if (this.dateFilterType && this.dateFilter) {
        timeParams["begin" + this.dateFilterType] = this.dateFilter[0];
        timeParams["end" + this.dateFilterType] = this.dateFilter[1];
      }
余金瑶's avatar
余金瑶 committed
670 671 672 673 674 675 676 677 678 679 680 681 682 683
      let queryParams = {}
      //目的国
      if (this.destCountryId != null && this.destCountryId != "") {
        queryParams.destCountryIds = this.destCountryId;
      }
      //目的城市
      if (this.objectiveId != null && this.objectiveId != "") {
        queryParams.objectiveIds = this.objectiveId;
      }
      //目的仓
      if (this.destWarehouseId != null && this.destWarehouseId != "") {
        queryParams.destWarehouseIds = this.destWarehouseId;
      }
      return Object.assign({}, this.queryParams, timeParams, queryParams)
lanbaoming's avatar
lanbaoming committed
684 685
    },
  },
lanbaoming's avatar
lanbaoming committed
686 687
  activated() {
    this.getList();
lanbaoming's avatar
lanbaoming committed
688 689 690
  },
  created() {
    this.getList();
lanbaoming's avatar
lanbaoming committed
691 692
    getProductAttrList().then((res) => (this.productAttrList = res.data));
    getWarehouseList().then((res) => (this.warehouseList = res.data));
lanbaoming's avatar
lanbaoming committed
693

lanbaoming's avatar
lanbaoming committed
694 695 696 697
    getCurrencyPage(this.params).then(
      (res) => (this.currencyList = res.data.list)
    );
    getChannelList().then((res) => (this.channelList = res.data));
余金瑶's avatar
余金瑶 committed
698 699 700
    this.getAddressProvince()
    this.getAddressCity()
    this.getAddressTown()
lanbaoming's avatar
lanbaoming committed
701 702 703 704 705
  },
  methods: {
    /** 查询列表 */
    getList() {
      this.loading = true;
lanbaoming's avatar
lanbaoming committed
706 707 708
      const query = { ...this.combinedQueryParams };
      if (query.packageTypeArr && query.packageTypeArr.length) {
        query.packageType = query.packageTypeArr.join(",");
lanbaoming's avatar
lanbaoming committed
709 710
      }
      // 执行查询
lanbaoming's avatar
lanbaoming committed
711
      canShipmentPage(query).then((response) => {
lanbaoming's avatar
lanbaoming committed
712
        // 部分情况下,订单后面的操作下拉菜单会显示按钮,但是下来没有选项,在elTable组件更新的时候会导致渲染错误,所以要在更新渲染前清空一次list让table彻底重新渲染,避免部分更新导致异常
lanbaoming's avatar
lanbaoming committed
713
        this.list = [];
lanbaoming's avatar
lanbaoming committed
714
        this.$nextTick(() => {
lanbaoming's avatar
lanbaoming committed
715 716
          this.list = response.data.list;
        });
lanbaoming's avatar
lanbaoming committed
717 718 719 720 721 722 723
        this.total = response.data.total;
        this.loading = false;
      });
    },
    /** 搜索按钮操作 */
    handleQuery() {
      this.queryParams.page = 1;
lanbaoming's avatar
lanbaoming committed
724
      this.$nextTick(this.getList);
lanbaoming's avatar
lanbaoming committed
725 726 727 728 729
    },
    /** 重置按钮操作 */
    resetQuery() {
      this.queryParams = {
        page: 1,
lanbaoming's avatar
lanbaoming committed
730 731
        rows: 10,
      };
732 733 734 735 736 737
      this.dateFilter = []
      this.destCountryId = null
      this.destWarehouseId = null
      this.objectiveId = null

      this.queryParams.channelIds = null
lanbaoming's avatar
lanbaoming committed
738 739 740 741
      this.handleQuery();
    },
    /** 新增按钮操作 */
    handleAdd() {
lanbaoming's avatar
lanbaoming committed
742
      this.$router.push("create");
lanbaoming's avatar
lanbaoming committed
743 744 745
    },
    /** 修改按钮操作 */
    handleUpdate(row) {
lanbaoming's avatar
lanbaoming committed
746
      this.$router.push("edit?id=" + row.orderId);
lanbaoming's avatar
lanbaoming committed
747 748 749
    },
    // 表格多选
    handleSelectionChange(selection) {
lanbaoming's avatar
lanbaoming committed
750 751 752 753
      this.multipleSelection = selection;
      this.ids = selection.map((item) => item.orderId);
      this.single = selection.length !== 1;
      this.multiple = !selection.length;
lanbaoming's avatar
lanbaoming committed
754 755
    },
    // 导出
lanbaoming's avatar
lanbaoming committed
756 757 758 759 760 761 762 763 764 765 766 767 768 769 770
    exportXls(params) {
      this.exporting = true;
      const exportParams = Array.isArray(params)
        ? { orderIdList: params }
        : { ...params };
      exportCanShipment(exportParams)
        .then((res) => {
          // this.$download.excel(res, this.$t('备货订单') + '.xls');
          this.$message.success(
            this.$t("已加入导出队列,请稍后在下载日志中下载")
          );
        })
        .finally(() => {
          this.exporting = false;
        });
lanbaoming's avatar
lanbaoming committed
771 772
    },
    // 特需标识处理
lanbaoming's avatar
lanbaoming committed
773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788
    specialRendering(val) {
      console.log("val", val);
      if (val !== undefined) {
        let i = val.split(",");
        return this.getDictDatas(this.DICT_TYPE.ORDER_SPECIAL_NEEDS)
          .filter((e) => {
            return i.indexOf(e.value) > -1;
          })
          .map((item) => {
            // 打字开头的用最后一个字,否则取第一个字
            item.symbol =
              item.label[0] == ""
                ? item.label[item.label.length - 1]
                : item.label[0];
            return item;
          });
lanbaoming's avatar
lanbaoming committed
789 790 791
      }
    },
    // 删除特需
lanbaoming's avatar
lanbaoming committed
792 793 794 795 796 797 798 799
    deleteSpecial(id, orderId) {
      this.$confirm(this.$t("确定删除此特需么?"))
        .then(() => {
          return orderSpecialNeed({ orderId: orderId, advanceType: id });
        })
        .then(() => {
          this.getList();
        });
lanbaoming's avatar
lanbaoming committed
800 801
    },
    // 设置空运订单不可出
lanbaoming's avatar
lanbaoming committed
802 803 804 805 806 807 808 809 810
    async setCanNotShipment(order) {
      await this.$confirm(
        this.$t("确定设置订单{orderNo}不可出么?", { orderNo: order.orderNo })
      );
      setCanNotShipment(order.orderId).then((res) => {
        this.$message(this.$t("操作成功"));
        this.getList();
      });
    },
余金瑶's avatar
余金瑶 committed
811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840
    getAddressProvince() {
      getRegionList(1, 1).then(({ data }) => {
        this.AddressProvince = data;
      })
    },
    getAddressCity() {
      getRegionList(4, 4).then(({ data }) => {
        this.AddressCity = data;
      })
    },
    getAddressTown() {
      getRegionList(5, 5).then(({ data }) => {
        this.AddressTown = data;
      })
    },
    findByprovinceCode() {
      if (this.destCountryId != null && this.destCountryId != '') {
        //获取当前省份值id,获取该省份下城市 destCountryId provinceCode
        getRegionList(2, this.destCountryId).then(({ data }) => {
          this.AddressCity = data;
        })
      }
    },
    findBycityCode() {
      if (this.objectiveId != null && this.objectiveId != '') {
        //获取当前城市值id,获取该城市下区域
        getRegionList(3, this.objectiveId).then(({ data }) => {
          this.AddressTown = data;
        })
      }
841 842 843
    },
    replaceSpace(obj, field){
      obj[field] = obj[field].replace(/\s+/g, '');
余金瑶's avatar
余金瑶 committed
844
    }
lanbaoming's avatar
lanbaoming committed
845
  },
lanbaoming's avatar
lanbaoming committed
846 847 848
};
</script>
<style lang="scss" scoped>
lanbaoming's avatar
lanbaoming committed
849 850 851 852 853
::v-deep .actions {
  .el-dropdown {
    margin-right: 10px;
    &:last-child {
      margin-right: 0;
lanbaoming's avatar
lanbaoming committed
854
    }
lanbaoming's avatar
lanbaoming committed
855
  }
lanbaoming's avatar
lanbaoming committed
856 857
}
</style>