Admin.NET/Admin.NET.Application/Admin.NET.Application.csproj
@@ -31,4 +31,8 @@ <ProjectReference Include="..\Plugins\Admin.NET.Plugin.GoView\Admin.NET.Plugin.GoView.csproj" /> </ItemGroup> <ItemGroup> <Folder Include="Entity\" /> </ItemGroup> </Project> Admin.NET/Admin.NET.Web.Core/Startup.cs
@@ -284,7 +284,7 @@ { foreach (var groupInfo in SpecificationDocumentBuilder.GetOpenApiGroups()) { groupInfo.Description += "<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>"; //groupInfo.Description += "<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>"; } }); Admin.NET/WCS.Application/Configuration/CodeGen.json
@@ -1,7 +1,7 @@ { // 代码生成配置项-程序集名称集合 "CodeGen": { "EntityAssemblyNames": [ "Admin.NET.Core", "Admin.NET.Application" ], "EntityAssemblyNames": [ "Admin.NET.Core", "WCS.Application" ], "BaseEntityNames": [ "EntityTenantId", "EntityTenant", "EntityTenantBaseData", "EntityBaseData", "EntityBase", "EntityBaseId" ], "EntityBaseColumn": { "EntityTenantId": [ "Id", "TenantId" ], @@ -13,6 +13,6 @@ //"BaseId": [ "Id" ] }, "FrontRootPath": "Web", // 前端项目根目录 "BackendApplicationNamespaces": [ "Admin.NET.Application", "Admin.NET.Application2" ] // 后端生成到的项目 "BackendApplicationNamespaces": [ "WCS.Application" ] // 后端生成到的项目 } } Admin.NET/WCS.Application/Configuration/Enum.json
@@ -1,6 +1,6 @@ { // 枚举实体所在程序集名称集合 "Enum": { "EntityAssemblyNames": [ "Admin." ] "EntityAssemblyNames": [ "Admin.", "WCS." ] } } Admin.NET/WCS.Application/Const/ApplicationConst.cs
New file @@ -0,0 +1,12 @@ namespace WCS.Application; /// <summary> /// 业务应用相关常量 /// </summary> public class ApplicationConst { /// <summary> /// API分组名称 /// </summary> public const string GroupName = "WCS"; } Admin.NET/WCS.Application/Entity/WcsTask.cs
New file @@ -0,0 +1,142 @@ using Admin.NET.Core; namespace WCS.Application; /// <summary> /// 任务表 /// </summary> [SugarTable("WCSTask","任务表")] public class WcsTask : EntityBaseData { /// <summary> /// 任务号 /// </summary> [SugarColumn(ColumnName = "TaskNo", ColumnDescription = "任务号", Length = 20)] public string? TaskNo { get; set; } /// <summary> /// 任务类型 /// </summary> [SugarColumn(ColumnName = "TaskType", ColumnDescription = "任务类型")] public TaskTypeEnum? TaskType { get; set; } /// <summary> /// 状态 /// </summary> [SugarColumn(ColumnName = "Status", ColumnDescription = "状态")] public TaskStatusEnum? Status { get; set; } /// <summary> /// 是否回馈成功 /// </summary> [SugarColumn(ColumnName = "IsSuccess", ColumnDescription = "是否回馈成功")] public TaskSuccessEnum? IsSuccess { get; set; } /// <summary> /// 异常信息 /// </summary> [SugarColumn(ColumnName = "Information", ColumnDescription = "异常信息", Length = 32)] public string? Information { get; set; } /// <summary> /// 来源 /// </summary> [SugarColumn(ColumnName = "Origin", ColumnDescription = "来源", Length = 20)] public string? Origin { get; set; } /// <summary> /// 起始位置 /// </summary> [SugarColumn(ColumnName = "StartLocate", ColumnDescription = "起始位置", Length = 20)] public string? StartLocate { get; set; } /// <summary> /// 起始巷道 /// </summary> [SugarColumn(ColumnName = "StartRoadway", ColumnDescription = "起始巷道", Length = 20)] public string? StartRoadway { get; set; } /// <summary> /// 结束位置 /// </summary> [SugarColumn(ColumnName = "EndLocate", ColumnDescription = "结束位置", Length = 20)] public string? EndLocate { get; set; } /// <summary> /// 目标巷道 /// </summary> [SugarColumn(ColumnName = "EndRoadway", ColumnDescription = "目标巷道", Length = 20)] public string? EndRoadway { get; set; } /// <summary> /// 托盘号 /// </summary> [SugarColumn(ColumnName = "PalletNo", ColumnDescription = "托盘号", Length = 20)] public string? PalletNo { get; set; } /// <summary> /// 批次号 /// </summary> [SugarColumn(ColumnName = "LotNo", ColumnDescription = "批次号", Length = 20)] public string? LotNo { get; set; } /// <summary> /// 供货批次 /// </summary> [SugarColumn(ColumnName = "SupplierLot", ColumnDescription = "供货批次", Length = 20)] public string? SupplierLot { get; set; } /// <summary> /// 物料编码 /// </summary> [SugarColumn(ColumnName = "SkuNo", ColumnDescription = "物料编码", Length = 20)] public string? SkuNo { get; set; } /// <summary> /// 物料名称 /// </summary> [SugarColumn(ColumnName = "SkuName", ColumnDescription = "物料名称", Length = 20)] public string? SkuName { get; set; } /// <summary> /// 数量 /// </summary> [SugarColumn(ColumnName = "Qty", ColumnDescription = "数量")] public int? Qty { get; set; } /// <summary> /// 拆垛数量 /// </summary> [SugarColumn(ColumnName = "CompleteQty", ColumnDescription = "拆垛数量")] public int? CompleteQty { get; set; } /// <summary> /// 拣货方式 /// </summary> [SugarColumn(ColumnName = "UnstackingMode", ColumnDescription = "拣货方式", Length = 10)] public string? UnstackingMode { get; set; } /// <summary> /// 取消时间 /// </summary> [SugarColumn(ColumnName = "CancelDate", ColumnDescription = "取消时间")] public DateTime? CancelDate { get; set; } /// <summary> /// 完成时间 /// </summary> [SugarColumn(ColumnName = "FinishDate", ColumnDescription = "完成时间")] public DateTime? FinishDate { get; set; } /// <summary> /// 最后写入流程控制字值 /// </summary> [SugarColumn(ColumnName = "WcsPosValue", ColumnDescription = "最后写入流程控制字值", Length = 20)] public string? WcsPosValue { get; set; } /// <summary> /// 优先级 /// </summary> [SugarColumn(ColumnName = "Levels", ColumnDescription = "优先级")] public int? Levels { get; set; } } Admin.NET/WCS.Application/Entity/WcsTaskMonitor.cs
New file @@ -0,0 +1,63 @@ namespace WCS.Application; /// <summary> /// 任务明细\监控表 /// </summary> [SugarTable("WCSTaskMonitor","任务明细监控表")] public class WcsTaskMonitor : EntityBaseData { /// <summary> /// 任务号 /// </summary> [SugarColumn(ColumnName = "TaskNo", ColumnDescription = "任务号", Length = 20)] public string? TaskNo { get; set; } /// <summary> /// 交互工位号 /// </summary> [SugarColumn(ColumnName = "PlcId", ColumnDescription = "交互工位号")] public long? PlcId { get; set; } /// <summary> /// 交互位置 /// </summary> [SugarColumn(ColumnName = "PlcName", ColumnDescription = "交互位置", Length = 32)] public string? PlcName { get; set; } /// <summary> /// 起始位置 /// </summary> [SugarColumn(ColumnName = "StartLocat", ColumnDescription = "起始位置", Length = 20)] public string? StartLocat { get; set; } /// <summary> /// 目标位置 /// </summary> [SugarColumn(ColumnName = "EndLocat", ColumnDescription = "目标位置", Length = 32)] public string? EndLocat { get; set; } /// <summary> /// 交互信息 /// </summary> [SugarColumn(ColumnName = "InteractiveMsg", ColumnDescription = "交互信息", Length = 100)] public string? InteractiveMsg { get; set; } /// <summary> /// 异常记录 /// </summary> [SugarColumn(ColumnName = "ErrorMsg", ColumnDescription = "异常记录", Length = 100)] public string? ErrorMsg { get; set; } /// <summary> /// 托盘号 /// </summary> [SugarColumn(ColumnName = "PalletNo", ColumnDescription = "托盘号", Length = 20)] public string? PalletNo { get; set; } /// <summary> /// 状态 /// </summary> [SugarColumn(ColumnName = "Status", ColumnDescription = "状态")] public TaskStatusEnum? Status { get; set; } } Admin.NET/WCS.Application/Enum/TaskEnum.cs
New file @@ -0,0 +1,88 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace WCS.Application; /// <summary> /// 任务类型枚举 /// </summary> [Description("任务类型枚举")] public enum TaskTypeEnum { /// <summary> /// 入库任务 /// </summary> [Description("入库任务")] In = 0, /// <summary> /// 出库任务 /// </summary> [Description("出库任务")] Out = 1, /// <summary> /// 移库任务 /// </summary> [Description("移库任务")] Move = 2, /// <summary> /// PLC申请入库 /// </summary> [Description("PLC申请入库")] PLC = 3, } /// <summary> /// 任务状态枚举 /// </summary> [Description("任务状态枚举")] public enum TaskStatusEnum { /// <summary> /// 等待执行 /// </summary> [Description("等待执行")] Wait = 0, /// <summary> /// 正在执行 /// </summary> [Description("正在执行")] Doing = 1, /// <summary> /// 执行完成 /// </summary> [Description("执行完成")] Complete = 2, /// <summary> /// 异常结束 /// </summary> [Description("异常结束")] Exception = 3, /// <summary> /// 任务取消 /// </summary> [Description("任务取消")] Cancell = 4, } /// <summary> /// 是否成功枚举 /// </summary> [Description("是否成功枚举")] public enum TaskSuccessEnum { /// <summary> /// 回传成功 /// </summary> [Description("回传成功")] Success = 0, /// <summary> /// 回传失败 /// </summary> [Description("回传失败")] Fail = 1 } Admin.NET/WCS.Application/Service/WcsTask/Dto/WcsTaskDto.cs
New file @@ -0,0 +1,174 @@ // Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 // // 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 // // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! namespace WCS.Application; /// <summary> /// 任务表输出参数 /// </summary> public class WcsTaskDto { /// <summary> /// 主键Id /// </summary> public long Id { get; set; } /// <summary> /// 任务号 /// </summary> public string? TaskNo { 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? Origin { get; set; } /// <summary> /// 起始位置 /// </summary> public string? StartLocate { get; set; } /// <summary> /// 起始巷道 /// </summary> public string? StartRoadway { get; set; } /// <summary> /// 结束位置 /// </summary> public string? EndLocate { get; set; } /// <summary> /// 目标巷道 /// </summary> public string? EndRoadway { get; set; } /// <summary> /// 托盘号 /// </summary> public string? PalletNo { get; set; } /// <summary> /// 批次号 /// </summary> public string? LotNo { get; set; } /// <summary> /// 供货批次 /// </summary> public string? SupplierLot { get; set; } /// <summary> /// 物料编码 /// </summary> public string? SkuNo { get; set; } /// <summary> /// 物料名称 /// </summary> public string? SkuName { get; set; } /// <summary> /// 数量 /// </summary> public int? Qty { get; set; } /// <summary> /// 拆垛数量 /// </summary> public int? CompleteQty { get; set; } /// <summary> /// 拣货方式 /// </summary> public string? UnstackingMode { get; set; } /// <summary> /// 取消时间 /// </summary> public DateTime? CancelDate { get; set; } /// <summary> /// 完成时间 /// </summary> public DateTime? FinishDate { get; set; } /// <summary> /// 最后写入流程控制字值 /// </summary> public string? WcsPosValue { get; set; } /// <summary> /// 优先级 /// </summary> public int? Levels { get; set; } /// <summary> /// 创建时间 /// </summary> public DateTime? CreateTime { get; set; } /// <summary> /// 更新时间 /// </summary> public DateTime? UpdateTime { get; set; } /// <summary> /// 创建者Id /// </summary> public long? CreateUserId { get; set; } /// <summary> /// 创建者姓名 /// </summary> public string? CreateUserName { get; set; } /// <summary> /// 修改者Id /// </summary> public long? UpdateUserId { get; set; } /// <summary> /// 修改者姓名 /// </summary> public string? UpdateUserName { get; set; } /// <summary> /// 创建者部门Id /// </summary> public long? CreateOrgId { get; set; } /// <summary> /// 创建者部门名称 /// </summary> public string? CreateOrgName { get; set; } /// <summary> /// 软删除 /// </summary> public bool IsDelete { get; set; } } Admin.NET/WCS.Application/Service/WcsTask/Dto/WcsTaskInput.cs
New file @@ -0,0 +1,240 @@ // Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 // // 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 // // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! using Admin.NET.Core; using System.ComponentModel.DataAnnotations; namespace WCS.Application; /// <summary> /// 任务表基础输入参数 /// </summary> public class WcsTaskBaseInput { /// <summary> /// 任务号 /// </summary> public virtual string? TaskNo { 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 string? Origin { get; set; } /// <summary> /// 起始位置 /// </summary> public virtual string? StartLocate { get; set; } /// <summary> /// 起始巷道 /// </summary> public virtual string? StartRoadway { get; set; } /// <summary> /// 结束位置 /// </summary> public virtual string? EndLocate { get; set; } /// <summary> /// 目标巷道 /// </summary> public virtual string? EndRoadway { get; set; } /// <summary> /// 托盘号 /// </summary> public virtual string? PalletNo { get; set; } /// <summary> /// 批次号 /// </summary> public virtual string? LotNo { get; set; } /// <summary> /// 供货批次 /// </summary> public virtual string? SupplierLot { get; set; } /// <summary> /// 物料编码 /// </summary> public virtual string? SkuNo { get; set; } /// <summary> /// 物料名称 /// </summary> public virtual string? SkuName { get; set; } /// <summary> /// 数量 /// </summary> public virtual int? Qty { get; set; } /// <summary> /// 拆垛数量 /// </summary> public virtual int? CompleteQty { get; set; } /// <summary> /// 拣货方式 /// </summary> public virtual string? UnstackingMode { get; set; } /// <summary> /// 取消时间 /// </summary> public virtual DateTime? CancelDate { get; set; } /// <summary> /// 完成时间 /// </summary> public virtual DateTime? FinishDate { get; set; } /// <summary> /// 最后写入流程控制字值 /// </summary> public virtual string? WcsPosValue { get; set; } /// <summary> /// 优先级 /// </summary> public virtual int? Levels { get; set; } /// <summary> /// 创建时间 /// </summary> public virtual DateTime? CreateTime { get; set; } /// <summary> /// 更新时间 /// </summary> public virtual DateTime? UpdateTime { get; set; } /// <summary> /// 创建者Id /// </summary> public virtual long? CreateUserId { get; set; } /// <summary> /// 创建者姓名 /// </summary> public virtual string? CreateUserName { get; set; } /// <summary> /// 修改者Id /// </summary> public virtual long? UpdateUserId { get; set; } /// <summary> /// 修改者姓名 /// </summary> public virtual string? UpdateUserName { get; set; } /// <summary> /// 创建者部门Id /// </summary> public virtual long? CreateOrgId { get; set; } /// <summary> /// 创建者部门名称 /// </summary> public virtual string? CreateOrgName { get; set; } /// <summary> /// 软删除 /// </summary> public virtual bool IsDelete { get; set; } } /// <summary> /// 任务表分页查询输入参数 /// </summary> public class PageWcsTaskInput : BasePageInput { /// <summary> /// 关键字查询 /// </summary> public string? SearchKey { get; set; } /// <summary> /// 任务号 /// </summary> public string? TaskNo { get; set; } /// <summary> /// 任务类型 /// </summary> public TaskTypeEnum? TaskType { get; set; } /// <summary> /// 状态 /// </summary> public TaskStatusEnum? Status { get; set; } } /// <summary> /// 任务表增加输入参数 /// </summary> public class AddWcsTaskInput : WcsTaskBaseInput { /// <summary> /// 软删除 /// </summary> [Required(ErrorMessage = "软删除不能为空")] public override bool IsDelete { get; set; } } /// <summary> /// 任务表删除输入参数 /// </summary> public class DeleteWcsTaskInput : BaseIdInput { } /// <summary> /// 任务表更新输入参数 /// </summary> public class UpdateWcsTaskInput : WcsTaskBaseInput { /// <summary> /// 主键Id /// </summary> [Required(ErrorMessage = "主键Id不能为空")] public long Id { get; set; } } /// <summary> /// 任务表主键查询输入参数 /// </summary> public class QueryByIdWcsTaskInput : DeleteWcsTaskInput { } Admin.NET/WCS.Application/Service/WcsTask/Dto/WcsTaskOutput.cs
New file @@ -0,0 +1,176 @@ // Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 // // 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 // // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! namespace WCS.Application; /// <summary> /// 任务表输出参数 /// </summary> public class WcsTaskOutput { /// <summary> /// 主键Id /// </summary> public long Id { get; set; } /// <summary> /// 任务号 /// </summary> public string? TaskNo { 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? Origin { get; set; } /// <summary> /// 起始位置 /// </summary> public string? StartLocate { get; set; } /// <summary> /// 起始巷道 /// </summary> public string? StartRoadway { get; set; } /// <summary> /// 结束位置 /// </summary> public string? EndLocate { get; set; } /// <summary> /// 目标巷道 /// </summary> public string? EndRoadway { get; set; } /// <summary> /// 托盘号 /// </summary> public string? PalletNo { get; set; } /// <summary> /// 批次号 /// </summary> public string? LotNo { get; set; } /// <summary> /// 供货批次 /// </summary> public string? SupplierLot { get; set; } /// <summary> /// 物料编码 /// </summary> public string? SkuNo { get; set; } /// <summary> /// 物料名称 /// </summary> public string? SkuName { get; set; } /// <summary> /// 数量 /// </summary> public int? Qty { get; set; } /// <summary> /// 拆垛数量 /// </summary> public int? CompleteQty { get; set; } /// <summary> /// 拣货方式 /// </summary> public string? UnstackingMode { get; set; } /// <summary> /// 取消时间 /// </summary> public DateTime? CancelDate { get; set; } /// <summary> /// 完成时间 /// </summary> public DateTime? FinishDate { get; set; } /// <summary> /// 最后写入流程控制字值 /// </summary> public string? WcsPosValue { get; set; } /// <summary> /// 优先级 /// </summary> public int? Levels { get; set; } /// <summary> /// 创建时间 /// </summary> public DateTime? CreateTime { get; set; } /// <summary> /// 更新时间 /// </summary> public DateTime? UpdateTime { get; set; } /// <summary> /// 创建者Id /// </summary> public long? CreateUserId { get; set; } /// <summary> /// 创建者姓名 /// </summary> public string? CreateUserName { get; set; } /// <summary> /// 修改者Id /// </summary> public long? UpdateUserId { get; set; } /// <summary> /// 修改者姓名 /// </summary> public string? UpdateUserName { get; set; } /// <summary> /// 创建者部门Id /// </summary> public long? CreateOrgId { get; set; } /// <summary> /// 创建者部门名称 /// </summary> public string? CreateOrgName { get; set; } /// <summary> /// 软删除 /// </summary> public bool IsDelete { get; set; } } Admin.NET/WCS.Application/Service/WcsTask/WcsTaskService.cs
New file @@ -0,0 +1,119 @@ // Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 // // 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 // // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! using Admin.NET.Core.Service; using Microsoft.AspNetCore.Http; namespace WCS.Application; /// <summary> /// 任务表服务 /// </summary> [ApiDescriptionSettings(ApplicationConst.GroupName, Order = 100)] public class WcsTaskService : IDynamicApiController, ITransient { private readonly SqlSugarRepository<WcsTask> _wcsTaskRep; public WcsTaskService(SqlSugarRepository<WcsTask> wcsTaskRep) { _wcsTaskRep = wcsTaskRep; } /// <summary> /// 分页查询任务表 /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpPost] [ApiDescriptionSettings(Name = "Page")] [DisplayName("分页查询任务表")] public async Task<SqlSugarPagedList<WcsTaskOutput>> Page(PageWcsTaskInput input) { input.SearchKey = input.SearchKey?.Trim(); var query = _wcsTaskRep.AsQueryable() .WhereIF(!string.IsNullOrEmpty(input.SearchKey), u => u.TaskNo.Contains(input.SearchKey) ) .WhereIF(!string.IsNullOrWhiteSpace(input.TaskNo), u => u.TaskNo.Contains(input.TaskNo.Trim())) .WhereIF(input.TaskType.HasValue, u => u.TaskType == input.TaskType) .WhereIF(input.Status.HasValue, u => u.Status == input.Status) .Select<WcsTaskOutput>(); 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(AddWcsTaskInput input) { var entity = input.Adapt<WcsTask>(); await _wcsTaskRep.InsertAsync(entity); return entity.Id; } /// <summary> /// 删除任务表 /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpPost] [ApiDescriptionSettings(Name = "Delete")] [DisplayName("删除任务表")] public async Task Delete(DeleteWcsTaskInput input) { var entity = await _wcsTaskRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D1002); await _wcsTaskRep.FakeDeleteAsync(entity); //假删除 //await _wcsTaskRep.DeleteAsync(entity); //真删除 } /// <summary> /// 更新任务表 /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpPost] [ApiDescriptionSettings(Name = "Update")] [DisplayName("更新任务表")] public async Task Update(UpdateWcsTaskInput input) { var entity = input.Adapt<WcsTask>(); await _wcsTaskRep.AsUpdateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync(); } /// <summary> /// 获取任务表 /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpGet] [ApiDescriptionSettings(Name = "Detail")] [DisplayName("获取任务表")] public async Task<WcsTask> Detail([FromQuery] QueryByIdWcsTaskInput input) { return await _wcsTaskRep.GetFirstAsync(u => u.Id == input.Id); } /// <summary> /// 获取任务表列表 /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpGet] [ApiDescriptionSettings(Name = "List")] [DisplayName("获取任务表列表")] public async Task<List<WcsTaskOutput>> List([FromQuery] PageWcsTaskInput input) { return await _wcsTaskRep.AsQueryable().Select<WcsTaskOutput>().ToListAsync(); } } Admin.NET/WCS.Application/Service/WcsTaskMonitor/Dto/WcsTaskMonitorDto.cs
New file @@ -0,0 +1,109 @@ // Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 // // 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 // // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! namespace WCS.Application; /// <summary> /// 任务明细监控表输出参数 /// </summary> public class WcsTaskMonitorDto { /// <summary> /// 主键Id /// </summary> public long Id { get; set; } /// <summary> /// 任务号 /// </summary> public string? TaskNo { get; set; } /// <summary> /// 交互工位号 /// </summary> public long? PlcId { get; set; } /// <summary> /// 交互位置 /// </summary> public string? PlcName { get; set; } /// <summary> /// 起始位置 /// </summary> public string? StartLocat { get; set; } /// <summary> /// 目标位置 /// </summary> public string? EndLocat { get; set; } /// <summary> /// 交互信息 /// </summary> public string? InteractiveMsg { get; set; } /// <summary> /// 异常记录 /// </summary> public string? ErrorMsg { get; set; } /// <summary> /// 托盘号 /// </summary> public string? PalletNo { get; set; } /// <summary> /// 状态 /// </summary> public int? Status { get; set; } /// <summary> /// 创建时间 /// </summary> public DateTime? CreateTime { get; set; } /// <summary> /// 更新时间 /// </summary> public DateTime? UpdateTime { get; set; } /// <summary> /// 创建者Id /// </summary> public long? CreateUserId { get; set; } /// <summary> /// 创建者姓名 /// </summary> public string? CreateUserName { get; set; } /// <summary> /// 修改者Id /// </summary> public long? UpdateUserId { get; set; } /// <summary> /// 修改者姓名 /// </summary> public string? UpdateUserName { get; set; } /// <summary> /// 创建者部门Id /// </summary> public long? CreateOrgId { get; set; } /// <summary> /// 创建者部门名称 /// </summary> public string? CreateOrgName { get; set; } /// <summary> /// 软删除 /// </summary> public bool IsDelete { get; set; } } Admin.NET/WCS.Application/Service/WcsTaskMonitor/Dto/WcsTaskMonitorInput.cs
New file @@ -0,0 +1,165 @@ // Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 // // 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 // // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! using Admin.NET.Core; using System.ComponentModel.DataAnnotations; namespace WCS.Application; /// <summary> /// 任务明细监控表基础输入参数 /// </summary> public class WcsTaskMonitorBaseInput { /// <summary> /// 任务号 /// </summary> public virtual string? TaskNo { get; set; } /// <summary> /// 交互工位号 /// </summary> public virtual long? PlcId { get; set; } /// <summary> /// 交互位置 /// </summary> public virtual string? PlcName { get; set; } /// <summary> /// 起始位置 /// </summary> public virtual string? StartLocat { get; set; } /// <summary> /// 目标位置 /// </summary> public virtual string? EndLocat { get; set; } /// <summary> /// 交互信息 /// </summary> public virtual string? InteractiveMsg { get; set; } /// <summary> /// 异常记录 /// </summary> public virtual string? ErrorMsg { get; set; } /// <summary> /// 托盘号 /// </summary> public virtual string? PalletNo { get; set; } /// <summary> /// 状态 /// </summary> public virtual int? Status { get; set; } /// <summary> /// 创建时间 /// </summary> public virtual DateTime? CreateTime { get; set; } /// <summary> /// 更新时间 /// </summary> public virtual DateTime? UpdateTime { get; set; } /// <summary> /// 创建者Id /// </summary> public virtual long? CreateUserId { get; set; } /// <summary> /// 创建者姓名 /// </summary> public virtual string? CreateUserName { get; set; } /// <summary> /// 修改者Id /// </summary> public virtual long? UpdateUserId { get; set; } /// <summary> /// 修改者姓名 /// </summary> public virtual string? UpdateUserName { get; set; } /// <summary> /// 创建者部门Id /// </summary> public virtual long? CreateOrgId { get; set; } /// <summary> /// 创建者部门名称 /// </summary> public virtual string? CreateOrgName { get; set; } /// <summary> /// 软删除 /// </summary> public virtual bool IsDelete { get; set; } } /// <summary> /// 任务明细监控表分页查询输入参数 /// </summary> public class PageWcsTaskMonitorInput : BasePageInput { /// <summary> /// 关键字查询 /// </summary> public string? SearchKey { get; set; } /// <summary> /// 任务号 /// </summary> public string? TaskNo { get; set; } } /// <summary> /// 任务明细监控表增加输入参数 /// </summary> public class AddWcsTaskMonitorInput : WcsTaskMonitorBaseInput { /// <summary> /// 软删除 /// </summary> [Required(ErrorMessage = "软删除不能为空")] public override bool IsDelete { get; set; } } /// <summary> /// 任务明细监控表删除输入参数 /// </summary> public class DeleteWcsTaskMonitorInput : BaseIdInput { } /// <summary> /// 任务明细监控表更新输入参数 /// </summary> public class UpdateWcsTaskMonitorInput : WcsTaskMonitorBaseInput { /// <summary> /// 主键Id /// </summary> [Required(ErrorMessage = "主键Id不能为空")] public long Id { get; set; } } /// <summary> /// 任务明细监控表主键查询输入参数 /// </summary> public class QueryByIdWcsTaskMonitorInput : DeleteWcsTaskMonitorInput { } Admin.NET/WCS.Application/Service/WcsTaskMonitor/Dto/WcsTaskMonitorOutput.cs
New file @@ -0,0 +1,111 @@ // Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 // // 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 // // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! namespace WCS.Application; /// <summary> /// 任务明细监控表输出参数 /// </summary> public class WcsTaskMonitorOutput { /// <summary> /// 主键Id /// </summary> public long Id { get; set; } /// <summary> /// 任务号 /// </summary> public string? TaskNo { get; set; } /// <summary> /// 交互工位号 /// </summary> public long? PlcId { get; set; } /// <summary> /// 交互位置 /// </summary> public string? PlcName { get; set; } /// <summary> /// 起始位置 /// </summary> public string? StartLocat { get; set; } /// <summary> /// 目标位置 /// </summary> public string? EndLocat { get; set; } /// <summary> /// 交互信息 /// </summary> public string? InteractiveMsg { get; set; } /// <summary> /// 异常记录 /// </summary> public string? ErrorMsg { get; set; } /// <summary> /// 托盘号 /// </summary> public string? PalletNo { get; set; } /// <summary> /// 状态 /// </summary> public int? Status { get; set; } /// <summary> /// 创建时间 /// </summary> public DateTime? CreateTime { get; set; } /// <summary> /// 更新时间 /// </summary> public DateTime? UpdateTime { get; set; } /// <summary> /// 创建者Id /// </summary> public long? CreateUserId { get; set; } /// <summary> /// 创建者姓名 /// </summary> public string? CreateUserName { get; set; } /// <summary> /// 修改者Id /// </summary> public long? UpdateUserId { get; set; } /// <summary> /// 修改者姓名 /// </summary> public string? UpdateUserName { get; set; } /// <summary> /// 创建者部门Id /// </summary> public long? CreateOrgId { get; set; } /// <summary> /// 创建者部门名称 /// </summary> public string? CreateOrgName { get; set; } /// <summary> /// 软删除 /// </summary> public bool IsDelete { get; set; } } Admin.NET/WCS.Application/Service/WcsTaskMonitor/WcsTaskMonitorService.cs
New file @@ -0,0 +1,117 @@ // Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 // // 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 // // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! using Admin.NET.Core.Service; using Microsoft.AspNetCore.Http; namespace WCS.Application; /// <summary> /// 任务明细监控表服务 /// </summary> [ApiDescriptionSettings(ApplicationConst.GroupName, Order = 100)] public class WcsTaskMonitorService : IDynamicApiController, ITransient { private readonly SqlSugarRepository<WcsTaskMonitor> _wcsTaskMonitorRep; public WcsTaskMonitorService(SqlSugarRepository<WcsTaskMonitor> wcsTaskMonitorRep) { _wcsTaskMonitorRep = wcsTaskMonitorRep; } /// <summary> /// 分页查询任务明细监控表 /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpPost] [ApiDescriptionSettings(Name = "Page")] [DisplayName("分页查询任务明细监控表")] public async Task<SqlSugarPagedList<WcsTaskMonitorOutput>> Page(PageWcsTaskMonitorInput input) { input.SearchKey = input.SearchKey?.Trim(); var query = _wcsTaskMonitorRep.AsQueryable() .WhereIF(!string.IsNullOrEmpty(input.SearchKey), u => u.TaskNo.Contains(input.SearchKey) ) .WhereIF(!string.IsNullOrWhiteSpace(input.TaskNo), u => u.TaskNo.Contains(input.TaskNo.Trim())) .Select<WcsTaskMonitorOutput>(); 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(AddWcsTaskMonitorInput input) { var entity = input.Adapt<WcsTaskMonitor>(); await _wcsTaskMonitorRep.InsertAsync(entity); return entity.Id; } /// <summary> /// 删除任务明细监控表 /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpPost] [ApiDescriptionSettings(Name = "Delete")] [DisplayName("删除任务明细监控表")] public async Task Delete(DeleteWcsTaskMonitorInput input) { var entity = await _wcsTaskMonitorRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D1002); await _wcsTaskMonitorRep.FakeDeleteAsync(entity); //假删除 //await _wcsTaskMonitorRep.DeleteAsync(entity); //真删除 } /// <summary> /// 更新任务明细监控表 /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpPost] [ApiDescriptionSettings(Name = "Update")] [DisplayName("更新任务明细监控表")] public async Task Update(UpdateWcsTaskMonitorInput input) { var entity = input.Adapt<WcsTaskMonitor>(); await _wcsTaskMonitorRep.AsUpdateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync(); } /// <summary> /// 获取任务明细监控表 /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpGet] [ApiDescriptionSettings(Name = "Detail")] [DisplayName("获取任务明细监控表")] public async Task<WcsTaskMonitor> Detail([FromQuery] QueryByIdWcsTaskMonitorInput input) { return await _wcsTaskMonitorRep.GetFirstAsync(u => u.Id == input.Id); } /// <summary> /// 获取任务明细监控表列表 /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpGet] [ApiDescriptionSettings(Name = "List")] [DisplayName("获取任务明细监控表列表")] public async Task<List<WcsTaskMonitorOutput>> List([FromQuery] PageWcsTaskMonitorInput input) { return await _wcsTaskMonitorRep.AsQueryable().Select<WcsTaskMonitorOutput>().ToListAsync(); } } Web/src/api-services/apis/sys-config-api.ts
@@ -1087,7 +1087,7 @@ * @throws {RequiredError} * @memberof SysConfigApi */ public async apiSysConfigSaveSystemInfoPost(body?: InfoSaveInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> { public async apiSysConfigSaveSystemInfoPost(body?: any, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> { return SysConfigApiFp(this.configuration).apiSysConfigSaveSystemInfoPost(body, options).then((request) => request(this.axios, this.basePath)); } /** Web/src/api/wcs/wcsTask.ts
New file @@ -0,0 +1,50 @@ import request from '/@/utils/request'; enum Api { AddWcsTask = '/api/wcsTask/add', DeleteWcsTask = '/api/wcsTask/delete', UpdateWcsTask = '/api/wcsTask/update', PageWcsTask = '/api/wcsTask/page', DetailWcsTask = '/api/wcsTask/detail', } // 增加任务表 export const addWcsTask = (params?: any) => request({ url: Api.AddWcsTask, method: 'post', data: params, }); // 删除任务表 export const deleteWcsTask = (params?: any) => request({ url: Api.DeleteWcsTask, method: 'post', data: params, }); // 编辑任务表 export const updateWcsTask = (params?: any) => request({ url: Api.UpdateWcsTask, method: 'post', data: params, }); // 分页查询任务表 export const pageWcsTask = (params?: any) => request({ url: Api.PageWcsTask, method: 'post', data: params, }); // 详情任务表 export const detailWcsTask = (id: any) => request({ url: Api.DetailWcsTask, method: 'get', data: { id }, }); Web/src/api/wcs/wcsTaskMonitor.ts
New file @@ -0,0 +1,23 @@ import request from '/@/utils/request'; enum Api { PageWcsMonitorTask = '/api/wcsTaskMonitor/page', DetailWcsMonitorTask = '/api/wcsTaskMonitor/detail', } // 分页查询任务表 export const pageWcsMonitorTask = (params?: any) => request({ url: Api.PageWcsMonitorTask, method: 'post', data: params, }); // 详情任务表 export const detailWcsMonitorTask = (id: any) => request({ url: Api.DetailWcsMonitorTask, method: 'get', data: { id }, }); Web/src/views/wcs/wcsTask/component/editDialog.vue
New file @@ -0,0 +1,226 @@ <template> <div class="wcsTask-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="任务号" 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="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="origin"> <el-input v-model="ruleForm.origin" 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="startLocate"> <el-input v-model="ruleForm.startLocate" 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="startRoadway"> <el-input v-model="ruleForm.startRoadway" 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="endLocate"> <el-input v-model="ruleForm.endLocate" 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="endRoadway"> <el-input v-model="ruleForm.endRoadway" 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="palletNo"> <el-input v-model="ruleForm.palletNo" 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="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="supplierLot"> <el-input v-model="ruleForm.supplierLot" 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="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="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="completeQty"> <el-input-number v-model="ruleForm.completeQty" 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="unstackingMode"> <el-input v-model="ruleForm.unstackingMode" placeholder="请输入拣货方式" maxlength="10" show-word-limit 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 { addWcsTask, updateWcsTask, detailWcsTask } from "/@/api/wcs/wcsTask"; 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 detailWcsTask(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 addWcsTask(values); } else { await updateWcsTask(values); } closeDialog(); } else { ElMessage({ message: `表单有${Object.keys(fields).length}处验证失败,请修改后再提交`, type: "error", }); } }); }; //将属性或者函数暴露给父组件 defineExpose({ openDialog }); </script> Web/src/views/wcs/wcsTask/index.vue
New file @@ -0,0 +1,291 @@ <template> <div class="wcsTask-container"> <el-row :gutter="8" style="width: 100%; height: 100%; flex: 1"> <el-col :span="12" :xs="24" style="display: flex; height: 100%; flex: 1"> <el-card class="full-table" shadow="hover" ::body-style="{ height: 'calc(100% - 51px)' }"> <template #header> <el-icon size="16" style="margin-right: 3px; display: inline; vertical-align: middle"><ele-Collection /></el-icon>任务日志 </template> <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="任务号"> <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-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"> <el-form-item> <el-button-group style="display: flex; align-items: center;"> <el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'wcsTask: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="openAddWcsTask" v-auth="'wcsTask:add'"> 新增 </el-button> </el-button-group> </el-form-item> </el-col> </el-row> </el-form> <el-table :data="tableData" style="width: 100%" v-loading="loading" tooltip-effect="light" row-key="id" @row-click="handleClick" @sort-change="sortChange" border=""> <el-table-column type="index" label="序号" width="55" align="center" /> <el-table-column prop="taskNo" label="任务号" show-overflow-tooltip="" /> <el-table-column prop="taskType" width="85" 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" width="85" 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="startLocate" label="起始位置" show-overflow-tooltip="" /> <el-table-column prop="endLocate" label="结束位置" show-overflow-tooltip="" /> <el-table-column prop="palletNo" label="托盘号" show-overflow-tooltip="" /> <el-table-column prop="cancelDate" label="取消时间" show-overflow-tooltip="" /> <el-table-column prop="finishDate" label="完成时间" show-overflow-tooltip="" /> <el-table-column label="修改记录" width="80" align="center" show-overflow-tooltip> <template #default="scope"> <ModifyRecord :data="scope.row" /> </template> </el-table-column> <el-table-column label="操作" width="130" align="center" fixed="right" show-overflow-tooltip="" v-if="auth('wcsTask:complete') || auth('wcsTask:cancell')"> <template #default="scope"> <!-- <el-button icon="ele-Edit" size="small" text="" type="primary" @click="openEditWcsTask(scope.row)" v-auth="'wcsTask:update'"> 编辑 </el-button> <el-button icon="ele-Delete" size="small" text="" type="primary" @click="delWcsTask(scope.row)" v-auth="'wcsTask:delete'"> 删除 </el-button> --> <el-button icon="ele-Check" size="small" text="" type="primary" @click="completeTask(scope.row)" v-auth="'wcsTask:complete'"> 完成 </el-button> <el-button icon="ele-Close" size="small" text="" type="primary" @click="cancellTask(scope.row)" v-auth="'wcsTask:cancell'"> 取消 </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="printWcsTaskTitle" @reloadTable="handleQuery" /> <editDialog ref="editDialogRef" :title="editWcsTaskTitle" @reloadTable="handleQuery" /> </el-card> </el-col> <el-col :span="12" :xs="24" style="display: flex; height: 100%; flex: 1"> <el-card class="full-table" shadow="hover" :body-style="{ height: 'calc(100% - 51px)' }"> <template #header> <el-icon size="16" style="margin-right: 3px; display: inline; vertical-align: middle"><ele-Collection /></el-icon>任务详情 </template> <el-form :model="queryParams2" ref="queryForm2" 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="queryParams2.taskNo" 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 type="primary" icon="ele-Search" @click="handleQuery2"> 查询 </el-button> </el-form-item> </el-col> </el-row> </el-form> <el-table :data="tableData2" style="width: 100%" v-loading="loading" tooltip-effect="light" row-key="id" border=""> <el-table-column type="index" label="序号" width="55" align="center" /> <el-table-column prop="taskNo" label="任务号" show-overflow-tooltip="" /> <el-table-column prop="plcId" label="交互工位号" show-overflow-tooltip="" /> <el-table-column prop="plcName" label="交互位置" show-overflow-tooltip="" /> <el-table-column prop="interactiveMsg" label="交互信息" show-overflow-tooltip="" /> <el-table-column label="修改记录" width="80" align="center" show-overflow-tooltip> <template #default="scope"> <ModifyRecord :data="scope.row" /> </template> </el-table-column> </el-table> <el-pagination v-model:currentPage="tableParams2.page" v-model:page-size="tableParams2.pageSize" :total="tableParams2.total" :page-sizes="[10, 20, 50, 100, 200, 500]" size="small" background="" @size-change="handleSizeChange2" @current-change="handleCurrentChange2" layout="total, sizes, prev, pager, next, jumper" /> </el-card> </el-col> </el-row> </div> </template> <script lang="ts" setup="" name="wcsTask"> import ModifyRecord from '/@/components/table/modifyRecord.vue'; 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/wcs/wcsTask/component/editDialog.vue' import { pageWcsTask, deleteWcsTask } from '/@/api/wcs/wcsTask'; import { pageWcsMonitorTask } from '/@/api/wcs/wcsTaskMonitor'; 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 tableData2 = ref<any>([]); const queryParams = ref<any>({}); const queryParams2 = ref<any>({}); const tableParams = ref({ page: 1, pageSize: 10, total: 0, }); const tableParams2 = ref({ page: 1, pageSize: 10, total: 0, }); const printWcsTaskTitle = ref(""); const editWcsTaskTitle = ref(""); // 改变高级查询的控件显示状态 const changeAdvanceQueryUI = () => { showAdvanceQueryUI.value = !showAdvanceQueryUI.value; } // 查询操作 const handleQuery = async () => { loading.value = true; var res = await pageWcsTask(Object.assign(queryParams.value, tableParams.value)); tableData.value = res.data.result?.items ?? []; tableParams.value.total = res.data.result?.total; loading.value = false; }; // 查询操作 const handleQuery2 = async () => { loading.value = true; var res = await pageWcsMonitorTask(Object.assign(queryParams2.value, tableParams2.value)); tableData2.value = res.data.result?.items ?? []; tableParams2.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 openAddWcsTask = () => { editWcsTaskTitle.value = '添加任务表'; editDialogRef.value.openDialog({}); }; // 打开打印页面 const openPrintWcsTask = async (row: any) => { printWcsTaskTitle.value = '打印任务表'; } // 打开编辑页面 const openEditWcsTask = (row: any) => { editWcsTaskTitle.value = '编辑任务表'; editDialogRef.value.openDialog(row); }; //完成任务 const completeTask = (row: any) => { } //取消任务 const cancellTask = (row: any) => { } // 点击表格 const handleClick = (row: any, event: any, column: any) => { queryParams2.value.taskNo = row.taskNo; handleQuery2(); }; // 删除 const delWcsTask = (row: any) => { ElMessageBox.confirm(`确定要删除吗?`, "提示", { confirmButtonText: "确定", cancelButtonText: "取消", type: "warning", }) .then(async () => { await deleteWcsTask(row); handleQuery(); ElMessage.success("删除成功"); }) .catch(() => { }); }; // 改变页面容量 const handleSizeChange = (val: number) => { tableParams.value.pageSize = val; handleQuery(); }; // 改变页码序号 const handleCurrentChange = (val: number) => { tableParams.value.page = val; handleQuery(); }; // 改变页面容量 const handleSizeChange2 = (val: number) => { tableParams2.value.pageSize = val; handleQuery(); }; // 改变页码序号 const handleCurrentChange2 = (val: number) => { tableParams2.value.page = val; handleQuery(); }; handleQuery(); handleQuery2(); </script> <style scoped> :deep(.el-input), :deep(.el-select), :deep(.el-input-number) { width: 100%; } </style> Web/tsconfig.json
@@ -26,13 +26,13 @@ /* Strict Type-Checking Options */ "strict": false /* Enable all strict type-checking options. */, // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ // "strictNullChecks": true, /* Enable strict null checks. */ // "strictFunctionTypes": true, /* Enable strict checking of function types. */ // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ "noImplicitAny": false, /* Raise error on expressions and declarations with an implied 'any' type. */ "strictNullChecks": false, /* Enable strict null checks. */ "strictFunctionTypes": false, /* Enable strict checking of function types. */ "strictBindCallApply": false, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ "strictPropertyInitialization": false, /* Enable strict checking of property initialization in classes. */ "noImplicitThis": false, /* Raise error on 'this' expressions with an implied 'any' type. */ "alwaysStrict": false, /* Parse in strict mode and emit "use strict" for each source file. */ /* Additional Checks */ // "noUnusedLocals": true, /* Report errors on unused locals. */