初始化

This commit is contained in:
GukSang.Jin
2026-03-09 19:21:25 +08:00
parent 1d4b4bc754
commit a19a2c53e5
2 changed files with 45 additions and 14 deletions

View File

@@ -116,7 +116,7 @@
<StackPanel>
<Border Style="{StaticResource CardBorderStyle}">
<StackPanel>
<TextBlock Style="{StaticResource SectionTitleStyle}" Text="&#x6761;&#x6B3E;&#x68C0;&#x7D22;&#x4E0E;&#x91C7;&#x96C6;&#x7B56;&#x7565;" />
<TextBlock Style="{StaticResource SectionTitleStyle}" Text="&#x9879;&#x76EE;&#x68C0;&#x7D22;&#x4E0E;&#x91C7;&#x96C6;&#x7B56;&#x7565;" />
<TextBlock Style="{StaticResource CaptionStyle}" Text="&#x6839;&#x636E; YY 0948-2025 &#x5C06;&#x9879;&#x76EE;&#x533A;&#x5206;&#x4E3A;&#x201C;&#x5B9E;&#x65F6;&#x76D1;&#x63A7;&#x201D;&#x201C;&#x5B9E;&#x65F6;&#x663E;&#x793A;+&#x624B;&#x52A8;&#x5F55;&#x5165;&#x201D;&#x548C;&#x201C;&#x624B;&#x52A8;&#x5F55;&#x5165;&#x201D;&#x4E09;&#x7C7B;&#x3002;" TextWrapping="Wrap" />
<Grid Margin="0,10,0,0">
<Grid.ColumnDefinitions>

View File

@@ -81,6 +81,8 @@ public partial class MainViewModel : ObservableObject
[ObservableProperty]
private string itemSearchText = "";
private string activeFilter = "全部";
public MainViewModel(IStandardRepository repository, IModbusTelemetryService telemetryService)
{
_telemetryService = telemetryService;
@@ -109,7 +111,8 @@ public partial class MainViewModel : ObservableObject
public ObservableCollection<TraceEvent> TraceEvents { get; }
public ObservableCollection<AlarmMessage> AlarmMessages { get; }
public ObservableCollection<string> ResultStatusOptions { get; }
public IEnumerable<InspectionItem> FilteredItems => InspectionItems.Where(MatchesItemSearch);
public ObservableCollection<string> ItemFilterOptions { get; } = new(["全部", "待填写", "已完成", "实时监控", "手动填写"]);
public IEnumerable<InspectionItem> FilteredItems => InspectionItems.Where(MatchesActiveFilter).Where(MatchesItemSearch);
public bool HasFilteredItems => FilteredItems.Any();
public IEnumerable<DeviceChannel> FlowSensorChannels => Channels.Where(IsFlowSensorChannel);
public IEnumerable<DeviceChannel> OtherChannels => Channels.Where(channel => !IsFlowSensorChannel(channel));
@@ -158,20 +161,18 @@ public partial class MainViewModel : ObservableObject
partial void OnDetectionCompletedChanged(bool value) => OnPropertyChanged(nameof(ExportStateText));
partial void OnItemSearchTextChanged(string value)
{
OnPropertyChanged(nameof(FilteredItems));
OnPropertyChanged(nameof(FilteredItemSummary));
OnPropertyChanged(nameof(HasFilteredItems));
OnPropertyChanged(nameof(HasItemSearchText));
RefreshFilteredItemsView();
}
var filtered = FilteredItems.ToList();
if (filtered.Count == 0)
public string ActiveFilter
{
get => activeFilter;
set
{
return;
}
if (SelectedItem is null || !filtered.Contains(SelectedItem))
{
SelectedItem = filtered[0];
if (SetProperty(ref activeFilter, value))
{
RefreshFilteredItemsView();
}
}
}
@@ -305,6 +306,7 @@ public partial class MainViewModel : ObservableObject
});
RefreshComputedState();
RefreshFilteredItemsView();
}
[RelayCommand]
@@ -388,6 +390,7 @@ public partial class MainViewModel : ObservableObject
RefreshTelemetryPanel();
RefreshComputedState();
RefreshFilteredItemsView();
}
private void RefreshTelemetryPanel()
@@ -430,6 +433,25 @@ public partial class MainViewModel : ObservableObject
ComplianceRate = InspectionItems.Count == 0 ? 0 : QualifiedCount * 100d / InspectionItems.Count;
}
private void RefreshFilteredItemsView()
{
OnPropertyChanged(nameof(FilteredItems));
OnPropertyChanged(nameof(FilteredItemSummary));
OnPropertyChanged(nameof(HasFilteredItems));
OnPropertyChanged(nameof(HasItemSearchText));
var filtered = FilteredItems.ToList();
if (filtered.Count == 0)
{
return;
}
if (SelectedItem is null || !filtered.Contains(SelectedItem))
{
SelectedItem = filtered[0];
}
}
private void LoadSelectedItemDraft(InspectionItem item)
{
ResultValue = SelectedItemUsesRealtimeValue
@@ -629,6 +651,15 @@ ul {{ padding-left: 20px; }}
|| MatchesKeyword(item.TestMethod, keyword);
}
private bool MatchesActiveFilter(InspectionItem item) => ActiveFilter switch
{
"待填写" => item.Status == InspectionItemStatus.Pending,
"已完成" => item.Status != InspectionItemStatus.Pending,
"实时监控" => item.CaptureMode == InspectionItemCaptureMode.RealtimeMonitor,
"手动填写" => item.CaptureMode != InspectionItemCaptureMode.RealtimeMonitor,
_ => true
};
private static bool MatchesKeyword(string source, string keyword)
{
if (source.Contains(keyword, StringComparison.OrdinalIgnoreCase))