index.vue 21.1 KB
Newer Older
lanbaoming's avatar
lanbaoming committed
1 2 3 4 5 6
<template>
  <div class="app-container">
    <h2>{{ title }}-{{ order.orderNo }}</h2>

    <order-base-info :order="order"></order-base-info>

lanbaoming's avatar
lanbaoming committed
7 8 9 10 11 12 13 14 15 16 17 18 19
    <div style="margin-top: 20px; display: none">
      <span
        >{{ $t("储位") }}{{
          ($refs.area ? $refs.area.selected : []).join(",")
        }}</span
      >
      <el-button
        type="primary"
        size="mini"
        @click="areaVisible = true"
        style="margin-left: 15px"
        >{{ $t("选择") }}</el-button
      >
lanbaoming's avatar
lanbaoming committed
20 21
    </div>

lanbaoming's avatar
lanbaoming committed
22
    <h2>{{ $t("货物信息") }}</h2>
lanbaoming's avatar
lanbaoming committed
23
    <el-table
lanbaoming's avatar
lanbaoming committed
24 25 26 27 28 29
      v-if="
        order.orderItemVOList &&
        order.orderItemVOList.length > 0 &&
        orderItemList &&
        orderItemList.length > 0
      "
lanbaoming's avatar
lanbaoming committed
30
      :data="order.orderItemVOList || []"
lanbaoming's avatar
lanbaoming committed
31 32 33
      style="width: 100%"
    >
      <el-table-column type="index" width="50" :label="$t('序号')">
lanbaoming's avatar
lanbaoming committed
34
      </el-table-column>
lanbaoming's avatar
lanbaoming committed
35 36 37
      <el-table-column prop="prodTitleZh" :label="$t('品名')">
        <template v-slot="{ row }">
          {{ row.prodTitleZh }}<br />
lanbaoming's avatar
lanbaoming committed
38 39 40
          {{ row.prodTitleEn }}
        </template>
      </el-table-column>
lanbaoming's avatar
lanbaoming committed
41 42 43
      <el-table-column :label="$t('填单货物属性')">
        <template v-slot="{ row }">
          <span v-if="row.isWarehouseInAdd">{{ $t("非填单货物信息") }}</span>
lanbaoming's avatar
lanbaoming committed
44
          <template v-else>
lanbaoming's avatar
lanbaoming committed
45 46 47 48 49 50
            {{ $t("品牌") }}{{
              [$t("无牌"), $t("有牌"), $t("中性")][row.brandType]
            }}<br />
            {{ $t("箱数") }}{{ row.num }}<br />
            {{ $t("体积") }}{{ row.volume }}<br />
            {{ $t("重量") }}{{ row.weight }}Kg
lanbaoming's avatar
lanbaoming committed
51 52 53
          </template>
        </template>
      </el-table-column>
lanbaoming's avatar
lanbaoming committed
54 55
      <el-table-column :label="$t('入库货物属性')">
        <template v-slot="{ row }">
lanbaoming's avatar
lanbaoming committed
56
          <template v-if="row.warehouseInInfoVO">
lanbaoming's avatar
lanbaoming committed
57 58 59 60
            {{ $t("品牌") }}{{ row.brandName }}<br />
            {{ $t("箱数") }}{{ row.warehouseInInfoVO.cartonsNum }}<br />
            {{ $t("体积") }}{{ row.warehouseInInfoVO.volume }}<br />
            {{ $t("重量") }}{{ row.warehouseInInfoVO.weight }}Kg
lanbaoming's avatar
lanbaoming committed
61
          </template>
lanbaoming's avatar
lanbaoming committed
62
          <span v-else>{{ $t("暂无入仓信息") }}</span>
lanbaoming's avatar
lanbaoming committed
63 64 65 66
        </template>
      </el-table-column>
      <el-table-column
        prop="expressNo"
lanbaoming's avatar
lanbaoming committed
67 68 69 70 71 72 73
        v-slot="{ row }"
        :label="$t('快递单号')"
      >
        {{
          row.expressNo ||
          (row.warehouseInInfoVO ? row.warehouseInInfoVO.expressNo : "")
        }}
lanbaoming's avatar
lanbaoming committed
74
      </el-table-column>
lanbaoming's avatar
lanbaoming committed
75 76
      <el-table-column prop="createTime" :label="$t('最后操作时间')">
        <template v-slot="{ row }">
lanbaoming's avatar
lanbaoming committed
77 78 79
          {{ parseTime(row.updateTime) }}
        </template>
      </el-table-column>
lanbaoming's avatar
lanbaoming committed
80
      <el-table-column prop="diffType" v-slot="{ row }" :label="$t('状态')">
lanbaoming's avatar
lanbaoming committed
81 82 83 84 85
        <dict-tag
          v-if="row.warehouseInInfoVO && row.warehouseInInfoVO.diffType"
          :type="DICT_TYPE.ORDER_WAREHOUSE_IN_STATUS"
          :value="row.warehouseInInfoVO.diffType"
          class="red"
lanbaoming's avatar
lanbaoming committed
86
          :class="{ green: row.warehouseInInfoVO.diffType === 4 }"
lanbaoming's avatar
lanbaoming committed
87
        />
lanbaoming's avatar
lanbaoming committed
88 89 90 91 92 93 94 95
        <span :class="{ red: row.itemStatus === 3 }" v-else>{{
          row.itemStatus === 3 ? $t("少了") + row.num + $t("箱") : $t("待入仓")
        }}</span>
        <span
          class="red"
          v-if="row.warehouseInInfoVO && row.warehouseInInfoVO.cartonsNumDiff"
          >{{ row.warehouseInInfoVO.cartonsNumDiff }}{{ $t("箱") }}</span
        >
lanbaoming's avatar
lanbaoming committed
96
      </el-table-column>
lanbaoming's avatar
lanbaoming committed
97
      <el-table-column prop="address" :label="$t('操作')">
lanbaoming's avatar
lanbaoming committed
98 99 100 101 102 103 104 105
        <template v-slot="{ row, column, $index }">
          <warehouse
            v-if="isEdit"
            :edit="true"
            :order-item-a="order.orderItemVOList[$index]"
            :order-item-b="orderItemList[$index]"
            :title="$t('修改')"
            :order="order"
106
            :is-shipment="isShipment"
lanbaoming's avatar
lanbaoming committed
107 108 109 110 111 112 113 114 115 116 117
            @close="getList"
          ></warehouse>
          <template
            v-else-if="
              wareItem(row.orderItemId) &&
              wareItem(row.orderItemId).orderWarehouseInBackItemDoList &&
              wareItem(row.orderItemId).orderWarehouseInBackItemDoList.length >
                0
            "
          >
            <!--            <template v-if="!order.parentOrderId">-->
lanbaoming's avatar
lanbaoming committed
118 119 120 121 122 123
            <warehouse
              v-if="!isEdit"
              :order-item-a="order.orderItemVOList[$index]"
              :order-item-b="orderItemList[$index]"
              :title="$t('追加')"
              :order="order"
124
              :is-shipment="isShipment"
lanbaoming's avatar
lanbaoming committed
125 126 127
              @close="getList"
            ></warehouse>
            <el-button
128
              v-if="!isShipment"
lanbaoming's avatar
lanbaoming committed
129 130 131 132 133 134
              size="mini"
              type="text"
              @click="handleWarehousingReturn(row)"
              >{{ $t("退仓") }}</el-button
            >
            <!--            </template>-->
lanbaoming's avatar
lanbaoming committed
135 136 137 138 139 140 141
          </template>
          <warehouse
            v-else
            :order-item-a="order.orderItemVOList[$index]"
            :order-item-b="orderItemList[$index]"
            :title="$t('入仓')"
            :order="order"
lanbaoming's avatar
lanbaoming committed
142 143
            @close="getList"
          ></warehouse>
lanbaoming's avatar
lanbaoming committed
144 145 146 147 148 149
        </template>
      </el-table-column>
    </el-table>

    <el-card v-if="order.parentOrderId" style="margin-top: 20px">
      <div slot="header" class="clearfix">
lanbaoming's avatar
lanbaoming committed
150
        <span style="font-size: 18px">{{ $t("标签箱号") }}</span>
lanbaoming's avatar
lanbaoming committed
151 152
      </div>

lanbaoming's avatar
lanbaoming committed
153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178
      <div
        v-for="(item, index) in label.orderLabelDtoList"
        :key="index"
        style="margin-bottom: 10px"
      >
        <el-input-number
          v-model="item.start"
          controls-position="right"
        ></el-input-number>
        -
        <el-input-number
          v-model="item.end"
          controls-position="right"
        ></el-input-number>
        <el-button
          icon="el-icon-minus"
          circle
          v-show="index !== 0"
          @click="label.orderLabelDtoList.splice(index, 1)"
          style="margin-left: 10px"
        ></el-button>
        <el-button
          icon="el-icon-plus"
          circle
          @click="handleLabelAdd(index)"
        ></el-button>
lanbaoming's avatar
lanbaoming committed
179 180
      </div>
      <div style="text-align: center">
lanbaoming's avatar
lanbaoming committed
181 182 183
        <el-button type="primary" @click="handleLabelSubmit">{{
          $t("修改箱号")
        }}</el-button>
lanbaoming's avatar
lanbaoming committed
184 185 186
      </div>
    </el-card>

lanbaoming's avatar
lanbaoming committed
187
    <h2 v-if="orderSpecialNeeds.length > 0">{{ $t("特殊需求") }}</h2>
lanbaoming's avatar
lanbaoming committed
188
    <el-form ref="form" :model="form" label-width="200px">
lanbaoming's avatar
lanbaoming committed
189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214
      <el-form-item
        :label="$i18n.locale === 'en_US' ? item.labelEn : item.label"
        v-for="(item, index) in orderSpecialNeeds"
        :key="item.value"
        style="width: 600px"
      >
        <el-input-number
          v-model="
            form.orderSpecialNeedReceivableReqVoList[index].receivableMoney
          "
          type="number"
          :min="0"
          step-strictly
          :placeholder="
            $t('请输入') +
            ($i18n.locale === 'en_US' ? item.labelEn : item.label)
          "
        ></el-input-number>
        <el-select
          v-model="
            form.orderSpecialNeedReceivableReqVoList[index]
              .receivableMoneyCurrency
          "
          :placeholder="$t('请选择')"
          style="width: 100px"
        >
lanbaoming's avatar
lanbaoming committed
215 216 217 218
          <el-option
            v-for="item in currencyList"
            :key="item.id"
            :label="$i18n.locale === 'en_US' ? item.titleEn : item.titleZh"
lanbaoming's avatar
lanbaoming committed
219 220
            :value="item.id"
          >
lanbaoming's avatar
lanbaoming committed
221 222 223 224
          </el-option>
        </el-select>
      </el-form-item>

lanbaoming's avatar
lanbaoming committed
225
      <h2>{{ $t("订单数据") }}</h2>
lanbaoming's avatar
lanbaoming committed
226
      <el-form-item :label="$t('总方数')" style="width: 380px">
lanbaoming's avatar
lanbaoming committed
227 228 229 230 231
        <el-input
          v-model="form.sumVolume"
          :placeholder="$t('请输入总方数')"
          readonly
        >
lanbaoming's avatar
lanbaoming committed
232 233 234 235
          <span slot="append"></span>
        </el-input>
      </el-form-item>
      <el-form-item :label="$t('总重量')" style="width: 380px">
lanbaoming's avatar
lanbaoming committed
236 237 238 239 240
        <el-input
          v-model="form.sumWeight"
          :placeholder="$t('请输入总重量')"
          readonly
        >
lanbaoming's avatar
lanbaoming committed
241 242 243 244
          <span slot="append">kg</span>
        </el-input>
      </el-form-item>

lanbaoming's avatar
lanbaoming committed
245
      <el-card style="margin-top: 15px">
lanbaoming's avatar
lanbaoming committed
246
        <div slot="header" class="clearfix">
lanbaoming's avatar
lanbaoming committed
247
          <span style="font-size: 18px">{{ $t("入仓影像") }}</span>
lanbaoming's avatar
lanbaoming committed
248 249
        </div>
        <div>
lanbaoming's avatar
lanbaoming committed
250 251 252 253 254 255
          <image-and-video-upload
            readonly
            :fileSize="50"
            :isShowTip="true"
            :value="form.urls"
          ></image-and-video-upload>
lanbaoming's avatar
lanbaoming committed
256 257
        </div>
      </el-card>
lanbaoming's avatar
lanbaoming committed
258 259
      <div
        style="text-align: center; margin-top: 15px"
260
        v-if="!(order.status !== 3 && isEdit) && !isShipment"
lanbaoming's avatar
lanbaoming committed
261 262 263 264 265 266 267
      >
        <el-button @click="escapeBol = true" type="primary">{{
          $t("转异")
        }}</el-button>
        <el-button type="primary" @click="finishVisible = true">{{
          $t("完成入仓")
        }}</el-button>
lanbaoming's avatar
lanbaoming committed
268 269 270
      </div>
    </el-form>

lanbaoming's avatar
lanbaoming committed
271 272 273 274 275 276 277 278
    <warehouse-area-dialog
      ref="area"
      :visible.sync="areaVisible"
      v-model="form.orderLocationCreateReqVOList"
      :order-id="orderId"
      :warehouse-id="warehouseId"
      :is-editing="isEdit"
    ></warehouse-area-dialog>
lanbaoming's avatar
lanbaoming committed
279

lanbaoming's avatar
lanbaoming committed
280
    <!--  完成入仓  -->
lanbaoming's avatar
lanbaoming committed
281 282 283
    <el-dialog
      :title="$t('确认入仓')"
      :visible.sync="finishVisible"
lanbaoming's avatar
lanbaoming committed
284 285 286 287 288 289 290 291
      width="300px"
    >
      <div style="text-align: center">{{ $t("在完成入仓前,您还可以") }}</div>
      <div style="text-align: center; padding: 15px 0">
        <!--        <el-button type="info" @click="areaVisible = true">{{$t('选择储位')}}</el-button>-->
        <el-button type="info" @click="isShowPrintTag = true">{{
          $t("打印标签")
        }}</el-button>
lanbaoming's avatar
lanbaoming committed
292 293
      </div>
      <div style="text-align: center">
lanbaoming's avatar
lanbaoming committed
294 295 296
        <el-button type="primary" @click="handleSubmit()">{{
          $t("确 定")
        }}</el-button>
lanbaoming's avatar
lanbaoming committed
297 298
      </div>
    </el-dialog>
lanbaoming's avatar
lanbaoming committed
299
    <!--转异对话框 lanbm 2024-06-19 添加注释-->
lanbaoming's avatar
lanbaoming committed
300 301 302 303 304 305 306 307 308 309 310 311
    <el-dialog
      :title="order.orderNo + $t('订单转异')"
      center
      :visible.sync="escapeBol"
    >
      <el-form
        label-position="top"
        label-width="200"
        ref="exceptionForm"
        :model="form"
        :rules="exceptionRules"
      >
lanbaoming's avatar
lanbaoming committed
312
        <el-form-item :label="$t('原因类型')" prop="manualExceptionType">
lanbaoming's avatar
lanbaoming committed
313 314 315 316 317 318
          <dict-selector
            v-model="form.manualExceptionType"
            form-type="checkbox"
            :type="DICT_TYPE.MANUAL_EXCEPTION_TYPE"
            multiple
          ></dict-selector>
lanbaoming's avatar
lanbaoming committed
319 320 321 322 323 324 325 326 327
        </el-form-item>
        <el-form-item :label="$t('附件')">
          <image-upload v-model="form.exceptionUrls"></image-upload>
        </el-form-item>
        <el-form-item :label="$t('详细信息')">
          <el-input v-model="form.descZh" type="textarea"></el-input>
        </el-form-item>
      </el-form>
      <span slot="footer" class="dialog-footer">
lanbaoming's avatar
lanbaoming committed
328 329 330 331
        <el-button type="primary" @click="handleException">{{
          $t("确认并完成入仓")
        }}</el-button>
        <el-button @click="escapeBol = false">{{ $t("取消") }}</el-button>
lanbaoming's avatar
lanbaoming committed
332 333 334
      </span>
    </el-dialog>

lanbaoming's avatar
lanbaoming committed
335 336 337 338 339
    <print-tag
      v-if="isShowPrintTag"
      :order-id="orderId"
      @close="isShowPrintTag = false"
    ></print-tag>
lanbaoming's avatar
lanbaoming committed
340

lanbaoming's avatar
lanbaoming committed
341 342 343 344 345
    <print-warehouse-receipt
      v-if="isShowPrint"
      :order-id="orderId"
      @close="isShowPrint = false"
    />
lanbaoming's avatar
lanbaoming committed
346 347 348
  </div>
</template>
<script>
lanbaoming's avatar
lanbaoming committed
349
import { getCurrencyList } from "@/api/ecw/currency";
lanbaoming's avatar
lanbaoming committed
350
import {
lanbaoming's avatar
lanbaoming committed
351 352
  getLabelByOrder,
  getLabelWaitInByOrder,
lanbaoming's avatar
lanbaoming committed
353 354
  getOrder,
  getOrderWarehouseIn,
lanbaoming's avatar
lanbaoming committed
355 356 357 358 359 360 361 362 363 364 365 366
  getSpecialListByOrderId,
  listByOrderId,
  orderWarehouseInFinish,
  orderWarehouseInUpdateLabel,
  rollbackDelete,
  warehousePictureList,
} from "@/api/ecw/order";
import orderBaseInfo from "@/components/OrderBaseInfo";
import WarehouseAreaDialog from "@/components/WarehouseAreaDialog";
import { DICT_TYPE } from "@/utils/dict";
import PrintTag from "@/views/ecw/order/components/PrintTag";
import PrintWarehouseReceipt from "@/views/ecw/order/components/PrintWarehouseReceipt";
lanbaoming's avatar
lanbaoming committed
367
import imageUpload from "@/components/ImageUpload";
lanbaoming's avatar
lanbaoming committed
368 369 370
import { parseTime } from "@/utils/ruoyi";
import ImageAndVideoUpload from "@/components/ImageAndVideoUpload";
import Warehouse from "@/views/ecw/order/warehousing/components/Warehouse";
lanbaoming's avatar
lanbaoming committed
371 372 373 374 375 376 377 378 379
export default {
  name: "Warehousing",
  components: {
    orderBaseInfo,
    WarehouseAreaDialog,
    PrintTag,
    PrintWarehouseReceipt,
    imageUpload,
    ImageAndVideoUpload,
lanbaoming's avatar
lanbaoming committed
380
    Warehouse,
lanbaoming's avatar
lanbaoming committed
381 382 383
  },

  mounted() {
lanbaoming's avatar
lanbaoming committed
384 385 386 387 388 389
    if (this.$route.query.id) {
      this.orderId = parseInt(this.$route.query.id || undefined);
      this.getOrderItemList();
      getSpecialListByOrderId(this.orderId).then(
        (r) => (this.specialList = r.data)
      );
lanbaoming's avatar
lanbaoming committed
390 391 392

      Promise.all([
        this.getOrder(),
lanbaoming's avatar
lanbaoming committed
393 394 395
        listByOrderId({ orderId: this.orderId }).then((r) => {
          this.form.orderLocationCreateReqVOList = r.data;
        }),
lanbaoming's avatar
lanbaoming committed
396 397 398
      ]).then(() => {
        // 等待仓库id和已选的储位后初始化储位信息
        this.$nextTick(() => {
lanbaoming's avatar
lanbaoming committed
399 400 401
          this.$refs.area.updateArea();
        });
      });
lanbaoming's avatar
lanbaoming committed
402
    }
lanbaoming's avatar
lanbaoming committed
403
    getCurrencyList().then((res) => (this.currencyList = res.data));
lanbaoming's avatar
lanbaoming committed
404 405 406 407 408 409 410 411 412 413 414 415
  },

  data() {
    return {
      parseTime,
      DICT_TYPE,
      areaVisible: false,
      finishVisible: false,
      warehousingVisible: false,
      form: {
        orderSpecialNeedReceivableReqVoList: [],
        orderLocationCreateReqVOList: [],
lanbaoming's avatar
lanbaoming committed
416 417 418
        exceptionUrls: [],
        descZh: "",
        manualExceptionType: [],
lanbaoming's avatar
lanbaoming committed
419
        urls: [],
lanbaoming's avatar
lanbaoming committed
420 421
        sumVolume: "",
        sumWeight: "",
lanbaoming's avatar
lanbaoming committed
422
      },
lanbaoming's avatar
lanbaoming committed
423
      currencyList: [],
lanbaoming's avatar
lanbaoming committed
424 425 426 427 428 429 430
      order: {},
      orderId: undefined,
      orderItemList: [],
      specialList: [],
      warehousing: undefined,
      isShowPrintTag: false,
      isShowPrint: false,
lanbaoming's avatar
lanbaoming committed
431
      escapeBol: false,
lanbaoming's avatar
lanbaoming committed
432 433

      label: {
lanbaoming's avatar
lanbaoming committed
434 435
        orderId: 0,
        orderLabelDtoList: [
lanbaoming's avatar
lanbaoming committed
436
          {
lanbaoming's avatar
lanbaoming committed
437 438 439 440
            end: 0,
            start: 0,
          },
        ],
lanbaoming's avatar
lanbaoming committed
441 442 443
      },
      exceptionRules: {
        manualExceptionType: [
lanbaoming's avatar
lanbaoming committed
444
          { required: true, message: "请勾选原因类型", trigger: "change" },
lanbaoming's avatar
lanbaoming committed
445 446 447
          {
            validator: (rule, value, callback) => {
              if (value.length <= 0) {
lanbaoming's avatar
lanbaoming committed
448
                callback(new Error("请勾选原因类型"));
lanbaoming's avatar
lanbaoming committed
449
              }
lanbaoming's avatar
lanbaoming committed
450 451 452 453 454 455 456
              callback();
            },
            trigger: "change",
          },
        ],
      },
    };
lanbaoming's avatar
lanbaoming committed
457 458 459
  },

  methods: {
lanbaoming's avatar
lanbaoming committed
460 461 462 463 464
    getOrderItemList() {
      this.orderItemList = [];
      return getOrderWarehouseIn(this.orderId).then(
        (r) => (this.orderItemList = r.data)
      );
lanbaoming's avatar
lanbaoming committed
465
    },
lanbaoming's avatar
lanbaoming committed
466 467 468
    getList() {
      this.getOrder();
      this.getOrderItemList();
lanbaoming's avatar
lanbaoming committed
469
    },
lanbaoming's avatar
lanbaoming committed
470
    getWarehousePictureList() {
lanbaoming's avatar
lanbaoming committed
471 472
      return warehousePictureList({
        bizId: this.order.orderId,
lanbaoming's avatar
lanbaoming committed
473 474 475 476
        type: 1,
      }).then((r) => {
        this.form.urls = r.data.map((i) => i.url);
      });
lanbaoming's avatar
lanbaoming committed
477
    },
lanbaoming's avatar
lanbaoming committed
478
    include() {
lanbaoming's avatar
lanbaoming committed
479
      return (state, arr) => {
lanbaoming's avatar
lanbaoming committed
480 481
        return arr.indexOf(state) > -1;
      };
lanbaoming's avatar
lanbaoming committed
482
    },
lanbaoming's avatar
lanbaoming committed
483
    exclude() {
lanbaoming's avatar
lanbaoming committed
484
      return (state, arr) => {
lanbaoming's avatar
lanbaoming committed
485 486
        return arr.indexOf(state) == -1;
      };
lanbaoming's avatar
lanbaoming committed
487
    },
lanbaoming's avatar
lanbaoming committed
488
    handleLabelSubmit() {
lanbaoming's avatar
lanbaoming committed
489 490
      orderWarehouseInUpdateLabel({
        ...this.label,
lanbaoming's avatar
lanbaoming committed
491 492 493 494
        orderId: this.orderId,
      }).then((r) => {
        if (r.code === 0) {
          this.$message.success(r.msg || this.$t("修改标签箱号成功"));
lanbaoming's avatar
lanbaoming committed
495
        }
lanbaoming's avatar
lanbaoming committed
496
      });
lanbaoming's avatar
lanbaoming committed
497 498 499
    },

    // 箱号标签回显
lanbaoming's avatar
lanbaoming committed
500 501 502 503
    getLabelByOrder() {
      getLabelByOrder(this.orderId).then((r) => {
        if (r.code === 0 && !!r.data && r.data.length > 0) {
          this.label.orderLabelDtoList = r.data;
lanbaoming's avatar
lanbaoming committed
504 505
        } else {
          // 没有历史数据,查默认值
lanbaoming's avatar
lanbaoming committed
506 507 508 509
          getLabelWaitInByOrder(this.orderId).then((r) => {
            console.log(r);
            if (r.code === 0 && !!r.data) {
              this.label.orderLabelDtoList = [r.data];
lanbaoming's avatar
lanbaoming committed
510
            }
lanbaoming's avatar
lanbaoming committed
511
          });
lanbaoming's avatar
lanbaoming committed
512
        }
lanbaoming's avatar
lanbaoming committed
513
      });
lanbaoming's avatar
lanbaoming committed
514
    },
lanbaoming's avatar
lanbaoming committed
515
    handleLabelAdd(index) {
lanbaoming's avatar
lanbaoming committed
516
      this.label.orderLabelDtoList.splice(index + 1, 0, {
lanbaoming's avatar
lanbaoming committed
517 518 519
        end: "",
        start: "",
      });
lanbaoming's avatar
lanbaoming committed
520
    },
lanbaoming's avatar
lanbaoming committed
521
    getTowSum() {
lanbaoming's avatar
lanbaoming committed
522 523 524 525 526 527
      // let sumVolume = 0
      // let sumWeight = 0
      // this.order.orderItemVOList.forEach(e => {
      //   if (e?.warehouseInInfoVO?.volume) sumVolume += e.warehouseInInfoVO.volume
      //   if (e?.warehouseInInfoVO?.weight) sumWeight += e.warehouseInInfoVO.weight
      // })
lanbaoming's avatar
lanbaoming committed
528 529
      this.form.sumVolume = this.order.sumVolume; // || sumVolume
      this.form.sumWeight = this.order.sumWeight; // || sumWeight
lanbaoming's avatar
lanbaoming committed
530
    },
lanbaoming's avatar
lanbaoming committed
531 532 533 534 535 536 537 538 539 540
    getOrder() {
      return getOrder(this.orderId)
        .then((r) => {
          this.order = r.data;
          this.getTowSum();
        })
        .then(() => {
          this.getLabelByOrder();
          this.getWarehousePictureList();
        });
lanbaoming's avatar
lanbaoming committed
541
    },
lanbaoming's avatar
lanbaoming committed
542 543 544 545 546
    specialHas0() {
      let result = false;
      this.form.orderSpecialNeedReceivableReqVoList.forEach((e) => {
        if (e.receivableMoney === "0" || e.receivableMoney === "") {
          result = true;
lanbaoming's avatar
lanbaoming committed
547
        }
lanbaoming's avatar
lanbaoming committed
548 549
      });
      return result;
lanbaoming's avatar
lanbaoming committed
550 551 552 553
    },
    handleException() {
      this.$refs.exceptionForm.validate((valid) => {
        if (valid) {
lanbaoming's avatar
lanbaoming committed
554
          this.handleSubmit();
lanbaoming's avatar
lanbaoming committed
555
        } else {
lanbaoming's avatar
lanbaoming committed
556
          this.$message.warning("请勾选原因类型");
lanbaoming's avatar
lanbaoming committed
557
        }
lanbaoming's avatar
lanbaoming committed
558
      });
lanbaoming's avatar
lanbaoming committed
559 560 561
    },
    async handleSubmit() {
      if (this.specialHas0()) {
lanbaoming's avatar
lanbaoming committed
562 563 564 565 566 567 568 569 570 571 572
        const confirm = await this.$confirm(
          this.$t("有特需费用为0或未填写,请问是否继续?"),
          this.$t("注意"),
          {
            confirmButtonText: this.$t("继续"),
            cancelButtonText: this.$t("取消"),
            type: "warning",
          }
        );
        if (confirm !== "confirm") {
          return;
lanbaoming's avatar
lanbaoming committed
573 574 575
        }
      }
      let form = {
lanbaoming's avatar
lanbaoming committed
576 577 578 579
        orderSpecialNeedReceivableReqVoList:
          this.form.orderSpecialNeedReceivableReqVoList,
        orderLocationCreateReqVOList: this.form.orderLocationCreateReqVOList,
        orderId: this.order.orderId,
lanbaoming's avatar
lanbaoming committed
580 581 582
        // urls: this.form.urls,
        sumVolume: this.form.sumVolume,
        sumWeight: this.form.sumWeight,
lanbaoming's avatar
lanbaoming committed
583 584
        isAppend: this.isAdd,
      };
lanbaoming's avatar
lanbaoming committed
585 586 587

      // 标签箱号
      if (this.order.parentOrderId) {
lanbaoming's avatar
lanbaoming committed
588
        form.labelList = this.label.orderLabelDtoList || [];
lanbaoming's avatar
lanbaoming committed
589 590 591
      }

      if (this.escapeBol) {
lanbaoming's avatar
lanbaoming committed
592 593 594 595
        form.exceptionUrls =
          this.form.exceptionUrls.length !== 0
            ? this.form.exceptionUrls?.split(",")
            : [];
lanbaoming's avatar
lanbaoming committed
596
        form.descZh = this.form.descZh;
lanbaoming's avatar
lanbaoming committed
597
        form.manualExceptionType = this.form.manualExceptionType.join(",");
lanbaoming's avatar
lanbaoming committed
598
      }
lanbaoming's avatar
lanbaoming committed
599
      orderWarehouseInFinish(form).then((r) => {
lanbaoming's avatar
lanbaoming committed
600 601
        if (r.code === 0) {
          this.escapeBol = false;
lanbaoming's avatar
lanbaoming committed
602 603 604 605 606 607 608 609 610 611
          this.finishVisible = false;
          const message = !r.data
            ? this.$t("该订单已成功入仓,是否打印?")
            : `<h3>${this.$t("货物已入仓,存在异常")}</h3>${this.$t(
                "该订单已成功入仓,是否打印?"
              )}`;
          this.$confirm(message, this.$t("货物已入仓"), {
            confirmButtonText: this.$t(""),
            cancelButtonText: this.$t(""),
            dangerouslyUseHTMLString: true,
lanbaoming's avatar
lanbaoming committed
612
          })
lanbaoming's avatar
lanbaoming committed
613 614 615 616 617 618 619 620
            .then(() => {
              this.isShowPrint = true;
            })
            .catch(() => {
              // this.$store.dispatch('tagsView/delVisitedView')
              this.$message.success(this.$t("入仓成功"));
              this.$tab.closePage();
            });
lanbaoming's avatar
lanbaoming committed
621
        }
lanbaoming's avatar
lanbaoming committed
622
      });
lanbaoming's avatar
lanbaoming committed
623
    },
lanbaoming's avatar
lanbaoming committed
624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642
    handleWarehousingReturn(item) {
      this.$confirm(
        item.prodTitleZh + this.$t("退仓后不可恢复,是否确认退仓?"),
        this.$t("确定要退仓?"),
        {
          confirmButtonText: this.$t("确定"),
          cancelButtonText: this.$t("取消"),
          type: "warning",
        }
      )
        .then(() => {
          rollbackDelete({
            orderId: item.orderId,
            orderItemId: item.orderItemId,
          }).then(() => {
            this.$message({
              type: "success",
              message: this.$t("货物退仓成功!"),
            });
lanbaoming's avatar
lanbaoming committed
643

lanbaoming's avatar
lanbaoming committed
644 645 646
            this.getOrderItemList();
            this.getOrder();
          });
lanbaoming's avatar
lanbaoming committed
647
        })
lanbaoming's avatar
lanbaoming committed
648 649
        .catch((e) => {});
    },
lanbaoming's avatar
lanbaoming committed
650 651 652
  },

  watch: {
lanbaoming's avatar
lanbaoming committed
653 654
    orderSpecialNeeds(val) {
      val.forEach((e) => {
lanbaoming's avatar
lanbaoming committed
655
        this.form.orderSpecialNeedReceivableReqVoList.push({
lanbaoming's avatar
lanbaoming committed
656 657 658 659 660 661
          id: e.id,
          receivableMoney: e.transFee || "",
          receivableMoneyCurrency: e.transCurrency || 3,
        });
      });
    },
lanbaoming's avatar
lanbaoming committed
662 663 664 665
  },

  computed: {
    // 根据orderItemId获取入仓item
lanbaoming's avatar
lanbaoming committed
666 667 668 669 670 671
    wareItem() {
      return (orderItemId) => {
        return this.orderItemList.find(
          (item) => item.orderItemId == orderItemId
        );
      };
lanbaoming's avatar
lanbaoming committed
672 673
    },
    isAdd() {
lanbaoming's avatar
lanbaoming committed
674
      return this.$route.path === "/order/warehousing-add";
lanbaoming's avatar
lanbaoming committed
675 676
    },
    isEdit() {
lanbaoming's avatar
lanbaoming committed
677
      return this.$route.path === "/order/warehousing-update";
lanbaoming's avatar
lanbaoming committed
678 679
    },
    title() {
lanbaoming's avatar
lanbaoming committed
680 681 682
      return this.$i18n.locale === "en_US"
        ? this.$route.meta.titleEn
        : this.$route.name;
lanbaoming's avatar
lanbaoming committed
683 684
    },
    orderSpecialNeedsDict() {
lanbaoming's avatar
lanbaoming committed
685
      return this.$store.state.dict.dictDatas.order_special_needs;
lanbaoming's avatar
lanbaoming committed
686
    },
lanbaoming's avatar
lanbaoming committed
687 688 689 690 691 692 693 694
    orderSpecialNeeds() {
      const result = [];
      this.specialList.forEach((e) => {
        const t = this.orderSpecialNeedsDict.find(
          (f) => f.value === e.advanceType
        );
        if (t) {
          result.push({ ...e, label: t.label, labelEn: t.labelEn });
lanbaoming's avatar
lanbaoming committed
695
        }
lanbaoming's avatar
lanbaoming committed
696 697
      });
      return result;
lanbaoming's avatar
lanbaoming committed
698
    },
lanbaoming's avatar
lanbaoming committed
699 700 701
    warehouseId() {
      return this.order?.logisticsInfoDto?.startWarehouseId;
    },
702 703 704
    isShipment(){
      return this.$route.query?.shipment==1
    }
lanbaoming's avatar
lanbaoming committed
705 706
  },
};
lanbaoming's avatar
lanbaoming committed
707 708 709 710
</script>

<style scoped lang="scss">
@import "src/assets/styles/element-variables";
lanbaoming's avatar
lanbaoming committed
711
.red {
lanbaoming's avatar
lanbaoming committed
712 713
  color: $--color-danger;
}
lanbaoming's avatar
lanbaoming committed
714
.green {
lanbaoming's avatar
lanbaoming committed
715 716 717
  color: $--color-success;
}
</style>