352 lines
12 KiB
XML
352 lines
12 KiB
XML
<Window
|
||
x:Class="_29WxOrderWpf.Ctrls.Statistics.ShopRevenueStatisticsView"
|
||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||
xmlns:charts="clr-namespace:_29WxOrderWpf.Ctrls.Statistics.Charts"
|
||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||
xmlns:stat="clr-namespace:_29WxOrderWpf.Ctrls.Statistics"
|
||
xmlns:vm="clr-namespace:_29WxOrderWpf.Ctrls.Statistics.ViewModels"
|
||
xmlns:wpf="WxOrder.Framework"
|
||
Width="1600"
|
||
d:Background="#F5F7FB"
|
||
d:DataContext="{d:DesignInstance Type=vm:ShopRevenueStatisticsViewModel,
|
||
IsDesignTimeCreatable=True}"
|
||
d:DesignHeight="900"
|
||
d:DesignWidth="1600"
|
||
WindowStartupLocation="CenterScreen"
|
||
mc:Ignorable="d">
|
||
<Window.Resources>
|
||
<BooleanToVisibilityConverter x:Key="boolToVisibilityConverter" />
|
||
|
||
<!-- 卡片样式(白底、圆角、阴影) -->
|
||
<Style x:Key="CardBorderStyle" TargetType="Border">
|
||
<Setter Property="Background" Value="White" />
|
||
<Setter Property="CornerRadius" Value="8" />
|
||
<Setter Property="Padding" Value="18" />
|
||
<Setter Property="Margin" Value="4" />
|
||
<Setter Property="Effect">
|
||
<Setter.Value>
|
||
<DropShadowEffect
|
||
BlurRadius="10"
|
||
Opacity="0.08"
|
||
ShadowDepth="2"
|
||
Color="#000000" />
|
||
</Setter.Value>
|
||
</Setter>
|
||
</Style>
|
||
|
||
<!-- 表格单元格文字居中 -->
|
||
<Style x:Key="CenterCellTextStyle" TargetType="TextBlock">
|
||
<Setter Property="TextAlignment" Value="Center" />
|
||
<Setter Property="VerticalAlignment" Value="Center" />
|
||
</Style>
|
||
|
||
<!-- 面板标题 -->
|
||
<Style x:Key="PanelTitleStyle" TargetType="TextBlock">
|
||
<Setter Property="FontSize" Value="16" />
|
||
<Setter Property="FontWeight" Value="Bold" />
|
||
<Setter Property="Foreground" Value="#333333" />
|
||
</Style>
|
||
|
||
<!-- TabControl 样式(页签 + 内容区) -->
|
||
<Style x:Key="StatisticsTabControlStyle" TargetType="TabControl">
|
||
<Setter Property="Background" Value="Transparent" />
|
||
<Setter Property="BorderThickness" Value="0" />
|
||
<Setter Property="Template">
|
||
<Setter.Value>
|
||
<ControlTemplate TargetType="TabControl">
|
||
<Grid Margin="12">
|
||
<Grid.RowDefinitions>
|
||
<RowDefinition Height="Auto" />
|
||
<RowDefinition Height="*" />
|
||
</Grid.RowDefinitions>
|
||
<Border
|
||
Grid.Row="0"
|
||
Margin="6,0,0,0"
|
||
HorizontalAlignment="Left"
|
||
Background="Transparent">
|
||
<TabPanel
|
||
x:Name="HeaderPanel"
|
||
Background="Transparent"
|
||
IsItemsHost="True" />
|
||
</Border>
|
||
<Border
|
||
Grid.Row="1"
|
||
Background="Transparent"
|
||
CornerRadius="0,8,8,8">
|
||
<ContentPresenter x:Name="PART_SelectedContentHost" ContentSource="SelectedContent" />
|
||
</Border>
|
||
</Grid>
|
||
</ControlTemplate>
|
||
</Setter.Value>
|
||
</Setter>
|
||
</Style>
|
||
|
||
<!-- TabItem 样式 -->
|
||
<Style x:Key="StatisticsTabItemStyle" TargetType="TabItem">
|
||
<Setter Property="Foreground" Value="#666666" />
|
||
<Setter Property="FontSize" Value="15" />
|
||
<Setter Property="Template">
|
||
<Setter.Value>
|
||
<ControlTemplate TargetType="TabItem">
|
||
<Border
|
||
x:Name="Bd"
|
||
Margin="0,0,4,0"
|
||
Padding="20,9"
|
||
Background="Transparent"
|
||
BorderBrush="#E0E4EA"
|
||
BorderThickness="1,1,1,0"
|
||
CornerRadius="8,8,0,0">
|
||
<ContentPresenter
|
||
HorizontalAlignment="Center"
|
||
VerticalAlignment="Center"
|
||
ContentSource="Header" />
|
||
</Border>
|
||
<ControlTemplate.Triggers>
|
||
<Trigger Property="IsMouseOver" Value="True">
|
||
<Setter TargetName="Bd" Property="Background" Value="#F0F4FB" />
|
||
<Setter Property="Foreground" Value="#98638F" />
|
||
</Trigger>
|
||
<Trigger Property="IsSelected" Value="True">
|
||
<Setter TargetName="Bd" Property="Background" Value="White" />
|
||
<Setter TargetName="Bd" Property="BorderBrush" Value="#E0E4EA" />
|
||
<Setter Property="Foreground" Value="#98638F" />
|
||
<Setter Property="FontWeight" Value="Bold" />
|
||
</Trigger>
|
||
</ControlTemplate.Triggers>
|
||
</ControlTemplate>
|
||
</Setter.Value>
|
||
</Setter>
|
||
</Style>
|
||
</Window.Resources>
|
||
|
||
<Grid Background="#F5F7FB">
|
||
<TabControl SelectionChanged="TabControl_SelectionChanged" Style="{StaticResource StatisticsTabControlStyle}">
|
||
<TabItem Header="综合统计" Style="{StaticResource StatisticsTabItemStyle}">
|
||
<ScrollViewer
|
||
wpf:ScrollViewerBehavior.FixMouseWheel="True"
|
||
HorizontalScrollBarVisibility="Disabled"
|
||
VerticalScrollBarVisibility="Auto">
|
||
<StackPanel Margin="12">
|
||
|
||
<!-- ============ 查询条件工具栏(共享 UserControl) ============ -->
|
||
<stat:RevenueStatisticsSearchBar />
|
||
|
||
<!-- ============ 汇总卡片(共享 UserControl) ============ -->
|
||
<stat:RevenueSummaryCards />
|
||
|
||
<!-- ============ 图表区域 ============ -->
|
||
<Grid Margin="3,8,3,0">
|
||
<Grid.ColumnDefinitions>
|
||
<ColumnDefinition Width="2*" />
|
||
<ColumnDefinition Width="1*" />
|
||
</Grid.ColumnDefinitions>
|
||
|
||
<!-- 销售趋势 -->
|
||
<Border
|
||
Grid.Column="0"
|
||
Margin="6,6,3,6"
|
||
Style="{StaticResource CardBorderStyle}">
|
||
<StackPanel>
|
||
<TextBlock Style="{StaticResource PanelTitleStyle}" Text="销售趋势" />
|
||
<charts:RevenueLineChart
|
||
Height="330"
|
||
Margin="0,10,0,0"
|
||
Points="{Binding TrendData}" />
|
||
</StackPanel>
|
||
</Border>
|
||
|
||
<!-- 店铺销售占比 -->
|
||
<Border
|
||
Grid.Column="1"
|
||
Margin="3,6,6,6"
|
||
Style="{StaticResource CardBorderStyle}">
|
||
<StackPanel>
|
||
<TextBlock Style="{StaticResource PanelTitleStyle}" Text="店铺销售占比 TOP 5" />
|
||
<charts:RevenuePieChart
|
||
Height="330"
|
||
Margin="0,10,0,0"
|
||
ItemsSource="{Binding ShopProportionData}"
|
||
MaxItems="5" />
|
||
</StackPanel>
|
||
</Border>
|
||
</Grid>
|
||
|
||
<!-- ============ 店铺统计表格 ============ -->
|
||
<Border Margin="6,8,6,12" Style="{StaticResource CardBorderStyle}">
|
||
<StackPanel>
|
||
<TextBlock
|
||
Margin="0,0,0,10"
|
||
Style="{StaticResource PanelTitleStyle}"
|
||
Text="店铺统计" />
|
||
<DataGrid
|
||
AlternatingRowBackground="#FAFAFA"
|
||
AutoGenerateColumns="False"
|
||
Background="Transparent"
|
||
BorderThickness="0"
|
||
CanUserAddRows="False"
|
||
CanUserDeleteRows="False"
|
||
CanUserReorderColumns="False"
|
||
CanUserResizeRows="False"
|
||
ColumnHeaderStyle="{StaticResource BaseDataGridColumnHeaderStyle}"
|
||
FontSize="13"
|
||
Foreground="#333333"
|
||
GridLinesVisibility="Horizontal"
|
||
HeadersVisibility="Column"
|
||
HorizontalGridLinesBrush="#EEEEEE"
|
||
IsReadOnly="True"
|
||
ItemsSource="{Binding ShopStatistics}"
|
||
RowHeight="46"
|
||
ScrollViewer.CanContentScroll="True"
|
||
SelectionMode="Single"
|
||
SelectionUnit="FullRow"
|
||
VerticalScrollBarVisibility="Disabled">
|
||
<DataGrid.Columns>
|
||
<DataGridTextColumn
|
||
Width="*"
|
||
Binding="{Binding ShopName}"
|
||
ElementStyle="{StaticResource CenterCellTextStyle}"
|
||
Header="店铺" />
|
||
<DataGridTextColumn
|
||
Width="*"
|
||
Binding="{Binding OrderCount, StringFormat={}{0:N0}}"
|
||
ElementStyle="{StaticResource CenterCellTextStyle}"
|
||
Header="订单数" />
|
||
<DataGridTextColumn
|
||
Width="*"
|
||
Binding="{Binding SalesAmount, StringFormat={}¥{0:N2}}"
|
||
ElementStyle="{StaticResource CenterCellTextStyle}"
|
||
Header="销售额" />
|
||
<DataGridTextColumn
|
||
Width="*"
|
||
Binding="{Binding BuyerPaymentAmount, StringFormat={}¥{0:N2}}"
|
||
ElementStyle="{StaticResource CenterCellTextStyle}"
|
||
Header="采购金额" />
|
||
<DataGridTextColumn
|
||
Width="*"
|
||
Binding="{Binding Profit, StringFormat={}¥{0:N2}}"
|
||
ElementStyle="{StaticResource CenterCellTextStyle}"
|
||
Header="利润" />
|
||
<DataGridTextColumn
|
||
Width="*"
|
||
Binding="{Binding RefundAmount, StringFormat={}¥{0:N2}}"
|
||
ElementStyle="{StaticResource CenterCellTextStyle}"
|
||
Header="退款金额" />
|
||
<DataGridTextColumn
|
||
Width="*"
|
||
Binding="{Binding PlatformFeeTotal, StringFormat={}¥{0:N2}}"
|
||
ElementStyle="{StaticResource CenterCellTextStyle}"
|
||
Header="平台服务费总额" />
|
||
<DataGridTextColumn
|
||
Width="*"
|
||
Binding="{Binding Commission, StringFormat={}¥{0:N2}}"
|
||
ElementStyle="{StaticResource CenterCellTextStyle}"
|
||
Header="达人佣金" />
|
||
<DataGridTextColumn
|
||
Width="*"
|
||
Binding="{Binding AverageProfitRate, StringFormat={}{0:0.00}%}"
|
||
ElementStyle="{StaticResource CenterCellTextStyle}"
|
||
Header="平均利润率" />
|
||
<DataGridTextColumn
|
||
Width="*"
|
||
Binding="{Binding AvgOrderAmount, StringFormat={}¥{0:N2}}"
|
||
ElementStyle="{StaticResource CenterCellTextStyle}"
|
||
Header="客单价" />
|
||
</DataGrid.Columns>
|
||
</DataGrid>
|
||
</StackPanel>
|
||
</Border>
|
||
</StackPanel>
|
||
</ScrollViewer>
|
||
</TabItem>
|
||
|
||
<TabItem Header="天统计" Style="{StaticResource StatisticsTabItemStyle}">
|
||
<stat:PeriodRevenueStatisticsView PeriodType="Day" />
|
||
</TabItem>
|
||
|
||
<TabItem Header="周统计" Style="{StaticResource StatisticsTabItemStyle}">
|
||
<stat:PeriodRevenueStatisticsView PeriodType="Week" />
|
||
</TabItem>
|
||
|
||
<TabItem Header="月统计" Style="{StaticResource StatisticsTabItemStyle}">
|
||
<stat:PeriodRevenueStatisticsView PeriodType="Month" />
|
||
</TabItem>
|
||
</TabControl>
|
||
<!-- helper -->
|
||
<Border
|
||
Margin="0,20,30,0"
|
||
Padding="10"
|
||
HorizontalAlignment="Right"
|
||
VerticalAlignment="Top"
|
||
Background="{StaticResource pageColorBrush}"
|
||
BorderThickness="1"
|
||
Cursor="Hand"
|
||
MouseLeftButtonDown="help_mouseLeftButtonDown">
|
||
<WrapPanel>
|
||
<TextBlock
|
||
Margin="0,0,10,0"
|
||
Foreground="White"
|
||
Style="{StaticResource TextBlockIcon}"
|
||
Text="{StaticResource txt-chat_help}" />
|
||
<TextBlock
|
||
HorizontalAlignment="Center"
|
||
VerticalAlignment="Center"
|
||
FontWeight="Black"
|
||
Foreground="White"
|
||
Text="利润计算逻辑" />
|
||
</WrapPanel>
|
||
</Border>
|
||
|
||
<!-- Popup 弹出层 -->
|
||
<Popup
|
||
x:Name="InfoPopup"
|
||
AllowsTransparency="True"
|
||
Placement="Center"
|
||
PopupAnimation="Fade">
|
||
<Border
|
||
Padding="20"
|
||
Background="{StaticResource pageColorBrush}"
|
||
BorderThickness="1"
|
||
CornerRadius="4">
|
||
<Grid>
|
||
<Button
|
||
Margin="0,-10,-10,0"
|
||
HorizontalAlignment="Right"
|
||
VerticalAlignment="Top"
|
||
Background="Transparent"
|
||
Click="close"
|
||
Content="x" />
|
||
<TextBlock
|
||
x:Name="PopupText"
|
||
MaxWidth="500"
|
||
Margin="0,10,0,0"
|
||
FontSize="16"
|
||
Foreground="White"
|
||
LineHeight="25"
|
||
Text="利润计算:真实店铺利润。已下单的订单金额减去采购金额减去平台手续费减去达人佣金=实际计算利润,未下单的订单不计入。 

售后计算:只计算采购后发生的售后。发生售后金额减去发生售后采购总金额减去采购已退回金额=没退回金额(次月拉上月即可查到售后货损)发生售后店铺毛利自动减少。计算出店铺精准毛利。 

纯利计算:你们减去中转仓金额和店铺运费险。人工等额外金额。即可精准算出。"
|
||
TextWrapping="WrapWithOverflow" />
|
||
</Grid>
|
||
</Border>
|
||
</Popup>
|
||
<!-- ============ 加载遮罩 ============ -->
|
||
<Border
|
||
d:Visibility="Collapsed"
|
||
Background="#66FFFFFF"
|
||
Visibility="{Binding IsLoading, Converter={StaticResource boolToVisibilityConverter}}">
|
||
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
|
||
<ProgressBar
|
||
Width="240"
|
||
Height="8"
|
||
IsIndeterminate="True" />
|
||
<TextBlock
|
||
Margin="0,12,0,0"
|
||
HorizontalAlignment="Center"
|
||
FontSize="13"
|
||
Foreground="#888888"
|
||
Text="数据加载中..." />
|
||
</StackPanel>
|
||
</Border>
|
||
</Grid>
|
||
</Window>
|