From 1378fc4cd7abc24ed3a982e09437c2c8a74e9f2f Mon Sep 17 00:00:00 2001
From: 647556386 <647556386@qq.com>
Date: 星期二, 27 一月 2026 19:06:32 +0800
Subject: [PATCH] 代码优化

---
 项目代码/WIDESEA_WMSClient/src/extension/outbound/extend/outOrderDetail.vue |  433 +++++++++++------------------------------------------
 1 files changed, 91 insertions(+), 342 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/outbound/extend/outOrderDetail.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/outbound/extend/outOrderDetail.vue"
index cc9b8be..59d95f2 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/outbound/extend/outOrderDetail.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/outbound/extend/outOrderDetail.vue"
@@ -17,10 +17,18 @@
               <el-link
                 type="primary"
                 size="small"
-                v-if="isBatch === 0"
+                v-if="isBatch === 0 && mainBusinessType != '30'"
                 style="float: right; height: 20px"
                 @click="handleOpenPicking"
                 >鎷i��</el-link
+              >
+              <el-link
+                type="primary"
+                size="small"
+                v-if="mainBusinessType === '30'"
+                style="float: right; height: 20px"
+                @click="handleOpenRecheckPicking"
+                >閲嶆鎷i��</el-link
               >
               <el-link
                 type="primary"
@@ -33,7 +41,7 @@
               <el-link
                 type="primary"
                 size="small"
-                v-if="isBatch === 0"
+                v-if="isBatch === 0 && mainBusinessType != '30'"
                 style="float: right; height: 20px; margin-right: 10px"
                 @click="outbound"
                 >鐩存帴鍑哄簱</el-link
@@ -120,6 +128,10 @@
       @parentCall="parentCall"
     ></selected-stock>
     <NoStockOut ref="NoStockOut" @parentCall="parentCall"></NoStockOut>
+    <DirectOutbound
+      ref="DirectOutbound"
+      @parentCall="parentCall"
+    ></DirectOutbound>
   </div>
 </template>
 
@@ -129,6 +141,7 @@
 import StockSelect from "./StockSelect.vue";
 import SelectedStock from "./SelectedStock.vue";
 import NoStockOut from "./NoStockOut.vue";
+import DirectOutbound from "./DirectOutbound.vue";
 import { h, createVNode, render, reactive } from "vue";
 import {
   ElDialog,
@@ -142,7 +155,14 @@
 } from "element-plus";
 
 export default {
-  components: { VolBox, VolForm, StockSelect, SelectedStock, NoStockOut },
+  components: {
+    VolBox,
+    VolForm,
+    StockSelect,
+    SelectedStock,
+    NoStockOut,
+    DirectOutbound,
+  },
   data() {
     return {
       row: null,
@@ -217,6 +237,12 @@
           width: 90,
         },
         {
+          prop: "warehouseCode",
+          title: "浠撳簱缂栧彿",
+          type: "string",
+          width: 90,
+        },
+        {
           prop: "unit",
           title: "鍗曚綅",
           type: "string",
@@ -234,7 +260,7 @@
           title: "鎸囧畾搴撳瓨",
           type: "icon",
           width: 90,
-          hidden: true, // 榛樿闅愯棌
+          //hidden: true, // 榛樿闅愯棌
           icon: "el-icon-s-grid",
         },
         {
@@ -321,10 +347,10 @@
       const assignStockColumn = this.tableColumns.find(
         (item) => item.prop === "assignStock"
       );
-      if (assignStockColumn) {
-        // businessType涓�22鏃舵樉绀猴紝鍚﹀垯闅愯棌
-        assignStockColumn.hidden = this.mainBusinessType !=='22';
-      }
+      // if (assignStockColumn) {
+      //   // businessType涓�22鏃舵樉绀猴紝鍚﹀垯闅愯棌
+      //   assignStockColumn.hidden = this.mainBusinessType !== '22';
+      // }
     },
     open(row) {
       this.row = row;
@@ -353,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("璇烽�夋嫨鍗曟嵁鏄庣粏");
@@ -379,344 +407,65 @@
     },
     handleOpenPicking() {
       this.$router.push({
-        path: "/outbound/picking",
+        path: "/outbound/outPicking",
         query: { orderId: this.row.id, orderNo: this.row.orderNo },
       });
     },
     handleOpenBatchPicking() {
       this.$router.push({
-        path: "/outbound/batchpicking",
+        path: "/outbound/outPicking",
+        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("璇烽�夋嫨鍗曟嵁鏄庣粏");
-      }
-      const platformOptions = [
-        { label: "绔欏彴2", value: "2-1" },
-        { label: "绔欏彴3", value: "3-1" },
-      ];
-      const mountNode = document.createElement("div");
-      document.body.appendChild(mountNode);
+    if (this.selection.length === 0) {
+      return this.$message.error("璇烽�夋嫨鍗曟嵁鏄庣粏");
+    }
 
-      const formData = reactive({
-        selectedPlatform: platformOptions[0].value,
-      });
+    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 vnode = createVNode(
-        ElDialog,
-        {
-          title: "鍑哄簱鎿嶄綔 - 閫夋嫨鍑哄簱绔欏彴",
-          width: "500px",
-          modelValue: true,
-          appendToBody: true,
-          "onUpdate:modelValue": (isVisible) => {
-            if (!isVisible) {
-              render(null, mountNode);
-              document.body.removeChild(mountNode);
-            }
-          },
-          style: {
-            padding: "20px 0",
-            borderRadius: "8px",
-          },
-        },
-        {
-          default: () =>
-            h(
-              ElForm,
-              {
-                model: formData,
-                rules: {
-                  selectedPlatform: [
-                    { required: true, message: "璇烽�夋嫨鍑哄簱绔欏彴", trigger: "change" },
-                  ],
-                },
-                ref: "outboundForm",
-                labelWidth: "100px",
-                style: {
-                  padding: "0 30px",
-                },
-              },
-              [
-                h(ElFormItem, {
-                  label: "鍑哄簱绔欏彴",
-                  prop: "selectedPlatform",
-                  style: {
-                    marginBottom: "24px",
-                  },
-                }, [
-                  h(ElSelect, {
-                    placeholder: "璇烽�夋嫨鍑哄簱绔欏彴锛�3-12锛�",
-                    modelValue: formData.selectedPlatform,
-                    "onUpdate:modelValue": (val) => {
-                      formData.selectedPlatform = val;
-                    },
-                    style: {
-                      width: "100%",
-                      height: "40px",
-                      borderRadius: "4px",
-                      borderColor: "#dcdfe6",
-                    },
-                  }, platformOptions.map((platform) =>
-                    h(ElOption, { label: platform.label, value: platform.value })
-                  )),
-                ]),
-                h("div", {
-                  style: {
-                    textAlign: "right",
-                    marginTop: "8px",
-                    paddingRight: "4px",
-                  },
-                }, [
-                  h(ElButton, {
-                    type: "text",
-                    onClick: () => {
-                      render(null, mountNode);
-                      document.body.removeChild(mountNode);
-                      ElMessage.info("鍙栨秷鍑哄簱鎿嶄綔");
-                    },
-                    style: {
-                      marginRight: "8px",
-                      color: "#606266",
-                    },
-                  }, "鍙栨秷"),
-                  h(ElButton, {
-                    type: "primary",
-                    onClick: async () => {
-                      const formRef = vnode.component.refs.outboundForm;
-                      try {
-                        await formRef.validate();
-                      } catch (err) {
-                        return;
-                      }
+    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 keys = this.selection.map((item) => item.id);
-                      const requestParams = {
-                        taskIds: keys,
-                        outboundPlatform: formData.selectedPlatform,
-                      };
-
-                      this.http
-                        .post(
-                          "api/Task/GenerateOutboundTasks",
-                          requestParams,
-                          "鏁版嵁澶勭悊涓�"
-                        )
-                        .then((x) => {
-                          if (!x.status) return ElMessage.error(x.message);
-                          ElMessage.success("鎿嶄綔鎴愬姛");
-                          this.showDetialBox = false;
-                          this.$emit("parentCall", ($vue) => {
-                            $vue.getData();
-                          });
-                          render(null, mountNode);
-                          document.body.removeChild(mountNode);
-                        })
-                        .catch(() => {
-                          ElMessage.error("璇锋眰澶辫触锛岃绋嶅悗閲嶈瘯");
-                        });
-                    },
-                    style: {
-                      borderRadius: "4px",
-                      padding: "8px 20px",
-                    },
-                  }, "纭畾鍑哄簱"),
-                ]),
-              ]),
-        }
-      );
-
-      vnode.appContext = this.$.appContext;
-      render(vnode, mountNode);
-    },
-    outboundbatch() {
-      if (this.selection.length === 0) {
-        return this.$message.error("璇烽�夋嫨鍗曟嵁鏄庣粏");
-      }
-      if (this.selection.length > 1) {
-        return this.$message.error("鍙兘閫夋嫨涓�鏉″崟鎹槑缁嗚繘琛屽垎鎵瑰嚭搴�");
-      }
-      const platformOptions = [
-        { label: "绔欏彴2", value: "2-1" },
-        { label: "绔欏彴3", value: "3-1" },
-      ];
-      const mountNode = document.createElement("div");
-      document.body.appendChild(mountNode);
-
-      const formData = reactive({
-        selectedPlatform: platformOptions[0].value,
-        outboundDecimal: "",
-      });
-
-      const vnode = createVNode(
-        ElDialog,
-        {
-          title: "鍑哄簱鎿嶄綔 - 閫夋嫨鍑哄簱绔欏彴",
-          width: "500px",
-          modelValue: true,
-          appendToBody: true,
-          "onUpdate:modelValue": (isVisible) => {
-            if (!isVisible) {
-              render(null, mountNode);
-              document.body.removeChild(mountNode);
-            }
-          },
-          style: {
-            padding: "20px 0",
-            borderRadius: "8px",
-          },
-        },
-        {
-          default: () =>
-            h(
-              ElForm,
-              {
-                model: formData,
-                rules: {
-                  selectedPlatform: [
-                    { required: true, message: "璇烽�夋嫨鍑哄簱绔欏彴", trigger: "change" },
-                  ],
-                  outboundDecimal: [
-                    { required: true, message: "璇疯緭鍏ュ皬鏁版暟鍊�", trigger: "blur" },
-                    {
-                      validator: (rule, value, callback) => {
-                        const decimalReg = /^(([1-9]\d*)|0)(\.\d{1,2})?$/;
-                        if (value && !decimalReg.test(value)) {
-                          callback(new Error("璇疯緭鍏ユ湁鏁堢殑灏忔暟锛堟鏁帮紝鏈�澶�2浣嶅皬鏁帮級"));
-                        } else {
-                          callback();
-                        }
-                      },
-                      trigger: "blur",
-                    },
-                  ],
-                },
-                ref: "outboundForm",
-                labelWidth: "100px",
-                style: {
-                  padding: "0 30px",
-                },
-              },
-              [
-                h(ElFormItem, {
-                  label: "鍑哄簱绔欏彴",
-                  prop: "selectedPlatform",
-                  style: {
-                    marginBottom: "24px",
-                  },
-                }, [
-                  h(ElSelect, {
-                    placeholder: "璇烽�夋嫨鍑哄簱绔欏彴锛�3-12锛�",
-                    modelValue: formData.selectedPlatform,
-                    "onUpdate:modelValue": (val) => {
-                      formData.selectedPlatform = val;
-                    },
-                    style: {
-                      width: "100%",
-                      height: "40px",
-                      borderRadius: "4px",
-                      borderColor: "#dcdfe6",
-                    },
-                  }, platformOptions.map((platform) =>
-                    h(ElOption, { label: platform.label, value: platform.value })
-                  )),
-                ]),
-                h(ElFormItem, {
-                  label: "鍑哄簱鏁�",
-                  prop: "outboundDecimal",
-                  style: {
-                    marginBottom: "24px",
-                  },
-                }, [
-                  h(ElInput, {
-                    type: "number",
-                    placeholder: "璇疯緭鍏ュ皬鏁版暟鍊硷紙鏈�澶�2浣嶅皬鏁帮級",
-                    modelValue: formData.outboundDecimal,
-                    "onUpdate:modelValue": (val) => {
-                      formData.outboundDecimal = val;
-                    },
-                    style: {
-                      width: "100%",
-                      height: "40px",
-                      borderRadius: "4px",
-                      borderColor: "#dcdfe6",
-                    },
-                    step: "0.01",
-                    precision: 2,
-                    min: 0.01,
-                  }),
-                ]),
-                h("div", {
-                  style: {
-                    textAlign: "right",
-                    marginTop: "8px",
-                    paddingRight: "4px",
-                  },
-                }, [
-                  h(ElButton, {
-                    type: "text",
-                    onClick: () => {
-                      render(null, mountNode);
-                      document.body.removeChild(mountNode);
-                      ElMessage.info("鍙栨秷鍒嗘壒鍑哄簱鎿嶄綔");
-                    },
-                    style: {
-                      marginRight: "8px",
-                      color: "#606266",
-                    },
-                  }, "鍙栨秷"),
-                  h(ElButton, {
-                    type: "primary",
-                    onClick: async () => {
-                      const formRef = vnode.component.refs.outboundForm;
-                      try {
-                        await formRef.validate();
-                      } catch (err) {
-                        return;
-                      }
-
-                      const keys = this.selection.map((item) => item.id);
-                      const requestParams = {
-                        orderDetailId: keys[0],
-                        outboundPlatform: formData.selectedPlatform,
-                        batchQuantity: formData.outboundDecimal,
-                      };
-
-                      this.http
-                        .post(
-                          "api/Task/GenerateOutboundBatchTasks",
-                          requestParams,
-                          "鏁版嵁澶勭悊涓�"
-                        )
-                        .then((x) => {
-                          if (!x.status) return ElMessage.error(x.message);
-                          ElMessage.success("鎿嶄綔鎴愬姛");
-                          this.showDetialBox = false;
-                          this.$emit("parentCall", ($vue) => {
-                            $vue.getData();
-                          });
-                          render(null, mountNode);
-                          document.body.removeChild(mountNode);
-                        })
-                        .catch(() => {
-                          ElMessage.error("璇锋眰澶辫触锛岃绋嶅悗閲嶈瘯");
-                        });
-                    },
-                    style: {
-                      borderRadius: "4px",
-                      padding: "8px 20px",
-                    },
-                  }, "纭畾鍒嗘壒鍑哄簱"),
-                ]),
-              ]),
-        }
-      );
-
-      vnode.appContext = this.$.appContext;
-      render(vnode, mountNode);
-    },
+    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);
     },

--
Gitblit v1.9.3