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