Files
29WxOrder/29WxOrderWpf/Ctrls/Statistics/ShopRevenueStatisticsView.xaml
T

294 lines
9.8 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<UserControl
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:vm="clr-namespace:_29WxOrderWpf.Ctrls.Statistics.ViewModels"
xmlns:stat="clr-namespace:_29WxOrderWpf.Ctrls.Statistics"
xmlns:wpf="clr-namespace:_29WxOrderWpf.Common"
d:Background="#F5F7FB"
d:DataContext="{d:DesignInstance Type=vm:ShopRevenueStatisticsViewModel,IsDesignTimeCreatable=True}"
d:DesignHeight="900"
d:DesignWidth="1600"
wpf:DialogWindowProperty.ResizeMode="CanResizeWithGrip"
wpf:DialogWindowProperty.ShowMinButton="False"
mc:Ignorable="d">
<UserControl.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"
IsItemsHost="True"
Background="Transparent" />
</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>
</UserControl.Resources>
<Grid Background="#F5F7FB">
<TabControl Style="{StaticResource StatisticsTabControlStyle}">
<TabItem
Header="综合统计"
Style="{StaticResource StatisticsTabItemStyle}">
<ScrollViewer 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" MaxItems="5"
ItemsSource="{Binding ShopProportionData}" />
</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 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>
<!-- ============ 加载遮罩 ============ -->
<Border Background="#66FFFFFF" Visibility="{Binding IsLoading, Converter={StaticResource boolToVisibilityConverter}}" d:Visibility="Collapsed" >
<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>
</UserControl>