startPacking.vue 25.3 KB
Newer Older
huhaiqing's avatar
huhaiqing committed
1 2 3 4 5 6
<template>
  <div class="startPacking">
    <el-card>
      <el-row class="content-area">

        <!-- 左侧 -->
7 8
        <el-col :span="6" class="left-area">
          <el-row v-for="item in listData" :key="item.id" class="title-info" :class="item.id === tableData.id ? 'selected' : ''">
huhaiqing's avatar
huhaiqing committed
9
            <div @click="partClick(item)">
huhaiqing's avatar
huhaiqing committed
10 11 12
              <p>{{item.title}}</p>
            </div>
            <div>
huhaiqing's avatar
huhaiqing committed
13
              <template v-if="item.secStatistics">
huhaiqing's avatar
huhaiqing committed
14
                {{getTotlContent(item.secStatistics)}}
huhaiqing's avatar
huhaiqing committed
15
              </template>
huhaiqing's avatar
huhaiqing committed
16 17 18 19 20
            </div>
          </el-row>
        </el-col>

        <!-- 右侧 -->
21
        <el-col :span="18" class="right-area">
huhaiqing's avatar
huhaiqing committed
22 23 24

          <!-- 操作 -->
          <el-row class="table-title">
25
            <div>{{$t('当前装柜')}}:{{tableData.title}}</div>
huhaiqing's avatar
huhaiqing committed
26
            <div>
huhaiqing's avatar
huhaiqing committed
27
              <template v-if="!isUnderReview">
28 29 30 31 32
                <el-input v-model="qrCode" :placeholder="$t('请输入二维码/条码编号')" clearable></el-input>
                <el-button type="primary" @click="handlerBatchCreate('single')">{{$t('确定')}}</el-button>
                <el-button type="primary" @click="handlerClick('batchInput',$t('批量输入'))">{{$t('批量输入')}}</el-button>
                <el-button type="primary" @click="handlerClick('correction',$t('装柜纠错'))">{{$t('装柜纠错')}}</el-button>
                <el-button type="primary" @click="handlerClick('correctionOrder',$t('批量装柜纠错'))">{{$t('批量装柜纠错')}}</el-button>
huhaiqing's avatar
huhaiqing committed
33
              </template>
huhaiqing's avatar
huhaiqing committed
34 35 36 37
            </div>
          </el-row>

          <!-- 表格 -->
huhaiqing's avatar
huhaiqing committed
38
          <el-row class="table-content">
huhaiqing's avatar
huhaiqing committed
39
            <el-table :data="tableData.sectionOrderList" border max-height="500px">
huhaiqing's avatar
huhaiqing committed
40
              <el-table-column :label="$t('序号')" align="center" width="50" prop="tidanNum" />
41
              <el-table-column :label="$t('订单号')" align="center" prop="orderNo">
huhaiqing's avatar
huhaiqing committed
42
                <template slot-scope="scope">
huhaiqing's avatar
huhaiqing committed
43 44 45 46
                  <div>
                    <a href="javascript:void(0);" class="order-href" @click="orderClick(scope.row)">{{ scope.row.orderNo }}</a>
                  </div>
                  <div style="color:blue;fontWeight:bold;">
47
                    {{ scope.row.isExternalWarehouse === 1 ? '(' + $t('外部仓') + ')' : ''}}
huhaiqing's avatar
huhaiqing committed
48
                  </div>
huhaiqing's avatar
huhaiqing committed
49 50
                </template>
              </el-table-column>
51
              <el-table-column :label="$t('货物信息')" align="center" prop="goodsList">
huhaiqing's avatar
huhaiqing committed
52 53
                <template slot-scope="scope">
                  <section class="table-goodList">
54
                    <div v-for="(item, index) in scope.row.goodsList" :key="index" class="goodList-div">
55
                      <p>{{$t('品名')}}{{item.prodTitleZh}}</p>
huhaiqing's avatar
huhaiqing committed
56 57
                      <p>{{$t('品牌')}}:【<template v-if="item.brandName">{{item.brandName}}</template>
                        <dict-tag v-else :type="DICT_TYPE.ECW_IS_BRAND" :value="item.feeType" />
huhaiqing's avatar
huhaiqing committed
58
                      </p>
59
                      <p>{{$t('其他')}}:{{getTotlContent(item)}}</p>
huhaiqing's avatar
huhaiqing committed
60 61 62 63
                    </div>
                  </section>
                </template>
              </el-table-column>
64 65
              <el-table-column :label="$t('报关方式')" align="center" prop="customsType">
                <template slot-scope="scope">
66 67 68
                  <div :class="scope.row.customsType !== 1 ? 'custom_type_red' : ''">
                    <dict-tag :type="DICT_TYPE.ECW_CUSTOMS_TYPE" :value="scope.row.customsType" />
                  </div>
69 70
                </template>
              </el-table-column>
71
              <el-table-column :label="$t('计划箱数')" align="center" prop="num">
huhaiqing's avatar
huhaiqing committed
72
                <template slot-scope="scope">
huhaiqing's avatar
huhaiqing committed
73
                  {{getTotlContent(scope.row,['num'])}}
huhaiqing's avatar
huhaiqing committed
74 75
                </template>
              </el-table-column>
76
              <el-table-column :label="$t('实装箱数')" align="center" prop="installNum">
huhaiqing's avatar
huhaiqing committed
77
                <template slot-scope="scope">
78
                  {{ scope.row.installNum }}{{$t('')}}
huhaiqing's avatar
huhaiqing committed
79 80
                </template>
              </el-table-column>
81
              <el-table-column :label="$t('体积')" align="center" prop="volume">
huhaiqing's avatar
huhaiqing committed
82
                <template slot-scope="scope">
huhaiqing's avatar
huhaiqing committed
83
                  {{getTotlContent(scope.row,['volume'])}}
huhaiqing's avatar
huhaiqing committed
84 85
                </template>
              </el-table-column>
86
              <el-table-column :label="$t('重量')" align="center" prop="weight">
huhaiqing's avatar
huhaiqing committed
87
                <template slot-scope="scope">
huhaiqing's avatar
huhaiqing committed
88
                  {{getTotlContent(scope.row,['weight'])}}
huhaiqing's avatar
huhaiqing committed
89 90
                </template>
              </el-table-column>
91
              <el-table-column :label="$t('操作')" align="center" class-name="small-padding fixed-width">
huhaiqing's avatar
huhaiqing committed
92
                <template slot-scope="scope">
93 94
                  <el-button type="text" size="small" @click="moveOut(scope.row)" v-if="!isUnderReview && scope.row.installNum === 0">{{$t('移出')}}</el-button>
                  <el-button type="text" size="small" v-if="isShowSplitOrder(scope.row)" @click="handlerSplitOrder(scope.row, 'splitOrder','拆单')">{{$t('拆单')}}</el-button>
huhaiqing's avatar
huhaiqing committed
95 96 97 98 99 100 101 102 103 104 105
                </template>
              </el-table-column>
            </el-table>
          </el-row>

        </el-col>
      </el-row>
    </el-card>

    <!-- 统计 -->
    <el-row>
106
      <el-col :span="6" class="totle-info">
huhaiqing's avatar
huhaiqing committed
107
        <div class="count-info">
108
          <p>{{$t('总计')}}:{{getSumData}}</p>
huhaiqing's avatar
huhaiqing committed
109 110
        </div>
        <div>
111
          <p>{{$t('容量')}}:</p>
112
          <p>{{calcCapacity}}</p>
huhaiqing's avatar
huhaiqing committed
113
        </div>
114
        <div>{{$t('已装')}} {{getInstallNumCount}} {{$t('箱')}}</div>
huhaiqing's avatar
huhaiqing committed
115 116 117
      </el-col>
    </el-row>

huhaiqing's avatar
huhaiqing committed
118 119 120
    <!-- 审核流程 -->
    <el-row class="process-area">
      <div class="process">
121
        <div>{{$t('审批流程')}}</div>
huhaiqing's avatar
huhaiqing committed
122 123 124 125
        <work-flow xmlkey="close_container" v-model="selectedUsers"></work-flow>
      </div>
      <!-- 操作 -->
      <div v-if="!isUnderReview">
126 127 128
        <el-button type="primary" @click="handlerClick('supplementOrder','补单')">{{$t('补单')}}</el-button>
        <el-button type="primary" @click="applyCloseCabinet">{{$t('封柜申请')}}</el-button>
        <el-button type="primary" @click="handlerClick('modifyCabinet','修改柜信息')">{{$t('修改柜信息')}}</el-button>
huhaiqing's avatar
huhaiqing committed
129 130
      </div>
      <div v-if="isUnderReview">
131 132 133
        <el-button type="primary" @click="jumpReviewDetail">{{$t('封柜审核中')}}</el-button>
        <el-button plain type="primary" @click="canclAudit">{{$t('取消审核')}}</el-button>
        <el-button plain type="primary" @click="$emit('closeDialog1')">{{$t('返回')}}</el-button>
huhaiqing's avatar
huhaiqing committed
134
      </div>
huhaiqing's avatar
huhaiqing committed
135 136 137
    </el-row>

    <!-- 对话框 -->
138
    <el-dialog custom-class="shipping-dialog" :title="dialogConfig.title" :visible.sync="dialogConfig.dialogVisible" :fullscreen="dialogConfig.fullscreen" :width="dialogConfig.width" :modal-append-to-body=false append-to-body>
huhaiqing's avatar
huhaiqing committed
139 140
      <!-- 已装未装订单 -->
      <template v-if="dialogConfig.type === 'orderTable'">
141
        <el-table :data="orderList" height="500px" border>
142 143
          <el-table-column :label="$t('已装')" align="center" prop="loadTag" />
          <el-table-column :label="$t('未装')" align="center" prop="unloadTag" />
144
        </el-table>
huhaiqing's avatar
huhaiqing committed
145 146
      </template>
      <!-- 补单 -->
147
      <supplementOrder v-if="dialogConfig.type === 'supplementOrder' && dialogConfig.dialogVisible" v-bind="$attrs" :shipmentObj="shipmentObj" @supplementFinish="supplementFinish" />
huhaiqing's avatar
huhaiqing committed
148
      <!-- 修改柜信息 -->
huhaiqing's avatar
huhaiqing committed
149
      <template v-if="dialogConfig.type === 'modifyCabinet' && dialogConfig.dialogVisible">
150
        <el-form ref="modifyForm" :rules="rules" :model="modifyCabinetObj" label-width="80px">
151 152
          <el-form-item :label="$t('起运仓库')" prop="startWarehouseId">
            <el-select v-model="modifyCabinetObj.startWarehouseId" :placeholder="$t('请选择仓库')" filterable>
153
              <el-option v-for="warehouse in $attrs.warehouseList" :key="warehouse.id" :label="warehouse.titleZh" :value="warehouse.id"></el-option>
huhaiqing's avatar
huhaiqing committed
154 155
            </el-select>
          </el-form-item>
156 157 158
          <el-form-item :label="$t('预装日期')">{{preinstallDate}}</el-form-item>
          <el-form-item :label="$t('选择柜型')" prop="cabinetId">
            <el-select v-model="modifyCabinetObj.cabinetId" :placeholder="$t('请选择柜型')">
159
              <el-option v-for="item in cabinetList" :label="item.name" :value="item.id" :key="item.id"></el-option>
huhaiqing's avatar
huhaiqing committed
160 161
            </el-select>
          </el-form-item>
162 163
          <el-form-item :label="$t('柜号')">
            <el-input v-model="modifyCabinetObj.cubNo" :placeholder="$t('请输入柜号')" clearable />
huhaiqing's avatar
huhaiqing committed
164 165 166
          </el-form-item>
        </el-form>
        <el-row class="operate-button">
167 168
          <el-button type="primary" @click="onSubmit('modifyForm')">{{$t('下一步')}}</el-button>
          <el-button @click="closeDialog2">{{$t('取消')}}</el-button>
huhaiqing's avatar
huhaiqing committed
169 170 171
        </el-row>
      </template>
      <!-- 装柜纠错 -->
huhaiqing's avatar
huhaiqing committed
172
      <template v-if="dialogConfig.type === 'correction' && dialogConfig.dialogVisible">
173
        <el-form ref="correctionForm" :rules="rules" :model="correctionObj" label-position="top">
174 175
          <el-form-item :label="$t('装柜纠错(二维码/条形码编号)')" prop="qrCode">
            <el-input v-model="correctionObj.qrCode" :placeholder="$t('请输入二维码/条形码编号')" clearable />
huhaiqing's avatar
huhaiqing committed
176 177 178
          </el-form-item>
        </el-form>
        <el-row class="operate-button">
179 180
          <el-button type="primary" @click="onSubmit('correctionForm')">{{$t('提交')}}</el-button>
          <el-button @click="closeDialog2">{{$t('取消')}}</el-button>
huhaiqing's avatar
huhaiqing committed
181 182 183
        </el-row>
      </template>
      <!-- 批量装柜纠错(订单号) -->
huhaiqing's avatar
huhaiqing committed
184
      <template v-if="dialogConfig.type === 'correctionOrder' && dialogConfig.dialogVisible">
185
        <el-form ref="orderForm" :rules="rules" :model="orderObj" label-position="top">
186 187
          <el-form-item :label="$t('装柜纠错') +'(' + $t('订单号') + ')'" prop="orderNo">
            <el-input type="textarea" :rows="3" v-model="orderObj.orderNo" :placeholder="$t('请输入,多个以逗号分隔')" clearable />
huhaiqing's avatar
huhaiqing committed
188 189 190
          </el-form-item>
        </el-form>
        <el-row class="operate-button">
191 192
          <el-button type="primary" @click="onSubmit('orderForm')">{{$t('提交')}}</el-button>
          <el-button @click="closeDialog2">{{$t('取消')}}</el-button>
huhaiqing's avatar
huhaiqing committed
193 194 195
        </el-row>
      </template>
      <!-- 装柜批量输入 -->
huhaiqing's avatar
huhaiqing committed
196
      <template v-if="dialogConfig.type === 'batchInput' && dialogConfig.dialogVisible">
huhaiqing's avatar
huhaiqing committed
197 198
        <el-form ref="batchForm" :rules="rules" :model="batchObj">
          <el-form-item label="" prop="qrCode" class="two-element">
199 200
            <el-input v-model="batchObj.qrCode" :placeholder="$t('请输入订单号')" clearable />
            <el-button style="marginLeft:10px;" type="primary" @click="queryOrderInfo">{{$t('确定')}}</el-button>
huhaiqing's avatar
huhaiqing committed
201
          </el-form-item>
huhaiqing's avatar
huhaiqing committed
202 203 204

          <el-row>
            <el-col :span="12">
205
              <el-form-item :label="$t('订单号')">
huhaiqing's avatar
huhaiqing committed
206 207 208 209
                {{boxOrderInfo.orderNo}}
              </el-form-item>
            </el-col>
            <el-col :span="12">
210
              <el-form-item :label="$t('箱数')">
211
                <el-input-number v-if="boxOrderInfo.isExternalWarehouse === 1" v-model="batchObj.boxNum" :min="0" :max="boxOrderInfo.num" />
huhaiqing's avatar
huhaiqing committed
212
                <template v-else>
213
                  {{boxOrderInfo.num}}
huhaiqing's avatar
huhaiqing committed
214 215 216 217 218 219 220
                </template>
              </el-form-item>
            </el-col>
          </el-row>

          <el-row>
            <el-col :span="12">
221
              <el-form-item :label="$t('方数')">
huhaiqing's avatar
huhaiqing committed
222 223 224 225
                {{getTotlContent(boxOrderInfo, ['volume'])}}
              </el-form-item>
            </el-col>
            <el-col :span="12">
226
              <el-form-item :label="$t('重量')">
huhaiqing's avatar
huhaiqing committed
227 228 229 230 231
                {{getTotlContent(boxOrderInfo, ['weight'])}}
              </el-form-item>
            </el-col>
          </el-row>

huhaiqing's avatar
huhaiqing committed
232 233
        </el-form>
        <el-row class="operate-button">
234 235
          <el-button type="primary" :disabled="boxOrderInfo.orderId ? false : true" @click="batchLoad">{{$t('提交')}}</el-button>
          <el-button @click="closeDialog2">{{$t('取消')}}</el-button>
huhaiqing's avatar
huhaiqing committed
236 237
        </el-row>
      </template>
huhaiqing's avatar
huhaiqing committed
238
      <!-- 拆单 -->
239
      <splitOrder v-bind="$attrs" v-on="$listeners" :shipmentObj="shipmentObj" v-if="dialogConfig.type === 'splitOrder' && dialogConfig.dialogVisible" :currRow="currRow" @closeDialog2="closeDialog2" />
huhaiqing's avatar
huhaiqing committed
240 241 242 243 244
    </el-dialog>
  </div>
</template>

<script>
245
import dayjs from "dayjs";
huhaiqing's avatar
huhaiqing committed
246
import supplementOrder from "./supplementOrder.vue";
huhaiqing's avatar
huhaiqing committed
247 248 249 250
import { getCabinetPage } from "@/api/ecw/cabinet";
import {
  loadSecGoodsList,
  orderTagList,
huhaiqing's avatar
huhaiqing committed
251
  singleCreate,
huhaiqing's avatar
huhaiqing committed
252
  batchCreate,
huhaiqing's avatar
huhaiqing committed
253
  singleDelete,
huhaiqing's avatar
huhaiqing committed
254 255 256 257
  batchDelete,
  remove,
  boxUpdate,
  approvalCreate,
huhaiqing's avatar
huhaiqing committed
258
  approvalCancel,
huhaiqing's avatar
huhaiqing committed
259 260
  getOrderDetailByBoxNo,
  externalLoad,
huhaiqing's avatar
huhaiqing committed
261
} from "@/api/ecw/boxSea";
262 263 264 265 266
import {
  getTotlContent,
  serviceMsg,
  getCapacity,
  sumStatistics,
267
  toReviewDetail,
268
} from "../../utils";
huhaiqing's avatar
huhaiqing committed
269
import splitOrder from "./splitOrder.vue";
huhaiqing's avatar
huhaiqing committed
270
import WorkFlow from "@/components/WorkFlow";
271
import Decimal from "decimal.js";
huhaiqing's avatar
huhaiqing committed
272 273 274 275 276 277

/**
 * 开始装柜
 */
export default {
  name: "startPacking",
huhaiqing's avatar
huhaiqing committed
278
  inheritAttrs: false,
huhaiqing's avatar
huhaiqing committed
279 280
  components: {
    supplementOrder,
huhaiqing's avatar
huhaiqing committed
281
    splitOrder,
huhaiqing's avatar
huhaiqing committed
282
    WorkFlow,
huhaiqing's avatar
huhaiqing committed
283
  },
huhaiqing's avatar
huhaiqing committed
284 285 286
  props: {
    shipmentObj: Object,
  },
huhaiqing's avatar
huhaiqing committed
287 288 289
  data() {
    return {
      // 表格数据
huhaiqing's avatar
huhaiqing committed
290 291 292
      listData: [],
      // 表格数据
      tableData: {},
huhaiqing's avatar
huhaiqing committed
293 294 295 296 297 298 299 300
      // 弹窗配置
      dialogConfig: {
        title: "",
        dialogVisible: false,
        width: "30%",
        type: "",
        fullscreen: false,
      },
huhaiqing's avatar
huhaiqing committed
301
      // 已装/未装
302
      orderList: [],
huhaiqing's avatar
huhaiqing committed
303 304
      // 柜型
      cabinetList: [],
huhaiqing's avatar
huhaiqing committed
305 306
      // 二维码/条码编号
      qrCode: "",
huhaiqing's avatar
huhaiqing committed
307 308 309 310 311 312 313 314 315 316
      // 批量输入
      batchObj: {},
      // 批量纠错(订单号)
      orderObj: {},
      // 纠错
      correctionObj: {},
      // 修改柜信息
      modifyCabinetObj: {},
      // 修改柜信息校验
      rules: {
huhaiqing's avatar
huhaiqing committed
317
        startWarehouseId: [
318
          { required: true, message: this.$t("必填"), trigger: "change" },
huhaiqing's avatar
huhaiqing committed
319
        ],
320 321 322 323 324 325 326 327 328
        cabinetId: [
          { required: true, message: this.$t("必填"), trigger: "change" },
        ],
        qrCode: [
          { required: true, message: this.$t("必填"), trigger: "change" },
        ],
        orderNo: [
          { required: true, message: this.$t("必填"), trigger: "change" },
        ],
huhaiqing's avatar
huhaiqing committed
329
      },
huhaiqing's avatar
huhaiqing committed
330 331
      // 当前行
      currRow: {},
huhaiqing's avatar
huhaiqing committed
332
      selectedUsers: [],
huhaiqing's avatar
huhaiqing committed
333 334
      // 订单信息
      boxOrderInfo: {},
huhaiqing's avatar
huhaiqing committed
335 336
    };
  },
huhaiqing's avatar
huhaiqing committed
337 338
  created() {
    this.getLoadSecGoodsList();
huhaiqing's avatar
huhaiqing committed
339 340 341 342
    // 柜型
    getCabinetPage(null).then((response) => {
      this.cabinetList = response.data.list;
    });
huhaiqing's avatar
huhaiqing committed
343
  },
huhaiqing's avatar
huhaiqing committed
344
  methods: {
huhaiqing's avatar
huhaiqing committed
345
    getTotlContent,
huhaiqing's avatar
huhaiqing committed
346 347 348 349 350 351 352
    /* 装柜部分列表 */
    getLoadSecGoodsList() {
      loadSecGoodsList({ shipmentId: this.shipmentObj.id }).then((res) => {
        const { data = [] } = res;
        this.listData = data.map((item, index) => {
          return {
            ...item,
353
            title: this.$t("第{index}部分", { index: 1 + index }),
huhaiqing's avatar
huhaiqing committed
354 355 356 357 358 359 360
          };
        });
        if (this.listData.length) {
          this.tableData = this.listData[0];
        }
      });
    },
huhaiqing's avatar
huhaiqing committed
361 362 363 364
    /** 点击事件统一入口 */
    handlerClick(type, title) {
      this.shwoDialog({ type, title });
    },
huhaiqing's avatar
huhaiqing committed
365 366 367 368 369
    /* 拆单 */
    handlerSplitOrder(row, type, title) {
      this.currRow = row;
      this.shwoDialog({ type, title });
    },
huhaiqing's avatar
huhaiqing committed
370 371
    /** 表格订单号点击 */
    orderClick(row) {
huhaiqing's avatar
huhaiqing committed
372
      orderTagList({ orderId: row.orderId }).then((res) => {
373
        const { data = {} } = res;
374 375 376 377 378 379 380 381 382 383 384 385 386 387
        this.orderList = [];
        // 取最长的list
        let dataLength = data.loadList.length;
        if (data.unLoadList.length > dataLength) {
          dataLength = data.unLoadList.length;
        }

        // 组装数据,用一个table组件渲染
        for (let index = 0; index < dataLength; index++) {
          this.orderList.push({
            loadTag: data.loadList[index],
            unloadTag: data.unLoadList[index],
          });
        }
huhaiqing's avatar
huhaiqing committed
388
      });
huhaiqing's avatar
huhaiqing committed
389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404
      this.shwoDialog({
        type: "orderTable",
        title: row.selfNo,
      });
    },
    /** 弹窗事件 */
    shwoDialog(config) {
      this.$set(this.dialogConfig, "title", config.title);
      this.$set(this.dialogConfig, "type", config.type);
      switch (config.type) {
        case "orderTable":
          this.$set(this.dialogConfig, "fullscreen", false);
          break;
        case "supplementOrder":
          this.$set(this.dialogConfig, "fullscreen", true);
          break;
huhaiqing's avatar
huhaiqing committed
405 406 407
        case "batchInput":
          this.$set(this.dialogConfig, "fullscreen", false);
          this.batchObj = {};
huhaiqing's avatar
huhaiqing committed
408
          this.boxOrderInfo = {};
huhaiqing's avatar
huhaiqing committed
409 410 411 412 413 414 415 416 417 418 419 420 421
          break;
        case "correction":
          this.$set(this.dialogConfig, "fullscreen", false);
          this.correctionObj = {};
          break;
        case "correctionOrder":
          this.$set(this.dialogConfig, "fullscreen", false);
          this.orderObj = {};
          break;
        case "modifyCabinet":
          this.$set(this.dialogConfig, "fullscreen", false);
          this.modifyCabinetObj = {};
          break;
huhaiqing's avatar
huhaiqing committed
422 423 424
        case "splitOrder":
          this.$set(this.dialogConfig, "fullscreen", true);
          break;
huhaiqing's avatar
huhaiqing committed
425 426 427 428
      }
      this.$set(this.dialogConfig, "dialogVisible", true);
    },
    /** 关闭弹窗 */
429
    closeDialog2() {
huhaiqing's avatar
huhaiqing committed
430 431 432 433 434 435
      this.$set(this.dialogConfig, "dialogVisible", false);
    },
    /** 修改提交 */
    onSubmit(formName) {
      this.$refs[formName].validate((valid) => {
        if (valid) {
huhaiqing's avatar
huhaiqing committed
436 437 438 439
          if (formName === "batchForm") {
            this.handlerBatchCreate("batch");
          }
          if (formName === "correctionForm") {
huhaiqing's avatar
huhaiqing committed
440 441 442 443 444 445
            this.handlerBatchDelete(
              {
                orderNumCode: this.correctionObj.qrCode,
              },
              "single"
            );
huhaiqing's avatar
huhaiqing committed
446 447
          }
          if (formName === "orderForm") {
huhaiqing's avatar
huhaiqing committed
448 449 450 451
            this.handlerBatchDelete(
              { orderNo: this.orderObj.orderNo },
              "batch"
            );
huhaiqing's avatar
huhaiqing committed
452 453 454 455
          }
          if (formName === "modifyForm") {
            this.modifyBoxUpdate();
          }
huhaiqing's avatar
huhaiqing committed
456 457 458
        }
      });
    },
huhaiqing's avatar
huhaiqing committed
459 460 461 462
    /* 部分点击 */
    partClick(item) {
      this.tableData = item;
    },
huhaiqing's avatar
huhaiqing committed
463 464 465 466 467 468 469 470
    /* 装柜 */
    handlerBatchCreate(type) {
      let params = {
        shipmentId: this.shipmentObj.id,
        secId: this.tableData.id,
      };
      if (type === "single") {
        if (!this.qrCode) {
471
          this.$message.error(this.$t("请输入二维码/条码编号"));
huhaiqing's avatar
huhaiqing committed
472 473 474
          return;
        }
        params.orderNumCode = this.qrCode;
huhaiqing's avatar
huhaiqing committed
475 476
        singleCreate(params).then((res) => {
          serviceMsg(res, this).then(() => {
huhaiqing's avatar
huhaiqing committed
477
            this.qrCode = "";
huhaiqing's avatar
huhaiqing committed
478 479 480
            this.getLoadSecGoodsList();
          });
        });
huhaiqing's avatar
huhaiqing committed
481 482
      } else {
        params.orderNo = this.batchObj.qrCode;
huhaiqing's avatar
huhaiqing committed
483 484
        batchCreate(params).then((res) => {
          serviceMsg(res, this).then(() => {
485
            this.closeDialog2();
huhaiqing's avatar
huhaiqing committed
486 487
            this.getLoadSecGoodsList();
          });
huhaiqing's avatar
huhaiqing committed
488
        });
huhaiqing's avatar
huhaiqing committed
489
      }
huhaiqing's avatar
huhaiqing committed
490 491
    },
    /* 删除已装柜 */
huhaiqing's avatar
huhaiqing committed
492
    handlerBatchDelete(params, type) {
huhaiqing's avatar
huhaiqing committed
493 494 495 496 497
      params = {
        shipmentId: this.shipmentObj.id,
        secId: this.tableData.id,
        ...params,
      };
huhaiqing's avatar
huhaiqing committed
498 499 500 501

      if (type === "single") {
        singleDelete(params).then((res) => {
          serviceMsg(res, this).then(() => {
502
            this.closeDialog2();
huhaiqing's avatar
huhaiqing committed
503 504
            this.getLoadSecGoodsList();
          });
huhaiqing's avatar
huhaiqing committed
505
        });
huhaiqing's avatar
huhaiqing committed
506 507 508
      } else {
        batchDelete(params).then((res) => {
          serviceMsg(res, this).then(() => {
509
            this.closeDialog2();
huhaiqing's avatar
huhaiqing committed
510 511 512 513
            this.getLoadSecGoodsList();
          });
        });
      }
huhaiqing's avatar
huhaiqing committed
514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535
    },
    /* 移出 */
    moveOut(row) {
      let params = {
        shipmentId: this.shipmentObj.id,
        secId: this.tableData.id,
        orderId: row.orderId,
      };
      remove(params).then((res) => {
        serviceMsg(res, this).then(() => {
          this.getLoadSecGoodsList();
        });
      });
    },
    /* 修改柜信息 */
    modifyBoxUpdate() {
      let params = {
        shipmentId: this.shipmentObj.id,
        ...this.modifyCabinetObj,
      };
      boxUpdate(params).then((res) => {
        serviceMsg(res, this);
536
        this.closeDialog2();
huhaiqing's avatar
huhaiqing committed
537 538 539 540
      });
    },
    /* 补单完成 */
    supplementFinish() {
541
      this.closeDialog2();
huhaiqing's avatar
huhaiqing committed
542 543 544 545 546
      this.getLoadSecGoodsList();
    },
    /* 申请封柜 */
    applyCloseCabinet() {
      approvalCreate({
547
        applyReason: this.$t("封柜审核"),
huhaiqing's avatar
huhaiqing committed
548
        approvalStatus: 0,
549
        approvalType: 2, // 封柜
huhaiqing's avatar
huhaiqing committed
550 551
        copyUserId: this.selectedUsers,
        shipmentId: this.shipmentObj.id,
huhaiqing's avatar
huhaiqing committed
552
      }).then((res) => {
huhaiqing's avatar
huhaiqing committed
553
        serviceMsg(res, this).then(() => {
554
          this.$emit("closeDialog1", "submit");
huhaiqing's avatar
huhaiqing committed
555
        });
huhaiqing's avatar
huhaiqing committed
556 557
      });
    },
huhaiqing's avatar
huhaiqing committed
558 559
    /* 是否显示拆单 */
    isShowSplitOrder(row) {
huhaiqing's avatar
huhaiqing committed
560
      if (row.num > row.installNum && row.installNum !== 0) {
huhaiqing's avatar
huhaiqing committed
561 562 563 564
        return true;
      }
      return false;
    },
huhaiqing's avatar
huhaiqing committed
565 566 567
    /* 取消审核 */
    canclAudit() {
      approvalCancel({
568
        applyReason: this.$t("取消审核"),
569
        id: this.shipmentObj["cabinetApprovalInfo"].id,
huhaiqing's avatar
huhaiqing committed
570 571 572
        shipmentId: this.shipmentObj.id,
      }).then((res) => {
        serviceMsg(res, this).then(() => {
573
          this.$emit("closeDialog1", "submit");
huhaiqing's avatar
huhaiqing committed
574 575 576
        });
      });
    },
huhaiqing's avatar
huhaiqing committed
577
    /* 跳转详情 */
578 579 580
    jumpReviewDetail() {
      const { cabinetApprovalInfo } = this.shipmentObj;
      toReviewDetail.apply(this, [cabinetApprovalInfo.bpmProcessId]);
581
      this.$emit("closeDialog1", "close");
582
    },
huhaiqing's avatar
huhaiqing committed
583 584 585 586 587 588 589 590 591
    queryOrderInfo() {
      this.$refs["batchForm"].validate((valid) => {
        if (valid) {
          getOrderDetailByBoxNo({
            orderNumCode: this.batchObj.qrCode,
            shipmentId: this.shipmentObj.id,
          }).then((res) => {
            const { data } = res;
            this.boxOrderInfo = data;
592
            this.batchObj.boxNum = data.num;
huhaiqing's avatar
huhaiqing committed
593 594 595 596 597 598
          });
        }
      });
    },
    batchLoad() {
      if (!this.boxOrderInfo.orderId) {
599
        this.$message.error(this.$t("请输入订单号"));
huhaiqing's avatar
huhaiqing committed
600 601 602
        return;
      }
      if (this.batchObj.boxNum === 0) {
603
        this.$message.error(this.$t("箱数不能为0"));
huhaiqing's avatar
huhaiqing committed
604 605
        return;
      }
606

huhaiqing's avatar
huhaiqing committed
607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624
      let params = {
        boxNum: this.boxOrderInfo.num,
        orderId: this.boxOrderInfo.orderId,
        orderNo: this.boxOrderInfo.orderNo,
        shipmentId: this.shipmentObj.id,
      };
      if (this.boxOrderInfo.isExternalWarehouse === 1) {
        params.boxNum = this.batchObj.boxNum;
      }

      externalLoad(params).then((res) => {
        serviceMsg(res, this).then(() => {
          this.closeDialog2();
          this.boxOrderInfo = {};
          this.getLoadSecGoodsList();
        });
      });
    },
huhaiqing's avatar
huhaiqing committed
625
  },
huhaiqing's avatar
huhaiqing committed
626 627 628 629
  computed: {
    /* 是否审核中 */
    isUnderReview() {
      const { currNode } = this.$attrs;
630 631 632 633
      return this.shipmentObj[currNode.keyName] === 44 ? true : false;
    },
    /* 预计时间 */
    preinstallDate() {
634 635 636 637
      if (this.shipmentObj.preInstallInfo.createTime) {
        return dayjs(this.shipmentObj.preInstallInfo.createTime).format(
          "YYYY-MM-DD HH:mm:ss"
        );
638 639
      }
      return null;
huhaiqing's avatar
huhaiqing committed
640
    },
641 642 643 644 645 646 647 648 649
    /* 容量 */
    calcCapacity() {
      const { cabinetRespVO } = this.shipmentObj;
      return getCapacity(cabinetRespVO);
    },
    /* 总计 */
    getSumData() {
      return sumStatistics(this.listData);
    },
650 651 652 653 654
    /* 已装总数 */
    getInstallNumCount() {
      let count = 0;
      if (Array.isArray(this.listData)) {
        this.listData.forEach((item) => {
huhaiqing's avatar
huhaiqing committed
655
          const { sectionOrderList = [] } = item;
656
          sectionOrderList.forEach((item) => {
657
            count = Decimal.add(count, item.installNum).toNumber();
658 659 660 661 662
          });
        });
      }
      return count;
    },
huhaiqing's avatar
huhaiqing committed
663
  },
huhaiqing's avatar
huhaiqing committed
664 665 666 667 668
};
</script>

<style lang="scss" scoped>
.startPacking {
huhaiqing's avatar
huhaiqing committed
669 670
  display: flex;
  flex-direction: column;
huhaiqing's avatar
huhaiqing committed
671 672 673 674 675 676 677 678 679
  p {
    margin: 0;
  }
  .content-area {
    display: flex;
    .left-area {
      border-right: 3px solid #e6ebf5;
      padding-right: 10px;
      .title-info {
huhaiqing's avatar
huhaiqing committed
680 681 682 683 684 685 686 687 688
        height: 80px;

        &.selected {
          > div:first-child {
            background-color: #4f9cdd;
            color: #fff;
          }
        }

huhaiqing's avatar
huhaiqing committed
689 690 691 692 693
        > div:first-child {
          font-size: 16px;
          background-color: #f2f2f2;
          line-height: 30px;
          text-align: center;
huhaiqing's avatar
huhaiqing committed
694
          cursor: pointer;
huhaiqing's avatar
huhaiqing committed
695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721
        }
        > :last-child {
          display: flex;
          > p {
            margin-right: 10px;
            color: #4f9cdd;
          }
        }
      }
    }
    .right-area {
      padding-left: 10px;
      .table-title {
        display: flex;
        align-items: center;
        margin-bottom: 10px;
        > div:first-child {
          flex: 1;
          font-size: 16px;
        }
        > div:last-child {
          display: flex;
          > .el-input {
            margin-right: 10px;
          }
        }
      }
huhaiqing's avatar
huhaiqing committed
722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742
      .table-content {
        .table-goodList {
          .goodList-div {
            border-bottom: 1px solid #e6ebf5;
            > p {
              text-align: left;
            }
            > p:last-child {
              > span {
                margin-right: 5px;
              }
            }
          }
          > div:last-child {
            border-bottom: none;
          }
        }

        .el-table {
          color: red;
        }
huhaiqing's avatar
huhaiqing committed
743 744 745 746 747 748 749 750 751 752
      }
    }
  }
  .totle-info {
    font-size: 20px;
    margin-top: 15px;
    > div {
      display: flex;
      margin-bottom: 5px;
    }
huhaiqing's avatar
huhaiqing committed
753 754 755 756 757
    .count-info {
      > p > span {
        margin-right: 5px;
      }
    }
huhaiqing's avatar
huhaiqing committed
758
  }
huhaiqing's avatar
huhaiqing committed
759 760 761 762 763 764 765 766 767 768 769 770 771

  .process-area {
    margin-top: 15px;
    padding-bottom: 30px;
    .process {
      display: flex;
      flex-direction: column;
      > :first-child {
        color: #606266;
        font-weight: bolder;
        font-size: 16px;
      }
    }
huhaiqing's avatar
huhaiqing committed
772 773 774
  }
}
</style>