From 04db66bdb3d1fb89fb3ff2c3c2893c93a3802230 Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周四, 08 5月 2025 19:03:05 +0800
Subject: [PATCH] 10、列表中,所有列需要配置width,建议等于160,如果是时间列,建议是200

---
 Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Models/WmsMaterial.ts                                                        |   41 
 Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Controllers/WmsMaterial.ts                                                   |  275 +++++
 Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/Controller/WmsMaterialController.cs                                                      |   34 
 Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/type/type.d.ts                                                               |   45 
 Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Models/Service/WmsMaterial.ts                                                |   30 
 Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Views/Pages/Dialog/WmsMaterialQueryDrawer/WmsMaterialQueryDrawer.module.scss |    3 
 Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsMaterialRepository.cs                          |   10 
 Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Views/WmsMaterial.tsx                                                        |   80 +
 Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Views/Pages/Dialog/WmsMaterialQueryDrawer/WmsMaterialQueryDrawer.tsx         |   71 +
 Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Views/config/WmsMaterial.json                                                |    3 
 Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/templatedemo_web/components.d.ts                                                                                      |    1 
 Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialAppService.cs                                          |  172 ++-
 Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Views/Pages/WmsMaterial/WmsMaterial.module.scss                              |  113 ++
 Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsMaterial导出模板.xlsx                                                 |    0 
 Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/index.ts                                                                     |   14 
 Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialCreateOrUpdateDtoBase.cs               |   30 
 Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Models/Service/WmsMaterialDrawer.ts                                          |   34 
 Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/GetWmsMaterialInput.cs                            |   72 +
 Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/templatedemo_web/src/config/menu.ts                                                                                   |   14 
 Weben_CMS专用代码生成器/Code/Utility/StructStrHelper.cs                                                                                                              |   16 
 Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsMaterialAutoMapperProfile.cs                               |   52 
 Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Models/WmsMaterialDrawer.ts                                                  |   44 
 Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Views/Pages/Dialog/WmsMaterialDrawer/WmsMaterialDrawer.module.scss           |    3 
 Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialDto.cs                                 |   60 
 Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Views/Pages/WmsMaterial/WmsMaterial.tsx                                      |  373 +++++++
 Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Controllers/File.ts                                                          |   31 
 Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Views/WmsMaterial.module.scss                                                |    7 
 Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialExportModel.cs                         |   31 
 Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Controllers/WmsMaterialDrawer.tsx                                            |  427 +++++++++
 Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Models/Service/WmsMaterialQueryDrawer.ts                                     |   35 
 Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Models/WmsMaterialQueryDrawer.ts                                             |   44 
 Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Views/Pages/WmsMaterial/Config.ts                                            |  132 ++
 Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Views/Pages/Dialog/WmsMaterialDrawer/WmsMaterialDrawer.tsx                   |   61 +
 Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Controllers/WmsMaterialQueryDrawer.tsx                                       |  427 +++++++++
 Weben_CMS专用代码生成器/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/enum.ts                                                                      |   15 
 35 files changed, 2,647 insertions(+), 153 deletions(-)

diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Utility/StructStrHelper.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Utility/StructStrHelper.cs"
index 086c554..1eef254 100644
--- "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Utility/StructStrHelper.cs"
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Utility/StructStrHelper.cs"
@@ -2292,6 +2292,22 @@
                         sb.Append("  field: '" + lowerCaseColumnName + "', \n");
                     }
                     sb.Append("  title: '" + columnModel.Description + "', \n");
+                    //鑾峰彇鏁版嵁绫诲瀷
+                    //璁剧疆瀹藉害
+                    DataTypeEnum enumDT = (DataTypeEnum)Enum.Parse(typeof(DataTypeEnum), "dt_" + columnModel.DataType.ToString());
+                    switch (enumDT)
+                    {
+                        case DataTypeEnum.dt_datetime:
+                            sb.Append("  width:180, \n");
+                            break;
+                        case DataTypeEnum.dt_bit:
+                        case DataTypeEnum.dt_tinyint:
+                            sb.Append("  width:80, \n");
+                            break;
+                        default:
+                            sb.Append("  width:160, \n");
+                            break;
+                    }
                     sb.Append("}, \n");
                 }
                 //鍘绘帀鏈�鍚庝竴涓�,
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/GetWmsMaterialInput.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/GetWmsMaterialInput.cs"
index b097042..8319228 100644
--- "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/GetWmsMaterialInput.cs"
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/GetWmsMaterialInput.cs"
@@ -234,7 +234,7 @@
         public SearchFilterModeEnum IsDisabled_FilterMode { get; set; }= SearchFilterModeEnum.绮惧噯鏌ヨ;
 
         /// <summary>
-        /// 
+        /// 鍒涘缓鏃堕棿
         /// </summary>
         //琛ㄧず鏄� 楂樼骇鏌ヨ鑼冨洿鏌ヨ鐗规��
         [HighSearchRangeAttribute]
@@ -242,17 +242,17 @@
 
 
         /// <summary>
-        /// 
+        /// 鍒涘缓浜篒D
         /// </summary>
         public string CreatorId { get; set; }
 
         /// <summary>
-        /// -鏌ヨ鍏崇郴杩愮畻绗� 
+        /// 鍒涘缓浜篒D-鏌ヨ鍏崇郴杩愮畻绗� 
         /// </summary>
         public SearchFilterModeEnum CreatorId_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ;
 
         /// <summary>
-        /// 
+        /// 淇敼鏃堕棿
         /// </summary>
         //琛ㄧず鏄� 楂樼骇鏌ヨ鑼冨洿鏌ヨ鐗规��
         [HighSearchRangeAttribute]
@@ -260,42 +260,92 @@
 
 
         /// <summary>
-        /// 
+        /// 淇敼浜篒D
         /// </summary>
         public string LastModifierId { get; set; }
 
         /// <summary>
-        /// -鏌ヨ鍏崇郴杩愮畻绗� 
+        /// 淇敼浜篒D-鏌ヨ鍏崇郴杩愮畻绗� 
         /// </summary>
         public SearchFilterModeEnum LastModifierId_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ;
 
         /// <summary>
-        /// 
+        /// 鏄惁鍒犻櫎
         /// </summary>
         public bool?  IsDeleted { get; set; }
 
         /// <summary>
-        /// -鏌ヨ鍏崇郴杩愮畻绗� 
+        /// 鏄惁鍒犻櫎-鏌ヨ鍏崇郴杩愮畻绗� 
         /// </summary>
         public SearchFilterModeEnum IsDeleted_FilterMode { get; set; }= SearchFilterModeEnum.绮惧噯鏌ヨ;
 
         /// <summary>
-        /// 
+        /// 鍒犻櫎浜篒D
         /// </summary>
         public string DeleterId { get; set; }
 
         /// <summary>
-        /// -鏌ヨ鍏崇郴杩愮畻绗� 
+        /// 鍒犻櫎浜篒D-鏌ヨ鍏崇郴杩愮畻绗� 
         /// </summary>
         public SearchFilterModeEnum DeleterId_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ;
 
         /// <summary>
-        /// 
+        /// 鍒犻櫎鏃堕棿
         /// </summary>
         //琛ㄧず鏄� 楂樼骇鏌ヨ鑼冨洿鏌ヨ鐗规��
         [HighSearchRangeAttribute]
         public List<string> DeletionTime { get; set; }
 
 
+        /// <summary>
+        /// 鍒涘缓浜�
+        /// </summary>
+        public string CreatorName { get; set; }
+
+        /// <summary>
+        /// 鍒涘缓浜�-鏌ヨ鍏崇郴杩愮畻绗� 
+        /// </summary>
+        public SearchFilterModeEnum CreatorName_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ;
+
+        /// <summary>
+        /// 淇敼浜�
+        /// </summary>
+        public string LastModifierName { get; set; }
+
+        /// <summary>
+        /// 淇敼浜�-鏌ヨ鍏崇郴杩愮畻绗� 
+        /// </summary>
+        public SearchFilterModeEnum LastModifierName_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ;
+
+        /// <summary>
+        /// 鎵╁睍瀛楁1
+        /// </summary>
+        public string ExtraField1 { get; set; }
+
+        /// <summary>
+        /// 鎵╁睍瀛楁1-鏌ヨ鍏崇郴杩愮畻绗� 
+        /// </summary>
+        public SearchFilterModeEnum ExtraField1_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ;
+
+        /// <summary>
+        /// 鎵╁睍瀛楁2
+        /// </summary>
+        public string ExtraField2 { get; set; }
+
+        /// <summary>
+        /// 鎵╁睍瀛楁2-鏌ヨ鍏崇郴杩愮畻绗� 
+        /// </summary>
+        public SearchFilterModeEnum ExtraField2_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ;
+
+        /// <summary>
+        /// 鎵╁睍瀛楁3
+        /// </summary>
+        public string ExtraField3 { get; set; }
+
+        /// <summary>
+        /// 鎵╁睍瀛楁3-鏌ヨ鍏崇郴杩愮畻绗� 
+        /// </summary>
+        public SearchFilterModeEnum ExtraField3_FilterMode { get; set; }= SearchFilterModeEnum.妯$硦鏌ヨ;
+
  
 } 
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialCreateOrUpdateDtoBase.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialCreateOrUpdateDtoBase.cs"
index 136291a..9dfd47c 100644
--- "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialCreateOrUpdateDtoBase.cs"
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialCreateOrUpdateDtoBase.cs"
@@ -1,4 +1,5 @@
 using CMS.Plugin.HIAWms.Domain.Shared.Enums; 
+using System; 
 using Volo.Abp.Application.Dtos; 
  
 namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterial; 
@@ -104,15 +105,40 @@
         public bool? IsDisabled { get; set; }
 
         /// <summary>
-        /// 
+        /// 鍒涘缓浜篒D
         /// </summary>
         public string? CreatorId { get; set; }
 
         /// <summary>
-        /// 
+        /// 淇敼浜篒D
         /// </summary>
         public string? LastModifierId { get; set; }
 
+        /// <summary>
+        /// 鍒涘缓浜�
+        /// </summary>
+        public string? CreatorName { get; set; }
+
+        /// <summary>
+        /// 淇敼浜�
+        /// </summary>
+        public string? LastModifierName { get; set; }
+
+        /// <summary>
+        /// 鎵╁睍瀛楁1
+        /// </summary>
+        public string? ExtraField1 { get; set; }
+
+        /// <summary>
+        /// 鎵╁睍瀛楁2
+        /// </summary>
+        public string? ExtraField2 { get; set; }
+
+        /// <summary>
+        /// 鎵╁睍瀛楁3
+        /// </summary>
+        public string? ExtraField3 { get; set; }
+
  
  
     /// <summary> 
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialDto.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialDto.cs"
index f67f983..51e0ed7 100644
--- "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialDto.cs"
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialDto.cs"
@@ -1,4 +1,5 @@
 using CMS.Plugin.HIAWms.Domain.Shared.Enums; 
+using CmsQueryExtensions; 
 using Volo.Abp.Application.Dtos; 
 using Volo.Abp.Data; 
 using Volo.Abp.Domain.Entities; 
@@ -127,9 +128,19 @@
         public int Sort { get; set; }
 
         /// <summary>
+        /// 鎵╁睍灞炴��
+        /// </summary>
+        public ExtraPropertyDictionary? ExtraProperties { get; set; }
+
+        /// <summary>
         /// 澶囨敞
         /// </summary>
         public string? Remark { get; set; }
+
+        /// <summary>
+        /// 骞跺彂鎴�
+        /// </summary>
+        public string? ConcurrencyStamp { get; set; }
 
         /// <summary>
         /// 鏄惁绂佺敤
@@ -137,50 +148,65 @@
         public bool? IsDisabled { get; set; }
 
         /// <summary>
-        /// 
-        /// </summary>
-        public ExtraPropertyDictionary? ExtraProperties { get; set; }
-
-        /// <summary>
-        /// 
-        /// </summary>
-        public string? ConcurrencyStamp { get; set; }
-
-        /// <summary>
-        /// 
+        /// 鍒涘缓鏃堕棿
         /// </summary>
         public DateTime CreationTime { get; set; }
 
         /// <summary>
-        /// 
+        /// 鍒涘缓浜篒D
         /// </summary>
         public string? CreatorId { get; set; }
 
         /// <summary>
-        /// 
+        /// 淇敼鏃堕棿
         /// </summary>
         public DateTime? LastModificationTime { get; set; }
 
         /// <summary>
-        /// 
+        /// 淇敼浜篒D
         /// </summary>
         public string? LastModifierId { get; set; }
 
         /// <summary>
-        /// 
+        /// 鏄惁鍒犻櫎
         /// </summary>
         public bool IsDeleted { get; set; }
 
         /// <summary>
-        /// 
+        /// 鍒犻櫎浜篒D
         /// </summary>
         public string? DeleterId { get; set; }
 
         /// <summary>
-        /// 
+        /// 鍒犻櫎鏃堕棿
         /// </summary>
         public DateTime? DeletionTime { get; set; }
 
+        /// <summary>
+        /// 鍒涘缓浜�
+        /// </summary>
+        public string? CreatorName { get; set; }
+
+        /// <summary>
+        /// 淇敼浜�
+        /// </summary>
+        public string? LastModifierName { get; set; }
+
+        /// <summary>
+        /// 鎵╁睍瀛楁1
+        /// </summary>
+        public string? ExtraField1 { get; set; }
+
+        /// <summary>
+        /// 鎵╁睍瀛楁2
+        /// </summary>
+        public string? ExtraField2 { get; set; }
+
+        /// <summary>
+        /// 鎵╁睍瀛楁3
+        /// </summary>
+        public string? ExtraField3 { get; set; }
+
  
  
     /// <summary> 
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialExportModel.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialExportModel.cs"
index c75b208..0b08f4d 100644
--- "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialExportModel.cs"
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialExportModel.cs"
@@ -1,5 +1,6 @@
 using MiniExcelLibs.Attributes; 
 using System.ComponentModel.DataAnnotations; 
+using System; 
 using System.ComponentModel; 
 using CMS.Plugin.HIAWms.Domain.Shared.Enums; 
 namespace CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterial; 
@@ -123,6 +124,36 @@
         [ExcelColumn(Name = "鏄惁绂佺敤", Width = 25)]
         public bool? IsDisabled { get; set; }
 
+        /// <summary>
+        /// 鍒涘缓浜�
+        /// </summary>
+        [ExcelColumn(Name = "鍒涘缓浜�", Width = 25)]
+        public string CreatorName { get; set; }
+
+        /// <summary>
+        /// 淇敼浜�
+        /// </summary>
+        [ExcelColumn(Name = "淇敼浜�", Width = 25)]
+        public string LastModifierName { get; set; }
+
+        /// <summary>
+        /// 鎵╁睍瀛楁1
+        /// </summary>
+        [ExcelColumn(Name = "鎵╁睍瀛楁1", Width = 25)]
+        public string ExtraField1 { get; set; }
+
+        /// <summary>
+        /// 鎵╁睍瀛楁2
+        /// </summary>
+        [ExcelColumn(Name = "鎵╁睍瀛楁2", Width = 25)]
+        public string ExtraField2 { get; set; }
+
+        /// <summary>
+        /// 鎵╁睍瀛楁3
+        /// </summary>
+        [ExcelColumn(Name = "鎵╁睍瀛楁3", Width = 25)]
+        public string ExtraField3 { get; set; }
+
  
  
     public Dictionary<string, object> GetExportData() 
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialAppService.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialAppService.cs"
index c51a507..51058cb 100644
--- "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialAppService.cs"
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialAppService.cs"
@@ -1,8 +1,7 @@
 using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterial; 
 using CMS.Plugin.HIAWms.Application.Contracts.Services; 
 using CMS.Plugin.HIAWms.Domain.Shared; 
-using CMS.Plugin.HIAWms.Domain.Shared.Util; 
-using CMS.Plugin.HIAWms.Domain.Shared.WmsMaterial; 
+using CmsQueryExtensions; 
 using CMS.Plugin.HIAWms.Domain.WmsMaterial; 
 using CmsQueryExtensions.Extension; 
 using System.Linq.Expressions; 
@@ -19,15 +18,15 @@
 /// </summary> 
 public class WmsMaterialAppService : CMSPluginAppService, IWmsMaterialAppService 
 { 
-    private readonly IWmsMaterialRepository wmsmaterialsRepository; 
+    private readonly IWmsMaterialRepository wmsMaterialRepository; 
  
     /// <summary> 
     /// Initializes a new instance of the <see cref="WmsMaterialAppService"/> class. 
     /// </summary> 
     /// <param name="WmsMaterialRepository">The task job repository.</param> 
-    public WmsMaterialAppService(IWmsMaterialRepository WmsMaterialRepository) 
+    public WmsMaterialAppService(IWmsMaterialRepository _WmsMaterialRepository) 
     { 
-        wmsmaterialsRepository = WmsMaterialRepository; 
+        wmsMaterialRepository = _WmsMaterialRepository; 
     } 
  
     /// <summary> 
@@ -37,7 +36,7 @@
     /// <returns></returns> 
     public virtual async Task<WmsMaterialDto> GetAsync(Guid id) 
     { 
-        return ObjectMapper.Map<WmsMaterial, WmsMaterialDto>(await wmsmaterialsRepository.GetAsync(id)); 
+        return ObjectMapper.Map<WmsMaterial, WmsMaterialDto>(await wmsMaterialRepository.GetAsync(id)); 
     } 
  
     /// <summary> 
@@ -61,8 +60,8 @@
  
         #endregion 
  
-        var count = await wmsmaterialsRepository.GetCountAsync(whereConditions); 
-        var list = await wmsmaterialsRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount); 
+        var count = await wmsMaterialRepository.GetCountAsync(whereConditions); 
+        var list = await wmsMaterialRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount); 
  
         return new PagedResultDto<WmsMaterialDto>(count, ObjectMapper.Map<List<WmsMaterial>, List<WmsMaterialDto>>(list)); 
     } 
@@ -100,27 +99,25 @@
     { 
         await CheckCreateOrUpdateDtoAsync(input); 
  
-        var exist = await wmsmaterialsRepository.NameExistAsync(input.MaterialCode); 
+        var exist = await wmsMaterialRepository.NameExistAsync(input.MaterialCode); 
         if (exist) 
         { 
             throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.MaterialCode]); 
         } 
  
-        var maxSort = await wmsmaterialsRepository.GetMaxSortAsync(); 
+        var maxSort = await wmsMaterialRepository.GetMaxSortAsync(); 
         var sort = input.Sort ?? maxSort; 
  
         var insertObj = ObjectMapper.Map<WmsMaterialCreateDto, WmsMaterial>(input); 
         insertObj.Sort = sort; 
         input.MapExtraPropertiesTo(insertObj, MappingPropertyDefinitionChecks.None); 
-
-    
  
-        await wmsmaterialsRepository.InsertAsync(insertObj); 
+        await wmsMaterialRepository.InsertAsync(insertObj); 
  
-        if (input.Sort.HasValue && insertObj.Sort != maxSort) 
-        { 
-            await AdjustSortAsync(insertObj.Id, insertObj.Sort); 
-        } 
+        //if (input.Sort.HasValue && insertObj.Sort != maxSort) 
+        //{ 
+        //    await AdjustSortAsync(insertObj.Id, insertObj.Sort); 
+        //} 
  
         return ObjectMapper.Map<WmsMaterial, WmsMaterialDto>(insertObj); 
     } 
@@ -136,8 +133,8 @@
     { 
         await CheckCreateOrUpdateDtoAsync(input); 
  
-        var updateObj = await wmsmaterialsRepository.GetAsync(id); 
-        var exist = await wmsmaterialsRepository.NameExistAsync(input.MaterialCode, updateObj.Id); 
+        var updateObj = await wmsMaterialRepository.GetAsync(id); 
+        var exist = await wmsMaterialRepository.NameExistAsync(input.MaterialCode, updateObj.Id); 
         if (exist) 
         { 
             throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.MaterialCode]); 
@@ -164,9 +161,14 @@
         updateObj.RedundantField3 = input.RedundantField3;
         updateObj.Remark = input.Remark;
         updateObj.IsDisabled = input.IsDisabled;
+        updateObj.CreatorName = input.CreatorName;
+        updateObj.LastModifierName = input.LastModifierName;
+        updateObj.ExtraField1 = input.ExtraField1;
+        updateObj.ExtraField2 = input.ExtraField2;
+        updateObj.ExtraField3 = input.ExtraField3;
  
  
-        await wmsmaterialsRepository.UpdateAsync(updateObj); 
+        await wmsMaterialRepository.UpdateAsync(updateObj); 
  
         return ObjectMapper.Map<WmsMaterial, WmsMaterialDto>(updateObj); 
     } 
@@ -178,21 +180,21 @@
     /// <returns></returns> 
     public async Task<List<WmsMaterialDto>> CloneAsync(IEnumerable<Guid> ids) 
     { 
-        //var wmsmaterialss = new List<WmsMaterial>(); 
+        //var wmsMaterials = new List<WmsMaterial>(); 
         //if (ids != null) 
         //{ 
-        //    var sort = await wmsmaterialsRepository.GetMaxSortAsync(); 
+        //    var sort = await wmsMaterialRepository.GetMaxSortAsync(); 
         //    foreach (var id in ids) 
         //    { 
-        //        var WmsMaterial = await wmsmaterialsRepository.FindAsync(id); 
+        //        var WmsMaterial = await wmsMaterialRepository.FindAsync(id); 
         //        if (WmsMaterial != null) 
         //        { 
         //            var name = WmsMaterial.Name + WmsMaterialConsts.CloneTag; 
         //            var notExist = false; 
         //            while (!notExist) 
         //            { 
-        //                var exist = await wmsmaterialsRepository.NameExistAsync(name); 
-        //                if (exist || wmsmaterialss.Any(x => x.Name == name)) 
+        //                var exist = await wmsMaterialRepository.NameExistAsync(name); 
+        //                if (exist || wmsMaterials.Any(x => x.Name == name)) 
         //                { 
         //                    name += WmsMaterialConsts.CloneTag; 
         //                    continue; 
@@ -201,13 +203,13 @@
         //                notExist = true; 
         //            } 
  
-        //            //WmsMaterial = await wmsmaterialsRepository.InsertAsync(WmsMaterial.Clone(GuidGenerator.Create(), name, sort++)); 
-        //            wmsmaterialss.Add(WmsMaterial); 
+        //            //WmsMaterial = await wmsMaterialRepository.InsertAsync(WmsMaterial.Clone(GuidGenerator.Create(), name, sort++)); 
+        //            wmsMaterials.Add(WmsMaterial); 
         //        } 
         //    } 
         //} 
  
-        //return ObjectMapper.Map<List<WmsMaterial>, List<WmsMaterialDto>>(wmsmaterialss); 
+        //return ObjectMapper.Map<List<WmsMaterial>, List<WmsMaterialDto>>(wmsMaterials); 
         return new List<WmsMaterialDto>(); 
     } 
  
@@ -218,7 +220,7 @@
     /// <returns></returns> 
     public virtual Task DeleteAsync(Guid id) 
     { 
-        return wmsmaterialsRepository.DeleteAsync(id); 
+        return wmsMaterialRepository.DeleteAsync(id); 
     } 
  
     /// <summary> 
@@ -242,7 +244,7 @@
     /// <returns></returns> 
     public virtual async Task AdjustSortAsync(Guid id, int sort) 
     { 
-        var list = await wmsmaterialsRepository.GetListAsync(null, nameof(WmsMaterial.Sort)); 
+        var list = await wmsMaterialRepository.GetListAsync(null, nameof(WmsMaterial.Sort)); 
         if (list != null && list.Any()) 
         { 
             var initSort = 1; 
@@ -269,7 +271,7 @@
             } 
         } 
  
-        await wmsmaterialsRepository.UpdateManyAsync(list); 
+        await wmsMaterialRepository.UpdateManyAsync(list); 
     } 
  
     /// <summary> 
@@ -282,8 +284,8 @@
     { 
         Check.NotNull(input, nameof(input)); 
  
-        var wmsmaterialsCreateDtos = new List<(int RowIndex, WmsMaterialCreateDto Item)>(); 
-        var wmsmaterialsUpdateDtos = new List<(int RowIndex, Guid Id, WmsMaterialUpdateDto Item)>(); 
+        var wmsMaterialCreateDtos = new List<(int RowIndex, WmsMaterialCreateDto Item)>(); 
+        var wmsMaterialUpdateDtos = new List<(int RowIndex, Guid Id, WmsMaterialUpdateDto Item)>(); 
         var importItems = input.WmsMaterials; 
  
         if (importItems != null && importItems.Any()) 
@@ -303,7 +305,7 @@
  
             foreach (var impItem in importItems) 
             { 
-                if (impItem.MaterialCode.IsNullOrWhiteSpace() && impItem.MaterialName.IsNullOrWhiteSpace()) 
+                if (impItem.MaterialCode.IsNullOrWhiteSpace()) 
                 { 
                     continue; 
                 } 
@@ -314,78 +316,98 @@
                     throw new UserFriendlyException(errorMsg); 
                 } 
  
-                var oldWmsMaterial = await wmsmaterialsRepository.FindByNameAsync(impItem.MaterialCode); 
+                var oldWmsMaterial = await wmsMaterialRepository.FindByNameAsync(impItem.MaterialCode); 
                 if (oldWmsMaterial != null) 
                 { 
-                    var wmsmaterialsUpdateDto = new WmsMaterialUpdateDto 
+                    var wmsMaterialUpdateDto = new WmsMaterialUpdateDto 
                     { 
-                        MaterialCode = impItem.MaterialCode, 
-                        MaterialName = impItem.MaterialName, 
-                        PurchaseType = impItem.PurchaseType, 
-                        MaterialType = impItem.MaterialType, 
-                        PrimaryUnit = impItem.PrimaryUnit, 
-                        Standard = impItem.Standard, 
-                        OuterDiameter = impItem.OuterDiameter, 
-                        WallThickness = impItem.WallThickness, 
-                        MaterialQuality = impItem.MaterialQuality, 
-                        Length = impItem.Length, 
-                        IsMainBranch = impItem.IsMainBranch, 
-                        Factory = impItem.Factory, 
-                        Certification = impItem.Certification, 
-                        Remark = impItem.Remark, 
+                        MaterialCode = impItem.MaterialCode,
+MaterialName = impItem.MaterialName,
+PurchaseType = impItem.PurchaseType,
+MaterialType = impItem.MaterialType,
+PrimaryUnit = impItem.PrimaryUnit,
+Standard = impItem.Standard,
+OuterDiameter = impItem.OuterDiameter,
+WallThickness = impItem.WallThickness,
+MaterialQuality = impItem.MaterialQuality,
+Length = impItem.Length,
+IsMainBranch = impItem.IsMainBranch,
+Factory = impItem.Factory,
+Certification = impItem.Certification,
+RedundantField1 = impItem.RedundantField1,
+RedundantField2 = impItem.RedundantField2,
+RedundantField3 = impItem.RedundantField3,
+Remark = impItem.Remark,
+IsDisabled = impItem.IsDisabled,
+CreatorName = impItem.CreatorName,
+LastModifierName = impItem.LastModifierName,
+ExtraField1 = impItem.ExtraField1,
+ExtraField2 = impItem.ExtraField2,
+ExtraField3 = impItem.ExtraField3,
+ 
                     }; 
  
-                    wmsmaterialsUpdateDtos.Add((impItem.RowIndex, oldWmsMaterial.Id, wmsmaterialsUpdateDto)); 
+                    wmsMaterialUpdateDtos.Add((impItem.RowIndex, oldWmsMaterial.Id, wmsMaterialUpdateDto)); 
                 } 
                 else 
                 { 
-                    var wmsmaterialsCreateDto = new WmsMaterialCreateDto 
+                    var wmsMaterialCreateDto = new WmsMaterialCreateDto 
                     { 
-                        MaterialCode = impItem.MaterialCode, 
-                        MaterialName = impItem.MaterialName, 
-                        PurchaseType = impItem.PurchaseType, 
-                        MaterialType = impItem.MaterialType, 
-                        PrimaryUnit = impItem.PrimaryUnit, 
-                        Standard = impItem.Standard, 
-                        OuterDiameter = impItem.OuterDiameter, 
-                        WallThickness = impItem.WallThickness, 
-                        MaterialQuality = impItem.MaterialQuality, 
-                        Length = impItem.Length, 
-                        IsMainBranch = impItem.IsMainBranch, 
-                        Factory = impItem.Factory, 
-                        Certification = impItem.Certification, 
-                        Remark = impItem.Remark, 
+                        MaterialCode = impItem.MaterialCode,
+MaterialName = impItem.MaterialName,
+PurchaseType = impItem.PurchaseType,
+MaterialType = impItem.MaterialType,
+PrimaryUnit = impItem.PrimaryUnit,
+Standard = impItem.Standard,
+OuterDiameter = impItem.OuterDiameter,
+WallThickness = impItem.WallThickness,
+MaterialQuality = impItem.MaterialQuality,
+Length = impItem.Length,
+IsMainBranch = impItem.IsMainBranch,
+Factory = impItem.Factory,
+Certification = impItem.Certification,
+RedundantField1 = impItem.RedundantField1,
+RedundantField2 = impItem.RedundantField2,
+RedundantField3 = impItem.RedundantField3,
+Remark = impItem.Remark,
+IsDisabled = impItem.IsDisabled,
+CreatorName = impItem.CreatorName,
+LastModifierName = impItem.LastModifierName,
+ExtraField1 = impItem.ExtraField1,
+ExtraField2 = impItem.ExtraField2,
+ExtraField3 = impItem.ExtraField3,
+ 
                     }; 
  
-                    wmsmaterialsCreateDtos.Add((impItem.RowIndex, wmsmaterialsCreateDto)); 
+                    wmsMaterialCreateDtos.Add((impItem.RowIndex, wmsMaterialCreateDto)); 
                 } 
             } 
         } 
  
         // 鏂板 
-        foreach (var wmsmaterialsDto in wmsmaterialsCreateDtos) 
+        foreach (var wmsMaterialDto in wmsMaterialCreateDtos) 
         { 
             try 
             { 
-                await CreateAsync(wmsmaterialsDto.Item); 
+                await CreateAsync(wmsMaterialDto.Item); 
             } 
             catch (Exception e) 
             { 
-                var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊wmsmaterialsDto.RowIndex}琛岋細{e.Message}锛岀粓姝㈠鍏�"; 
+                var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊wmsMaterialDto.RowIndex}琛岋細{e.Message}锛岀粓姝㈠鍏�"; 
                 throw new UserFriendlyException(errorMsg); 
             } 
         } 
  
         // 鏇存柊 
-        foreach (var wmsmaterialsDto in wmsmaterialsUpdateDtos) 
+        foreach (var wmsMaterialDto in wmsMaterialUpdateDtos) 
         { 
             try 
             { 
-                await UpdateAsync(wmsmaterialsDto.Id, wmsmaterialsDto.Item); 
+                await UpdateAsync(wmsMaterialDto.Id, wmsMaterialDto.Item); 
             } 
             catch (Exception e) 
             { 
-                var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊wmsmaterialsDto.RowIndex}琛岋細{e.Message}锛岀粓姝㈠鍏�"; 
+                var errorMsg = $"瀵煎叆澶辫触锛侀厤缃紝绗瑊wmsMaterialDto.RowIndex}琛岋細{e.Message}锛岀粓姝㈠鍏�"; 
                 throw new UserFriendlyException(errorMsg); 
             } 
         } 
@@ -413,7 +435,7 @@
         #endregion 
  
  
-        var list = await wmsmaterialsRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount, includeDetails: true); 
+        var list = await wmsMaterialRepository.GetListAsync(whereConditions, input.Sorting, input.MaxResultCount, input.SkipCount, includeDetails: true); 
         var result = ObjectMapper.Map<List<WmsMaterial>, List<WmsMaterialDto>>(list); 
  
         var sheets = new Dictionary<string, object> 
@@ -421,7 +443,7 @@
             ["閰嶇疆"] = ExportHelper.ConvertListToExportData(result), 
         }; 
  
-        var fileName = result.Count > 1 ? "WmsMaterial鍒楄〃" : result.Count == 1 ? result[0]?.MaterialCode : "WmsMaterial妯$増"; 
+        var fileName = result.Count > 1 ? "鐗╂枡鍩虹淇℃伅琛ㄥ垪琛�" : result.Count == 1 ? result[0]?.MaterialCode : "WmsMaterial妯$増"; 
         return (sheets, fileName); 
     } 
  
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsMaterialAutoMapperProfile.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsMaterialAutoMapperProfile.cs"
index a74d8b0..07c29b7 100644
--- "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsMaterialAutoMapperProfile.cs"
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsMaterialAutoMapperProfile.cs"
@@ -1,26 +1,26 @@
-using AutoMapper;
-using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterial;
-using CMS.Plugin.HIAWms.Domain.WmsMaterial;
-using Volo.Abp.ObjectExtending;
-
-namespace CMS.Plugin.HIAWms.Application.MapperProfiles;
-
-/// <summary>
-/// AutoMapper閰嶇疆
-/// </summary>
-/// <seealso cref="AutoMapper.Profile" />
-public class WmsMaterialAutoMapperProfile : Profile
-{
-    /// <summary>
-    /// Initializes a new instance of the <see cref="WmsMaterialAutoMapperProfile"/> class.
-    /// </summary>
-    public WmsMaterialAutoMapperProfile()
-    {
-        /* You can configure your AutoMapper mapping configuration here.
-         * Alternatively, you can split your mapping configurations
-         * into multiple profile classes for a better organization. */
-        CreateMap<WmsMaterial, WmsMaterialDto>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
-        CreateMap<WmsMaterialCreateDto, WmsMaterial>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
-        CreateMap<GetWmsMaterialInput, WmsMaterial>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
-    }
-}
+using AutoMapper; 
+using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterial; 
+using CMS.Plugin.HIAWms.Domain.WmsMaterial; 
+using Volo.Abp.ObjectExtending; 
+ 
+namespace CMS.Plugin.HIAWms.Application.MapperProfiles; 
+ 
+/// <summary> 
+/// 鐗╂枡鍩虹淇℃伅琛ˋutoMapper閰嶇疆 
+/// </summary> 
+/// <seealso cref="AutoMapper.Profile" /> 
+public class WmsMaterialAutoMapperProfile : Profile 
+{ 
+    /// <summary> 
+    /// Initializes a new instance of the <see cref="WmsMaterialAutoMapperProfile"/> class. 
+    /// </summary> 
+    public WmsMaterialAutoMapperProfile() 
+    { 
+        /* You can configure your AutoMapper mapping configuration here. 
+         * Alternatively, you can split your mapping configurations 
+         * into multiple profile classes for a better organization. */ 
+        CreateMap<WmsMaterial, WmsMaterialDto>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None); 
+        CreateMap<WmsMaterialCreateDto, WmsMaterial>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None); 
+        CreateMap<GetWmsMaterialInput, WmsMaterial>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None); 
+    } 
+} 
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsMaterialRepository.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsMaterialRepository.cs"
index 73cd64c..5ea2588 100644
--- "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsMaterialRepository.cs"
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsMaterialRepository.cs"
@@ -35,19 +35,19 @@
         return await (await GetDbSetAsync()) 
             .IncludeDetails() 
             .Where(x => !x.IsDeleted) 
-            .OrderBy(t => t.Sort) 
+            .OrderByDescending(x=>x.CreationTime)  
             .FirstOrDefaultAsync(t => t.MaterialCode == name, GetCancellationToken(cancellationToken)); 
     } 
  
     /// <summary> 
     /// 楠岃瘉鍚嶇О鏄惁瀛樺湪鐗╂枡鍩虹淇℃伅琛� 
     /// </summary> 
-    /// <param name="materialCode"></param> 
+    /// <param name="name">鏍¢獙鍊�</param> 
     /// <param name="id"></param> 
     /// <returns></returns> 
-    public async Task<bool> NameExistAsync(string materialCode, Guid? id = null) 
+    public async Task<bool> NameExistAsync(string name, Guid? id = null) 
     { 
-        return await (await GetDbSetAsync()).WhereIf(id.HasValue, p => p.Id != id).Where(x => !x.IsDeleted).AnyAsync(x => x.MaterialCode == materialCode); 
+        return await (await GetDbSetAsync()).WhereIf(id.HasValue, p => p.Id != id).Where(x => !x.IsDeleted).AnyAsync(x => x.MaterialCode == name); 
     } 
  
     /// <summary> 
@@ -84,7 +84,7 @@
             .IncludeDetails(includeDetails) 
             .WhereIf(whereConditions != null, whereConditions.data) 
             .Where(x => !x.IsDeleted) 
-            //.OrderBy(sorting.IsNullOrEmpty() ? nameof(WmsMaterial.Sort) : sorting) 
+            .OrderByDescending(x=>x.CreationTime) 
             .PageBy(skipCount, maxResultCount) 
             .ToListAsync(GetCancellationToken(cancellationToken)); 
     } 
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/Controller/WmsMaterialController.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/Controller/WmsMaterialController.cs"
index 9060e10..8872c9b 100644
--- "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/Controller/WmsMaterialController.cs"
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/Controller/WmsMaterialController.cs"
@@ -23,15 +23,15 @@
     [Route("api/v{version:apiVersion}/HIAWms/[controller]")] 
     public class WmsMaterialController : ControllerBase 
     { 
-        private readonly IWmsMaterialAppService _wmsmaterialsAppService; 
+        private readonly IWmsMaterialAppService _wmsMaterialAppService; 
  
         /// <summary> 
         /// Initializes a new instance of the <see cref="WmsMaterialController"/> class. 
         /// </summary> 
-        /// <param name="wmsmaterialsAppService">The wmsmaterials application service.</param> 
-        public WmsMaterialController(IWmsMaterialAppService wmsmaterialsAppService) 
+        /// <param name="wmsMaterialAppService">The wmsMaterial application service.</param> 
+        public WmsMaterialController(IWmsMaterialAppService wmsMaterialAppService) 
         { 
-            _wmsmaterialsAppService = wmsmaterialsAppService; 
+            _wmsMaterialAppService = wmsMaterialAppService; 
         } 
  
         /// <summary> 
@@ -43,7 +43,7 @@
         [Route("{id}")] 
         public virtual Task<WmsMaterialDto> GetAsync(Guid id) 
         { 
-            return _wmsmaterialsAppService.GetAsync(id); 
+            return _wmsMaterialAppService.GetAsync(id); 
         } 
  
         /// <summary> 
@@ -55,7 +55,7 @@
         [Route("Page")] 
         public virtual Task<PagedResultDto<WmsMaterialDto>> GetListAsync([FromQuery] GetWmsMaterialInput input) 
         { 
-            return _wmsmaterialsAppService.GetListAsync(input); 
+            return _wmsMaterialAppService.GetListAsync(input); 
         } 
  
         /// <summary> 
@@ -67,7 +67,7 @@
         [HttpPost] 
         public virtual Task<WmsMaterialDto> CreateAsync(WmsMaterialCreateDto input) 
         { 
-            return _wmsmaterialsAppService.CreateAsync(input); 
+            return _wmsMaterialAppService.CreateAsync(input); 
         } 
  
         /// <summary> 
@@ -81,7 +81,7 @@
         [Route("{id}")] 
         public virtual Task<WmsMaterialDto> UpdateAsync(Guid id, WmsMaterialUpdateDto input) 
         { 
-            return _wmsmaterialsAppService.UpdateAsync(id, input); 
+            return _wmsMaterialAppService.UpdateAsync(id, input); 
         } 
  
         /// <summary> 
@@ -94,7 +94,7 @@
         [Route("Clone")] 
         public virtual Task<List<WmsMaterialDto>> CloneAsync([FromBody] IEnumerable<Guid> ids) 
         { 
-            return _wmsmaterialsAppService.CloneAsync(ids); 
+            return _wmsMaterialAppService.CloneAsync(ids); 
         } 
  
         /// <summary> 
@@ -107,7 +107,7 @@
         [Route("{id}")] 
         public virtual Task DeleteAsync(Guid id) 
         { 
-            return _wmsmaterialsAppService.DeleteAsync(id); 
+            return _wmsMaterialAppService.DeleteAsync(id); 
         } 
  
         /// <summary> 
@@ -119,7 +119,7 @@
         [HttpDelete] 
         public virtual Task DeleteAsync([FromBody] IEnumerable<Guid> ids) 
         { 
-            return _wmsmaterialsAppService.DeleteManyAsync(ids); 
+            return _wmsMaterialAppService.DeleteManyAsync(ids); 
         } 
  
         /// <summary> 
@@ -131,7 +131,7 @@
         [Route("{id}/AdjustSort/{sort}")] 
         public virtual Task AdjustSortAsync(Guid id, int sort) 
         { 
-            return _wmsmaterialsAppService.AdjustSortAsync(id, sort); 
+            return _wmsMaterialAppService.AdjustSortAsync(id, sort); 
         } 
  
         /// <summary> 
@@ -148,16 +148,16 @@
             stream.Seek(0L, SeekOrigin.Begin); 
  
             var sheetNames = stream.GetSheetNames(); 
-            var wmsmaterialsRows = sheetNames.Contains("閰嶇疆") ? MiniExcel.Query<WmsMaterialsImportModel.WmsMaterialImportModel>(stream, sheetName: "閰嶇疆").ToList() : new(); 
+            var wmsMaterialRows = sheetNames.Contains("閰嶇疆") ? MiniExcel.Query<WmsMaterialsImportModel.WmsMaterialImportModel>(stream, sheetName: "閰嶇疆").ToList() : new(); 
  
-            if (!wmsmaterialsRows.Any()) 
+            if (!wmsMaterialRows.Any()) 
             { 
                 throw new UserFriendlyException("璇锋鏌ュ鍏ョ殑琛ㄦ牸"); 
             } 
  
-            await _wmsmaterialsAppService.ImportAsync(new WmsMaterialsImportModel 
+            await _wmsMaterialAppService.ImportAsync(new WmsMaterialsImportModel 
             { 
-                WmsMaterials = wmsmaterialsRows, 
+                WmsMaterials = wmsMaterialRows, 
             }); 
  
             return Ok(); 
@@ -172,7 +172,7 @@
         public virtual async Task<IActionResult> ExportAsync([FromQuery] GetWmsMaterialInput input) 
         { 
             input.MaxResultCount = int.MaxValue; 
-            var exportData = await _wmsmaterialsAppService.ExportAsync(input); 
+            var exportData = await _wmsMaterialAppService.ExportAsync(input); 
             var templatePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"Resources/Templates/WmsMaterial瀵煎嚭妯℃澘.xlsx"); 
             if (!System.IO.File.Exists(templatePath)) 
             { 
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsMaterial\345\257\274\345\207\272\346\250\241\346\235\277.xlsx" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsMaterial\345\257\274\345\207\272\346\250\241\346\235\277.xlsx"
index 16a561b..d0f2d3d 100644
--- "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsMaterial\345\257\274\345\207\272\346\250\241\346\235\277.xlsx"
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/server/src/CMS.Plugin.HIAWms/Resources/Templates/WmsMaterial\345\257\274\345\207\272\346\250\241\346\235\277.xlsx"
Binary files differ
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/components.d.ts" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/components.d.ts"
index d7ad7c9..988c7da 100644
--- "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/components.d.ts"
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/components.d.ts"
@@ -24,6 +24,7 @@
     ElCollapse: typeof import('element-plus/es')['ElCollapse']
     ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem']
     ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider']
+    ElDatePicker: typeof import('element-plus/es')['ElDatePicker']
     ElDialog: typeof import('element-plus/es')['ElDialog']
     ElDivider: typeof import('element-plus/es')['ElDivider']
     ElDrawer: typeof import('element-plus/es')['ElDrawer']
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/config/menu.ts" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/config/menu.ts"
index bb14372..ed2626a 100644
--- "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/config/menu.ts"
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/config/menu.ts"
@@ -7,6 +7,13 @@
     "notPage": false
   },
   {
+    "name": "鐗╂枡淇℃伅",
+    "path": "/information-base/WmsMaterial",
+    "patchName": "WmsMaterial",
+    "icon": "p",
+    "notPage": false
+  },
+  {
     "name": "鍑哄叆搴撹褰�",
     "path": "/information-base/WmsInOutStockRecord",
     "patchName": "WmsInOutStockRecord",
@@ -43,6 +50,13 @@
     "icon": "p",
     "notPage": false
   },
+  "WmsMaterial": {
+    "name": "鐗╂枡淇℃伅",
+    "path": "/information-base/WmsMaterial",
+    "patchName": "WmsMaterial",
+    "icon": "p",
+    "notPage": false
+  },
   "WmsInOutStockRecord": {
     "name": "鍑哄叆搴撹褰�",
     "path": "/information-base/WmsInOutStockRecord",
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Controllers/File.ts" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Controllers/File.ts"
new file mode 100644
index 0000000..9162fef
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Controllers/File.ts"
@@ -0,0 +1,31 @@
+import { importFileToService, exportFileToClient } from '@/api/file' 
+import { ElMessage } from 'element-plus' 
+import { downloadFile } from '@/utils' 
+import dayjs from 'dayjs' 
+ 
+export const useFile = () => { 
+  /** 
+   * 瀵煎叆鏂囦欢 
+   * @param url 
+   */ 
+  const importFile = async (url: string, file: File) => { 
+    const formData = new FormData() 
+    formData.append('file', file) 
+    await importFileToService(url, formData) 
+    ElMessage('瀵煎叆鎴愬姛') 
+  } 
+  /** 
+   * 瀵煎嚭鏂囦欢 
+   * @param url 
+   */ 
+  const exportFile = async (url: string, params: any, name: string) => { 
+    const res = await exportFileToClient(url, params) 
+    downloadFile(res, `${name}_${dayjs().format('YYYYMMDDHHMMss')}.xlsx`) 
+    ElMessage.success('瀵煎嚭鎴愬姛') 
+  } 
+ 
+  return { 
+    importFile, 
+    exportFile, 
+  } 
+} 
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Controllers/WmsMaterial.ts" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Controllers/WmsMaterial.ts"
new file mode 100644
index 0000000..77bd910
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Controllers/WmsMaterial.ts"
@@ -0,0 +1,275 @@
+import { ref, onMounted, reactive, Ref, nextTick, computed } from 'vue' 
+import { injectModel } from '@/libs/Provider/Provider' 
+import { WmsMaterial } from '../Models/WmsMaterial' 
+import { ElMessage } from 'element-plus' 
+import { ConfirmBox } from '@/components/ConfirmBox/ConfirmBox' 
+import { useFile } from './File' 
+ 
+interface CurrentType { 
+  row: any 
+  index: number 
+} 
+export const useWmsMaterial = (props: any, ctx?: any) => { 
+  const wmsMaterial = injectModel<WmsMaterial>('wmsMaterial') 
+  const { exportFile } = useFile() 
+  /** 
+   * 澶撮儴閰嶇疆 
+   */ 
+  const headers = ref({}) 
+  /** 
+   * 鍔ㄦ�佸垪閰嶇疆 
+   */ 
+  const wmsMaterialColumns = ref<Record<string, any>>([]) 
+  /** 
+   * 鎼滅储鍊� 
+   */ 
+  const search = ref('') 
+ 
+  /** 
+   * 鎺掑簭 
+   */ 
+  const sort = ref(0) 
+  /** 
+   * 閫夋嫨椤� 
+   */ 
+  const selection = ref([]) 
+  /** 
+   * 褰撳墠閫変腑鐨勮 
+   */ 
+  const current = ref<any>(null) 
+  /** 
+   * 鏁版嵁婧� 
+   */ 
+  const dataSource: Ref<any[]> = ref([]) 
+ 
+  /** 
+   * 琛ㄦ牸 
+   */ 
+  const tableRef = ref() 
+  const dialogConfig = reactive({ 
+    visible: false, 
+    title: '', 
+    isAdd: false, 
+  }) 
+  const dialogConfigForQuery = reactive({ 
+    visible: false, 
+    title: '', 
+    isAdd: false, 
+  }) 
+ 
+ 
+  const dialogSettingConfig = reactive({ 
+    visible: false, 
+    title: '', 
+  }) 
+ 
+  /** 
+   * 鍒嗛〉鏁版嵁 
+   */ 
+  const paginationParams = ref({}) 
+ 
+  /** 
+   * 鎵撳紑璇︽儏 
+   * @param row 
+   */ 
+  const openDetail = (row: any) => { 
+    current.value = row 
+    dialogConfig.visible = true 
+    dialogConfig.title = row.name 
+    dialogConfig.isAdd = false 
+    sort.value = row.sort 
+  } 
+ 
+  const contextMenu = [ 
+    { 
+      label: '灞曞紑璇︽儏', 
+      fn: (c: CurrentType) => { 
+        current.value = null 
+        sort.value = c.row.sort 
+        nextTick(() => openDetail(c.row)) 
+      }, 
+      divided: true, 
+      icon: 'o', 
+    }, 
+    // { 
+    //   label: '鍚戜笂娣诲姞', 
+    //   fn: (c: CurrentType, pageNum: number) => { 
+    //     current.value = null 
+    //     sort.value = c.index + 1 + (pageNum - 1) * 50 
+    //     dialogConfig.visible = true 
+    //     dialogConfig.title = '娣诲姞' 
+    //     dialogConfig.isAdd = false 
+    //   }, 
+    //   divided: true, 
+    //   icon: 'up', 
+    // }, 
+    // { 
+    //   label: '鍚戜笅娣诲姞', 
+    //   fn: (c: CurrentType, pageNum: number) => { 
+    //     current.value = null 
+    //     sort.value = c.index + 2 + (pageNum - 1) * 50 
+    //     dialogConfig.visible = true 
+    //     dialogConfig.title = '娣诲姞' 
+    //     dialogConfig.isAdd = false 
+    //   }, 
+    //   divided: true, 
+    //   icon: 'down', 
+    // }, 
+    // { 
+    //   label: '鍒涘缓鍓湰', 
+    //   fn: async ({ row }: CurrentType) => { 
+    //     await wmsMaterial.cloneData([row.id]) 
+    //     ElMessage.success('鍒涘缓鍓湰鎴愬姛') 
+    //     tableRef.value?.getList() 
+    //   }, 
+    //   divided: true, 
+    //   icon: 'copy', 
+    // }, 
+    { 
+      label: '鍒犻櫎', 
+      fn: async (c: CurrentType) => { 
+        const names = selection.value.map((item: { materialCode: string }) => item.materialCode) 
+        ConfirmBox( 
+          `鏄惁鍒犻櫎${names.length ? names.join(',') : c.row.materialCode}` 
+        ).then(async () => { 
+          const ids = selection.value.map((item: { id: string }) => item.id) 
+          await wmsMaterial.deleteWmsMaterials(ids.length ? ids : [c.row.id]) 
+          ElMessage.success('鍒犻櫎鎴愬姛') 
+          tableRef.value.getList() 
+        }) 
+      }, 
+      icon: 'close', 
+    }, 
+  ] 
+ 
+  const onCheck = (records: any) => { 
+    selection.value = records 
+  } 
+ 
+  const onAddWmsMaterial = () => { 
+    const params = tableRef.value?.getPaginationParams() 
+    current.value = null 
+    dialogConfig.visible = true 
+    dialogConfig.isAdd = true 
+    dialogConfig.title = '娣诲姞' 
+    sort.value = params.totalCount + 1 
+  } 
+ 
+  //鐐瑰嚮鎸夐挳銆愰珮绾ф煡璇€�� 
+  const onAdvancedQuery = () => { 
+    const params = tableRef.value?.getPaginationParams() 
+    current.value = null 
+    dialogConfigForQuery.visible = true 
+    dialogConfigForQuery.isAdd = true 
+    dialogConfigForQuery.title = '楂樼骇鏌ヨ' 
+  } 
+  
+  const onConfirmWmsMaterial = async () => { 
+    dialogConfig.visible = false 
+    if (dialogConfig.isAdd) { 
+      tableRef.value?.scrollToRow({ 
+        skip: true, 
+      }) 
+    } else { 
+      await tableRef.value?.getList() 
+    } 
+  } 
+  /** 
+   * 琛岀偣鍑绘椂鏇存柊current 
+   */ 
+  const onRowClick = ({ row }: any) => { 
+    if (dialogConfig.visible && current.value) { 
+      current.value = row 
+    } 
+  } 
+  /** 
+   * 瀵煎嚭 
+   */ 
+  const onExport = (data={}) => { 
+    //const params = tableRef.value?.getParams() 
+    exportFile('/api/v1/HIAWms/wmsMaterial/export', data, 'wmsMaterial') 
+  } 
+ 
+  /** 
+   * 鍏抽敭瀛楁悳绱� 
+   */ 
+  const onSearch = () => { 
+    tableRef.value?.getList({ 
+      Filter: search.value, 
+    }) 
+  } 
+ 
+  /** 
+   * 閲嶇疆琛ㄦ牸鏁版嵁 
+   */ 
+  const reloadList = () => { 
+    tableRef.value?.getList() 
+  } 
+  /** 
+   * 涓婁紶鎴愬姛 
+   */ 
+  const onSuccess = () => { 
+    tableRef.value?.getList() 
+    ElMessage.success('瀵煎叆鎴愬姛') 
+  } 
+  /** 
+   * 澶辫触 
+   * @param err 
+   */ 
+  const onError = (err: any) => { 
+    try { 
+      const message = JSON.parse(err.message) 
+      ElMessage.error(message.msg) 
+    } catch (error) { 
+      ElMessage.error('瀵煎叆澶辫触') 
+    } 
+  } 
+  /** 
+   * 涓婁紶閽╁瓙 
+   */ 
+  const onBeforeUpload = (file: File) => { 
+    const format = ['xlsx', 'xls', 'csv'] 
+    if (!format.includes(file.name.split('.')[1])) { 
+      ElMessage.error('瀵煎叆鏂囦欢鏍煎紡涓嶆纭紝璇峰鍏�.xlsx/.xls涓�.csv鏍煎紡鐨勬枃浠�') 
+      return false 
+    } 
+    return true 
+  } 
+ 
+  onMounted(() => { 
+    headers.value = { 
+      Authorization: `Bearer ${sessionStorage.getItem('Token')}`, 
+      'X-Project': sessionStorage.getItem('X-Project'), 
+    } 
+  }) 
+ 
+  ctx.expose({ 
+    reloadList, 
+  }) 
+ 
+  return { 
+    dataSource, 
+    contextMenu, 
+    dialogConfig, 
+    dialogConfigForQuery, 
+    dialogSettingConfig, 
+    tableRef, 
+    current, 
+    search, 
+    sort, 
+    wmsMaterialColumns, 
+    paginationParams, 
+    headers, 
+    onBeforeUpload, 
+    onError, 
+    onSuccess, 
+    openDetail, 
+    onSearch, 
+    onExport, 
+    onRowClick, 
+    onConfirmWmsMaterial, 
+    onCheck, 
+    onAddWmsMaterial, 
+    onAdvancedQuery 
+  } 
+} 
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Controllers/WmsMaterialDrawer.tsx" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Controllers/WmsMaterialDrawer.tsx"
new file mode 100644
index 0000000..9c2a023
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Controllers/WmsMaterialDrawer.tsx"
@@ -0,0 +1,427 @@
+import { 
+  ref, 
+  onMounted, 
+  reactive, 
+  computed, 
+  Ref, 
+  watch, 
+  SetupContext, 
+  h, 
+} from 'vue' 
+import { injectModel } from '@/libs/Provider/Provider' 
+import { WmsMaterialDrawer } from '../Models/WmsMaterialDrawer' 
+import { ElMessage } from 'element-plus' 
+import isEqual from 'lodash/isEqual' 
+import { ConfirmBox } from '@/components/ConfirmBox/ConfirmBox' 
+import { cloneDeep } from 'lodash' 
+ 
+export const useWmsMaterialDrawer = (props: any, ctx?: any) => { 
+  const wmsMaterialDrawer = injectModel<WmsMaterialDrawer>('wmsMaterialDrawer') 
+  /** 
+   * 鐢ㄦ潵瀵规瘮鐨勫垵濮嬪寲鏁版嵁 
+   */ 
+  const initiateData: Ref<Record<string, any>> = ref({}) 
+  const formData = ref<Record<string, any>>({}) 
+  // ref 
+  const formRef = ref() 
+ 
+  const disabled = ref(false) 
+ 
+  const current = computed(() => { 
+    return props.row || null 
+  }) 
+ 
+   
+  const datePicker = (attrs) => { 
+    return ( 
+      <el-date-picker 
+        type="date" 
+        format="YYYY-MM-DD HH:mm:ss" 
+        formatValue="YYYY-MM-DD HH:mm:ss" 
+        {...attrs} 
+      ></el-date-picker> 
+    ) 
+  } 
+  const inputNumber = (attrs) => { 
+    return ( 
+      <el-input-number 
+        min="1" 
+        step="1" 
+        precision="0" 
+        {...attrs} 
+      ></el-input-number> 
+    ) 
+  } 
+ 
+  const dateTimePicker = (attrs) => { 
+    return ( 
+      <el-date-picker 
+        type="datetime" 
+        format="YYYY-MM-DD HH:mm:ss" 
+        formatValue="YYYY-MM-DD HH:mm:ss" 
+        {...attrs} 
+      ></el-date-picker> 
+    ) 
+  } 
+ 
+  const visible = computed({ 
+    get() { 
+      return props.modelValue 
+    }, 
+    set(val) { 
+      ctx.emit('update:modelValue', val) 
+    }, 
+  }) 
+  /** 
+   * 娣诲姞鐨刦orm瀛楁 
+   */ 
+  const formItems = reactive([ 
+                    { 
+                   label: '鐗╂枡缂栫爜锛堝敮涓�鏍囪瘑锛�', 
+                   prop: 'materialCode', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ョ墿鏂欑紪鐮侊紙鍞竴鏍囪瘑锛�', 
+              rules: [{required: true, message: '鐗╂枡缂栫爜锛堝敮涓�鏍囪瘑锛変笉鑳戒负绌�', trigger: 'blur' }], 
+                }, 
+                { 
+                   label: '鐗╂枡鍚嶇О', 
+                   prop: 'materialName', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ョ墿鏂欏悕绉�', 
+              rules: [{required: true, message: '鐗╂枡鍚嶇О涓嶈兘涓虹┖', trigger: 'blur' }], 
+                }, 
+                { 
+                   label: '閲囪喘绫诲瀷锛堟灇涓惧�硷級', 
+                   prop: 'purchaseType', 
+                   el: 'select', 
+                   options: [], 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ラ噰璐被鍨嬶紙鏋氫妇鍊硷級', 
+              rules: [{required: true, message: '閲囪喘绫诲瀷锛堟灇涓惧�硷級涓嶈兘涓虹┖', trigger: 'blur' }], 
+                }, 
+                { 
+                   label: '鐗╂枡绫诲瀷锛堟灇涓惧�硷級', 
+                   prop: 'materialType', 
+                   el: 'select', 
+                   options: [], 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ョ墿鏂欑被鍨嬶紙鏋氫妇鍊硷級', 
+              rules: [{required: true, message: '鐗╂枡绫诲瀷锛堟灇涓惧�硷級涓嶈兘涓虹┖', trigger: 'blur' }], 
+                }, 
+                { 
+                   label: '涓诲崟浣嶏紙濡傦細kg銆乵銆佷釜锛�', 
+                   prop: 'primaryUnit', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ヤ富鍗曚綅锛堝锛歬g銆乵銆佷釜锛�', 
+                }, 
+                { 
+                   label: '瑙勬牸/鏍囧噯锛堝锛欸B/T 8163-2018锛�', 
+                   prop: 'standard', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ヨ鏍�/鏍囧噯锛堝锛欸B/T 8163-2018锛�', 
+                }, 
+                { 
+                   label: '澶栧緞锛堝崟浣嶏細mm锛�', 
+                   prop: 'outerDiameter', 
+                   el: (props: any, { attrs }: SetupContext) => { 
+                     return h(inputNumber, {  
+                       ...props,  
+                       clearable: true,  
+                       ...attrs,  
+                     })  
+                   },
+                   width: '100%',
+                   step: 0.01,
+                   precision: 2, 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ュ寰勶紙鍗曚綅锛歮m锛�', 
+              rules: [{required: true, message: '澶栧緞锛堝崟浣嶏細mm锛変笉鑳戒负绌�', trigger: 'blur' }], 
+                }, 
+                { 
+                   label: '澹佸帤锛堝崟浣嶏細mm锛�', 
+                   prop: 'wallThickness', 
+                   el: (props: any, { attrs }: SetupContext) => { 
+                     return h(inputNumber, {  
+                       ...props,  
+                       clearable: true,  
+                       ...attrs,  
+                     })  
+                   },
+                   width: '100%',
+                   step: 0.01,
+                   precision: 2, 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ュ鍘氾紙鍗曚綅锛歮m锛�', 
+              rules: [{required: true, message: '澹佸帤锛堝崟浣嶏細mm锛変笉鑳戒负绌�', trigger: 'blur' }], 
+                }, 
+                { 
+                   label: '鏉愯川锛堝锛�304涓嶉攬閽級', 
+                   prop: 'materialQuality', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ユ潗璐紙濡傦細304涓嶉攬閽級', 
+                }, 
+                { 
+                   label: '闀垮害锛堝崟浣嶏細m锛�', 
+                   prop: 'length', 
+                   el: (props: any, { attrs }: SetupContext) => { 
+                     return h(inputNumber, {  
+                       ...props,  
+                       clearable: true,  
+                       ...attrs,  
+                     })  
+                   },
+                   width: '100%',
+                   step: 0.01,
+                   precision: 2, 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ラ暱搴︼紙鍗曚綅锛歮锛�', 
+              rules: [{required: true, message: '闀垮害锛堝崟浣嶏細m锛変笉鑳戒负绌�', trigger: 'blur' }], 
+                }, 
+                { 
+                   label: '鏄惁涓轰富鏀', 
+                   prop: 'isMainBranch', 
+                   el: 'select', 
+                   options: [], 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ユ槸鍚︿负涓绘敮绠�', 
+              rules: [{required: true, message: '鏄惁涓轰富鏀涓嶈兘涓虹┖', trigger: 'blur' }], 
+                }, 
+                { 
+                   label: '鐢熶骇宸ュ巶', 
+                   prop: 'factory', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ョ敓浜у伐鍘�', 
+                }, 
+                { 
+                   label: '璇佷功缂栧彿', 
+                   prop: 'certification', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ヨ瘉涔︾紪鍙�', 
+                }, 
+                { 
+                   label: '鍐椾綑瀛楁1 - 棰勭暀鎵╁睍鐢ㄩ��', 
+                   prop: 'redundantField1', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ュ啑浣欏瓧娈�1 - 棰勭暀鎵╁睍鐢ㄩ��', 
+                }, 
+                { 
+                   label: '鍐椾綑瀛楁2 - 棰勭暀鎵╁睍鐢ㄩ��', 
+                   prop: 'redundantField2', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ュ啑浣欏瓧娈�2 - 棰勭暀鎵╁睍鐢ㄩ��', 
+                }, 
+                { 
+                   label: '鍐椾綑瀛楁3 - 棰勭暀鎵╁睍鐢ㄩ��', 
+                   prop: 'redundantField3', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ュ啑浣欏瓧娈�3 - 棰勭暀鎵╁睍鐢ㄩ��', 
+                }, 
+                { 
+                   label: '鍒涘缓浜�', 
+                   prop: 'creatorName', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ュ垱寤轰汉', 
+                }, 
+                { 
+                   label: '淇敼浜�', 
+                   prop: 'lastModifierName', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ヤ慨鏀逛汉', 
+                }, 
+                { 
+                   label: '澶囨敞', 
+                   prop: 'remark', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ュ娉�', 
+                }, 
+                { 
+                   label: '鎵╁睍瀛楁1', 
+                   prop: 'extraField1', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ユ墿灞曞瓧娈�1', 
+                }, 
+                { 
+                   label: '鎵╁睍瀛楁2', 
+                   prop: 'extraField2', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ユ墿灞曞瓧娈�2', 
+                }, 
+                { 
+                   label: '鎵╁睍瀛楁3', 
+                   prop: 'extraField3', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ユ墿灞曞瓧娈�3', 
+                },  
+  ]) 
+  /** 
+   * 鏍¢獙鏄惁鏈夋暟鎹彉鍖� 
+   */ 
+  const checkIsEqualObject = () => { 
+    const data = { 
+      formData: formData.value, 
+    } 
+    const check = isEqual(initiateData.value, data) 
+    return check 
+  } 
+ 
+  const onClose = (done: () => void) => { 
+    if (visible.value) { 
+      if (checkIsEqualObject()) { 
+        visible.value = false 
+        done && done() 
+      } else { 
+        ConfirmBox('鏄惁淇濆瓨璁剧疆锛�') 
+          .then(() => { 
+            onConfirm() 
+          }) 
+          .catch(() => { 
+            visible.value = false 
+            done && done() 
+          }) 
+      } 
+    } 
+  } 
+  /** 
+   * 淇濆瓨 
+   */ 
+  const onConfirm = async () => { 
+    await formRef.value?.validate() 
+    const data = { 
+      materialCode: formData.value.materialCode, 
+materialName: formData.value.materialName, 
+purchaseType: formData.value.purchaseType, 
+materialType: formData.value.materialType, 
+primaryUnit: formData.value.primaryUnit, 
+standard: formData.value.standard, 
+outerDiameter: formData.value.outerDiameter, 
+wallThickness: formData.value.wallThickness, 
+materialQuality: formData.value.materialQuality, 
+length: formData.value.length, 
+isMainBranch: formData.value.isMainBranch, 
+factory: formData.value.factory, 
+certification: formData.value.certification, 
+redundantField1: formData.value.redundantField1, 
+redundantField2: formData.value.redundantField2, 
+redundantField3: formData.value.redundantField3, 
+creatorName: formData.value.creatorName, 
+lastModifierName: formData.value.lastModifierName, 
+remark: formData.value.remark, 
+extraField1: formData.value.extraField1, 
+extraField2: formData.value.extraField2, 
+extraField3: formData.value.extraField3,  
+    } 
+    if (!current.value) { 
+      await wmsMaterialDrawer.addWmsMaterial(data) 
+    } else { 
+      const id = current.value.id 
+      await wmsMaterialDrawer.updateWmsMaterial(id, data) 
+    } 
+    ElMessage.success('淇濆瓨鎴愬姛') 
+    ctx.emit('confirm') 
+  } 
+ 
+  const updateCheckData = () => { 
+    initiateData.value = { 
+      formData: { 
+        ...formData.value, 
+      }, 
+    } 
+  } 
+  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 commonQueryEnumForFrom = async () => { 
+    const purchaseTypeEnumEnum = await wmsMaterialDrawer.getWmsEnumData({ 
+ EnumName: 'PurchaseTypeEnum', 
+}) 
+updateFormItemOptions('purchaseType', purchaseTypeEnumEnum) 
+const materialTypeEnumEnum = await wmsMaterialDrawer.getWmsEnumData({ 
+ EnumName: 'MaterialTypeEnum', 
+}) 
+updateFormItemOptions('materialType', materialTypeEnumEnum) 
+const yesNoEnumEnum = await wmsMaterialDrawer.getWmsEnumData({ 
+ EnumName: 'YesNoEnum', 
+}) 
+updateFormItemOptions('isMainBranch', yesNoEnumEnum) 
+ 
+  } 
+  commonQueryEnumForFrom() 
+  /** 
+   * 寮圭獥鎵撳紑鑾峰彇璇︽儏 
+   */ 
+  const onOpen = async () => { 
+    if (current.value) { 
+      const res = await wmsMaterialDrawer.getWmsMaterialDetail(current.value) 
+ 
+      formData.value = { 
+        materialCode: res.materialCode, 
+materialName: res.materialName, 
+purchaseType: res.purchaseType, 
+materialType: res.materialType, 
+primaryUnit: res.primaryUnit, 
+standard: res.standard, 
+outerDiameter: res.outerDiameter, 
+wallThickness: res.wallThickness, 
+materialQuality: res.materialQuality, 
+length: res.length, 
+isMainBranch: res.isMainBranch, 
+factory: res.factory, 
+certification: res.certification, 
+redundantField1: res.redundantField1, 
+redundantField2: res.redundantField2, 
+redundantField3: res.redundantField3, 
+creatorName: res.creatorName, 
+lastModifierName: res.lastModifierName, 
+remark: res.remark, 
+extraField1: res.extraField1, 
+extraField2: res.extraField2, 
+extraField3: res.extraField3,  
+        id: res.id, 
+      } 
+      disabled.value = true 
+      updateCheckData() 
+    } else { 
+      formData.value = {} 
+ 
+      disabled.value = false 
+      updateCheckData() 
+    } 
+  } 
+ 
+  watch(() => current.value, onOpen) 
+ 
+  return { 
+    formItems, 
+    formData, 
+    visible, 
+    formRef, 
+    onOpen, 
+    onClose, 
+    onConfirm, 
+  } 
+} 
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Controllers/WmsMaterialQueryDrawer.tsx" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Controllers/WmsMaterialQueryDrawer.tsx"
new file mode 100644
index 0000000..e629cb1
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Controllers/WmsMaterialQueryDrawer.tsx"
@@ -0,0 +1,427 @@
+import { 
+  ref, 
+  onMounted, 
+  reactive, 
+  computed, 
+  Ref, 
+  watch, 
+  SetupContext, 
+  h, 
+} from 'vue' 
+import { injectModel } from '@/libs/Provider/Provider' 
+import { WmsMaterialDrawer } from '../Models/WmsMaterialDrawer' 
+import { ElMessage } from 'element-plus' 
+import isEqual from 'lodash/isEqual' 
+import { ConfirmBox } from '@/components/ConfirmBox/ConfirmBox' 
+import { cloneDeep } from 'lodash' 
+ 
+export const useWmsMaterialQueryDrawer = (props: any, ctx?: any) => { 
+  const wmsMaterialDrawer = injectModel<WmsMaterialDrawer>('WmsMaterialDrawer') 
+  /** 
+   * 鐢ㄦ潵瀵规瘮鐨勫垵濮嬪寲鏁版嵁 
+   */ 
+  const initiateData: Ref<Record<string, any>> = ref({}) 
+  const formData = ref<Record<string, any>>({}) 
+  // ref 
+  const formRef = ref() 
+ 
+  const disabled = ref(false) 
+ 
+  const current = computed(() => { 
+    return props.row || null 
+  }) 
+ 
+  const inputNumber = (attrs) => { 
+    return ( 
+      <el-input-number 
+        min="1" 
+        step="1" 
+        precision="0" 
+        {...attrs} 
+      ></el-input-number> 
+    ) 
+  } 
+ 
+    const datePickerRange = (attrs) => { 
+    return ( 
+      <el-date-picker 
+        type="daterange" 
+        value-format="YYYY-MM-DD HH:mm:ss" 
+        start-placeholder="寮�濮嬫棩鏈�" 
+        end-placeholder="缁撴潫鏃ユ湡" 
+        {...attrs} 
+      ></el-date-picker> 
+    ) 
+  } 
+ 
+  const dateTimePickerRange = (attrs) => { 
+    return ( 
+      <el-date-picker 
+        type="datetimerange" 
+        value-format="YYYY-MM-DD HH:mm:ss" 
+        start-placeholder="寮�濮嬫棩鏈�" 
+        end-placeholder="缁撴潫鏃ユ湡" 
+        {...attrs} 
+      ></el-date-picker> 
+    ) 
+  } 
+ 
+  const visible = computed({ 
+    get() { 
+      return props.modelValue 
+    }, 
+    set(val) { 
+      ctx.emit('update:modelValue', val) 
+    }, 
+  }) 
+  /** 
+   * 娣诲姞鐨刦orm瀛楁 
+   */ 
+  const formItems = reactive([ 
+                    { 
+                   label: '鐗╂枡缂栫爜锛堝敮涓�鏍囪瘑锛�', 
+                   prop: 'materialCode', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ョ墿鏂欑紪鐮侊紙鍞竴鏍囪瘑锛�', 
+                }, 
+                { 
+                   label: '鐗╂枡鍚嶇О', 
+                   prop: 'materialName', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ョ墿鏂欏悕绉�', 
+                }, 
+                { 
+                   label: '閲囪喘绫诲瀷锛堟灇涓惧�硷級', 
+                   prop: 'purchaseType', 
+                   el: 'select', 
+                   option: [], 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ラ噰璐被鍨嬶紙鏋氫妇鍊硷級', 
+                }, 
+                { 
+                   label: '鐗╂枡绫诲瀷锛堟灇涓惧�硷級', 
+                   prop: 'materialType', 
+                   el: 'select', 
+                   option: [], 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ョ墿鏂欑被鍨嬶紙鏋氫妇鍊硷級', 
+                }, 
+                { 
+                   label: '涓诲崟浣嶏紙濡傦細kg銆乵銆佷釜锛�', 
+                   prop: 'primaryUnit', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ヤ富鍗曚綅锛堝锛歬g銆乵銆佷釜锛�', 
+                }, 
+                { 
+                   label: '瑙勬牸/鏍囧噯锛堝锛欸B/T 8163-2018锛�', 
+                   prop: 'standard', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ヨ鏍�/鏍囧噯锛堝锛欸B/T 8163-2018锛�', 
+                }, 
+                { 
+                   label: '澶栧緞锛堝崟浣嶏細mm锛�', 
+                   prop: 'outerDiameter', 
+                   el: (props: any, { attrs }: SetupContext) => { 
+                     return h(inputNumber, {  
+                       ...props,
+                       clearable: true, 
+                       ...attrs,  
+                     })  
+                   },
+                   width: '100%',
+                   step: 0.01,
+                   precision: 2, 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ュ寰勶紙鍗曚綅锛歮m锛�', 
+                }, 
+                { 
+                   label: '澹佸帤锛堝崟浣嶏細mm锛�', 
+                   prop: 'wallThickness', 
+                   el: (props: any, { attrs }: SetupContext) => { 
+                     return h(inputNumber, {  
+                       ...props,
+                       clearable: true, 
+                       ...attrs,  
+                     })  
+                   },
+                   width: '100%',
+                   step: 0.01,
+                   precision: 2, 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ュ鍘氾紙鍗曚綅锛歮m锛�', 
+                }, 
+                { 
+                   label: '鏉愯川锛堝锛�304涓嶉攬閽級', 
+                   prop: 'materialQuality', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ユ潗璐紙濡傦細304涓嶉攬閽級', 
+                }, 
+                { 
+                   label: '闀垮害锛堝崟浣嶏細m锛�', 
+                   prop: 'length', 
+                   el: (props: any, { attrs }: SetupContext) => { 
+                     return h(inputNumber, {  
+                       ...props,
+                       clearable: true, 
+                       ...attrs,  
+                     })  
+                   },
+                   width: '100%',
+                   step: 0.01,
+                   precision: 2, 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ラ暱搴︼紙鍗曚綅锛歮锛�', 
+                }, 
+                { 
+                   label: '鏄惁涓轰富鏀', 
+                   prop: 'isMainBranch', 
+                   el: 'select', 
+                   option: [], 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ユ槸鍚︿负涓绘敮绠�', 
+                }, 
+                { 
+                   label: '鐢熶骇宸ュ巶', 
+                   prop: 'factory', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ョ敓浜у伐鍘�', 
+                }, 
+                { 
+                   label: '璇佷功缂栧彿', 
+                   prop: 'certification', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ヨ瘉涔︾紪鍙�', 
+                }, 
+                { 
+                   label: '鍐椾綑瀛楁1 - 棰勭暀鎵╁睍鐢ㄩ��', 
+                   prop: 'redundantField1', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ュ啑浣欏瓧娈�1 - 棰勭暀鎵╁睍鐢ㄩ��', 
+                }, 
+                { 
+                   label: '鍐椾綑瀛楁2 - 棰勭暀鎵╁睍鐢ㄩ��', 
+                   prop: 'redundantField2', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ュ啑浣欏瓧娈�2 - 棰勭暀鎵╁睍鐢ㄩ��', 
+                }, 
+                { 
+                   label: '鍐椾綑瀛楁3 - 棰勭暀鎵╁睍鐢ㄩ��', 
+                   prop: 'redundantField3', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ュ啑浣欏瓧娈�3 - 棰勭暀鎵╁睍鐢ㄩ��', 
+                }, 
+                { 
+                   label: '鍒涘缓鏃堕棿', 
+                   prop: 'creationTime', 
+                   el: (props: any, { attrs }: SetupContext) => { 
+                     return h(dateTimePickerRange, {  
+                       ...props,
+                       clearable: true, 
+                       ...attrs,  
+                     })  
+                   },
+                   width: '100%',
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ュ垱寤烘椂闂�', 
+                }, 
+                { 
+                   label: '鍒涘缓浜�', 
+                   prop: 'creatorName', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ュ垱寤轰汉', 
+                }, 
+                { 
+                   label: '淇敼浜�', 
+                   prop: 'lastModifierName', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ヤ慨鏀逛汉', 
+                }, 
+                { 
+                   label: '澶囨敞', 
+                   prop: 'remark', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ュ娉�', 
+                }, 
+                { 
+                   label: '鏄惁绂佺敤', 
+                   prop: 'isDisabled', 
+                   el: 'select', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ユ槸鍚︾鐢�', 
+                 options: [{label: '鏄�',value: true}, {label: '鍚�',value: false}] 
+                }, 
+                { 
+                   label: '鎵╁睍瀛楁1', 
+                   prop: 'extraField1', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ユ墿灞曞瓧娈�1', 
+                }, 
+                { 
+                   label: '鎵╁睍瀛楁2', 
+                   prop: 'extraField2', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ユ墿灞曞瓧娈�2', 
+                }, 
+                { 
+                   label: '鎵╁睍瀛楁3', 
+                   prop: 'extraField3', 
+                   el: 'input', 
+                   //disabled: disabled, 
+                   placeholder: '璇疯緭鍏ユ墿灞曞瓧娈�3', 
+                },  
+  ]) 
+  /** 
+   * 鏍¢獙鏄惁鏈夋暟鎹彉鍖� 
+   */ 
+  const checkIsEqualObject = () => { 
+    const data = { 
+      formData: formData.value, 
+    } 
+    const check = isEqual(initiateData.value, data) 
+    return check 
+  } 
+  const commonGetFormData=()=>{ 
+    const data = { 
+      materialCode: formData.value.materialCode || '', 
+materialName: formData.value.materialName || '', 
+purchaseType: formData.value.purchaseType || '', 
+materialType: formData.value.materialType || '', 
+primaryUnit: formData.value.primaryUnit || '', 
+standard: formData.value.standard || '', 
+outerDiameter: formData.value.outerDiameter || '', 
+wallThickness: formData.value.wallThickness || '', 
+materialQuality: formData.value.materialQuality || '', 
+length: formData.value.length || '', 
+isMainBranch: formData.value.isMainBranch || '', 
+factory: formData.value.factory || '', 
+certification: formData.value.certification || '', 
+redundantField1: formData.value.redundantField1 || '', 
+redundantField2: formData.value.redundantField2 || '', 
+redundantField3: formData.value.redundantField3 || '', 
+creationTime: formData.value.creationTime || '', 
+creatorName: formData.value.creatorName || '', 
+lastModifierName: formData.value.lastModifierName || '', 
+remark: formData.value.remark || '', 
+isDisabled: formData.value.isDisabled || '', 
+extraField1: formData.value.extraField1 || '', 
+extraField2: formData.value.extraField2 || '', 
+extraField3: formData.value.extraField3 || '',  
+    } 
+    return data; 
+  } 
+  const onClose = (done: () => void) => { 
+    if (visible.value) { 
+      visible.value = false 
+      const data =commonGetFormData(); 
+      ctx.emit('close', data) 
+    } 
+  } 
+  /** 
+   * 纭鏌ヨ 
+   */ 
+  const onConfirmQuery = async () => { 
+    const data =commonGetFormData(); 
+    ctx.emit('confirmQuery', data) 
+  } 
+  /** 
+   * 閲嶇疆鏌ヨ 
+   */ 
+  const onReset = async () => { 
+    formData.value = {} 
+    formData.value.MaterialCode = '' 
+formData.value.MaterialName = '' 
+formData.value.PurchaseType = '' 
+formData.value.MaterialType = '' 
+formData.value.PrimaryUnit = '' 
+formData.value.Standard = '' 
+formData.value.OuterDiameter = '' 
+formData.value.WallThickness = '' 
+formData.value.MaterialQuality = '' 
+formData.value.Length = '' 
+formData.value.IsMainBranch = '' 
+formData.value.Factory = '' 
+formData.value.Certification = '' 
+formData.value.RedundantField1 = '' 
+formData.value.RedundantField2 = '' 
+formData.value.RedundantField3 = '' 
+formData.value.CreatorName = '' 
+formData.value.LastModifierName = '' 
+formData.value.Remark = '' 
+formData.value.ExtraField1 = '' 
+formData.value.ExtraField2 = '' 
+formData.value.ExtraField3 = ''  
+    //鍚戠埗缁勪欢鍙戦�佽嚜瀹氫箟浜嬩欢 
+    ctx.emit('restQuery'); 
+  } 
+ 
+  const updateCheckData = () => { 
+    initiateData.value = { 
+      formData: { 
+        ...formData.value, 
+      }, 
+    } 
+  } 
+  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 commonQueryEnumForFrom = async () => { 
+    const purchaseTypeEnumEnum = await wmsMaterialDrawer.getWmsEnumData({ 
+ EnumName: 'PurchaseTypeEnum', 
+}) 
+updateFormItemOptions('purchaseType', purchaseTypeEnumEnum) 
+const materialTypeEnumEnum = await wmsMaterialDrawer.getWmsEnumData({ 
+ EnumName: 'MaterialTypeEnum', 
+}) 
+updateFormItemOptions('materialType', materialTypeEnumEnum) 
+const yesNoEnumEnum = await wmsMaterialDrawer.getWmsEnumData({ 
+ EnumName: 'YesNoEnum', 
+}) 
+updateFormItemOptions('isMainBranch', yesNoEnumEnum) 
+ 
+  } 
+  commonQueryEnumForFrom() 
+  /** 
+   * 寮圭獥鎵撳紑鑾峰彇璇︽儏 
+   */ 
+  const onOpen = async () => { 
+    disabled.value = false 
+    updateCheckData() 
+  } 
+ 
+  watch(() => current.value, onOpen) 
+ 
+  return { 
+    formItems, 
+    formData, 
+    visible, 
+    formRef, 
+    onOpen, 
+    onClose, 
+    onConfirmQuery, 
+    onReset, 
+  } 
+} 
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Models/Service/WmsMaterial.ts" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Models/Service/WmsMaterial.ts"
new file mode 100644
index 0000000..ee101f4
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Models/Service/WmsMaterial.ts"
@@ -0,0 +1,30 @@
+import { Base } from '@/libs/Base/Base' 
+const request = Base.request 
+ 
+/** 
+ * 娣诲姞 
+ * @returns 
+ */ 
+export const addWmsMaterial = (data: any) => { 
+  return request.post('/api/v1/HIAWms/wmsMaterial', data) 
+} 
+ 
+/** 
+ * 鎵归噺鍒犻櫎 
+ * @returns 
+ */ 
+export const deleteWmsMaterials = (ids: string[]) => { 
+  return request({ 
+    data: ids, 
+    url: '/api/v1/HIAWms/wmsMaterial', 
+    method: 'delete', 
+  }) 
+} 
+ 
+/** 
+ * 鍏嬮殕 
+ * @returns 
+ */ 
+export const cloneData = (data: any) => { 
+  return request.post('/api/v1/HIAWms/wmsMaterial/clone', data) 
+} 
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Models/Service/WmsMaterialDrawer.ts" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Models/Service/WmsMaterialDrawer.ts"
new file mode 100644
index 0000000..2f46cae
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Models/Service/WmsMaterialDrawer.ts"
@@ -0,0 +1,34 @@
+import { Base } from '@/libs/Base/Base' 
+const request = Base.request 
+ 
+/** 
+ * 娣诲姞 
+ * @returns 
+ */ 
+export const addWmsMaterial = (data: any) => { 
+  return request.post('/api/v1/HIAWms/wmsMaterial', data) 
+} 
+ 
+/** 
+ * 鑾峰彇璇︽儏 
+ * @returns 
+ */ 
+export const getWmsMaterial = (id: string) => { 
+  return request.get(`/api/v1/HIAWms/wmsMaterial/${id}`) 
+} 
+ 
+/** 
+ * 鏇存柊 
+ * @returns 
+ */ 
+export const updateWmsMaterial = (id: string, data: Record<string, any>) => { 
+  return request.put(`/api/v1/HIAWms/wmsMaterial/${id}`, data) 
+} 
+ 
+/** 
+ * 鑾峰彇鏋氫妇 
+ * @returns 
+ */ 
+export const getWmsEnumData = (data: any) => { 
+  return request.post('/api/v1/WareCmsUtilityApi/WmsEnum', data) 
+} 
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Models/Service/WmsMaterialQueryDrawer.ts" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Models/Service/WmsMaterialQueryDrawer.ts"
new file mode 100644
index 0000000..8302c94
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Models/Service/WmsMaterialQueryDrawer.ts"
@@ -0,0 +1,35 @@
+import { Base } from '@/libs/Base/Base' 
+const request = Base.request 
+ 
+/** 
+ * 娣诲姞 
+ * @returns 
+ */ 
+export const addWmsMaterial = (data: any) => { 
+  return request.post('/api/v1/HIAWms/wmsMaterial', data) 
+} 
+ 
+/** 
+ * 鑾峰彇璇︽儏 
+ * @returns 
+ */ 
+export const getWmsMaterial = (id: string) => { 
+  return request.get(`/api/v1/HIAWms/wmsMaterial/${id}`) 
+} 
+ 
+/** 
+ * 鏇存柊 
+ * @returns 
+ */ 
+export const updateWmsMaterial = (id: string, data: Record<string, any>) => { 
+  return request.put(`/api/v1/HIAWms/wmsMaterial/${id}`, data) 
+} 
+ 
+/** 
+ * 鑾峰彇鏋氫妇 
+ * @returns 
+ */ 
+export const getWmsEnumData = (data: any) => { 
+  return request.post('/api/v1/WareCmsUtilityApi/WmsEnum', data) 
+} 
+ 
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Models/WmsMaterial.ts" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Models/WmsMaterial.ts"
new file mode 100644
index 0000000..faa9d62
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Models/WmsMaterial.ts"
@@ -0,0 +1,41 @@
+import { Base } from '@/libs/Base/Base' 
+import { 
+  deleteWmsMaterials, 
+  addWmsMaterial, 
+  cloneData, 
+} from './Service/WmsMaterial' 
+ 
+export class WmsMaterial extends Base<{ [key: string]: any }> { 
+  constructor() { 
+    super({ 
+      data: [], 
+    }) 
+  } 
+  onMounted() {} 
+  /** 
+   * 鍒犻櫎 
+   * @param id 
+   * @returns 
+   */ 
+  async deleteWmsMaterials(ids: string[]) { 
+    return deleteWmsMaterials(ids) 
+  } 
+ 
+  /** 
+   * 娣诲姞鏁版嵁 
+   * @param data 
+   * @returns 
+   */ 
+  addWmsMaterial(data: Record<string, any>) { 
+    return addWmsMaterial(data) 
+  } 
+ 
+  /** 
+   * 鍏嬮殕 
+   * @param ids 
+   * @returns 
+   */ 
+  cloneData(ids: string[]) { 
+    return cloneData(ids) 
+  } 
+} 
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Models/WmsMaterialDrawer.ts" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Models/WmsMaterialDrawer.ts"
new file mode 100644
index 0000000..2129a69
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Models/WmsMaterialDrawer.ts"
@@ -0,0 +1,44 @@
+import { Base } from '@/libs/Base/Base' 
+import { 
+  addWmsMaterial, 
+  getWmsMaterial, 
+  updateWmsMaterial, 
+  getWmsEnumData, 
+} from './Service/WmsMaterialDrawer' 
+import { useGlobalState } from '@/libs/Store/Store' 
+ 
+export class WmsMaterialDrawer extends Base<{ [key: string]: any }> { 
+  constructor() { 
+    super({ 
+      data: [], 
+      wmsMaterial: {}, 
+    }) 
+  } 
+ 
+  /** 
+   * 娣诲姞 
+   * @param data 
+   */ 
+  async addWmsMaterial(data: Record<string, any>) { 
+    return addWmsMaterial(data) 
+  } 
+  /** 
+   * 鏇存柊 
+   * @param data 
+   */ 
+  async updateWmsMaterial(id: string, data: Record<string, any>) { 
+    return updateWmsMaterial(id, data) 
+  } 
+ 
+  /** 
+   * 鑾峰彇璇︽儏 
+   */ 
+  async getWmsMaterialDetail(current: any, id?: string) { 
+    return getWmsMaterial(id || current?.id) 
+  } 
+ 
+  //  鑾峰彇鏋氫妇鍊� 
+  async getWmsEnumData(data: Record<string, any>) { 
+    return getWmsEnumData(data) 
+  } 
+} 
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Models/WmsMaterialQueryDrawer.ts" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Models/WmsMaterialQueryDrawer.ts"
new file mode 100644
index 0000000..ca0ed17
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Models/WmsMaterialQueryDrawer.ts"
@@ -0,0 +1,44 @@
+import { Base } from '@/libs/Base/Base' 
+import { 
+  addWmsMaterial, 
+  getWmsMaterial, 
+  updateWmsMaterial, 
+  getWmsEnumData, 
+} from './Service/WmsMaterialQueryDrawer' 
+import { useGlobalState } from '@/libs/Store/Store' 
+ 
+export class WmsMaterialQueryDrawer extends Base<{ [key: string]: any }> { 
+  constructor() { 
+    super({ 
+      data: [], 
+      wmsMaterial: {}, 
+    }) 
+  } 
+ 
+  /** 
+   * 娣诲姞 
+   * @param data 
+   */ 
+  async addWmsMaterial(data: Record<string, any>) { 
+    return addWmsMaterial(data) 
+  } 
+  /** 
+   * 鏇存柊 
+   * @param data 
+   */ 
+  async updateWmsMaterial(id: string, data: Record<string, any>) { 
+    return updateWmsMaterial(id, data) 
+  } 
+ 
+  /** 
+   * 鑾峰彇璇︽儏 
+   */ 
+  async getWmsMaterialDetail(current: any, id?: string) { 
+    return getWmsMaterial(id || current?.id) 
+  } 
+ 
+  //  鑾峰彇鏋氫妇鍊� 
+  async getWmsEnumData(data: Record<string, any>) { 
+    return getWmsEnumData(data) 
+  } 
+} 
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Views/Pages/Dialog/WmsMaterialDrawer/WmsMaterialDrawer.module.scss" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Views/Pages/Dialog/WmsMaterialDrawer/WmsMaterialDrawer.module.scss"
new file mode 100644
index 0000000..177adca
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Views/Pages/Dialog/WmsMaterialDrawer/WmsMaterialDrawer.module.scss"
@@ -0,0 +1,3 @@
+.drawer { 
+  width: 800px; 
+} 
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Views/Pages/Dialog/WmsMaterialDrawer/WmsMaterialDrawer.tsx" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Views/Pages/Dialog/WmsMaterialDrawer/WmsMaterialDrawer.tsx"
new file mode 100644
index 0000000..e24b256
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Views/Pages/Dialog/WmsMaterialDrawer/WmsMaterialDrawer.tsx"
@@ -0,0 +1,61 @@
+import { SetupContext, defineComponent } from 'vue' 
+import BaseDrawer from '@/components/BaseDrawer/BaseDrawer' 
+import styles from './WmsMaterialDrawer.module.scss' 
+import { useWmsMaterialDrawer } from '../../../../Controllers/WmsMaterialDrawer.tsx' 
+import DyForm from '@/components/DyForm/DyForm' 
+ 
+// @ts-ignore 
+export default defineComponent<{ 
+  [key: string]: any 
+}>({ 
+  name: '寮圭獥', 
+  props: { 
+    modelValue: { 
+      type: Boolean, 
+      default: false, 
+    }, 
+    title: { 
+      type: String, 
+      default: '', 
+    }, 
+    row: { 
+      type: Object, 
+    }, 
+    sort: { 
+      type: Number, 
+      default: 0, 
+    }, 
+  }, 
+  emits: ['update:modelValue', 'close', 'submit', 'confirm'], 
+  setup(props: Record<string, any>, ctx: SetupContext) { 
+    const { 
+      onClose, 
+      onConfirm, 
+      onOpen, 
+      formRef, 
+      visible, 
+      formItems, 
+      formData, 
+    } = useWmsMaterialDrawer(props, ctx) 
+    return () => ( 
+      <BaseDrawer 
+        class={styles.drawer} 
+        size="800px" 
+        title={props.title || '娣诲姞'} 
+        v-model={visible.value} 
+        close-on-click-modal={true} 
+        onConfirm={onConfirm} 
+        onOpen={onOpen} 
+        before-close={onClose} 
+        onClose={onClose} 
+      > 
+        <DyForm 
+          ref={formRef} 
+          formData={formData.value} 
+          labelWidth="106px" 
+          formItemProps={formItems} 
+        ></DyForm> 
+      </BaseDrawer> 
+    ) 
+  }, 
+}) 
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Views/Pages/Dialog/WmsMaterialQueryDrawer/WmsMaterialQueryDrawer.module.scss" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Views/Pages/Dialog/WmsMaterialQueryDrawer/WmsMaterialQueryDrawer.module.scss"
new file mode 100644
index 0000000..177adca
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Views/Pages/Dialog/WmsMaterialQueryDrawer/WmsMaterialQueryDrawer.module.scss"
@@ -0,0 +1,3 @@
+.drawer { 
+  width: 800px; 
+} 
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Views/Pages/Dialog/WmsMaterialQueryDrawer/WmsMaterialQueryDrawer.tsx" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Views/Pages/Dialog/WmsMaterialQueryDrawer/WmsMaterialQueryDrawer.tsx"
new file mode 100644
index 0000000..df1e463
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Views/Pages/Dialog/WmsMaterialQueryDrawer/WmsMaterialQueryDrawer.tsx"
@@ -0,0 +1,71 @@
+/* 
+ * 鐗╂枡鍩虹淇℃伅鏌ヨ寮瑰嚭妗� 
+*/ 
+import { SetupContext, defineComponent } from 'vue' 
+import BaseQueryDrawer from '@/components/BaseQueryDrawer/BaseQueryDrawer' 
+import styles from './WmsMaterialQueryDrawer.module.scss' 
+import { useWmsMaterialQueryDrawer } from '../../../../Controllers/WmsMaterialQueryDrawer.tsx' 
+import DyForm from '@/components/DyForm/DyForm' 
+ 
+// @ts-ignore 
+export default defineComponent<{ 
+  [key: string]: any 
+}>({ 
+  name: '寮圭獥', 
+  props: { 
+    //鏋氫妇绫诲瀷瀛楀吀 
+    enumListDict:{ 
+      type: Array as () => Array<{ key: string; value: object }>, // 瀹氫箟鏁扮粍鍏冪礌绫诲瀷 
+      default: () => [] // 榛樿鍊� 
+    }, 
+    modelValue: { 
+      type: Boolean, 
+      default: false, 
+    }, 
+    title: { 
+      type: String, 
+      default: '', 
+    }, 
+    row: { 
+      type: Object, 
+    }, 
+    sort: { 
+      type: Number, 
+      default: 0, 
+    }, 
+  }, 
+  emits: ['update:modelValue', 'close', 'submit', 'confirmquery1'], 
+  setup(props: Record<string, any>, ctx: SetupContext) { 
+    const { 
+      onClose, 
+      onConfirmQuery, 
+      onOpen, 
+      onReset, 
+      formRef, 
+      visible, 
+      formItems, 
+      formData, 
+    } = useWmsMaterialQueryDrawer(props, ctx) 
+    return () => ( 
+      <BaseQueryDrawer 
+        class={styles.drawer} 
+        size="800px" 
+        title={props.title || '楂樼骇鏌ヨ'} 
+        v-model={visible.value} 
+        close-on-click-modal={true} 
+        onReset={onReset} 
+        onConfirmQueryForBase={onConfirmQuery} 
+        onOpen={onOpen} 
+        before-close={onClose} 
+        onClose={onClose} 
+      > 
+        <DyForm 
+          ref={formRef} 
+          formData={formData.value} 
+          labelWidth="106px" 
+          formItemProps={formItems} 
+        ></DyForm> 
+      </BaseQueryDrawer> 
+    ) 
+  }, 
+}) 
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Views/Pages/WmsMaterial/Config.ts" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Views/Pages/WmsMaterial/Config.ts"
new file mode 100644
index 0000000..fc2084a
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Views/Pages/WmsMaterial/Config.ts"
@@ -0,0 +1,132 @@
+export const columns = [ 
+  { 
+    type: 'seq', 
+    width: 60, 
+    title: '搴忓彿', 
+  }, 
+  { 
+  field: 'materialCode', 
+  title: '鐗╂枡缂栫爜锛堝敮涓�鏍囪瘑锛�', 
+  width:160, 
+}, 
+{ 
+  field: 'materialName', 
+  title: '鐗╂枡鍚嶇О', 
+  width:160, 
+}, 
+{ 
+  field: 'purchaseTypeDesc', 
+  title: '閲囪喘绫诲瀷锛堟灇涓惧�硷級', 
+  width:160, 
+}, 
+{ 
+  field: 'materialTypeDesc', 
+  title: '鐗╂枡绫诲瀷锛堟灇涓惧�硷級', 
+  width:160, 
+}, 
+{ 
+  field: 'primaryUnit', 
+  title: '涓诲崟浣嶏紙濡傦細kg銆乵銆佷釜锛�', 
+  width:160, 
+}, 
+{ 
+  field: 'standard', 
+  title: '瑙勬牸/鏍囧噯锛堝锛欸B/T 8163-2018锛�', 
+  width:160, 
+}, 
+{ 
+  field: 'outerDiameter', 
+  title: '澶栧緞锛堝崟浣嶏細mm锛�', 
+  width:160, 
+}, 
+{ 
+  field: 'wallThickness', 
+  title: '澹佸帤锛堝崟浣嶏細mm锛�', 
+  width:160, 
+}, 
+{ 
+  field: 'materialQuality', 
+  title: '鏉愯川锛堝锛�304涓嶉攬閽級', 
+  width:160, 
+}, 
+{ 
+  field: 'length', 
+  title: '闀垮害锛堝崟浣嶏細m锛�', 
+  width:160, 
+}, 
+{ 
+  field: 'isMainBranchDesc', 
+  title: '鏄惁涓轰富鏀', 
+  width:160, 
+}, 
+{ 
+  field: 'factory', 
+  title: '鐢熶骇宸ュ巶', 
+  width:160, 
+}, 
+{ 
+  field: 'certification', 
+  title: '璇佷功缂栧彿', 
+  width:160, 
+}, 
+{ 
+  field: 'redundantField1', 
+  title: '鍐椾綑瀛楁1 - 棰勭暀鎵╁睍鐢ㄩ��', 
+  width:160, 
+}, 
+{ 
+  field: 'redundantField2', 
+  title: '鍐椾綑瀛楁2 - 棰勭暀鎵╁睍鐢ㄩ��', 
+  width:160, 
+}, 
+{ 
+  field: 'redundantField3', 
+  title: '鍐椾綑瀛楁3 - 棰勭暀鎵╁睍鐢ㄩ��', 
+  width:160, 
+}, 
+{ 
+  field: 'creationTime', 
+  title: '鍒涘缓鏃堕棿', 
+  width:180, 
+}, 
+{ 
+  field: 'deletionTime', 
+  title: '鍒犻櫎鏃堕棿', 
+  width:180, 
+}, 
+{ 
+  field: 'creatorName', 
+  title: '鍒涘缓浜�', 
+  width:160, 
+}, 
+{ 
+  field: 'lastModifierName', 
+  title: '淇敼浜�', 
+  width:160, 
+}, 
+{ 
+  field: 'sort', 
+  title: '鎺掑簭', 
+  width:160, 
+}, 
+{ 
+  field: 'remark', 
+  title: '澶囨敞', 
+  width:160, 
+}, 
+{ 
+  field: 'extraField1', 
+  title: '鎵╁睍瀛楁1', 
+  width:160, 
+}, 
+{ 
+  field: 'extraField2', 
+  title: '鎵╁睍瀛楁2', 
+  width:160, 
+}, 
+{ 
+  field: 'extraField3', 
+  title: '鎵╁睍瀛楁3', 
+  width:160, 
+},  
+] 
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Views/Pages/WmsMaterial/WmsMaterial.module.scss" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Views/Pages/WmsMaterial/WmsMaterial.module.scss"
new file mode 100644
index 0000000..019a625
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Views/Pages/WmsMaterial/WmsMaterial.module.scss"
@@ -0,0 +1,113 @@
+.wmsMaterialContent { 
+  width: 100%; 
+  height: 100%; 
+ 
+  .wmsMaterialList { 
+    width: 100%; 
+    height: calc(100% - 70px); 
+  } 
+  .headerContent { 
+    display: flex; 
+    justify-content: space-between; 
+    align-items: center; 
+    height: 43px; 
+  } 
+  .header { 
+    margin-bottom: 12px; 
+    display: flex; 
+    justify-content: flex-end; 
+    align-items: center; 
+  } 
+} 
+ 
+.tagBox { 
+  width: auto; 
+  min-width: 80px; 
+  height: 24px; 
+  background: #ffffff; 
+  border-radius: 19px 19px 19px 19px; 
+  opacity: 1; 
+  border: 1px dashed #bcc4cc; 
+  width: 50px; 
+  height: 20px; 
+  font-size: 14px; 
+  font-family: PingFang SC, PingFang SC; 
+  font-weight: 400; 
+  color: #5a84ff; 
+  display: flex; 
+  justify-content: center; 
+  align-items: center; 
+  // cursor: pointer; 
+} 
+ 
+.group { 
+  display: flex; 
+  justify-content: space-between; 
+  align-items: center; 
+} 
+ 
+.groupTable { 
+  width: 100%; 
+} 
+ 
+.overBox { 
+  width: 100%; 
+  height: calc(100% - 20px); 
+  overflow: auto; 
+  :global(.cs-collapse-item__header) { 
+    background-color: #f1f1f1; 
+    padding: 0 20px; 
+    height: 35px; 
+    font-size: 16px; 
+    font-family: PingFang SC, PingFang SC; 
+    font-weight: 500; 
+  } 
+  :global(.cs-collapse-item__content) { 
+    padding-bottom: 0px; 
+  } 
+} 
+.groupHeader { 
+  width: 100%; 
+  height: 30px; 
+  background: #ccc; 
+} 
+ 
+.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%; 
+  } 
+} 
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Views/Pages/WmsMaterial/WmsMaterial.tsx" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Views/Pages/WmsMaterial/WmsMaterial.tsx"
new file mode 100644
index 0000000..b424c28
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Views/Pages/WmsMaterial/WmsMaterial.tsx"
@@ -0,0 +1,373 @@
+import { computed, defineComponent, onMounted, reactive, ref } from 'vue' 
+import type { Ref } from 'vue' 
+import BaseTable from '@/components/Table/Table' 
+import styles from './WmsMaterial.module.scss' 
+import { useWmsMaterial } from '../../../Controllers/WmsMaterial' 
+import IconButton from '@/components/IconButton/IconButton' 
+import WmsMaterialDrawer from '../Dialog/WmsMaterialDrawer/WmsMaterialDrawer' 
+import WmsMaterialQueryDrawer from '../Dialog/WmsMaterialQueryDrawer/WmsMaterialQueryDrawer' 
+import Search from '@/components/Search/Search' 
+import { columns } from './Config' 
+import TdButton from '@/components/TdButton/TdButton' 
+import { vPermission } from '@/libs/Permission/Permission' 
+import dayjs from 'dayjs' 
+import { 
+  getWmsEnumData 
+} from '@/widgets/WmsMaterial/Models/Service/WmsMaterialDrawer' 
+import { 
+  ElInput, 
+  ElSelect, 
+  ElOption, 
+  ElDatePicker, 
+  ElForm, 
+  ElFormItem, 
+} from 'element-plus' 
+import { injectModel } from '@/libs/Provider/Provider' 
+ 
+interface RenderTableType { 
+  url?: string 
+  dataSource: Ref<any[]> 
+  isDrag?: boolean 
+  isChecked?: boolean 
+  isHidePagination?: boolean 
+  params?: Record<string, any> 
+  autoHeight?: boolean 
+} 
+ 
+export default defineComponent({ 
+  name: 'WmsMaterial', 
+  directives: { 
+    permission: vPermission, 
+  }, 
+  setup(props, ctx) { 
+    const { 
+      dataSource, 
+      contextMenu, 
+      dialogConfig, 
+      dialogConfigForQuery, 
+      tableRef, 
+      current, 
+      search, 
+      sort, 
+      headers, 
+      onError, 
+      onSearch, 
+      onRowClick, 
+      onConfirmWmsMaterial, 
+      onCheck, 
+      onAddWmsMaterial, 
+      onAdvancedQuery, 
+      onExport, 
+      openDetail, 
+      onSuccess, 
+      onBeforeUpload, 
+    } = useWmsMaterial(props, ctx) 
+ 
+    //瀹氫箟楂樼骇鏌ヨ寮曠敤 
+   const wmsMaterialQueryDrawerRef=ref(null); 
+    // 鏂板鐨勬煡璇㈡潯浠� 
+    const queryForm = ref({ 
+      searchVal: '', 
+      str_searchFormInputAttrs:[] 
+    }) 
+    //瀹氫箟鏁翠綋妯$硦鏌ヨ鐨勫垪鏁扮粍(娉ㄦ剰锛氬繀椤诲ぇ灏忓啓璺熷悗绔殑瀹炰綋绫诲睘鎬у悕涓�鑷达紝鍚﹀垯浼氬鑷村尮閰嶄笉瀵圭殑闂) 
+    const _searchFormInputAttrs = ref([ 
+     'MaterialCode', 'MaterialName', 'Remark' 
+    ]); 
+    const searchFormInputAttrs_Placeholder = ref('璇疯緭鍏ョ墿鏂欑紪鐮�/鐗╂枡鍚嶇О/澶囨敞'); 
+     
+ 
+    // 鍔ㄦ�佹灇涓鹃�夐」 
+    const enumOptions = reactive({ 
+      purchaseType: [] as Array<{label: string; value: any }>, 
+materialType: [] as Array<{label: string; value: any }>, 
+isMainBranch: [] as Array<{label: string; value: any }>,  
+    }) 
+ 
+    // 鑾峰彇鏋氫妇鏁版嵁 
+    const fetchEnumData = async () => { 
+      try { 
+        const purchaseTypeEnumData = await getWmsEnumData({ 
+ EnumName: 'PurchaseTypeEnum', 
+}) 
+enumOptions.purchaseType = purchaseTypeEnumData.map((item) => ({ 
+  label: item.description, 
+  value: item.value, 
+})) 
+const materialTypeEnumData = await getWmsEnumData({ 
+ EnumName: 'MaterialTypeEnum', 
+}) 
+enumOptions.materialType = materialTypeEnumData.map((item) => ({ 
+  label: item.description, 
+  value: item.value, 
+})) 
+const yesNoEnumData = await getWmsEnumData({ 
+ EnumName: 'YesNoEnum', 
+}) 
+enumOptions.isMainBranch = yesNoEnumData.map((item) => ({ 
+  label: item.description, 
+  value: item.value, 
+})) 
+ 
+      } catch (error) { 
+        console.error('鑾峰彇鏋氫妇鏁版嵁澶辫触:', error) 
+      } 
+    } 
+ 
+    // 缁勪欢鎸傝浇鏃惰幏鍙栨灇涓炬暟鎹� 
+    onMounted(() => { 
+      fetchEnumData() 
+    }) 
+ 
+    // 瀹氫箟鍝嶅簲寮忔煡璇㈡暟鎹� 
+    const _curHighQueryData = ref({ searchVal: '',str_searchFormInputAttrs:[] }); 
+    // 鏂扮増鐨勬煡璇㈡柟娉曪紙涓婚〉闈腑鐨勬寜閽�愭煡璇€�戯級 
+    const handleQueryForMain = async () => { 
+      _curHighQueryData.value.searchVal = queryForm.value.searchVal; 
+      _curHighQueryData.value.str_searchFormInputAttrs = _searchFormInputAttrs.value; 
+      tableRef.value.getList(_curHighQueryData.value) 
+    } 
+    // 鏂扮増鐨勬煡璇㈡柟娉曪紙楂樼骇鏌ヨ涓殑鎸夐挳銆愭煡璇€�戯級 
+    const handleQuery = async (extraParams = {}) => { 
+      let filteredData = commonGetHighQueryForm(extraParams); 
+      commonSaveCurHighQueryData(filteredData); 
+      tableRef.value.getList(filteredData) 
+    } 
+    // 鏂扮増鐨勬煡璇㈤噸缃� 
+    const resetQuery = () => { 
+      queryForm.value.searchVal = '' 
+      queryForm.value.str_searchFormInputAttrs=_searchFormInputAttrs.value; 
+    } 
+     //鏂扮増鐨勫鍑烘柟娉� 
+     const handleExport=()=>{ 
+      onExport(_curHighQueryData.value); 
+    } 
+    // 鏂扮増鐨勬煡璇㈠脊鍑烘鍏抽棴鏂规硶 
+    const closeQuery = (extraParams={}) => { 
+      let filteredData = commonGetHighQueryForm(extraParams); 
+      console.log("closeQuery鏂规硶"); 
+      console.log(filteredData); 
+      commonSaveCurHighQueryData(filteredData); 
+    } 
+    //淇濆瓨鏌ヨ鍊� 
+    const commonSaveCurHighQueryData=(filteredData={})=>{ 
+      _curHighQueryData.value = { ..._curHighQueryData.value, ...filteredData }; 
+      _curHighQueryData.value.searchVal = queryForm.value.searchVal 
+      _curHighQueryData.value.str_searchFormInputAttrs =_searchFormInputAttrs.value; 
+    } 
+     //鑾峰彇楂樼骇鏌ヨ寮瑰嚭妗嗙殑鏌ヨ鍊� 
+     const commonGetHighQueryForm=(extraParams={})=>{ 
+      // 杩囨护鎺� undefined 鐨勫�� 
+      let filteredData = Object.assign( 
+        {}, 
+        ...Object.entries(extraParams).map(([key, value]) => 
+          value !== undefined ? { [key]: value } : {} 
+        ) 
+      ) 
+      //缁勫悎妯$硦鏌ヨ 
+      filteredData.searchVal = queryForm.value.searchVal 
+      filteredData.str_searchFormInputAttrs =_searchFormInputAttrs.value; 
+      return filteredData; 
+    } 
+    
+ 
+    /** 
+     * @returns 琛ㄦ牸 
+     */ 
+    const RenderBaseTable = (props: RenderTableType) => { 
+      const { 
+        url, 
+        dataSource, 
+        isDrag, 
+        isChecked, 
+        isHidePagination, 
+        params, 
+        autoHeight, 
+      } = props 
+ 
+      return ( 
+        <div 
+          class={{ 
+            [styles.wmsMaterialList]: true, 
+          }} 
+        > 
+          <BaseTable 
+            ref={tableRef} 
+            url={url} 
+            sortUrlTpl="/api/v1/HIAWms/wmsMaterial/{id}/adjustsort/{sort}" 
+            v-model:dataSource={dataSource.value} 
+            columns={columns} 
+            contextMenu={contextMenu} 
+            params={params} 
+            isDrag={isDrag} 
+            isChecked={isChecked} 
+            autoHeight={autoHeight} 
+            onCheck={onCheck} 
+            onRowClick={onRowClick} 
+            isHidePagination={isHidePagination} 
+            pageSize={20} 
+            v-slots={{ 
+              creationTime: ({ row }: any) => { 
+ return ( 
+   <div>  
+     {row.creationTime != null 
+     ? dayjs(row.creationTime).format('YYYY-MM-DD HH:mm:ss') 
+      : '-'} 
+   </div>  
+  ) 
+},
+lastModificationTime: ({ row }: any) => { 
+ return ( 
+   <div>  
+     {row.lastModificationTime != null 
+     ? dayjs(row.lastModificationTime).format('YYYY-MM-DD HH:mm:ss') 
+      : '-'} 
+   </div>  
+  ) 
+},
+isDeleted: ({ row }: any) => { 
+ return ( 
+   <div>  
+     {row.isDeleted != null ? (row.isDeleted ? '鏄�' : '鍚�') : '-'} 
+   </div>  
+  ) 
+},
+deletionTime: ({ row }: any) => { 
+ return ( 
+   <div>  
+     {row.deletionTime != null 
+     ? dayjs(row.deletionTime).format('YYYY-MM-DD HH:mm:ss') 
+      : '-'} 
+   </div>  
+  ) 
+},
+isDisabled: ({ row }: any) => { 
+ return ( 
+   <div>  
+     {row.isDisabled != null ? (row.isDisabled ? '鏄�' : '鍚�') : '-'} 
+   </div>  
+  ) 
+}, 
+              name: ({ row }: any) => { 
+                return row?.name ? ( 
+                  <TdButton 
+                    onClick={() => openDetail(row)} 
+                    text={<span style="color:#5a84ff">璇︽儏</span>} 
+                    icon="scale" 
+                    tip={row?.name} 
+                    hover 
+                  > 
+                    {row?.name} 
+                  </TdButton> 
+                ) : ( 
+                  '-' 
+                ) 
+              }, 
+            }} 
+          ></BaseTable> 
+        </div> 
+      ) 
+    } 
+ 
+    return () => { 
+      return ( 
+        <div class={styles.wmsMaterialContent}> 
+          {/* 娣诲姞/缂栬緫 */} 
+          <WmsMaterialDrawer 
+            v-model={dialogConfig.visible} 
+            title={dialogConfig.title} 
+            row={current.value} 
+            sort={sort.value} 
+            onConfirm={onConfirmWmsMaterial} 
+          /> 
+          {/* 楂樼骇鏌ヨ */} 
+          <WmsMaterialQueryDrawer 
+            ref="wmsMaterialQueryDrawerRef" 
+            v-model={dialogConfigForQuery.visible} 
+            title={dialogConfigForQuery.title} 
+            row={current.value} 
+            sort={sort.value} 
+            onConfirmQuery={handleQuery} 
+            onRestQuery={resetQuery} 
+            onClose={closeQuery} 
+          /> 
+ 
+          <div class={styles.headerContent}> 
+            <div class={styles.header}> 
+              <IconButton 
+                v-permission="wmsMaterial-add" 
+                icon="add-p" 
+                onClick={onAddWmsMaterial} 
+                type="primary" 
+              > 
+                娣诲姞 
+              </IconButton> 
+              <el-divider direction="vertical" /> 
+ 
+              <el-divider direction="vertical" /> 
+              <el-upload 
+                v-permission="wmsMaterial-import" 
+                name="file" 
+                accept=".xlsx,.xls,.csv" 
+                show-file-list={false} 
+                onError={onError} 
+                onSuccess={onSuccess} 
+                before-upload={onBeforeUpload} 
+                headers={headers.value} 
+                action="/api/v1/HIAWms/wmsMaterial/import" 
+              > 
+                <IconButton icon="in">瀵煎叆</IconButton> 
+              </el-upload> 
+ 
+              <IconButton 
+                v-permission="wmsMaterial-output" 
+                icon="out" 
+                onClick={handleExport} 
+              > 
+                瀵煎嚭 
+              </IconButton> 
+            </div> 
+            <ElFormItem style={{ marginTop: '15px' }}> 
+              <ElFormItem label="鍏抽敭瀛�"> 
+                 <el-tooltip 
+                  class="box-item" 
+                  effect="dark" 
+                  content={searchFormInputAttrs_Placeholder.value} 
+                  placement="top-start" 
+                > 
+                <ElInput 
+                  v-model={queryForm.value.searchVal} 
+                  placeholder={searchFormInputAttrs_Placeholder.value} 
+                  clearable 
+                  class={styles.formItem} 
+                /> 
+                </el-tooltip> 
+              </ElFormItem> 
+              <IconButton type="primary" icon="search" onClick={handleQueryForMain}> 
+                鏌ヨ 
+              </IconButton> 
+              {/* <IconButton style="" icon="refresh" onClick={resetQuery}> 
+                閲嶇疆 
+              </IconButton> */} 
+              <IconButton 
+                v-permission="wmsMaterial-add" 
+                icon="search" 
+                onClick={onAdvancedQuery} 
+                type="primary" 
+              > 
+                楂樼骇鏌ヨ 
+              </IconButton> 
+            </ElFormItem> 
+          </div> 
+ 
+          <RenderBaseTable 
+            url="/api/v1/HIAWms/wmsMaterial/page" 
+            dataSource={dataSource} 
+            isChecked={true} 
+            isDrag={true} 
+          /> 
+        </div> 
+      ) 
+    } 
+  }, 
+}) 
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Views/WmsMaterial.module.scss" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Views/WmsMaterial.module.scss"
new file mode 100644
index 0000000..030c79c
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Views/WmsMaterial.module.scss"
@@ -0,0 +1,7 @@
+.WmsMaterial { 
+  background-color: #fff; 
+  border-radius: 5px 5px 0 0; 
+  width: 100%; 
+  height: 100%; 
+  border: 1px solid #dbdbdb; 
+} 
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Views/WmsMaterial.tsx" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Views/WmsMaterial.tsx"
new file mode 100644
index 0000000..23a203d
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Views/WmsMaterial.tsx"
@@ -0,0 +1,80 @@
+import { 
+  Component, 
+  DefineComponent, 
+  defineComponent, 
+  markRaw, 
+  ref, 
+  SetupContext, 
+  onMounted, 
+} from 'vue' 
+import styles from './WmsMaterial.module.scss' 
+import Tab from '@/components/Tab/Tab' 
+import { useProvideModels } from '@/libs/Provider/app' 
+import { usePermission } from '@/libs/Permission/Permission' 
+import { permissionCodes } from '../enum' 
+import { ModuleType, TabItem } from '../type/Type' 
+import { getEntityNames } from '@/hooks/hook' 
+import TabPane from '@/components/Tab/TabPane' 
+ 
+const Models: ModuleType = import.meta.glob('./config/*.json', { 
+  eager: true, 
+}) 
+ 
+const entityNames = getEntityNames(Models) 
+ 
+const nameToLabelMap = [{ name: 'WmsMaterial', label: '鐗╂枡淇℃伅' }] 
+ 
+export default defineComponent({ 
+  name: 'WmsMaterial', 
+ 
+  setup(props, ctx: SetupContext) { 
+    useProvideModels() 
+    usePermission(props, permissionCodes) 
+ 
+    const rf = ref<{ 
+      [key: string]: any 
+    }>({}) 
+ 
+    const tabData = ref<TabItem[]>([]) 
+ 
+    const onTabChange = (v: string) => { 
+      rf.value?.[v]?.reloadList() 
+    } 
+ 
+    const initTableData = async () => { 
+      for (const i in entityNames) { 
+        const name = entityNames[i] 
+        const module = await import(`./Pages/${name}/${name}.tsx`) 
+        const WmsMaterial = markRaw(module.default) 
+        const foundLabel = 
+          nameToLabelMap.find((item) => item.name === name)?.label || name 
+        tabData.value.push({ 
+          label: foundLabel, 
+          name, 
+          component: WmsMaterial, 
+        }) 
+      } 
+    } 
+ 
+    initTableData() 
+ 
+    return () => { 
+      return ( 
+        <div class={styles.WmsMaterial}> 
+          <Tab data={tabData.value} type="list" onTab={onTabChange}> 
+            {tabData.value.map((widgetInfo) => { 
+              const Widget: any = widgetInfo.component 
+              return ( 
+                <TabPane label={widgetInfo.label} name={widgetInfo.name}> 
+                  <Widget 
+                    ref={(r: any) => (rf.value['WmsMaterial'] = r)} 
+                  ></Widget> 
+                </TabPane> 
+              ) 
+            })} 
+          </Tab> 
+        </div> 
+      ) 
+    } 
+  }, 
+}) 
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Views/config/WmsMaterial.json" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Views/config/WmsMaterial.json"
new file mode 100644
index 0000000..bbe1334
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/Views/config/WmsMaterial.json"
@@ -0,0 +1,3 @@
+{ 
+  "name": "WmsMaterial" 
+} 
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/enum.ts" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/enum.ts"
new file mode 100644
index 0000000..063ce43
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/enum.ts"
@@ -0,0 +1,15 @@
+export interface TabType { 
+  label: string 
+  name: string 
+  columns?: any[] 
+  data?: any[] 
+  isFooter: boolean 
+  [key: string]: any 
+} 
+ 
+export const permissionCodes = { 
+  'wmsMaterial-list': '鍒楄〃-鍒楄〃', 
+  'wmsMaterial-add': '鍒楄〃-娣诲姞', 
+  'wmsMaterial-import': '鍒楄〃-瀵煎叆', 
+  'wmsMaterial-output': '鍒楄〃-杈撳嚭', 
+} 
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/index.ts" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/index.ts"
new file mode 100644
index 0000000..02be14a
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/index.ts"
@@ -0,0 +1,14 @@
+import WmsMaterial from './Views/WmsMaterial' 
+import Setting from '@/components/Setting/Setting' 
+import { provider } from '@/provider/index' 
+import p from '../../assets/svg/p.svg' 
+ 
+export default { 
+  is: 'WmsMaterial', 
+  name: '鐗╂枡淇℃伅', 
+  category: 'run', 
+  icon: p, 
+  authorizationRequired: false, 
+  canvasView: provider(WmsMaterial), 
+  settingsView: Setting, 
+} 
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/type/type.d.ts" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/type/type.d.ts"
new file mode 100644
index 0000000..7bd5c03
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Weben_CMS_TemplateDemo/templatedemo_web/src/widgets/WmsMaterial/type/type.d.ts"
@@ -0,0 +1,45 @@
+import { Component } from 'vue' 
+ 
+export interface DataItemType { 
+  id?: string 
+  name?: string 
+  code?: string 
+  description?: string 
+  label?: string 
+  value?: string | number 
+} 
+ 
+export interface WmsMaterialBaseType { 
+  id?: string 
+  name?: string 
+  code?: string 
+  value?: number 
+  description?: string 
+  options?: Array<DataItemType> 
+  abilityValue?: number | string 
+  data?: DataItemType 
+  defaultValue?: string | number 
+  flow: string 
+} 
+ 
+export interface FlowDefinitionType { 
+  id?: string 
+  name?: string 
+  code?: string 
+  description?: string 
+} 
+ 
+export type ModuleType = Record< 
+  string, 
+  { 
+    default: Record<string, string> 
+    name: string 
+  } 
+> 
+ 
+export interface TabItem { 
+  name: string 
+  label: string 
+  component: Component 
+  hidden?: boolean 
+} 

--
Gitblit v1.9.3