From c020f31a67fc5aa5644511bddff075f7ecc85234 Mon Sep 17 00:00:00 2001
From: qinchulong <qinchulong@hnkhzn.com>
Date: 星期二, 27 五月 2025 15:35:27 +0800
Subject: [PATCH] Merge branch 'master' of http://115.159.85.185:8098/r/HuaYiZhongHeng/ZhongHeLiTiKu

---
 代码管理/WMS/WIDESEA_WMSClient/src/extension/outbound/extend/StockSelect.vue |  251 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 251 insertions(+), 0 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/outbound/extend/StockSelect.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/outbound/extend/StockSelect.vue"
new file mode 100644
index 0000000..1a2ce9d
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/outbound/extend/StockSelect.vue"
@@ -0,0 +1,251 @@
+<template>
+  <div>
+    <vol-box v-model="showDetialBox" :lazy="true" width="60%" :padding="15" title="鎸囧畾搴撳瓨">
+      <div class="box-head">
+        <el-alert :closable="false" style="width: 100%">
+          <el-row>
+            <el-col :span="20">
+              <span class="less-style">鐗╂枡鍚嶇О锛� {{ row.materielName }} </span>
+              <el-divider direction="vertical"></el-divider>
+              <span class="less-style">鐗╂枡缂栧彿锛� {{ row.materielCode }} </span>
+              <el-divider direction="vertical"></el-divider>
+              <span class="less-style">闇�姹傛暟閲忥細 {{ row.orderQuantity }}
+              </span>
+              <el-divider direction="vertical"></el-divider>
+              <span :class="selectionClass">宸查�夋暟閲忥細 {{ selectionSum }}
+              </span>
+            </el-col>
+            <el-col :span="2">
+              <el-link type="primary" size="small" style="float: right; height: 20px"
+                @click="getData">鍒锋柊</el-link></el-col>
+            <el-col :span="2">
+              <el-link type="primary" size="small" style="float: right; height: 20px"
+                @click="revokeAssign">鎾ら攢鍒嗛厤</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
+          @row-click="handleRowClick" height="500px" @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">
+            <template #default="scoped" v-if="item.type == 'icon'">
+              <el-tooltip class="item" effect="dark" :content="item.title" placement="bottom"><el-button type="text"
+                  @click="tableButtonClick(scoped.row, item)"><i :class="item.icon"
+                    style="font-size: 22px"></i></el-button></el-tooltip>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+      <template #footer>
+        <el-button type="primary" size="small" @click="outbound">鐩存帴鍑哄簱</el-button>
+        <el-button type="primary" size="small" @click="lockStock">閿佸畾搴撳瓨</el-button>
+        <el-button type="danger" size="small" @click="showDetialBox = false">鍏抽棴</el-button>
+      </template>
+    </vol-box>
+  </div>
+</template>
+<script>
+import VolBox from "@/components/basic/VolBox.vue";
+export default {
+  components: { VolBox },
+  data() {
+    return {
+      row: null,
+      showDetialBox: false,
+      tableData: [],
+      tableColumns: [
+        {
+          prop: "materielCode",
+          title: "鐗╂枡缂栧彿",
+          type: "string",
+          width: 150,
+        },
+        {
+          prop: "materielName",
+          title: "鐗╂枡鍚嶇О",
+          type: "string",
+          width: 150,
+        },
+        {
+          prop: "palletCode",
+          title: "鎵樼洏缂栧彿",
+          type: "string",
+          width: 150,
+        },
+        {
+          prop: "locationCode",
+          title: "璐т綅缂栧彿",
+          type: "string",
+          width: 180,
+        },
+        {
+          prop: "useableQuantity",
+          title: "鍙敤鏁伴噺",
+          type: "string",
+        },
+      ],
+      selection: [],
+      selectionSum: 0,
+      selectionClass: "less-style",
+      originalQuantity: 0,
+    };
+  },
+  methods: {
+    open(row) {
+      this.row = row;
+      this.showDetialBox = true;
+      this.originalQuantity = this.row.lockQuantity;
+      this.selectionSum = this.row.lockQuantity;
+      this.getData();
+      if (this.selectionSum == this.row.orderQuantity) {
+        this.selectionClass = "equle-style";
+      } else if (this.selectionSum < this.row.orderQuantity) {
+        this.selectionClass = "less-style";
+      } else {
+        this.selectionClass = "more-style";
+      }
+    },
+    lockStock() {
+      this.http
+        .post(
+          "api/OutboundOrderDetail/LockOutboundStock?id=" + this.row.id,
+          this.selection,
+          "鏁版嵁澶勭悊涓�"
+        )
+        .then((x) => {
+          if (!x.status) return this.$message.error(x.message);
+          this.$message.success("鎿嶄綔鎴愬姛");
+          this.showDetialBox = false;
+          this.$emit("parentCall", ($vue) => {
+            $vue.getData();
+          });
+        });
+    },
+    outbound() {
+      this.http
+        .post(
+          "api/Task/GenerateOutboundTask?id=" + this.row.id,
+          this.selection,
+          "鏁版嵁澶勭悊涓�"
+        )
+        .then((x) => {
+          if (!x.status) return this.$message.error(x.message);
+          this.$message.success("鎿嶄綔鎴愬姛");
+          this.showDetialBox = false;
+          this.$emit("parentCall", ($vue) => {
+            $vue.getData();
+          });
+        });
+    },
+    getData() {
+      this.http
+        .post(
+          "api/StockInfo/GetStockSelectViews?materielCode=" +
+          this.row.materielCode,
+          null,
+          "鏌ヨ涓�"
+        )
+        .then((x) => {
+          this.tableData = x;
+        });
+    },
+    revokeAssign() {
+      console.log(this.row);
+      this.http
+        .post(
+          "api/OutboundOrderDetail/RevokeLockOutboundStock?id=" + this.row.id,
+          null,
+          "鏁版嵁澶勭悊涓�"
+        )
+        .then((x) => {
+          if (!x.status) return this.$message.error(x.message);
+          this.$message.success("鎿嶄綔鎴愬姛");
+          this.showDetialBox = false;
+          this.$emit("parentCall", ($vue) => {
+            $vue.getData();
+          });
+        });
+    },
+    handleSelectionChange(val) {
+      this.selection = val;
+      this.selectionSum =
+        val.reduce(
+          (accumulator, currentValue) =>
+            accumulator + currentValue["useableQuantity"],
+          0
+        ) + this.originalQuantity;
+      if (this.selectionSum == this.row.orderQuantity) {
+        this.selectionClass = "equle-style";
+      } else if (this.selectionSum < this.row.orderQuantity) {
+        this.selectionClass = "less-style";
+      } else {
+        this.selectionClass = "more-style";
+      }
+    },
+    toggleSelection(rows) {
+      if (rows) {
+        rows.forEach((row) => {
+          this.$refs.singleTable.toggleRowSelection(row);
+        });
+      } else {
+        this.$refs.singleTable.clearSelection();
+      }
+    },
+    clearSelection() {
+      this.$refs.singleTable.clearSelection();
+    },
+    handleRowClick(row) {
+      this.$refs.singleTable.toggleRowSelection(row);
+    },
+  },
+};
+</script>
+<style scoped>
+.less-style {
+  color: black;
+}
+
+.equle-style {
+  color: green;
+}
+
+.more-style {
+  color: red;
+}
+</style>
+
+<style>
+.text-button:hover {
+  background-color: #f0f9eb !important;
+}
+
+.el-table .warning-row {
+  background: oldlace;
+}
+
+.box-table .el-table tbody tr:hover>td {
+  background-color: #d8e0d4 !important;
+  /* color: #ffffff; */
+}
+
+.box-table .el-table tbody tr.current-row>td {
+  background-color: #f0f9eb !important;
+  /* color: #ffffff; */
+}
+
+.el-table .success-row {
+  background: #f0f9eb;
+}
+
+.box-table .el-table {
+  border: 1px solid #ebeef5;
+}
+
+.box-head .el-alert__content {
+  width: 100%;
+}
+</style>
\ No newline at end of file

--
Gitblit v1.9.3