From 637668ccd8a20772540eaf88ecf8b6eb098df5a1 Mon Sep 17 00:00:00 2001
From: wxw <Administrator@DESKTOP-5BIMHQ3>
Date: 星期四, 05 九月 2024 16:55:26 +0800
Subject: [PATCH] 新增WMS下发任务表,增加分拣任务菜单;绑定分拣码垛设备数据

---
 Web/src/views/device/wcsOderTask/index.vue                             |  280 ++++++++++++
 Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs        |   16 
 Admin.NET/WCS.Application/Service/WcsOderTask/Dto/WcsOderTaskInput.cs  |  200 +++++++++
 Admin.NET/WCS.Application/Service/WcsOderTask/Dto/WcsOderTaskDto.cs    |   89 ++++
 Admin.NET/WCS.Application/Service/WcsOderTask/WcsOderTaskService.cs    |  135 ++++++
 Web/src/views/device/sortPallet/index.vue                              |  104 +---
 Web/src/api/device/wcsOderTask.ts                                      |   50 ++
 Web/src/api/wcs/wcsDevice.ts                                           |   10 
 Web/src/views/device/wcsOderTask/component/editDialog.vue              |  211 +++++++++
 Admin.NET/WCS.Application/Entity/WcsOderTask.cs                        |   83 +++
 Admin.NET/WCS.Application/Service/WcsOderTask/Dto/WcsOderTaskOutput.cs |   91 ++++
 11 files changed, 1,190 insertions(+), 79 deletions(-)

diff --git a/Admin.NET/WCS.Application/Entity/WcsOderTask.cs b/Admin.NET/WCS.Application/Entity/WcsOderTask.cs
new file mode 100644
index 0000000..6f360a3
--- /dev/null
+++ b/Admin.NET/WCS.Application/Entity/WcsOderTask.cs
@@ -0,0 +1,83 @@
+锘�// Admin.NET 椤圭洰鐨勭増鏉冦�佸晢鏍囥�佷笓鍒╁拰鍏朵粬鐩稿叧鏉冨埄鍧囧彈鐩稿簲娉曞緥娉曡鐨勪繚鎶ゃ�備娇鐢ㄦ湰椤圭洰搴旈伒瀹堢浉鍏虫硶寰嬫硶瑙勫拰璁稿彲璇佺殑瑕佹眰銆�
+//
+// 鏈」鐩富瑕侀伒寰� MIT 璁稿彲璇佸拰 Apache 璁稿彲璇侊紙鐗堟湰 2.0锛夎繘琛屽垎鍙戝拰浣跨敤銆傝鍙瘉浣嶄簬婧愪唬鐮佹爲鏍圭洰褰曚腑鐨� LICENSE-MIT 鍜� LICENSE-APACHE 鏂囦欢銆�
+//
+// 涓嶅緱鍒╃敤鏈」鐩粠浜嬪嵄瀹冲浗瀹跺畨鍏ㄣ�佹壈涔辩ぞ浼氱З搴忋�佷镜鐘粬浜哄悎娉曟潈鐩婄瓑娉曞緥娉曡绂佹鐨勬椿鍔紒浠讳綍鍩轰簬鏈」鐩簩娆″紑鍙戣�屼骇鐢熺殑涓�鍒囨硶寰嬬籂绾峰拰璐d换锛屾垜浠笉鎵挎媴浠讳綍璐d换锛�
+
+using Admin.NET.Core;
+namespace WCS.Application.Entity;
+
+/// <summary>
+/// WMS涓嬪彂浠诲姟琛�
+/// </summary>
+[SugarTable("WCSOderTask","WMS涓嬪彂浠诲姟琛�")]
+[Tenant("1300000000001")]
+public class WcsOderTask  : EntityBaseData
+{
+    /// <summary>
+    /// WMS涓嬪彂鍗曞彿
+    /// </summary>
+    [SugarColumn(ColumnName = "OrderNo", ColumnDescription = "WMS涓嬪彂鍗曞彿", Length = 20)]
+    public string? OrderNo { get; set; }
+    
+    /// <summary>
+    /// 浠诲姟鍙�
+    /// </summary>
+    [SugarColumn(ColumnName = "TaskNo", ColumnDescription = "浠诲姟鍙�", Length = 20)]
+    public string? TaskNo { get; set; }
+    
+    /// <summary>
+    /// 鎵规鍙�
+    /// </summary>
+    [SugarColumn(ColumnName = "LotNo", ColumnDescription = "鎵规鍙�", Length = 50)]
+    public string? LotNo { get; set; }
+    
+    /// <summary>
+    /// 鐗╂枡缂栫爜
+    /// </summary>
+    [SugarColumn(ColumnName = "SkuNo", ColumnDescription = "鐗╂枡缂栫爜", Length = 20)]
+    public string? SkuNo { get; set; }
+    
+    /// <summary>
+    /// 鐗╂枡鍚嶇О
+    /// </summary>
+    [SugarColumn(ColumnName = "SkuName", ColumnDescription = "鐗╂枡鍚嶇О", Length = 50)]
+    public string? SkuName { get; set; }
+    
+    /// <summary>
+    /// 瑙勬牸
+    /// </summary>
+    [SugarColumn(ColumnName = "BoxType", ColumnDescription = "瑙勬牸", Length = 20)]
+    public string? BoxType { get; set; }
+    
+    /// <summary>
+    /// 鎬荤鏁�/璁″垝绠辨暟/棰勪及绠辨暟
+    /// </summary>
+    [SugarColumn(ColumnName = "Qty", ColumnDescription = "鎬荤鏁�/璁″垝绠辨暟/棰勪及绠辨暟")]
+    public int? Qty { get; set; }
+    
+    /// <summary>
+    /// 浠诲姟绫诲瀷
+    /// </summary>
+    [SugarColumn(ColumnName = "TaskType", ColumnDescription = "浠诲姟绫诲瀷", Length = 3)]
+    public TaskTypeEnum? TaskType { get; set; }
+    
+    /// <summary>
+    /// 鐘舵��
+    /// </summary>
+    [SugarColumn(ColumnName = "Status", ColumnDescription = "鐘舵��", Length = 3)]
+    public TaskStatusEnum? Status { get; set; }
+    
+    /// <summary>
+    /// 鏄惁鍥為鎴愬姛
+    /// </summary>
+    [SugarColumn(ColumnName = "IsSuccess", ColumnDescription = "鏄惁鍥為鎴愬姛", Length = 3)]
+    public TaskSuccessEnum? IsSuccess { get; set; }
+    
+    /// <summary>
+    /// 寮傚父淇℃伅
+    /// </summary>
+    [SugarColumn(ColumnName = "Information", ColumnDescription = "寮傚父淇℃伅", Length = 50)]
+    public string? Information { get; set; }
+    
+}
diff --git a/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs b/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs
index 7b91e7e..3949be6 100644
--- a/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs
+++ b/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs
@@ -292,6 +292,20 @@
                 }
                 ).ToListAsync();
     }
-
+    /// <summary>
+    /// 鑾峰彇璁惧瀵瑰簲宸ヤ綅鍒楄〃
+    /// </summary>
+    /// <param name="entry"></param>
+    /// <returns></returns>
+    [HttpGet]
+    [ApiDescriptionSettings(Name = "WcsPackStationPlcList")]
+    [DisplayName("鑾峰彇璁惧瀵瑰簲宸ヤ綅鍒楄〃")]
+    public async Task<List<WcsDevice>> WcsPackStationPlcList([FromQuery]WcsDeviceBaseInput entry)
+    {
+        return await _wcsDeviceRep.Context.Queryable<WcsDevice>()
+                .Where(w => w.PlcId == entry.PlcId)
+                .OrderBy(o => o.CreateTime)
+                .ToListAsync();
+    }
     #endregion
 }
diff --git a/Admin.NET/WCS.Application/Service/WcsOderTask/Dto/WcsOderTaskDto.cs b/Admin.NET/WCS.Application/Service/WcsOderTask/Dto/WcsOderTaskDto.cs
new file mode 100644
index 0000000..b532b9b
--- /dev/null
+++ b/Admin.NET/WCS.Application/Service/WcsOderTask/Dto/WcsOderTaskDto.cs
@@ -0,0 +1,89 @@
+锘�// Admin.NET 椤圭洰鐨勭増鏉冦�佸晢鏍囥�佷笓鍒╁拰鍏朵粬鐩稿叧鏉冨埄鍧囧彈鐩稿簲娉曞緥娉曡鐨勪繚鎶ゃ�備娇鐢ㄦ湰椤圭洰搴旈伒瀹堢浉鍏虫硶寰嬫硶瑙勫拰璁稿彲璇佺殑瑕佹眰銆�
+//
+// 鏈」鐩富瑕侀伒寰� MIT 璁稿彲璇佸拰 Apache 璁稿彲璇侊紙鐗堟湰 2.0锛夎繘琛屽垎鍙戝拰浣跨敤銆傝鍙瘉浣嶄簬婧愪唬鐮佹爲鏍圭洰褰曚腑鐨� LICENSE-MIT 鍜� LICENSE-APACHE 鏂囦欢銆�
+//
+// 涓嶅緱鍒╃敤鏈」鐩粠浜嬪嵄瀹冲浗瀹跺畨鍏ㄣ�佹壈涔辩ぞ浼氱З搴忋�佷镜鐘粬浜哄悎娉曟潈鐩婄瓑娉曞緥娉曡绂佹鐨勬椿鍔紒浠讳綍鍩轰簬鏈」鐩簩娆″紑鍙戣�屼骇鐢熺殑涓�鍒囨硶寰嬬籂绾峰拰璐d换锛屾垜浠笉鎵挎媴浠讳綍璐d换锛�
+
+namespace WCS.Application;
+
+    /// <summary>
+    /// 鍒嗘嫞浠诲姟杈撳嚭鍙傛暟
+    /// </summary>
+    public class WcsOderTaskDto
+    {
+        /// <summary>
+        /// 涓婚敭Id
+        /// </summary>
+        public long Id { get; set; }
+        
+        /// <summary>
+        /// WMS涓嬪彂鍗曞彿
+        /// </summary>
+        public string? OrderNo { get; set; }
+        
+        /// <summary>
+        /// 浠诲姟鍙�
+        /// </summary>
+        public string? TaskNo { get; set; }
+        
+        /// <summary>
+        /// 鎵规鍙�
+        /// </summary>
+        public string? LotNo { get; set; }
+        
+        /// <summary>
+        /// 鐗╂枡缂栫爜
+        /// </summary>
+        public string? SkuNo { get; set; }
+        
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string? SkuName { get; set; }
+        
+        /// <summary>
+        /// 瑙勬牸
+        /// </summary>
+        public string? BoxType { get; set; }
+        
+        /// <summary>
+        /// 鎬荤鏁�/璁″垝绠辨暟/棰勪及绠辨暟
+        /// </summary>
+        public int? Qty { get; set; }
+        
+        /// <summary>
+        /// 浠诲姟绫诲瀷
+        /// </summary>
+        public TaskTypeEnum TaskType { get; set; }
+        
+        /// <summary>
+        /// 鐘舵��
+        /// </summary>
+        public TaskStatusEnum Status { get; set; }
+        
+        /// <summary>
+        /// 鏄惁鍥為鎴愬姛
+        /// </summary>
+        public TaskSuccessEnum IsSuccess { get; set; }
+        
+        /// <summary>
+        /// 寮傚父淇℃伅
+        /// </summary>
+        public string? Information { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鏃堕棿
+        /// </summary>
+        public DateTime? CreateTime { get; set; }
+        
+        /// <summary>
+        /// 涓嬪彂浜�
+        /// </summary>
+        public int? CreateUser { get; set; }
+        
+        /// <summary>
+        /// 杞垹闄�
+        /// </summary>
+        public bool IsDelete { get; set; }
+        
+    }
diff --git a/Admin.NET/WCS.Application/Service/WcsOderTask/Dto/WcsOderTaskInput.cs b/Admin.NET/WCS.Application/Service/WcsOderTask/Dto/WcsOderTaskInput.cs
new file mode 100644
index 0000000..c6833de
--- /dev/null
+++ b/Admin.NET/WCS.Application/Service/WcsOderTask/Dto/WcsOderTaskInput.cs
@@ -0,0 +1,200 @@
+锘�// Admin.NET 椤圭洰鐨勭増鏉冦�佸晢鏍囥�佷笓鍒╁拰鍏朵粬鐩稿叧鏉冨埄鍧囧彈鐩稿簲娉曞緥娉曡鐨勪繚鎶ゃ�備娇鐢ㄦ湰椤圭洰搴旈伒瀹堢浉鍏虫硶寰嬫硶瑙勫拰璁稿彲璇佺殑瑕佹眰銆�
+//
+// 鏈」鐩富瑕侀伒寰� MIT 璁稿彲璇佸拰 Apache 璁稿彲璇侊紙鐗堟湰 2.0锛夎繘琛屽垎鍙戝拰浣跨敤銆傝鍙瘉浣嶄簬婧愪唬鐮佹爲鏍圭洰褰曚腑鐨� LICENSE-MIT 鍜� LICENSE-APACHE 鏂囦欢銆�
+//
+// 涓嶅緱鍒╃敤鏈」鐩粠浜嬪嵄瀹冲浗瀹跺畨鍏ㄣ�佹壈涔辩ぞ浼氱З搴忋�佷镜鐘粬浜哄悎娉曟潈鐩婄瓑娉曞緥娉曡绂佹鐨勬椿鍔紒浠讳綍鍩轰簬鏈」鐩簩娆″紑鍙戣�屼骇鐢熺殑涓�鍒囨硶寰嬬籂绾峰拰璐d换锛屾垜浠笉鎵挎媴浠讳綍璐d换锛�
+
+using Admin.NET.Core;
+using System.ComponentModel.DataAnnotations;
+
+namespace WCS.Application;
+
+    /// <summary>
+    /// 鍒嗘嫞浠诲姟鍩虹杈撳叆鍙傛暟
+    /// </summary>
+    public class WcsOderTaskBaseInput
+    {
+        /// <summary>
+        /// WMS涓嬪彂鍗曞彿
+        /// </summary>
+        public virtual string? OrderNo { get; set; }
+        
+        /// <summary>
+        /// 浠诲姟鍙�
+        /// </summary>
+        public virtual string? TaskNo { get; set; }
+        
+        /// <summary>
+        /// 鎵规鍙�
+        /// </summary>
+        public virtual string? LotNo { get; set; }
+        
+        /// <summary>
+        /// 鐗╂枡缂栫爜
+        /// </summary>
+        public virtual string? SkuNo { get; set; }
+        
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public virtual string? SkuName { get; set; }
+        
+        /// <summary>
+        /// 瑙勬牸
+        /// </summary>
+        public virtual string? BoxType { get; set; }
+        
+        /// <summary>
+        /// 鎬荤鏁�/璁″垝绠辨暟/棰勪及绠辨暟
+        /// </summary>
+        public virtual int? Qty { get; set; }
+        
+        /// <summary>
+        /// 浠诲姟绫诲瀷
+        /// </summary>
+        public virtual TaskTypeEnum TaskType { get; set; }
+        
+        /// <summary>
+        /// 鐘舵��
+        /// </summary>
+        public virtual TaskStatusEnum Status { get; set; }
+        
+        /// <summary>
+        /// 鏄惁鍥為鎴愬姛
+        /// </summary>
+        public virtual TaskSuccessEnum IsSuccess { get; set; }
+        
+        /// <summary>
+        /// 寮傚父淇℃伅
+        /// </summary>
+        public virtual string? Information { get; set; }
+        
+        /// <summary>
+        /// 鍒涘缓鏃堕棿
+        /// </summary>
+        public virtual DateTime? CreateTime { get; set; }
+        
+        /// <summary>
+        /// 涓嬪彂浜�
+        /// </summary>
+        public virtual int? CreateUser { get; set; }
+        
+        /// <summary>
+        /// 杞垹闄�
+        /// </summary>
+        public virtual bool IsDelete { get; set; }
+        
+    }
+
+    /// <summary>
+    /// 鍒嗘嫞浠诲姟鍒嗛〉鏌ヨ杈撳叆鍙傛暟
+    /// </summary>
+    public class PageWcsOderTaskInput : BasePageInput
+    {
+        /// <summary>
+        /// 鍏抽敭瀛楁煡璇�
+        /// </summary>
+        public string? SearchKey { get; set; }
+
+        /// <summary>
+        /// WMS涓嬪彂鍗曞彿
+        /// </summary>
+        public string? OrderNo { get; set; }
+        
+        /// <summary>
+        /// 浠诲姟鍙�
+        /// </summary>
+        public string? TaskNo { get; set; }
+        
+        /// <summary>
+        /// 鎵规鍙�
+        /// </summary>
+        public string? LotNo { get; set; }
+        
+        /// <summary>
+        /// 鐗╂枡缂栫爜
+        /// </summary>
+        public string? SkuNo { get; set; }
+        
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string? SkuName { get; set; }
+        
+        /// <summary>
+        /// 瑙勬牸
+        /// </summary>
+        public string? BoxType { get; set; }
+        
+        /// <summary>
+        /// 鎬荤鏁�/璁″垝绠辨暟/棰勪及绠辨暟
+        /// </summary>
+        public int? Qty { get; set; }
+        
+        /// <summary>
+        /// 浠诲姟绫诲瀷
+        /// </summary>
+        public TaskTypeEnum? TaskType { get; set; }
+        
+        /// <summary>
+        /// 鐘舵��
+        /// </summary>
+        public TaskStatusEnum? Status { get; set; }
+        
+        /// <summary>
+        /// 鏄惁鍥為鎴愬姛
+        /// </summary>
+        public TaskSuccessEnum? IsSuccess { get; set; }
+        
+        /// <summary>
+        /// 寮傚父淇℃伅
+        /// </summary>
+        public string? Information { get; set; }
+        
+        /// <summary>
+        /// 涓嬪彂浜�
+        /// </summary>
+        public string? CreateUserName { get; set; }
+        
+    }
+
+    /// <summary>
+    /// 鍒嗘嫞浠诲姟澧炲姞杈撳叆鍙傛暟
+    /// </summary>
+    public class AddWcsOderTaskInput : WcsOderTaskBaseInput
+    {
+        /// <summary>
+        /// 杞垹闄�
+        /// </summary>
+        [Required(ErrorMessage = "杞垹闄や笉鑳戒负绌�")]
+        public override bool IsDelete { get; set; }
+        
+    }
+
+    /// <summary>
+    /// 鍒嗘嫞浠诲姟鍒犻櫎杈撳叆鍙傛暟
+    /// </summary>
+    public class DeleteWcsOderTaskInput : BaseIdInput
+    {
+    }
+
+    /// <summary>
+    /// 鍒嗘嫞浠诲姟鏇存柊杈撳叆鍙傛暟
+    /// </summary>
+    public class UpdateWcsOderTaskInput : WcsOderTaskBaseInput
+    {
+        /// <summary>
+        /// 涓婚敭Id
+        /// </summary>
+        [Required(ErrorMessage = "涓婚敭Id涓嶈兘涓虹┖")]
+        public long Id { get; set; }
+        
+    }
+
+    /// <summary>
+    /// 鍒嗘嫞浠诲姟涓婚敭鏌ヨ杈撳叆鍙傛暟
+    /// </summary>
+    public class QueryByIdWcsOderTaskInput : DeleteWcsOderTaskInput
+    {
+
+    }
diff --git a/Admin.NET/WCS.Application/Service/WcsOderTask/Dto/WcsOderTaskOutput.cs b/Admin.NET/WCS.Application/Service/WcsOderTask/Dto/WcsOderTaskOutput.cs
new file mode 100644
index 0000000..979523a
--- /dev/null
+++ b/Admin.NET/WCS.Application/Service/WcsOderTask/Dto/WcsOderTaskOutput.cs
@@ -0,0 +1,91 @@
+锘�// Admin.NET 椤圭洰鐨勭増鏉冦�佸晢鏍囥�佷笓鍒╁拰鍏朵粬鐩稿叧鏉冨埄鍧囧彈鐩稿簲娉曞緥娉曡鐨勪繚鎶ゃ�備娇鐢ㄦ湰椤圭洰搴旈伒瀹堢浉鍏虫硶寰嬫硶瑙勫拰璁稿彲璇佺殑瑕佹眰銆�
+//
+// 鏈」鐩富瑕侀伒寰� MIT 璁稿彲璇佸拰 Apache 璁稿彲璇侊紙鐗堟湰 2.0锛夎繘琛屽垎鍙戝拰浣跨敤銆傝鍙瘉浣嶄簬婧愪唬鐮佹爲鏍圭洰褰曚腑鐨� LICENSE-MIT 鍜� LICENSE-APACHE 鏂囦欢銆�
+//
+// 涓嶅緱鍒╃敤鏈」鐩粠浜嬪嵄瀹冲浗瀹跺畨鍏ㄣ�佹壈涔辩ぞ浼氱З搴忋�佷镜鐘粬浜哄悎娉曟潈鐩婄瓑娉曞緥娉曡绂佹鐨勬椿鍔紒浠讳綍鍩轰簬鏈」鐩簩娆″紑鍙戣�屼骇鐢熺殑涓�鍒囨硶寰嬬籂绾峰拰璐d换锛屾垜浠笉鎵挎媴浠讳綍璐d换锛�
+
+namespace WCS.Application;
+
+/// <summary>
+/// 鍒嗘嫞浠诲姟杈撳嚭鍙傛暟
+/// </summary>
+public class WcsOderTaskOutput
+{
+    /// <summary>
+    /// 涓婚敭Id
+    /// </summary>
+    public long Id { get; set; }
+    
+    /// <summary>
+    /// WMS涓嬪彂鍗曞彿
+    /// </summary>
+    public string? OrderNo { get; set; }
+    
+    /// <summary>
+    /// 浠诲姟鍙�
+    /// </summary>
+    public string? TaskNo { get; set; }
+    
+    /// <summary>
+    /// 鎵规鍙�
+    /// </summary>
+    public string? LotNo { get; set; }
+    
+    /// <summary>
+    /// 鐗╂枡缂栫爜
+    /// </summary>
+    public string? SkuNo { get; set; }
+    
+    /// <summary>
+    /// 鐗╂枡鍚嶇О
+    /// </summary>
+    public string? SkuName { get; set; }
+    
+    /// <summary>
+    /// 瑙勬牸
+    /// </summary>
+    public string? BoxType { get; set; }
+    
+    /// <summary>
+    /// 鎬荤鏁�/璁″垝绠辨暟/棰勪及绠辨暟
+    /// </summary>
+    public int? Qty { get; set; }
+    
+    /// <summary>
+    /// 浠诲姟绫诲瀷
+    /// </summary>
+    public TaskTypeEnum TaskType { get; set; }
+    
+    /// <summary>
+    /// 鐘舵��
+    /// </summary>
+    public TaskStatusEnum Status { get; set; }
+    
+    /// <summary>
+    /// 鏄惁鍥為鎴愬姛
+    /// </summary>
+    public TaskSuccessEnum IsSuccess { get; set; }
+    
+    /// <summary>
+    /// 寮傚父淇℃伅
+    /// </summary>
+    public string? Information { get; set; }
+    
+    /// <summary>
+    /// 鍒涘缓鏃堕棿
+    /// </summary>
+    public DateTime? CreateTime { get; set; }
+    
+    /// <summary>
+    /// 涓嬪彂浜�
+    /// </summary>
+    public int? CreateUser { get; set; }
+    
+    /// <summary>
+    /// 杞垹闄�
+    /// </summary>
+    public bool IsDelete { get; set; }
+    
+    }
+ 
+
diff --git a/Admin.NET/WCS.Application/Service/WcsOderTask/WcsOderTaskService.cs b/Admin.NET/WCS.Application/Service/WcsOderTask/WcsOderTaskService.cs
new file mode 100644
index 0000000..6b52677
--- /dev/null
+++ b/Admin.NET/WCS.Application/Service/WcsOderTask/WcsOderTaskService.cs
@@ -0,0 +1,135 @@
+锘�// Admin.NET 椤圭洰鐨勭増鏉冦�佸晢鏍囥�佷笓鍒╁拰鍏朵粬鐩稿叧鏉冨埄鍧囧彈鐩稿簲娉曞緥娉曡鐨勪繚鎶ゃ�備娇鐢ㄦ湰椤圭洰搴旈伒瀹堢浉鍏虫硶寰嬫硶瑙勫拰璁稿彲璇佺殑瑕佹眰銆�
+//
+// 鏈」鐩富瑕侀伒寰� MIT 璁稿彲璇佸拰 Apache 璁稿彲璇侊紙鐗堟湰 2.0锛夎繘琛屽垎鍙戝拰浣跨敤銆傝鍙瘉浣嶄簬婧愪唬鐮佹爲鏍圭洰褰曚腑鐨� LICENSE-MIT 鍜� LICENSE-APACHE 鏂囦欢銆�
+//
+// 涓嶅緱鍒╃敤鏈」鐩粠浜嬪嵄瀹冲浗瀹跺畨鍏ㄣ�佹壈涔辩ぞ浼氱З搴忋�佷镜鐘粬浜哄悎娉曟潈鐩婄瓑娉曞緥娉曡绂佹鐨勬椿鍔紒浠讳綍鍩轰簬鏈」鐩簩娆″紑鍙戣�屼骇鐢熺殑涓�鍒囨硶寰嬬籂绾峰拰璐d换锛屾垜浠笉鎵挎媴浠讳綍璐d换锛�
+
+using Admin.NET.Core.Service;
+using Microsoft.AspNetCore.Http;
+using WCS.Application.Entity;
+namespace WCS.Application;
+
+/// <summary>
+/// 鍒嗘嫞浠诲姟鏈嶅姟
+/// </summary>
+[ApiDescriptionSettings(ApplicationConst.GroupName, Order = 100)]
+public class WcsOderTaskService : IDynamicApiController, ITransient
+{
+    private readonly SqlSugarRepository<WcsOderTask> _wcsOderTaskRep;
+    public WcsOderTaskService(SqlSugarRepository<WcsOderTask> wcsOderTaskRep)
+    {
+        _wcsOderTaskRep = wcsOderTaskRep;
+    }
+
+    /// <summary>
+    /// 鍒嗛〉鏌ヨ鍒嗘嫞浠诲姟
+    /// </summary>
+    /// <param name="input"></param>
+    /// <returns></returns>
+    [HttpPost]
+    [ApiDescriptionSettings(Name = "Page")]
+    [DisplayName("鍒嗛〉鏌ヨ鍒嗘嫞浠诲姟")]
+    public async Task<SqlSugarPagedList<WcsOderTaskOutput>> Page(PageWcsOderTaskInput input)
+    {
+		input.SearchKey = input.SearchKey?.Trim();
+        var query = _wcsOderTaskRep.AsQueryable()
+            .WhereIF(!string.IsNullOrEmpty(input.SearchKey), u =>
+                u.OrderNo.Contains(input.SearchKey)
+                || u.TaskNo.Contains(input.SearchKey)
+                || u.LotNo.Contains(input.SearchKey)
+                || u.SkuNo.Contains(input.SearchKey)
+                || u.SkuName.Contains(input.SearchKey)
+                || u.BoxType.Contains(input.SearchKey)
+                || u.Information.Contains(input.SearchKey)
+            )
+            .WhereIF(!string.IsNullOrWhiteSpace(input.OrderNo), u => u.OrderNo.Contains(input.OrderNo.Trim()))
+            .WhereIF(!string.IsNullOrWhiteSpace(input.TaskNo), u => u.TaskNo.Contains(input.TaskNo.Trim()))
+            .WhereIF(!string.IsNullOrWhiteSpace(input.LotNo), u => u.LotNo.Contains(input.LotNo.Trim()))
+            .WhereIF(!string.IsNullOrWhiteSpace(input.SkuNo), u => u.SkuNo.Contains(input.SkuNo.Trim()))
+            .WhereIF(!string.IsNullOrWhiteSpace(input.SkuName), u => u.SkuName.Contains(input.SkuName.Trim()))
+            .WhereIF(!string.IsNullOrWhiteSpace(input.BoxType), u => u.BoxType.Contains(input.BoxType.Trim()))
+            .WhereIF(input.Qty>0, u => u.Qty == input.Qty)
+            .WhereIF(input.TaskType.HasValue, u => u.TaskType == input.TaskType)
+            .WhereIF(input.Status.HasValue, u => u.Status == input.Status)
+            .WhereIF(input.IsSuccess.HasValue, u => u.IsSuccess == input.IsSuccess)
+            .WhereIF(!string.IsNullOrWhiteSpace(input.Information), u => u.Information.Contains(input.Information.Trim()))
+            .WhereIF(!string.IsNullOrWhiteSpace(input.CreateUserName), u => u.OrderNo.Contains(input.CreateUserName.Trim()))
+            .Select<WcsOderTaskOutput>();
+		return await query.OrderBuilder(input).ToPagedListAsync(input.Page, input.PageSize);
+    }
+
+    /// <summary>
+    /// 澧炲姞鍒嗘嫞浠诲姟
+    /// </summary>
+    /// <param name="input"></param>
+    /// <returns></returns>
+    [HttpPost]
+    [ApiDescriptionSettings(Name = "Add")]
+    [DisplayName("澧炲姞鍒嗘嫞浠诲姟")]
+    public async Task<long> Add(AddWcsOderTaskInput input)
+    {
+        var entity = input.Adapt<WcsOderTask>();
+        await _wcsOderTaskRep.InsertAsync(entity);
+        return entity.Id;
+    }
+
+    /// <summary>
+    /// 鍒犻櫎鍒嗘嫞浠诲姟
+    /// </summary>
+    /// <param name="input"></param>
+    /// <returns></returns>
+    [HttpPost]
+    [ApiDescriptionSettings(Name = "Delete")]
+    [DisplayName("鍒犻櫎鍒嗘嫞浠诲姟")]
+    public async Task Delete(DeleteWcsOderTaskInput input)
+    {
+        var entity = await _wcsOderTaskRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D1002);
+        await _wcsOderTaskRep.FakeDeleteAsync(entity);   //鍋囧垹闄�
+        //await _wcsOderTaskRep.DeleteAsync(entity);   //鐪熷垹闄�
+    }
+
+    /// <summary>
+    /// 鏇存柊鍒嗘嫞浠诲姟
+    /// </summary>
+    /// <param name="input"></param>
+    /// <returns></returns>
+    [HttpPost]
+    [ApiDescriptionSettings(Name = "Update")]
+    [DisplayName("鏇存柊鍒嗘嫞浠诲姟")]
+    public async Task Update(UpdateWcsOderTaskInput input)
+    {
+        var entity = input.Adapt<WcsOderTask>();
+        await _wcsOderTaskRep.AsUpdateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
+    }
+
+    /// <summary>
+    /// 鑾峰彇鍒嗘嫞浠诲姟
+    /// </summary>
+    /// <param name="input"></param>
+    /// <returns></returns>
+    [HttpGet]
+    [ApiDescriptionSettings(Name = "Detail")]
+    [DisplayName("鑾峰彇鍒嗘嫞浠诲姟")]
+    public async Task<WcsOderTask> Detail([FromQuery] QueryByIdWcsOderTaskInput input)
+    {
+        return await _wcsOderTaskRep.GetFirstAsync(u => u.Id == input.Id);
+    }
+
+    /// <summary>
+    /// 鑾峰彇鍒嗘嫞浠诲姟鍒楄〃
+    /// </summary>
+    /// <param name="input"></param>
+    /// <returns></returns>
+    [HttpGet]
+    [ApiDescriptionSettings(Name = "List")]
+    [DisplayName("鑾峰彇鍒嗘嫞浠诲姟鍒楄〃")]
+    public async Task<List<WcsOderTaskOutput>> List([FromQuery] PageWcsOderTaskInput input)
+    {
+        return await _wcsOderTaskRep.AsQueryable().Select<WcsOderTaskOutput>().ToListAsync();
+    }
+
+
+
+
+
+}
diff --git a/Web/src/api/device/wcsOderTask.ts b/Web/src/api/device/wcsOderTask.ts
new file mode 100644
index 0000000..b4f1a69
--- /dev/null
+++ b/Web/src/api/device/wcsOderTask.ts
@@ -0,0 +1,50 @@
+锘縤mport request from '/@/utils/request';
+enum Api {
+  AddWcsOderTask = '/api/wcsOderTask/add',
+  DeleteWcsOderTask = '/api/wcsOderTask/delete',
+  UpdateWcsOderTask = '/api/wcsOderTask/update',
+  PageWcsOderTask = '/api/wcsOderTask/page',
+  DetailWcsOderTask = '/api/wcsOderTask/detail',
+}
+
+// 澧炲姞鍒嗘嫞浠诲姟
+export const addWcsOderTask = (params?: any) =>
+	request({
+		url: Api.AddWcsOderTask,
+		method: 'post',
+		data: params,
+	});
+
+// 鍒犻櫎鍒嗘嫞浠诲姟
+export const deleteWcsOderTask = (params?: any) => 
+	request({
+			url: Api.DeleteWcsOderTask,
+			method: 'post',
+			data: params,
+		});
+
+// 缂栬緫鍒嗘嫞浠诲姟
+export const updateWcsOderTask = (params?: any) => 
+	request({
+			url: Api.UpdateWcsOderTask,
+			method: 'post',
+			data: params,
+		});
+
+// 鍒嗛〉鏌ヨ鍒嗘嫞浠诲姟
+export const pageWcsOderTask = (params?: any) => 
+	request({
+			url: Api.PageWcsOderTask,
+			method: 'post',
+			data: params,
+		});
+
+// 璇︽儏鍒嗘嫞浠诲姟
+export const detailWcsOderTask = (id: any) => 
+	request({
+			url: Api.DetailWcsOderTask,
+			method: 'get',
+			data: { id },
+		});
+
+
diff --git a/Web/src/api/wcs/wcsDevice.ts b/Web/src/api/wcs/wcsDevice.ts
index a0f122f..dde139f 100644
--- a/Web/src/api/wcs/wcsDevice.ts
+++ b/Web/src/api/wcs/wcsDevice.ts
@@ -10,6 +10,7 @@
   ListWcsDevice = '/api/wcsDevice/list',
 
   GetWcsPackPlcList='/api/wcsDevice/WcsPackPlcList',
+  GetWcsPackStationPlcList='/api/wcsDevice/WcsPackStationPlcList',
 }
 
 // 澧炲姞璁惧淇℃伅
@@ -76,4 +77,11 @@
 	request({
 	url: Api.GetWcsPackPlcList,
 	method: 'get'
-	});
\ No newline at end of file
+});
+
+export const GetWcsPackStationPlcList = (params?: any) =>
+	request({
+	url: Api.GetWcsPackStationPlcList,
+	method: 'get',
+	data: params
+});
\ No newline at end of file
diff --git a/Web/src/views/device/sortPallet/index.vue b/Web/src/views/device/sortPallet/index.vue
index 950d163..1084a8c 100644
--- a/Web/src/views/device/sortPallet/index.vue
+++ b/Web/src/views/device/sortPallet/index.vue
@@ -18,7 +18,7 @@
                 <div class="card-container">
                     <el-card class="other-box-card" v-for="deviceInfo in devicePointData" :key="deviceInfo.id">
                         <div slot="header" class="linefix">
-                            <span>{{ deviceInfo.name }}</span>
+                            <span>{{ deviceInfo.text }}</span>
                             <div :class="['lineStatus', { 'device-status-0': deviceInfo.status === 0 }, { 'device-status-1': deviceInfo.status === 1 }]"></div>
                         </div>
                         <div class="otherValuefix" >
@@ -29,6 +29,9 @@
                                 <el-form-item label="浠诲姟鍙�">
                                     <el-input v-model="deviceInfo.taskNumber"></el-input>
                                 </el-form-item>
+                                <el-form-item label="鎵规鍙�">
+                                    <el-input></el-input>
+                                </el-form-item>
                                 <el-form-item label="鐗╂枡缂栫爜">
                                     <el-input></el-input>
                                 </el-form-item>
@@ -38,7 +41,7 @@
                                 <el-form-item label="鍖呰鍚嶇О">
                                     <el-input></el-input>
                                 </el-form-item>
-                                <el-form-item label="鐘舵��">
+                                <el-form-item label="缁戝畾鐘舵��">
                                     <el-input></el-input>
                                 </el-form-item>
                                 <el-form-item label="鎶撶鍝佺">
@@ -75,90 +78,37 @@
   
 <script lang="ts" setup>
 import { ref } from 'vue';
-import { GetWcsPackPlcList } from '/@/api/wcs/wcsDevice';
-
+import { GetWcsPackPlcList,GetWcsPackStationPlcList } from '/@/api/wcs/wcsDevice';
+//璁惧鏁版嵁
 const deviceList=ref<any>([]);
+//璁惧瀵瑰簲宸ヤ綅鏁版嵁
+const devicePointData = ref<any>([]);
 
-const devicePointList=[
-    {
-        id: 1,
-        deviceId:586494087331909,
-        name: '1鍙风爜鍨涙満鍣ㄤ汉 1宸ヤ綅',
-        taskNumber: 'T000001',
-        taskType: '',
-        plc: '',
-        wcs: '',
-        status: 0
-    },
-    {
-        id: 2,
-        deviceId:586494087331909,
-        name: '1鍙风爜鍨涙満鍣ㄤ汉 2宸ヤ綅',
-        taskNumber: '',
-        taskType: '',
-        plc: '',
-        wcs: '',
-        status: 1
-    },
-    {
-        id: 3,
-        deviceId:586494087331909,
-        name: '1鍙风爜鍨涙満鍣ㄤ汉 3宸ヤ綅',
-        taskNumber: '',
-        taskType: '',
-        plc: '',
-        wcs: '',
-        status: 1
-    },
-    {
-        id: 4,
-        deviceId:586494241939525,
-        name: '2鍙风爜鍨涙満鍣ㄤ汉 1宸ヤ綅',
-        taskNumber: 'T000001',
-        taskType: '',
-        plc: '',
-        wcs: '',
-        status: 0
-    },
-    {
-        id: 5,
-        deviceId:586494241939525,
-        name: '2鍙风爜鍨涙満鍣ㄤ汉 2宸ヤ綅',
-        taskNumber: '',
-        taskType: '',
-        plc: '',
-        wcs: '',
-        status: 1
-    },
-    {
-        id: 6,
-        deviceId:3,
-        name: '3鍙锋満鍣ㄤ汉 1宸ヤ綅',
-        taskNumber: 'T000001',
-        taskType: '',
-        plc: '',
-        wcs: '',
-        status: 0
-    }
-];
-
-let devicePointData = ref<any>([]);
 const selectedDeviceId=ref<any>();
-// 鏌ヨ鎿嶄綔
-const handleQuery = async () => {
+
+//鑾峰彇
+const fetchStationData = async (plcId: any) => {
+    const res2 = await GetWcsPackStationPlcList({ plcId });
+    devicePointData.value = res2.data.result;
+    console.log('data:'+devicePointData.value);
+};
+// 鑾峰彇璁惧鏁版嵁
+const fetchPLCDeviceData = async () => {
     var res = await GetWcsPackPlcList();
     deviceList.value = res.data.result;
 
-    //杈撻�佺嚎鏁版嵁
-    selectedDeviceId.value = deviceList.value[0].id;
-    devicePointData.value= devicePointList.filter(device => device.deviceId === selectedDeviceId.value);
+    if (deviceList.value.length > 0) {
+      selectedDeviceId.value = deviceList.value[0].id;
+      await fetchStationData(selectedDeviceId.value);
+    }
 };
-handleQuery();
+fetchPLCDeviceData();
 
 //鍒囨崲
 function chooseDevice(id) {
     selectedDeviceId.value = id;
-    devicePointData.value = devicePointList.filter(device => device.deviceId === id);
+
+    fetchStationData(id);
 }
 </script>
 
@@ -204,13 +154,13 @@
     }
     .otherValuefix{
         width: 100%;
-        height: 500px;
+        height: 540px;
         padding: 10px;
         border-bottom: 1px solid rgb(197, 195, 195);
     }
     .otherButtonfix{
         width: 100%;
-        height: 100px;
+        height: 60px;
         display: flex;
         align-items: center;
         justify-content: center;
diff --git a/Web/src/views/device/wcsOderTask/component/editDialog.vue b/Web/src/views/device/wcsOderTask/component/editDialog.vue
new file mode 100644
index 0000000..757ff67
--- /dev/null
+++ b/Web/src/views/device/wcsOderTask/component/editDialog.vue
@@ -0,0 +1,211 @@
+锘�<template>
+	<div class="wcsOderTask-container">
+		<el-dialog v-model="isShowDialog" :width="800" draggable="" :close-on-click-modal="false">
+			<template #header>
+				<div style="color: #fff">
+					<!--<el-icon size="16" style="margin-right: 3px; display: inline; vertical-align: middle"> <ele-Edit /> </el-icon>-->
+					<span>{{ props.title }}</span>
+				</div>
+			</template>
+			<el-form :model="ruleForm" ref="ruleFormRef" label-width="auto" :rules="rules">
+				<el-row :gutter="35">
+					<el-form-item v-show="false">
+						<el-input v-model="ruleForm.id" />
+					</el-form-item>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="WMS涓嬪彂鍗曞彿" prop="orderNo">
+							<el-input v-model="ruleForm.orderNo" placeholder="璇疯緭鍏MS涓嬪彂鍗曞彿" maxlength="20" show-word-limit clearable />
+							
+						</el-form-item>
+						
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="浠诲姟鍙�" prop="taskNo">
+							<el-input v-model="ruleForm.taskNo" placeholder="璇疯緭鍏ヤ换鍔″彿" maxlength="20" show-word-limit clearable />
+							
+						</el-form-item>
+						
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="鎵规鍙�" prop="lotNo">
+							<el-input v-model="ruleForm.lotNo" placeholder="璇疯緭鍏ユ壒娆″彿" maxlength="50" show-word-limit clearable />
+							
+						</el-form-item>
+						
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="鐗╂枡缂栫爜" prop="skuNo">
+							<el-input v-model="ruleForm.skuNo" placeholder="璇疯緭鍏ョ墿鏂欑紪鐮�" maxlength="20" show-word-limit clearable />
+							
+						</el-form-item>
+						
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="鐗╂枡鍚嶇О" prop="skuName">
+							<el-input v-model="ruleForm.skuName" placeholder="璇疯緭鍏ョ墿鏂欏悕绉�" maxlength="50" show-word-limit clearable />
+							
+						</el-form-item>
+						
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="瑙勬牸" prop="boxType">
+							<el-input v-model="ruleForm.boxType" placeholder="璇疯緭鍏ヨ鏍�" maxlength="20" show-word-limit clearable />
+							
+						</el-form-item>
+						
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="鎬荤鏁�/璁″垝绠辨暟/棰勪及绠辨暟" prop="qty">
+							<el-input-number v-model="ruleForm.qty" placeholder="璇疯緭鍏ユ�荤鏁�/璁″垝绠辨暟/棰勪及绠辨暟" clearable />
+							
+						</el-form-item>
+						
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="浠诲姟绫诲瀷" prop="taskType">
+							<el-select clearable v-model="ruleForm.taskType" placeholder="璇烽�夋嫨浠诲姟绫诲瀷">
+								<el-option v-for="(item,index) in dl('TaskTypeEnum')" :key="index" :value="Number(item.value)" :label="`${item.name} (${item.code}) [${item.value}]`"></el-option>
+								
+							</el-select>
+							
+						</el-form-item>
+						
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="鐘舵��" prop="status">
+							<el-select clearable v-model="ruleForm.status" placeholder="璇烽�夋嫨鐘舵��">
+								<el-option v-for="(item,index) in dl('TaskStatusEnum')" :key="index" :value="Number(item.value)" :label="`${item.name} (${item.code}) [${item.value}]`"></el-option>
+								
+							</el-select>
+							
+						</el-form-item>
+						
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="鏄惁鍥為鎴愬姛" prop="isSuccess">
+							<el-select clearable v-model="ruleForm.isSuccess" placeholder="璇烽�夋嫨鏄惁鍥為鎴愬姛">
+								<el-option v-for="(item,index) in dl('TaskSuccessEnum')" :key="index" :value="Number(item.value)" :label="`${item.name} (${item.code}) [${item.value}]`"></el-option>
+								
+							</el-select>
+							
+						</el-form-item>
+						
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="寮傚父淇℃伅" prop="information">
+							<el-input v-model="ruleForm.information" placeholder="璇疯緭鍏ュ紓甯镐俊鎭�" maxlength="50" show-word-limit clearable />
+							
+						</el-form-item>
+						
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="涓嬪彂浜�" prop="createUser">
+							<el-input-number v-model="ruleForm.createUser" placeholder="璇疯緭鍏ヤ笅鍙戜汉" clearable />
+							
+						</el-form-item>
+						
+					</el-col>
+				</el-row>
+			</el-form>
+			<template #footer>
+				<span class="dialog-footer">
+					<el-button @click="cancel">鍙� 娑�</el-button>
+					<el-button type="primary" @click="submit">纭� 瀹�</el-button>
+				</span>
+			</template>
+		</el-dialog>
+	</div>
+</template>
+<style lang="scss" scoped>
+:deep(.el-select),
+:deep(.el-input-number) {
+	width: 100%;
+}
+</style>
+<script lang="ts" setup>
+	import { ref,onMounted } from "vue";
+	import { ElMessage } from "element-plus";
+	import type { FormRules } from "element-plus";
+	import { getDictDataItem as di, getDictDataList as dl } from '/@/utils/dict-utils';
+	import { getDictLabelByVal as dv } from '/@/utils/dict-utils';
+  	import { formatDate } from '/@/utils/formatTime';
+	import { addWcsOderTask, updateWcsOderTask, detailWcsOderTask } from "/@/api/device/wcsOderTask";
+	import { getAPI } from '/@/utils/axios-utils';
+	import { SysEnumApi } from '/@/api-services/api';
+
+	//鐖剁骇浼犻�掓潵鐨勫弬鏁�
+	var props = defineProps({
+		title: {
+		type: String,
+		default: "",
+	},
+	});
+	//鐖剁骇浼犻�掓潵鐨勫嚱鏁帮紝鐢ㄤ簬鍥炶皟
+	const emit = defineEmits(["reloadTable"]);
+	const ruleFormRef = ref();
+	const isShowDialog = ref(false);
+	const ruleForm = ref<any>({});
+	//鑷娣诲姞鍏朵粬瑙勫垯
+	const rules = ref<FormRules>({
+	});
+
+	// 椤甸潰鍔犺浇鏃�
+	onMounted(() => {
+
+	});
+
+	// 鎵撳紑寮圭獥
+	const openDialog = async (row: any) => {
+		// ruleForm.value = JSON.parse(JSON.stringify(row));
+		// 鏀圭敤detail鑾峰彇鏈�鏂版暟鎹潵缂栬緫
+		let rowData = JSON.parse(JSON.stringify(row));
+		if (rowData.id)
+			ruleForm.value = (await detailWcsOderTask(rowData.id)).data.result;
+		else
+			ruleForm.value = rowData;
+		isShowDialog.value = true;
+	};
+
+	// 鍏抽棴寮圭獥
+	const closeDialog = () => {
+		emit("reloadTable");
+		isShowDialog.value = false;
+	};
+
+	// 鍙栨秷
+	const cancel = () => {
+		isShowDialog.value = false;
+	};
+
+	// 鎻愪氦
+	const submit = async () => {
+		ruleFormRef.value.validate(async (isValid: boolean, fields?: any) => {
+			if (isValid) {
+				let values = ruleForm.value;
+				if (ruleForm.value.id == undefined || ruleForm.value.id == null || ruleForm.value.id == "" || ruleForm.value.id == 0) {
+					await addWcsOderTask(values);
+				} else {
+					await updateWcsOderTask(values);
+				}
+				closeDialog();
+			} else {
+				ElMessage({
+					message: `琛ㄥ崟鏈�${Object.keys(fields).length}澶勯獙璇佸け璐ワ紝璇蜂慨鏀瑰悗鍐嶆彁浜,
+					type: "error",
+				});
+			}
+		});
+	};
+
+
+
+
+
+
+	//灏嗗睘鎬ф垨鑰呭嚱鏁版毚闇茬粰鐖剁粍浠�
+	defineExpose({ openDialog });
+</script>
+
+
+
+
diff --git a/Web/src/views/device/wcsOderTask/index.vue b/Web/src/views/device/wcsOderTask/index.vue
new file mode 100644
index 0000000..886420b
--- /dev/null
+++ b/Web/src/views/device/wcsOderTask/index.vue
@@ -0,0 +1,280 @@
+锘�<template>
+  <div class="wcsOderTask-container">
+    <el-card shadow="hover" :body-style="{ paddingBottom: '0' }"> 
+      <el-form :model="queryParams" ref="queryForm" labelWidth="90">
+        <el-row>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10">
+            <el-form-item label="鍏抽敭瀛�">
+              <el-input v-model="queryParams.searchKey" clearable="" placeholder="璇疯緭鍏ユā绯婃煡璇㈠叧閿瓧"/>
+              
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUI">
+            <el-form-item label="WMS涓嬪彂鍗曞彿">
+              <el-input v-model="queryParams.orderNo" clearable="" placeholder="璇疯緭鍏MS涓嬪彂鍗曞彿"/>
+              
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUI">
+            <el-form-item label="浠诲姟鍙�">
+              <el-input v-model="queryParams.taskNo" clearable="" placeholder="璇疯緭鍏ヤ换鍔″彿"/>
+              
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUI">
+            <el-form-item label="鎵规鍙�">
+              <el-input v-model="queryParams.lotNo" clearable="" placeholder="璇疯緭鍏ユ壒娆″彿"/>
+              
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUI">
+            <el-form-item label="鐗╂枡缂栫爜">
+              <el-input v-model="queryParams.skuNo" clearable="" placeholder="璇疯緭鍏ョ墿鏂欑紪鐮�"/>
+              
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUI">
+            <el-form-item label="鐗╂枡鍚嶇О">
+              <el-input v-model="queryParams.skuName" clearable="" placeholder="璇疯緭鍏ョ墿鏂欏悕绉�"/>
+              
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUI">
+            <el-form-item label="瑙勬牸">
+              <el-input v-model="queryParams.boxType" clearable="" placeholder="璇疯緭鍏ヨ鏍�"/>
+              
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUI">
+            <el-form-item label="鎬荤鏁�/璁″垝绠辨暟/棰勪及绠辨暟">
+              <el-input-number v-model="queryParams.qty"  clearable="" placeholder="璇疯緭鍏ユ�荤鏁�/璁″垝绠辨暟/棰勪及绠辨暟"/>
+              
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUI">
+            <el-form-item label="浠诲姟绫诲瀷">
+              <el-select clearable="" v-model="queryParams.taskType" placeholder="璇烽�夋嫨浠诲姟绫诲瀷">
+                <el-option v-for="(item,index) in dl('TaskTypeEnum')" :key="index" :value="item.value" :label="`${item.name} (${item.code}) [${item.value}] `" />
+                
+              </el-select>
+              
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUI">
+            <el-form-item label="鐘舵��">
+              <el-select clearable="" v-model="queryParams.status" placeholder="璇烽�夋嫨鐘舵��">
+                <el-option v-for="(item,index) in dl('TaskStatusEnum')" :key="index" :value="item.value" :label="`${item.name} (${item.code}) [${item.value}] `" />
+                
+              </el-select>
+              
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUI">
+            <el-form-item label="鏄惁鍥為鎴愬姛">
+              <el-select clearable="" v-model="queryParams.isSuccess" placeholder="璇烽�夋嫨鏄惁鍥為鎴愬姛">
+                <el-option v-for="(item,index) in dl('TaskSuccessEnum')" :key="index" :value="item.value" :label="`${item.name} (${item.code}) [${item.value}] `" />
+                
+              </el-select>
+              
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUI">
+            <el-form-item label="寮傚父淇℃伅">
+              <el-input v-model="queryParams.information" clearable="" placeholder="璇疯緭鍏ュ紓甯镐俊鎭�"/>
+              
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUI">
+            <el-form-item label="涓嬪彂浜�">
+              <el-input-number v-model="queryParams.createUserName"  clearable="" placeholder="璇疯緭鍏ヤ笅鍙戜汉"/>
+              
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10">
+            <el-form-item >
+              <el-button-group style="display: flex; align-items: center;">
+                <el-button type="primary"  icon="ele-Search" @click="handleQuery" v-auth="'wcsOderTask:page'"> 鏌ヨ </el-button>
+                      <el-button icon="ele-Refresh" @click="() => queryParams = {}"> 閲嶇疆 </el-button>
+                        <el-button icon="ele-ZoomIn" @click="changeAdvanceQueryUI" v-if="!showAdvanceQueryUI" style="margin-left:5px;"> 楂樼骇鏌ヨ </el-button>
+                        <el-button icon="ele-ZoomOut" @click="changeAdvanceQueryUI" v-if="showAdvanceQueryUI" style="margin-left:5px;"> 闅愯棌 </el-button>
+                <el-button type="primary" style="margin-left:5px;" icon="ele-Plus" @click="openAddWcsOderTask" v-auth="'wcsOderTask:add'"> 鏂板 </el-button>
+                
+              </el-button-group>
+            </el-form-item>
+            
+          </el-col>
+        </el-row>
+      </el-form>
+    </el-card>
+    <el-card class="full-table" shadow="hover" style="margin-top: 5px">
+      <el-table
+				:data="tableData"
+				style="width: 100%"
+				v-loading="loading"
+				tooltip-effect="light"
+                				row-key="id"
+                @sort-change="sortChange"
+				border="">
+        <el-table-column type="index" label="搴忓彿" width="55" align="center"/>
+        <el-table-column prop="orderNo" label="WMS涓嬪彂鍗曞彿"  show-overflow-tooltip="" />
+        <el-table-column prop="taskNo" label="浠诲姟鍙�"  show-overflow-tooltip="" />
+        <el-table-column prop="lotNo" label="鎵规鍙�"  show-overflow-tooltip="" />
+        <el-table-column prop="skuNo" label="鐗╂枡缂栫爜"  show-overflow-tooltip="" />
+        <el-table-column prop="skuName" label="鐗╂枡鍚嶇О"  show-overflow-tooltip="" />
+        <el-table-column prop="boxType" label="瑙勬牸"  show-overflow-tooltip="" />
+        <el-table-column prop="qty" label="鎬荤鏁�/璁″垝绠辨暟/棰勪及绠辨暟"  show-overflow-tooltip="" />
+          <el-table-column prop="taskType" label="浠诲姟绫诲瀷"  show-overflow-tooltip="" >
+            <template #default="scope">
+              <el-tag :type="dv('TaskTypeEnum', scope.row.taskType)?.tagType"> {{dv('TaskTypeEnum', scope.row.taskType)?.name}}</el-tag>
+            </template>
+          </el-table-column>
+          <el-table-column prop="status" label="鐘舵��"  show-overflow-tooltip="" >
+            <template #default="scope">
+              <el-tag :type="dv('TaskStatusEnum', scope.row.status)?.tagType"> {{dv('TaskStatusEnum', scope.row.status)?.name}}</el-tag>
+            </template>
+          </el-table-column>
+          <el-table-column prop="isSuccess" label="鏄惁鍥為鎴愬姛"  show-overflow-tooltip="" >
+            <template #default="scope">
+              <el-tag :type="dv('TaskSuccessEnum', scope.row.isSuccess)?.tagType"> {{dv('TaskSuccessEnum', scope.row.isSuccess)?.name}}</el-tag>
+            </template>
+          </el-table-column>
+        <el-table-column prop="information" label="寮傚父淇℃伅"  show-overflow-tooltip="" />
+        <el-table-column prop="createUserName" label="涓嬪彂浜�"  show-overflow-tooltip="" />
+        <el-table-column label="鎿嶄綔" width="140" align="center" fixed="right" show-overflow-tooltip="" v-if="auth('wcsOderTask:update') || auth('wcsOderTask:delete')">
+          <template #default="scope">
+            <el-button icon="ele-Edit" size="small" text="" type="primary" @click="openEditWcsOderTask(scope.row)" v-auth="'wcsOderTask:update'"> 缂栬緫 </el-button>
+            <el-button icon="ele-Delete" size="small" text="" type="primary" @click="delWcsOderTask(scope.row)" v-auth="'wcsOderTask:delete'"> 鍒犻櫎 </el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <el-pagination
+				v-model:currentPage="tableParams.page"
+				v-model:page-size="tableParams.pageSize"
+				:total="tableParams.total"
+				:page-sizes="[10, 20, 50, 100, 200, 500]"
+				size="small"
+				background=""
+				@size-change="handleSizeChange"
+				@current-change="handleCurrentChange"
+				layout="total, sizes, prev, pager, next, jumper"
+	/>
+      <printDialog
+        ref="printDialogRef"
+        :title="printWcsOderTaskTitle"
+        @reloadTable="handleQuery" />
+      <editDialog
+        ref="editDialogRef"
+        :title="editWcsOderTaskTitle"
+        @reloadTable="handleQuery"
+      />
+    </el-card>
+  </div>
+</template>
+
+<script lang="ts" setup="" name="wcsOderTask">
+  import { ref } from "vue";
+  import { ElMessageBox, ElMessage } from "element-plus";
+  import { auth } from '/@/utils/authFunction';
+
+  import { getDictDataItem as di, getDictDataList as dl } from '/@/utils/dict-utils';
+  import { getDictLabelByVal as dv } from '/@/utils/dict-utils';
+  import { formatDate } from '/@/utils/formatTime';
+
+
+  import printDialog from '/@/views/system/print/component/hiprint/preview.vue'
+  import editDialog from '/@/views/device/wcsOderTask/component/editDialog.vue'
+  import { pageWcsOderTask, deleteWcsOderTask } from '/@/api/device/wcsOderTask';
+	import { getAPI } from '/@/utils/axios-utils';
+	import { SysEnumApi } from '/@/api-services/api';
+  import commonFunction from '/@/utils/commonFunction';
+
+  const showAdvanceQueryUI = ref(false);
+  const printDialogRef = ref();
+  const editDialogRef = ref();
+  const loading = ref(false);
+  const tableData = ref<any>([]);
+  const queryParams = ref<any>({});
+  const tableParams = ref({
+    page: 1,
+    pageSize: 10,
+    total: 0,
+  });
+
+  const printWcsOderTaskTitle = ref("");
+  const editWcsOderTaskTitle = ref("");
+
+  // 鏀瑰彉楂樼骇鏌ヨ鐨勬帶浠舵樉绀虹姸鎬�
+  const changeAdvanceQueryUI = () => {
+    showAdvanceQueryUI.value = !showAdvanceQueryUI.value;
+  }
+
+  // 鏌ヨ鎿嶄綔
+  const handleQuery = async () => {
+    loading.value = true;
+    var res = await pageWcsOderTask(Object.assign(queryParams.value, tableParams.value));
+    tableData.value = res.data.result?.items ?? [];
+    tableParams.value.total = res.data.result?.total;
+    loading.value = false;
+  };
+
+  // 鍒楁帓搴�
+  const sortChange = async (column: any) => {
+	queryParams.value.field = column.prop;
+	queryParams.value.order = column.order;
+	await handleQuery();
+  };
+
+  // 鎵撳紑鏂板椤甸潰
+  const openAddWcsOderTask = () => {
+    editWcsOderTaskTitle.value = '娣诲姞鍒嗘嫞浠诲姟';
+    editDialogRef.value.openDialog({});
+  };
+
+  // 鎵撳紑鎵撳嵃椤甸潰
+  const openPrintWcsOderTask = async (row: any) => {
+    printWcsOderTaskTitle.value = '鎵撳嵃鍒嗘嫞浠诲姟';
+  }
+  
+  // 鎵撳紑缂栬緫椤甸潰
+  const openEditWcsOderTask = (row: any) => {
+    editWcsOderTaskTitle.value = '缂栬緫鍒嗘嫞浠诲姟';
+    editDialogRef.value.openDialog(row);
+  };
+
+  // 鍒犻櫎
+  const delWcsOderTask = (row: any) => {
+    ElMessageBox.confirm(`纭畾瑕佸垹闄ゅ悧?`, "鎻愮ず", {
+    confirmButtonText: "纭畾",
+    cancelButtonText: "鍙栨秷",
+    type: "warning",
+  })
+  .then(async () => {
+    await deleteWcsOderTask(row);
+    handleQuery();
+    ElMessage.success("鍒犻櫎鎴愬姛");
+  })
+  .catch(() => {});
+  };
+
+  // 鏀瑰彉椤甸潰瀹归噺
+  const handleSizeChange = (val: number) => {
+    tableParams.value.pageSize = val;
+    handleQuery();
+  };
+
+  // 鏀瑰彉椤电爜搴忓彿
+  const handleCurrentChange = (val: number) => {
+    tableParams.value.page = val;
+    handleQuery();
+  };
+
+  handleQuery();
+</script>
+<style scoped>
+:deep(.el-input),
+:deep(.el-select),
+:deep(.el-input-number) {
+	width: 100%;
+}
+</style>
+

--
Gitblit v1.8.0