From 98749f73549cbbb1eb1db0916f3f2073e006384e Mon Sep 17 00:00:00 2001
From: zs <zhousong@weben-smart.com>
Date: 周三, 30 4月 2025 19:47:32 +0800
Subject: [PATCH] 托盘管理

---
 HIAWms/web/src/widgets/WmsContainer/Models/Service/WmsContainerDrawer.ts                              |    8 +
 HIAWms/web/src/widgets/WmsContainer/Views/Pages/WmsContainer/Config.ts                                |   20 +-
 HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsContainers/IWmsContainerRepository.cs                   |    4 
 HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsContainerAppService.cs                  |   13 +
 HIAWms/web/src/widgets/WmsContainer/Controllers/WmsContainerDrawer.tsx                                |  140 +++++++++++++++-
 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/GetWmsContainersInput.cs |   16 ++
 HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsContainerRepository.cs  |   32 +++
 HIAWms/web/src/widgets/WmsContainer/Views/Pages/WmsContainer/WmsContainer.tsx                         |  153 +++++++++++++++++++
 HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsContainerAutoMapperProfile.cs       |    1 
 HIAWms/web/src/widgets/WmsContainer/Views/Pages/Dialog/WmsContainerDrawer/WmsContainerDrawer.tsx      |    2 
 HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainerDto.cs       |   22 ++
 HIAWms/web/src/widgets/WmsContainer/Views/Pages/WmsContainer/WmsContainer.module.scss                 |   39 ++++
 12 files changed, 411 insertions(+), 39 deletions(-)

diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/GetWmsContainersInput.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/GetWmsContainersInput.cs
index f7ae976..0380c5e 100644
--- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/GetWmsContainersInput.cs
+++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/GetWmsContainersInput.cs
@@ -1,3 +1,4 @@
+using CMS.Plugin.HIAWms.Domain.Shared.Enums;
 using Volo.Abp.Application.Dtos;
 
 namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsContainers;
@@ -16,4 +17,19 @@
     /// Gets or sets the name.
     /// </summary>
     public string Name { get; set; }
+
+    /// <summary>
+    /// 鎵樼洏缂栧彿
+    /// </summary>
+    public string ContainerNo { get; set; }
+
+    /// <summary>
+    /// 鎵樼洏绫诲瀷
+    /// </summary>
+    public ContainerTypeEnum ContainerType { get; set; }
+
+    /// <summary>
+    /// 鎵樼洏鐘舵��
+    /// </summary>
+    public ContainerStatusEnum ContainerStatus { get; set; }
 }
diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainerDto.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainerDto.cs
index 2268c18..38c5b68 100644
--- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainerDto.cs
+++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainerDto.cs
@@ -21,11 +21,33 @@
     public ContainerTypeEnum ContainerType { get; set; }
 
     /// <summary>
+    /// 鎵樼洏绫诲瀷
+    /// </summary>
+    public string ContainerTypeDesc
+    {
+        get
+        {
+            return GetEnumDescriptionUtil.GetEnumDescription(ContainerType);
+        }
+    }
+
+    /// <summary>
     /// 鎵樼洏鐘舵��
     /// </summary>
     public ContainerStatusEnum ContainerStatus { get; set; }
 
     /// <summary>
+    /// 鎵樼洏鐘舵��
+    /// </summary>
+    public string ContainerStatusDesc
+    {
+        get
+        {
+            return GetEnumDescriptionUtil.GetEnumDescription(ContainerStatus);
+        }
+    }
+
+    /// <summary>
     /// 闀垮害
     /// </summary>
     public decimal? SpecLength { get; set; }
diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsContainerAppService.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsContainerAppService.cs
index 7328599..eba8903 100644
--- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsContainerAppService.cs
+++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsContainerAppService.cs
@@ -7,6 +7,7 @@
 using Volo.Abp.Application.Dtos;
 using Volo.Abp.Data;
 using Volo.Abp.ObjectExtending;
+using CMS.Plugin.HIAWms.Domain.Shared.Util;
 
 namespace CMS.Plugin.HIAWms.Application.Implements;
 
@@ -41,8 +42,9 @@
         }
 
         var specification = new WmsContainerSpecification(input.Name);
-        var count = await _wmscontainerRepository.GetCountAsync(input.Filter, specification);
-        var list = await _wmscontainerRepository.GetListAsync(input.Sorting, input.MaxResultCount, input.SkipCount, input.Filter, specification);
+        var container = ObjectMapper.Map < GetWmsContainersInput, WmsContainer>(input);
+        var count = await _wmscontainerRepository.GetCountAsync(container,input.Filter, specification);
+        var list = await _wmscontainerRepository.GetListAsync(container,input.Sorting, input.MaxResultCount, input.SkipCount, input.Filter, specification);
 
         return new PagedResultDto<WmsContainerDto>(count, ObjectMapper.Map<List<WmsContainer>, List<WmsContainerDto>>(list));
     }
@@ -158,7 +160,7 @@
     /// <inheritdoc />
     public virtual async Task AdjustSortAsync(Guid id, int sort)
     {
-        var list = await _wmscontainerRepository.GetListAsync(nameof(WmsContainer.Sort));
+        var list = await _wmscontainerRepository.GetListAsync(null,nameof(WmsContainer.Sort));
         if (list != null && list.Any())
         {
             var initSort = 1;
@@ -307,12 +309,13 @@
         }
 
         var specification = new WmsContainerSpecification(input.Name);
-        var list = await _wmscontainerRepository.GetListAsync(input.Sorting, input.MaxResultCount, input.SkipCount, input.Filter, specification, includeDetails: true);
+        var container = ObjectMapper.Map<GetWmsContainersInput, WmsContainer>(input);
+        var list = await _wmscontainerRepository.GetListAsync(container,input.Sorting, input.MaxResultCount, input.SkipCount, input.Filter, specification, includeDetails: true);
         var result = ObjectMapper.Map<List<WmsContainer>, List<WmsContainerDto>>(list);
 
         var sheets = new Dictionary<string, object>
         {
-            ["閰嶇疆"] = result.Select(x => x.GetExportData()).ToList(),
+            ["閰嶇疆"] = ExportHelper.ConvertListToExportData(result),
         };
 
         var fileName = result.Count > 1 ? "WmsContainer鍒楄〃" : result.Count == 1 ? result.First()?.ContainerNo : "WmsContainer妯$増";
diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsContainerAutoMapperProfile.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsContainerAutoMapperProfile.cs
index 9cf32b5..672037e 100644
--- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsContainerAutoMapperProfile.cs
+++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsContainerAutoMapperProfile.cs
@@ -21,5 +21,6 @@
          * into multiple profile classes for a better organization. */
         CreateMap<WmsContainer, WmsContainerDto>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
         CreateMap<WmsContainerCreateDto, WmsContainer>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
+        CreateMap<GetWmsContainersInput, WmsContainer>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
     }
 }
diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsContainers/IWmsContainerRepository.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsContainers/IWmsContainerRepository.cs
index 56c006e..50b4374 100644
--- a/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsContainers/IWmsContainerRepository.cs
+++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Domain/WmsContainers/IWmsContainerRepository.cs
@@ -41,7 +41,7 @@
     /// <param name="includeDetails">if set to <c>true</c> [include details].</param>
     /// <param name="cancellationToken">The cancellation token.</param>
     /// <returns></returns>
-    Task<List<WmsContainer>> GetListAsync(string sorting = null, int maxResultCount = int.MaxValue,  int skipCount = 0, string filter = null, Specification<WmsContainer> specification = null, bool includeDetails = false, CancellationToken cancellationToken = default);
+    Task<List<WmsContainer>> GetListAsync(WmsContainer? container, string sorting = null, int maxResultCount = int.MaxValue,  int skipCount = 0, string filter = null, Specification<WmsContainer> specification = null, bool includeDetails = false, CancellationToken cancellationToken = default);
 
     /// <summary>
     /// Gets the count asynchronous.
@@ -50,5 +50,5 @@
     /// <param name="specification">The specification.</param>
     /// <param name="cancellationToken">The cancellation token.</param>
     /// <returns></returns>
-    Task<long> GetCountAsync(string filter = null, Specification<WmsContainer> specification = null, CancellationToken cancellationToken = default);
+    Task<long> GetCountAsync(WmsContainer? container, string filter = null, Specification<WmsContainer> specification = null, CancellationToken cancellationToken = default);
 }
diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsContainerRepository.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsContainerRepository.cs
index dc4e77a..f42bc56 100644
--- a/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsContainerRepository.cs
+++ b/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsContainerRepository.cs
@@ -50,8 +50,19 @@
         return sort + 1;
     }
 
-    /// <inheritdoc />
-    public async Task<List<WmsContainer>> GetListAsync(string sorting = null, int maxResultCount = int.MaxValue, int skipCount = 0, string filter = null, Specification<WmsContainer> specification = null, bool includeDetails = false, CancellationToken cancellationToken = default)
+    /// <summary>
+    /// 查询列表
+    /// </summary>
+    /// <param name="container"></param>
+    /// <param name="sorting"></param>
+    /// <param name="maxResultCount"></param>
+    /// <param name="skipCount"></param>
+    /// <param name="filter"></param>
+    /// <param name="specification"></param>
+    /// <param name="includeDetails"></param>
+    /// <param name="cancellationToken"></param>
+    /// <returns></returns>
+    public async Task<List<WmsContainer>> GetListAsync(WmsContainer? container,string sorting = null, int maxResultCount = int.MaxValue, int skipCount = 0, string filter = null, Specification<WmsContainer> specification = null, bool includeDetails = false, CancellationToken cancellationToken = default)
     {
         specification ??= new WmsContainerSpecification();
         return await (await GetDbSetAsync())
@@ -59,18 +70,31 @@
             .Where(specification.ToExpression())
             .Where(x => !x.IsDeleted)
             .WhereIf(!filter.IsNullOrWhiteSpace(), u => u.ContainerNo.Contains(filter))
+            .WhereIf(!string.IsNullOrEmpty(container.ContainerNo),u=>u.ContainerNo.Contains(container.ContainerNo))
+            .WhereIf(container.ContainerStatus>0, u=>u.ContainerStatus == u.ContainerStatus)
+            .WhereIf(container.ContainerType>0, u=>u.ContainerType == u.ContainerType)
             .OrderBy(sorting.IsNullOrEmpty() ? nameof(WmsContainer.Sort) : sorting)
             .PageBy(skipCount, maxResultCount)
             .ToListAsync(GetCancellationToken(cancellationToken));
     }
 
-    /// <inheritdoc />
-    public async Task<long> GetCountAsync(string filter = null, Specification<WmsContainer> specification = null, CancellationToken cancellationToken = default)
+    /// <summary>
+    /// 查询数量
+    /// </summary>
+    /// <param name="container"></param>
+    /// <param name="filter"></param>
+    /// <param name="specification"></param>
+    /// <param name="cancellationToken"></param>
+    /// <returns></returns>
+    public async Task<long> GetCountAsync(WmsContainer? container, string filter = null, Specification<WmsContainer> specification = null, CancellationToken cancellationToken = default)
     {
         specification ??= new WmsContainerSpecification();
         return await (await GetQueryableAsync())
             .Where(specification.ToExpression())
             .Where(x => !x.IsDeleted)
+            .WhereIf(!string.IsNullOrEmpty(container.ContainerNo), u => u.ContainerNo.Contains(container.ContainerNo))
+            .WhereIf(container.ContainerStatus > 0, u => u.ContainerStatus == u.ContainerStatus)
+            .WhereIf(container.ContainerType > 0, u => u.ContainerType == u.ContainerType)
             .WhereIf(!filter.IsNullOrWhiteSpace(), u => u.ContainerNo.Contains(filter))
             .CountAsync(cancellationToken: GetCancellationToken(cancellationToken));
     }
diff --git a/HIAWms/web/src/widgets/WmsContainer/Controllers/WmsContainerDrawer.ts b/HIAWms/web/src/widgets/WmsContainer/Controllers/WmsContainerDrawer.tsx
similarity index 62%
rename from HIAWms/web/src/widgets/WmsContainer/Controllers/WmsContainerDrawer.ts
rename to HIAWms/web/src/widgets/WmsContainer/Controllers/WmsContainerDrawer.tsx
index 54066ec..f7f5228 100644
--- a/HIAWms/web/src/widgets/WmsContainer/Controllers/WmsContainerDrawer.ts
+++ b/HIAWms/web/src/widgets/WmsContainer/Controllers/WmsContainerDrawer.tsx
@@ -1,10 +1,20 @@
-import { ref, onMounted, reactive, computed, Ref, watch } from 'vue'
+import {
+  ref,
+  onMounted,
+  reactive,
+  computed,
+  Ref,
+  watch,
+  SetupContext,
+  h,
+} from 'vue'
 import { injectModel } from '@/libs/Provider/Provider'
 import { WmsContainerDrawer } from '../Models/WmsContainerDrawer'
 import { ElMessage } from 'element-plus'
 import isEqual from 'lodash/isEqual'
 import { ConfirmBox } from '@/components/ConfirmBox/ConfirmBox'
 import { cloneDeep } from 'lodash'
+import { getWmsEnumData } from '@/widgets/HIAWms/Models/Service/WmsMaterialDrawer'
 
 export const useWmsContainerDrawer = (props: any, ctx?: any) => {
   const wmsContainerDrawer =
@@ -16,6 +26,18 @@
   const formData = ref<Record<string, any>>({})
   // ref
   const formRef = ref()
+  const disabled = ref(false)
+
+  const inputNumber = (attrs) => {
+    return (
+      <el-input-number
+        min="1"
+        step="1"
+        precision="0"
+        {...attrs}
+      ></el-input-number>
+    )
+  }
 
   const current = computed(() => {
     return props.row || null
@@ -44,11 +66,7 @@
       prop: 'containerType',
       el: 'select',
       placeholder: '璇烽�夋嫨鎵樼洏绫诲瀷',
-      options: [
-        { label: '绫诲瀷1', value: 0 },
-        { label: '绫诲瀷2', value: 1 },
-        // 娣诲姞鎵�鏈夋灇涓惧��
-      ],
+      options: [],
       rules: [{ required: true, message: '璇烽�夋嫨鎵樼洏绫诲瀷', trigger: 'change' }],
     },
     {
@@ -56,17 +74,20 @@
       prop: 'containerStatus',
       el: 'select',
       placeholder: '璇烽�夋嫨鎵樼洏鐘舵��',
-      options: [
-        { label: '鐘舵��1', value: 0 },
-        { label: '鐘舵��2', value: 1 },
-        // 娣诲姞鎵�鏈夋灇涓惧��
-      ],
+      options: [],
       rules: [{ required: true, message: '璇烽�夋嫨鎵樼洏鐘舵��', trigger: 'change' }],
     },
     {
       label: '闀垮害(mm)',
       prop: 'specLength',
-      el: 'input',
+      el: (props: any, { attrs }: SetupContext) => {
+        return h(inputNumber, {
+          ...props,
+          clearable: true,
+          ...attrs,
+        })
+      },
+      width: '100%',
       placeholder: '璇疯緭鍏ラ暱搴�',
       step: 0.01,
       precision: 2,
@@ -74,7 +95,14 @@
     {
       label: '瀹藉害(mm)',
       prop: 'specWidth',
-      el: 'input',
+      el: (props: any, { attrs }: SetupContext) => {
+        return h(inputNumber, {
+          ...props,
+          clearable: true,
+          ...attrs,
+        })
+      },
+      width: '100%',
       placeholder: '璇疯緭鍏ュ搴�',
       step: 0.01,
       precision: 2,
@@ -82,15 +110,74 @@
     {
       label: '楂樺害(mm)',
       prop: 'specHeight',
-      el: 'input',
+      el: (props: any, { attrs }: SetupContext) => {
+        return h(inputNumber, {
+          ...props,
+          clearable: true,
+          ...attrs,
+        })
+      },
+      width: '100%',
       placeholder: '璇疯緭鍏ラ珮搴�',
       step: 0.01,
       precision: 2,
     },
     {
+      label: '闄愰暱(mm)',
+      prop: 'limitLength',
+      el: (props: any, { attrs }: SetupContext) => {
+        return h(inputNumber, {
+          ...props,
+          clearable: true,
+          ...attrs,
+        })
+      },
+      width: '100%',
+      placeholder: '璇疯緭鍏ヨ浇閲嶄笂闄�',
+      step: 0.1,
+      precision: 2,
+    },
+    {
+      label: '闄愬(mm)',
+      prop: 'limitWidth',
+      el: (props: any, { attrs }: SetupContext) => {
+        return h(inputNumber, {
+          ...props,
+          clearable: true,
+          ...attrs,
+        })
+      },
+      width: '100%',
+      placeholder: '璇疯緭鍏ヨ浇閲嶄笂闄�',
+      step: 0.1,
+      precision: 2,
+    },
+    {
+      label: '闄愰珮(mm)',
+      prop: 'limitHeight',
+      el: (props: any, { attrs }: SetupContext) => {
+        return h(inputNumber, {
+          ...props,
+          clearable: true,
+          ...attrs,
+        })
+      },
+      width: '100%',
+      placeholder: '璇疯緭鍏ヨ浇閲嶄笂闄�',
+      step: 0.1,
+      precision: 2,
+    },
+    {
       label: '杞介噸涓婇檺(kg)',
       prop: 'maxWeight',
-      el: 'input',
+      el: (props: any, { attrs }: SetupContext) => {
+        return h(inputNumber, {
+          ...props,
+          clearable: true,
+          ...attrs,
+        })
+      },
+      width: '100%',
       placeholder: '璇疯緭鍏ヨ浇閲嶄笂闄�',
       step: 0.1,
       precision: 2,
@@ -168,10 +255,31 @@
       },
     }
   }
+
+  const updateFormItemOptions = (propName: string, enumData: any[]) => {
+    const item = formItems.find((item) => item.prop === propName)
+    if (item && enumData) {
+      item.options = enumData.map((item) => ({
+        label: item.description,
+        value: item.value,
+      }))
+    }
+  }
+
   /**
    * 寮圭獥鎵撳紑鑾峰彇璇︽儏
    */
   const onOpen = async () => {
+    const containerTypeEnum = await getWmsEnumData({
+      EnumName: 'ContainerTypeEnum',
+    })
+    updateFormItemOptions('containerType', containerTypeEnum)
+
+    const containerStatusEnum = await getWmsEnumData({
+      EnumName: 'ContainerStatusEnum',
+    })
+    updateFormItemOptions('containerStatus', containerStatusEnum)
+
     if (current.value) {
       const res = await wmsContainerDrawer.getWmsContainerDetail(current.value)
 
@@ -190,8 +298,10 @@
         id: res.id,
       }
       updateCheckData()
+      disabled.value = true
     } else {
       formData.value = {}
+      disabled.value = false
       updateCheckData()
     }
   }
diff --git a/HIAWms/web/src/widgets/WmsContainer/Models/Service/WmsContainerDrawer.ts b/HIAWms/web/src/widgets/WmsContainer/Models/Service/WmsContainerDrawer.ts
index 6fbadfb..af31ea3 100644
--- a/HIAWms/web/src/widgets/WmsContainer/Models/Service/WmsContainerDrawer.ts
+++ b/HIAWms/web/src/widgets/WmsContainer/Models/Service/WmsContainerDrawer.ts
@@ -24,3 +24,11 @@
 export const updateWmsContainer = (id: string, data: Record<string, any>) => {
   return request.put(`/api/v1/HIAWms/wmsContainer/${id}`, data)
 }
+
+/**
+ * 鑾峰彇鏋氫妇
+ * @returns
+ */
+export const getWmsEnumData = (data: any) => {
+  return request.post('/api/v1/hIAWms/WmsEnum', data)
+}
diff --git a/HIAWms/web/src/widgets/WmsContainer/Views/Pages/Dialog/WmsContainerDrawer/WmsContainerDrawer.tsx b/HIAWms/web/src/widgets/WmsContainer/Views/Pages/Dialog/WmsContainerDrawer/WmsContainerDrawer.tsx
index a808dc9..007ea00 100644
--- a/HIAWms/web/src/widgets/WmsContainer/Views/Pages/Dialog/WmsContainerDrawer/WmsContainerDrawer.tsx
+++ b/HIAWms/web/src/widgets/WmsContainer/Views/Pages/Dialog/WmsContainerDrawer/WmsContainerDrawer.tsx
@@ -1,7 +1,7 @@
 import { SetupContext, defineComponent } from 'vue'
 import BaseDrawer from '@/components/BaseDrawer/BaseDrawer'
 import styles from './WmsContainerDrawer.module.scss'
-import { useWmsContainerDrawer } from '../../../../Controllers/WmsContainerDrawer'
+import { useWmsContainerDrawer } from '../../../../Controllers/WmsContainerDrawer.tsx'
 import DyForm from '@/components/DyForm/DyForm'
 
 // @ts-ignore
diff --git a/HIAWms/web/src/widgets/WmsContainer/Views/Pages/WmsContainer/Config.ts b/HIAWms/web/src/widgets/WmsContainer/Views/Pages/WmsContainer/Config.ts
index e533c6f..0689813 100644
--- a/HIAWms/web/src/widgets/WmsContainer/Views/Pages/WmsContainer/Config.ts
+++ b/HIAWms/web/src/widgets/WmsContainer/Views/Pages/WmsContainer/Config.ts
@@ -9,11 +9,11 @@
     title: '鎵樼洏缂栧彿',
   },
   {
-    field: 'containerType',
+    field: 'containerTypeDesc',
     title: '鎵樼洏绫诲瀷',
   },
   {
-    field: 'containerStatus',
+    field: 'containerStatusDesc',
     title: '鎵樼洏鐘舵��',
   },
   {
@@ -44,14 +44,14 @@
     field: 'maxWeight',
     title: '杞介噸涓婇檺',
   },
-  {
-    field: 'exceptionNumber',
-    title: '寮傚父鏁伴噺',
-  },
-  {
-    field: 'materialNumber',
-    title: '鐗╂枡鏁伴噺',
-  },
+  // {
+  //   field: 'exceptionNumber',
+  //   title: '寮傚父鏁伴噺',
+  // },
+  // {
+  //   field: 'materialNumber',
+  //   title: '鐗╂枡鏁伴噺',
+  // },
   {
     field: 'remark',
     title: '澶囨敞',
diff --git a/HIAWms/web/src/widgets/WmsContainer/Views/Pages/WmsContainer/WmsContainer.module.scss b/HIAWms/web/src/widgets/WmsContainer/Views/Pages/WmsContainer/WmsContainer.module.scss
index 7bc2c27..a3049f6 100644
--- a/HIAWms/web/src/widgets/WmsContainer/Views/Pages/WmsContainer/WmsContainer.module.scss
+++ b/HIAWms/web/src/widgets/WmsContainer/Views/Pages/WmsContainer/WmsContainer.module.scss
@@ -1,6 +1,6 @@
 .wmsContainerContent {
   width: 100%;
-  height: 100%;
+  height: 90%;
 
   .wmsContainerList {
     width: 100%;
@@ -75,3 +75,40 @@
 .hideBlock {
   display: none;
 }
+
+.queryForm {
+  padding: 10px;
+  background: #f5f7fa;
+  margin-bottom: 0px;
+  border-radius: 4px;
+  
+  .el-form-item {
+    margin-right: 20px;
+    margin-bottom: 0;
+    
+    // 缁熶竴杈撳叆妗嗗拰閫夋嫨妗嗙殑瀹藉害
+    .el-input, .el-select {
+      width: 200px; // 璁剧疆缁熶竴鐨勫搴�
+    }
+    
+    // 閫夋嫨妗嗗唴閮ㄨ緭鍏ユ鏍峰紡
+    .el-select .el-input__wrapper {
+      height: 32px; // 涓庤緭鍏ユ楂樺害涓�鑷�
+      padding: 1px 11px; // 涓庤緭鍏ユ鍐呰竟璺濅竴鑷�
+    }
+    
+    // 鏃ユ湡閫夋嫨鍣ㄥ搴�
+    .el-date-editor {
+      width: 220px;
+    }
+  }
+}
+
+// 濡傛灉闇�瑕佹洿绮剧‘鐨勬帶鍒讹紝鍙互鍗曠嫭璁剧疆
+.formItem {
+  width: 200px;
+  
+  &.el-input, &.el-select {
+    width: 100%;
+  }
+}
\ No newline at end of file
diff --git a/HIAWms/web/src/widgets/WmsContainer/Views/Pages/WmsContainer/WmsContainer.tsx b/HIAWms/web/src/widgets/WmsContainer/Views/Pages/WmsContainer/WmsContainer.tsx
index 3ae58c2..62624bf 100644
--- a/HIAWms/web/src/widgets/WmsContainer/Views/Pages/WmsContainer/WmsContainer.tsx
+++ b/HIAWms/web/src/widgets/WmsContainer/Views/Pages/WmsContainer/WmsContainer.tsx
@@ -1,4 +1,4 @@
-import { defineComponent } from 'vue'
+import { computed, defineComponent, onMounted, reactive, ref } from 'vue'
 import type { Ref } from 'vue'
 import BaseTable from '@/components/Table/Table'
 import styles from './WmsContainer.module.scss'
@@ -9,6 +9,8 @@
 import { columns } from './Config'
 import TdButton from '@/components/TdButton/TdButton'
 import { vPermission } from '@/libs/Permission/Permission'
+import { getWmsEnumData } from '@/widgets/HIAWms/Models/Service/WmsMaterialDrawer'
+import { ElForm, ElFormItem, ElInput, ElOption, ElSelect } from 'element-plus'
 
 interface RenderTableType {
   url?: string
@@ -46,6 +48,73 @@
       onSuccess,
       onBeforeUpload,
     } = useWmsContainer(props, ctx)
+
+    // 鏂板鐨勬煡璇㈡潯浠�
+    const queryForm = ref({
+      containerNo: '',
+      containerType: '',
+      containerStatus: '',
+      filter: '',
+    })
+
+    const queryParams = computed(() => ({
+      ...queryForm.value,
+      containerType: queryForm.value.containerType || '', // 澶勭悊涓嬫媺
+      containerStatus: queryForm.value.containerStatus || '',
+    }))
+
+    // 鍔ㄦ�佹灇涓鹃�夐」
+    const enumOptions = reactive({
+      containerType: [] as Array<{ label: string; value: any }>,
+      containerStatus: [] as Array<{ label: string; value: any }>,
+    })
+
+    // 鑾峰彇鏋氫妇鏁版嵁
+    const fetchEnumData = async () => {
+      try {
+        // 鑾峰彇鐗╂枡绫诲瀷鏋氫妇
+        const containerTypeData = await getWmsEnumData({
+          EnumName: 'ContainerTypeEnum',
+        })
+        enumOptions.containerType = containerTypeData.map((item) => ({
+          label: item.description,
+          value: item.value,
+        }))
+
+        // 鑾峰彇閲囪喘绫诲瀷鏋氫妇
+        const containerStatusData = await getWmsEnumData({
+          EnumName: 'ContainerStatusEnum',
+        })
+        enumOptions.containerStatus = containerStatusData.map((item) => ({
+          label: item.description,
+          value: item.value,
+        }))
+      } catch (error) {
+        console.error('鑾峰彇鏋氫妇鏁版嵁澶辫触:', error)
+      }
+    }
+
+    // 缁勪欢鎸傝浇鏃惰幏鍙栨灇涓炬暟鎹�
+    onMounted(() => {
+      fetchEnumData()
+    })
+
+    // 鏂板鐨勬煡璇㈡柟娉�
+    const handleQuery = async () => {
+      console.log('鏌ヨ鏉′欢:', queryParams.value)
+      // tableRef.value.getTableList()
+      tableRef.value.getList(queryParams.value)
+    }
+
+    // 閲嶇疆鏌ヨ鏉′欢
+    const resetQuery = () => {
+      queryForm.value = {
+        containerNo: '',
+        containerType: '',
+        containerStatus: '',
+        filter: '',
+      }
+    }
 
     /**
      * @returns 琛ㄦ牸
@@ -114,6 +183,88 @@
             sort={sort.value}
             onConfirm={onConfirmWmsContainer}
           />
+
+          {/* 鏂板鐨勬煡璇㈣〃鍗� */}
+          <ElForm
+            inline
+            model={queryForm.value}
+            class={styles.queryForm}
+            label-width="80px"
+          >
+            <ElFormItem label="鍏抽敭瀛�">
+              <ElInput
+                v-model={queryForm.value.filter}
+                placeholder="璇疯緭鍏ュ叧閿瓧鎼滅储"
+                clearable
+                class={styles.formItem}
+              />
+            </ElFormItem>
+            <ElFormItem label="鐗╂枡缂栫爜">
+              <ElInput
+                v-model={queryForm.value.containerNo}
+                placeholder="璇疯緭鍏ユ墭鐩樼紪鐮�"
+                clearable
+                class={styles.formItem}
+              />
+            </ElFormItem>
+            <ElFormItem label="鐗╂枡绫诲瀷">
+              <ElSelect
+                v-model={queryForm.value.containerType}
+                placeholder="璇烽�夋嫨鎵樼洏绫诲瀷"
+                clearable
+                loading={enumOptions.containerType.length === 0}
+                class={styles.formItem}
+              >
+                {enumOptions.containerType.map((option) => (
+                  <ElOption
+                    key={option.value}
+                    label={option.label}
+                    value={option.value}
+                  />
+                ))}
+              </ElSelect>
+            </ElFormItem>
+            <ElFormItem label="鎵樼洏鐘舵��">
+              <ElSelect
+                v-model={queryForm.value.containerStatus}
+                placeholder="璇烽�夋嫨鎵樼洏鐘舵��"
+                clearable
+                loading={enumOptions.containerStatus.length === 0}
+                class={styles.formItem}
+              >
+                {enumOptions.containerStatus.map((option) => (
+                  <ElOption
+                    key={option.value}
+                    label={option.label}
+                    value={option.value}
+                  />
+                ))}
+              </ElSelect>
+            </ElFormItem>
+            {/* <ElFormItem label="鏃ユ湡鑼冨洿">
+              <ElDatePicker
+                v-model={queryForm.value.dateRange}
+                type="daterange"
+                range-separator="鑷�"
+                start-placeholder="寮�濮嬫棩鏈�"
+                end-placeholder="缁撴潫鏃ユ湡"
+                value-format="YYYY-MM-DD"
+              />
+            </ElFormItem> */}
+            <ElFormItem>
+              <IconButton type="primary" icon="search" onClick={handleQuery}>
+                鏌ヨ
+              </IconButton>
+              <IconButton
+                style="margin-left: 10px;"
+                icon="refresh"
+                onClick={resetQuery}
+              >
+                閲嶇疆
+              </IconButton>
+            </ElFormItem>
+          </ElForm>
+
           <div class={styles.headerContent}>
             <div class={styles.header}>
               <IconButton

--
Gitblit v1.9.3