From 4f39dcc195f28fa275fc2d065fbf1bf6a46c21b7 Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期二, 17 六月 2025 00:41:18 +0800
Subject: [PATCH] 优化出入库逻辑

---
 代码管理/WMS/WIDESEA_WMSClient/src/extension/outbound/extend/outOrderDetail.vue |  166 ++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 139 insertions(+), 27 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/outbound/extend/outOrderDetail.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/outbound/extend/outOrderDetail.vue"
index b47fd63..da4d861 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/outbound/extend/outOrderDetail.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/outbound/extend/outOrderDetail.vue"
@@ -8,15 +8,36 @@
       title="鍗曟嵁鏄庣粏淇℃伅"
     >
       <div class="box-head">
-        <!-- <el-row>
-          <el-col :span="24">
-            <span>宸查�変腑 {{ true ? 1 : 0 }} 椤�</span>
-            <el-divider direction="vertical"></el-divider>
-            <el-button type="text" size="medium"
-              ><i class="el-icon-edit">鍏抽棴</i
-            ></el-button>
-          </el-col>
-        </el-row> -->
+        <el-alert :closable="false" style="width: 100%">
+          <el-row>
+            <el-col :span="16">
+              <span>宸查�変腑 {{ selection.length }} 椤�</span>
+            </el-col>
+            <el-col :span="8">
+              <el-link
+                type="primary"
+                size="small"
+                style="float: right; height: 20px"
+                @click="lockstocks"
+                >閿佸畾搴撳瓨</el-link
+              >
+              <el-link
+                type="primary"
+                size="small"
+                style="float: right; height: 20px; margin-right: 10px"
+                @click="outbound"
+                >鐩存帴鍑哄簱</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
@@ -26,7 +47,10 @@
           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"
@@ -42,18 +66,26 @@
             :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-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>
+            <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)"
+                    ><i :class="item.icon" style="font-size: 22px"></i></el-link
+                ></el-tooltip>
+              </div>
+
+              <div v-else-if="item.type == 'tag'">
+                <el-tag size="small">
+                  {{ getDictionary(scoped.row, item) }}
+                </el-tag>
+              </div>
             </template>
           </el-table-column>
         </el-table>
@@ -79,6 +111,7 @@
       showDetialBox: false,
       flag: false,
       currentRow: null,
+      selection: [],
       tableData: [],
       tableColumns: [
         {
@@ -110,7 +143,7 @@
         {
           prop: "batchNo",
           title: "鎵规鍙�",
-          type: "tag",
+          type: "string",
           width: 90,
         },
         {
@@ -134,8 +167,9 @@
         {
           prop: "orderDetailStatus",
           title: "璁㈠崟鏄庣粏鐘舵��",
-          type: "string",
+          type: "tag",
           width: 180,
+          bindKey: "orderDetailStatusEnum",
         },
         {
           prop: "assignStock",
@@ -221,12 +255,14 @@
         allocation_type: "",
         allocation_state: "",
       },
+      dictionaryList: null,
     };
   },
   methods: {
     open(row) {
       this.row = row;
       this.showDetialBox = true;
+      this.getDictionaryData();
       this.getData();
     },
     getData() {
@@ -247,12 +283,43 @@
     tableButtonClick(row, column) {
       if (column.prop == "assignStock") {
         this.$refs.child.open(row);
-      }else{
+      } else {
         this.$refs.selectedStock.open(row);
       }
     },
-    assignStock() {},
-    viewDetail() {},
+    lockstocks() {
+      if (this.selection.length === 0) {
+        return this.$message.error("璇烽�夋嫨鍗曟嵁鏄庣粏");
+      }
+      var keys = this.selection.map((item) => item.id); // 鑾峰彇閫変腑琛岀殑id
+      this.http
+        .post("api/OutboundOrderDetail/LockOutboundStocks", keys, "鏁版嵁澶勭悊涓�")
+        .then((x) => {
+          if (!x.status) return this.$message.error(x.message);
+          this.$message.success("鎿嶄綔鎴愬姛");
+          this.showDetialBox = false;
+          this.$emit("parentCall", ($vue) => {
+            $vue.getData();
+          });
+        });
+    },
+    outbound() {
+      if (this.selection.length === 0) {
+        return this.$message.error("璇烽�夋嫨鍗曟嵁鏄庣粏");
+      }
+      var keys = this.selection.map((item) => item.id); // 鑾峰彇閫変腑琛岀殑id
+
+      this.http
+        .post("api/Task/GenerateOutboundTasks", keys, "鏁版嵁澶勭悊涓�")
+        .then((x) => {
+          if (!x.status) return this.$message.error(x.message);
+          this.$message.success("鎿嶄綔鎴愬姛");
+          this.showDetialBox = false;
+          this.$emit("parentCall", ($vue) => {
+            $vue.getData();
+          });
+        });
+    },
     setCurrent(row) {
       this.$refs.singleTable.setCurrentRow(row);
     },
@@ -261,7 +328,10 @@
     },
     getButtonEnable(propName, row) {
       if (propName == "assignStock") {
-        if (row.orderDetailStatus !== 0 && row.orderDetailStatus !== 60 && row.orderDetailStatus !== 70) {
+        if (
+          row.orderDetailStatus !== 0 &&
+          row.orderDetailStatus !== 60 
+        ) {
           return true;
         } else {
           return false;
@@ -274,6 +344,46 @@
         return console.log("鎵╁睍缁勪欢闇�瑕佷紶鍏ヤ竴涓洖璋冩柟娉曟墠鑳借幏鍙栫埗绾ue瀵硅薄");
       }
       fun(this);
+    },
+    handleRowClick(row) {
+      this.$refs.singleTable.toggleRowSelection(row);
+    },
+    handleSelectionChange(val) {
+      this.selection = val;
+    },
+    getDictionaryData() {
+      if (this.dictionaryList) {
+        return;
+      }
+      var param = [];
+      this.tableColumns.forEach((x) => {
+        if (x.type == "tag" && x.bindKey != "") {
+          param.push(x.bindKey);
+        }
+      });
+      this.http
+        .post("api/Sys_Dictionary/GetVueDictionary", param, "鏌ヨ涓�")
+        .then((x) => {
+          if (x.length > 0) {
+            this.dictionaryList = x;
+          }
+        });
+    },
+    getDictionary(row, column) {
+      if (this.dictionaryList) {
+        var item = this.dictionaryList.find((x) => x.dicNo == column.bindKey);
+        if (item) {
+          var dicItem = item.data.find((x) => x.key == row[column.prop]);
+          console.log(dicItem);
+          if (dicItem) {
+            return dicItem.value;
+          } else {
+            return row[column.prop];
+          }
+        } else {
+          return row[column.prop];
+        }
+      }
     },
   },
 };
@@ -288,9 +398,11 @@
 .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; */

--
Gitblit v1.9.3