diff --git a/BBWY.Client/APIServices/BatchPurchaseService.cs b/BBWY.Client/APIServices/BatchPurchaseService.cs index 372d4584..71ae568f 100644 --- a/BBWY.Client/APIServices/BatchPurchaseService.cs +++ b/BBWY.Client/APIServices/BatchPurchaseService.cs @@ -177,12 +177,27 @@ namespace BBWY.Client.APIServices /// /// /// - public ApiResponse UpdatePackState(string orderId, PackState PackState) + public ApiResponse UpdatePackMoney(string orderId, decimal PackMoney) { - return SendRequest(globalContext.BBYWApiHost, "api/BatchPurchase/UpdatePackState", new + return SendRequest(globalContext.BBYWApiHost, "api/BatchPurchase/UpdatePackMoney", new { orderId, - PackState + PackMoney + }, null, HttpMethod.Post); + } + + /// + /// 修改采购单状态 + /// + /// + /// + /// + public ApiResponse UpdatePurchaseOrderState(string orderId, PurchaseOrderState PurchaseOrderState) + { + return SendRequest(globalContext.BBYWApiHost, "api/BatchPurchase/UpdatePurchaseOrderState", new + { + orderId, + PurchaseOrderState }, null, HttpMethod.Post); } diff --git a/BBWY.Client/APIServices/PackTaskService.cs b/BBWY.Client/APIServices/PackTaskService.cs index 0706efb2..66c9b75c 100644 --- a/BBWY.Client/APIServices/PackTaskService.cs +++ b/BBWY.Client/APIServices/PackTaskService.cs @@ -136,13 +136,13 @@ namespace BBWY.Client.APIServices , null, HttpMethod.Post); } - public ApiResponse UpdateTaskStatus(long id, int taskStatus) + public ApiResponse UpdateTaskStatus(long id, int taskStatus,string orderId) { return SendRequest(globalContext.QKApiHost, "api/PackTask/UpdatePackTaskStatus", new { id, - taskStatus - + taskStatus, + orderId } , null, HttpMethod.Post); } @@ -305,6 +305,10 @@ namespace BBWY.Client.APIServices public decimal? ConsumableFees { get; set; } public decimal? DiscountPrice { get; set; } + + public string OrderId { get; set; } + + public string SkuId { get; set; } } public class PersonTaskModel diff --git a/BBWY.Client/BBWYAppSettings.json b/BBWY.Client/BBWYAppSettings.json index 7af1eac7..67d1c91b 100644 --- a/BBWY.Client/BBWYAppSettings.json +++ b/BBWY.Client/BBWYAppSettings.json @@ -1,9 +1,9 @@ { - "BBWYApiHost": "http://localhost:5000", - //"BBWYApiHost": "http://bbwytest.qiyue666.com", + //"BBWYApiHost": "http://localhost:5000", + "BBWYApiHost": "http://bbwytest.qiyue666.com", "MDSApiHost": "http://mdsapi.qiyue666.com", "JOSApiHost": "", "1688ApiHost": "", "QKApiHost": "http://localhost:8080" - // "QKApiHost": "http://qiku.qiyue666.com" + //"QKApiHost": "http://qiku.qiyue666.com" } \ No newline at end of file diff --git a/BBWY.Client/Models/APIModel/Request/CreateTaskRequest.cs b/BBWY.Client/Models/APIModel/Request/CreateTaskRequest.cs index f588225f..04c0c50a 100644 --- a/BBWY.Client/Models/APIModel/Request/CreateTaskRequest.cs +++ b/BBWY.Client/Models/APIModel/Request/CreateTaskRequest.cs @@ -103,5 +103,6 @@ namespace BBWY.Client.Models.APIModel.Request public Worry IsWorry { get; set; } public string OrderId { get; set; } + public Platform Platform { get; set; } } } diff --git a/BBWY.Client/Models/APIModel/Response/PackTask/PackTaskResultResponse.cs b/BBWY.Client/Models/APIModel/Response/PackTask/PackTaskResultResponse.cs index 9bd05317..c0a9842d 100644 --- a/BBWY.Client/Models/APIModel/Response/PackTask/PackTaskResultResponse.cs +++ b/BBWY.Client/Models/APIModel/Response/PackTask/PackTaskResultResponse.cs @@ -168,8 +168,8 @@ namespace BBWY.Client.Models.APIModel.Response.PackTask /// /// 品牌 /// - public string Brand { get; set; } - + public string Brand { get; set; } + public string OrderId { get; set; } } //public class FeesItemTypeDTO :NotifyObject diff --git a/BBWY.Client/Models/BatchPurchase/BatchPublishTask.cs b/BBWY.Client/Models/BatchPurchase/BatchPublishTask.cs index f40488af..b08ed129 100644 --- a/BBWY.Client/Models/BatchPurchase/BatchPublishTask.cs +++ b/BBWY.Client/Models/BatchPurchase/BatchPublishTask.cs @@ -16,11 +16,41 @@ using System.Windows.Input; namespace BBWY.Client.Models { + //public class ComboxItem + //{ + // public int { get; set; } + //} public class BatchPublishTask : NotifyObject { #region 属性 + private ObservableCollection positionTypeList = new ObservableCollection { + new ComboBoxItem{IsSelected = false,Content = "本地仓"}, new ComboBoxItem{IsSelected = false,Content = "齐越仓"}, new ComboBoxItem{IsSelected = false,Content = "京东仓"} + + }; + public ObservableCollection PositionTypeList { get => positionTypeList; set { Set(ref positionTypeList, value); } } + private ObservableCollection packTypeList = new ObservableCollection { + new ComboBoxItem{ Content="单件",IsSelected=false }, new ComboBoxItem{ Content="多件",IsSelected=false } + }; + public ObservableCollection PackTypeList { get => packTypeList; set { Set(ref packTypeList, value); } } + + private ObservableCollection basicPackList = new ObservableCollection { + new ComboBoxItem{ Content="快递袋",IsSelected=false }, new ComboBoxItem{ Content="纸箱",IsSelected=false }, new ComboBoxItem{ Content="麻袋",IsSelected=false } + }; + public ObservableCollection BasicPackList { get => basicPackList; set { Set(ref basicPackList, value); } } + private ObservableCollection isNeedBarCodeList = new ObservableCollection { + new ComboBoxItem{IsSelected = false,Content = "需要"}, new ComboBoxItem{IsSelected = false,Content = "不需要"}}; + public ObservableCollection IsNeedBarCodeList { get => isNeedBarCodeList; set { Set(ref isNeedBarCodeList, value); } } + + private ObservableCollection certificatePositionList = new ObservableCollection { + new ComboBoxItem{ Content="无",IsSelected=false }, new ComboBoxItem{ Content="外部包装",IsSelected=false }, new ComboBoxItem{ Content="产品包装",IsSelected=false } + }; + public ObservableCollection CertificatePositionList { get => certificatePositionList; set { Set(ref certificatePositionList, value); } } + private ObservableCollection availabilityList = new ObservableCollection { + new ComboBoxItem{ Content="已到货",IsSelected=false }, new ComboBoxItem{ Content="部分到货",IsSelected=false }, new ComboBoxItem{ Content="未到货",IsSelected=false } + }; + public ObservableCollection AvailabilityList { get => availabilityList; set { Set(ref availabilityList, value); } } private int skuCount; /// @@ -247,6 +277,7 @@ namespace BBWY.Client.Models SetCertificateCommand = new RelayCommand(SetCertificate); LookBarCommand = new RelayCommand(LookBar); LookCerCommand = new RelayCommand(LookCer); + } #region 方法 public ICommand SetBarCodeCommand { get; set; } @@ -446,7 +477,7 @@ namespace BBWY.Client.Models App.Current.Dispatcher.Invoke(() => MessageBox.Show(skuResponse.Msg, "加载sku")); return; } - //查看有木有存在 + } public void SearSpuCer() diff --git a/BBWY.Client/Models/PackTask/ConsumableModel.cs b/BBWY.Client/Models/PackTask/ConsumableModel.cs index 5437d1b1..3125d821 100644 --- a/BBWY.Client/Models/PackTask/ConsumableModel.cs +++ b/BBWY.Client/Models/PackTask/ConsumableModel.cs @@ -4,11 +4,13 @@ using BBWY.Client.ViewModels; using BBWY.Client.Views.PackTask; using BBWY.Common.Models; using GalaSoft.MvvmLight.Command; +using HandyControl.Controls; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Resources; using System.Text; +using System.Windows; using System.Windows.Input; using System.Windows.Media.TextFormatting; @@ -95,6 +97,11 @@ namespace BBWY.Client.Models.PackTask public void DeletedConsumable(ObservableCollection list) { + MessageBoxResult result =System.Windows. MessageBox.Show("是否删除?", "提示", + MessageBoxButton.YesNo, + MessageBoxImage.Warning); + if (result != MessageBoxResult.Yes) return; + var res = consumableService.Deleted(Id); if (res.Success) { diff --git a/BBWY.Client/Models/PackTask/PackTaskModel.cs b/BBWY.Client/Models/PackTask/PackTaskModel.cs index f5406aa9..9a2f2a89 100644 --- a/BBWY.Client/Models/PackTask/PackTaskModel.cs +++ b/BBWY.Client/Models/PackTask/PackTaskModel.cs @@ -108,12 +108,14 @@ namespace BBWY.Client.Models var serviceViewModel = viewModelLocator.PackServiceList; serviceViewModel.TaskCount = SkuCount; serviceViewModel.TaskId = TaskId; + serviceViewModel.OrderId= OrderId; + serviceViewModel.SkuId =SkuId ; serviceViewModel.LoadPackDatas(); serviceViewModel.SetAllFees = new Action>((feesItem, packUsers) => { FeesItemResponse = feesItem; PackUser = string.Join("\r\n", packUsers); - + FeesItemResponse.DiscountAllFees = feesItem.disCount * feesItem.AllFees; IsShowFees = feesItem.AllFees > 0 ? true : false; }); service.Show(); @@ -208,9 +210,12 @@ namespace BBWY.Client.Models } ///修改完成 - var model = packTaskService.UpdateTaskStatus(taskId, 1); + var model = packTaskService.UpdateTaskStatus(taskId, 1,""); if (model != null && model.Success) { + //var res = batchPurchaseService.UpdatePurchaseOrderState(id, Models.PurchaseOrderState.已完成 ); + + this.TaskStatus = TaskStateType.已完成; new TipsWindow("修改成功").Show(); } @@ -497,6 +502,8 @@ namespace BBWY.Client.Models public FeesItemResponse FeesItemResponse { get => feesItemResponse; set { Set(ref feesItemResponse, value); } } public IList ItemList { get; set; } + + public string OrderId { get; set; } } public class SkuMessage : NotifyObject diff --git a/BBWY.Client/ViewModels/BaseVM.cs b/BBWY.Client/ViewModels/BaseVM.cs index 28a6ae70..c4a8b336 100644 --- a/BBWY.Client/ViewModels/BaseVM.cs +++ b/BBWY.Client/ViewModels/BaseVM.cs @@ -22,11 +22,11 @@ namespace BBWY.Client.ViewModels LoadCommand = new RelayCommand(Load); UnloadCommand = new RelayCommand(Unload); - CopyTextCommand = new RelayCommand(s => + CopyTextCommand = new RelayCommand(s => { try { - Clipboard.SetText(s); + Clipboard.SetText(s.ToString()); } catch (Exception ex) { diff --git a/BBWY.Client/ViewModels/BatchPurchase/BatchPublishTaskViewModel.cs b/BBWY.Client/ViewModels/BatchPurchase/BatchPublishTaskViewModel.cs index d97a7b91..d9fd7a8e 100644 --- a/BBWY.Client/ViewModels/BatchPurchase/BatchPublishTaskViewModel.cs +++ b/BBWY.Client/ViewModels/BatchPurchase/BatchPublishTaskViewModel.cs @@ -11,6 +11,8 @@ using System.Text; using System.Threading.Tasks; using System.Windows.Input; using System.Linq; +using System.Windows; +using GalaSoft.MvvmLight.Messaging; namespace BBWY.Client.ViewModels { @@ -24,8 +26,8 @@ namespace BBWY.Client.ViewModels private ObservableCollection batchPublishTasks; public ObservableCollection BatchPublishTasks { get => batchPublishTasks; set { Set(ref batchPublishTasks, value); } } - - + // public ObservableCollection BatchPublishTasks; + public ICommand OpenSkuDetailCommand { get; set; } public ICommand CreateTaskCommand { get; set; } public BatchPublishTaskViewModel(PackTaskService packTaskService, ProductService productService, GlobalContext globalContext) { @@ -33,12 +35,38 @@ namespace BBWY.Client.ViewModels this.packTaskService = packTaskService; this.productService = productService; CreateTaskCommand = new RelayCommand(CreateTask); + OpenSkuDetailCommand = new RelayCommand(OpenSkuDetail); this.globalContext = globalContext; + + + + + } + private void OpenSkuDetail(object param) + { + var paramList = (object[])param; + // var orderId = paramList[0].ToString(); + var skuId = paramList[0].ToString(); + + + var url = $"https://item.jd.com/{skuId}.html"; + try + { + System.Diagnostics.Process.Start("explorer.exe", url); + } + catch (Exception ex) + { + Clipboard.SetText(url); + MessageBox.Show($"{ex.Message}\r\n调用浏览器失败,网页链接已复制到剪切板,请手动打开浏览器访问", "提示"); + } + } + + GlobalContext globalContext; private void CreateTask(object obj) { - foreach (var task in batchPublishTasks) + foreach (var task in BatchPublishTasks) { string increateStr = ""; var increates = task.IncreateList.Where(i => i.IsSelected).Select(i => i.IncreateName); @@ -67,7 +95,8 @@ namespace BBWY.Client.ViewModels UserId = globalContext.User.Id.ToString(), ShopId = PurchaserId, IsWorry = task.IsWorry, - OrderId = orderId + OrderId = orderId, + Platform =platform }; if (task.IsNeedBarCode == Need.需要) { @@ -96,11 +125,15 @@ namespace BBWY.Client.ViewModels return; } } - var win = obj as System.Windows.Window; + //var win = obj as System.Windows.Window; + + Messenger.Default.Send(true, "CloseBatchPublishTaskWindow"); + //win.Close(); if (PublishTask != null) PublishTask(); - win.Close(); } + + public Action PublishTask { get; set; } diff --git a/BBWY.Client/ViewModels/BatchPurchase/BatchPurchaseOrderListViewModel.cs b/BBWY.Client/ViewModels/BatchPurchase/BatchPurchaseOrderListViewModel.cs index 22f38019..5e6b15f8 100644 --- a/BBWY.Client/ViewModels/BatchPurchase/BatchPurchaseOrderListViewModel.cs +++ b/BBWY.Client/ViewModels/BatchPurchase/BatchPurchaseOrderListViewModel.cs @@ -94,24 +94,32 @@ namespace BBWY.Client.ViewModels var itemList = (List)parameters[2];//skuid 数量 var PurchaserId = (string)parameters[3];//采购商id - ViewModelLocator viewModelLocator = new ViewModelLocator(); + ViewModelLocator viewModelLocator = new ViewModelLocator(); BatchPublishTaskViewModel batch = viewModelLocator.BatchPublishTask; - BatchPublishTaskWindow window = new BatchPublishTaskWindow(); + + + batch.PublishTask = () => { //修改状态 - batchPurchaseService.UpdatePackState(id, PackState.打包中); - Task.Factory.StartNew(() => QueryPurchaseOrder(PageIndex)); + var res = batchPurchaseService.UpdatePurchaseOrderState(id, Models.PurchaseOrderState.待打包); + if (res.Success) + { + Task.Factory.StartNew(() => QueryPurchaseOrder(PageIndex)); + } + }; batch.AddSkus(PurchasePlatform, id, PurchaserId, itemList); - - - window.ShowDialog(); + + BatchPublishTaskWindow window = new BatchPublishTaskWindow(); + window.Show(); + + } private void CancelPurchaseOrder(object obj) @@ -136,6 +144,8 @@ namespace BBWY.Client.ViewModels } if (res.Data != null) MessageBox.Show(res.Data.Msg); + else + MessageBox.Show(res.Msg); } private void PayPurchaseOrder(object obj) @@ -157,6 +167,9 @@ namespace BBWY.Client.ViewModels } if (res.Data != null) MessageBox.Show(res.Data.Msg); + else + MessageBox.Show(res.Msg); + } diff --git a/BBWY.Client/ViewModels/PackTask/PackServiceViewModel.cs b/BBWY.Client/ViewModels/PackTask/PackServiceViewModel.cs index adee5919..7ea3e58c 100644 --- a/BBWY.Client/ViewModels/PackTask/PackServiceViewModel.cs +++ b/BBWY.Client/ViewModels/PackTask/PackServiceViewModel.cs @@ -44,7 +44,7 @@ namespace BBWY.Client.ViewModels.PackTask readonly PackTaskService packTaskService; readonly ConsumableService consumableService; readonly PackDetailService packDetailService; - + readonly BatchPurchaseService batchPurchaseService; private ObservableCollection increateList = new ObservableCollection(); public ObservableCollection IncreateList { get => increateList; set { Set(ref increateList, value); } } // @@ -75,7 +75,7 @@ namespace BBWY.Client.ViewModels.PackTask /// public List LoadList = new List(); - public PackServiceViewModel(PackTaskService packTaskService, ConsumableService consumableService, PackServiceService packServiceService, PackDetailService packDetailService)//, long taskId + public PackServiceViewModel(PackTaskService packTaskService, ConsumableService consumableService, PackServiceService packServiceService, PackDetailService packDetailService, BatchPurchaseService batchPurchaseService)//, long taskId { //TaskId = taskId; this.consumableService = consumableService; @@ -159,6 +159,7 @@ namespace BBWY.Client.ViewModels.PackTask AddConsumableCommand = new RelayCommand(AddConsumable); UpLoadPackCommand = new RelayCommand(UpLoadPack); SetAllCountCommand = new RelayCommand(SetAllCount); + this.batchPurchaseService = batchPurchaseService; @@ -246,7 +247,7 @@ namespace BBWY.Client.ViewModels.PackTask } LoadList.AddRange(IncreateList); LoadList.AddRange(PackList); - Discount =res.Data.Discount.ToString(); + Discount = res.Data.Discount.ToString(); } }); @@ -284,7 +285,8 @@ namespace BBWY.Client.ViewModels.PackTask private int taskCount; public int TaskCount { get => taskCount; set { Set(ref taskCount, value); } } // - + public string OrderId { get; set; } + public string SkuId { get; set; } /// /// 上传数据 (判断是否超量) 统一上传 /// @@ -328,7 +330,7 @@ namespace BBWY.Client.ViewModels.PackTask decimal AllFees = 0; decimal price = 0; - decimal IncreateFees = 0,PackFees=0,ConsumableFees=0,DiscountPrice=0; + decimal IncreateFees = 0, PackFees = 0, ConsumableFees = 0, DiscountPrice = 0; foreach (var item in IncreateList)//增值服务上传 { if (item.SelectId <= 0 || string.IsNullOrEmpty(item.SelectUserId) || item.ItemCount <= 0) @@ -528,13 +530,15 @@ namespace BBWY.Client.ViewModels.PackTask } uploadService.AddPackServices = addDatas; uploadService.DeletedPackServices = del; - - uploadService.AllFees = Convert.ToDecimal((AllFees).ToString("0.00")); ; + uploadService.SkuId = SkuId; + uploadService.OrderId= OrderId; + uploadService.AllFees = Convert.ToDecimal(AllFees.ToString("0.00")); uploadService.SingleFees = singleFees; uploadService.IncreaseFees = Convert.ToDecimal((IncreateFees).ToString("0.00")); uploadService.PackFees = Convert.ToDecimal((PackFees).ToString("0.00")); uploadService.ConsumableFees = Convert.ToDecimal((ConsumableFees).ToString("0.00")); - uploadService. DiscountPrice = Convert.ToDecimal( (AllFees * upDisCount).ToString("0.00")); + uploadService.DiscountPrice = Convert.ToDecimal((AllFees * upDisCount).ToString("0.00")); + var res = packDetailService.UploadService(uploadService); if (res != null && res.Success) { @@ -546,10 +550,15 @@ namespace BBWY.Client.ViewModels.PackTask feesItem.DisCount = upDisCount; if (SetAllFees != null) SetAllFees(feesItem, packUsers); + if (!string.IsNullOrEmpty( OrderId)) + + batchPurchaseService.UpdatePackMoney(OrderId, uploadService.DiscountPrice.Value); + win.Close(); } } + /// /// 更新 打包员 和费用数据 /// diff --git a/BBWY.Client/ViewModels/PackTask/PackTaskTotalViewModel.cs b/BBWY.Client/ViewModels/PackTask/PackTaskTotalViewModel.cs index ebf2608c..b45ff5b6 100644 --- a/BBWY.Client/ViewModels/PackTask/PackTaskTotalViewModel.cs +++ b/BBWY.Client/ViewModels/PackTask/PackTaskTotalViewModel.cs @@ -112,6 +112,8 @@ namespace BBWY.Client.ViewModels.PackTask BatchSettleCommand = new RelayCommand(BatchSettle); SettleCommand = new RelayCommand(SettleTask); ExportCommand = new RelayCommand(Export); + + SearchTaskTotal(); } private void Export() diff --git a/BBWY.Client/ViewModels/PackTask/WareHouseListViewModel.cs b/BBWY.Client/ViewModels/PackTask/WareHouseListViewModel.cs index 3b87a1b8..94b8bd26 100644 --- a/BBWY.Client/ViewModels/PackTask/WareHouseListViewModel.cs +++ b/BBWY.Client/ViewModels/PackTask/WareHouseListViewModel.cs @@ -146,7 +146,7 @@ namespace BBWY.Client.ViewModels.PackTask private readonly WorkProcessService workProcessService; private readonly PackTaskService packTaskService; private readonly IncreateServiceService increateServiceService; - public WareHouseListViewModel(PackTaskService packTaskService, ConsumableService consumableService, WorkProcessService workProcessService, IncreateServiceService increateServiceService, ProductService productService) + public WareHouseListViewModel(PackTaskService packTaskService, ConsumableService consumableService, WorkProcessService workProcessService, IncreateServiceService increateServiceService, ProductService productService, BatchPurchaseService batchPurchaseService) { this.packTaskService = packTaskService; this.consumableService = consumableService; @@ -181,13 +181,14 @@ namespace BBWY.Client.ViewModels.PackTask StartTime = DateTime.Now.Date; EndTime = DateTime.Now.Date; IsLoading = false; - + SetTaskStatusCommand = new RelayCommand(SetTaskStatus); //加载数据 SetTaskState(Models.TaskState.全部); this.workProcessService = workProcessService; this.increateServiceService = increateServiceService; this.productService = productService; + this.batchPurchaseService = batchPurchaseService; } @@ -199,6 +200,7 @@ namespace BBWY.Client.ViewModels.PackTask #region 事件绑定 + public ICommand SetTaskStatusCommand { get; set; } /// /// 打开图片链接 /// @@ -229,6 +231,28 @@ namespace BBWY.Client.ViewModels.PackTask public ICommand TaskPageIndexChangedCommand { get; set; } + BatchPurchaseService batchPurchaseService; + public void SetTaskStatus(object obj ) + { + var objList = (object[])obj; + + long taskId = (long)objList[0]; + + string orderId=(string)objList[1]; + ///修改完成 + var model = packTaskService.UpdateTaskStatus(taskId, 1,orderId); + if (model != null && model.Success&&!string.IsNullOrEmpty(orderId)) + { + if (model.Data != null && Convert.ToBoolean(model.Data)) + { + //var res = batchPurchaseService.UpdatePurchaseOrderState(orderId, Models.PurchaseOrderState.待结算); + //if (res.Success) + new TipsWindow("修改成功").Show(); + } + + } + } + public void SetTaskState(TaskState? taskState) { IsWorry = null; @@ -306,7 +330,10 @@ namespace BBWY.Client.ViewModels.PackTask SkuTitle = item.SkuGoodsTitle, TaskId = item.TaskId, TaskStatus = (TaskStateType)item.TaskStatus, - EndTime = item.CreateTime + EndTime = item.CreateTime, + OrderId= item.OrderId, + SkuId = item.SkuId, + }; diff --git a/BBWY.Client/Views/BatchPurchase/BatchPublishTaskWindow.xaml b/BBWY.Client/Views/BatchPurchase/BatchPublishTaskWindow.xaml index c9558552..124d5382 100644 --- a/BBWY.Client/Views/BatchPurchase/BatchPublishTaskWindow.xaml +++ b/BBWY.Client/Views/BatchPurchase/BatchPublishTaskWindow.xaml @@ -48,7 +48,7 @@ - - + @@ -125,26 +124,25 @@ - - - - + + - + - + + + + - - - - + + @@ -191,18 +189,15 @@ - - - + + - - - - + + @@ -237,22 +232,18 @@ - - - + + - - - + + - - - - + + @@ -270,7 +261,7 @@