订单消费统计 商品标题筛选逻辑优化

This commit is contained in:
wule committed 2026-08-10 19:31:04 +08:00
1 parent ec9a856bc5
commit 261d580407
6 files changed
+98 -31

No files matched your search

@@ -25,17 +25,18 @@
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="0.8*"></ColumnDefinition>
<ColumnDefinition Width="0.8*"></ColumnDefinition>
<ColumnDefinition Width="0.75*"></ColumnDefinition>
<ColumnDefinition Width="0.75*"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="1.2*"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
@@ -45,14 +46,28 @@
<usercontrols:UcWaterMarkTextBox Grid.Column="0" x:Name="txtOrderId" Margin="0,0,8,0" Height="28" WaterMark="店铺单号" />
<usercontrols:UcWaterMarkTextBox Grid.Column="1" x:Name="txtSearchAll" Margin="0,0,8,0" Height="28" WaterMark="买手/仓库/退货物流 采购/退款单号" TextChanged="txtSearchAll_TextChanged"/>
<usercontrols:UcWaterMarkTextBox Grid.Column="2" x:Name="txtGoodsName" Margin="0,0,8,0" Height="28" WaterMark="商品标题" />
<usercontrols:UcWaterMarkTextBox x:Name="txtShopName" Grid.Column="3" Margin="0,0,-6,0" Height="28" WaterMark="全部店铺" TextWrapping="NoWrap"/>
<Button Grid.Column="4" x:Name="btnMultiShopChoice" Style="{StaticResource BasePageButtonLeftSquareStyle}" HorizontalAlignment="Left" VerticalAlignment="Center"
<!-- 选择标题筛选类型 -->
<Border Grid.Column="2" Margin="0,0,0,0" BorderBrush="{StaticResource pageColorBrush}" BorderThickness="1,1,1,1" Height="28" VerticalAlignment="Center" CornerRadius="4,0,0,4"/>
<ComboBox Grid.Column="2" x:Name="cmbFilterGoodsNameType" Margin="4,0,4,0" VerticalContentAlignment="Center" BorderBrush="Transparent" Style="{StaticResource RoundedComboBox}"
Width="70" Height="28" Text="标题包含" SelectedIndex="0" SelectionChanged="cmbFilterGoodsNameType_SelectionChanged">
<ComboBoxItem>
<TextBlock>标题包含</TextBlock>
</ComboBoxItem>
<ComboBoxItem>
<TextBlock>标题不含</TextBlock>
</ComboBoxItem>
</ComboBox>
<Border Grid.Column="3" BorderBrush="{StaticResource pageColorBrush}" BorderThickness="0,1,1,1" Height="28" VerticalAlignment="Center" CornerRadius="0,4,4,0" Margin="0,0,8,0" />
<usercontrols:UcWaterMarkTextBox Grid.Column="3" TextBorderThickness="0" x:Name="txtFilterGoodsName" Height="28" Margin="0,0,8,0" WaterMark="商品标题" TextChanged="txtGoodsNameFilter_TextChanged"/>
<usercontrols:UcWaterMarkTextBox Grid.Column="4" x:Name="txtShopName" Margin="0,0,-6,0" Height="28" WaterMark="全部店铺" TextWrapping="NoWrap"/>
<Button Grid.Column="5" x:Name="btnMultiShopChoice" Style="{StaticResource BasePageButtonLeftSquareStyle}" HorizontalAlignment="Left" VerticalAlignment="Center"
Margin="0,0,8,0" Content=" ... " Width="28" Height="28" Click="btnMultiShopChoice_Click"/>
<ComboBox Grid.Column="5" x:Name="cmbTimeType" Margin="4,0,4,0" VerticalContentAlignment="Center" BorderBrush="Transparent" Style="{StaticResource RoundedComboBox}"
<!-- 选择时间 -->
<Border Grid.Column="6" Margin="0,0,0,0" BorderBrush="{StaticResource pageColorBrush}" BorderThickness="1,1,1,1" Height="28" VerticalAlignment="Center" CornerRadius="4,0,0,4"/>
<ComboBox Grid.Column="6" x:Name="cmbTimeType" Margin="4,0,4,0" VerticalContentAlignment="Center" BorderBrush="Transparent" Style="{StaticResource RoundedComboBox}"
Width="70" Height="28" Text="更新时间" SelectedIndex="0">
<ComboBoxItem>
<TextBlock>更新时间</TextBlock>
@@ -61,18 +76,20 @@
<TextBlock>成交时间</TextBlock>
</ComboBoxItem>
</ComboBox>
<Border Grid.Column="5" Margin="0,0,0,0" BorderBrush="{StaticResource pageColorBrush}" BorderThickness="1,1,1,1" Height="28" VerticalAlignment="Center" CornerRadius="4,0,0,4"/>
<Border Grid.Column="6" BorderBrush="{StaticResource pageColorBrush}" BorderThickness="0,1,1,1" Height="28" VerticalAlignment="Center" CornerRadius="0,0,0,0" Margin="0,0,10,0"/>
<DatePicker Grid.Column="6" x:Name="dateStart" Margin="0,0,14,0" VerticalAlignment="Center" BorderThickness="0" />
<Border Grid.Column="7" BorderBrush="{StaticResource pageColorBrush}" BorderThickness="0,1,1,1" Height="28" VerticalAlignment="Center" CornerRadius="0,4,4,0" Margin="-10,0,0,0"/>
<DatePicker Grid.Column="7" x:Name="dateEnd" Margin="10,0,4,0" VerticalAlignment="Center" BorderThickness="0" />
<CheckBox Grid.Column="7" x:Name="chkEndDate" BorderBrush="{StaticResource mainColorBrush}" FontSize="12" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="-6,0"/>
<!-- 开始时间 -->
<Border Grid.Column="7" BorderBrush="{StaticResource pageColorBrush}" BorderThickness="0,1,1,1" Height="28" VerticalAlignment="Center" CornerRadius="0,0,0,0" Margin="0,0,10,0"/>
<DatePicker Grid.Column="7" x:Name="dateStart" Margin="0,0,14,0" VerticalAlignment="Center" BorderThickness="0" />
<Button Grid.Column="8" x:Name="btnFilter" Style="{StaticResource BasePageButtonStyle}" Margin="8,0,0,0" Content="过滤" MinWidth="48" Height="28" Click="btnFilter_Click" Padding="4"/>
<Button Grid.Column="9" x:Name="btnSearch" Style="{StaticResource BasePageButtonStyle}" Margin="4,0,4,0" Content="读单" MinWidth="78" Height="28" Click="btnSearch_Click" Padding="4" IsEnabled="False"/>
<!-- 结束时间 -->
<Border Grid.Column="8" BorderBrush="{StaticResource pageColorBrush}" BorderThickness="0,1,1,1" Height="28" VerticalAlignment="Center" CornerRadius="0,4,4,0" Margin="-10,0,0,0"/>
<DatePicker Grid.Column="8" x:Name="dateEnd" Margin="10,0,4,0" VerticalAlignment="Center" BorderThickness="0" />
<CheckBox Grid.Column="8" x:Name="chkEndDate" BorderBrush="{StaticResource mainColorBrush}" FontSize="12" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="-6,0"/>
<WrapPanel Grid.Column="10" VerticalAlignment="Center" Width="92">
<Button Grid.Column="9" x:Name="btnFilter" Style="{StaticResource BasePageButtonStyle}" Margin="8,0,0,0" Content="过滤" MinWidth="48" Height="28" Click="btnFilter_Click" Padding="4"/>
<Button Grid.Column="10" x:Name="btnSearch" Style="{StaticResource BasePageButtonStyle}" Margin="4,0,4,0" Content="读单" MinWidth="78" Height="28" Click="btnSearch_Click" Padding="4" IsEnabled="False"/>
<WrapPanel Grid.Column="11" VerticalAlignment="Center" Width="92">
<Image x:Name="imgLoading" Grid.Column="10" Source="{StaticResource imgLoadingPic}" Width="20" Height="20" Margin="0" IsEnabled="False">
<Image.RenderTransform>
<RotateTransform Angle="45" CenterX="10" CenterY="10"/>
@@ -98,7 +115,7 @@
</WrapPanel>
<Button Grid.Column="11" Content="利润统计" Style="{StaticResource BasePageButtonStyle}" Width="60" Height="28" Click="btn_ShowShopRevenueStatisticsView" Padding="4">
<Button Grid.Column="12" Content="利润统计" Style="{StaticResource BasePageButtonStyle}" HorizontalAlignment="Center" Width="60" Height="28" Click="btn_ShowShopRevenueStatisticsView" Padding="4">
</Button>
</Grid>
@@ -45,6 +45,7 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
public partial class OrderListCtrl : UserControl
{
public CheckBox chkSelectAll = null;
public OrderFilterConfig orderFilterConfig = null;
public bool IsAutoReadOrder = true;
public DateTime nextGetOrderTime = DateTime.MinValue;
@@ -62,6 +63,12 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
{
lbxOrder.ItemsSource = GlobalConfig.lstFilterOrder;
orderFilterConfig = NaiBa.Util.Helper.ConfigHelper.LoadConfig<OrderFilterConfig>("wx_order_filter_config");
if (orderFilterConfig == null)
orderFilterConfig = new OrderFilterConfig();
this.txtFilterGoodsName.Text = string.Join(";", orderFilterConfig.FilterGoodsName);
this.cmbFilterGoodsNameType.SelectedItem = cmbFilterGoodsNameType.Items.Cast<ComboBoxItem>().FirstOrDefault(tb => (tb.Content as TextBlock)?.Text == orderFilterConfig.FilterGoodsNameType);
dateStart.SelectedDate = DateTime.Now.Date.AddDays(-7);
dateEnd.SelectedDate = DateTime.Now.Date.AddDays(1).AddSeconds(-1);
@@ -950,9 +957,12 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
return true;
}
// 过滤商品名称
if (!string.IsNullOrEmpty(txtGoodsName.Text.Trim()) && !order.orderItems.Any(it => it.title.Contains(txtGoodsName.Text.Trim())))
if (!string.IsNullOrEmpty(txtFilterGoodsName.Text.Trim()))
{
return true;
if (orderFilterConfig.FilterGoodsNameType == "标题包含" && !orderFilterConfig.FilterGoodsName.Any(name => order.orderItems.Any(it => it.title.Contains(name))))
return true;
else if (orderFilterConfig.FilterGoodsNameType == "标题不含" && orderFilterConfig.FilterGoodsName.Any(name => order.orderItems.Any(it => it.title.Contains(name))))
return true;
}
// 过滤id
if (!string.IsNullOrEmpty(txtOrderId.Text.Trim()) && !(";" + txtOrderId.Text.Trim().Replace(' ', ';').Replace(',', ';') + ";").Contains(";" + order.order_id + ";"))
@@ -1783,5 +1793,35 @@ namespace _29WxOrderWpf.Ctrls.OrderCtrls
return HttpResponseYkdBLL.YangkeduoPostResponse(buyer, url, body, referer);
}
private void txtGoodsNameFilter_TextChanged(object sender, TextChangedEventArgs e)
{
if (IsLoaded)
{
if (string.Join(";", orderFilterConfig.FilterGoodsName) != txtFilterGoodsName.Text)
{
orderFilterConfig.FilterGoodsName = txtFilterGoodsName.Text.Split(new string[] { ";", ";", "\r", "\n" }, StringSplitOptions.RemoveEmptyEntries).ToList();
NaiBa.Util.Helper.ConfigHelper.SaveConfig("wx_order_filter_config", orderFilterConfig);
}
}
}
private void cmbFilterGoodsNameType_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (IsLoaded)
{
if (orderFilterConfig.FilterGoodsNameType != ((cmbFilterGoodsNameType.SelectedItem as ComboBoxItem)?.Content as TextBlock)?.Text)
{
orderFilterConfig.FilterGoodsNameType = ((cmbFilterGoodsNameType.SelectedItem as ComboBoxItem)?.Content as TextBlock)?.Text;
NaiBa.Util.Helper.ConfigHelper.SaveConfig("wx_order_filter_config", orderFilterConfig);
}
}
}
}
public class OrderFilterConfig
{
public string FilterGoodsNameType { get; set; } = "标题包含";
public List<string> FilterGoodsName { get; set; } = new List<string>();
}
}
@@ -12,7 +12,8 @@
</ResourceDictionary>
</UserControl.Resources>
<Grid>
<TextBox x:Name="txt" Text="{Binding Text, Mode=TwoWay}" Style="{StaticResource BaseRoundCornerTextBoxStyle}" BorderBrush="{StaticResource pageColorBrush}" BorderThickness="1"
<TextBox x:Name="txt" Text="{Binding Text, Mode=TwoWay}" Style="{StaticResource BaseRoundCornerTextBoxStyle}" BorderBrush="{StaticResource pageColorBrush}"
BorderThickness="{Binding TextBorderThickness}"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch" VerticalContentAlignment="Center" TextWrapping="{Binding TextWrapping}" TextChanged="txt_TextChanged"/>
<TextBlock x:Name="tbWaterMark" Text="{Binding WaterMark}" Margin="4,0,4,0" VerticalAlignment="Center" IsHitTestVisible="False" Foreground="DarkGray"
Visibility="{Binding ElementName=txt,Path=Text,Converter={StaticResource WaterMarkVisibility}}"></TextBlock>
@@ -45,16 +45,24 @@ namespace _29WxOrderWpf.UserControls
{
get { return (string)GetValue(WaterMarkProperty) == null ? "" : (string)GetValue(WaterMarkProperty); }
set { SetValue(WaterMarkProperty, value); }
}
}
public static readonly DependencyProperty TextWrappingProperty = DependencyProperty.Register("TextWrapping", typeof(TextWrapping), typeof(UcWaterMarkTextBox), null);
public TextWrapping TextWrapping
{
get { return (TextWrapping)GetValue(TextWrappingProperty); }
set { SetValue(TextWrappingProperty, value); }
}
public static readonly DependencyProperty TextWrappingProperty = DependencyProperty.Register("TextWrapping", typeof(TextWrapping), typeof(UcWaterMarkTextBox), null);
public TextWrapping TextWrapping
{
get { return (TextWrapping)GetValue(TextWrappingProperty); }
set { SetValue(TextWrappingProperty, value); }
}
private void txt_TextChanged(object sender, TextChangedEventArgs e)
public static readonly DependencyProperty TextBorderThicknessProperty = DependencyProperty.Register("TextBorderThickness", typeof(Thickness), typeof(UcWaterMarkTextBox),
new PropertyMetadata(new Thickness(1)));
public Thickness TextBorderThickness
{
get { return (Thickness)GetValue(TextBorderThicknessProperty); }
set { SetValue(TextBorderThicknessProperty, value); }
}
private void txt_TextChanged(object sender, TextChangedEventArgs e)
{
this.Text = txt.Text;
TextChanged?.Invoke(this, e);
+1 -1
View File
@@ -32,7 +32,7 @@ namespace AllBase
/// 版本ID
/// </summary>
public static int VersionCount = 219;
public static int VersionCount = 221;
public static string ServerUrl { get; set; } = "http://1.13.195.131:9000";
public static string DebugUrl { get; set; } = "http://localhost:9000";
+2 -1
View File
@@ -135,7 +135,8 @@ namespace Work
BaseClass.ShopPointsPerMonth = BaseRegex.GetStringJson(ref html, "shop_points_per_month").ParseToInt();
BaseClass.Balance = BaseRegex.GetDecimalJson(ref html, "balance");
BaseClass.PostagePerOrder = Math.Max(2.2m, BaseRegex.GetDecimalJson(ref html, "postage_per_order"));
BaseClass.OemId = BaseRegex.GetStringJson(ref html, "oem_id");
BaseClass.RechargeAmountTotal = BaseRegex.GetDecimalJson(ref html, "recharge_amount_total");
BaseClass.OemId = BaseRegex.GetStringJson(ref html, "oem_id");
BaseClass.OemName = BaseRegex.GetStringJson(ref html, "oem_name");
BaseClass.IsOemOwner = BaseRegex.GetBoolJson(ref html, "is_oem_owner");