647556386
2026-01-27 1378fc4cd7abc24ed3a982e09437c2c8a74e9f2f
ÏîÄ¿´úÂë/WIDESEA_WMSClient/src/extension/outbound/extend/outOrderDetail.vue
@@ -1,6 +1,12 @@
<template>
  <div>
    <vol-box v-model="showDetialBox" :lazy="true" width="75%" :padding="15" title="单据明细信息">
    <vol-box
      v-model="showDetialBox"
      :lazy="true"
      width="75%"
      :padding="15"
      title="单据明细信息"
    >
      <div class="box-head">
        <el-alert :closable="false" style="width: 100%">
          <el-row>
@@ -8,33 +14,97 @@
              <span>已选中 {{ selection.length }} é¡¹</span>
            </el-col>
            <el-col :span="8">
              <el-link type="primary" size="small" v-if="isBatch === 0" style="float: right; height: 20px"
                @click="handleOpenPicking">拣选</el-link>
              <el-link type="primary" size="small" style="float: right; height: 20px; margin-right: 10px"
                v-if="isBatch === 1" @click="handleOpenBatchPicking">分批拣选</el-link>
              <el-link type="primary" size="small" v-if="isBatch === 0"
                style="float: right; height: 20px; margin-right: 10px" @click="outbound">直接出库</el-link>
              <el-link type="primary" size="small" v-if="isBatch === 1"
                style="float: right; height: 20px; margin-right: 10px" @click="outboundbatch">分批出库</el-link>
              <el-link type="primary" size="small" style="float: right; height: 20px; margin-right: 10px"
                @click="getData">刷新</el-link>
              <el-link
                type="primary"
                size="small"
                v-if="isBatch === 0 && mainBusinessType != '30'"
                style="float: right; height: 20px"
                @click="handleOpenPicking"
                >拣选</el-link
              >
              <el-link
                type="primary"
                size="small"
                v-if="mainBusinessType === '30'"
                style="float: right; height: 20px"
                @click="handleOpenRecheckPicking"
                >重检拣选</el-link
              >
              <el-link
                type="primary"
                size="small"
                style="float: right; height: 20px; margin-right: 10px"
                v-if="isBatch === 1"
                @click="handleOpenBatchPicking"
                >分批拣选</el-link
              >
              <el-link
                type="primary"
                size="small"
                v-if="isBatch === 0 && mainBusinessType != '30'"
                style="float: right; height: 20px; margin-right: 10px"
                @click="outbound"
                >直接出库</el-link
              >
              <el-link
                type="primary"
                size="small"
                v-if="isBatch === 1"
                style="float: right; height: 20px; margin-right: 10px"
                @click="outboundbatch"
                >分批出库</el-link
              >
              <el-link
                type="primary"
                size="small"
                style="float: right; height: 20px; margin-right: 10px"
                @click="getData"
                >刷新</el-link
              >
            </el-col>
          </el-row>
        </el-alert>
      </div>
      <div class="box-table" style="margin-top: 1%">
        <el-table ref="singleTable" :data="tableData" style="width: 100%; height: 100%" highlight-current-row
          @current-change="handleCurrentChange" height="500px" @row-click="handleRowClick"
          @selection-change="handleSelectionChange">
        <el-table
          ref="singleTable"
          :data="tableData"
          style="width: 100%; height: 100%"
          highlight-current-row
          @current-change="handleCurrentChange"
          height="500px"
          @row-click="handleRowClick"
          @selection-change="handleSelectionChange"
        >
          <el-table-column type="selection" width="55"> </el-table-column>
          <el-table-column label="序号" type="index" fixed="left" width="55" align="center"></el-table-column>
          <el-table-column v-for="(item, index) in tableColumns.filter((x) => !x.hidden)" :key="index" :prop="item.prop"
            :label="item.title" :width="item.width" align="center">
          <el-table-column
            label="序号"
            type="index"
            fixed="left"
            width="55"
            align="center"
          ></el-table-column>
          <el-table-column
            v-for="(item, index) in tableColumns.filter((x) => !x.hidden)"
            :key="index"
            :prop="item.prop"
            :label="item.title"
            :width="item.width"
            align="center"
          >
            <template #default="scoped">
              <div v-if="item.type == 'icon'">
                <el-tooltip class="item" effect="dark" :content="item.title" placement="bottom">
                  <el-link type="primary" :disabled="getButtonEnable(item.prop, scoped.row)"
                    @click="tableButtonClick(scoped.row, item)">
                <el-tooltip
                  class="item"
                  effect="dark"
                  :content="item.title"
                  placement="bottom"
                >
                  <el-link
                    type="primary"
                    :disabled="getButtonEnable(item.prop, scoped.row)"
                    @click="tableButtonClick(scoped.row, item)"
                  >
                    <i :class="item.icon" style="font-size: 22px"></i>
                  </el-link>
                </el-tooltip>
@@ -53,9 +123,15 @@
      </div>
    </vol-box>
    <stock-select ref="child" @parentCall="parentCall"></stock-select>
    <selected-stock ref="selectedStock" @parentCall="parentCall"></selected-stock>
    <selected-stock
      ref="selectedStock"
      @parentCall="parentCall"
    ></selected-stock>
    <NoStockOut ref="NoStockOut" @parentCall="parentCall"></NoStockOut>
    <DirectOutbound ref="DirectOutbound" @parentCall="parentCall"></DirectOutbound>
    <DirectOutbound
      ref="DirectOutbound"
      @parentCall="parentCall"
    ></DirectOutbound>
  </div>
</template>
@@ -79,7 +155,14 @@
} from "element-plus";
export default {
  components: { VolBox, VolForm, StockSelect, SelectedStock, NoStockOut, DirectOutbound },
  components: {
    VolBox,
    VolForm,
    StockSelect,
    SelectedStock,
    NoStockOut,
    DirectOutbound,
  },
  data() {
    return {
      row: null,
@@ -150,6 +233,12 @@
        {
          prop: "moveQty",
          title: "挪料数量",
          type: "string",
          width: 90,
        },
        {
          prop: "warehouseCode",
          title: "仓库编号",
          type: "string",
          width: 90,
        },
@@ -290,14 +379,16 @@
        });
    },
    tableButtonClick(row, column) {
      if (column.prop == "assignStock") {
        this.$refs.child.open(row);
      } else if (column.prop == "NoStockOut") {
        this.$refs.NoStockOut.open(row);
      } else {
        this.$refs.selectedStock.open(row);
      }
    },
  if (column.prop == "assignStock") {
    this.$refs.child.open(row,this.row.orderNo);
  } else if (column.prop == "NoStockOut") {
    this.$refs.NoStockOut.open(row);
  } else {
    this.$refs.selectedStock.open(row);
  }
},
    lockstocks() {
      if (this.selection.length === 0) {
        return this.$message.error("请选择单据明细");
@@ -326,39 +417,55 @@
        query: { orderId: this.row.id, orderNo: this.row.orderNo },
      });
    },
    handleOpenRecheckPicking() {
      this.$router.push({
        path: "/outbound/recheckOutPicking",
        query: { orderId: this.row.id, orderNo: this.row.orderNo },
      });
    },
    outbound() {
      if (this.selection.length === 0) {
        return this.$message.error("请选择单据明细");
      }
    if (this.selection.length === 0) {
      return this.$message.error("请选择单据明细");
    }
      const keys = this.selection.map((item) => item.id);
      const requestParams = {
        detailIds: keys,
        outboundQuantity: 1,
        operator: "",
        orderNo: this.row.orderNo,
        isBatch: this.isBatch
      };
      console.log(requestParams);
      this.$refs.DirectOutbound.open(requestParams);
    },
    outboundbatch() {
      if (this.selection.length === 0) {
        return this.$message.error("请选择单据明细");
      }
    const keys = this.selection.map((item) => item.id);
    const requestParams = {
      detailIds: keys,
      outboundQuantity: 1,
      operator: "",
      orderNo: this.row.orderNo,
      isBatch: this.isBatch,
    };
    console.log(requestParams);
    this.$refs.DirectOutbound.open(requestParams);
  },
  outboundbatch() {
    if (this.selection.length === 0) {
      return this.$message.error("请选择单据明细");
    }
      const keys = this.selection.map((item) => item.id);
      const requestParams = {
        detailIds: keys,
        outboundQuantity: this.selection.length > 1 ? 1 : this.selection[0].orderQuantity - this.selection[0].lockQuantity,
        operator: "",
        orderNo: this.row.orderNo,
        isBatch: this.isBatch
      };
      console.log(requestParams);
      this.$refs.DirectOutbound.open(requestParams);
    const keys = this.selection.map((item) => item.id);
    // è®¡ç®—所有选中明细的可出库数量总和
    let totalOutboundQuantity = 0;
    this.selection.forEach(item => {
      // ç±»åž‹è½¬æ¢+容错,避免非数字值导致计算错误
      const orderQty = Number(item.orderQuantity) || 0;
      const lockQty = Number(item.lockQuantity) || 0;
      totalOutboundQuantity += (orderQty - lockQty);
    });
    },
    const requestParams = {
      detailIds: keys,
      outboundQuantity: totalOutboundQuantity,
      operator: "",
      orderNo: this.row.orderNo,
      isBatch: this.isBatch,
    };
    console.log("分批出库参数:", requestParams);
    this.$refs.DirectOutbound.open(requestParams);
  },
    setCurrent(row) {
      this.$refs.singleTable.setCurrentRow(row);
    },
@@ -445,11 +552,11 @@
  background: oldlace;
}
.box-table .el-table tbody tr:hover>td {
.box-table .el-table tbody tr:hover > td {
  background-color: #d8e0d4 !important;
}
.box-table .el-table tbody tr.current-row>td {
.box-table .el-table tbody tr.current-row > td {
  background-color: #f0f9eb !important;
}