发票助手 增加 发票状态筛选,修复不能选中bug,修复开票失败bug

This commit is contained in:
chfei committed 2026-09-09 18:40:50 +08:00
1 parent df340c920a
commit c0e3b998ac
3 files changed
+61 -6

No files matched your search

@@ -222,6 +222,22 @@
Text="请输入订单号 / 商品名称"
Visibility="{Binding Text, ElementName=txtSearch, Converter={StaticResource NotHasTextVisibility}}" />
</Grid>
<wpf:TitleContent
Title="发票状态"
Placement="Left"
TitleVerticalAlignment="Center">
<ComboBox
Width="100"
Height="28"
d:SelectedIndex="0"
SelectedIndex="{Binding InvoiceStatus}"
Style="{StaticResource RoundedComboBox}">
<ComboBoxItem Content="全部" />
<ComboBoxItem Content="待开票" />
<ComboBoxItem Content="已申请" />
</ComboBox>
</wpf:TitleContent>
<Button
Width="50"
Height="30"
@@ -479,8 +495,7 @@
Grid.Column="0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
IsChecked="{Binding IsSelected}"
IsEnabled="{Binding IsSelected}" />
IsChecked="{Binding IsSelected}" />
<!-- 商品 -->
<Grid Grid.Column="1" VerticalAlignment="Center">
@@ -97,7 +97,7 @@ async function fillInvoiceAndApply(data = {}) {
console.log('✅ 已经申请过,无需重复操作');
return true;
}
const successElement = findElement('//*[text()="确认您的发票信息无误后再提交"]');
const successElement = findElement('//*[text()="确认发票信息无误后再提交"]');
if (successElement == null) {
return false;
}
@@ -41,6 +41,7 @@ namespace _29WxOrderWpf.Ctrls.PDDInvoice.ViewModels;
/// </summary>
public partial class PDDInvoiceViewModel : BindableBaseEx
{
private const string ConfigPath = "./invoice.config";
private readonly ObservableCollection<PddBrowserOrderInvoiceViewModel> _allOrders = new();
private readonly HashSet<string> _orderSns = new();
private string _searchText = "";
@@ -49,9 +50,11 @@ public partial class PDDInvoiceViewModel : BindableBaseEx
private bool _isInvoiceDetailOpen;
private string _invoiceTitle = "";
private string _taxNo = "";
private CancellationTokenSource _cancellationTokenSource; public PDDInvoiceViewModel()
private CancellationTokenSource _cancellationTokenSource;
private InvoiceConfig Config { get; }
public PDDInvoiceViewModel()
{
Config = NaiBa.Util.Helper.ConfigHelper.LoadConfig<InvoiceConfig>(ConfigPath);
Orders = new ObservableCollection<PddBrowserOrderInvoiceViewModel>();
Orders.CollectionChanged += Orders_CollectionChanged;
@@ -60,6 +63,10 @@ public partial class PDDInvoiceViewModel : BindableBaseEx
InitBrowser();
if (Config == null) Config = new InvoiceConfig();
InvoiceTitle = Config.Title;
TaxNo = Config.TaxNo;
MaxAmount = Config.MaxAmount;
if (EnvironmentHelper.IsTest)
{
@@ -105,6 +112,17 @@ public partial class PDDInvoiceViewModel : BindableBaseEx
public ObservableCollectionThreadSafe<BuyerLoginInfo> BuyerLoginList { get; set; } = new ObservableCollectionThreadSafe<BuyerLoginInfo>();
public int InvoiceStatus
{
get => GetValue<int>();
set => SetValue(value, InvoiceStatusChanged);
}
private void InvoiceStatusChanged()
{
}
public BuyerLoginInfo SelectedBuyer
{
get => GetProperty(() => SelectedBuyer);
@@ -371,6 +389,11 @@ public partial class PDDInvoiceViewModel : BindableBaseEx
"批量开票");
if (confirm.DialogResult != true) return;
Config.Title = InvoiceTitle;
Config.TaxNo = TaxNo;
Config.MaxAmount = MaxAmount;
NaiBa.Util.Helper.ConfigHelper.SaveConfig(ConfigPath, Config);
await BatchInvoiceAsync(targets);
}
@@ -460,8 +483,17 @@ public partial class PDDInvoiceViewModel : BindableBaseEx
{
var keyword = SearchText?.Trim();
Orders.Clear();
foreach (var order in _allOrders.Where(o => IsKeywordMatch(o, keyword)))
bool? _tempIsInvoiced = InvoiceStatus == 0 ? null : InvoiceStatus == 2;
foreach (var order in _allOrders)
{
if (_tempIsInvoiced.HasValue)
{
if (order.IsInvoiced != _tempIsInvoiced.Value) continue;
}
if (!IsKeywordMatch(order, keyword))
{
continue;
}
Orders.Add(order);
}
}
@@ -476,6 +508,7 @@ public partial class PDDInvoiceViewModel : BindableBaseEx
private void ResetSearch()
{
SearchText = "";
InvoiceStatus = 0;
Search();
}
/// <summary>
@@ -608,6 +641,7 @@ public partial class PDDInvoiceViewModel : BindableBaseEx
}
}
Orders.FirstOrDefault().IsInvoiced = true;
return Task.CompletedTask;
}
@@ -714,3 +748,9 @@ public partial class PDDInvoiceViewModel : BindableBaseEx
#endregion
}
class InvoiceConfig
{
public string Title { get; set; }
public string TaxNo { get; set; }
public decimal MaxAmount { get; set; }
}