shanji 3 years ago
parent
commit
b8296c2410
  1. 5
      BBWY.Client/APIServices/OrderService.cs
  2. 100
      BBWY.Client/Models/Order/AfterSaleOrder.cs
  3. 2
      BBWY.Client/Models/Order/Order.cs
  4. 50
      BBWY.Client/ViewModels/Order/OrderListViewModel.cs
  5. 91
      BBWY.Client/Views/Order/EditAfterSaleOrderSku.xaml
  6. 27
      BBWY.Client/Views/Order/EditAfterSaleOrderSku.xaml.cs
  7. 10
      BBWY.Client/Views/Order/OrderList.xaml
  8. 11
      BBWY.Server.Model/MappingProfiles.cs

5
BBWY.Client/APIServices/OrderService.cs

@ -256,5 +256,10 @@ namespace BBWY.Client.APIServices
excludeCanceled
}, null, HttpMethod.Post);
}
public ApiResponse<object> EditAfterSaleOrderSku(AfterSaleOrder afterSaleOrder)
{
return SendRequest<object>(globalContext.BBYWApiHost, "Api/Order/EditAfterSaleOrderSku", afterSaleOrder, null, HttpMethod.Post);
}
}
}

100
BBWY.Client/Models/Order/AfterSaleOrder.cs

@ -2,53 +2,57 @@
namespace BBWY.Client.Models
{
public class AfterSaleOrder
public class AfterSaleOrder : NotifyObject, ICloneable
{
public long Id { get; set; }
public DateTime? CreateTime { get; set; }
public string OrderId { get; set; }
public string ProductId { get; set; }
/// <summary>
/// 商品处理结果
/// </summary>
public ProductResult? ProductResult { get; set; }
/// <summary>
/// 退款金额
/// </summary>
public decimal? RefundAmount { get; set; } = 0.00M;
/// <summary>
/// 退款时间
/// </summary>
public DateTime? RefundTime { get; set; }
/// <summary>
/// 售后补发成本
/// </summary>
public decimal? ReissueAfterSaleAmount { get; set; } = 0.00M;
/// <summary>
/// 补发快递费
/// </summary>
public decimal? ReissueFreight { get; set; } = 0.00M;
/// <summary>
/// 补发货款成本
/// </summary>
public decimal? ReissueProductAmount { get; set; } = 0.00M;
/// <summary>
/// 服务单处理结果
/// </summary>
public ServiceResult? ServiceResult { get; set; }
public long? ShopId { get; set; }
public string SkuId { get; set; }
}
private ProductResult? productResult;
private ServiceResult? serviceResult;
private decimal? reissueAfterSaleAmount = 0.00M;
private decimal? reissueFreight = 0.00M;
private decimal? reissueProductAmount = 0.00M;
public long Id { get; set; }
public DateTime? CreateTime { get; set; }
public string OrderId { get; set; }
public string ProductId { get; set; }
/// <summary>
/// 退款金额
/// </summary>
public decimal? RefundAmount { get; set; } = 0.00M;
/// <summary>
/// 退款时间
/// </summary>
public DateTime? RefundTime { get; set; }
public long? ShopId { get; set; }
public string SkuId { get; set; }
public ProductResult? ProductResult { get => productResult; set { Set(ref productResult, value); } }
/// <summary>
/// 售后补偿成本
/// </summary>
public decimal? ReissueAfterSaleAmount { get => reissueAfterSaleAmount; set { Set(ref reissueAfterSaleAmount, value); } }
/// <summary>
/// 补发快递费
/// </summary>
public decimal? ReissueFreight { get => reissueFreight; set { Set(ref reissueFreight, value); } }
/// <summary>
/// 补发货款成本
/// </summary>
public decimal? ReissueProductAmount { get => reissueProductAmount; set { Set(ref reissueProductAmount, value); } }
/// <summary>
/// 服务单处理结果
/// </summary>
public ServiceResult? ServiceResult { get => serviceResult; set { Set(ref serviceResult, value); } }
public object Clone()
{
return this.MemberwiseClone();
}
}
}

2
BBWY.Client/Models/Order/Order.cs

@ -199,7 +199,7 @@ namespace BBWY.Client.Models
/// <summary>
/// 售后信息
/// </summary>
public IList<AfterSaleOrderResponse> AfterSaleOrderList { get; set; }
public IList<AfterSaleOrder> AfterSaleOrderList { get; set; }
public void ConvertOrderCostDetailToGroup()
{

50
BBWY.Client/ViewModels/Order/OrderListViewModel.cs

@ -104,6 +104,8 @@ namespace BBWY.Client.ViewModels
public ICommand SetIncludeAfterOrderCommand { get; set; }
public ICommand EditAfterSaleOrderCommand { get; set; }
public OrderListViewModel(OrderService orderService, StatisticsService statisticsService, GlobalContext globalContext, ChoosePurchaseSchemeViewModel choosePurchaseSchemeViewModel)
{
random = new Random();
@ -160,6 +162,7 @@ namespace BBWY.Client.ViewModels
EditVenderRemarkCommand = new RelayCommand<Order>(EditVenderRemark);
ExportCommand = new RelayCommand(Export);
SetIncludeAfterOrderCommand = new RelayCommand(SetIncludeAfterOrder);
EditAfterSaleOrderCommand = new RelayCommand<object>(EditAfterSaleOrder);
SearchOrderCommand.Execute(null);
}
@ -726,5 +729,52 @@ namespace BBWY.Client.ViewModels
}
});
}
private void EditAfterSaleOrder(object param)
{
var paramList = (object[])param;
var orderId = paramList[0].ToString();
var skuId = paramList[1].ToString();
var order = OrderList.FirstOrDefault(o => o.Id == orderId);
var sku = order.ItemList.FirstOrDefault(s => s.Id == skuId);
var afterSaleOrderSku = order.AfterSaleOrderList.FirstOrDefault(aso => aso.OrderId == orderId && aso.SkuId == skuId);
if (afterSaleOrderSku == null)
{
afterSaleOrderSku = new AfterSaleOrder()
{
Id = 0,
SkuId = skuId,
OrderId = orderId,
ProductId = sku.ProductId,
ShopId = globalContext.User.Shop.ShopId
};
}
var editAfterSaleOrderSku = new EditAfterSaleOrderSku(afterSaleOrderSku);
editAfterSaleOrderSku.Closed += EditAfterSaleOrderSku_Closed;
editAfterSaleOrderSku.ShowDialog();
}
private void EditAfterSaleOrderSku_Closed(object sender, EventArgs e)
{
var editAfterSaleOrderSku = sender as EditAfterSaleOrderSku;
if (editAfterSaleOrderSku.DialogResult != true)
return;
var afterSaleOrder = editAfterSaleOrderSku.SaleOrder;
IsLoading = true;
Task.Factory.StartNew(() => orderService.EditAfterSaleOrderSku(afterSaleOrder)).ContinueWith(t =>
{
var response = t.Result;
if (!response.Success)
{
IsLoading = false;
App.Current.Dispatcher.Invoke(() => MessageBox.Show(response.Msg, "修改售后"));
return;
}
RefreshOrder(afterSaleOrder.OrderId);
});
}
}
}

91
BBWY.Client/Views/Order/EditAfterSaleOrderSku.xaml

@ -0,0 +1,91 @@
<c:BWindow x:Class="BBWY.Client.Views.Order.EditAfterSaleOrderSku"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:BBWY.Client.Views.Order"
xmlns:cmodel="clr-namespace:BBWY.Client.Models"
xmlns:c="clr-namespace:BBWY.Controls;assembly=BBWY.Controls"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
mc:Ignorable="d"
Style="{StaticResource bwstyle}"
MinButtonVisibility="Collapsed"
MaxButtonVisibility="Collapsed"
Title="EditAfterSaleOrderSku" Height="300" Width="300">
<c:BWindow.Resources>
<ObjectDataProvider x:Key="ServiceResultProvider" MethodName="GetValues" ObjectType="{x:Type sys:Enum}">
<ObjectDataProvider.MethodParameters>
<x:Type TypeName="cmodel:ServiceResult"/>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
<ObjectDataProvider x:Key="ProductResultProvider" MethodName="GetValues" ObjectType="{x:Type sys:Enum}">
<ObjectDataProvider.MethodParameters>
<x:Type TypeName="cmodel:ProductResult"/>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</c:BWindow.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="30"/>
<RowDefinition/>
<RowDefinition Height="40"/>
</Grid.RowDefinitions>
<Border BorderThickness="0,0,0,1" BorderBrush="{StaticResource MainMenu.BorderBrush}"
Background="{StaticResource Border.Background}">
<TextBlock Text="{Binding SaleOrder.SkuId,StringFormat=\{0\} 售后信息}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="5"/>
<RowDefinition Height="30"/>
<RowDefinition Height="30"/>
<RowDefinition Height="30"/>
<RowDefinition Height="30"/>
<RowDefinition Height="30"/>
<RowDefinition Height="30"/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBlock Text="处理结果" HorizontalAlignment="Right" VerticalAlignment="Center" Grid.Row="1"/>
<ComboBox Grid.Column="1" Grid.Row="1"
ItemsSource="{Binding Source={StaticResource ServiceResultProvider}}"
SelectedItem="{Binding SaleOrder.ServiceResult}"
SelectedIndex="0" Height="25" Width="100"
HorizontalAlignment="Left" VerticalAlignment="Center"
VerticalContentAlignment="Center" Margin="5,0,0,0"/>
<TextBlock Text="退款金额" HorizontalAlignment="Right" VerticalAlignment="Center" Grid.Row="2"/>
<c:BTextBox Grid.Column="1" Grid.Row="2" Height="25" Margin="5,0" IsEnabled="False" DisableBgColor="{StaticResource TextBox.Disable.BgColor}"
Text="{Binding SaleOrder.RefundAmount}"/>
<TextBlock Text="商品处理" HorizontalAlignment="Right" VerticalAlignment="Center" Grid.Row="3"/>
<ComboBox Grid.Column="1" Grid.Row="3"
ItemsSource="{Binding Source={StaticResource ProductResultProvider}}"
SelectedItem="{Binding SaleOrder.ProductResult}"
SelectedIndex="0" Height="25" Width="100"
HorizontalAlignment="Left" VerticalAlignment="Center"
VerticalContentAlignment="Center" Margin="5,0,0,0"/>
<TextBlock Text="补发快递成本" HorizontalAlignment="Right" VerticalAlignment="Center" Grid.Row="4"/>
<c:BTextBox Grid.Column="1" Grid.Row="4" Height="25" Margin="5,0"
Text="{Binding SaleOrder.ReissueFreight,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
<TextBlock Text="补发货款成本" HorizontalAlignment="Right" VerticalAlignment="Center" Grid.Row="5"/>
<c:BTextBox Grid.Column="1" Grid.Row="5" Height="25" Margin="5,0"
Text="{Binding SaleOrder.ReissueProductAmount,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
<TextBlock Text="售后补偿成本" HorizontalAlignment="Right" VerticalAlignment="Center" Grid.Row="6"/>
<c:BTextBox Grid.Column="1" Grid.Row="6" Height="25" Margin="5,0"
Text="{Binding SaleOrder.ReissueAfterSaleAmount,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
</Grid>
<c:BButton x:Name="btn_Save" Content="保存" Grid.Row="2" Width="60" HorizontalAlignment="Right" Margin="0,0,8,0"
Click="btn_Save_Click"/>
</Grid>
</c:BWindow>

27
BBWY.Client/Views/Order/EditAfterSaleOrderSku.xaml.cs

@ -0,0 +1,27 @@
using BBWY.Client.Models;
using BBWY.Controls;
namespace BBWY.Client.Views.Order
{
/// <summary>
/// EditAfterSaleOrderSku.xaml 的交互逻辑
/// </summary>
public partial class EditAfterSaleOrderSku : BWindow
{
public AfterSaleOrder SaleOrder { get; set; }
public EditAfterSaleOrderSku(AfterSaleOrder afterSaleOrder)
{
InitializeComponent();
if (afterSaleOrder.Id != 0)
SaleOrder = (AfterSaleOrder)afterSaleOrder.Clone();
this.DataContext = this;
}
private void btn_Save_Click(object sender, System.Windows.RoutedEventArgs e)
{
this.DialogResult = true;
this.Close();
}
}
}

10
BBWY.Client/Views/Order/OrderList.xaml

@ -392,7 +392,15 @@
</StackPanel>
</StackPanel>
<c:BButton Content="修改售后" Padding="5,0" Margin="5,0,0,0" Background="#EC808D"
Visibility="{Binding DataContext.OrderState,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBox}},Converter={StaticResource objConverter},ConverterParameter=已完成:Visible:Collapsed}"/>
Visibility="{Binding DataContext.OrderState,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBox}},Converter={StaticResource objConverter},ConverterParameter=已完成:Visible:Collapsed}"
Command="{Binding DataContext.EditAfterSaleOrderCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type Page}}}">
<c:BButton.CommandParameter>
<MultiBinding Converter="{StaticResource mptConverter}">
<Binding Path="DataContext.Id" RelativeSource="{RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBox},AncestorLevel=1}"/>
<Binding Path="Id"/>
</MultiBinding>
</c:BButton.CommandParameter>
</c:BButton>
</StackPanel>
<TextBlock>
<Run Text="货号:" />

11
BBWY.Server.Model/MappingProfiles.cs

@ -24,6 +24,8 @@ namespace BBWY.Server.Model
CreateMap<AddPurchaseOrderRequest, PurchaseOrder>();
CreateMap<PurchaseOrder, PurchaseOrderResponse>();
< CreateMap<EditAfterSaleOrderSkuRequest, AfterSaleOrder>();
CreateMap<OrderDropShippingRequest, OrderDropShipping>();
CreateMap<OrderDropShipping, OrderDropShippingResponse>();
CreateMap<OrderCostDetailRequest, OrderCostDetail>();
@ -57,15 +59,6 @@ namespace BBWY.Server.Model
.ForPath(t => t.OrderCost.ReissueAfterSaleAmount, opt => opt.MapFrom(f => f.ReissueAfterSaleAmount))
.ForPath(t => t.OrderCost.ReissueFreight, opt => opt.MapFrom(f => f.ReissueFreight))
.ForPath(t => t.OrderCost.ReissueProductAmount, opt => opt.MapFrom(f => f.ReissueProductAmount));
//.ForPath(t => t.OrderDropShipping.PurchaseAmount, opt => opt.MapFrom(f => f.PurchaseAmount))
//.ForPath(t => t.OrderDropShipping.PurchaseOrderId, opt => opt.MapFrom(f => f.PurchaseOrderId))
//.ForPath(t => t.OrderDropShipping.OrderId, opt => opt.MapFrom(f => f.Id))
//.ForPath(t => t.OrderDropShipping.DeliveryFreight, opt => opt.MapFrom(f => f.DeliveryFreight))
//.ForPath(t => t.OrderDropShipping.PurchasePlatform, opt => opt.MapFrom(f => f.PurchasePlatform))
//.ForPath(t => t.OrderDropShipping.BuyerAccount, opt => opt.MapFrom(f => f.BuyerAccount))
//.ForPath(t => t.OrderDropShipping.SellerAccount, opt => opt.MapFrom(f => f.SellerAccount))
//.ForPath(t => t.OrderDropShipping.SkuAmount, opt => opt.MapFrom(f => f.OrderDropShippingSkuAmount))
//.ForPath(t => t.OrderDropShipping.PurchaseFreight, opt => opt.MapFrom(f => f.OrderDropShippingPurchaseFreight));
}
}

Loading…
Cancel
Save