From e6b95b867105e7be676510c248638ecb41dd6f87 Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期三, 15 一月 2025 13:35:57 +0800
Subject: [PATCH] 优化物料码查询

---
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_MaterielCodeInfo.cs                      |    6 +
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/PurchaseOrderDetailService.cs                   |   29 +++++++
 代码管理/WMS/WIDESEA_WMSClient/src/views/basic/materielCodeInfo.vue                                   |   47 +++++++++--
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/PurchaseOrderDetailController.cs |   10 ++
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IPurchaseOrderDetailService.cs                 |    2 
 代码管理/WMS/WIDESEA_WMSClient/src/extension/basic/materielCodeInfo.js                                |   45 +++++++++-
 代码管理/WMS/WIDESEA_WMSClient/src/extension/outbound/extend/outOrderDetail.vue                       |   94 ++++++++++++++++++-----
 7 files changed, 197 insertions(+), 36 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/basic/materielCodeInfo.js" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/basic/materielCodeInfo.js"
index 7956968..1e93c31 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/basic/materielCodeInfo.js"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/extension/basic/materielCodeInfo.js"
@@ -26,26 +26,47 @@
       })
       return option;
     },
+    formatDate(dateStr) {
+      let date = new Date(dateStr);
+      let year = date.getFullYear();
+      let month = String(date.getMonth() + 1).padStart(2, "0");
+      let day = String(date.getDate()).padStart(2, "0");
+      return year + "-" + month + "-" + day;
+    },
     //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
     onInit() {  //妗嗘灦鍒濆鍖栭厤缃墠锛�
+      let warehouseIdOption = this.getOption("warehouseId");
       let materielCodeOption = this.getOption("materielCode");
       let purchaseOrderNoOption = this.getOption("purchaseOrderNo");
-      purchaseOrderNoOption.onChange = (val, option) => {
+      warehouseIdOption.onChange=(val,option)=>{
         this.editFormFields.materielCode = "";
         materielCodeOption.data = [];
+        this.editFormFields.purchaseOrderNo = "";
+        purchaseOrderNoOption.data = [];
         if (val == null || val == 0) {
-          return this.$error("璇烽�夋嫨鐗╂枡缂栧彿锛�")
+          return this.$error("璇烽�夋嫨浠撳簱锛�")
         }
-        // console.log(val)
-        // console.log(option)
-        this.http.post("/api/PurchaseOrder/GetPurchaseOrderInfo?purchaseOrderNo=" + val, {}, true).then(
+        this.http.post("/api/PurchaseOrderDetail/GetPurchaseOrderDetailMaterielCode?warehouseId=" + val, {}, true).then(
           source => {
             if (!source.status) return this.$error(source.message);
             for (let i = 0; i < source.data.length; i++) {
               materielCodeOption.data.push({ key: source.data[i], value: source.data[i] })
             }
-            // this.editFormFields.InputOder_itemname = source.data.itemName;
-            // this.$success(source.data.itemName);
+            this.refresh();
+          })
+      }
+      materielCodeOption.onChange = (val, option) => {
+        this.editFormFields.purchaseOrderNo = "";
+        purchaseOrderNoOption.data = [];
+        if (val == null || val == 0) {
+          return this.$error("璇烽�夋嫨鐗╂枡缂栧彿锛�")
+        }
+        this.http.post("/api/PurchaseOrderDetail/GetPurchaseOrderNos?materielCode=" + val, {}, true).then(
+          source => {
+            if (!source.status) return this.$error(source.message);
+            for (let i = 0; i < source.data.length; i++) {
+              purchaseOrderNoOption.data.push({ key: source.data[i], value: source.data[i] })
+            }
             this.refresh();
           })
       }
@@ -99,6 +120,16 @@
       //(3)this.editFormFields.瀛楁='xxx';
       //濡傛灉闇�瑕佺粰涓嬫媺妗嗚缃粯璁ゅ�硷紝璇烽亶鍘唗his.editFormOptions鎵惧埌瀛楁閰嶇疆瀵瑰簲data灞炴�х殑key鍊�
       //鐪嬩笉鎳傚氨鎶婅緭鍑虹湅锛歝onsole.log(this.editFormOptions)
+      let isAdd = this.currentAction == 'Add';
+      if (isAdd) {
+        let date = new Date();
+        let year = date.getFullYear();
+        let month = String(date.getMonth() + 1).padStart(2, "0");
+        let day = String(date.getDate()).padStart(2, "0");
+        this.editFormFields.lotNo = year + month + day;
+        this.editFormFields.productionDate = year + "-" + month + "-" + day;
+        this.editFormFields.effectiveDate = year + 2 + "-" + month + "-" + day;
+      }
     }
   }
 };
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 52349e9..6091790 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"
@@ -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,27 +14,71 @@
               <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-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 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)"><i
-                      :class="item.icon" style="font-size: 22px"></i></el-link></el-tooltip>
+                <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'">
@@ -42,7 +92,10 @@
       </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>
   </div>
 </template>
 <script>
@@ -122,7 +175,7 @@
           title: "璁㈠崟鏄庣粏鐘舵��",
           type: "tag",
           width: 180,
-          bindKey: "orderDetailStatusEnum"
+          bindKey: "orderDetailStatusEnum",
         },
         {
           prop: "assignStock",
@@ -285,7 +338,8 @@
         if (
           row.orderDetailStatus !== 0 &&
           row.orderDetailStatus !== 60 &&
-          row.orderDetailStatus !== 70
+          row.orderDetailStatus !== 70 &&
+          row.orderDetailStatus !== 80
         ) {
           return true;
         } else {
@@ -358,12 +412,12 @@
   background: oldlace;
 }
 
-.box-table .el-table tbody tr:hover>td {
+.box-table .el-table tbody tr:hover > td {
   background-color: #d8e0d4 !important;
   /* color: #ffffff; */
 }
 
-.box-table .el-table tbody tr.current-row>td {
+.box-table .el-table tbody tr.current-row > td {
   background-color: #f0f9eb !important;
   /* color: #ffffff; */
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/basic/materielCodeInfo.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/basic/materielCodeInfo.vue"
index ed96261..ccadec6 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/basic/materielCodeInfo.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/views/basic/materielCodeInfo.vue"
@@ -27,25 +27,42 @@
       sortName: "id",
     });
     const editFormFields = ref({
-      purchaseOrderNo:"",
-      materielCode:"",
+      lotNo: "",
+      warehouseId: "",
+      purchaseOrderNo: "",
+      materielCode: "",
+      productionDate: "",
+      effectiveDate: "",
     });
     const editFormOptions = ref([
       [
         {
-          title: "閲囪喘鍗曞彿",
-          field: "purchaseOrderNo",
-          type:"select",
-          dataKey: "purchaseOrderNos",
+          title: "浠撳簱",
+          field: "warehouseId",
+          type: "select",
+          dataKey: "areainfo",
           data: [],
           required: true,
         },
+      ],
+      [
         {
           title: "鐗╂枡缂栫爜",
           field: "materielCode",
           type: "select",
-          dataKey: "MaterielCodes",
+          required: true,
+          // dataKey: "MaterielCodes",
           data: [],
+        },
+      ],
+      [
+        {
+          title: "閲囪喘鍗曞彿",
+          field: "purchaseOrderNo",
+          type: "select",
+          // dataKey: "purchaseOrderNos",
+          data: [],
+          required: true,
         },
       ],
       [
@@ -54,6 +71,8 @@
           field: "lotNo",
           required: true,
         },
+      ],
+      [
         {
           title: "鏁伴噺",
           field: "quantity",
@@ -64,13 +83,15 @@
         {
           title: "鐢熶骇鏃ユ湡",
           field: "productionDate",
-          type: "date",
+          // type: "date",
           required: true,
         },
+      ],
+      [
         {
           title: "鏈夋晥鏈�",
           field: "effectiveDate",
-          type: "date",
+          // type: "date",
           required: true,
         },
       ],
@@ -100,6 +121,14 @@
         align: "left",
       },
       {
+        field: "warehouseId",
+        title: "浠撳簱",
+        type: "string",
+        width: 90,
+        align: "left",
+        bind: { key: "areainfo", data: [] },
+      },
+      {
         field: "purchaseOrderNo",
         title: "閲囪喘鍗曞彿",
         type: "string",
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IPurchaseOrderDetailService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IPurchaseOrderDetailService.cs"
index 2abe5f2..d56094b 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IPurchaseOrderDetailService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_IInboundService/IPurchaseOrderDetailService.cs"
@@ -12,5 +12,7 @@
 {
     public interface IPurchaseOrderDetailService : IService<Dt_PurchaseOrderDetail>
     {
+        WebResponseContent GetPurchaseOrderDetailMaterielCode(int warehouseId);
+        WebResponseContent GetPurchaseOrderNos(string materielCode);
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/PurchaseOrderDetailService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/PurchaseOrderDetailService.cs"
index a314b9b..18fc975 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/PurchaseOrderDetailService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/PurchaseOrderDetailService.cs"
@@ -3,6 +3,7 @@
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using WIDESEA_Common.OrderEnum;
 using WIDESEA_Core;
 using WIDESEA_Core.BaseServices;
 using WIDESEA_Core.Enums;
@@ -20,5 +21,33 @@
         public PurchaseOrderDetailService(IPurchaseOrderDetailRepository BaseDal) : base(BaseDal)
         {
         }
+        public WebResponseContent GetPurchaseOrderDetailMaterielCode(int warehouseId)
+        {
+            try
+            {
+                List<Dt_PurchaseOrderDetail> purchaseOrderDetails = BaseDal.QueryData(x => x.WarehouseId == warehouseId && x.PurchaseDetailStatus != PurchaseOrderDetailStatusEnum.Received.ObjToInt());
+                List<string> MaterielCodes = purchaseOrderDetails.Select(x => x.MaterielCode).ToList();
+                return WebResponseContent.Instance.OK(data: MaterielCodes);
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+        public WebResponseContent GetPurchaseOrderNos(string materielCode)
+        {
+            try
+            {
+                List<Dt_PurchaseOrderDetail> purchaseOrderDetails = BaseDal.QueryData(x => x.MaterielCode == materielCode && x.PurchaseDetailStatus != PurchaseOrderDetailStatusEnum.Received.ObjToInt());
+                List<int> PurchaseOrderIds = purchaseOrderDetails.Select(x => x.PurchaseOrderId).ToList();
+                List<Dt_PurchaseOrder> purchaseOrders = BaseDal.Db.Queryable<Dt_PurchaseOrder>().Where(x => PurchaseOrderIds.Contains(x.Id)).ToList();
+                List<string> PurchaseOrderNos = purchaseOrders.Select(x => x.PurchaseOrderNo).ToList();
+                return WebResponseContent.Instance.OK(data: PurchaseOrderNos);
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_MaterielCodeInfo.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_MaterielCodeInfo.cs"
index 02df027..37610d3 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_MaterielCodeInfo.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_MaterielCodeInfo.cs"
@@ -28,6 +28,12 @@
         public string MaterielCode { get; set; }
 
         /// <summary>
+        /// 浠撳簱涓婚敭
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "浠撳簱缂栧彿")]
+        public int WarehouseId { get; set; }
+
+        /// <summary>
         /// 鎵规鍙�
         /// </summary>
         [SugarColumn(IsNullable = false, Length = 200, ColumnDescription = "鎵规鍙�")]
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/PurchaseOrderDetailController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/PurchaseOrderDetailController.cs"
index ee5c974..2a4cb19 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/PurchaseOrderDetailController.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/PurchaseOrderDetailController.cs"
@@ -18,5 +18,15 @@
         public PurchaseOrderDetailController(IPurchaseOrderDetailService service) : base(service)
         {
         }
+        [HttpPost, HttpGet, Route("GetPurchaseOrderDetailMaterielCode"), AllowAnonymous]
+        public WebResponseContent GetPurchaseOrderDetailMaterielCode(int warehouseId)
+        {
+            return Service.GetPurchaseOrderDetailMaterielCode(warehouseId);
+        }
+        [HttpPost, HttpGet, Route("GetPurchaseOrderNos"), AllowAnonymous]
+        public WebResponseContent GetPurchaseOrderNos(string materielCode)
+        {
+            return Service.GetPurchaseOrderNos(materielCode);
+        }
     }
 }

--
Gitblit v1.9.3