diff --git a/BBWY.Client/APIServices/QiKu/PackTaskService.cs b/BBWY.Client/APIServices/QiKu/PackTaskService.cs index c2cd725d..94a3794a 100644 --- a/BBWY.Client/APIServices/QiKu/PackTaskService.cs +++ b/BBWY.Client/APIServices/QiKu/PackTaskService.cs @@ -56,7 +56,8 @@ namespace BBWY.Client.APIServices int pageIndex = 1, int pageSize = 10, string SkuTitle = null, - string SpuTitle = null + string SpuTitle = null, + string PackUserName=null ) { @@ -74,7 +75,8 @@ namespace BBWY.Client.APIServices WayBillNo = WayBillNo, SourceExpressName = SourceExpressName, spuId, - orderSn + orderSn, + PackUserName }, null, HttpMethod.Post); } @@ -173,17 +175,17 @@ namespace BBWY.Client.APIServices } - /// - /// 获取打包人员列表 - /// - /// - public ApiResponse GetPackMembers() - { + ///// + ///// 获取打包人员列表 + ///// + ///// + //public ApiResponse GetPackMembers() + //{ - return SendRequest(globalContext.QKApiHost, "api/PackTask/SearchPackMembers", null - , null, HttpMethod.Get); + // return SendRequest(globalContext.QKApiHost, "api/PackTask/SearchPackMembers", null + // , null, HttpMethod.Get); - } + //} //public ApiResponse ShopTotal(string skuId = null, string taskId = null, // DateTime? startTime = null, diff --git a/BBWY.Client/APIServices/QiKu/PackUserService.cs b/BBWY.Client/APIServices/QiKu/PackUserService.cs new file mode 100644 index 00000000..c838f402 --- /dev/null +++ b/BBWY.Client/APIServices/QiKu/PackUserService.cs @@ -0,0 +1,92 @@ +using BBWY.Client.Models; +using BBWY.Client.Models.APIModel; +using BBWY.Client.Models.PackTask; +using BBWY.Common.Http; +using BBWY.Common.Models; +using System; +using System.Collections.Generic; +using System.Net.Http; +using System.Text; + +namespace BBWY.Client.APIServices.QiKu +{ + public class PackUserService : BaseApiService, IDenpendency + { + public PackUserService(RestApiService restApiService, GlobalContext globalContext) : base(restApiService, globalContext) + { + // globalContext.User.Id = 1668426942564536320; + } + + + public ApiResponse SearchPackerTask(PackTaskState? PackTaskState, string WayBillNo = null, string SourceExpressName = null, string departmentName = null, string skuId = null, string taskId = null, + string spuId = null, string orderSn = null, + + string ShopName = null, + int pageIndex = 1, + int pageSize = 10, + string SkuTitle = null, + string SpuTitle = null) + { + return SendRequest(globalContext.QKApiHost, $"api/PackUser/SearchPackerTask", + new + { + PackTaskState, + WayBillNo, + SourceExpressName, + departmentName, + skuId, + taskId, + spuId, + orderSn, + ShopName, + pageIndex, + pageSize, + SkuTitle, + SpuTitle, + UserId = globalContext.User.Id.ToString(), + } + , null, HttpMethod.Post); + } + + + public ApiResponse CompletedPackTask(long TaskId, decimal OneSkuWeight) + { + return SendRequest(globalContext.QKApiHost, $"api/PackUser/CompletedPackTask", + new + { + TaskId, + OneSkuWeight + } + , null, HttpMethod.Post); + } + + + public ApiResponse SearchPackerSalary(DateTime? StartTime, DateTime? EndTime, int pageIndex = 1, + int pageSize = 10) + { + return SendRequest(globalContext.QKApiHost, $"api/PackUser/SearchPackerSalary", + new + { + UserId = globalContext.User.Id.ToString(), + StartTime, + EndTime, + pageIndex, + pageSize + } + , null, HttpMethod.Post); + } + + + /// + /// 获取打包人员列表 + /// + /// + public ApiResponse GetPackMembers() + { + + return SendRequest(globalContext.QKApiHost, "api/PackUser/GetPackerList", null + , null, HttpMethod.Get); + + } + } +} diff --git a/BBWY.Client/App.xaml.cs b/BBWY.Client/App.xaml.cs index 57856af3..d508f4a2 100644 --- a/BBWY.Client/App.xaml.cs +++ b/BBWY.Client/App.xaml.cs @@ -62,12 +62,18 @@ namespace BBWY.Client userToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNjI3NDg2MDI0Mjk0NzMxNzc2IiwidGVhbUlkIjoiMTUxNjk3NDI1MDU0MjUwMTg4OCIsInNvblRlYW1JZHMiOiIxNTE2OTc0MjUwNTQyNTAxODg4IiwiZXhwIjoxNzI0NTY1ODU5fQ._ezJmsvaStab8nDPB7qeoc2aakWfhHbeqq_X_RQsc4s"; //小叶 - // userToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNDM5OTA3NDY1MDMzNDIwODAwIiwidGVhbUlkIjoiMTQzNjI4ODUwMDIzNTI0MzUyMCIsInNvblRlYW1JZHMiOiIiLCJleHAiOjE3MjYyMTkyMDZ9.AYGBxDtX7PD8O6NOzUhRurOEJynSzoRzZpuK7RUKCKg"; + // userToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNDM5OTA3NDY1MDMzNDIwODAwIiwidGVhbUlkIjoiMTQzNjI4ODUwMDIzNTI0MzUyMCIsInNvblRlYW1JZHMiOiIiLCJleHAiOjE3MjYyMTkyMDZ9.AYGBxDtX7PD8O6NOzUhRurOEJynSzoRzZpuK7RUKCKg"; //齐越陈默 // userToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNjI0OTUxNjgzNTc2NTAwMjI0IiwidGVhbUlkIjoiMTYyMDM0MjAxNDcwNjk3ODgxNiIsInNvblRlYW1JZHMiOiIxNjIwMzQyMDE0NzA2OTc4ODE2LDE2MjAzNDQxNDA4NTAwMDgwNjQsMTQxMDk1NTYwNDYxMjA5MTkwNCIsImV4cCI6MTcyNDkxNDM5M30.tIgo70tzRxZyUQkX1Jsh9I4ySciX0VC9HMMOoTnwVtM"; -#else + //包装组 + userToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxMzk1NzA4MjA4NjU1MzcyMjg4IiwidGVhbUlkIjoiMTcxODU0MTA2MzM5NzgzODg0OCIsInNvblRlYW1JZHMiOiIiLCJleHAiOjE3MzAyODcxNjh9.lpiLJjP0prtQgZZfpG0NN6n60LNKstbFCJc-nLgb62A"; + + + //齐越琳琳 + userToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNjY4NDI2OTQyNTY0NTM2MzIwIiwidGVhbUlkIjoiMTUxNjcxNTM3MjQ0NTcwMDA5NiIsInNvblRlYW1JZHMiOiIxNzE4NTQxMDYzMzk3ODM4ODQ4LDE1MTY3MTUzNzI0NDU3MDAwOTYiLCJleHAiOjE3MzAyODcxNjh9.6vXadZWQfhnxbR3320RloKv3LqqbNdZ7wDDfO3tY_5U"; + #else //var uid = e.Args.Count() > 0 ? e.Args.LastOrDefault(args => args.StartsWith("uid:")) : string.Empty; //if (string.IsNullOrEmpty(uid)) //{ diff --git a/BBWY.Client/GlobalContext.cs b/BBWY.Client/GlobalContext.cs index 76a68a88..0f362b99 100644 --- a/BBWY.Client/GlobalContext.cs +++ b/BBWY.Client/GlobalContext.cs @@ -13,7 +13,7 @@ namespace BBWY.Client { ShopServiceGroupList = new List(); ShopServiceGroupLowerList = new List(); - ClientVersion = "10192"; + ClientVersion = "10193"; } private User user; diff --git a/BBWY.Client/Models/APIModel/Response/PackUser/SearchPackerSalaryResponse.cs b/BBWY.Client/Models/APIModel/Response/PackUser/SearchPackerSalaryResponse.cs new file mode 100644 index 00000000..d61d2298 --- /dev/null +++ b/BBWY.Client/Models/APIModel/Response/PackUser/SearchPackerSalaryResponse.cs @@ -0,0 +1,98 @@ +using GalaSoft.MvvmLight.Command; +using System; +using System.Collections.Generic; +using System.Text; +using System.Windows.Input; + +namespace BBWY.Client.Models.APIModel +{ + public class SearchPackerSalaryResponse + { + /// + /// 总天数 + /// + public int TotalCount { get; set; } + /// + /// 日薪列表 + /// + public List PackerDaySalaries { get; set; } + + /// + /// 总工资 + /// + public decimal TotalSalary { get; set; } + + /// + /// 总任务数 + /// + public int TotalTaskCount { get; set; } + /// + /// 总件数 + /// + public int TotalSkuItemCount { get; set; } + + } + + public class PackerDaySalary : NotifyObject + { + + public PackerDaySalary() + { + HideCommand = new RelayCommand(Hide); + } + + private void Hide() + { + IsHide = !IsHide; + } + + public ICommand HideCommand { get; set; } + private bool isHide=true; + + public bool IsHide { get => isHide; set { Set(ref isHide, value); } } + + /// + /// 日期 + /// + public DateTime Date { get; set; } + + /// + /// 花名 + /// + public string UserName { get; set; } + + /// + /// 当日总日新 + /// + public decimal DaySalary { get; set; } + /// + /// 当日任务量 + /// + public int DayTaskCount { get; set; } + /// + /// 当日总件数 + /// + public int DayTaskSkuItemCount { get; set; } + /// + /// 日薪明细列表 + /// + public List PackerTaskSalaries { get; set; } + } + + public class PackerTaskSalary + { + /// + /// 任务收益 + /// + public decimal TaskSalary { get; set; } + /// + /// 任务id + /// + public long TaskId { get; set; } + + /// + /// 任务件数 + /// + public int TaskSkuItemCount { get; set; } + } +} diff --git a/BBWY.Client/Models/APIModel/Response/PackUser/SearchPackerTaskResponse.cs b/BBWY.Client/Models/APIModel/Response/PackUser/SearchPackerTaskResponse.cs new file mode 100644 index 00000000..87289485 --- /dev/null +++ b/BBWY.Client/Models/APIModel/Response/PackUser/SearchPackerTaskResponse.cs @@ -0,0 +1,169 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Text; +using System.Windows.Controls; + +namespace BBWY.Client.Models.APIModel +{ + public class SearchPackerTaskResponse + { + /// + /// 任务总量 + /// + public int TotalCount { get; set; } + + /// + /// 包装员任务数据 + /// + public List Items { get; set; } + /// + /// 待包装数 + /// + public string WaitPackCount { get; set; } + } + + public class PackerTaskData:NotifyObject + { + + + /// + /// 图片链接 + /// + public string Logo { get; set; } + + /// + /// 任务id + /// + public long TaskId { get; set; } + + /// + /// 任务状态 + /// + public TaskState? TaskState { get; set; } + + + /// + /// 任务状态 + /// + public PackTaskState? PackTaskState { get; set; } + + /// + /// 货号品名 + /// + public string BrandName { get; set; } + + /// + /// skuid + /// + public string SkuId { get; set; } + /// + /// SKU标题 + /// + public string SkuName { get; set; } + + /// + /// 打包类型(单件=0,多件=1) + /// + public int PackType { get; set; } + + /// + /// 基础包装(快递袋=0,纸箱=1,麻袋=2) + /// + public int BasicPack { get; set; } + + /// + /// 包装员收益 + /// + public decimal PackerFee { get; set; } + + /// + /// 合格证位置(外部包装=0,产品包装=1) + /// + public CertificatePosition? CertificatePosition { get; set; } + + + /// + /// sku配件名称 + /// + public string SkuGoodsTitle { get; set; } + + /// + /// 配件数 + /// + public int GoodsNumber { get; set; } + + /// + /// 条形码数据 + /// + public BarCodeModel BarCodeDTO { get; set; } + + /// + /// 合格证数据 + /// + public CertificateModel[] Cers { get; set; } + + + + /// + /// 设置打包时间 + /// + public DateTime? SetPackUserTaskTime { get; set; } + + /// + /// 打包完成时间(超时时间) + /// + public DateTime? PackCompletionOverTime { get; set; } + + /// + /// 打包完成时间 + /// + public DateTime? PackCompletionTime { get; set; } + + /// + /// 打包超时备注消息 + /// + public string PackOverTimeMarkMsg { get; set; } + + ///// 备注消息列表 + ///// + //public string ShowMarkMessage { get; set; } + + /// + /// 打包任务数 + /// + [DefaultValue(0)] + public int? PackCount { get; set; } + + + /// + /// 工序套餐名称 + /// + public string ProcessComboName { get; set; } + + + ///// + ///// 工序套餐任务量 + ///// + //public int ProcessComboTaskCount { get; set; } + + /// + /// 任务耗材信息 + /// + public string TaskConsumableMsg { get; set; } + /// + /// 消息列表 + /// + public List MarkMessageModelList { get; set; } + + } + + public class MarkMessageModel + { + public string MarkMessage { get; set; } + + public DateTime? CreateTime { get; set; } + + public string UserName { get; set; } + } +} diff --git a/BBWY.Client/Models/Enums.cs b/BBWY.Client/Models/Enums.cs index db4dbfc3..fb89d0a8 100644 --- a/BBWY.Client/Models/Enums.cs +++ b/BBWY.Client/Models/Enums.cs @@ -568,4 +568,13 @@ 自送 = 1, 快递配送 = 2 } + + /// + /// 打包人任务状态(待包装 = 1, 已完成 = 2) + /// + public enum PackTaskState + { + 待包装 = 1, 已完成 = 2 + } + } diff --git a/BBWY.Client/Models/PackUser/PackerTaskModel.cs b/BBWY.Client/Models/PackUser/PackerTaskModel.cs new file mode 100644 index 00000000..3dff6ca3 --- /dev/null +++ b/BBWY.Client/Models/PackUser/PackerTaskModel.cs @@ -0,0 +1,43 @@ +using BBWY.Client.Models.APIModel; +using System; +using System.Collections.Generic; +using System.Text; + +namespace BBWY.Client.Models.PackUser +{ + public class PackerTaskModel: PackerTaskData + { + private string packRemainTime; + /// + /// 打包剩余时间 + /// + public string PackRemainTime { get => packRemainTime; set { Set(ref packRemainTime, value); } } + + + private bool isPackOverTime; + public bool IsPackOverTime { get => isPackOverTime; set { Set(ref isPackOverTime, value); } } + + + + private bool showSendMsg = false; + /// + /// 展示留言信息 + /// + public bool ShowSendMsg { get => showSendMsg; set { Set(ref showSendMsg, value); } } + + + private string taskMarkMsg; + /// + /// 展示留言信息 + /// + public string TaskMarkMsg { get => taskMarkMsg; set { Set(ref taskMarkMsg, value); } } + + + + private bool showMoreMsg = false; + /// + /// 展示留言信息 + /// + public bool ShowMoreMsg { get => showMoreMsg; set { Set(ref showMoreMsg, value); } } + } +} diff --git a/BBWY.Client/ViewModels/BaseVM.cs b/BBWY.Client/ViewModels/BaseVM.cs index a48a7b9c..07eb608f 100644 --- a/BBWY.Client/ViewModels/BaseVM.cs +++ b/BBWY.Client/ViewModels/BaseVM.cs @@ -21,7 +21,7 @@ namespace BBWY.Client.ViewModels VMId = Guid.NewGuid(); LoadCommand = new RelayCommand(Load); UnloadCommand = new RelayCommand(Unload); - + CopyTextCommand = new RelayCommand(s => { try diff --git a/BBWY.Client/ViewModels/MainViewModel.cs b/BBWY.Client/ViewModels/MainViewModel.cs index cd127a99..204425e7 100644 --- a/BBWY.Client/ViewModels/MainViewModel.cs +++ b/BBWY.Client/ViewModels/MainViewModel.cs @@ -127,7 +127,23 @@ namespace BBWY.Client.ViewModels /// private void CreateMenu() { - if (this.packDepartment.Contains(GlobalContext.User.TeamName) || packDepartment.Any(m => GlobalContext.User.SonDepartmentNames.Contains(m))) + if (GlobalContext.User.TeamName == "包装组"|| packDepartment.Any(m => GlobalContext.User.SonDepartmentNames.Contains("包装组"))) + { + App.Current.Dispatcher.Invoke(() => + { + MenuList.Add(new MenuModel() + { + Name = "齐库打包端", + ChildList = new List() + { + new MenuModel(){ Name="包装任务",Url="/Views/PackerTask/PackerTaskList.xaml" }, + new MenuModel(){ Name="收益账单",Url="/Views/PackerTask/PackerSalaryControl.xaml" } + + } + }); + }); + } + else if (this.packDepartment.Contains(GlobalContext.User.TeamName) || packDepartment.Any(m => GlobalContext.User.SonDepartmentNames.Contains(m))) { App.Current.Dispatcher.Invoke(() => @@ -319,7 +335,7 @@ namespace BBWY.Client.ViewModels var res = packTaskExpressService.GetExpressNameList(); if (res.Success) { - GlobalContext.ExpressNameList= res.Data; + GlobalContext.ExpressNameList = res.Data; } } catch (Exception ex) @@ -345,7 +361,7 @@ namespace BBWY.Client.ViewModels - if (GlobalContext.User.TeamName == "刷单组" || this.packDepartment.Contains(GlobalContext.User.TeamName) || packDepartment.Any(m => GlobalContext.User.SonDepartmentNames.Contains(m)) || + if (GlobalContext.User.TeamName == "包装组"|| GlobalContext.User.TeamName == "刷单组" || this.packDepartment.Contains(GlobalContext.User.TeamName) || packDepartment.Any(m => GlobalContext.User.SonDepartmentNames.Contains(m)) || managerDepartment.Contains(GlobalContext.User.TeamName) || managerDepartment.Any(m => GlobalContext.User.SonDepartmentNames.Contains(m))) { @@ -411,7 +427,7 @@ namespace BBWY.Client.ViewModels if (this.packDepartment.Contains(GlobalContext.User.TeamName)) return; - if (GlobalContext.User.TeamName == "刷单组") + if (GlobalContext.User.TeamName == "包装组"||GlobalContext.User.TeamName == "刷单组") return; App.Current.Dispatcher.Invoke(() => diff --git a/BBWY.Client/ViewModels/PackTask/PackDetailViewModel.cs b/BBWY.Client/ViewModels/PackTask/PackDetailViewModel.cs index 9406456e..33d5223b 100644 --- a/BBWY.Client/ViewModels/PackTask/PackDetailViewModel.cs +++ b/BBWY.Client/ViewModels/PackTask/PackDetailViewModel.cs @@ -516,6 +516,9 @@ namespace BBWY.Client.ViewModels.PackTask public ICommand SetCustomProcessPriceCommand { get; set; } readonly PackTaskService packTaskService; + + readonly PackUserService packUserService; + readonly PackDetailService packDetailService; readonly ProcessService processService; private ObservableCollection increateList = new ObservableCollection(); @@ -612,7 +615,7 @@ namespace BBWY.Client.ViewModels.PackTask } - public PackDetailViewModel(PackTaskService packTaskService, PackDetailService packDetailService, ProcessService processService)//, long taskId + public PackDetailViewModel(PackTaskService packTaskService, PackDetailService packDetailService, ProcessService processService, PackUserService packUserService)//, long taskId { this.processService = processService; this.packTaskService = packTaskService; @@ -625,7 +628,7 @@ namespace BBWY.Client.ViewModels.PackTask SetAllCountCommand = new RelayCommand(SetAllCount); SetCustomProcessPriceCommand = new RelayCommand(SetCustomProcessPrice); AddPackUserCommand = new RelayCommand(AddPackUser); - + this.packUserService = packUserService; } private void AddPackUser() @@ -692,7 +695,7 @@ namespace BBWY.Client.ViewModels.PackTask LoadList = new List(); Task task = Task.Factory.StartNew(() => { - var resMember = this.packTaskService.GetPackMembers();//成员表 + var resMember = this.packUserService.GetPackMembers();//成员表 if (resMember.Success) { MemberList = new ObservableCollection(); diff --git a/BBWY.Client/ViewModels/PackTask/PackServiceViewModel.cs b/BBWY.Client/ViewModels/PackTask/PackServiceViewModel.cs index d8512662..8644ec05 100644 --- a/BBWY.Client/ViewModels/PackTask/PackServiceViewModel.cs +++ b/BBWY.Client/ViewModels/PackTask/PackServiceViewModel.cs @@ -1,6 +1,7 @@ using AutoMapper; using AutoMapper.Internal; using BBWY.Client.APIServices; +using BBWY.Client.APIServices.QiKu; using BBWY.Client.Helpers; using BBWY.Client.Models; using BBWY.Client.Models.APIModel.Request; @@ -229,7 +230,7 @@ namespace BBWY.Client.ViewModels.PackTask } - public PackServiceViewModel(PackTaskService packTaskService, ConsumableService consumableService, PackDetailService packDetailService)//, long taskId + public PackServiceViewModel(PackTaskService packTaskService, ConsumableService consumableService, PackDetailService packDetailService, PackUserService packUserService)//, long taskId { //TaskId = taskId; this.consumableService = consumableService; @@ -245,12 +246,13 @@ namespace BBWY.Client.ViewModels.PackTask AddConsumableCommand = new RelayCommand(AddConsumable); UpLoadPackCommand = new RelayCommand(UpLoadPack); SetAllCountCommand = new RelayCommand(SetAllCount); + this.packUserService = packUserService; //加载数据 //LoadPackDatas(); } - + readonly PackUserService packUserService; /// /// 加载任务数据 /// @@ -270,7 +272,7 @@ namespace BBWY.Client.ViewModels.PackTask LoadList = new List(); Task task = Task.Factory.StartNew(() => { - var resMember = this.packTaskService.GetPackMembers();//成员表 + var resMember = this.packUserService.GetPackMembers();//成员表 if (resMember.Success) { MemberList = new ObservableCollection(); @@ -403,7 +405,7 @@ namespace BBWY.Client.ViewModels.PackTask IncrementProcessList.Add(new PackItemModel() { MemberList = MemberList, - PackServiceList = PackServiceList.Copy(), + PackServiceList = PackServiceList?.Copy(), ItemCount = item.ItemCount, ItemName = item.ItemName, SelectId = item.SelectId, @@ -425,7 +427,7 @@ namespace BBWY.Client.ViewModels.PackTask BasicPackProcessList.Add(new PackItemModel() { MemberList = MemberList, - PackServiceList = BasicPackServiceList.Copy(), + PackServiceList = BasicPackServiceList?.Copy(), ItemCount = item.ItemCount, ItemName = item.ItemName, SelectId = item.SelectId, diff --git a/BBWY.Client/ViewModels/PackTask/PublishTaskViewModel.cs b/BBWY.Client/ViewModels/PackTask/PublishTaskViewModel.cs index 68727025..9c62e0fe 100644 --- a/BBWY.Client/ViewModels/PackTask/PublishTaskViewModel.cs +++ b/BBWY.Client/ViewModels/PackTask/PublishTaskViewModel.cs @@ -787,7 +787,7 @@ namespace BBWY.Client.ViewModels.PackTask } else { - distributionMode = Models.DistributionMode.自送; + DistributionMode = Models.DistributionMode.自送; } diff --git a/BBWY.Client/ViewModels/PackTask/WareHouseListViewModel.cs b/BBWY.Client/ViewModels/PackTask/WareHouseListViewModel.cs index 9560af0d..141fe8c1 100644 --- a/BBWY.Client/ViewModels/PackTask/WareHouseListViewModel.cs +++ b/BBWY.Client/ViewModels/PackTask/WareHouseListViewModel.cs @@ -289,6 +289,8 @@ namespace BBWY.Client.ViewModels.PackTask Set(ref searchWayBillNo, value); } } + + private string searchExpressName; public string SearchExpressName { @@ -298,6 +300,16 @@ namespace BBWY.Client.ViewModels.PackTask } } + private string searchPackUserName; + public string SearchPackUserName + { + get => searchPackUserName; set + { + Set(ref searchPackUserName, value); + } + } + + public string fallWareWaitConfigureCount; public string FallWareWaitConfigureCount { get => fallWareWaitConfigureCount; set { Set(ref fallWareWaitConfigureCount, value); } } @@ -448,6 +460,14 @@ namespace BBWY.Client.ViewModels.PackTask private int pageSize = 10; private int orderCount;//总数量 + public int PageIndex { get => pageIndex; set { Set(ref pageIndex, value); } } + + public int PageSize { get => pageSize; set { Set(ref pageSize, value); } } + + public int OrderCount { get => orderCount; set { Set(ref orderCount, value); } } + + private bool isLoading; + public bool IsLoading { get => isLoading; set { Set(ref isLoading, value); } } private Visibility tipVisitity; /// /// @@ -527,18 +547,6 @@ namespace BBWY.Client.ViewModels.PackTask public string WaitTransportCount { get => waitTransportCount; set { Set(ref waitTransportCount, value); } } - - public int PageIndex { get => pageIndex; set { Set(ref pageIndex, value); } } - - public int PageSize { get => pageSize; set { Set(ref pageSize, value); } } - - public int OrderCount { get => orderCount; set { Set(ref orderCount, value); } } - - private bool isLoading; - public bool IsLoading { get => isLoading; set { Set(ref isLoading, value); } } - - - public string searchDepartment; public string SearchDepartment { @@ -1764,7 +1772,7 @@ namespace BBWY.Client.ViewModels.PackTask { PackTaskList = new ObservableCollection();//初始化数据 var datas = packTaskService.SearchTaskList(SearchWayBillNo, SearchExpressName, SearchDepartment, SearchSkuId, SearchTaskId, SearchSpuId, SearchOrderSn, this.TaskState, SearchShopName, - PageIndex, PageSize, SearchSkuTitle, SearchSpuTitle); + PageIndex, PageSize, SearchSkuTitle, SearchSpuTitle, SearchPackUserName); stopwatch.Stop(); App.Current.Dispatcher.BeginInvoke(new Action(() => { diff --git a/BBWY.Client/ViewModels/PackerTask/PackerSalaryViewModel.cs b/BBWY.Client/ViewModels/PackerTask/PackerSalaryViewModel.cs new file mode 100644 index 00000000..2563c55b --- /dev/null +++ b/BBWY.Client/ViewModels/PackerTask/PackerSalaryViewModel.cs @@ -0,0 +1,212 @@ +using BBWY.Client.APIServices; +using BBWY.Client.APIServices.QiKu; +using BBWY.Client.Models.APIModel; +using BBWY.Common.Models; +using BBWY.Controls; +using GalaSoft.MvvmLight.Command; +using Microsoft.Win32; +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Input; + +namespace BBWY.Client.ViewModels.PackerTask +{ + public class PackerSalaryViewModel:BaseVM,IDenpendency + { + public PackUserService packUserService; + public PackTaskService packTaskService; + private bool isLoading; + private DateTime startTime; + private DateTime endTime; + private int pageIndex = 1; + private int pageSize = 20; + private int orderCount; + private List packUserSalaryList; + + private string searchUserName; + + /// + /// 总工资 + /// + public decimal totalSalary; + + /// + /// 总任务数 + /// + public int totalTaskCount; + /// + /// 总件数 + /// + public int totalSkuItemCount; + + public int TotalTaskCount { get => totalTaskCount; set { Set(ref totalTaskCount, value); } } + public int TotalSkuItemCount { get => totalSkuItemCount; set { Set(ref totalSkuItemCount, value); } } + + public decimal TotalSalary { get => totalSalary; set { Set(ref totalSalary, value); } } + + public string SearchUserName { get => searchUserName; set { Set(ref searchUserName, value); } } + public List PackUserSalaryList { get => packUserSalaryList; set { Set(ref packUserSalaryList, value); } } + + public bool IsLoading { get => isLoading; set { Set(ref isLoading, value); } } + + public DateTime StartTime { get => startTime; set { Set(ref startTime, value); } } + + public DateTime EndTime { get => endTime; set { Set(ref endTime, value); } } + + public int PageIndex { get => pageIndex; set { Set(ref pageIndex, value); } } + + public int PageSize { get => pageSize; set { Set(ref pageSize, value); } } + + public int OrderCount { get => orderCount; set { Set(ref orderCount, value); } } + + public ICommand SearchPackUserSalaryCommand { get; set; } + + public ICommand ExportCommand { get; set; } + + public ICommand OrderPageIndexChangedCommand { get; set; } + + public ICommand SetSearchDateCommand { get; set; } + + public PackerSalaryViewModel(PackTaskService packTaskService, PackUserService packUserService) + { + this.packTaskService = packTaskService; + + OrderPageIndexChangedCommand = new RelayCommand(p => + { + LoadOrder(p.PageIndex); + }); + + SearchPackUserSalaryCommand = new RelayCommand(SearchPackUserSalary); + + StartTime = DateTime.Now; + EndTime = DateTime.Now; + SearchPackUserSalary(); + SetSearchDateCommand = new RelayCommand(d => + { + EndTime = d == 1 ? DateTime.Now.Date.AddDays(-1) : DateTime.Now; + StartTime = DateTime.Now.Date.AddDays(d * -1); + PageIndex = 1; + Task.Factory.StartNew(() => LoadOrder(1)); //点击日期查询订单 + }); + ExportCommand = new RelayCommand(Export); + this.packUserService = packUserService; + LoadOrder(1); + } + + private void LoadOrder(int pageIndex) + { + PageIndex = pageIndex; + SearchPackUserSalary(); + } + private void SearchPackUserSalary() + { + PackUserSalaryList = new List (); + Task.Factory.StartNew(() => + { + IsLoading = true; + try + { + var res = packUserService.SearchPackerSalary(StartTime.Date, EndTime.Date, PageIndex, PageSize); + if (res != null && res.Success) + { + OrderCount = res.Data.TotalCount; + TotalSalary = res.Data.TotalSalary; + TotalSkuItemCount = res.Data.TotalSkuItemCount; + TotalTaskCount = res.Data.TotalTaskCount; + App.Current.Dispatcher.Invoke(() => + { + PackUserSalaryList = res.Data.PackerDaySalaries; + }); + + + + + //foreach (var packUserSalary in res.Data.PackUserSalaries) + //{ + // App.Current.Dispatcher.Invoke(() => + // { + // PackUserSalaryList.Add(packUserSalary); + // }); + //} + } + else + { + App.Current.Dispatcher.Invoke(() => + { + PackUserSalaryList = new List(); + }); + } + + } + catch (Exception ex) + { + + MessageBox.Show(ex.Message); + } + + + IsLoading = false; + }); + + } + + private void Export() + { + + SaveFileDialog save = new SaveFileDialog(); + save.Filter = "csv files(*.csv)|*.csv"; + var result = save.ShowDialog(); + if (result == null || !result.Value) + { + return; + } + + string fileName = save.FileName; + + Task.Factory.StartNew(() => + { + IsLoading = true; + var res = packTaskService.TotalPackUserSalary(SearchUserName, StartTime, EndTime, 0, 0);//获取全部数据 + if (res.Success) + { + //string title = "任务ID,日期,是否结清,部门,店铺,对接人,sku名称,sku数量,增值服务,打包服务,耗材服务,原价,促销折扣,结算价格,对接备注"; + List exportList = new List(); + string title = "日期,花名,总收益"; + if (res.Data.TotalCount > 0) + { + foreach (var item in res.Data.PackUserSalaries[0].IncomeItems) + { + title += $",{item.Name}"; + } + exportList.Add(title); + + foreach (var packUserSalary in res.Data.PackUserSalaries) + { + List rowList = new List(); + rowList.Add(packUserSalary.Date.ToString("yyyy-MM-dd")); + rowList.Add(packUserSalary.PackUserName); + rowList.Add(packUserSalary.TotalIncome.ToString("0.00")); + foreach (var incomeItem in packUserSalary.IncomeItems) + { + rowList.Add(incomeItem.TotalPrice.ToString()); + } + + exportList.Add(string.Join(",", rowList)); + } + + + } + //var excelList = res.Data.ShopTotals.Select(x => x.ToString()).ToList(); + //excelList.Insert(0, title); + System.IO.File.WriteAllLines(fileName, exportList, Encoding.UTF8); + } + IsLoading = false; + + }); + + } + } +} diff --git a/BBWY.Client/ViewModels/PackerTask/PackerTaskViewModel.cs b/BBWY.Client/ViewModels/PackerTask/PackerTaskViewModel.cs new file mode 100644 index 00000000..6c7cda6c --- /dev/null +++ b/BBWY.Client/ViewModels/PackerTask/PackerTaskViewModel.cs @@ -0,0 +1,666 @@ +using BBWY.Client.APIServices; +using BBWY.Client.APIServices.QiKu; +using BBWY.Client.Extensions; +using BBWY.Client.Helpers; +using BBWY.Client.Models; +using BBWY.Client.Models.PackUser; +using BBWY.Client.Views.BillCorrection; +using BBWY.Client.Views.PackerTask; +using BBWY.Client.Views.PackTask; +using BBWY.Client.Views.TaskOverTime; +using BBWY.Common.Models; +using BBWY.Controls; +using GalaSoft.MvvmLight.Command; +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Net.Mail; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Input; + +namespace BBWY.Client.ViewModels.PackerTask +{ + public class PackerTaskViewModel : BaseVM, IDenpendency + { + #region 属性 + + private ObservableCollection selectTitleList = new ObservableCollection { + "SKU名称","标题" + }; + + public ObservableCollection SelectTitleList { get => selectTitleList; set { Set(ref selectTitleList, value); } } + + + + private ObservableCollection selectExpressList = new ObservableCollection { + "物流单号","物流公司名称" + }; + + public ObservableCollection SelectExpressList { get => selectExpressList; set { Set(ref selectExpressList, value); } } + + + private ObservableCollection selectSkuList = new ObservableCollection { + "SKU","SPU" + }; + + public ObservableCollection SelectSkuList { get => selectSkuList; set { Set(ref selectSkuList, value); } } + + private ObservableCollection selectIdList = new ObservableCollection { + "任务ID","拳探订单号" + }; + public ObservableCollection SelectIdList { get => selectIdList; set { Set(ref selectIdList, value); } } + + private ObservableCollection selectShopList = new ObservableCollection { + "店铺","部门" + }; + public ObservableCollection SelectShopList { get => selectShopList; set { Set(ref selectShopList, value); } } + private string waitPackCount; + /// + /// 待包装任务量 + /// + public string WaitPackCount { get => waitPackCount; set { Set(ref waitPackCount, value); } } + + //private string packCompletedCount; + + //public string PackCompletedCount { get => packCompletedCount; set { Set(ref packCompletedCount, value); } } + + private PackTaskState? packTaskState; + + /// + /// 任务包装状态 + /// + public PackTaskState? PackTaskState { get => packTaskState; set { Set(ref packTaskState, value); } } + + + private int pageIndex = 1; + private int pageSize = 10; + private int orderCount;//总数量 + + public int PageIndex { get => pageIndex; set { Set(ref pageIndex, value); } } + + public int PageSize { get => pageSize; set { Set(ref pageSize, value); } } + + public int OrderCount { get => orderCount; set { Set(ref orderCount, value); } } + + private bool isLoading; + public bool IsLoading { get => isLoading; set { Set(ref isLoading, value); } } + + public string searchDepartment; + public string SearchDepartment + { + get => searchDepartment; set + { + Set(ref searchDepartment, value); + + } + } + + + public string searchSpuTitle; + public string SearchSpuTitle + { + get => searchSpuTitle; set + { + Set(ref searchSpuTitle, value); + + } + } + + public string searchSkuTitle; + public string SearchSkuTitle + { + get => searchSkuTitle; set + { + Set(ref searchSkuTitle, value); + + } + } + /// + /// 查询Sku + /// + private string searchSkuId; + public string SearchSkuId { get => searchSkuId; set { Set(ref searchSkuId, value); } } + + /// + /// 查询Spu + /// + private string searchSpuId; + public string SearchSpuId { get => searchSpuId; set { Set(ref searchSpuId, value); } } + + /// + /// 查询拳探订单号 + /// + private string searchOrderSn; + public string SearchOrderSn { get => searchOrderSn; set { Set(ref searchOrderSn, value); } } + + /// + /// 查询名称 + /// + private string selectTitle = "SKU名称"; + public string SelectTitle + { + get => selectTitle; + + + set + { + Set(ref selectTitle, value); + + OnSelectTitleChanged(SelectTitle); + } + } + + private void OnSelectTitleChanged(string SelectTitle) + { + if (SelectTitle == "SKU名称") + { + SearchSpuTitle = null; + } + if (SelectTitle == "标题") + { + SearchSkuTitle = null; + } + + } + + /// + /// 查询店铺 + /// + private string selectShop = "店铺"; + public string SelectShop + { + get => selectShop; + + + set + { + Set(ref selectShop, value); + + OnSelectShopChanged(selectShop); + } + } + private string searchShopName; + public string SearchShopName + { + get => searchShopName; set + { + Set(ref searchShopName, value); + } + } + + private void OnSelectShopChanged(string selectShop) + { + if (selectShop == "店铺") + { + SearchDepartment = null; + } + if (selectShop == "部门") + { + SearchShopName = null; + } + + } + private string searchExpressName; + public string SearchExpressName + { + get => searchExpressName; set + { + Set(ref searchExpressName, value); + } + } + + /// + /// 查询物流 + /// + private string selectExpress= "物流单号"; + public string SelectExpress + { + get => selectExpress; + + + set + { + Set(ref selectExpress, value); + + OnSelectExpressChanged(SelectExpress); + } + } + private string searchWayBillNo; + public string SearchWayBillNo + { + get => searchWayBillNo; set + { + Set(ref searchWayBillNo, value); + } + } + private void OnSelectExpressChanged(string SelectExpress) + { + if (SelectExpress == "物流单号") + { + SearchExpressName = null; + } + if (SelectExpress == "物流公司名称") + { + SearchWayBillNo = null; + } + + } + + + /// + /// 查询物流 + /// + private string selectTaskId = "任务ID"; + public string SelectTaskId + { + get => selectTaskId; + + + set + { + Set(ref selectTaskId, value); + + OnSelectTaskIdChanged(SelectTaskId); + } + } + /// + /// 查询任务id + /// + private string searchTaskId; + public string SearchTaskId + { + get => searchTaskId; set + { + Set(ref searchTaskId, value); + } + } + private void OnSelectTaskIdChanged(string SelectTaskId) + { + if (SelectTaskId == "任务ID") + { + SearchOrderSn = null; + } + if (SelectTaskId == "拳探订单号") + { + SearchTaskId = null; + } + + } + /// + /// 查询sku + /// + private string selectSku = "SKU"; + public string SelectSku + { + get => selectSku; + set + { + Set(ref selectSku, value); + OnSelectSkuChanged(SelectSku); + } + } + private void OnSelectSkuChanged(string SelectSku) + { + if (SelectSku == "SKU") + { + SearchSpuId = null; + } + if (SelectSku == "SPU") + { + SearchSkuId = null; + } + + } + + + + /// + /// 查询拳探订单号 + /// + private ObservableCollection packerTaskModelList; + public ObservableCollection PackerTaskModelList { get => packerTaskModelList; set { Set(ref packerTaskModelList, value); } } + + + + + + + + + + + + + + + + #endregion + + /// + /// 构造函数 + /// + public PackerTaskViewModel(PackUserService packUserService, PackTaskService packTaskService, MarkMessageService markMessageService, GlobalContext globalContext) + { + + this.packUserService = packUserService; + + + SetTaskStateCommand = new RelayCommand(SetTaskState); + + PackerTaskModelList = new ObservableCollection(); + + OpenSkuDetailCommand = new RelayCommand(OpenSkuDetail); + SearchTaskCommand = new RelayCommand(() => + { + + PageIndex = 1; + SearchTaskList(); + }); + TaskPageIndexChangedCommand = new RelayCommand(p => + { + LoadIndex(p.PageIndex); + }); + SubmitOverTimeMarkMsgCommand = new RelayCommand(SubmitOverTimeMarkMsg); + this.packTaskService = packTaskService; + + + + LookBarCommand = new RelayCommand(LookBar); + LookCerCommand = new RelayCommand(LookCer); + + CompletedPackTaskCommand = new RelayCommand(CompletedPackTask); + PackTaskState = Models.PackTaskState.待包装; + SetTaskState(); + PackTaskMarkMessageCommand = new RelayCommand(PackTaskMarkMessage); + AppendMarkMessageCommand = new RelayCommand(AppendMarkMessage); + this.markMessageService = markMessageService; + this.globalContext = globalContext; + + ShowMoreMessageCommand = new RelayCommand(ShowMoreMessage); + } + + private void ShowMoreMessage(long taskId) + { + var model = PackerTaskModelList?.SingleOrDefault(p => p.TaskId == taskId); + if (model != null) + { + model.ShowMoreMsg = !model.ShowMoreMsg; + + + + } + } + + MarkMessageService markMessageService; + GlobalContext globalContext; + private void AppendMarkMessage(long taskId) + { + var model = PackerTaskModelList?.SingleOrDefault(p => p.TaskId == taskId); + if (model != null) + { + + var res = markMessageService.AppendMarkMessage(taskId, model.TaskMarkMsg,globalContext.User.Name); + if (res == null) + { + + return; + } + if (!res.Success) + { + MessageBox.Show(res.Msg); + return; + } + + model.TaskMarkMsg = string.Empty; + + model.ShowSendMsg = false; + + ReflashTask(); + + } + + + } + + + private void PackTaskMarkMessage(long taskId) + { + var model = PackerTaskModelList?.SingleOrDefault(p => p.TaskId == taskId); + if (model!=null) + { + model.ShowSendMsg = !model.ShowSendMsg; + } + } + + private void CompletedPackTask(long taskId) + { + AddOneItemWeightWindow addOneItemWeightWindow = new AddOneItemWeightWindow(ReflashTask,packUserService,taskId); + addOneItemWeightWindow.ShowDialog(); + } + + + + #region 方法 + PackUserService packUserService; + + PackTaskService packTaskService; + /// + /// 提交超时原因 + /// + public ICommand SubmitOverTimeMarkMsgCommand { get; set; } + /// + /// 打开图片链接 + /// + public ICommand OpenSkuDetailCommand { get; set; } + public ICommand SearchTaskCommand { get; set; } + /// + /// 页面改变事件 + /// + public ICommand TaskPageIndexChangedCommand { get; set; } + + public ICommand LookCerCommand { get; set; } + public ICommand LookBarCommand { get; set; } + + public ICommand SetTaskStateCommand { get; set; } + + public ICommand CompletedPackTaskCommand { get; set; } + public ICommand PackTaskMarkMessageCommand { get; set; } + public ICommand AppendMarkMessageCommand { get; set; } + + public ICommand ShowMoreMessageCommand { get; set; } + public void SetTaskState() + { + PageIndex = 1; + SearchTaskList(); + + } + + + /// + /// 查看合格证 + /// + private void LookCer(CertificateModel[] CertificateModel) + { + if (CertificateModel == null) + { + new TipsWindow("该任务无设置合格证信息,无法查看!").ShowDialog(); + return; + } + LookCerWindow lookCerWindow = new LookCerWindow(CertificateModel); + lookCerWindow.ShowDialog(); + } + + /// + /// 查看条形码 + /// + private void LookBar(BarCodeModel BarCodeModel) + { + if (BarCodeModel == null) + { + new TipsWindow("该任务无设置条形码信息,无法查看!").ShowDialog(); + return; + } + LookBarCodeWindow look = new LookBarCodeWindow(); + look.SetData(BarCodeModel.Copy()); + look.Show(); + } + + private void LoadIndex(int pageIndex) + { + PageIndex = pageIndex;// + SearchTaskList(); + } + + + + private Thread packOverTimeThread = null; + bool IsStartThread = false; + private void SearchTaskList() + { + + + if (IsLoading) + { + return; + } + IsLoading = true; + IsStartThread = false; + Task.Factory.StartNew(() => + { + + var res = packUserService.SearchPackerTask(PackTaskState: PackTaskState, WayBillNo: SearchWayBillNo, SourceExpressName: SearchExpressName, + departmentName: SearchDepartment, SearchSkuId, SearchTaskId, SearchSpuId, SearchOrderSn, SearchShopName, PageIndex, PageSize, SearchSkuTitle, SearchSpuTitle); + if (res.Success) + { + WaitPackCount = res.Data.WaitPackCount; + OrderCount = res.Data.TotalCount; + PackerTaskModelList = new ObservableCollection(); + res.Data.Items.ForEach(item => + { + + var data = JsonConvert.DeserializeObject(JsonConvert.SerializeObject(item)); + + + if (PackTaskState== Models.PackTaskState.已完成) + { + + if (item.PackCompletionOverTime + { + + PackerTaskModelList.Add(data); + }); + + + + }); + + + if (PackTaskState == Models.PackTaskState.待包装) + { + var packCompletedTasks = PackerTaskModelList.Where(p => p.TaskState == Models.TaskState.待包装 && p.PackCompletionOverTime != null).ToList(); + if (packCompletedTasks.Count() > 0) + { + + packOverTimeThread = new Thread(() => + { + IsStartThread = true; + while (IsStartThread) + { + App.Current.Dispatcher.BeginInvoke(new Action(() => + { + foreach (var item in packCompletedTasks) + { + var datetime = item.PackCompletionOverTime.Value.Subtract(DateTime.Now); + if (datetime.TotalMilliseconds > 0) + { + item.IsPackOverTime = false; + item.PackRemainTime = OverTimeHelper.GetTimeString(datetime); + } + else + { + item.IsPackOverTime = true; + item.PackRemainTime = OverTimeHelper.GetTimeString(datetime); + } + + } + })); + Thread.Sleep(1000); + } + + }); + //任务倒计时数据 + packOverTimeThread.IsBackground = true; + packOverTimeThread.Start(); + + + } + } + } + else + { + MessageBox.Show(res?.Msg ?? "未知错误"); + } + IsLoading = false; + }); + } + + private void OpenSkuDetail(object param) + { + var paramList = (object[])param; + var skuId = paramList.Last().ToString(); + var url = $"https://item.jd.com/{skuId}.html"; + try + { + System.Diagnostics.Process.Start("explorer.exe", url); + } + catch (Exception ex) + { + Clipboard.SetText(url); + System.Windows.MessageBox.Show($"{ex.Message}\r\n调用浏览器失败,网页链接已复制到剪切板,请手动打开浏览器访问", "提示"); + } + } + + + private void SubmitOverTimeMarkMsg(object param) + { + + var paramList = (object[])param; + var id = (long)paramList[0]; + var markMsg = paramList[1]?.ToString(); + + var overTimeTaskType = Models.OverTimeTaskType.待打包; + + + SubmitOverTimeMarkMsgWindow submitOverTimeMarkMsgWindow = new SubmitOverTimeMarkMsgWindow(overTimeTaskType, id, markMsg, packTaskService, ReflashTask); + submitOverTimeMarkMsgWindow.ShowDialog(); + } + public void ReflashTask()//刷新界面 + { + SearchTaskList(); + } + #endregion + + + } +} diff --git a/BBWY.Client/ViewModels/TotalPackTask/PackUserSalaryViewModel.cs b/BBWY.Client/ViewModels/TotalPackTask/PackUserSalaryViewModel.cs index 98b91264..d024b737 100644 --- a/BBWY.Client/ViewModels/TotalPackTask/PackUserSalaryViewModel.cs +++ b/BBWY.Client/ViewModels/TotalPackTask/PackUserSalaryViewModel.cs @@ -1,4 +1,5 @@ using BBWY.Client.APIServices; +using BBWY.Client.APIServices.QiKu; using BBWY.Client.Models.APIModel; using BBWY.Client.Models.PackTask; using BBWY.Common.Models; @@ -19,6 +20,7 @@ namespace BBWY.Client.ViewModels.TotalPackTask { public class PackUserSalaryViewModel : BaseVM, IDenpendency { + public PackUserService packUserService; public PackTaskService packTaskService; private bool isLoading; private DateTime startTime; @@ -54,10 +56,10 @@ namespace BBWY.Client.ViewModels.TotalPackTask public ICommand SetSearchDateCommand { get; set; } - public PackUserSalaryViewModel(PackTaskService packTaskService) + public PackUserSalaryViewModel(PackTaskService packTaskService, PackUserService packUserService) { this.packTaskService = packTaskService; - + this.packUserService = packUserService; OrderPageIndexChangedCommand = new RelayCommand(p => { LoadOrder(p.PageIndex); @@ -76,6 +78,7 @@ namespace BBWY.Client.ViewModels.TotalPackTask Task.Factory.StartNew(() => LoadOrder(1)); //点击日期查询订单 }); ExportCommand = new RelayCommand(Export); + } private void LoadOrder(int pageIndex) diff --git a/BBWY.Client/ViewModels/ViewModelLocator.cs b/BBWY.Client/ViewModels/ViewModelLocator.cs index 5eb090c3..03183f45 100644 --- a/BBWY.Client/ViewModels/ViewModelLocator.cs +++ b/BBWY.Client/ViewModels/ViewModelLocator.cs @@ -1,4 +1,5 @@ using BBWY.Client.Models; +using BBWY.Client.ViewModels.PackerTask; using BBWY.Client.ViewModels.PackTask; using BBWY.Client.ViewModels.SealBox; using BBWY.Client.ViewModels.TotalPackTask; @@ -394,6 +395,25 @@ namespace BBWY.Client.ViewModels } } + + public PackerTaskViewModel PackerTaskVM + { + get + { + using var s = sp.CreateScope(); + return s.ServiceProvider.GetRequiredService(); + } + } + + public PackerSalaryViewModel PackerSalaryVM + { + get + { + using var s = sp.CreateScope(); + return s.ServiceProvider.GetRequiredService(); + } + } + //public ShopSealBoxListViewModel ShopSealBoxListVM //{ // get diff --git a/BBWY.Client/Views/PackTask/PackDetailWindow.xaml b/BBWY.Client/Views/PackTask/PackDetailWindow.xaml index 60701c8c..0cc4083f 100644 --- a/BBWY.Client/Views/PackTask/PackDetailWindow.xaml +++ b/BBWY.Client/Views/PackTask/PackDetailWindow.xaml @@ -458,7 +458,7 @@ diff --git a/BBWY.Client/Views/PackTask/WaitPackageControl.xaml b/BBWY.Client/Views/PackTask/WaitPackageControl.xaml index 174f5965..69707b61 100644 --- a/BBWY.Client/Views/PackTask/WaitPackageControl.xaml +++ b/BBWY.Client/Views/PackTask/WaitPackageControl.xaml @@ -47,6 +47,13 @@ + + + + + + + @@ -142,6 +149,21 @@ + + + + + + + + + - - - - + + + + + - - - - + + + + diff --git a/BBWY.Client/Views/PackTask/WaitPackageControl.xaml.cs b/BBWY.Client/Views/PackTask/WaitPackageControl.xaml.cs index db23ffd2..9e3bed8e 100644 --- a/BBWY.Client/Views/PackTask/WaitPackageControl.xaml.cs +++ b/BBWY.Client/Views/PackTask/WaitPackageControl.xaml.cs @@ -1,4 +1,6 @@ -using BBWY.Client.Helpers; +using BBWY.Client.APIServices.QiKu; +using BBWY.Client.APIServices; +using BBWY.Client.Helpers; using BBWY.Client.Models.PackTask; using BBWY.Client.ViewModels; using BBWY.Common.Models; @@ -29,6 +31,85 @@ namespace BBWY.Client.Views.PackTask { InitializeComponent(); this.Loaded += Load; + this.Loaded += PackUserSalaryList_Loaded; + + } + PackUserService packUserService; + private void PackUserSalaryList_Loaded(object sender, RoutedEventArgs e) + { + var packUserSalaryViewModel = new ViewModelLocator().PackUserSalary; + packTaskService = packUserSalaryViewModel.packTaskService; + packUserService = packUserSalaryViewModel.packUserService; + var packUser = packUserService.GetPackMembers(); + if (packUser != null && packUser.Success) users = packUser.Data.Select(p => p.UserName).ToList(); + } + List users = new List(); + PackTaskService packTaskService; + private void tbUserName_TextChanged(object sender, TextChangedEventArgs e) + { + try + { + var textBoxt = (TextBox)sender; + //创建一个ListBox + + if (tipBoxUserName != null && tipBoxUserName.Items.Count > 0) + { + tipBoxUserName.Items.Clear(); + + } + + if (users.Count <= 0) + { + var packUser = packUserService.GetPackMembers(); + if (packUser != null && packUser.Success) users = packUser.Data.Select(p => p.UserName).ToList(); + } + + if (string.IsNullOrEmpty(textBoxt.Text)) + { + tipBoxUserName.Visibility = Visibility.Collapsed; + return; + } + foreach (var department in users) + { + if (department.Contains(textBoxt.Text)) + { + ListBoxItem item = new ListBoxItem(); + Label lb = new Label(); + lb.Content = department; + item.Content = lb; + tipBoxUserName.Items.Add(item); + } + + } + + tipBoxUserName.Visibility = Visibility.Visible; + } + catch (Exception) + { + + + } + } + + private void tipBoxUserName_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + try + { + var list = (ListBox)sender; + if (list.Items.Count <= 0) + { + return; + } + var value = (ListBoxItem)list.SelectedValue; + var content = (Label)value.Content; + tbUserName.Text = content.Content.ToString(); + tipBoxUserName.Visibility = Visibility.Collapsed; + } + catch (Exception) + { + + + } } GlobalContext globalContext; diff --git a/BBWY.Client/Views/PackerTask/AddOneItemWeightWindow.xaml b/BBWY.Client/Views/PackerTask/AddOneItemWeightWindow.xaml new file mode 100644 index 00000000..6d34ebff --- /dev/null +++ b/BBWY.Client/Views/PackerTask/AddOneItemWeightWindow.xaml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/BBWY.Client/Views/PackerTask/AddOneItemWeightWindow.xaml.cs b/BBWY.Client/Views/PackerTask/AddOneItemWeightWindow.xaml.cs new file mode 100644 index 00000000..ee28246a --- /dev/null +++ b/BBWY.Client/Views/PackerTask/AddOneItemWeightWindow.xaml.cs @@ -0,0 +1,76 @@ +using BBWY.Client.APIServices.QiKu; +using BBWY.Controls; +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Shapes; + +namespace BBWY.Client.Views.PackerTask +{ + /// + /// AddOneItemWeightWindow.xaml 的交互逻辑 + /// + public partial class AddOneItemWeightWindow : BWindow + { + public AddOneItemWeightWindow(Action completePack, PackUserService packUserService, long taskId) + { + InitializeComponent(); + this.DataContext = this; + CompletePack = completePack; + this.packUserService = packUserService; + TaskId = taskId; + } + PackUserService packUserService; + private Action CompletePack { get;set;} + private long TaskId; + private string weigth; + + public string Weigth { get => weigth; set { Set(ref weigth, value); } } + private void btn_ok_Click(object sender, RoutedEventArgs e) + { + decimal oneItemWeight = 0; + try + { + oneItemWeight = decimal.Parse(Weigth.Trim()); + + if (oneItemWeight<=0) + { + + MessageBox.Show("重量不能低于0"); + return; + } + var res = packUserService.CompletedPackTask(TaskId, oneItemWeight); + if (res.Success) + { + CompletePack?.Invoke(); + this.Close(); + } + else + { + MessageBox.Show(res?.Msg); + return; + } + + + } + catch (Exception ex) + { + + MessageBox.Show("重量输入有误"); + } + } + + private void btn_cancel_Click(object sender, RoutedEventArgs e) + { + this.Close(); + } + } +} diff --git a/BBWY.Client/Views/PackerTask/PackerPackCompletedControl.xaml b/BBWY.Client/Views/PackerTask/PackerPackCompletedControl.xaml new file mode 100644 index 00000000..2170c74a --- /dev/null +++ b/BBWY.Client/Views/PackerTask/PackerPackCompletedControl.xaml @@ -0,0 +1,585 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/BBWY.Client/Views/PackerTask/PackerPackCompletedControl.xaml.cs b/BBWY.Client/Views/PackerTask/PackerPackCompletedControl.xaml.cs new file mode 100644 index 00000000..55561885 --- /dev/null +++ b/BBWY.Client/Views/PackerTask/PackerPackCompletedControl.xaml.cs @@ -0,0 +1,245 @@ +using BBWY.Client.Helpers; +using BBWY.Client.Models.PackTask; +using BBWY.Client.ViewModels; +using BBWY.Common.Models; +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Windows; +using System.Windows.Controls; +using WebSocketSharp; + +namespace BBWY.Client.Views.PackerTask +{ + /// + /// PackerPackCompletedControl.xaml 的交互逻辑 + /// + public partial class PackerPackCompletedControl : UserControl + { + public PackerPackCompletedControl() + { + InitializeComponent(); + this.Loaded += Load; + } + GlobalContext globalContext; + + public void LoadShops(GlobalContext globalContext) + { + this.globalContext = globalContext; + shops = globalContext.User.ShopList.Select(s => s.ShopName).ToList(); + departments = globalContext.User.DepartmentList.Select(s => s.Name).ToList(); + + } + + private void Load(object sender, RoutedEventArgs e) + { + + try + { + var model = (App.Current.Resources["Locator"] as ViewModelLocator).Main; + + LoadShops(model.GlobalContext); + } + catch + { + + + } + } + public string QKApiHost { get; set; } + public void SelectionChangeCommand(object sender, SelectionChangedEventArgs e) + { + try + { + var list = (ListBox)sender; + if (list.Items.Count <= 0) + { + return; + } + var value = (ListBoxItem)list.SelectedValue; + var content = (Label)value.Content; + tb.Text = content.Content.ToString(); + tipBox.Visibility = Visibility.Collapsed; + } + catch (Exception) + { + + + } + + } + List departments = new List(); + + List shops = new List(); + private void tb_TextChanged(object sender, TextChangedEventArgs e) + { + + if (tipBox != null) + try + { + var textBoxt = (TextBox)sender; + //创建一个ListBox + + if (tipBox != null && tipBox.Items.Count > 0) + { + tipBox.Items.Clear(); + + } + + if (departments.Count <= 0) + { + if (QKApiHost.IsNullOrEmpty()) QKApiHost = "http://qiku.qiyue666.com"; + HttpClientHelper helper = new HttpClientHelper(QKApiHost); + + string url = $"{QKApiHost}/api/PackTask/GetAllDepartment";//获取所有数据 + var data = helper.Get(url); + + var res = JsonConvert.DeserializeObject>(data); + //创建一个ListBoxIem + if (res.Success) + { + if (res.Data != null && res.Data.Any()) + { + foreach (var department in res.Data) + { + if (!departments.Contains(department.DePartmentName)) + { + departments.Add(department.DePartmentName); + } + + } + } + } + } + + if (string.IsNullOrEmpty(textBoxt.Text)) + { + tipBox.Visibility = Visibility.Collapsed; + return; + } + foreach (var department in departments) + { + if (department.Contains(textBoxt.Text)) + { + ListBoxItem item = new ListBoxItem(); + Label lb = new Label(); + lb.Content = department; + item.Content = lb; + tipBox.Items.Add(item); + } + + } + + tipBox.Visibility = Visibility.Visible; + } + catch (Exception) + { + + + } + + } + + private void tbShop_TextChanged(object sender, TextChangedEventArgs e) + { + try + { + var textBoxt = (TextBox)sender; + //创建一个ListBox + + if (tipBoxShop != null && tipBoxShop.Items.Count > 0) + { + tipBoxShop.Items.Clear(); + + } + + if (shops.Count <= 0) + { + if (globalContext != null) + LoadShops(globalContext); + } + + if (string.IsNullOrEmpty(textBoxt.Text)) + { + tipBoxShop.Visibility = Visibility.Collapsed; + return; + } + foreach (var department in shops) + { + if (department.Contains(textBoxt.Text)) + { + ListBoxItem item = new ListBoxItem(); + Label lb = new Label(); + lb.Content = department; + item.Content = lb; + tipBoxShop.Items.Add(item); + } + + } + if (tipBoxShop != null) + tipBoxShop.Visibility = Visibility.Visible; + } + catch (Exception) + { + + + } + } + + private void tipBoxShop_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + try + { + var list = (ListBox)sender; + if (list.Items.Count <= 0) + { + return; + } + var value = (ListBoxItem)list.SelectedValue; + var content = (Label)value.Content; + tbShop.Text = content.Content.ToString(); + tipBoxShop.Visibility = Visibility.Collapsed; + } + catch (Exception) + { + + + } + } + + private void tb_LostFocus(object sender, RoutedEventArgs e) + { + try + { + if (tipBox != null && tipBox.Items.Count > 0) + { + tipBox.Items.Clear(); + + } + } + catch (Exception) + { + + + } + } + + private void tbShop_LostFocus(object sender, RoutedEventArgs e) + { + try + { + if (tipBoxShop != null && tipBoxShop.Items.Count > 0) + { + tipBoxShop.Items.Clear(); + + } + } + catch (Exception) + { + + + } + } + } +} diff --git a/BBWY.Client/Views/PackerTask/PackerSalaryControl.xaml b/BBWY.Client/Views/PackerTask/PackerSalaryControl.xaml new file mode 100644 index 00000000..7dbfa46e --- /dev/null +++ b/BBWY.Client/Views/PackerTask/PackerSalaryControl.xaml @@ -0,0 +1,282 @@ + + + + + 0 + 1 + 2 + 6 + 14 + 29 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +