diff --git a/EFCoreDatabase/Data/DmDBContext.cs b/EFCoreDatabase/Data/DmDBContext.cs new file mode 100644 index 0000000..22e720e --- /dev/null +++ b/EFCoreDatabase/Data/DmDBContext.cs @@ -0,0 +1,51 @@ +using EFCoreDatabase.Entities; +using Microsoft.EntityFrameworkCore; + +namespace EFCoreDatabase.Data +{ + public class DmDBContext:DbContext + { + public DmDBContext(DbContextOptions options) + : base(options) + { + + } + + public DbSet Manage_Main { get; set; } + public DbSet Manage_List { get; set; } + public DbSet Storage_Main { get; set; } + public DbSet Storage_List { get; set; } + public DbSet Wh_Cell { get; set; } + public DbSet Io_Control_Routes { get; set; } + public DbSet Io_Control { get; set; } + public DbSet Reserve_Cell { get; set; } + public DbSet Sys_Item { get; set; } + public DbSet Sys_Item_List { get; set; } + + public DbSet Stacker_Crane_Status { get; set; } + public DbSet Io_Control_Apply_His { get; set; } + + public DbSet Goods_Main { get; set; } + + public virtual DbSet V_Storage_List { get; set; } + + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + //定义视图无主键 + modelBuilder.Entity().HasNoKey(); + modelBuilder.Entity(x => x.Property(e => e.WEIGHT_EMPTY_BUCKET).HasColumnType("decimal")); + modelBuilder.Entity(x => x.Property(e => e.WEIGHT_RUBBER).HasColumnType("decimal")); + modelBuilder.Entity(x => x.Property(e => e.MANAGE_LIST_QUANTITY).HasColumnType("decimal")); + modelBuilder.Entity(x => x.Property(e => e.WEIGHT_EMPTY_BUCKET).HasColumnType("decimal")); + modelBuilder.Entity(x => x.Property(e => e.WEIGHT_RUBBER).HasColumnType("decimal")); + modelBuilder.Entity(x => x.Property(e => e.STORAGE_LIST_QUANTITY).HasColumnType("decimal")); + modelBuilder.Entity(x => x.Property(e => e.WEIGHT_EMPTY_BUCKET).HasColumnType("decimal")); + modelBuilder.Entity(x => x.Property(e => e.WEIGHT_RUBBER).HasColumnType("decimal")); + modelBuilder.Entity(x => x.Property(e => e.MANAGE_LIST_QUANTITY).HasColumnType("decimal")); + modelBuilder.Entity(x => x.Property(e => e.STORAGE_LIST_QUANTITY).HasColumnType("decimal")); + } + + + + } +} \ No newline at end of file diff --git a/EFCoreDatabase/EFCoreDatabase.csproj b/EFCoreDatabase/EFCoreDatabase.csproj new file mode 100644 index 0000000..6e9f599 --- /dev/null +++ b/EFCoreDatabase/EFCoreDatabase.csproj @@ -0,0 +1,21 @@ + + + + net8.0 + enable + enable + + + + + + + + + + + + + + + diff --git a/EFCoreDatabase/Entities/GOODS_MAIN.cs b/EFCoreDatabase/Entities/GOODS_MAIN.cs new file mode 100644 index 0000000..4d003e2 --- /dev/null +++ b/EFCoreDatabase/Entities/GOODS_MAIN.cs @@ -0,0 +1,75 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Threading.Tasks; + +namespace EFCoreDatabase.Entities +{ + [Table("GOODS_MAIN")] + public class GOODS_MAIN + { + [Column("GOODS_ID")] + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int GOODS_ID { get; set; } + + [Column("GOODS_CLASS_ID")] + public int GOODS_CLASS_ID { get; set; } + + [Column("LOGIC_ID")] + public int LOGIC_ID { get; set; } + + [Column("GOODS_CODE")] + public string GOODS_CODE { get; set; } + + [Column("GOODS_NAME")] + public string GOODS_NAME { get; set; } + + [Column("GOODS_UNITS")] + public string GOODS_UNITS { get; set; } + + [Column("GOODS_CONST_PROPERTY1")] + public string GOODS_CONST_PROPERTY1 { get; set; } + + [Column("GOODS_CONST_PROPERTY2")] + public string GOODS_CONST_PROPERTY2 { get; set; } + + [Column("GOODS_CONST_PROPERTY3")] + public string GOODS_CONST_PROPERTY3 { get; set; } + + [Column("GOODS_CONST_PROPERTY4")] + public string GOODS_CONST_PROPERTY4 { get; set; } + + [Column("GOODS_CONST_PROPERTY5")] + public string GOODS_CONST_PROPERTY5 { get; set; } + + [Column("GOODS_CONST_PROPERTY6")] + public string GOODS_CONST_PROPERTY6 { get; set; } + + [Column("GOODS_CONST_PROPERTY7")] + public string GOODS_CONST_PROPERTY7 { get; set; } + + [Column("GOODS_CONST_PROPERTY8")] + public string GOODS_CONST_PROPERTY8 { get; set; } + + [Column("GOODS_LIMIT_UPPER_QUANTITY")] + public string GOODS_LIMIT_UPPER_QUANTITY { get; set; } + + [Column("GOODS_LIMIT_LOWER_QUANTITY")] + public string GOODS_LIMIT_LOWER_QUANTITY { get; set; } + + [Column("GOODS_REMARK")] + public string GOODS_REMARK { get; set; } + + [Column("GOODS_ORDER")] + public string GOODS_ORDER { get; set; } + + [Column("GOODS_FLAG")] + public string GOODS_FLAG { get; set; } + + [Column("GOODS_COLOR")] + public string GOODS_COLOR { get; set; } + } +} diff --git a/EFCoreDatabase/Entities/IO_CONTROL.cs b/EFCoreDatabase/Entities/IO_CONTROL.cs new file mode 100644 index 0000000..c619254 --- /dev/null +++ b/EFCoreDatabase/Entities/IO_CONTROL.cs @@ -0,0 +1,67 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace EFCoreDatabase.Entities +{ + [Table("IO_CONTROL")] + public class IO_CONTROL + { + [Column("CONTROL_ID")] + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int CONTROL_ID { get; set; } + [Column("RELATIVE_CONTROL_ID")] + public int RELATIVE_CONTROL_ID { get; set; } + + [Column("MANAGE_ID")] + public int MANAGE_ID { get; set; } + [Column("CELL_GROUP")] + public string CELL_GROUP { get; set; } + [Column("STOCK_BARCODE")] + public string STOCK_BARCODE { get; set; } + + [Column("PRE_CONTROL_STATUS")] + public string PRE_CONTROL_STATUS { get; set; } + + [Column("CONTROL_TASK_TYPE")] + public int CONTROL_TASK_TYPE { get; set; } + + [Column("CONTROL_TASK_LEVEL")] + public string CONTROL_TASK_LEVEL { get; set; } + + [Column("START_WAREHOUSE_CODE")] + public string START_WAREHOUSE_CODE { get; set; } + + [Column("END_WAREHOUSE_CODE")] + public string END_WAREHOUSE_CODE { get; set; } + + [Column("START_DEVICE_CODE")] + public string START_DEVICE_CODE { get; set; } + + [Column("END_DEVICE_CODE")] + public string END_DEVICE_CODE { get; set; } + + [Column("CONTROL_STATUS")] + public int CONTROL_STATUS { get; set; } + + [Column("ERROR_TEXT")] + public string ERROR_TEXT { get; set; } + + [Column("CONTROL_BEGIN_TIME")] + public string CONTROL_BEGIN_TIME { get; set; } + + [Column("CONTROL_END_TIME")] + public string CONTROL_END_TIME { get; set; } + + [Column("CONTROL_REMARK")] + public string CONTROL_REMARK { get; set; } + + [Column("BOX_TYPE")] + public string BOX_TYPE { get; set; } + + [Column("RF_DATA")] + public string RF_DATA { get; set; } + [Column("UNLOADING_TASK_COUNT")] + public int UNLOADING_TASK_COUNT { get; set; } + } +} \ No newline at end of file diff --git a/EFCoreDatabase/Entities/IO_CONTROL_APPLY_HIS.cs b/EFCoreDatabase/Entities/IO_CONTROL_APPLY_HIS.cs new file mode 100644 index 0000000..0f8aa3a --- /dev/null +++ b/EFCoreDatabase/Entities/IO_CONTROL_APPLY_HIS.cs @@ -0,0 +1,50 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Threading.Tasks; + +namespace EFCoreDatabase.Entities +{ + [Table("IO_CONTROL_APPLY_HIS")] + public class IO_CONTROL_APPLY_HIS + { + [Column("CONTROL_APPLY_ID")] + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int CONTROL_APPLY_ID { get; set; } + + [Column("CONTROL_ID")] + public int CONTROL_ID { get; set; } + [Column("CONTROL_APPLY_TYPE")] + public string CONTROL_APPLY_TYPE { get; set; } + [Column("WAREHOUSE_CODE")] + public string WAREHOUSE_CODE { get; set; } + [Column("DEVICE_CODE")] + public string DEVICE_CODE { get; set; } + [Column("STOCK_BARCODE")] + public string STOCK_BARCODE { get; set; } + [Column("APPLY_TASK_STATUS")] + public int APPLY_TASK_STATUS { get; set; } + [Column("CREATE_TIME")] + public string CREATE_TIME { get; set; } + + [Column("CONTROL_ERROR_TEXT")] + public string CONTROL_ERROR_TEXT { get; set; } + + [Column("MANAGE_ERROR_TEXT")] + public string MANAGE_ERROR_TEXT { get; set; } + + [Column("CONTROL_APPLY_PARAMETER")] + public string CONTROL_APPLY_PARAMETER { get; set; } + [Column("CONTROL_APPLY_PARA01")] + public string CONTROL_APPLY_PARA01 { get; set; } + [Column("CONTROL_APPLY_PARA02")] + public string CONTROL_APPLY_PARA02 { get; set; } + [Column("CONTROL_APPLY_REMARK")] + public string CONTROL_APPLY_REMARK { get; set; } + [Column("BUCKET_WEIGHT")] + public string BUCKET_WEIGHT { get; set; } + } +} diff --git a/EFCoreDatabase/Entities/IO_CONTROL_ROUTE.cs b/EFCoreDatabase/Entities/IO_CONTROL_ROUTE.cs new file mode 100644 index 0000000..747a554 --- /dev/null +++ b/EFCoreDatabase/Entities/IO_CONTROL_ROUTE.cs @@ -0,0 +1,30 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace EFCoreDatabase.Entities +{ + [Table("IO_CONTROL_ROUTE")] + public class IO_CONTROL_ROUTE + { + [Column("CONTROL_ROUTE_ID")] + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int CONTROL_ROUTE_ID { get; set; } + [Column("CONTROL_ROUTE_TYPE")] + public int CONTROL_ROUTE_TYPE { get; set; } + [Column("CONTROL_ROUTE_CODE")] + public string CONTROL_ROUTE_CODE { get; set; } + + [Column("CONTROL_ROUTE_NAME")] + public string CONTROL_ROUTE_NAME { get; set; } + [Column("START_DEVICE")] + public string START_DEVICE { get; set; } + [Column("END_DEVICE")] + public string END_DEVICE { get; set; } + [Column("CONTROL_ROUTE_STATUS")] + public int CONTROL_ROUTE_STATUS { get; set; } + + [Column("CONTROL_ROUTE_REMARK")] + public string CONTROL_ROUTE_REMARK { get; set; } + } +} \ No newline at end of file diff --git a/EFCoreDatabase/Entities/MANAGE_LIST.cs b/EFCoreDatabase/Entities/MANAGE_LIST.cs new file mode 100644 index 0000000..9f51fa2 --- /dev/null +++ b/EFCoreDatabase/Entities/MANAGE_LIST.cs @@ -0,0 +1,131 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace EFCoreDatabase.Entities +{ + public class MANAGE_LIST + { + [Column("MANAGE_LIST_ID")] + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int MANAGE_LIST_ID { get; set; } + + [Column("STORAGE_LIST_ID")] + public int STORAGE_LIST_ID { get; set; } + + [Column("PLAN_LIST_ID")] + public int PLAN_LIST_ID { get; set; } + + [Column("MANAGE_ID")] + public int MANAGE_ID { get; set; } + + [Column("GOODS_ID")] + public int GOODS_ID { get; set; } + + [Column("MANAGE_LIST_QUANTITY")] + public decimal MANAGE_LIST_QUANTITY { get; set; } + + [Column("MANAGE_LIST_REMARK")] + public string MANAGE_LIST_REMARK { get; set; } + + [Column("BOX_BARCODE")] + public string BOX_BARCODE { get; set; } + + [Column("GOODS_PROPERTY1")] + public string GOODS_PROPERTY1 { get; set; } + + [Column("GOODS_PROPERTY2")] + public string GOODS_PROPERTY2 { get; set; } + + [Column("GOODS_PROPERTY3")] + public string GOODS_PROPERTY3 { get; set; } + + [Column("GOODS_PROPERTY4")] + public string GOODS_PROPERTY4 { get; set; } + + [Column("GOODS_PROPERTY5")] + public string GOODS_PROPERTY5 { get; set; } + + [Column("GOODS_PROPERTY6")] + public string GOODS_PROPERTY6 { get; set; } + + [Column("GOODS_PROPERTY7")] + public string GOODS_PROPERTY7 { get; set; } + + [Column("GOODS_PROPERTY8")] + public string GOODS_PROPERTY8 { get; set; } + + + /// + /// 传输号 + /// + [Column("BUCKET_TRANSACTION_NUMBER")] + public string BUCKET_TRANSACTION_NUMBER { get; set; } + /// + /// 空桶重量 + /// + [Column("WEIGHT_EMPTY_BUCKET")] + public decimal WEIGHT_EMPTY_BUCKET { get; set; } + /// + /// 橡胶重量 + /// + [Column("WEIGHT_RUBBER")] + public decimal WEIGHT_RUBBER { get; set; } + /// + /// ReturnCode + /// + [Column("ReturnCode")] + public string ReturnCode { get; set; } + /// + /// ReturnCodeLabel + /// + [Column("ReturnCodeLabel")] + public string ReturnCodeLabel { get; set; } + /// + /// BatchNumber + /// + [Column("BatchNumber")] + public string BatchNumber { get; set; } + /// + /// ProductCode + /// + [Column("ProductCode")] + public string ProductCode { get; set; } + /// + /// ProductFamily + /// + [Column("ProductFamily")] + public string ProductFamily { get; set; } + /// + /// BaseProductCode + /// + [Column("BaseProductCode")] + public string BaseProductCode { get; set; } + /// + /// MFDCODE + /// + [Column("MFDCODE")] + public string MFDCODE { get; set; } + /// + /// ItemFabricationDate + /// + [Column("ItemFabricationDate")] + public string ItemFabricationDate { get; set; } + /// + /// StoreType + /// + [Column("StoreType")] + public string StoreType { get; set; } + /// + /// StoreCode + /// + [Column("StoreCode")] + public string StoreCode { get; set; } + /// + /// AddressCode + /// + [Column("AddressCode")] + public string AddressCode { get; set; } + + } +} \ No newline at end of file diff --git a/EFCoreDatabase/Entities/MANAGE_MAIN.cs b/EFCoreDatabase/Entities/MANAGE_MAIN.cs new file mode 100644 index 0000000..a234c0b --- /dev/null +++ b/EFCoreDatabase/Entities/MANAGE_MAIN.cs @@ -0,0 +1,40 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace EFCoreDatabase.Entities +{ + [Table("MANAGE_MAIN")] + public class MANAGE_MAIN + { + [Column("MANAGE_ID")] + [Key] + public int MANAGE_ID { get; set; } + [Column("PLAN_ID")] + public int PLAN_ID { get; set; } + [Column("MANAGE_TYPE_CODE")] + public string MANAGE_TYPE_CODE { get; set; } + [Column("MANAGE_STATUS")] + public string MANAGE_STATUS { get; set; } + [Column("STOCK_BARCODE")] + public string STOCK_BARCODE { get; set; } + [Column("START_CELL_ID")] + public int START_CELL_ID { get; set; } + [Column("END_CELL_ID")] + public int END_CELL_ID { get; set; } + [Column("MANAGE_OPERATOR")] + public string MANAGE_OPERATOR { get; set; } + [Column("MANAGE_BEGIN_TIME")] + public string MANAGE_BEGIN_TIME { get; set; } + [Column("MANAGE_END_TIME")] + public string MANAGE_END_TIME { get; set; } + [Column("MANAGE_LEVEL")] + public string MANAGE_LEVEL { get; set; } + [Column("MANAGE_REMARK")] + public string MANAGE_REMARK { get; set; } + [Column("MANAGE_CONFIRM_TIME")] + public string MANAGE_CONFIRM_TIME { get; set; } + //[Column("ERROR_TXT")] + //public string ERROR_TXT { get; set; } + + } +} \ No newline at end of file diff --git a/EFCoreDatabase/Entities/RESERVE_CELL.cs b/EFCoreDatabase/Entities/RESERVE_CELL.cs new file mode 100644 index 0000000..a91573f --- /dev/null +++ b/EFCoreDatabase/Entities/RESERVE_CELL.cs @@ -0,0 +1,41 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace EFCoreDatabase.Entities +{ + [Table("RESERVE_CELL")] + public class RESERVE_CELL + { + /// + /// 自增ID + /// + [Column("ID")] + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int ID { get; set; } + + /// + /// 货位编码 + /// + [Column("CELL_CODE")] + public string CELL_CODE { get; set; } + + /// + /// 货位ID + /// + [Column("CELL_ID")] + public int CELL_ID { get; set; } + + /// + /// 设备编码 + /// + [Column("DEVICE_CODE")] + public string DEVICE_CODE { get; set; } + + /// + /// 标志位 + /// + [Column("FLAG")] + public int FLAG { get; set; } + } +} \ No newline at end of file diff --git a/EFCoreDatabase/Entities/STACKER_CRANE_STATUS.cs b/EFCoreDatabase/Entities/STACKER_CRANE_STATUS.cs new file mode 100644 index 0000000..84c340a --- /dev/null +++ b/EFCoreDatabase/Entities/STACKER_CRANE_STATUS.cs @@ -0,0 +1,22 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace EFCoreDatabase.Entities +{ + public class STACKER_CRANE_STATUS + { + [Column("ID")] + [Key] + public int ID { get; set; } + [Column("StackerCraneName")] + public string StackerCraneName { get; set; } + [Column("OperationalStatus")] + public string OperationalStatus { get; set; } + [Column("TaskId")] + public int TaskId { get; set; } + [Column("Status")] + public string Status { get; set; } + [Column("ErrorMessage")] + public string ErrorMessage { get; set; } + } +} \ No newline at end of file diff --git a/EFCoreDatabase/Entities/STORAGE_LIST.cs b/EFCoreDatabase/Entities/STORAGE_LIST.cs new file mode 100644 index 0000000..52a1cff --- /dev/null +++ b/EFCoreDatabase/Entities/STORAGE_LIST.cs @@ -0,0 +1,101 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace EFCoreDatabase.Entities +{ + [Table("STORAGE_LIST")] + public class STORAGE_LIST + { + [Column("STORAGE_LIST_ID")] + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int STORAGE_LIST_ID { get; set; } + + [Column("STORAGE_ID")] + public int STORAGE_ID { get; set; } + + [Column("STORAGE_LIST_QUANTITY")] + public decimal STORAGE_LIST_QUANTITY { get; set; } + + [Column("GOODS_ID")] + public int GOODS_ID { get; set; } + + [Column("ENTRY_TIME")] + public string ENTRY_TIME { get; set; } + + [Column("UPDATE_TIME")] + public string UPDATE_TIME { get; set; } + + [Column("STORAGE_LIST_REMARK")] + public string STORAGE_LIST_REMARK { get; set; } + + [Column("BOX_BARCODE")] + public string BOX_BARCODE { get; set; } + + [Column("GOODS_PROPERTY1")] + public string GOODS_PROPERTY1 { get; set; } + + [Column("GOODS_PROPERTY2")] + public string GOODS_PROPERTY2 { get; set; } + + [Column("GOODS_PROPERTY3")] + public string GOODS_PROPERTY3 { get; set; } + + [Column("GOODS_PROPERTY4")] + public string GOODS_PROPERTY4 { get; set; } + + [Column("GOODS_PROPERTY5")] + public string GOODS_PROPERTY5 { get; set; } + + [Column("GOODS_PROPERTY6")] + public string GOODS_PROPERTY6 { get; set; } + + [Column("GOODS_PROPERTY7")] + public string GOODS_PROPERTY7 { get; set; } + + [Column("GOODS_PROPERTY8")] + public string GOODS_PROPERTY8 { get; set; } + + [Column("BUCKET_TRANSACTION_NUMBER")] + public string BUCKET_TRANSACTION_NUMBER { get; set; } + + [Column("WEIGHT_EMPTY_BUCKET")] + public decimal WEIGHT_EMPTY_BUCKET { get; set; } + + [Column("WEIGHT_RUBBER")] + public decimal WEIGHT_RUBBER { get; set; } + + [Column("ReturnCode")] + public string ReturnCode { get; set; } + + [Column("ReturnCodeLabel")] + public string ReturnCodeLabel { get; set; } + + [Column("BatchNumber")] + public string BatchNumber { get; set; } + + [Column("ProductCode")] + public string ProductCode { get; set; } + + [Column("ProductFamily")] + public string ProductFamily { get; set; } + + [Column("BaseProductCode")] + public string BaseProductCode { get; set; } + + [Column("MFDCODE")] + public string MFDCODE { get; set; } + + [Column("ItemFabricationDate")] + public string ItemFabricationDate { get; set; } + + [Column("StoreType")] + public string StoreType { get; set; } + + [Column("StoreCode")] + public string StoreCode { get; set; } + + [Column("AddressCode")] + public string AddressCode { get; set; } + } +} \ No newline at end of file diff --git a/EFCoreDatabase/Entities/STORAGE_MAIN.cs b/EFCoreDatabase/Entities/STORAGE_MAIN.cs new file mode 100644 index 0000000..869f680 --- /dev/null +++ b/EFCoreDatabase/Entities/STORAGE_MAIN.cs @@ -0,0 +1,113 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace EFCoreDatabase.Entities +{ + [Table("STORAGE_MAIN")] + public class STORAGE_MAIN + { + [Column("STORAGE_ID")] + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int STORAGE_ID { get; set; } + + [Column("CELL_ID")] + public int CELL_ID { get; set; } + + [Column("STOCK_BARCODE")] + public string STOCK_BARCODE { get; set; } + [Column("STORAGE_REMARK")] + public string STORAGE_REMARK { get; set; } + /// + /// 托盘重量 + /// + [Column("WEIGHT_PALLET")] + public string WEIGHT_PALLET { get; set; } + /// + /// PG CODE + /// + [Column("PG_CODE")] + public string PG_CODE { get; set; } + /// + /// 传输唯一号码 + /// + [Column("TRANSACTION_NUMBER")] + public string TRANSACTION_NUMBER { get; set; } + /// + /// 桶号 + /// + [Column("BUCKET_NUMBER")] + public string BUCKET_NUMBER { get; set; } + /// + /// 桶组号 + /// + [Column("BUCKET_GROUP")] + public string BUCKET_GROUP { get; set; } + /// + /// OperationRequestID + /// + [Column("OperationRequestID")] + public string OperationRequestID { get; set; } + /// + /// OperationToExecuteID + /// + [Column("OperationToExecuteID")] + public string OperationToExecuteID { get; set; } + /// + /// VirtualNameMachinePalletizer + /// + [Column("VirtualNameMachinePalletizer")] + public string VirtualNameMachinePalletizer { get; set; } + /// + /// MFDCode + /// + [Column("MFDCode")] + public string MFDCode { get; set; } + /// + /// MATIND + /// + [Column("MATIND")] + public string MATIND { get; set; } + /// + /// NIP + /// + [Column("NIP")] + public string NIP { get; set; } + /// + /// IMP + /// + [Column("IMP")] + public string IMP { get; set; } + /// + /// ItemIdentification + /// + [Column("ItemIdentification")] + public string ItemIdentification { get; set; } + /// + /// ItemTraceability + /// + [Column("ItemTraceability")] + public string ItemTraceability { get; set; } + /// + /// ItemHdvDate + /// + [Column("ItemHdvDate")] + public string ItemHdvDate { get; set; } + /// + /// ItemHdvTime + /// + [Column("ItemHdvTime")] + public string ItemHdvTime { get; set; } + /// + /// ItemFabricationDate + /// + [Column("ItemFabricationDate")] + public string ItemFabricationDate { get; set; } + /// + /// ItemFabricationTime + /// + [Column("ItemFabricationTime")] + public string ItemFabricationTime { get; set; } + + } +} \ No newline at end of file diff --git a/EFCoreDatabase/Entities/SYS_ITEM.cs b/EFCoreDatabase/Entities/SYS_ITEM.cs new file mode 100644 index 0000000..1291737 --- /dev/null +++ b/EFCoreDatabase/Entities/SYS_ITEM.cs @@ -0,0 +1,32 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace EFCoreDatabase.Entities +{ + [Table("SYS_ITEM")] + public class SYS_ITEM + { + [Column("ITEM_ID")] + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int ITEM_ID { get; set; } + + [Column("ITEM_PARENT_ID")] + public int ITEM_PARENT_ID { get; set; } + + [Column("ITEM_CODE")] + public string ITEM_CODE { get; set; } + + [Column("ITEM_NAME")] + public string ITEM_NAME { get; set; } + + [Column("ITEM_ORDER")] + public int ITEM_ORDER { get; set; } + + [Column("ITEM_REMARK")] + public string ITEM_REMARK { get; set; } + + [Column("ITEM_FLAG")] + public string ITEM_LIST_FLAG { get; set; } + } +} \ No newline at end of file diff --git a/EFCoreDatabase/Entities/SYS_ITEM_LIST.cs b/EFCoreDatabase/Entities/SYS_ITEM_LIST.cs new file mode 100644 index 0000000..def0811 --- /dev/null +++ b/EFCoreDatabase/Entities/SYS_ITEM_LIST.cs @@ -0,0 +1,34 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace EFCoreDatabase.Entities +{ + [Table("SYS_ITEM_LIST")] + public class SYS_ITEM_LIST + { + [Column("ITEM_LIST_ID")] + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int ITEM_LIST_ID { get; set; } + + [Column("ITEM_ID")] + public int ITEM_ID { get; set; } + + [Column("ITEM_LIST_CODE")] + public string ITEM_LIST_CODE { get; set; } + + [Column("ITEM_LIST_NAME")] + public string ITEM_LIST_NAME { get; set; } + + [Column("ITEM_LIST_ORDER")] + public int ITEM_LIST_ORDER { get; set; } + + [Column("ITEM_LIST_REMARK")] + public string ITEM_LIST_REMARK { get; set; } + + [Column("ITEM_LIST_FLAG")] + public string ITEM_LIST_FLAG { get; set; } + [Column("ITEM_LIST_CELL")] + public string ITEM_LIST_CELL { get; set; } + } +} \ No newline at end of file diff --git a/EFCoreDatabase/Entities/V_STORAGE_LIST.cs b/EFCoreDatabase/Entities/V_STORAGE_LIST.cs new file mode 100644 index 0000000..54033ae --- /dev/null +++ b/EFCoreDatabase/Entities/V_STORAGE_LIST.cs @@ -0,0 +1,108 @@ +using System.ComponentModel.DataAnnotations.Schema; + +namespace EFCoreDatabase.Entities +{ + [Table("V_STORAGE_LIST")] + public class V_STORAGE_LIST + { + [Column("CELL_ID")] + public int CELL_ID { get; set; } + [Column("STORAGE_ID")] + public int STORAGE_ID { get; set; } + [Column("STOCK_BARCODE")] + public string STOCK_BARCODE { get; set; } + [Column("STORAGE_LIST_ID")] + public int STORAGE_LIST_ID { get; set; } + [Column("GOODS_ID")] + public int GOODS_ID { get; set; } + [Column("STORAGE_LIST_QUANTITY")] + public decimal STORAGE_LIST_QUANTITY { get; set; } + [Column("ENTRY_TIME")] + public string ENTRY_TIME { get; set; } + [Column("UPDATE_TIME")] + public string UPDATE_TIME { get; set; } + [Column("GOODS_TYPE_ID")] + public int GOODS_TYPE_ID { get; set; } + [Column("GOODS_CLASS_ID")] + public int GOODS_CLASS_ID { get; set; } + [Column("GOODS_CODE")] + public string GOODS_CODE { get; set; } + [Column("GOODS_NAME")] + public string GOODS_NAME { get; set; } + [Column("GOODS_UNITS")] + public string GOODS_UNITS { get; set; } + [Column("RUN_STATUS")] + public string RUN_STATUS { get; set; } + [Column("CELL_STATUS")] + public string CELL_STATUS { get; set; } + [Column("LOGIC_ID")] + public int LOGIC_ID { get; set; } + [Column("CELL_TYPE")] + public string CELL_TYPE { get; set; } + [Column("DEVICE_CODE")] + public string DEVICE_CODE { get; set; } + [Column("CELL_CODE")] + public string CELL_CODE { get; set; } + [Column("CELL_NAME")] + public string CELL_NAME { get; set; } + [Column("AREA_ID")] + public int AREA_ID { get; set; } + [Column("AREA_CODE")] + public string AREA_CODE { get; set; } + [Column("AREA_TYPE")] + public string AREA_TYPE { get; set; } + [Column("WAREHOUSE_ID")] + public int WAREHOUSE_ID { get; set; } + [Column("WAREHOUSE_CODE")] + public string WAREHOUSE_CODE { get; set; } + [Column("WAREHOUSE_NAME")] + public string WAREHOUSE_NAME { get; set; } + [Column("LANE_WAY")] + public string LANE_WAY { get; set; } + [Column("MANAGE_LIST_QUANTITY")] + public decimal MANAGE_LIST_QUANTITY { get; set; } + [Column("CELL_Y")] + public int CELL_Y { get; set; } + [Column("CELL_X")] + public int CELL_X { get; set; } + [Column("CELL_Z")] + public int CELL_Z { get; set; } + [Column("CELL_FORK_TYPE")] + public string CELL_FORK_TYPE { get; set; } + [Column("GOODS_TYPE_NAME")] + public string GOODS_TYPE_NAME { get; set; } + [Column("BUCKET_TRANSACTION_NUMBER")] + public string BUCKET_TRANSACTION_NUMBER { get; set; } + [Column("WEIGHT_EMPTY_BUCKET")] + public decimal WEIGHT_EMPTY_BUCKET { get; set; } + [Column("WEIGHT_RUBBER")] + public decimal WEIGHT_RUBBER { get; set; } + [Column("ReturnCode")] + public string ReturnCode { get; set; } + [Column("ReturnCodeLabel")] + public string ReturnCodeLabel { get; set; } + [Column("BatchNumber")] + public string BatchNumber { get; set; } + [Column("ProductCode")] + public string ProductCode { get; set; } + [Column("ProductFamily")] + public string ProductFamily { get; set; } + [Column("BaseProductCode")] + public string BaseProductCode { get; set; } + [Column("MFDCODE")] + public string MFDCODE { get; set; } + [Column("ItemFabricationDate")] + public string ItemFabricationDate { get; set; } + [Column("StoreType")] + public string StoreType { get; set; } + [Column("StoreCode")] + public string StoreCode { get; set; } + [Column("AddressCode")] + public string AddressCode { get; set; } + [Column("BOX_BARCODE")] + public string BOX_BARCODE { get; set; } + [Column("CELL_GROUP")] + public string CELL_GROUP { get; set; } + + } +} \ No newline at end of file diff --git a/EFCoreDatabase/Entities/WH_CELL.cs b/EFCoreDatabase/Entities/WH_CELL.cs new file mode 100644 index 0000000..acf274f --- /dev/null +++ b/EFCoreDatabase/Entities/WH_CELL.cs @@ -0,0 +1,103 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace EFCoreDatabase.Entities +{ + [Table("WH_CELL")] + public class WH_CELL + { + [Column("CELL_ID")] + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int CELL_ID { get; set; } + + [Column("WAREHOUSE_ID")] + public int WAREHOUSE_ID { get; set; } + + [Column("AREA_ID")] + public int AREA_ID { get; set; } + + [Column("LOGIC_ID")] + public int LOGIC_ID { get; set; } + + [Column("CELL_NAME")] + public string CELL_NAME { get; set; } + + [Column("CELL_CODE")] + public string CELL_CODE { get; set; } + + [Column("CELL_TYPE")] + public string CELL_TYPE { get; set; } + + [Column("DEVICE_CODE")] + public string DEVICE_CODE { get; set; } + + [Column("CELL_Z")] + public int CELL_Z { get; set; } + + [Column("CELL_X")] + public int CELL_X { get; set; } + + [Column("CELL_Y")] + public int CELL_Y { get; set; } + + [Column("CELL_INOUT")] + public string CELL_INOUT { get; set; } + + [Column("CELL_MODEL")] + public string CELL_MODEL { get; set; } + + [Column("CELL_STATUS")] + public string CELL_STATUS { get; set; } + + [Column("RUN_STATUS")] + public string RUN_STATUS { get; set; } + + [Column("CELL_FORK_TYPE")] + public string CELL_FORK_TYPE { get; set; } + + [Column("CELL_LOGICAL_NAME")] + public string CELL_LOGICAL_NAME { get; set; } + + [Column("LANE_WAY")] + public string LANE_WAY { get; set; } + + [Column("CELL_GROUP")] + public string CELL_GROUP { get; set; } + + [Column("SHELF_TYPE")] + public string SHELF_TYPE { get; set; } + + [Column("SHELF_NEIGHBOUR")] + public string SHELF_NEIGHBOUR { get; set; } + + [Column("CELL_STORAGE_TYPE")] + public string CELL_STORAGE_TYPE { get; set; } + + [Column("LOCK_DEVICE_CODE")] + public string LOCK_DEVICE_CODE { get; set; } + + [Column("CELL_WIDTH")] + public int CELL_WIDTH { get; set; } + + [Column("CELL_HEIGHT")] + public int CELL_HEIGHT { get; set; } + + [Column("LOCK_CELL_ID")] + public string LOCK_CELL_ID { get; set; } + + [Column("BELONG_AREA")] + public string BELONG_AREA { get; set; } + + [Column("BELONG_ZCQ_ID")] + public int BELONG_ZCQ_ID { get; set; } + + [Column("CELL_FLAG")] + public string CELL_FLAG { get; set; } + + [Column("CELL_TRANS_FLAG")] + public int CELL_TRANS_FLAG { get; set; } + + + } +} \ No newline at end of file diff --git a/EFCoreDatabase/Repositories/Implement/ControlApplyHisRepository.cs b/EFCoreDatabase/Repositories/Implement/ControlApplyHisRepository.cs new file mode 100644 index 0000000..ae26d21 --- /dev/null +++ b/EFCoreDatabase/Repositories/Implement/ControlApplyHisRepository.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using EFCoreDatabase.Data; +using EFCoreDatabase.Entities; +using EFCoreDatabase.Repositories.Interface; + +namespace EFCoreDatabase.Repositories.Implement +{ + public class ControlApplyHisRepository : IControlHisRepository + { + private readonly DmDBContext _context; + + public ControlApplyHisRepository(DmDBContext context) + { + _context = context; + } + + public bool AddIoControlApplyHis(IO_CONTROL_APPLY_HIS io_control_apply_his) + { + if(io_control_apply_his == null) + { + throw new ArgumentNullException(nameof(io_control_apply_his)); + } + + _context.Io_Control_Apply_His.Add(io_control_apply_his); + _context.SaveChanges(); + return true; + } + } +} diff --git a/EFCoreDatabase/Repositories/Implement/ControlRepository.cs b/EFCoreDatabase/Repositories/Implement/ControlRepository.cs new file mode 100644 index 0000000..93de733 --- /dev/null +++ b/EFCoreDatabase/Repositories/Implement/ControlRepository.cs @@ -0,0 +1,72 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using EFCoreDatabase.Data; +using EFCoreDatabase.Entities; +using EFCoreDatabase.Repositories.Interface; +using Microsoft.Extensions.Logging; +using Newtonsoft.Json; + +namespace EFCoreDatabase.Repositories.Implement +{ + public class ControlRepository : IControlRepository + { + private readonly DmDBContext _context; + private readonly ILogger _logger; + public ControlRepository(DmDBContext context, ILogger logger) + { + _context = context; + _logger = logger; + } + + public List GetControlRoutes(string startCode, string endCode) + { + if (string.IsNullOrEmpty(startCode) || string.IsNullOrEmpty(endCode)) + { + throw new ArgumentNullException(nameof(GetControlRoutes)); + } + + var routers = _context.Io_Control_Routes.Where(x => + x.START_DEVICE == startCode && x.END_DEVICE == endCode && x.CONTROL_ROUTE_STATUS == 1).ToList(); + return routers; + } + + public IO_CONTROL GetIoControl(int manageId) + { + if (manageId == 0) + { + throw new ArgumentNullException(nameof(GetIoControl)); + } + + var control = _context.Io_Control.FirstOrDefault(x => x.MANAGE_ID == manageId); + return control; + + } + + public bool AddIoControl(IO_CONTROL ioControl) + { + try + { + if (ioControl == null) + { + throw new ArgumentNullException(nameof(ioControl)); + } + + _context.Io_Control.Add(ioControl); + _context.SaveChanges(); + //tlt20231212:目的是为了对当前的 + _logger.LogInformation($"Catch IO_CONTROL INFO ({ioControl.STOCK_BARCODE}|{ioControl.CELL_GROUP}|{ioControl.UNLOADING_TASK_COUNT});"); + + return true; + } + catch (Exception e) + { + if (ioControl != null) _logger.LogError($"插入io_control数据出现问题:桶信息:{ioControl.CELL_GROUP};错误信息:{e.Message}"); + throw; + } + + + + } + } +} \ No newline at end of file diff --git a/EFCoreDatabase/Repositories/Implement/GoodsRepository.cs b/EFCoreDatabase/Repositories/Implement/GoodsRepository.cs new file mode 100644 index 0000000..0f383e4 --- /dev/null +++ b/EFCoreDatabase/Repositories/Implement/GoodsRepository.cs @@ -0,0 +1,51 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using EFCoreDatabase.Data; +using EFCoreDatabase.Entities; +using EFCoreDatabase.Repositories.Interface; + +namespace EFCoreDatabase.Repositories.Implement +{ + public class GoodsRepository:IGoodsRepository + { + private readonly DmDBContext _context; + + public GoodsRepository(DmDBContext context) + { + _context = context; + } + + /// + /// 获取goodsMain + /// + /// + /// + public GOODS_MAIN GetGoodsMain(string goodsCode) + { + var goodsMain = _context.Goods_Main.FirstOrDefault(x => x.GOODS_CODE == goodsCode); + + return goodsMain; + } + + public List GetGoodsMains() + { + var goodsMains = _context.Goods_Main.Where(x=>x.GOODS_ID>3).ToList(); + return goodsMains; + } + + public bool AddGoodsMain(GOODS_MAIN goodsMain) + { + if (goodsMain == null) + { + throw new ArgumentNullException(nameof(goodsMain)); + } + + _context.Goods_Main.Add(goodsMain); + _context.SaveChanges(); + return true; + + } + } +} diff --git a/EFCoreDatabase/Repositories/Implement/ManageRepository.cs b/EFCoreDatabase/Repositories/Implement/ManageRepository.cs new file mode 100644 index 0000000..9bcdfd7 --- /dev/null +++ b/EFCoreDatabase/Repositories/Implement/ManageRepository.cs @@ -0,0 +1,170 @@ +using System; +using System.Collections.Generic; +using EFCoreDatabase.Data; +using EFCoreDatabase.Entities; +using System.Linq; +using System.Security.Cryptography.X509Certificates; +using System.Threading.Tasks; +using EFCoreDatabase.Repositories.Interface; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Logging; +using Newtonsoft.Json; + +namespace EFCoreDatabase.Repositories.Implement +{ + public class ManageRepository : IManageRepository + { + private readonly DmDBContext _context; + private readonly ILogger _logger; + /// + /// 构造函数 + /// + /// + public ManageRepository(DmDBContext context, ILogger logger) + { + _context = context; + _logger = logger; + } + + /// + /// 获取管理任务信息 + /// + /// 查询类型 + /// 筛选信息 + /// + public MANAGE_MAIN GetManageMain(string type, string filterInfo) + { + MANAGE_MAIN manageMain; + switch (type) + { + //托盘号 + case "stockBarcode": + manageMain = _context.Manage_Main.FirstOrDefault(x => x.STOCK_BARCODE == filterInfo); + break; + + //默认选项是托盘号 + default: + manageMain = _context.Manage_Main.FirstOrDefault(x => x.STOCK_BARCODE == filterInfo); + break; + } + + return manageMain; + } + + public List GetManageMains() + { + //var manageManageLists = _context.Manage_Main.ToList(); + var manageManageLists = _context.Manage_Main.FromSqlRaw("select * from MANAGE_MAIN").ToList(); + return manageManageLists; + } + + /// + /// 添加manageMain + /// + /// + /// + /// + public bool AddManageMain(MANAGE_MAIN manageMain, out int manageId) + { + try + { + manageId = 0; + if (manageMain == null) + { + + return false; + } + _context.Manage_Main.Add(manageMain); + _context.SaveChanges(); + _logger.LogInformation($"Catch Manage main info({manageMain.STOCK_BARCODE}|);"); + var managemain = _context.Manage_Main.Where(x => x.STOCK_BARCODE == manageMain.STOCK_BARCODE).AsNoTracking().FirstOrDefault(); + if (managemain != null) + { + manageId = managemain.MANAGE_ID; + _logger.LogInformation($"manageMain bucket group number before:; manageMain bucket group number after:"); + } + return true; + } + catch (Exception e) + { + if (manageMain != null) _logger.LogError($"插入main数据出现问题:桶信息:{manageMain.STOCK_BARCODE};错误信息:{e.Message}"); + throw; + } + } + + public bool UpdateManageMain(MANAGE_MAIN manageMain) + { + if (manageMain == null || manageMain.MANAGE_ID == 0) + { + throw new ArgumentNullException(nameof(UpdateManageMain)); + } + _context.Manage_Main.Update(manageMain); + _context.SaveChanges(); + return true; + + } + + public bool UpdateManageList(MANAGE_LIST manageList) + { + if (manageList == null || manageList.MANAGE_LIST_ID == 0) + { + throw new ArgumentNullException(nameof(UpdateManageMain)); + } + + _context.Manage_List.Update(manageList); + _context.SaveChanges(); + return true; + + } + + /// + /// 删除主任务 + /// + /// + /// + public void DeleteManageMain(MANAGE_MAIN manageMain) + { + if (manageMain == null) + { + throw new ArgumentNullException(nameof(manageMain)); + } + _context.Manage_Main.Remove(manageMain); + _context.SaveChanges(); + + } + + public List GetManageList(int manageId) + { + if (manageId == 0) + { + throw new ArgumentNullException(nameof(manageId)); + } + + return _context.Manage_List.Where(x => x.MANAGE_ID == manageId).ToList(); + + } + + public bool AddManageList(MANAGE_LIST manageList) + { + try + { + if (manageList == null) + { + throw new ArgumentNullException(nameof(manageList)); + } + + _context.Manage_List.Add(manageList); + _context.SaveChanges(); + + _logger.LogInformation($"Catch Manage list info({manageList.MANAGE_ID}|{manageList.BOX_BARCODE});"); + return true; + } + catch (Exception e) + { + if (manageList != null) _logger.LogError($"插入list数据出现问题:桶信息:{manageList.BUCKET_TRANSACTION_NUMBER};错误信息:{e.Message}"); + throw; + } + + } + } +} \ No newline at end of file diff --git a/EFCoreDatabase/Repositories/Implement/StorageRepository.cs b/EFCoreDatabase/Repositories/Implement/StorageRepository.cs new file mode 100644 index 0000000..f03415b --- /dev/null +++ b/EFCoreDatabase/Repositories/Implement/StorageRepository.cs @@ -0,0 +1,104 @@ +using System; +using System.Collections.Generic; +using EFCoreDatabase.Data; +using EFCoreDatabase.Entities; +using System.Linq; +using System.Security.Cryptography.X509Certificates; +using EFCoreDatabase.Repositories.Interface; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Design; + +namespace EFCoreDatabase.Repositories.Implement +{ + public class StorageRepository:IStorageRepository + { + private readonly DmDBContext _context; + public StorageRepository(DmDBContext context) + { + _context = context; + } + + public STORAGE_MAIN GetStorageMain(int storageId) + { + var storageMain = _context.Storage_Main.FirstOrDefault(x => x.STORAGE_ID == storageId); + return storageMain; + } + + public STORAGE_MAIN GetStorageMainByBucket(string bucketNumber) + { + var storageMain = _context.Storage_Main.FirstOrDefault(x => x.STOCK_BARCODE == bucketNumber); + return storageMain; + } + + /// + /// 获取当前序列号的库存信息 + /// + /// + /// + public List GetStorageLists(List serialList) + { + //获取当前序列号的库存信息,存在立体库中,并且未被出库; + var storageLists = + _context.V_Storage_List.Where(x => + serialList.Contains(x.BUCKET_TRANSACTION_NUMBER) && x.CELL_STATUS == "Full" && + x.RUN_STATUS == "Enable").OrderBy(x=>x.CELL_FORK_TYPE).ToList(); + + return storageLists; + + } + + public V_STORAGE_LIST GetVStorageList(string serialNumber) + { + var vStorageList = _context.V_Storage_List.FirstOrDefault(x => + x.BUCKET_TRANSACTION_NUMBER == serialNumber); + return vStorageList; + } + + /// + /// 检查当前序列号的桶是否在库位上 + /// + /// + /// + public STORAGE_MAIN GetStorageMainBySerialNumber(string serialNumber) + { + //bucket库存的面中的传输号就是bucket的传输号,并且该桶存放于货位上 + var storageMain = _context.Storage_Main.FirstOrDefault(x => x.TRANSACTION_NUMBER == serialNumber && _context.Wh_Cell.FirstOrDefault(y=>y.CELL_ID == x.CELL_ID && y.AREA_ID ==1)!=null); + return storageMain; + } + + public STORAGE_MAIN GetStorageMainByCellId(int cellId) + { + var storageMain = _context.Storage_Main.FirstOrDefault(x => x.CELL_ID == cellId); + return storageMain; + } + + public STORAGE_LIST GetStorageList(string boxBarcode) + { + var storageList = _context.Storage_List.FirstOrDefault(x => x.BOX_BARCODE == boxBarcode); + + return storageList; + + } + + public List GetStorageLists(int storage_id) + { + var storagelists = _context.Storage_List.Where(x => x.STORAGE_ID == storage_id).ToList(); + + return storagelists; + + } + + public void UpdateStorageList(STORAGE_LIST storageList) + { + if (storageList == null) + { + throw new ArgumentNullException(nameof(storageList)); + } + + _context.Storage_List.Update(storageList); + _context.SaveChanges(); + + } + + } +} \ No newline at end of file diff --git a/EFCoreDatabase/Repositories/Implement/SysItemRepository.cs b/EFCoreDatabase/Repositories/Implement/SysItemRepository.cs new file mode 100644 index 0000000..0152289 --- /dev/null +++ b/EFCoreDatabase/Repositories/Implement/SysItemRepository.cs @@ -0,0 +1,30 @@ +using EFCoreDatabase.Data; +using EFCoreDatabase.Entities; +using System.Linq; +using EFCoreDatabase.Repositories.Interface; + +namespace EFCoreDatabase.Repositories.Implement +{ + public class SysItemRepository: ISysItemRepository + { + private readonly DmDBContext _context; + + public SysItemRepository(DmDBContext context) + { + _context = context; + } + + public SYS_ITEM GetSysItem(string itemCode) + { + var sysItem = _context.Sys_Item.FirstOrDefault(x => x.ITEM_CODE == itemCode); + + return sysItem; + } + + public SYS_ITEM_LIST GetSysItemList(string itemListCode) + { + var sysItemList = _context.Sys_Item_List.FirstOrDefault(x => x.ITEM_LIST_CODE == itemListCode); + return sysItemList; + } + } +} \ No newline at end of file diff --git a/EFCoreDatabase/Repositories/Implement/WhCellRepository.cs b/EFCoreDatabase/Repositories/Implement/WhCellRepository.cs new file mode 100644 index 0000000..c9ae40a --- /dev/null +++ b/EFCoreDatabase/Repositories/Implement/WhCellRepository.cs @@ -0,0 +1,39 @@ +using System; +using EFCoreDatabase.Data; +using EFCoreDatabase.Entities; +using System.Linq; +using EFCoreDatabase.Repositories.Interface; + +namespace EFCoreDatabase.Repositories.Implement +{ + public class WhCellRepository:IWhCellRepository + { + private readonly DmDBContext _context; + + public WhCellRepository(DmDBContext context) + { + _context = context; + } + + public WH_CELL GetCell(int cellId) + { + var cell = _context.Wh_Cell.First(x => x.CELL_ID == cellId); + return cell; + } + + + + public bool UpdateCellStatus(WH_CELL whCell) + { + if (whCell == null) + { + throw new ArgumentNullException(nameof(whCell)); + } + + _context.Wh_Cell.Update(whCell); + _context.SaveChanges(); + return true; + + } + } +} \ No newline at end of file diff --git a/EFCoreDatabase/Repositories/Interface/IControlHisRepository.cs b/EFCoreDatabase/Repositories/Interface/IControlHisRepository.cs new file mode 100644 index 0000000..52dc549 --- /dev/null +++ b/EFCoreDatabase/Repositories/Interface/IControlHisRepository.cs @@ -0,0 +1,10 @@ +using System.Collections.Generic; +using EFCoreDatabase.Entities; + +namespace EFCoreDatabase.Repositories.Interface +{ + public interface IControlHisRepository + { + public bool AddIoControlApplyHis(IO_CONTROL_APPLY_HIS io_control_apply_his); + } +} diff --git a/EFCoreDatabase/Repositories/Interface/IControlRepository.cs b/EFCoreDatabase/Repositories/Interface/IControlRepository.cs new file mode 100644 index 0000000..9e75431 --- /dev/null +++ b/EFCoreDatabase/Repositories/Interface/IControlRepository.cs @@ -0,0 +1,14 @@ +using System.Collections.Generic; +using EFCoreDatabase.Entities; + +namespace EFCoreDatabase.Repositories.Interface +{ + public interface IControlRepository + { + public List GetControlRoutes(string startCode, string endCode); + + public IO_CONTROL GetIoControl(int manageId); + + public bool AddIoControl(IO_CONTROL ioControl); + } +} \ No newline at end of file diff --git a/EFCoreDatabase/Repositories/Interface/IGoodsRepository.cs b/EFCoreDatabase/Repositories/Interface/IGoodsRepository.cs new file mode 100644 index 0000000..ae6c1e3 --- /dev/null +++ b/EFCoreDatabase/Repositories/Interface/IGoodsRepository.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using EFCoreDatabase.Entities; + +namespace EFCoreDatabase.Repositories.Interface +{ + + public interface IGoodsRepository + { + public GOODS_MAIN GetGoodsMain(string goodsCode); + + public bool AddGoodsMain(GOODS_MAIN goodsMain); + + public List GetGoodsMains(); + } +} diff --git a/EFCoreDatabase/Repositories/Interface/IManageRepository.cs b/EFCoreDatabase/Repositories/Interface/IManageRepository.cs new file mode 100644 index 0000000..556a688 --- /dev/null +++ b/EFCoreDatabase/Repositories/Interface/IManageRepository.cs @@ -0,0 +1,20 @@ +using System.Collections.Generic; +using System.Threading.Tasks; +using EFCoreDatabase.Entities; + +namespace EFCoreDatabase.Repositories.Interface +{ + public interface IManageRepository + { + public MANAGE_MAIN GetManageMain(string type, string filterInfo); + public bool AddManageMain(MANAGE_MAIN manageMain, out int manageId); + public bool UpdateManageMain(MANAGE_MAIN manageMain); + + public bool UpdateManageList(MANAGE_LIST manageList); + + public void DeleteManageMain(MANAGE_MAIN manageMain); + public List GetManageList(int manageId); + public bool AddManageList(MANAGE_LIST manageList); + public List GetManageMains(); + } +} \ No newline at end of file diff --git a/EFCoreDatabase/Repositories/Interface/IStorageRepository.cs b/EFCoreDatabase/Repositories/Interface/IStorageRepository.cs new file mode 100644 index 0000000..17d6c44 --- /dev/null +++ b/EFCoreDatabase/Repositories/Interface/IStorageRepository.cs @@ -0,0 +1,18 @@ +using System.Collections.Generic; +using EFCoreDatabase.Entities; + +namespace EFCoreDatabase.Repositories.Interface +{ + public interface IStorageRepository + { + public STORAGE_MAIN GetStorageMain(int storageId); + public STORAGE_MAIN GetStorageMainByBucket(string bucketNumber); + public List GetStorageLists(List serialList); + public V_STORAGE_LIST GetVStorageList(string seialNumber); + public STORAGE_MAIN GetStorageMainBySerialNumber(string serialNumber); + public STORAGE_MAIN GetStorageMainByCellId(int cellId); + public STORAGE_LIST GetStorageList(string boxBarcode); + public List GetStorageLists(int storage_id); + public void UpdateStorageList(STORAGE_LIST storageList); + } +} \ No newline at end of file diff --git a/EFCoreDatabase/Repositories/Interface/ISysItemRepository.cs b/EFCoreDatabase/Repositories/Interface/ISysItemRepository.cs new file mode 100644 index 0000000..b43a945 --- /dev/null +++ b/EFCoreDatabase/Repositories/Interface/ISysItemRepository.cs @@ -0,0 +1,10 @@ +using EFCoreDatabase.Entities; + +namespace EFCoreDatabase.Repositories.Interface +{ + public interface ISysItemRepository + { + public SYS_ITEM GetSysItem(string itemCode); + public SYS_ITEM_LIST GetSysItemList(string itemListCode); + } +} \ No newline at end of file diff --git a/EFCoreDatabase/Repositories/Interface/IWhCellRepository.cs b/EFCoreDatabase/Repositories/Interface/IWhCellRepository.cs new file mode 100644 index 0000000..08f72be --- /dev/null +++ b/EFCoreDatabase/Repositories/Interface/IWhCellRepository.cs @@ -0,0 +1,10 @@ +using EFCoreDatabase.Entities; + +namespace EFCoreDatabase.Repositories.Interface +{ + public interface IWhCellRepository + { + public WH_CELL GetCell(int cellId); + public bool UpdateCellStatus(WH_CELL whCell); + } +} \ No newline at end of file diff --git a/NewProjectApp.sln b/NewProjectApp.sln new file mode 100644 index 0000000..c10e694 --- /dev/null +++ b/NewProjectApp.sln @@ -0,0 +1,34 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.12.35527.113 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NewWMSProject", "NewWMSProject\src\NewWMSProject\NewWMSProject.csproj", "{FE560437-1CE9-4460-AA7F-FECE5ACD80F1}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NewWMSProject.Client", "NewWMSProject\src\NewWMSProject.Client\NewWMSProject.Client.csproj", "{4CB50B37-E929-4594-A2C3-DDBE0130E27A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EFCoreDatabase", "EFCoreDatabase\EFCoreDatabase.csproj", "{4F4AB9A0-0A0F-4DDC-AB03-D7F04244EE01}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {FE560437-1CE9-4460-AA7F-FECE5ACD80F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FE560437-1CE9-4460-AA7F-FECE5ACD80F1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FE560437-1CE9-4460-AA7F-FECE5ACD80F1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FE560437-1CE9-4460-AA7F-FECE5ACD80F1}.Release|Any CPU.Build.0 = Release|Any CPU + {4CB50B37-E929-4594-A2C3-DDBE0130E27A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4CB50B37-E929-4594-A2C3-DDBE0130E27A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4CB50B37-E929-4594-A2C3-DDBE0130E27A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4CB50B37-E929-4594-A2C3-DDBE0130E27A}.Release|Any CPU.Build.0 = Release|Any CPU + {4F4AB9A0-0A0F-4DDC-AB03-D7F04244EE01}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4F4AB9A0-0A0F-4DDC-AB03-D7F04244EE01}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4F4AB9A0-0A0F-4DDC-AB03-D7F04244EE01}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4F4AB9A0-0A0F-4DDC-AB03-D7F04244EE01}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/NewWMSProject/Directory.Build.props b/NewWMSProject/Directory.Build.props new file mode 100644 index 0000000..3baeabe --- /dev/null +++ b/NewWMSProject/Directory.Build.props @@ -0,0 +1,9 @@ + + + + + + $(MSBuildThisFileDirectory) + + diff --git a/NewWMSProject/NewWMSProject.sln b/NewWMSProject/NewWMSProject.sln new file mode 100644 index 0000000..0934f6b --- /dev/null +++ b/NewWMSProject/NewWMSProject.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.11.35005.142 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NewWMSProject", "src\NewWMSProject\NewWMSProject.csproj", "{B5934F21-93C6-46BA-B25D-C2D3B62EDCFC}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NewWMSProject.Client", "src\NewWMSProject.Client\NewWMSProject.Client.csproj", "{21B555E8-4868-4C61-A487-269C436022FF}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {B5934F21-93C6-46BA-B25D-C2D3B62EDCFC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B5934F21-93C6-46BA-B25D-C2D3B62EDCFC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B5934F21-93C6-46BA-B25D-C2D3B62EDCFC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B5934F21-93C6-46BA-B25D-C2D3B62EDCFC}.Release|Any CPU.Build.0 = Release|Any CPU + {21B555E8-4868-4C61-A487-269C436022FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {21B555E8-4868-4C61-A487-269C436022FF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {21B555E8-4868-4C61-A487-269C436022FF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {21B555E8-4868-4C61-A487-269C436022FF}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {B32E6C35-9526-404C-93D0-5026FD1E48B8} + EndGlobalSection +EndGlobal diff --git a/NewWMSProject/README.md b/NewWMSProject/README.md new file mode 100644 index 0000000..bfb0403 --- /dev/null +++ b/NewWMSProject/README.md @@ -0,0 +1 @@ +# NewWMSProject \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Components/GlobalHeader/RightContent.razor b/NewWMSProject/src/NewWMSProject.Client/Components/GlobalHeader/RightContent.razor new file mode 100644 index 0000000..341b44c --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Components/GlobalHeader/RightContent.razor @@ -0,0 +1,52 @@ +@namespace NewWMSProject.Components +@inherits AntDomComponentBase + + + @* + + *@ + @* + + + + + + + + *@ + @* + + + + + + *@ + + + + + + + diff --git a/NewWMSProject/src/NewWMSProject.Client/Components/GlobalHeader/RightContent.razor.cs b/NewWMSProject/src/NewWMSProject.Client/Components/GlobalHeader/RightContent.razor.cs new file mode 100644 index 0000000..a0a02ed --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Components/GlobalHeader/RightContent.razor.cs @@ -0,0 +1,125 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Threading.Tasks; +using AntDesign; +using AntDesign.Extensions.Localization; +using AntDesign.ProLayout; +using Microsoft.AspNetCore.Components; +using Microsoft.Extensions.Localization; +using NewWMSProject.Models; +using NewWMSProject.Services; + +namespace NewWMSProject.Components +{ + public partial class RightContent + { + private CurrentUser _currentUser = new CurrentUser(); + private NoticeIconData[] _notifications = { }; + private NoticeIconData[] _messages = { }; + private NoticeIconData[] _events = { }; + private int _count = 0; + + private List> DefaultOptions { get; set; } = new List> + { + new AutoCompleteDataItem + { + Label = "umi ui", + Value = "umi ui" + }, + new AutoCompleteDataItem + { + Label = "Pro Table", + Value = "Pro Table" + }, + new AutoCompleteDataItem + { + Label = "Pro Layout", + Value = "Pro Layout" + } + }; + + private AvatarMenuItem[] AvatarMenuItems => + [ + new() { Key = "center", IconType = "user", Option = L["menu.account.center"]}, + new() { Key = "setting", IconType = "setting", Option = L["menu.account.settings"] }, + new() { IsDivider = true }, + new() { Key = "logout", IconType = "logout", Option = L["menu.account.logout"]} + ]; + + [Inject] protected NavigationManager NavigationManager { get; set; } + + [Inject] protected IUserService UserService { get; set; } + [Inject] protected IProjectService ProjectService { get; set; } + [Inject] protected MessageService MessageService { get; set; } + + [Inject] private IStringLocalizer L { get; set; } + [Inject] private ILocalizationService LocalizationService { get; set; } + + protected override async Task OnInitializedAsync() + { + await base.OnInitializedAsync(); + SetClassMap(); + _currentUser = await UserService.GetCurrentUserAsync(); + var notices = await ProjectService.GetNoticesAsync(); + _notifications = notices.Where(x => x.Type == "notification").Cast().ToArray(); + _messages = notices.Where(x => x.Type == "message").Cast().ToArray(); + _events = notices.Where(x => x.Type == "event").Cast().ToArray(); + _count = notices.Length; + } + + protected void SetClassMap() + { + ClassMapper + .Clear() + .Add("right"); + } + + public void HandleSelectUser(MenuItem item) + { + switch (item.Key) + { + case "center": + NavigationManager.NavigateTo("/account/center"); + break; + case "setting": + NavigationManager.NavigateTo("/account/settings"); + break; + case "logout": + NavigationManager.NavigateTo("/"); + break; + } + } + + public void HandleSelectLang(MenuItem item) + { + LocalizationService.SetLanguage(CultureInfo.GetCultureInfo(item.Key)); + } + + public async Task HandleClear(string key) + { + switch (key) + { + case "notification": + _notifications = new NoticeIconData[] { }; + break; + case "message": + _messages = new NoticeIconData[] { }; + break; + case "event": + _events = new NoticeIconData[] { }; + break; + } + await MessageService.Success($"清空了{key}"); + } + + public async Task HandleViewMore(string key) + { + await MessageService.Info("Click on view more"); + } + + + + } +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Extensions/DateTimeExtension.cs b/NewWMSProject/src/NewWMSProject.Client/Extensions/DateTimeExtension.cs new file mode 100644 index 0000000..31bd959 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Extensions/DateTimeExtension.cs @@ -0,0 +1,62 @@ +using System; + +namespace NewWMSProject +{ + public static class DateTimeExtension + { + private const int Second = 1; + private const int Minute = 60 * Second; + private const int Hour = 60 * Minute; + private const int Day = 24 * Hour; + private const int Month = 30 * Day; + + // todo: Need to be localized + public static string ToFriendlyDisplay(this DateTime dateTime) + { + var ts = DateTime.Now - dateTime; + var delta = ts.TotalSeconds; + if (delta < 0) + { + return "not yet"; + } + if (delta < 1 * Minute) + { + return ts.Seconds == 1 ? "1 second ago" : ts.Seconds + " seconds ago"; + } + if (delta < 2 * Minute) + { + return "1 minute ago"; + } + if (delta < 45 * Minute) + { + return ts.Minutes + "minute"; + } + if (delta < 90 * Minute) + { + return "1 hour ago"; + } + if (delta < 24 * Hour) + { + return ts.Hours + " hours ago"; + } + if (delta < 48 * Hour) + { + return "yesterday"; + } + if (delta < 30 * Day) + { + return ts.Days + " days ago"; + } + if (delta < 12 * Month) + { + var months = Convert.ToInt32(Math.Floor((double)ts.Days / 30)); + return months <= 1 ? "A month ago" : months + " months ago"; + } + else + { + var years = Convert.ToInt32(Math.Floor((double)ts.Days / 365)); + return years <= 1 ? "a year ago" : years + " years ago"; + } + } + } +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/GlobalUsings.cs b/NewWMSProject/src/NewWMSProject.Client/GlobalUsings.cs new file mode 100644 index 0000000..3b8315b --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/GlobalUsings.cs @@ -0,0 +1,2 @@ +global using AntDesign; +global using NewWMSProject.Client.Resources; diff --git a/NewWMSProject/src/NewWMSProject.Client/Layouts/BasicLayout.razor b/NewWMSProject/src/NewWMSProject.Client/Layouts/BasicLayout.razor new file mode 100644 index 0000000..80fda3c --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Layouts/BasicLayout.razor @@ -0,0 +1,51 @@ +@namespace NewWMSProject.Layouts +@inherits LayoutComponentBase + + + + + + + + + + + + + + + + + + + + + + + + + +@code{ + bool collapsed; + + public LinkItem[] Links = + { + new LinkItem + { + Key = "Blazor", + Title = "Blazor", + Href = "https://dotnet.microsoft.com/apps/aspnet/web-apps/blazor?WT.mc_id=DT-MVP-5003987", + BlankTarget = true, + } + }; + + void Toggle() + { + collapsed = !collapsed; + } + +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Layouts/BasicLayout.razor.cs b/NewWMSProject/src/NewWMSProject.Client/Layouts/BasicLayout.razor.cs new file mode 100644 index 0000000..6bd3f9f --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Layouts/BasicLayout.razor.cs @@ -0,0 +1,97 @@ +using System.Globalization; +using System.Net.Http.Json; +using AntDesign.Extensions.Localization; +using AntDesign.ProLayout; +using Microsoft.AspNetCore.Components; + +namespace NewWMSProject.Layouts +{ + public partial class BasicLayout : LayoutComponentBase, IDisposable + { + private MenuDataItem[] _menuData; + + [Inject] private ReuseTabsService TabService { get; set; } + + protected override async Task OnInitializedAsync() + { + _menuData = new[] { + new MenuDataItem + { + Path = "/Welcome", + Name = "欢迎页面", + Key = "welcome", + Icon = "smile", + }, + new MenuDataItem + { + Path = "/material", + Name = "物料信息", + Key = "material", + Icon = "task", + Children = new MenuDataItem[] + { + new MenuDataItem + { + Path = "/material/main_material", + Name = "主数据", + Key = "main_material" + } + } + + + }, + new MenuDataItem + { + Path = "/TaskInfo", + Name = "任务管理", + Key = "TaskInfo", + Icon = "task", + Children = new MenuDataItem[] + { + new MenuDataItem + { + Path = "/Welcome", + Name = "欢迎页面", + Key = "welcome" + } + } + + + }, + new MenuDataItem + { + Path = "/account", + Name = "权限管理", + Key = "account", + Icon = "user", + Children = new MenuDataItem[] + { + new MenuDataItem + { + Path = "/account/center", + Name = "个人中心", + Key = "account.center" + }, + new MenuDataItem + { + Path = "/account/settings", + Name = "权限设置", + Key = "account.settings" + } + } + } + }; + } + + void Reload() + { + TabService.ReloadPage(); + } + + public void Dispose() + { + + } + + } +} diff --git a/NewWMSProject/src/NewWMSProject.Client/Layouts/UserLayout.razor b/NewWMSProject/src/NewWMSProject.Client/Layouts/UserLayout.razor new file mode 100644 index 0000000..6597451 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Layouts/UserLayout.razor @@ -0,0 +1,50 @@ +@namespace NewWMSProject.Layouts +@using OneOf +@inherits LayoutComponentBase + +
+
+ +
+
+
+ +
Ant Design Blazor
+
+ @Body +
+ +
+ +@code +{ + public LinkItem[] Links { get; set; } = + { + new LinkItem + { + Key = "Ant Design Blazor", + Title = "Ant Design Blazor", + Href = "https://antblazor.com", + BlankTarget = true, + }, + new LinkItem + { + Key = "github", + Title = (RenderFragment)(@), + Href = "https://github.com/ant-design-blazor/ant-design-pro-blazor", + BlankTarget = true, + }, + new LinkItem + { + Key = "Blazor", + Title = "Blazor", + Href = "https://dotnet.microsoft.com/apps/aspnet/web-apps/blazor?WT.mc_id=DT-MVP-5003987", + BlankTarget = true, + } + }; +} diff --git a/NewWMSProject/src/NewWMSProject.Client/Layouts/UserLayout.razor.css b/NewWMSProject/src/NewWMSProject.Client/Layouts/UserLayout.razor.css new file mode 100644 index 0000000..1dcd3a6 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Layouts/UserLayout.razor.css @@ -0,0 +1,64 @@ +/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ +/* stylelint-disable no-duplicate-selectors */ +/* stylelint-disable */ +/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ +.container__b__0 { + display: flex; + flex-direction: column; + height: 100vh; + overflow: auto; + background: #f0f2f5; +} +.container__b__0 .lang { + width: 100%; + height: 40px; + line-height: 44px; + text-align: right; +} +.container__b__0 .lang :global(.ant-dropdown-trigger) { + margin-right: 24px; +} +.container__b__0 .content { + flex: 1; + padding: 32px 0; +} +.container__b__0 .top { + text-align: center; +} +.container__b__0 .header { + height: 44px; + line-height: 44px; +} +.container__b__0 .header a { + text-decoration: none; +} +.container__b__0 .logo { + height: 44px; + margin-right: 16px; + vertical-align: top; +} +.container__b__0 .title { + position: relative; + top: 2px; + color: rgba(0, 0, 0, 0.85); + font-weight: 600; + font-size: 33px; + font-family: Avenir, 'Helvetica Neue', Arial, Helvetica, sans-serif; +} +.container__b__0 .desc { + margin-top: 12px; + margin-bottom: 40px; + color: rgba(0, 0, 0, 0.45); + font-size: 14px; +} +@media (min-width: 768px) { + .container__b__0 { + background-image: url('https://gw.alipayobjects.com/zos/rmsportal/TVYTbAXWheQpRcWDaDMu.svg'); + background-repeat: no-repeat; + background-position: center 110px; + background-size: 100%; + } + .container__b__0 .content { + padding: 32px 0 24px; + } +} diff --git a/NewWMSProject/src/NewWMSProject.Client/Models/ActivitiesType.cs b/NewWMSProject/src/NewWMSProject.Client/Models/ActivitiesType.cs new file mode 100644 index 0000000..35e1181 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Models/ActivitiesType.cs @@ -0,0 +1,14 @@ +using System; + +namespace NewWMSProject.Models +{ + public class ActivitiesType + { + public string Id { get; set; } + public DateTime UpdatedAt { get; set; } + public ActivityUser User { get; set; } + public ActivityGroup Group { get; set; } + public ActivityProject Project { get; set; } + public string Template { get; set; } + } +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Models/ActivityGroup.cs b/NewWMSProject/src/NewWMSProject.Client/Models/ActivityGroup.cs new file mode 100644 index 0000000..8c79859 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Models/ActivityGroup.cs @@ -0,0 +1,8 @@ +namespace NewWMSProject.Models +{ + public class ActivityGroup + { + public string Name { get; set; } + public string Link { get; set; } + } +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Models/ActivityProject.cs b/NewWMSProject/src/NewWMSProject.Client/Models/ActivityProject.cs new file mode 100644 index 0000000..98e230f --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Models/ActivityProject.cs @@ -0,0 +1,8 @@ +namespace NewWMSProject.Models +{ + public class ActivityProject + { + public string Name { get; set; } + public string Link { get; set; } + } +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Models/ActivityUser.cs b/NewWMSProject/src/NewWMSProject.Client/Models/ActivityUser.cs new file mode 100644 index 0000000..96f31dc --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Models/ActivityUser.cs @@ -0,0 +1,8 @@ +namespace NewWMSProject.Models +{ + public class ActivityUser + { + public string Name { get; set; } + public string Avatar { get; set; } + } +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Models/AdvancedOperation.cs b/NewWMSProject/src/NewWMSProject.Client/Models/AdvancedOperation.cs new file mode 100644 index 0000000..b515701 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Models/AdvancedOperation.cs @@ -0,0 +1,12 @@ +namespace NewWMSProject.Models +{ + public class AdvancedOperation + { + public string Key { get; set; } + public string Type { get; set; } + public string Name { get; set; } + public string Status { get; set; } + public string UpdatedAt { get; set; } + public string Memo { get; set; } + } +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Models/AdvancedProfileData.cs b/NewWMSProject/src/NewWMSProject.Client/Models/AdvancedProfileData.cs new file mode 100644 index 0000000..27b5a81 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Models/AdvancedProfileData.cs @@ -0,0 +1,9 @@ +namespace NewWMSProject.Models +{ + public class AdvancedProfileData + { + public AdvancedOperation[] AdvancedOperation1 { get; set; } + public AdvancedOperation[] AdvancedOperation2 { get; set; } + public AdvancedOperation[] AdvancedOperation3 { get; set; } + } +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Models/BasicGood.cs b/NewWMSProject/src/NewWMSProject.Client/Models/BasicGood.cs new file mode 100644 index 0000000..90e66c4 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Models/BasicGood.cs @@ -0,0 +1,12 @@ +namespace NewWMSProject.Models +{ + public class BasicGood + { + public string Id { get; set; } + public string Name { get; set; } + public string Barcode { get; set; } + public string Price { get; set; } + public string Num { get; set; } + public string Amount { get; set; } + } +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Models/BasicProfileDataType.cs b/NewWMSProject/src/NewWMSProject.Client/Models/BasicProfileDataType.cs new file mode 100644 index 0000000..894bf6a --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Models/BasicProfileDataType.cs @@ -0,0 +1,8 @@ +namespace NewWMSProject.Models +{ + public class BasicProfileDataType + { + public BasicGood[] BasicGoods { get; set; } + public BasicProgress[] BasicProgress { get; set; } + } +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Models/BasicProgress.cs b/NewWMSProject/src/NewWMSProject.Client/Models/BasicProgress.cs new file mode 100644 index 0000000..8aa1a5b --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Models/BasicProgress.cs @@ -0,0 +1,12 @@ +namespace NewWMSProject.Models +{ + public class BasicProgress + { + public string Key { get; set; } + public string Time { get; set; } + public string Rate { get; set; } + public string Status { get; set; } + public string Operator { get; set; } + public string Cost { get; set; } + } +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Models/ChartData.cs b/NewWMSProject/src/NewWMSProject.Client/Models/ChartData.cs new file mode 100644 index 0000000..3dfe69a --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Models/ChartData.cs @@ -0,0 +1,16 @@ +namespace NewWMSProject.Models +{ + public class ChartData + { + public ChartDataItem[] VisitData { get; set; } + public ChartDataItem[] VisitData2 { get; set; } + public ChartDataItem[] SalesData { get; set; } + public SearchDataItem[] SearchData { get; set; } + public OfflineDataItem[] OfflineData { get; set; } + public OfflineChartDataItem[] OfflineChartData { get; set; } + public ChartDataItem[] SalesTypeData { get; set; } + public ChartDataItem[] SalesTypeDataOnline { get; set; } + public ChartDataItem[] SalesTypeDataOffline { get; set; } + public RadarDataItem[] RadarData { get; set; } + } +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Models/ChartDataItem.cs b/NewWMSProject/src/NewWMSProject.Client/Models/ChartDataItem.cs new file mode 100644 index 0000000..d33a5a9 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Models/ChartDataItem.cs @@ -0,0 +1,8 @@ +namespace NewWMSProject.Models +{ + public class ChartDataItem + { + public string X { get; set; } + public int Y { get; set; } + } +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Models/CurrentUser.cs b/NewWMSProject/src/NewWMSProject.Client/Models/CurrentUser.cs new file mode 100644 index 0000000..09e759d --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Models/CurrentUser.cs @@ -0,0 +1,40 @@ +namespace NewWMSProject.Models +{ + public class TagType + { + public string Key { get; set; } + public string Label { get; set; } + } + + public class GeographicType + { + public TagType Province { get; set; } + public TagType City { get; set; } + } + + public class CurrentUser + { + public string Name { get; set; } + public string Avatar { get; set; } + public string Userid { get; set; } + public NoticeType[] Notice { get; set; } = { }; + public string Email { get; set; } + public string Signature { get; set; } + public string Title { get; set; } + public string Group { get; set; } + public TagType[] Tags { get; set; } = { }; + public int NotifyCount { get; set; } + public int UnreadCount { get; set; } + public string Country { get; set; } + public GeographicType Geographic { get; set; } + public string Address { get; set; } + public string Phone { get; set; } + } + + public class UserLiteItem + { + public string Avater { get; set; } + public string Title { get; set; } + public string Description { get; set; } + } +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Models/FormModel.cs b/NewWMSProject/src/NewWMSProject.Client/Models/FormModel.cs new file mode 100644 index 0000000..79b03b1 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Models/FormModel.cs @@ -0,0 +1,48 @@ +using System; + +namespace NewWMSProject.Models +{ + public class StepFormModel + { + public string ReceiverAccountType { get; set; } = "ant-design@alipay.com"; + public string ReceiverAccount { get; set; } = "test@example.com"; + public string ReceiverName { get; set; } = "Alex"; + public string PayAccount { get; set; } + public string Password { get; set; } = "500"; + public string Amount { get; set; } = "12345678"; + } + + public class AdvancedFormModel + { + public string Name { get; set; } + public string Url { get; set; } + public string Owner { get; set; } + public string Approver { get; set; } + public DateTime?[] DateRange { get; set; } + public string Type { get; set; } + public string Name2 { get; set; } + public string Url2 { get; set; } + public string Owner2 { get; set; } + public string Approver2 { get; set; } + public DateTime? DateRange2 { get; set; } + public string Type2 { get; set; } + } + + public class BasicFormModel + { + public string Title { get; set; } + public string Client { get; set; } + public string Invites { get; set; } + public int Disclosure { get; set; } + public int Weight { get; set; } + public string Standard { get; set; } + public string Goal { get; set; } + public DateTime?[] DateRange { get; set; } + } + + public class Owner + { + public string Id { get; set; } + public string Name { get; set; } + } +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Models/ListFormModel.cs b/NewWMSProject/src/NewWMSProject.Client/Models/ListFormModel.cs new file mode 100644 index 0000000..74a5d9c --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Models/ListFormModel.cs @@ -0,0 +1,17 @@ +namespace NewWMSProject.Models +{ + public class ListFormModel + { + public string Owner { get; set; } = "wzj"; + + public string ActiveUser { get; set; } + + public string Satisfaction { get; set; } + } + + public class BasicListFormModel + { + public string Status { get; set; } = "all"; + public string SearchKeyword { get; set; } + } +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Models/ListItemDataType.cs b/NewWMSProject/src/NewWMSProject.Client/Models/ListItemDataType.cs new file mode 100644 index 0000000..9c10976 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Models/ListItemDataType.cs @@ -0,0 +1,42 @@ +using System; +using System.Text.Json.Serialization; +using NewWMSProject.Utils; + +namespace NewWMSProject.Models +{ + public class Member + { + public string Avatar { get; set; } + public string Name { get; set; } + public string Id { get; set; } + } + + public class ListItemDataType + { + public string Id { get; set; } + public string Owner { get; set; } + public string Title { get; set; } + public string Avatar { get; set; } + public string Cover { get; set; } + public string Status { get; set; } + public int Percent { get; set; } + public string Logo { get; set; } + public string Href { get; set; } + public string Body { get; set; } + public string SubDescription { get; set; } + public string Description { get; set; } + public int ActiveUser { get; set; } + public int NewUser { get; set; } + public int Star { get; set; } + public int Like { get; set; } + public int Message { get; set; } + public string Content { get; set; } + public Member[] Members { get; set; } + + [JsonConverter(typeof(LongToDateTimeConverter))] + public DateTime UpdatedAt { get; set; } + + [JsonConverter(typeof(LongToDateTimeConverter))] + public DateTime CreatedAt { get; set; } + } +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Models/LoginParamsType.cs b/NewWMSProject/src/NewWMSProject.Client/Models/LoginParamsType.cs new file mode 100644 index 0000000..166bc1c --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Models/LoginParamsType.cs @@ -0,0 +1,19 @@ +using System.ComponentModel.DataAnnotations; + +namespace NewWMSProject.Models +{ + public class LoginParamsType + { + [Required] public string UserName { get; set; } + + [Required] public string Password { get; set; } + + public string Mobile { get; set; } + + public string Captcha { get; set; } + + public string LoginType { get; set; } + + public bool AutoLogin { get; set; } + } +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Models/NoticeItem.cs b/NewWMSProject/src/NewWMSProject.Client/Models/NoticeItem.cs new file mode 100644 index 0000000..bbeb82f --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Models/NoticeItem.cs @@ -0,0 +1,11 @@ +using AntDesign.ProLayout; + +namespace NewWMSProject.Models +{ + public class NoticeItem : NoticeIconData + { + public string Id { get; set; } + public string Type { get; set; } + public string Status { get; set; } + } +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Models/NoticeType.cs b/NewWMSProject/src/NewWMSProject.Client/Models/NoticeType.cs new file mode 100644 index 0000000..258d2ab --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Models/NoticeType.cs @@ -0,0 +1,14 @@ +namespace NewWMSProject.Models +{ + public class NoticeType + { + public string Id { get; set; } + public string Title { get; set; } + public string Logo { get; set; } + public string Description { get; set; } + public string UpdatedAt { get; set; } + public string Member { get; set; } + public string Href { get; set; } + public string MemberLink { get; set; } + } +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Models/OfflineChartDataItem.cs b/NewWMSProject/src/NewWMSProject.Client/Models/OfflineChartDataItem.cs new file mode 100644 index 0000000..e8c3cbd --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Models/OfflineChartDataItem.cs @@ -0,0 +1,9 @@ +namespace NewWMSProject.Models +{ + public class OfflineChartDataItem + { + public long X { get; set; } + public int Y1 { get; set; } + public int Y2 { get; set; } + } +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Models/OfflineDataItem.cs b/NewWMSProject/src/NewWMSProject.Client/Models/OfflineDataItem.cs new file mode 100644 index 0000000..ac56964 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Models/OfflineDataItem.cs @@ -0,0 +1,8 @@ +namespace NewWMSProject.Models +{ + public class OfflineDataItem + { + public string Name { get; set; } + public float Cvr { get; set; } + } +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Models/RadarDataItem.cs b/NewWMSProject/src/NewWMSProject.Client/Models/RadarDataItem.cs new file mode 100644 index 0000000..acccc0f --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Models/RadarDataItem.cs @@ -0,0 +1,9 @@ +namespace NewWMSProject.Models +{ + public class RadarDataItem + { + public string Name { get; set; } + public string Label { get; set; } + public int Value { get; set; } + } +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Models/SearchDataItem.cs b/NewWMSProject/src/NewWMSProject.Client/Models/SearchDataItem.cs new file mode 100644 index 0000000..97296d2 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Models/SearchDataItem.cs @@ -0,0 +1,11 @@ +namespace NewWMSProject.Models +{ + public class SearchDataItem + { + public int Index { get; set; } + public string Keywod { get; set; } + public int Count { get; set; } + public int Range { get; set; } + public int Status { get; set; } + } +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/NewWMSProject.Client.csproj b/NewWMSProject/src/NewWMSProject.Client/NewWMSProject.Client.csproj new file mode 100644 index 0000000..2848b48 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/NewWMSProject.Client.csproj @@ -0,0 +1,27 @@ + + + + net8.0 + enable + enable + true + Default + + + + + + + + + + + + + + + + + + + diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/Applications/Applications.razor b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/Applications/Applications.razor new file mode 100644 index 0000000..8e0e8cb --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/Applications/Applications.razor @@ -0,0 +1,60 @@ + +@namespace NewWMSProject.Pages.Account.Center + + + + + + + + + @context.Title + +
+
+
+

Active User

+

@FormatWan(context.ActiveUser)

+
+
+

New Users

+

@context.NewUser.ToString("0,0")

+
+
+
+
+
+
+ +@code +{ + + private static readonly RenderFragment Download =@ + +; + +private static readonly IList Actions = new List +{ + Download, +@, +@, +@ + }; + + private static RenderFragment FormatWan(int val) { + if (val > 10000) { + val = (int) Math.Floor((double) val / 10000); + } + + return @ + @val + + ; + } +} diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/Applications/Applications.razor.cs b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/Applications/Applications.razor.cs new file mode 100644 index 0000000..66e9f4f --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/Applications/Applications.razor.cs @@ -0,0 +1,18 @@ +using System.Collections.Generic; +using AntDesign; +using Microsoft.AspNetCore.Components; +using NewWMSProject.Models; + +namespace NewWMSProject.Pages.Account.Center +{ + public partial class Applications + { + private readonly ListGridType _listGridType = new ListGridType + { + Gutter = 24, + Column = 4 + }; + + [Parameter] public IList List { get; set; } + } +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/Applications/Applications.razor.css b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/Applications/Applications.razor.css new file mode 100644 index 0000000..fc2feff --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/Applications/Applications.razor.css @@ -0,0 +1,49 @@ +/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ +/* stylelint-disable no-duplicate-selectors */ +/* stylelint-disable */ +/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ +.filterCardList { + margin-bottom: -24px; +} +.filterCardList :global .ant-card-meta-content { + margin-top: 0; +} +.filterCardList :global .ant-card-meta-avatar { + font-size: 0; +} +.filterCardList :global .ant-list .ant-list-item-content-single { + max-width: 100%; +} +.filterCardList .cardInfo { + margin-top: 16px; + margin-left: 40px; + zoom: 1; +} +.filterCardList .cardInfo::before, +.filterCardList .cardInfo::after { + display: table; + content: ' '; +} +.filterCardList .cardInfo::after { + clear: both; + height: 0; + font-size: 0; + visibility: hidden; +} +.filterCardList .cardInfo > div { + position: relative; + float: left; + width: 50%; + text-align: left; +} +.filterCardList .cardInfo > div p { + margin: 0; + font-size: 24px; + line-height: 32px; +} +.filterCardList .cardInfo > div p:first-child { + margin-bottom: 4px; + color: rgba(0, 0, 0, 0.45); + font-size: 12px; + line-height: 20px; +} diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/ArticleListContent/ArticleListContent.razor b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/ArticleListContent/ArticleListContent.razor new file mode 100644 index 0000000..d302296 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/ArticleListContent/ArticleListContent.razor @@ -0,0 +1,16 @@ +@using NewWMSProject.Models +@namespace NewWMSProject.Pages.Account.Center + +
+
@Data.Content
+
+ + @Data.Owner Posted on @Data.Href + @Data.UpdatedAt.ToString("yyyy-MM-dd HH:mm:ss") +
+
+ +@code +{ + [Parameter] public ListItemDataType Data { get; set; } +} diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/ArticleListContent/ArticleListContent.razor.css b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/ArticleListContent/ArticleListContent.razor.css new file mode 100644 index 0000000..5fe424a --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/ArticleListContent/ArticleListContent.razor.css @@ -0,0 +1,33 @@ +/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ +/* stylelint-disable no-duplicate-selectors */ +/* stylelint-disable */ +/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ +.listContent .description { + max-width: 720px; + line-height: 22px; +} +.listContent .extra { + margin-top: 16px; + color: rgba(0, 0, 0, 0.45); + line-height: 22px; +} +.listContent .extra > :global(.ant-avatar) { + position: relative; + top: 1px; + width: 20px; + height: 20px; + margin-right: 8px; + vertical-align: top; +} +.listContent .extra > em { + margin-left: 16px; + color: rgba(0, 0, 0, 0.25); + font-style: normal; +} +@media screen and (max-width: 480px) { + .listContent .extra > em { + display: block; + margin-top: 8px; + margin-left: 0; + } +} diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/Articles/Articles.razor b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/Articles/Articles.razor new file mode 100644 index 0000000..74c5bef --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/Articles/Articles.razor @@ -0,0 +1,16 @@ +@namespace NewWMSProject.Pages.Account.Center + + + + + + @context.Title + + + + + \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/Articles/Articles.razor.cs b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/Articles/Articles.razor.cs new file mode 100644 index 0000000..da89190 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/Articles/Articles.razor.cs @@ -0,0 +1,11 @@ +using System.Collections.Generic; +using Microsoft.AspNetCore.Components; +using NewWMSProject.Models; + +namespace NewWMSProject.Pages.Account.Center +{ + public partial class Articles + { + [Parameter] public IList List { get; set; } + } +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/Articles/Articles.razor.css b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/Articles/Articles.razor.css new file mode 100644 index 0000000..edf8be9 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/Articles/Articles.razor.css @@ -0,0 +1,10 @@ +/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ +/* stylelint-disable no-duplicate-selectors */ +/* stylelint-disable */ +/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ +.articleList :global .ant-list-item:first-child { + padding-top: 0; +} +a.listItemMetaTitle { + color: rgba(0, 0, 0, 0.85); +} diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/AvatarList/AvatarList.razor b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/AvatarList/AvatarList.razor new file mode 100644 index 0000000..f90c931 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/AvatarList/AvatarList.razor @@ -0,0 +1,7 @@ +@namespace NewWMSProject.Pages.Account.Center + +
+
    + @ChildContent +
+
\ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/AvatarList/AvatarList.razor.cs b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/AvatarList/AvatarList.razor.cs new file mode 100644 index 0000000..666eeee --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/AvatarList/AvatarList.razor.cs @@ -0,0 +1,9 @@ +using Microsoft.AspNetCore.Components; + +namespace NewWMSProject.Pages.Account.Center +{ + public partial class AvatarList + { + [Parameter] public RenderFragment ChildContent { get; set; } + } +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/AvatarList/AvatarList.razor.css b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/AvatarList/AvatarList.razor.css new file mode 100644 index 0000000..c43a5e7 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/AvatarList/AvatarList.razor.css @@ -0,0 +1,43 @@ +/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ +/* stylelint-disable no-duplicate-selectors */ +/* stylelint-disable */ +/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ +.avatarList { + display: inline-block; +} +.avatarList ul { + display: inline-block; + margin-left: 8px; + font-size: 0; +} +.avatarItem { + display: inline-block; + width: 32px; + height: 32px; + margin-left: -8px; + font-size: 14px; +} +.avatarItem :global .ant-avatar { + border: 1px solid #d9d9d9; +} +.avatarItemLarge { + width: 40px; + height: 40px; +} +.avatarItemSmall { + width: 24px; + height: 24px; +} +.avatarItemMini { + width: 20px; + height: 20px; +} +.avatarItemMini :global .ant-avatar { + width: 20px; + height: 20px; + line-height: 20px; +} +.avatarItemMini :global .ant-avatar .ant-avatar-string { + font-size: 12px; + line-height: 18px; +} diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/AvatarList/AvatarListItem.razor b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/AvatarList/AvatarListItem.razor new file mode 100644 index 0000000..9f3c4f7 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/AvatarList/AvatarListItem.razor @@ -0,0 +1,17 @@ +@namespace NewWMSProject.Pages.Account.Center +@inherits AntDomComponentBase + +
  • + @if (string.IsNullOrEmpty(Tips)) + { + + + + + + } + else + { + + } +
  • \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/AvatarList/AvatarListItem.razor.cs b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/AvatarList/AvatarListItem.razor.cs new file mode 100644 index 0000000..43b4393 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/AvatarList/AvatarListItem.razor.cs @@ -0,0 +1,28 @@ +using Microsoft.AspNetCore.Components; + +namespace NewWMSProject.Pages.Account.Center +{ + public partial class AvatarListItem + { + [Parameter] public string Size { get; set; } + [Parameter] public string Tips { get; set; } + [Parameter] public string Src { get; set; } + [Parameter] public EventCallback OnClick { get; set; } + + protected override void OnInitialized() + { + base.OnInitialized(); + SetClassMap(); + } + + protected void SetClassMap() + { + ClassMapper + .Clear() + .Add("avatarItem") + .If("avatarItemLarge", () => Size == "large") + .If("avatarItemSmall", () => Size == "small") + .If("avatarItemMini", () => Size == "mini"); + } + } +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/Projects/Projects.razor b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/Projects/Projects.razor new file mode 100644 index 0000000..1ca665c --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/Projects/Projects.razor @@ -0,0 +1,35 @@ +@namespace NewWMSProject.Pages.Account.Center + + + + + + @context.Title + + + + @context.SubDescription + @context.Title + +
    + @context.UpdatedAt.ToFriendlyDisplay() +
    + + @foreach (var member in context.Members) + { + + } + +
    +
    +
    +
    +
    +
    \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/Projects/Projects.razor.cs b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/Projects/Projects.razor.cs new file mode 100644 index 0000000..3e5fc09 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/Projects/Projects.razor.cs @@ -0,0 +1,19 @@ +using System.Collections.Generic; +using AntDesign; +using Microsoft.AspNetCore.Components; +using NewWMSProject.Models; + +namespace NewWMSProject.Pages.Account.Center +{ + public partial class Projects + { + private readonly ListGridType _listGridType = new ListGridType + { + Gutter = 24, + Column = 4 + }; + + [Parameter] + public IList List { get; set; } + } +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/Projects/Projects.razor.css b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/Projects/Projects.razor.css new file mode 100644 index 0000000..68cd496 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Components/Projects/Projects.razor.css @@ -0,0 +1,41 @@ +/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ +/* stylelint-disable no-duplicate-selectors */ +/* stylelint-disable */ +/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ +.coverCardList .card .ant-card-meta-title { + margin-bottom: 4px; +} +.coverCardList .card .ant-card-meta-title > a { + display: inline-block; + max-width: 100%; + color: rgba(0, 0, 0, 0.85); +} +.coverCardList .card .ant-card-meta-description { + height: 44px; + overflow: hidden; + line-height: 22px; +} +.coverCardList .card:hover .ant-card-meta-title > a { + color: #1890ff; +} +.coverCardList .cardItemContent { + display: flex; + height: 20px; + margin-top: 16px; + margin-bottom: -4px; + line-height: 20px; +} +.coverCardList .cardItemContent > span { + flex: 1; + color: rgba(0, 0, 0, 0.45); + font-size: 12px; +} +.coverCardList .cardItemContent .avatarList { + flex: 0 1 auto; +} +.coverCardList .cardList { + margin-top: 24px; +} +.coverCardList .ant-list .ant-list-item-content-single { + max-width: 100%; +} diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Index.razor b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Index.razor new file mode 100644 index 0000000..81af87c --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Index.razor @@ -0,0 +1,86 @@ +@namespace NewWMSProject.Pages.Account.Center +@page "/account/center" + + + + + +
    + +
    @_currentUser.Name
    +
    @_currentUser.Signature
    +
    + +
    +

    + + @_currentUser.Title +

    +

    + + @_currentUser.Group +

    +

    + + + @_currentUser.Geographic.Province.Label + @_currentUser.Geographic.City.Label +

    +
    + + + +
    +
    Tags
    + @foreach (var tag in _currentUser.Tags) + { + @tag.Label + } + + @if (_inputVisible) + { + + } + else + { + + + + } +
    + + + +
    +
    Team
    + +
    +
    +
    + + + + + Articles (@_fakeList.Count) + + + + + + Applications (@_fakeList.Count) + + + + + + Projects (@_fakeList.Count) + + + + + + + +
    +
    diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Index.razor.cs b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Index.razor.cs new file mode 100644 index 0000000..cd991bd --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Index.razor.cs @@ -0,0 +1,40 @@ +using System.Collections.Generic; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Components; +using NewWMSProject.Models; +using NewWMSProject.Services; + +namespace NewWMSProject.Pages.Account.Center +{ + public partial class Index + { + private CurrentUser _currentUser = new CurrentUser + { + Geographic = new GeographicType { City = new TagType(), Province = new TagType() } + }; + + private IList _fakeList = new List(); + private bool _inputVisible; + public string InputValue { get; set; } + + [Inject] public IProjectService ProjectService { get; set; } + [Inject] public IUserService UserService { get; set; } + + protected override async Task OnInitializedAsync() + { + await base.OnInitializedAsync(); + _currentUser = await UserService.GetCurrentUserAsync(); + _fakeList = await ProjectService.GetFakeListAsync(); + } + + protected void ShowInput() + { + _inputVisible = true; + } + + protected void HandleInputConfirm() + { + _inputVisible = false; + } + } +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Index.razor.css b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Index.razor.css new file mode 100644 index 0000000..b4db3b4 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Center/Index.razor.css @@ -0,0 +1,63 @@ +/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ +/* stylelint-disable no-duplicate-selectors */ +/* stylelint-disable */ +/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ +.avatarHolder { + margin-bottom: 24px; + text-align: center; +} +.avatarHolder > img { + width: 104px; + height: 104px; + margin-bottom: 20px; +} +.avatarHolder .name { + margin-bottom: 4px; + color: rgba(0, 0, 0, 0.85); + font-weight: 500; + font-size: 20px; + line-height: 28px; +} +.detail p { + position: relative; + margin-bottom: 8px; + padding-left: 26px; +} +.detail p:last-child { + margin-bottom: 0; +} +.detail i { + position: absolute; + top: 4px; + left: 0; + width: 14px; + height: 14px; +} +.tagsTitle, +.teamTitle { + margin-bottom: 12px; + color: rgba(0, 0, 0, 0.85); + font-weight: 500; +} +.tags .ant-tag { + margin-bottom: 8px; +} +.team .ant-avatar { + margin-right: 12px; +} +.team a { + display: block; + margin-bottom: 24px; + overflow: hidden; + color: rgba(0, 0, 0, 0.85); + white-space: nowrap; + text-overflow: ellipsis; + word-break: break-all; + transition: color 0.3s; +} +.team a:hover { + color: #1890ff; +} +.tabsCard .ant-card-head { + padding: 0 16px; +} diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Components/BaseView.razor b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Components/BaseView.razor new file mode 100644 index 0000000..cd94cdd --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Components/BaseView.razor @@ -0,0 +1,60 @@ +@namespace NewWMSProject.Pages.Account.Settings + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    + Avatar +
    +
    + avatar +
    + +
    + +
    +
    +
    +
    \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Components/BaseView.razor.cs b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Components/BaseView.razor.cs new file mode 100644 index 0000000..53f1111 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Components/BaseView.razor.cs @@ -0,0 +1,24 @@ +using System.Threading.Tasks; +using Microsoft.AspNetCore.Components; +using NewWMSProject.Models; +using NewWMSProject.Services; + +namespace NewWMSProject.Pages.Account.Settings +{ + public partial class BaseView + { + private CurrentUser _currentUser = new CurrentUser(); + + [Inject] protected IUserService UserService { get; set; } + + private void HandleFinish() + { + } + + protected override async Task OnInitializedAsync() + { + await base.OnInitializedAsync(); + _currentUser = await UserService.GetCurrentUserAsync(); + } + } +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Components/BaseView.razor.css b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Components/BaseView.razor.css new file mode 100644 index 0000000..9c630d1 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Components/BaseView.razor.css @@ -0,0 +1,54 @@ +/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ +/* stylelint-disable no-duplicate-selectors */ +/* stylelint-disable */ +/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ +.baseView { + display: flex; + padding-top: 12px; +} +.baseView :global .ant-legacy-form-item .ant-legacy-form-item-control-wrapper { + width: 100%; +} +.baseView .left { + min-width: 224px; + max-width: 448px; +} +.baseView .right__b__1 { + flex: 1; + padding-left: 104px; +} +.baseView .right__b__1 .avatar_title { + height: 22px; + margin-bottom: 8px; + color: rgba(0, 0, 0, 0.85); + font-size: 14px; + line-height: 22px; +} +.baseView .right__b__1 .avatar { + width: 144px; + height: 144px; + margin-bottom: 12px; + overflow: hidden; +} +.baseView .right__b__1 .avatar img { + width: 100%; +} +.baseView .right__b__1 .button_view { + width: 144px; + text-align: center; +} +@media screen and (max-width: 1200px) { + .baseView { + flex-direction: column-reverse; + } + .baseView .right__b__1 { + display: flex; + flex-direction: column; + align-items: center; + max-width: 448px; + padding: 20px; + } + .baseView .right__b__1 .avatar_title { + display: none; + } +} diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Components/BindingView.razor b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Components/BindingView.razor new file mode 100644 index 0000000..7fd6985 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Components/BindingView.razor @@ -0,0 +1,21 @@ +@namespace NewWMSProject.Pages.Account.Settings + + + + + + + + + + + +@code +{ + private static RenderFragment _modify = @Bind; + + private readonly RenderFragment[] _actions = {_modify}; +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Components/BindingView.razor.cs b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Components/BindingView.razor.cs new file mode 100644 index 0000000..6c52d3f --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Components/BindingView.razor.cs @@ -0,0 +1,29 @@ +using NewWMSProject.Models; + +namespace NewWMSProject.Pages.Account.Settings +{ + public partial class BindingView + { + private readonly UserLiteItem[] _data = + { + new UserLiteItem + { + Avater = "taobao", + Title = "Binding Taobao", + Description = "Currently unbound Taobao account" + }, + new UserLiteItem + { + Avater = "alipay", + Title = "Binding Alipay", + Description = "Currently unbound Alipay account" + }, + new UserLiteItem + { + Avater = "dingding", + Title = "Binding DingTalk", + Description = "Currently unbound DingTalk account" + } + }; + } +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Components/GeographicView.razor b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Components/GeographicView.razor new file mode 100644 index 0000000..46306e8 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Components/GeographicView.razor @@ -0,0 +1,5 @@ +@namespace NewWMSProject.Pages.Account.Settings + +

    + GeographicView +

    \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Components/GeographicView.razor.css b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Components/GeographicView.razor.css new file mode 100644 index 0000000..20905af --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Components/GeographicView.razor.css @@ -0,0 +1,18 @@ +/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ +/* stylelint-disable no-duplicate-selectors */ +/* stylelint-disable */ +/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ +.row .item { + width: 50%; + max-width: 220px; +} +.row .item:first-child { + width: calc(50% - 8px); + margin-right: 8px; +} +@media screen and (max-width: 576px) { + .item:first-child { + margin: 0; + margin-bottom: 8px; + } +} diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Components/NotificationView.razor b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Components/NotificationView.razor new file mode 100644 index 0000000..662a378 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Components/NotificationView.razor @@ -0,0 +1,18 @@ +@namespace NewWMSProject.Pages.Account.Settings + + + + + @context.Title + + + + +@code +{ + private static RenderFragment _switch = @; + private readonly RenderFragment[] _actions = {_switch}; +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Components/NotificationView.razor.cs b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Components/NotificationView.razor.cs new file mode 100644 index 0000000..52bf5f8 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Components/NotificationView.razor.cs @@ -0,0 +1,26 @@ +using NewWMSProject.Models; + +namespace NewWMSProject.Pages.Account.Settings +{ + public partial class NotificationView + { + private readonly UserLiteItem[] _data = + { + new UserLiteItem + { + Title = "Account Password", + Description = "Messages from other users will be notified in the form of a station letter" + }, + new UserLiteItem + { + Title = "System Messages", + Description = "System messages will be notified in the form of a station letter" + }, + new UserLiteItem + { + Title = "To-do Notification", + Description = "The to-do list will be notified in the form of a letter from the station" + } + }; + } +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Components/PhoneView.razor b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Components/PhoneView.razor new file mode 100644 index 0000000..7653a2d --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Components/PhoneView.razor @@ -0,0 +1,5 @@ +@namespace NewWMSProject.Pages.Account.Settings + +

    + PhoneView +

    \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Components/PhoneView.razor.css b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Components/PhoneView.razor.css new file mode 100644 index 0000000..a3dce2a --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Components/PhoneView.razor.css @@ -0,0 +1,13 @@ +/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ +/* stylelint-disable no-duplicate-selectors */ +/* stylelint-disable */ +/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ +.area_code { + width: 30%; + max-width: 128px; + margin-right: 8px; +} +.phone_number { + width: calc(70% - 8px); + max-width: 312px; +} diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Components/SecurityView.razor b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Components/SecurityView.razor new file mode 100644 index 0000000..fda8142 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Components/SecurityView.razor @@ -0,0 +1,18 @@ +@namespace NewWMSProject.Pages.Account.Settings + + + + + @context.Title + + + + +@code +{ + private static RenderFragment _modify = @Modify; + private readonly RenderFragment[] _actions = {_modify}; +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Components/SecurityView.razor.cs b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Components/SecurityView.razor.cs new file mode 100644 index 0000000..d575b88 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Components/SecurityView.razor.cs @@ -0,0 +1,37 @@ +using NewWMSProject.Models; + +namespace NewWMSProject.Pages.Account.Settings +{ + public partial class SecurityView + { + private readonly UserLiteItem[] _data = + { + new UserLiteItem + { + Title = "Account Password", + Description = "Current password strength: : Strong" + }, + new UserLiteItem + { + Title = "Security Phone", + Description = "Bound phone: : 138****8293" + }, + new UserLiteItem + { + Title = "Security Question", + Description = + "The security question is not set, and the security policy can effectively protect the account security" + }, + new UserLiteItem + { + Title = "Backup Email", + Description = "Bound Email: : ant***sign.com" + }, + new UserLiteItem + { + Title = "MFA Device", + Description = "Unbound MFA device, after binding, can be confirmed twice" + } + }; + } +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Index.razor b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Index.razor new file mode 100644 index 0000000..88bd677 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Index.razor @@ -0,0 +1,36 @@ +@namespace NewWMSProject.Pages.Account.Settings +@page "/account/settings" + + +
    +
    + + @foreach (var item in _menuMap) + { + @item.Value + } + +
    +
    +
    @_menuMap[_selectKey]
    + @switch (_selectKey) + { + case "base": + + break; + case "security": + + break; + case "binding": + + break; + case "notification": + + break; + } +
    +
    +
    \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Index.razor.cs b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Index.razor.cs new file mode 100644 index 0000000..cd4c126 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Index.razor.cs @@ -0,0 +1,23 @@ +using System.Collections.Generic; +using AntDesign; + +namespace NewWMSProject.Pages.Account.Settings +{ + public partial class Index + { + private readonly Dictionary _menuMap = new Dictionary + { + {"base", "Basic Settings"}, + {"security", "Security Settings"}, + {"binding", "Account Binding"}, + {"notification", "New Message Notification"}, + }; + + private string _selectKey = "base"; + + private void SelectKey(MenuItem item) + { + _selectKey = item.Key; + } + } +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Index.razor.css b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Index.razor.css new file mode 100644 index 0000000..88eeddc --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/Account/Settings/Index.razor.css @@ -0,0 +1,87 @@ +/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ +/* stylelint-disable no-duplicate-selectors */ +/* stylelint-disable */ +/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ +.main__b__2 { + display: flex; + width: 100%; + height: 100%; + padding-top: 16px; + padding-bottom: 16px; + overflow: auto; + background-color: #fff; +} +.main__b__2 .leftMenu { + width: 224px; + border-right: 1px solid #f0f0f0; +} +.main__b__2 .leftMenu :global .ant-menu-inline { + border: none; +} +.main__b__2 .leftMenu :global .ant-menu:not(.ant-menu-horizontal) .ant-menu-item-selected { + font-weight: bold; +} +.main__b__2 .right__b__0 { + flex: 1; + padding-top: 8px; + padding-right: 40px; + padding-bottom: 8px; + padding-left: 40px; +} +.main__b__2 .right__b__0 .title { + margin-bottom: 12px; + color: rgba(0, 0, 0, 0.85); + font-weight: 500; + font-size: 20px; + line-height: 28px; +} +.main__b__2 .ant-list-split .ant-list-item:last-child { + border-bottom: 1px solid #f0f0f0; +} +.main__b__2 .ant-list-item { + padding-top: 14px; + padding-bottom: 14px; +} +.ant-list-item-meta .taobao { + display: block; + color: #ff4000; + font-size: 48px; + line-height: 48px; + border-radius: 2px; +} +.ant-list-item-meta .dingding { + margin: 2px; + padding: 6px; + color: #fff; + font-size: 32px; + line-height: 32px; + background-color: #2eabff; + border-radius: 2px; +} +.ant-list-item-meta .alipay { + color: #2eabff; + font-size: 48px; + line-height: 48px; + border-radius: 2px; +} +font.strong { + color: #52c41a; +} +font.medium { + color: #faad14; +} +font.weak { + color: #ff4d4f; +} +@media screen and (max-width: 768px) { + .main__b__2 { + flex-direction: column; + } + .main__b__2 .leftMenu { + width: 100%; + border: none; + } + .main__b__2 .right__b__0 { + padding: 40px; + } +} diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/Material/Components/MaterialTable.razor b/NewWMSProject/src/NewWMSProject.Client/Pages/Material/Components/MaterialTable.razor new file mode 100644 index 0000000..ae83fff --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/Material/Components/MaterialTable.razor @@ -0,0 +1,124 @@ +@using AntDesign.TableModels +@using System.ComponentModel.DataAnnotations + + + + + + + + + + + + + Edit + @* Delete *@ + + +
    + +@inject ModalService ModalService; +@inject ConfirmService ComfirmService; +@code { + + List mockDb = new(); + IEnumerable _selectedRows = []; + ITable _table; + List _dataSource; + int _total; + + void OnChange(QueryModel query) + { + _total = mockDb.AsQueryable().ExecuteTableQuery(query).Count(); + _dataSource = mockDb.AsQueryable().ExecuteTableQuery(query).CurrentPagedRecords(query).ToList(); + } + + void StartEdit(ItemData row) + { + var data = row == null ? new() : row with { }; + ModalRef modalRef = default; + IForm form = default; + modalRef = ModalService.CreateModal(new() + { + Title = data.Id > 0 ? "Edit" : "New", + Content = @
    + + + , + OnOk = async (e) => + { + if (!form.Validate()) + { + return; + } + + // save db and refresh + modalRef.SetConfirmLoading(true); + + if (data.Id > 0) + { + var index = mockDb.FindIndex(x => x.Id == data.Id); + mockDb[index] = data; + } + else + { + data.Id = mockDb.Max(x => x.Id) + 1; + mockDb.Add(data); + } + + await Task.Delay(1000); + + await modalRef.CloseAsync(); + _table.ReloadData(); + StateHasChanged(); + }, + OnCancel = async (e) => + { + if (form.IsModified && (!await Comfirm("The form have been updated, are you sure quit?"))) + { + return; + } + await modalRef.CloseAsync(); + } + }); + } + + async Task DeleteAll() + { + if (!await Comfirm($"Are you sure delete {_selectedRows.Count()} rows?")) + return; + + mockDb = mockDb.Except(_selectedRows).ToList(); + _selectedRows = []; + _table.ReloadData(); + } + + async Task Delete(ItemData row) + { + if (!await Comfirm($"Are you sure delete [{row.Name}]?")) + return; + + mockDb = mockDb.Except(new[] { row }).ToList(); + _table.ReloadData(); + } + + protected override void OnInitialized() + { + mockDb = Enumerable.Range(0, 20).Select(i => new ItemData { Id = i + 1, Name = $"Edrward {i}", Age = 32, Address = $"London Park no. {i}" }).ToList(); + } + + private async Task Comfirm(string message) + { + return await ComfirmService.Show(message, "Confirm", ConfirmButtons.YesNo, ConfirmIcon.Warning) == ConfirmResult.Yes; + } + + public record ItemData + { + public int Id { get; set; } + [Required] + public string Name { get; set; } + public int Age { get; set; } + public string Address { get; set; } + } +} diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/Material/MainMaterial.razor b/NewWMSProject/src/NewWMSProject.Client/Pages/Material/MainMaterial.razor new file mode 100644 index 0000000..dbdbaac --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/Material/MainMaterial.razor @@ -0,0 +1,142 @@ +@using AntDesign.TableModels +@using System.ComponentModel.DataAnnotations +@using EFCoreDatabase.Entities +@page "/material/main_material" +@inject IGoodsRepository _GoodsRepository + + + + + + @* *@ + + + + + + + Edit + @* Delete *@ + + +
    +
    +@inject ModalService ModalService; +@inject ConfirmService ComfirmService; +@code { + + List mockDb = new(); + IEnumerable _selectedRows = []; + ITable _table; + List _dataSource; + int _total; + + void OnChange(QueryModel query) + { + _total = mockDb.AsQueryable().ExecuteTableQuery(query).Count(); + _dataSource = mockDb.AsQueryable().ExecuteTableQuery(query).CurrentPagedRecords(query).ToList(); + } + + void StartEdit(MaterialData row) + { + var data = row == null ? new() : row with { }; + ModalRef modalRef = default; + IForm form = default; + modalRef = ModalService.CreateModal(new() + { + Title = data.GOODS_ID > 0 ? "Edit" : "New", + Content = @
    + + + , + OnOk = async (e) => + { + if (!form.Validate()) + { + return; + } + + // save db and refresh + modalRef.SetConfirmLoading(true); + + if (data.GOODS_ID > 0) + { + var index = mockDb.FindIndex(x => x.GOODS_ID == data.GOODS_ID); + mockDb[index] = data; + //更新物料主数据 + + } + else + { + data.GOODS_ID = mockDb.Max(x => x.GOODS_ID) + 1; + mockDb.Add(data); + //新增物料主数据信息 + var goodsMain = new GOODS_MAIN() + { GOODS_CODE = data.GOODS_CODE, + GOODS_NAME = data.GOODS_NAME, + GOODS_UNITS = data.GOODS_UNITS, + GOODS_CONST_PROPERTY1 = data.GOODS_CONST_PROPERTY1, + GOODS_CONST_PROPERTY2 = data.GOODS_CONST_PROPERTY2 }; + _GoodsRepository.AddGoodsMain(goodsMain); + } + + await Task.Delay(1000); + + await modalRef.CloseAsync(); + _table.ReloadData(); + StateHasChanged(); + }, + OnCancel = async (e) => + { + if (form.IsModified && (!await Comfirm("The form have been updated, are you sure quit?"))) + { + return; + } + await modalRef.CloseAsync(); + } + }); + } + + async Task DeleteAll() + { + if (!await Comfirm($"Are you sure delete {_selectedRows.Count()} rows?")) + return; + + mockDb = mockDb.Except(_selectedRows).ToList(); + _selectedRows = []; + _table.ReloadData(); + } + + async Task Delete(MaterialData row) + { + if (!await Comfirm($"Are you sure delete [{row.GOODS_NAME}]?")) + return; + + mockDb = mockDb.Except(new[] { row }).ToList(); + _table.ReloadData(); + } + + protected override void OnInitialized() + { + //tlt:获取主数据信息 + var goodsList = _GoodsRepository.GetGoodsMains(); + + mockDb = Enumerable.Range(0, goodsList.Count).Select(i => new MaterialData { GOODS_ID = goodsList[i].GOODS_ID,GOODS_CODE = goodsList[i].GOODS_CODE,GOODS_NAME =goodsList[i].GOODS_NAME,GOODS_UNITS = goodsList[i].GOODS_UNITS,GOODS_CONST_PROPERTY1 = goodsList[i].GOODS_CONST_PROPERTY1,GOODS_CONST_PROPERTY2 = goodsList[i].GOODS_CONST_PROPERTY2}).ToList(); + } + + private async Task Comfirm(string message) + { + return await ComfirmService.Show(message, "Confirm", ConfirmButtons.YesNo, ConfirmIcon.Warning) == ConfirmResult.Yes; + } + + public record MaterialData + { + public int GOODS_ID { get; set; } + [Required] + public string GOODS_CODE { get; set; } + public string GOODS_NAME { get; set; } + public string GOODS_UNITS { get; set; } + public string GOODS_CONST_PROPERTY1 { get; set; } + public string GOODS_CONST_PROPERTY2 { get; set; } + } +} diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/Task/TaskInfo.razor b/NewWMSProject/src/NewWMSProject.Client/Pages/Task/TaskInfo.razor new file mode 100644 index 0000000..7ac9055 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/Task/TaskInfo.razor @@ -0,0 +1,5 @@ +

    TaskInfo

    + +@code { + +} diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/User/Login/Login.razor b/NewWMSProject/src/NewWMSProject.Client/Pages/User/Login/Login.razor new file mode 100644 index 0000000..67c5762 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/User/Login/Login.razor @@ -0,0 +1,76 @@ +@namespace NewWMSProject.Client.Pages.User.Login +@layout UserLayout +@page "/" + +
    + +
    + +@using System.ComponentModel.DataAnnotations; +@using NewWMSProject.Layouts +@using NewWMSProject.Layouts +@using NewWMSProject.Layouts + +@code { + + // [Inject] public IAccountService AccountService { get; set; } + + // public async Task GetCaptcha() + // { + // var captcha = await AccountService.GetCaptchaAsync(_model.Mobile); + // await Message.Success($"Verification code validated successfully! The verification code is: {captcha}"); + // } + +} diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/User/Login/Login.razor.cs b/NewWMSProject/src/NewWMSProject.Client/Pages/User/Login/Login.razor.cs new file mode 100644 index 0000000..f1f793f --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/User/Login/Login.razor.cs @@ -0,0 +1,37 @@ +using System.ComponentModel.DataAnnotations; +using Microsoft.AspNetCore.Components; + +namespace NewWMSProject.Client.Pages.User.Login; + +public partial class Login +{ + private readonly LoginParamsType _model = new LoginParamsType(); + [Inject] public NavigationManager NavigationManager { get; set; } + [Inject] public MessageService Message { get; set; } + + public void HandleSubmit() + { + if (_model.UserName == "admin" && _model.Password == "ant.design") + { + NavigationManager.NavigateTo("/Welcome"); + return; + } + + if (_model.UserName == "user" && _model.Password == "ant.design") NavigationManager.NavigateTo("/"); + } + + public class LoginParamsType + { + [Required] public string UserName { get; set; } + + [Required] public string Password { get; set; } + + public string Mobile { get; set; } + + public string Captcha { get; set; } + + public string LoginType { get; set; } + + public bool AutoLogin { get; set; } + } +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/User/Login/Login.razor.css b/NewWMSProject/src/NewWMSProject.Client/Pages/User/Login/Login.razor.css new file mode 100644 index 0000000..d8e4a8a --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/User/Login/Login.razor.css @@ -0,0 +1,53 @@ +/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ +/* stylelint-disable no-duplicate-selectors */ +/* stylelint-disable */ +/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ +/*此处为了解决样式冲突, 在pro样式的基础上包了一层main, 原始样式从.login开始*/ +.main__b__0 ::deep { + width: 368px; + margin: 0 auto; +} +@media screen and (max-width: 576px) { + .main__b__0 ::deep { + width: 95%; + } +} +.main__b__0 ::deep .login :global .ant-tabs .ant-tabs-nav { + margin-bottom: 24px; + text-align: center; + border-bottom: 0; +} +.main__b__0 ::deep .login .getCaptcha { + display: block; + width: 100%; +} +.main__b__0 ::deep .login .icon { + color: #1890ff; +} +.main__b__0 ::deep .login .other { + margin-top: 24px; + line-height: 22px; + text-align: left; +} +.main__b__0 ::deep .login .other .icon { + margin-left: 16px; + color: rgba(0, 0, 0, 0.45); + font-size: 24px; + vertical-align: middle; + cursor: pointer; + transition: color 0.3s; +} +.main__b__0 ::deep .login .other .icon:hover { + color: #1890ff; +} +.main__b__0 ::deep .login .other .register { + float: right; +} +.main__b__0 ::deep .login .prefixIcon { + color: rgba(0, 0, 0, 0.25); + font-size: 14px; +} +.main__b__0 ::deep .login .submit { + width: 100%; + margin-top: 24px; +} diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/User/Register/Register.razor b/NewWMSProject/src/NewWMSProject.Client/Pages/User/Register/Register.razor new file mode 100644 index 0000000..9c97f3c --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/User/Register/Register.razor @@ -0,0 +1,56 @@ +@namespace WMSLabProject.Pages.User +@layout UserLayout +@page "/user/register" + +
    +
    +

    Registration

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/User/Register/Register.razor.cs b/NewWMSProject/src/NewWMSProject.Client/Pages/User/Register/Register.razor.cs new file mode 100644 index 0000000..746d806 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/User/Register/Register.razor.cs @@ -0,0 +1,31 @@ +using System.ComponentModel.DataAnnotations; + +namespace WMSLabProject.Pages.User +{ + public class RegisterModel + { + [Required] + public string UserName { get; set; } + + [Required] + public string Password { get; set; } + + [Required] + public string ConfirmPassword { get; set; } + + [Required] + public string Phone { get; set; } + + [Required] + public string Captcha { get; set; } + } + + public partial class Register + { + private readonly RegisterModel _user = new RegisterModel(); + + public void Reg() + { + } + } +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/User/Register/Register.razor.css b/NewWMSProject/src/NewWMSProject.Client/Pages/User/Register/Register.razor.css new file mode 100644 index 0000000..14c2878 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/User/Register/Register.razor.css @@ -0,0 +1,46 @@ +/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ +/* stylelint-disable no-duplicate-selectors */ +/* stylelint-disable */ +/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ +.main__b__1 { + width: 368px; + margin: 0 auto; +} +.main__b__1 h3 { + margin-bottom: 20px; + font-size: 16px; +} +.main__b__1 .password { + margin-bottom: 24px; +} +.main__b__1 .password :global .ant-form-item-explain { + display: none; +} +.main__b__1 .getCaptcha { + display: block; + width: 100%; +} +.main__b__1 .submit { + width: 50%; +} +.main__b__1 .login { + float: right; + line-height: 40px; +} +.success, +.warning, +.error { + transition: color 0.3s; +} +.success { + color: #52c41a; +} +.warning { + color: #faad14; +} +.error { + color: #ff4d4f; +} +.progress-pass > .progress :global .ant-progress-bg { + background-color: #faad14; +} diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/Welcome.razor b/NewWMSProject/src/NewWMSProject.Client/Pages/Welcome.razor new file mode 100644 index 0000000..a952753 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/Welcome.razor @@ -0,0 +1,41 @@ +@page "/Welcome" + + + + + + + Use .NET CLI to install the latest template quickly. + + +
     dotnet new --install AntDesign.Templates::0.1.0-*
    + + + Create an empty blazor WebAssembly project + + +
     dotnet new antdesign --host=wasm
    + + + Create a blazor webassembly project with all pages. + + +
     dotnet new antdesign --host=wasm --full
    +
    +

    + Want to add more pages? Please refer to + + ant-design-pro-blazor project + + . +

    +
    diff --git a/NewWMSProject/src/NewWMSProject.Client/Pages/Welcome.razor.css b/NewWMSProject/src/NewWMSProject.Client/Pages/Welcome.razor.css new file mode 100644 index 0000000..8a2325f --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Pages/Welcome.razor.css @@ -0,0 +1,7 @@ +.pre { + margin: 12px 0; + padding: 12px 20px; + background: #fff; + box-shadow: 0 1px 2px -2px rgba(0, 0, 0, 0.16), + 0 3px 6px 0 rgba(0, 0, 0, 0.12), 0 5px 12px 4px rgba(0, 0, 0, 0.09); +} diff --git a/NewWMSProject/src/NewWMSProject.Client/Program.cs b/NewWMSProject/src/NewWMSProject.Client/Program.cs new file mode 100644 index 0000000..8f703c3 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Program.cs @@ -0,0 +1,35 @@ +using System; +using System.Net.Http; +using System.Threading.Tasks; +using AntDesign.ProLayout; +using Microsoft.AspNetCore.Components.WebAssembly.Hosting; +using Microsoft.Extensions.DependencyInjection; +using NewWMSProject.Services; + +namespace NewWMSProject +{ + public class Program + { + public static async Task Main(string[] args) + { + var builder = WebAssemblyHostBuilder.CreateDefault(args); + builder.Services.AddScoped( + sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) }); + + AddClientServices(builder.Services); + + builder.Services.Configure(builder.Configuration.GetSection("ProSettings")); + + await builder.Build().RunAsync(); + } + + public static void AddClientServices(IServiceCollection services) + { + services.AddAntDesign(); + services.AddInteractiveStringLocalizer(); + services.AddLocalization(); + services.AddScoped(); + services.AddScoped(); + } + } +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Properties/launchSettings.json b/NewWMSProject/src/NewWMSProject.Client/Properties/launchSettings.json new file mode 100644 index 0000000..0175a54 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Properties/launchSettings.json @@ -0,0 +1,29 @@ +{ + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:53775/", + "sslPort": 44358 + } + }, + "profiles": { + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "NewWMSProject": { + "commandName": "Project", + "launchBrowser": true, + "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:5001;http://localhost:5000" + } + } +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Resources/I18n.cs b/NewWMSProject/src/NewWMSProject.Client/Resources/I18n.cs new file mode 100644 index 0000000..8683944 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Resources/I18n.cs @@ -0,0 +1,7 @@ +namespace NewWMSProject.Client.Resources +{ + + internal class I18n + { + } +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Resources/I18n.resx b/NewWMSProject/src/NewWMSProject.Client/Resources/I18n.resx new file mode 100644 index 0000000..5a932a1 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Resources/I18n.resx @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Account Center + + + Logout + + + Settings + + \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Resources/I18n.zh-CN.resx b/NewWMSProject/src/NewWMSProject.Client/Resources/I18n.zh-CN.resx new file mode 100644 index 0000000..d938141 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Resources/I18n.zh-CN.resx @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 个人中心 + + + 退出登录 + + + 个人设置 + + \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Routes.razor b/NewWMSProject/src/NewWMSProject.Client/Routes.razor new file mode 100644 index 0000000..241d154 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Routes.razor @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Services/ProjectService.cs b/NewWMSProject/src/NewWMSProject.Client/Services/ProjectService.cs new file mode 100644 index 0000000..dd749f4 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Services/ProjectService.cs @@ -0,0 +1,47 @@ +using System.Linq; +using System.Net.Http; +using System.Net.Http.Json; +using System.Threading.Tasks; +using NewWMSProject.Models; + +namespace NewWMSProject.Services +{ + public interface IProjectService + { + Task GetProjectNoticeAsync(); + Task GetActivitiesAsync(); + Task GetFakeListAsync(int count = 0); + Task GetNoticesAsync(); + } + + public class ProjectService : IProjectService + { + private readonly HttpClient _httpClient; + + public ProjectService(HttpClient httpClient) + { + _httpClient = httpClient; + } + + public async Task GetProjectNoticeAsync() + { + return await _httpClient.GetFromJsonAsync("data/notice.json"); + } + + public async Task GetNoticesAsync() + { + return await _httpClient.GetFromJsonAsync("data/notices.json"); + } + + public async Task GetActivitiesAsync() + { + return await _httpClient.GetFromJsonAsync("data/activities.json"); + } + + public async Task GetFakeListAsync(int count = 0) + { + var data = await _httpClient.GetFromJsonAsync("data/fake_list.json"); + return count > 0 ? data.Take(count).ToArray() : data; + } + } +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Services/UserService.cs b/NewWMSProject/src/NewWMSProject.Client/Services/UserService.cs new file mode 100644 index 0000000..e23847d --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Services/UserService.cs @@ -0,0 +1,27 @@ +using System.Net.Http; +using System.Net.Http.Json; +using System.Threading.Tasks; +using NewWMSProject.Models; + +namespace NewWMSProject.Services +{ + public interface IUserService + { + Task GetCurrentUserAsync(); + } + + public class UserService : IUserService + { + private readonly HttpClient _httpClient; + + public UserService(HttpClient httpClient) + { + _httpClient = httpClient; + } + + public async Task GetCurrentUserAsync() + { + return await _httpClient.GetFromJsonAsync("data/current_user.json"); + } + } +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/Utils/LongToDateTimeConverter.cs b/NewWMSProject/src/NewWMSProject.Client/Utils/LongToDateTimeConverter.cs new file mode 100644 index 0000000..c98c1f2 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/Utils/LongToDateTimeConverter.cs @@ -0,0 +1,24 @@ +using System; +using System.Buffers.Text; +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace NewWMSProject.Utils +{ + public class LongToDateTimeConverter : JsonConverter + { + public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + if (Utf8Parser.TryParse(reader.ValueSpan, out long value, out _)) + return DateTime.UnixEpoch.AddMilliseconds(value); + + throw new FormatException(); + } + + public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options) + { + writer.WriteStringValue( + JsonEncodedText.Encode(((long)(value - DateTime.UnixEpoch).TotalMilliseconds).ToString())); + } + } +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/_Imports.razor b/NewWMSProject/src/NewWMSProject.Client/_Imports.razor new file mode 100644 index 0000000..776f152 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/_Imports.razor @@ -0,0 +1,17 @@ +@using AntDesign +@using AntDesign.Charts +@using AntDesign.ProLayout +@using System.Net.Http +@using System.Net.Http.Json +@using Microsoft.AspNetCore.Components.Forms +@using Microsoft.AspNetCore.Components.Routing +@using Microsoft.AspNetCore.Components.Web +@using Microsoft.AspNetCore.Components.WebAssembly.Http +@using Microsoft.JSInterop +@using NewWMSProject +@using NewWMSProject.Layouts +@using AntDesign.Extensions.Localization +@using System.Globalization +@using NewWMSProject.Models +@using NewWMSProject.Services +@using EFCoreDatabase.Repositories.Interface \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/gulpfile.js b/NewWMSProject/src/NewWMSProject.Client/gulpfile.js new file mode 100644 index 0000000..b46488e --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/gulpfile.js @@ -0,0 +1,26 @@ +var gulp = require('gulp'), + cleanCss = require('gulp-clean-css'), + less = require('gulp-less'), + rename = require('gulp-rename'), + concatCss = require("gulp-concat-css"), + npmImport = require("less-plugin-npm-import"); + +gulp.task('less', function () { + return gulp + .src([ + '**/*.less', + '!node_modules/**', + '!**/bin/**', + '!**/obj/**' + ]) + .pipe(less({ + javascriptEnabled: true, + plugins: [new npmImport({ prefix: '~' })] + })) + .pipe(concatCss('site.css')) + .pipe(cleanCss({ compatibility: '*' })) + .pipe(gulp.dest('wwwroot/css')); +}); + +gulp.task('default', gulp.parallel('less'), function () { +}); \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/wwwroot/appsettings.Development.json b/NewWMSProject/src/NewWMSProject.Client/wwwroot/appsettings.Development.json new file mode 100644 index 0000000..0c208ae --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/wwwroot/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/NewWMSProject/src/NewWMSProject.Client/wwwroot/appsettings.json b/NewWMSProject/src/NewWMSProject.Client/wwwroot/appsettings.json new file mode 100644 index 0000000..0c208ae --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/wwwroot/appsettings.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/NewWMSProject/src/NewWMSProject.Client/wwwroot/assets/403.svg b/NewWMSProject/src/NewWMSProject.Client/wwwroot/assets/403.svg new file mode 100644 index 0000000..610f136 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/wwwroot/assets/403.svg @@ -0,0 +1,508 @@ + + + + Group 9 + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/wwwroot/assets/logo.svg b/NewWMSProject/src/NewWMSProject.Client/wwwroot/assets/logo.svg new file mode 100644 index 0000000..239bf69 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/wwwroot/assets/logo.svg @@ -0,0 +1 @@ +Group 28 Copy 5Created with Sketch. \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/wwwroot/css/site.css b/NewWMSProject/src/NewWMSProject.Client/wwwroot/css/site.css new file mode 100644 index 0000000..91b95ad --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/wwwroot/css/site.css @@ -0,0 +1,55 @@ +/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ +/* stylelint-disable no-duplicate-selectors */ +/* stylelint-disable */ +/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ +html, +body, +#root, +#app, +app { + height: 100%; +} +.colorWeak { + filter: invert(80%); +} +.ant-layout { + min-height: 100vh; +} +canvas { + display: block; +} +body { + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +ul, +ol { + list-style: none; +} +.action { + cursor: pointer; +} +@media (max-width: 480px) { + .ant-table { + width: 100%; + overflow-x: auto; + } + .ant-table-thead > tr > th, + .ant-table-tbody > tr > th, + .ant-table-thead > tr > td, + .ant-table-tbody > tr > td { + white-space: pre; + } + .ant-table-thead > tr > th > span, + .ant-table-tbody > tr > th > span, + .ant-table-thead > tr > td > span, + .ant-table-tbody > tr > td > span { + display: block; + } +} +@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { + body .ant-design-pro > .ant-layout { + min-height: 100vh; + } +} diff --git a/NewWMSProject/src/NewWMSProject.Client/wwwroot/data/activities.json b/NewWMSProject/src/NewWMSProject.Client/wwwroot/data/activities.json new file mode 100644 index 0000000..e8282eb --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/wwwroot/data/activities.json @@ -0,0 +1,100 @@ +[ + { + "id": "trend-1", + "updatedAt": "2020-08-26T10:21:19.719Z", + "user": { + "name": "Qu Lili", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png" + }, + "group": { + "name": "Highly Compelling Design Team", + "link": "http://github.com/" + }, + "project": { + "name": "June Version", + "link": "http://github.com/" + }, + "template": "created a new project in @{group} @{project}" + }, + { + "id": "trend-2", + "updatedAt": "2020-08-26T10:21:19.719Z", + "user": { + "name": "Fu Xiaoxiao", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/cnrhVkzwxjPwAaCfPbdc.png" + }, + "group": { + "name": "Highly Compelling Design Team", + "link": "http://github.com/" + }, + "project": { + "name": "June Version", + "link": "http://github.com/" + }, + "template": "created a new project in @{group} @{project}" + }, + { + "id": "trend-3", + "updatedAt": "2020-08-26T10:21:19.719Z", + "user": { + "name": "Lin Dongdong", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/gaOngJwsRYRaVAuXXcmB.png" + }, + "group": { + "name": "Second Girls Group", + "link": "http://github.com/" + }, + "project": { + "name": "June Version", + "link": "http://github.com/" + }, + "template": "created a new project in @{group} @{project}" + }, + { + "id": "trend-4", + "updatedAt": "2020-08-26T10:21:19.719Z", + "user": { + "name": "Zhou Xingxing", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/WhxKECPNujWoWEFNdnJE.png" + }, + "project": { + "name": "Daily iteration in May", + "link": "http://github.com/" + }, + "template": "updated @{project} to the published state" + }, + { + "id": "trend-5", + "updatedAt": "2020-08-26T10:21:19.719Z", + "user": { + "name": "Zhu", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/ubnKSIfAJTxIgXOKlciN.png" + }, + "project": { + "name": "Engineering Efficiency", + "link": "http://github.com/" + }, + "comment": { + "name": "Leave a message", + "link": "http://github.com/" + }, + "template": "posted a @{comment} on @{project}" + }, + { + "id": "trend-6", + "updatedAt": "2020-08-26T10:21:19.719Z", + "user": { + "name": "Le Brother", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/jZUIxmJycoymBprLOUbT.png" + }, + "group": { + "name": "Programmers Daily", + "link": "http://github.com/" + }, + "project": { + "name": "Brand Iteration", + "link": "http://github.com/" + }, + "template": "created a new project in @{group} @{project}" + } +] \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/wwwroot/data/advanced.json b/NewWMSProject/src/NewWMSProject.Client/wwwroot/data/advanced.json new file mode 100644 index 0000000..382a918 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/wwwroot/data/advanced.json @@ -0,0 +1,64 @@ +{ + "advancedOperation1": [ + { + "key": "op1", + "type": "Ordering relationship takes effect", + "name": "Qu Lili", + "status": "agree", + "updatedAt": "2017-10-03 19:23:12", + "memo": "-" + }, + { + "key": "op2", + "type": "Financial Review", + "name": "Fu Xiaoxiao", + "status": "reject", + "updatedAt": "2017-10-03 19:23:12", + "memo": "Not passing the reason" + }, + { + "key": "op3", + "type": "Departmental preliminary review", + "name": "Zhou Maomao", + "status": "agree", + "updatedAt": "2017-10-03 19:23:12", + "memo": "-" + }, + { + "key": "op4", + "type": "Submit Order", + "name": "Lin Dongdong", + "status": "agree", + "updatedAt": "2017-10-03 19:23:12", + "memo": "很棒" + }, + { + "key": "op5", + "type": "Create Order", + "name": "Sweaty", + "status": "agree", + "updatedAt": "2017-10-03 19:23:12", + "memo": "-" + } + ], + "advancedOperation2": [ + { + "key": "op1", + "type": "Order relationship takes effect", + "name": "Qu Lili", + "status": "agree", + "updatedAt": "2017-10-03 19:23:12", + "memo": "-" + } + ], + "advancedOperation3": [ + { + "key": "op1", + "type": "Create Order", + "name": "Sweat tooth", + "status": "agree", + "updatedAt": "2017-10-03 19:23:12", + "memo": "-" + } + ] +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/wwwroot/data/basic.json b/NewWMSProject/src/NewWMSProject.Client/wwwroot/data/basic.json new file mode 100644 index 0000000..7d2aa3b --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/wwwroot/data/basic.json @@ -0,0 +1,78 @@ +{ + "basicGoods": [ + { + "id": "1234561", + "name": "Mineral Water 550ml", + "barcode": "12421432143214321", + "price": "2.00", + "num": "1", + "amount": "2.00" + }, + { + "id": "1234562", + "name": "Herbal tea 300ml", + "barcode": "12421432143214322", + "price": "3.00", + "num": "2", + "amount": "6.00" + }, + { + "id": "1234563", + "name": "Delicious potato chips", + "barcode": "12421432143214323", + "price": "7.00", + "num": "4", + "amount": "28.00" + }, + { + "id": "1234564", + "name": "Specially delicious egg rolls", + "barcode": "12421432143214324", + "price": "8.50", + "num": "3", + "amount": "25.50" + } + ], + "basicProgress": [ + { + "key": "1", + "time": "2017-10-01 14:10", + "rate": "Contact Clients", + "status": "Processing", + "operator": "Pickup Assistant ID1234", + "cost": "5mins" + }, + { + "key": "2", + "time": "2017-10-01 14:05", + "rate": "Pickup Guy Departs", + "status": "Success", + "operator": "Pickup Assistant ID1234", + "cost": "1h" + }, + { + "key": "3", + "time": "2017-10-01 13:05", + "rate": "Pick-up person takes orders", + "status": "Success", + "operator": "Pickup Assistant ID1234", + "cost": "5mins" + }, + { + "key": "4", + "time": "2017-10-01 13:00", + "rate": "Apply For Approval", + "status": "Success", + "operator": "system", + "cost": "1h" + }, + { + "key": "5", + "time": "2017-10-01 12:00", + "rate": "Initiated a Return Request", + "status": "Success", + "operator": "user", + "cost": "5mins" + } + ] +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/wwwroot/data/current_user.json b/NewWMSProject/src/NewWMSProject.Client/wwwroot/data/current_user.json new file mode 100644 index 0000000..6a0949d --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/wwwroot/data/current_user.json @@ -0,0 +1,50 @@ +{ + "name": "Serati Ma", + "avatar": "https://gw.alipayobjects.com/zos/antfincdn/XAosXuNZyF/BiazfanxmamNRoxxVxka.png", + "userid": "00000001", + "email": "antdesign@alipay.com", + "signature": "Be tolerant to diversity, tolerance is a virtue", + "title": "Interaction Expert", + "group": "Ant Financial Services-XX Business Group-XX Platform Department-XX Technology Department-UED", + "tags": [ + { + "key": "0", + "label": "Very thoughtful" + }, + { + "key": "1", + "label": "Focus on Design" + }, + { + "key": "2", + "label": "Spicy ~" + }, + { + "key": "3", + "label": "Long legs" + }, + { + "key": "4", + "label": "Chuan Meizi" + }, + { + "key": "5", + "label": "Have inclusive of all rivers" + } + ], + "notifyCount": 12, + "unreadCount": 11, + "country": "China", + "geographic": { + "province": { + "label": "Zhejiang Province", + "key": "330000" + }, + "city": { + "label": "Hangzhou City", + "key": "330100" + } + }, + "address": "77 Gongzhuan Road, Xihu District", + "phone": "0752-268888888" +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/wwwroot/data/fake_chart_data.json b/NewWMSProject/src/NewWMSProject.Client/wwwroot/data/fake_chart_data.json new file mode 100644 index 0000000..5c3214d --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/wwwroot/data/fake_chart_data.json @@ -0,0 +1,799 @@ +{ + "visitData": [ + { + "x": "2020-08-25", + "y": 7 + }, + { + "x": "2020-08-26", + "y": 5 + }, + { + "x": "2020-08-27", + "y": 4 + }, + { + "x": "2020-08-28", + "y": 2 + }, + { + "x": "2020-08-29", + "y": 4 + }, + { + "x": "2020-08-30", + "y": 7 + }, + { + "x": "2020-08-31", + "y": 5 + }, + { + "x": "2020-09-01", + "y": 6 + }, + { + "x": "2020-09-02", + "y": 5 + }, + { + "x": "2020-09-03", + "y": 9 + }, + { + "x": "2020-09-04", + "y": 6 + }, + { + "x": "2020-09-05", + "y": 3 + }, + { + "x": "2020-09-06", + "y": 1 + }, + { + "x": "2020-09-07", + "y": 5 + }, + { + "x": "2020-09-08", + "y": 3 + }, + { + "x": "2020-09-09", + "y": 6 + }, + { + "x": "2020-09-10", + "y": 5 + } + ], + "visitData2": [ + { + "x": "2020-08-25", + "y": 1 + }, + { + "x": "2020-08-26", + "y": 6 + }, + { + "x": "2020-08-27", + "y": 4 + }, + { + "x": "2020-08-28", + "y": 8 + }, + { + "x": "2020-08-29", + "y": 3 + }, + { + "x": "2020-08-30", + "y": 7 + }, + { + "x": "2020-08-31", + "y": 2 + } + ], + "salesData": [ + { + "x": "January", + "y": 1003 + }, + { + "x": "February", + "y": 878 + }, + { + "x": "March", + "y": 408 + }, + { + "x": "April", + "y": 426 + }, + { + "x": "May", + "y": 357 + }, + { + "x": "June", + "y": 1056 + }, + { + "x": "July", + "y": 369 + }, + { + "x": "August", + "y": 284 + }, + { + "x": "September", + "y": 1173 + }, + { + "x": "October", + "y": 639 + }, + { + "x": "November", + "y": 1117 + }, + { + "x": "December", + "y": 512 + } + ], + "searchData": [ + { + "index": 1, + "keyword": "Search Keyword-0", + "count": 190, + "range": 64, + "status": 1 + }, + { + "index": 2, + "keyword": "Search Keyword-1", + "count": 347, + "range": 19, + "status": 0 + }, + { + "index": 3, + "keyword": "Search Keyword-2", + "count": 314, + "range": 35, + "status": 1 + }, + { + "index": 4, + "keyword": "Search Keyword-3", + "count": 81, + "range": 59, + "status": 1 + }, + { + "index": 5, + "keyword": "Search Keyword-4", + "count": 235, + "range": 16, + "status": 1 + }, + { + "index": 6, + "keyword": "Search Keyword-5", + "count": 834, + "range": 46, + "status": 0 + }, + { + "index": 7, + "keyword": "Search Keyword-6", + "count": 806, + "range": 45, + "status": 1 + }, + { + "index": 8, + "keyword": "Search Keywords-7", + "count": 116, + "range": 96, + "status": 1 + }, + { + "index": 9, + "keyword": "Search Keyword-8", + "count": 355, + "range": 44, + "status": 1 + }, + { + "index": 10, + "keyword": "Search keyword-9", + "count": 903, + "range": 91, + "status": 0 + }, + { + "index": 11, + "keyword": "Search Keyword-10", + "count": 411, + "range": 64, + "status": 0 + }, + { + "index": 12, + "keyword": "Search Keyword-11", + "count": 266, + "range": 15, + "status": 1 + }, + { + "index": 13, + "keyword": "Search Keywords-12", + "count": 163, + "range": 59, + "status": 1 + }, + { + "index": 14, + "keyword": "Search Keyword-13", + "count": 815, + "range": 30, + "status": 1 + }, + { + "index": 15, + "keyword": "Search keyword-14", + "count": 130, + "range": 35, + "status": 1 + }, + { + "index": 16, + "keyword": "Search Keyword-15", + "count": 342, + "range": 8, + "status": 1 + }, + { + "index": 17, + "keyword": "Search Keyword-16", + "count": 970, + "range": 90, + "status": 1 + }, + { + "index": 18, + "keyword": "Search Keyword-17", + "count": 613, + "range": 24, + "status": 0 + }, + { + "index": 19, + "keyword": "Search Keyword-18", + "count": 807, + "range": 23, + "status": 1 + }, + { + "index": 20, + "keyword": "Search Keyword-19", + "count": 480, + "range": 21, + "status": 1 + }, + { + "index": 21, + "keyword": "Search Keyword-20", + "count": 57, + "range": 82, + "status": 0 + }, + { + "index": 22, + "keyword": "Search Keyword-21", + "count": 513, + "range": 89, + "status": 0 + }, + { + "index": 23, + "keyword": "Search Keyword-22", + "count": 733, + "range": 62, + "status": 1 + }, + { + "index": 24, + "keyword": "Search Keyword-23", + "count": 887, + "range": 82, + "status": 1 + }, + { + "index": 25, + "keyword": "Search Keyword-24", + "count": 668, + "range": 9, + "status": 0 + }, + { + "index": 26, + "keyword": "Search Keyword-25", + "count": 398, + "range": 99, + "status": 1 + }, + { + "index": 27, + "keyword": "Search Keyword-26", + "count": 73, + "range": 48, + "status": 1 + }, + { + "index": 28, + "keyword": "Search Keyword-27", + "count": 63, + "range": 53, + "status": 1 + }, + { + "index": 29, + "keyword": "Search Keywords-28", + "count": 23, + "range": 32, + "status": 1 + }, + { + "index": 30, + "keyword": "Search Keywords-29", + "count": 650, + "range": 48, + "status": 0 + }, + { + "index": 31, + "keyword": "Search Keyword-30", + "count": 752, + "range": 13, + "status": 1 + }, + { + "index": 32, + "keyword": "Search Keyword-31", + "count": 571, + "range": 0, + "status": 0 + }, + { + "index": 33, + "keyword": "Search Keyword-32", + "count": 778, + "range": 33, + "status": 1 + }, + { + "index": 34, + "keyword": "Search Keyword-33", + "count": 537, + "range": 1, + "status": 1 + }, + { + "index": 35, + "keyword": "Search keyword -34", + "count": 467, + "range": 17, + "status": 0 + }, + { + "index": 36, + "keyword": "Search keyword -35", + "count": 106, + "range": 72, + "status": 0 + }, + { + "index": 37, + "keyword": "Search keyword -36", + "count": 984, + "range": 67, + "status": 0 + }, + { + "index": 38, + "keyword": "Search key word -37", + "count": 850, + "range": 7, + "status": 1 + }, + { + "index": 39, + "keyword": "Search Keyword-38", + "count": 475, + "range": 46, + "status": 1 + }, + { + "index": 40, + "keyword": "Search Keyword-39", + "count": 943, + "range": 38, + "status": 0 + }, + { + "index": 41, + "keyword": "Search Keyword-40", + "count": 915, + "range": 37, + "status": 1 + }, + { + "index": 42, + "keyword": "Search Keyword-41", + "count": 852, + "range": 67, + "status": 0 + }, + { + "index": 43, + "keyword": "Search Keyword-42", + "count": 21, + "range": 29, + "status": 1 + }, + { + "index": 44, + "keyword": "Search Keyword-43", + "count": 224, + "range": 25, + "status": 0 + }, + { + "index": 45, + "keyword": "Search Keyword-44", + "count": 904, + "range": 23, + "status": 0 + }, + { + "index": 46, + "keyword": "Search Keyword-45", + "count": 240, + "range": 39, + "status": 0 + }, + { + "index": 47, + "keyword": "Search Keyword-46", + "count": 735, + "range": 33, + "status": 0 + }, + { + "index": 48, + "keyword": "Search Keyword-47", + "count": 612, + "range": 15, + "status": 1 + }, + { + "index": 49, + "keyword": "Search Keyword-48", + "count": 877, + "range": 62, + "status": 1 + }, + { + "index": 50, + "keyword": "Search Keyword-49", + "count": 146, + "range": 48, + "status": 1 + } + ], + "offlineData": [ + { + "name": "Stores 0", + "cvr": 0.8 + }, + { + "name": "Stores 1", + "cvr": 0.7 + }, + { + "name": "Stores 2", + "cvr": 0.4 + }, + { + "name": "Stores 3", + "cvr": 0.3 + }, + { + "name": "Stores 4", + "cvr": 0.1 + }, + { + "name": "Stores 5", + "cvr": 0.1 + }, + { + "name": "Stores 6", + "cvr": 0.6 + }, + { + "name": "Stores 7", + "cvr": 0.9 + }, + { + "name": "Stores 8", + "cvr": 0.3 + }, + { + "name": "Stores 9", + "cvr": 0.9 + } + ], + "offlineChartData": [ + { + "x": 1598358002462, + "y1": 63, + "y2": 21 + }, + { + "x": 1598359802462, + "y1": 50, + "y2": 73 + }, + { + "x": 1598361602462, + "y1": 35, + "y2": 99 + }, + { + "x": 1598363402462, + "y1": 105, + "y2": 105 + }, + { + "x": 1598365202462, + "y1": 86, + "y2": 22 + }, + { + "x": 1598367002462, + "y1": 90, + "y2": 47 + }, + { + "x": 1598368802462, + "y1": 41, + "y2": 44 + }, + { + "x": 1598370602462, + "y1": 71, + "y2": 16 + }, + { + "x": 1598372402462, + "y1": 63, + "y2": 72 + }, + { + "x": 1598374202462, + "y1": 95, + "y2": 35 + }, + { + "x": 1598376002462, + "y1": 14, + "y2": 54 + }, + { + "x": 1598377802462, + "y1": 48, + "y2": 65 + }, + { + "x": 1598379602462, + "y1": 84, + "y2": 28 + }, + { + "x": 1598381402462, + "y1": 41, + "y2": 74 + }, + { + "x": 1598383202462, + "y1": 37, + "y2": 38 + }, + { + "x": 1598385002462, + "y1": 106, + "y2": 94 + }, + { + "x": 1598386802462, + "y1": 70, + "y2": 53 + }, + { + "x": 1598388602462, + "y1": 48, + "y2": 89 + }, + { + "x": 1598390402462, + "y1": 60, + "y2": 12 + }, + { + "x": 1598392202462, + "y1": 48, + "y2": 52 + } + ], + "salesTypeData": [ + { + "x": "Household Appliance", + "y": 4544 + }, + { + "x": "Food and Drink", + "y": 3321 + }, + { + "x": "Personal Health", + "y": 3113 + }, + { + "x": "Clothing bags", + "y": 2341 + }, + { + "x": "Maternal and Child Products", + "y": 1231 + }, + { + "x": "other", + "y": 1231 + } + ], + "salesTypeDataOnline": [ + { + "x": "Household Appliances", + "y": 244 + }, + { + "x": "Eating wine", + "y": 321 + }, + { + "x": "Note Health", + "y": 311 + }, + { + "x": "Clothing Bags", + "y": 41 + }, + { + "x": "Mother and Baby Products", + "y": 121 + }, + { + "x": "other", + "y": 111 + } + ], + "salesTypeDataOffline": [ + { + "x": "Household Appliances", + "y": 99 + }, + { + "x": "Food and Drink", + "y": 188 + }, + { + "x": "Personal Health", + "y": 344 + }, + { + "x": "Clothing Bags", + "y": 255 + }, + { + "x": "other", + "y": 65 + } + ], + "radarData": [ + { + "name": "personal", + "label": "Quote", + "value": 10 + }, + { + "name": "personal", + "label": "Word of mouth", + "value": 8 + }, + { + "name": "personal", + "label": "Yield", + "value": 4 + }, + { + "name": "personal", + "label": "contribution", + "value": 5 + }, + { + "name": "personal", + "label": "heat", + "value": 7 + }, + { + "name": "team", + "label": "Quote", + "value": 3 + }, + { + "name": "team", + "label": "Word of mouth", + "value": 9 + }, + { + "name": "team", + "label": "Yield", + "value": 6 + }, + { + "name": "team", + "label": "contribution", + "value": 3 + }, + { + "name": "team", + "label": "heat", + "value": 1 + }, + { + "name": "department", + "label": "Quote", + "value": 4 + }, + { + "name": "department", + "label": "Word of mouth", + "value": 1 + }, + { + "name": "department", + "label": "Yield", + "value": 6 + }, + { + "name": "department", + "label": "contribution", + "value": 5 + }, + { + "name": "department", + "label": "heat", + "value": 7 + } + ] +} \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/wwwroot/data/fake_list.json b/NewWMSProject/src/NewWMSProject.Client/wwwroot/data/fake_list.json new file mode 100644 index 0000000..c7c44b4 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/wwwroot/data/fake_list.json @@ -0,0 +1,762 @@ +[ + { + "id": "fake-list-0", + "owner": "Fu Xiaoxiao", + "title": "Alipay", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png", + "cover": "https://gw.alipayobjects.com/zos/rmsportal/uMfMFlvUuceEyPpotzlq.png", + "status": "active", + "percent": 61, + "logo": "https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png", + "href": "https://ant.design", + "updatedAt": 1599562134333, + "createdAt": 1599562134333, + "subDescription": "It's an inner thing, which they can't reach and can't reach", + "description": "In the development process of Zhongtai products, different design specifications and implementation methods will appear, but there are often many similar pages and components, and these similar components will be separated into a set of standard specifications.", + "activeUser": 194692, + "newUser": 1107, + "star": 168, + "like": 166, + "message": 20, + "content": "Paragraph: Ant.design, the design platform of Ant Financial, seamlessly connects to the ecosystem of Ant Financial with minimal workload, and provides experience solutions that span design and development. Ant.design, the design platform of Ant Financial, uses the smallestWorkload, seamless access to Ant Financial's ecology, providing experience solutions that span design and development.", + "members": [ + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png", + "name": "Qu Lili", + "id": "member1" + }, + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png", + "name": "Wang Zhaojun", + "id": "member2" + }, + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png", + "name": "Dong Nana", + "id": "member3" + } + ] + }, + { + "id": "fake-list-1", + "owner": "Qu Lili", + "title": "Angular", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png", + "cover": "https://gw.alipayobjects.com/zos/rmsportal/iZBVOIhGJiAnhplqjvZW.png", + "status": "exception", + "percent": 67, + "logo": "https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png", + "href": "https://ant.design", + "updatedAt": 1599554934333, + "createdAt": 1599554934333, + "subDescription": "Hope is a good thing, maybe the best, good things will not die out", + "description": "In the development process of Zhongtai products, different design specifications and implementation methods will appear, but there are often many similar pages and components, and these similar components will be separated into a set of standard specifications.", + "activeUser": 187530, + "newUser": 1662, + "star": 184, + "like": 134, + "message": 20, + "content": "Paragraph: Ant.design, the design platform of Ant Financial, seamlessly connects to the ecosystem of Ant Financial with minimal workload, and provides experience solutions that span design and development. Ant.design, the design platform of Ant Financial, uses the smallestWorkload, seamless access to Ant Financial's ecology, providing experience solutions that span design and development.", + "members": [ + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png", + "name": "Qu Lili", + "id": "member1" + }, + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png", + "name": "Wang Zhaojun", + "id": "member2" + }, + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png", + "name": "Dong Nana", + "id": "member3" + } + ] + }, + { + "id": "fake-list-2", + "owner": "Lin Dongdong", + "title": "Ant Design", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png", + "cover": "https://gw.alipayobjects.com/zos/rmsportal/iXjVmWVHbCJAyqvDxdtx.png", + "status": "normal", + "percent": 88, + "logo": "https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png", + "href": "https://ant.design", + "updatedAt": 1599547734333, + "createdAt": 1599547734333, + "subDescription": "Life is like a box of chocolates, the results are often unexpected", + "description": "In the development process of Zhongtai products, different design specifications and implementation methods will appear, but there are often many similar pages and components, and these similar components will be separated into a set of standard specifications.", + "activeUser": 150552, + "newUser": 1281, + "star": 114, + "like": 124, + "message": 20, + "content": "Paragraph: Ant.design, the design platform of Ant Financial, seamlessly connects to the ecosystem of Ant Financial with minimal workload, and provides experience solutions that span design and development. Ant.design, the design platform of Ant Financial, uses the smallestWorkload, seamless access to Ant Financial's ecology, providing experience solutions that span design and development.", + "members": [ + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png", + "name": "Qu Lili", + "id": "member1" + }, + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png", + "name": "Wang Zhaojun", + "id": "member2" + }, + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png", + "name": "Dong Nana", + "id": "member3" + } + ] + }, + { + "id": "fake-list-3", + "owner": "Zhou Xingxing", + "title": "Ant Design Pro", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png", + "cover": "https://gw.alipayobjects.com/zos/rmsportal/gLaIAoVWTtLbBWZNYEMg.png", + "status": "active", + "percent": 59, + "logo": "https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png", + "href": "https://ant.design", + "updatedAt": 1599540534333, + "createdAt": 1599540534333, + "subDescription": "There are so many pubs in the town, but she just walked into my pub", + "description": "In the development process of middle and Taiwan products, different design specifications and implementation methods will appear, but there are often many similar pages and components, and these similar components will be separated into a set of standard specifications.", + "activeUser": 180730, + "newUser": 1941, + "star": 109, + "like": 120, + "message": 13, + "content": "Paragraph: Ant.design, the design platform of Ant Financial, seamlessly connects to the ecosystem of Ant Financial with minimal workload, and provides experience solutions that span design and development. Ant.design, the design platform of Ant Financial, uses the smallestWorkload, seamless access to Ant Financial's ecology, providing experience solutions that span design and development.", + "members": [ + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png", + "name": "Qu Lili", + "id": "member1" + }, + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png", + "name": "Wang Zhaojun", + "id": "member2" + }, + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png", + "name": "Dong Nana", + "id": "member3" + } + ] + }, + { + "id": "fake-list-4", + "owner": "Wu Jiahao", + "title": "Bootstrap", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png", + "cover": "https://gw.alipayobjects.com/zos/rmsportal/gLaIAoVWTtLbBWZNYEMg.png", + "status": "exception", + "percent": 83, + "logo": "https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png", + "href": "https://ant.design", + "updatedAt": 1599533334333, + "createdAt": 1599533334333, + "subDescription": "At that time I only thought about what I wanted, never wanted what I had", + "description": "In the development process of Zhongtai products, different design specifications and implementation methods will appear, but there are often many similar pages and components, and these similar components will be separated into a set of standard specifications.", + "activeUser": 159357, + "newUser": 1067, + "star": 139, + "like": 179, + "message": 14, + "content": "Paragraph: Ant.design, the design platform of Ant Financial, seamlessly connects to the ecosystem of Ant Financial with minimal workload, and provides experience solutions that span design and development. Ant.design, the design platform of Ant Financial, uses the smallestWorkload, seamless access to Ant Financial's ecology, providing experience solutions that span design and development.", + "members": [ + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png", + "name": "Qu Lili", + "id": "member1" + }, + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png", + "name": "Wang Zhaojun", + "id": "member2" + }, + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png", + "name": "Dong Nana", + "id": "member3" + } + ] + }, + { + "id": "fake-list-5", + "owner": "Zhu Fang You", + "title": "React", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png", + "cover": "https://gw.alipayobjects.com/zos/rmsportal/iXjVmWVHbCJAyqvDxdtx.png", + "status": "normal", + "percent": 92, + "logo": "https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png", + "href": "https://ant.design", + "updatedAt": 1599526134333, + "createdAt": 1599526134333, + "subDescription": "It's an inner thing, which they can't reach and can't reach", + "description": "In the development process of Zhongtai products, different design specifications and implementation methods will appear, but there are often many similar pages and components, and these similar components will be separated into a set of standard specifications.", + "activeUser": 126480, + "newUser": 1467, + "star": 151, + "like": 171, + "message": 11, + "content": "Paragraph: Ant.design, the design platform of Ant Financial, seamlessly connects to the ecosystem of Ant Financial with minimal workload, and provides experience solutions that span design and development. Ant.design, the design platform of Ant Financial, uses the smallestWorkload, seamless access to Ant Financial's ecology, providing experience solutions that span design and development.", + "members": [ + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png", + "name": "Qu Lili", + "id": "member1" + }, + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png", + "name": "Wang Zhaojun", + "id": "member2" + }, + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png", + "name": "Dong Nana", + "id": "member3" + } + ] + }, + { + "id": "fake-list-6", + "owner": "Fish Sauce", + "title": "Vue", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/ComBAopevLwENQdKWiIn.png", + "cover": "https://gw.alipayobjects.com/zos/rmsportal/iZBVOIhGJiAnhplqjvZW.png", + "status": "active", + "percent": 62, + "logo": "https://gw.alipayobjects.com/zos/rmsportal/ComBAopevLwENQdKWiIn.png", + "href": "https://ant.design", + "updatedAt": 1599518934333, + "createdAt": 1599518934333, + "subDescription": "Hope is a good thing, maybe the best, good things will not die out", + "description": "In the development process of Zhongtai products, different design specifications and implementation methods will appear, but there are often many similar pages and components, and these similar components will be separated into a set of standard specifications.", + "activeUser": 132662, + "newUser": 1788, + "star": 114, + "like": 115, + "message": 14, + "content": "Paragraph: Ant.design, the design platform of Ant Financial, seamlessly connects to the ecosystem of Ant Financial with minimal workload, and provides experience solutions that span design and development. Ant.design, the design platform of Ant Financial, uses the smallestWorkload, seamless access to Ant Financial's ecology, providing experience solutions that span design and development.", + "members": [ + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png", + "name": "Qu Lili", + "id": "member1" + }, + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png", + "name": "Wang Zhaojun", + "id": "member2" + }, + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png", + "name": "Dong Nana", + "id": "member3" + } + ] + }, + { + "id": "fake-list-7", + "owner": "Le Brother", + "title": "Webpack", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/nxkuOJlFJuAUhzlMTCEe.png", + "cover": "https://gw.alipayobjects.com/zos/rmsportal/uMfMFlvUuceEyPpotzlq.png", + "status": "exception", + "percent": 98, + "logo": "https://gw.alipayobjects.com/zos/rmsportal/nxkuOJlFJuAUhzlMTCEe.png", + "href": "https://ant.design", + "updatedAt": 1599511734333, + "createdAt": 1599511734333, + "subDescription": "Life is like a box of chocolates, the results are often unexpected", + "description": "In the development process of Zhongtai products, different design specifications and implementation methods will appear, but there are often many similar pages and components, and these similar components will be separated into a set of standard specifications.", + "activeUser": 190515, + "newUser": 1329, + "star": 105, + "like": 192, + "message": 11, + "content": "Paragraph: Ant.design, the design platform of Ant Financial, seamlessly connects to the ecosystem of Ant Financial with minimal workload, and provides experience solutions that span design and development. Ant.design, the design platform of Ant Financial, uses the smallestWorkload, seamless access to Ant Financial's ecology, providing experience solutions that span design and development.", + "members": [ + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png", + "name": "Qu Lili", + "id": "member1" + }, + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png", + "name": "Wang Zhaojun", + "id": "member2" + }, + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png", + "name": "Dong Nana", + "id": "member3" + } + ] + }, + { + "id": "fake-list-8", + "owner": "Tan Xiaoyi", + "title": "Alipay", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png", + "cover": "https://gw.alipayobjects.com/zos/rmsportal/uMfMFlvUuceEyPpotzlq.png", + "status": "normal", + "percent": 73, + "logo": "https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png", + "href": "https://ant.design", + "updatedAt": 1599504534333, + "createdAt": 1599504534333, + "subDescription": "There are so many pubs in the town, but she just walked into my pub", + "description": "In the development process of Zhongtai products, different design specifications and implementation methods will appear, but there are often many similar pages and components, and these similar components will be separated into a set of standard specifications.", + "activeUser": 146120, + "newUser": 1375, + "star": 144, + "like": 114, + "message": 14, + "content": "Paragraph: Ant.design, the design platform of Ant Financial, seamlessly connects to the ecosystem of Ant Financial with minimal workload, and provides experience solutions that span design and development. Ant.design, the design platform of Ant Financial, uses the smallestWorkload, seamless access to Ant Financial's ecology, providing experience solutions that span design and development.", + "members": [ + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png", + "name": "Qu Lili", + "id": "member1" + }, + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png", + "name": "Wang Zhaojun", + "id": "member2" + }, + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png", + "name": "Dong Nana", + "id": "member3" + } + ] + }, + { + "id": "fake-list-9", + "owner": "Zhong Ni", + "title": "Angular", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png", + "cover": "https://gw.alipayobjects.com/zos/rmsportal/iZBVOIhGJiAnhplqjvZW.png", + "status": "active", + "percent": 86, + "logo": "https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png", + "href": "https://ant.design", + "updatedAt": 1599497334333, + "createdAt": 1599497334333, + "subDescription": "At that time I only thought about what I wanted, never wanted what I had", + "description": "In the development process of Zhongtai products, different design specifications and implementation methods will appear, but there are often many similar pages and components, and these similar components will be separated into a set of standard specifications.", + "activeUser": 150379, + "newUser": 1405, + "star": 174, + "like": 123, + "message": 20, + "content": "Paragraph: Ant.design, the design platform of Ant Financial, seamlessly connects to the ecosystem of Ant Financial with minimal workload, and provides experience solutions that span design and development. Ant.design, the design platform of Ant Financial, uses the smallestWorkload, seamless access to Ant Financial's ecology, providing experience solutions that span design and development.", + "members": [ + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png", + "name": "Qu Lili", + "id": "member1" + }, + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png", + "name": "Wang Zhaojun", + "id": "member2" + }, + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png", + "name": "Dong Nana", + "id": "member3" + } + ] + }, + { + "id": "fake-list-10", + "owner": "Fu Xiaoxiao", + "title": "Ant Design", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png", + "cover": "https://gw.alipayobjects.com/zos/rmsportal/iXjVmWVHbCJAyqvDxdtx.png", + "status": "exception", + "percent": 99, + "logo": "https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png", + "href": "https://ant.design", + "updatedAt": 1599490134333, + "createdAt": 1599490134333, + "subDescription": "It's an inner thing, which they can't reach and can't reach", + "description": "In the development process of Zhongtai products, different design specifications and implementation methods will appear, but there are often many similar pages and components, and these similar components will be separated into a set of standard specifications.", + "activeUser": 192197, + "newUser": 1748, + "star": 200, + "like": 141, + "message": 20, + "content": "Paragraph: Ant.design, the design platform of Ant Financial, seamlessly connects to the ecosystem of Ant Financial with minimal workload, and provides experience solutions that span design and development. Ant.design, the design platform of Ant Financial, uses the smallestWorkload, seamless access to Ant Financial's ecology, providing experience solutions that span design and development.", + "members": [ + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png", + "name": "Qu Lili", + "id": "member1" + }, + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png", + "name": "Wang Zhaojun", + "id": "member2" + }, + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png", + "name": "Dong Nana", + "id": "member3" + } + ] + }, + { + "id": "fake-list-11", + "owner": "Qu Lili", + "title": "Ant Design Pro", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png", + "cover": "https://gw.alipayobjects.com/zos/rmsportal/gLaIAoVWTtLbBWZNYEMg.png", + "status": "normal", + "percent": 55, + "logo": "https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png", + "href": "https://ant.design", + "updatedAt": 1599482934333, + "createdAt": 1599482934333, + "subDescription": "Hope is a good thing, maybe the best, good things will not die out", + "description": "In the development process of Zhongtai products, different design specifications and implementation methods will appear, but there are often many similar pages and components, and these similar components will be separated into a set of standard specifications.", + "activeUser": 125408, + "newUser": 1937, + "star": 158, + "like": 183, + "message": 17, + "content": "Paragraph: Ant.design, the design platform of Ant Financial, seamlessly connects to the ecosystem of Ant Financial with minimal workload, and provides experience solutions that span design and development. Ant.design, the design platform of Ant Financial, uses the smallestWorkload, seamless access to Ant Financial's ecology, providing experience solutions that span design and development.", + "members": [ + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png", + "name": "Qu Lili", + "id": "member1" + }, + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png", + "name": "Wang Zhaojun", + "id": "member2" + }, + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png", + "name": "Dong Nana", + "id": "member3" + } + ] + }, + { + "id": "fake-list-12", + "owner": "Lin Dongdong", + "title": "Bootstrap", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png", + "cover": "https://gw.alipayobjects.com/zos/rmsportal/gLaIAoVWTtLbBWZNYEMg.png", + "status": "active", + "percent": 62, + "logo": "https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png", + "href": "https://ant.design", + "updatedAt": 1599475734333, + "createdAt": 1599475734333, + "subDescription": "Life is like a box of chocolates, the results are often unexpected", + "description": "In the development process of Zhongtai products, different design specifications and implementation methods will appear, but there are often many similar pages and components, and these similar components will be separated into a set of standard specifications.", + "activeUser": 150702, + "newUser": 1303, + "star": 143, + "like": 101, + "message": 20, + "content": "Paragraph: Ant.design, the design platform of Ant Financial, seamlessly connects to the ecosystem of Ant Financial with minimal workload, and provides experience solutions that span design and development. Ant.design, the design platform of Ant Financial, uses the smallestWorkload, seamless access to Ant Financial's ecology, providing experience solutions that span design and development.", + "members": [ + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png", + "name": "Qu Lili", + "id": "member1" + }, + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png", + "name": "Wang Zhaojun", + "id": "member2" + }, + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png", + "name": "Dong Nana", + "id": "member3" + } + ] + }, + { + "id": "fake-list-13", + "owner": "Zhou Xingxing", + "title": "React", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png", + "cover": "https://gw.alipayobjects.com/zos/rmsportal/iXjVmWVHbCJAyqvDxdtx.png", + "status": "exception", + "percent": 87, + "logo": "https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png", + "href": "https://ant.design", + "updatedAt": 1599468534333, + "createdAt": 1599468534333, + "subDescription": "There are so many pubs in the town, but she just walked into my pub", + "description": "In the development process of middle and Taiwan products, different design specifications and implementation methods will appear, but there are often many similar pages and components, and these similar components will be separated into a set of standard specifications.", + "activeUser": 106681, + "newUser": 1051, + "star": 124, + "like": 194, + "message": 17, + "content": "Paragraph: Ant.design, the design platform of Ant Financial, seamlessly connects to the ecosystem of Ant Financial with minimal workload, and provides experience solutions that span design and development. Ant.design, the design platform of Ant Financial, uses the smallestWorkload, seamless access to Ant Financial's ecology, providing experience solutions that span design and development.", + "members": [ + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png", + "name": "Qu Lili", + "id": "member1" + }, + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png", + "name": "Wang Zhaojun", + "id": "member2" + }, + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png", + "name": "Dong Nana", + "id": "member3" + } + ] + }, + { + "id": "fake-list-14", + "owner": "Wu Jiahao", + "title": "Vue", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/ComBAopevLwENQdKWiIn.png", + "cover": "https://gw.alipayobjects.com/zos/rmsportal/iZBVOIhGJiAnhplqjvZW.png", + "status": "normal", + "percent": 74, + "logo": "https://gw.alipayobjects.com/zos/rmsportal/ComBAopevLwENQdKWiIn.png", + "href": "https://ant.design", + "updatedAt": 1599461334333, + "createdAt": 1599461334333, + "subDescription": "At that time I only thought about what I wanted, never wanted what I had", + "description": "In the development process of Zhongtai products, different design specifications and implementation methods will appear, but there are often many similar pages and components, and these similar components will be separated into a set of standard specifications.", + "activeUser": 192810, + "newUser": 1574, + "star": 188, + "like": 124, + "message": 16, + "content": "Paragraph: Ant.design, the design platform of Ant Financial, seamlessly connects to the ecosystem of Ant Financial with minimal workload, and provides experience solutions that span design and development. Ant.design, the design platform of Ant Financial, uses the smallestWorkload, seamless access to Ant Financial's ecology, providing experience solutions that span design and development.", + "members": [ + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png", + "name": "Qu Lili", + "id": "member1" + }, + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png", + "name": "Wang Zhaojun", + "id": "member2" + }, + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png", + "name": "Dong Nana", + "id": "member3" + } + ] + }, + { + "id": "fake-list-15", + "owner": "Zhu Fang You", + "title": "Webpack", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/nxkuOJlFJuAUhzlMTCEe.png", + "cover": "https://gw.alipayobjects.com/zos/rmsportal/uMfMFlvUuceEyPpotzlq.png", + "status": "active", + "percent": 58, + "logo": "https://gw.alipayobjects.com/zos/rmsportal/nxkuOJlFJuAUhzlMTCEe.png", + "href": "https://ant.design", + "updatedAt": 1599454134333, + "createdAt": 1599454134333, + "subDescription": "It's an inner thing, which they can't reach and can't reach", + "description": "In the development process of Zhongtai products, different design specifications and implementation methods will appear, but there are often many similar pages and components, and these similar components will be separated into a set of standard specifications.", + "activeUser": 129396, + "newUser": 1837, + "star": 106, + "like": 160, + "message": 13, + "content": "Paragraph: Ant.design, the design platform of Ant Financial, seamlessly connects to the ecosystem of Ant Financial with minimal workload, and provides experience solutions that span design and development. Ant.design, the design platform of Ant Financial, uses the smallestWorkload, seamless access to Ant Financial's ecology, providing experience solutions that span design and development.", + "members": [ + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png", + "name": "Qu Lili", + "id": "member1" + }, + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png", + "name": "Wang Zhaojun", + "id": "member2" + }, + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png", + "name": "Dong Nana", + "id": "member3" + } + ] + }, + { + "id": "fake-list-16", + "owner": "Fish sauce", + "title": "Alipay", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png", + "cover": "https://gw.alipayobjects.com/zos/rmsportal/uMfMFlvUuceEyPpotzlq.png", + "status": "exception", + "percent": 77, + "logo": "https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png", + "href": "https://ant.design", + "updatedAt": 1599446934333, + "createdAt": 1599446934333, + "subDescription": "Hope is a good thing, maybe the best, good things will not die out", + "description": "In the development process of Zhongtai products, different design specifications and implementation methods will appear, but there are often many similar pages and components, and these similar components will be separated into a set of standard specifications.", + "activeUser": 101826, + "newUser": 1050, + "star": 124, + "like": 111, + "message": 12, + "content": "Paragraph: Ant.design, the design platform of Ant Financial, seamlessly connects to the ecosystem of Ant Financial with minimal workload, and provides experience solutions that span design and development. Ant.design, the design platform of Ant Financial, uses the smallestWorkload, seamless access to Ant Financial's ecology, providing experience solutions that span design and development.", + "members": [ + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png", + "name": "Qu Lili", + "id": "member1" + }, + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png", + "name": "Wang Zhaojun", + "id": "member2" + }, + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png", + "name": "Dong Nana", + "id": "member3" + } + ] + }, + { + "id": "fake-list-17", + "owner": "Le brother", + "title": "Angular", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png", + "cover": "https://gw.alipayobjects.com/zos/rmsportal/iZBVOIhGJiAnhplqjvZW.png", + "status": "normal", + "percent": 79, + "logo": "https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png", + "href": "https://ant.design", + "updatedAt": 1599439734333, + "createdAt": 1599439734333, + "subDescription": "Life is like a box of chocolates, the results are often unexpected", + "description": "In the development process of Zhongtai products, different design specifications and implementation methods will appear, but there are often many similar pages and components, and these similar components will be separated into a set of standard specifications.", + "activeUser": 156853, + "newUser": 1826, + "star": 118, + "like": 136, + "message": 19, + "content": "Paragraph: Ant.design, the design platform of Ant Financial, seamlessly connects to the ecosystem of Ant Financial with minimal workload, and provides experience solutions that span design and development. Ant.design, the design platform of Ant Financial, uses the smallestWorkload, seamless access to Ant Financial's ecology, providing experience solutions that span design and development.", + "members": [ + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png", + "name": "Qu Lili", + "id": "member1" + }, + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png", + "name": "Wang Zhaojun", + "id": "member2" + }, + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png", + "name": "Dong Na", + "id": "member3" + } + ] + }, + { + "id": "fake-list-18", + "owner": "Tan Xiaoyi", + "title": "Ant Design", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png", + "cover": "https://gw.alipayobjects.com/zos/rmsportal/iXjVmWVHbCJAyqvDxdtx.png", + "status": "active", + "percent": 77, + "logo": "https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png", + "href": "https://ant.design", + "updatedAt": 1599432534333, + "createdAt": 1599432534333, + "subDescription": "There are so many pubs in the town, but she just walked into my pub", + "description": "In the development process of Zhongtai products, different design specifications and implementation methods will appear, but there are often many similar pages and components, and these similar components will be separated into a set of standard specifications.", + "activeUser": 101902, + "newUser": 1352, + "star": 131, + "like": 118, + "message": 12, + "content": "Paragraph: Ant.design, the design platform of Ant Financial, seamlessly connects to the ecosystem of Ant Financial with minimal workload, and provides experience solutions that span design and development. Ant.design, the design platform of Ant Financial, uses the smallestWorkload, seamless access to Ant Financial's ecology, providing experience solutions that span design and development.", + "members": [ + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png", + "name": "Qu Lili", + "id": "member1" + }, + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png", + "name": "Wang Zhaojun", + "id": "member2" + }, + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png", + "name": "Dong Nana", + "id": "member3" + } + ] + }, + { + "id": "fake-list-19", + "owner": "Zoni", + "title": "Ant Design Pro", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png", + "cover": "https://gw.alipayobjects.com/zos/rmsportal/gLaIAoVWTtLbBWZNYEMg.png", + "status": "exception", + "percent": 75, + "logo": "https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png", + "href": "https://ant.design", + "updatedAt": 1599425334333, + "createdAt": 1599425334333, + "subDescription": "At that time I only thought about what I wanted, never wanted what I had", + "description": "Different design specifications and implementations in the research and development of the MTD product, but there are often many similar pages and components, which will be detached into a standard specification.", + "activeUser": 125791, + "newUser": 1504, + "star": 174, + "like": 195, + "message": 17, + "content": "Paragraph: Ant.design, the design platform of Ant Financial, seamlessly connects to the ecosystem of Ant Financial with minimal workload, and provides experience solutions that span design and development. Ant.design, the design platform of Ant Financial, uses the smallestWorkload, seamless access to Ant Financial's ecology, providing experience solutions that span design and development.", + "members": [ + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png", + "name": "Qu Lili", + "id": "member1" + }, + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png", + "name": "Wang Zhaojun", + "id": "member2" + }, + { + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png", + "name": "Dong Nana", + "id": "member3" + } + ] + } +] \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/wwwroot/data/menu.json b/NewWMSProject/src/NewWMSProject.Client/wwwroot/data/menu.json new file mode 100644 index 0000000..c0f9e75 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/wwwroot/data/menu.json @@ -0,0 +1,170 @@ +[ + { + "path": "/dashboard", + "name": "Dashboard", + "key": "dashboard", + "icon": "dashboard", + "children": [ + { + "path": "/", + "name": "Analysis Page", + "key": "dashboard.analysis" + }, + { + "path": "/dashboard/monitor", + "name": "Monitoring Page", + "key": "dashboard.monitor" + }, + { + "path": "/dashboard/workplace", + "name": "Workbench", + "key": "dashboard.workplace" + } + ] + }, + { + "path": "/form", + "name": "Form page", + "key": "form", + "icon": "form", + "children": [ + { + "path": "/form/basic-form", + "name": "Basic Form", + "key": "form.basic-form" + }, + { + "path": "/form/step-form", + "name": "Step Form", + "key": "form.step-form" + }, + { + "path": "/form/advanced-form", + "name": "Advanced Form", + "key": "form.advanced-form" + } + ] + }, + { + "path": "/list", + "name": "List", + "key": "list", + "icon": "table", + "children": [ + { + "path": "/list/search", + "name": "Search List", + "key": "list.search", + "children": [ + { + "path": "/list/search/articles", + "name": "Search List (Article)", + "key": "list.search.articles" + }, + { + "path": "/list/search/projects", + "name": "Search List (Items)", + "key": "list.search.projects" + }, + { + "path": "/list/search/applications", + "name": "Search List (Application)", + "key": "list.search.applications" + } + ] + }, + { + "path": "/list/table-list", + "name": "Inquiry Form", + "key": "list.table-list" + }, + { + "path": "/list/basic-list", + "name": "Basic List", + "key": "list.basic-list" + }, + { + "path": "/list/card-list", + "name": "Card List", + "key": "list.card-list" + } + ] + }, + { + "path": "/profile", + "name": "Profile", + "key": "profile", + "icon": "profile", + "children": [ + { + "path": "/profile/basic", + "name": "Basic Profile", + "key": "profile.basic" + }, + { + "path": "/profile/advanced", + "name": "Advanced Profile", + "key": "profile.advanced" + } + ] + }, + { + "path": "/result", + "name": "Result Pages", + "key": "result", + "icon": "check-circle", + "children": [ + { + "path": "/result/success", + "name": "Success Page", + "key": "result.success" + }, + { + "path": "/result/fail", + "name": "Failed page", + "key": "result.fail" + } + ] + }, + { + "path": "/exception", + "name": "Error Pages", + "key": "exception", + "icon": "exception", + "children": [ + { + "path": "/exception/403", + "name": "403", + "key": "exception.403" + }, + { + "path": "/exception/404", + "name": "404", + "key": "exception.404" + }, + { + "path": "/exception/500", + "name": "500", + "key": "exception.500" + } + ] + }, + { + "path": "/account", + "name": "权限管理", + "key": "account", + "icon": "user", + "children": [ + { + "path": "/account/center", + "name": "个人中心", + "key": "account.center" + }, + { + "path": "/account/settings", + "name": "权限设置", + "key": "account.settings" + } + ] + } +] \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/wwwroot/data/notice.json b/NewWMSProject/src/NewWMSProject.Client/wwwroot/data/notice.json new file mode 100644 index 0000000..8fd7b4a --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/wwwroot/data/notice.json @@ -0,0 +1,62 @@ +[ + { + "id": "xxx1", + "title": "Alipay", + "logo": "https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png", + "description": "It's an inner thing, which they can't reach and can't reach", + "updatedAt": "2020-08-26T10:21:19.719Z", + "member": "Scientific Moving Brick Group", + "href": "", + "memberLink": "" + }, + { + "id": "xxx2", + "title": "Angular", + "logo": "https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png", + "description": "Hope is a good thing, maybe the best, good things will not die out", + "updatedAt": "2017-07-24T00:00:00.000Z", + "member": "The whole group is Wu Yanzu", + "href": "", + "memberLink": "" + }, + { + "id": "xxx3", + "title": "Ant Design", + "logo": "https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png", + "description": "There are so many pubs in the town, but she just walked into my pub", + "updatedAt": "2020-08-26T10:21:19.719Z", + "member": "Second Girl Group", + "href": "", + "memberLink": "" + }, + { + "id": "xxx4", + "title": "Ant Design Pro", + "logo": "https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png", + "description": "At that time I only thought about what I wanted, never wanted what I had", + "updatedAt": "2017-07-23T00:00:00.000Z", + "member": "Programmer's Daily", + "href": "", + "memberLink": "" + }, + { + "id": "xxx5", + "title": "Bootstrap", + "logo": "https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png", + "description": "Shiver", + "updatedAt": "2017-07-23T00:00:00.000Z", + "member": "Highly Compelling Design Sky Mission", + "href": "", + "memberLink": "" + }, + { + "id": "xxx6", + "title": "React", + "logo": "https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png", + "description": "Life is like a box of chocolates, the results are often unexpected", + "updatedAt": "2017-07-23T00:00:00.000Z", + "member": "Lie to you to learn computer", + "href": "", + "memberLink": "" + } +] \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/wwwroot/data/notices.json b/NewWMSProject/src/NewWMSProject.Client/wwwroot/data/notices.json new file mode 100644 index 0000000..8f8efe3 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/wwwroot/data/notices.json @@ -0,0 +1,97 @@ +[ + { + "id": "000000001", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png", + "title": "You have received 14 new weekly reports", + "datetime": "2017-08-09", + "type": "notification" + }, + { + "id": "000000002", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/OKJXDXrmkNshAMvwtvhu.png", + "title":"The Qu Nini you recommended has passed the third round of interview", + "datetime": "2017-08-08", + "type": "notification" + }, + { + "id": "000000003", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/kISTdvpyTAhtGxpovNWd.png", + "title": "This template can distinguish multiple notification types", + "datetime": "2017-08-07", + "read": true, + "type": "notification" + }, + { + "id": "000000004", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/GvqBnKhFgObvnSGkDsje.png", + "title": "The icon on the left is used to distinguish different types", + "datetime": "2017-08-07", + "type": "notification" + }, + { + "id": "000000005", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png", + "title": "The content should not exceed two lines, and it will be automatically truncated when exceeded", + "datetime": "2017-08-07", + "type": "notification" + }, + { + "id": "000000006", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg", + "title": "Qu Lili commented on you", + "description": "Description information description information description information", + "datetime": "2017-08-07", + "type": "message", + "clickClose": true + }, + { + "id": "000000007", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg", + "title": "Zhu Fangyou replied to you", + "description": "This template is used to remind who has interacted with you, put the avatar of 'who' on the left", + "datetime": "2017-08-07", + "type": "message", + "clickClose": true + }, + { + "id": "000000008", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg", + "title": "Title", + "description": "This template is used to remind who has interacted with you, put the avatar of 'who' on the left", + "datetime": "2017-08-07", + "type": "message", + "clickClose": true + }, + { + "id": "000000009", + "title": "Task Name", + "description": "The task needs to be started before 20:00 on 2017-01-12", + "extra": "has not started", + "status": "todo", + "type": "event" + }, + { + "id": "000000010", + "title": "Emergency third-party code changes", + "description": "Guan Lin is submitted to 2017-01-06, you need to complete the code change task before 2017-01-07", + "extra": "Expiring soon", + "status": "urgent", + "type": "event" + }, + { + "id": "000000011", + "title": "Information Security Exam", + "description": "Assign Zhuer to complete the update and release before 2017-01-09", + "extra": "It took 8 days", + "status": "doing", + "type": "event" + }, + { + "id": "000000012", + "title": "ABCD Version release", + "description": "Guanlin submitted on 2017-01-06, the code change task must be completed before 2017-01-07", + "extra": "processing", + "status": "processing", + "type": "event" + } +] \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/wwwroot/favicon.ico b/NewWMSProject/src/NewWMSProject.Client/wwwroot/favicon.ico new file mode 100644 index 0000000..60a4278 Binary files /dev/null and b/NewWMSProject/src/NewWMSProject.Client/wwwroot/favicon.ico differ diff --git a/NewWMSProject/src/NewWMSProject.Client/wwwroot/index.html b/NewWMSProject/src/NewWMSProject.Client/wwwroot/index.html new file mode 100644 index 0000000..88e09d1 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/wwwroot/index.html @@ -0,0 +1,210 @@ + + + + + + + + + + + Ant Design Pro Blazor + + + + + + + + + + +
    + +
    + logo +
    +
    + +
    +
    +
    + + Ant Design Blazor
    +
    +
    +
    + + + + + + + + \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject.Client/wwwroot/pro_icon.svg b/NewWMSProject/src/NewWMSProject.Client/wwwroot/pro_icon.svg new file mode 100644 index 0000000..e075b78 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject.Client/wwwroot/pro_icon.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/NewWMSProject/src/NewWMSProject/Components/App.razor b/NewWMSProject/src/NewWMSProject/Components/App.razor new file mode 100644 index 0000000..8d0a1f0 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject/Components/App.razor @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NewWMSProject/src/NewWMSProject/Components/Pages/Error.razor b/NewWMSProject/src/NewWMSProject/Components/Pages/Error.razor new file mode 100644 index 0000000..576cc2d --- /dev/null +++ b/NewWMSProject/src/NewWMSProject/Components/Pages/Error.razor @@ -0,0 +1,36 @@ +@page "/Error" +@using System.Diagnostics + +Error + +

    Error.

    +

    An error occurred while processing your request.

    + +@if (ShowRequestId) +{ +

    + Request ID: @RequestId +

    +} + +

    Development Mode

    +

    + Swapping to Development environment will display more detailed information about the error that occurred. +

    +

    + The Development environment shouldn't be enabled for deployed applications. + It can result in displaying sensitive information from exceptions to end users. + For local debugging, enable the Development environment by setting the ASPNETCORE_ENVIRONMENT environment variable to Development + and restarting the app. +

    + +@code{ + [CascadingParameter] + private HttpContext? HttpContext { get; set; } + + private string? RequestId { get; set; } + private bool ShowRequestId => !string.IsNullOrEmpty(RequestId); + + protected override void OnInitialized() => + RequestId = Activity.Current?.Id ?? HttpContext?.TraceIdentifier; +} diff --git a/NewWMSProject/src/NewWMSProject/Components/_Imports.razor b/NewWMSProject/src/NewWMSProject/Components/_Imports.razor new file mode 100644 index 0000000..a589ee4 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject/Components/_Imports.razor @@ -0,0 +1,11 @@ +@using System.Net.Http +@using System.Net.Http.Json +@using Microsoft.AspNetCore.Components.Forms +@using Microsoft.AspNetCore.Components.Routing +@using Microsoft.AspNetCore.Components.Web +@using static Microsoft.AspNetCore.Components.Web.RenderMode +@using Microsoft.AspNetCore.Components.Web.Virtualization +@using Microsoft.JSInterop +@using NewWMSProject +@using NewWMSProject.Client +@using NewWMSProject.Components diff --git a/NewWMSProject/src/NewWMSProject/NewWMSProject.csproj b/NewWMSProject/src/NewWMSProject/NewWMSProject.csproj new file mode 100644 index 0000000..aca1651 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject/NewWMSProject.csproj @@ -0,0 +1,14 @@ + + + + net8.0 + enable + enable + + + + + + + + diff --git a/NewWMSProject/src/NewWMSProject/Program.cs b/NewWMSProject/src/NewWMSProject/Program.cs new file mode 100644 index 0000000..c0af60b --- /dev/null +++ b/NewWMSProject/src/NewWMSProject/Program.cs @@ -0,0 +1,65 @@ +using AntDesign.ProLayout; +using EFCoreDatabase.Data; +using EFCoreDatabase.Repositories.Implement; +using EFCoreDatabase.Repositories.Interface; +using Microsoft.EntityFrameworkCore; +using NewWMSProject.Client.Pages; +using NewWMSProject.Components; + +var builder = WebApplication.CreateBuilder(args); + +// Add services to the container. +builder.Services.AddRazorComponents() + .AddInteractiveServerComponents() + .AddInteractiveWebAssemblyComponents(); + +builder.Services.AddHttpContextAccessor(); + +builder.Services.AddAntDesign(); + +builder.Services.AddScoped(sp => +{ + var httpContext = sp.GetRequiredService().HttpContext; + if (httpContext != null) + { + return new HttpClient + { + BaseAddress = new Uri(httpContext.Request.Scheme + "://" + httpContext.Request.Host) + }; + } + return new HttpClient(); +}); + +NewWMSProject.Program.AddClientServices(builder.Services); + +builder.Services.Configure(builder.Configuration.GetSection("ProSettings")); + +builder.Services.AddDbContext(options => + options.UseDm("Server=127.0.0.1:5236;UserId=JIAMUSI_WMS_DATABASE;PWD=Siasun4813@;"), + ServiceLifetime.Transient); +builder.Services.AddScoped(); +var app = builder.Build(); + +// Configure the HTTP request pipeline. +if (app.Environment.IsDevelopment()) +{ + app.UseWebAssemblyDebugging(); +} +else +{ + app.UseExceptionHandler("/Error", createScopeForErrors: true); + // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. + app.UseHsts(); +} + +app.UseHttpsRedirection(); + +app.UseStaticFiles(); +app.UseAntiforgery(); + +app.MapRazorComponents() + .AddInteractiveServerRenderMode() + .AddInteractiveWebAssemblyRenderMode() + .AddAdditionalAssemblies(typeof(NewWMSProject.Client._Imports).Assembly); + +app.Run(); diff --git a/NewWMSProject/src/NewWMSProject/Properties/launchSettings.json b/NewWMSProject/src/NewWMSProject/Properties/launchSettings.json new file mode 100644 index 0000000..82ab36a --- /dev/null +++ b/NewWMSProject/src/NewWMSProject/Properties/launchSettings.json @@ -0,0 +1,41 @@ +{ + "$schema": "http://json.schemastore.org/launchsettings.json", + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:36944", + "sslPort": 44321 + } + }, + "profiles": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", + "applicationUrl": "http://localhost:5082", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", + "applicationUrl": "https://localhost:7199;http://localhost:5082", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } + } diff --git a/NewWMSProject/src/NewWMSProject/appsettings.Development.json b/NewWMSProject/src/NewWMSProject/appsettings.Development.json new file mode 100644 index 0000000..0c208ae --- /dev/null +++ b/NewWMSProject/src/NewWMSProject/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/NewWMSProject/src/NewWMSProject/appsettings.json b/NewWMSProject/src/NewWMSProject/appsettings.json new file mode 100644 index 0000000..10f68b8 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/NewWMSProject/src/NewWMSProject/wwwroot/app.css b/NewWMSProject/src/NewWMSProject/wwwroot/app.css new file mode 100644 index 0000000..2bd9b78 --- /dev/null +++ b/NewWMSProject/src/NewWMSProject/wwwroot/app.css @@ -0,0 +1,51 @@ +html, body { + font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; +} + +a, .btn-link { + color: #006bb7; +} + +.btn-primary { + color: #fff; + background-color: #1b6ec2; + border-color: #1861ac; +} + +.btn:focus, .btn:active:focus, .btn-link.nav-link:focus, .form-control:focus, .form-check-input:focus { + box-shadow: 0 0 0 0.1rem white, 0 0 0 0.25rem #258cfb; +} + +.content { + padding-top: 1.1rem; +} + +h1:focus { + outline: none; +} + +.valid.modified:not([type=checkbox]) { + outline: 1px solid #26b050; +} + +.invalid { + outline: 1px solid #e50000; +} + +.validation-message { + color: #e50000; +} + +.blazor-error-boundary { + background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121; + padding: 1rem 1rem 1rem 3.7rem; + color: white; +} + + .blazor-error-boundary::after { + content: "An error has occurred." + } + +.darker-border-checkbox.form-check-input { + border-color: #929292; +}