OutboundFinishedSearchViewModel.cs
2.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using IndustrialControl.Services;
using System.Collections.ObjectModel;
using System;
using IndustrialControl.Pages;
namespace IndustrialControl.ViewModels;
public partial class OutboundFinishedSearchViewModel : ObservableObject
{
private readonly IWarehouseDataService _dataSvc;
[ObservableProperty] private string? searchOrderNo;
[ObservableProperty] private DateTime _createdDate = DateTime.Today;
[ObservableProperty] private OutboundOrderSummary? selectedOrder;
public OutboundFinishedSearchViewModel(IWarehouseDataService dataSvc)
{
_dataSvc = dataSvc;
Orders = new ObservableCollection<OutboundOrderSummary>();
}
public ObservableCollection<OutboundOrderSummary> Orders { get; }
[RelayCommand]
private async Task SearchAsync()
{
try
{
var list = await _dataSvc.ListOutboundOrdersAsync(SearchOrderNo, CreatedDate);
// ★ 在主线程更新 ObservableCollection,避免看起来“没刷新”
await MainThread.InvokeOnMainThreadAsync(() =>
{
Orders.Clear();
if (list != null)
{
foreach (var o in list)
Orders.Add(o);
}
});
// (排查辅助)无数据时提示一下,确认命令确实执行了
if (list == null || !list.Any())
await Shell.Current.DisplayAlert("提示", "未查询到任何入库单", "确定");
}
catch (Exception ex)
{
await Shell.Current.DisplayAlert("查询失败", ex.Message, "确定");
}
}
// 打开明细(携带 orderNo 导航)
[RelayCommand]
private async Task OpenItemAsync(OutboundOrderSummary item)
{
if (item is null) return;
await Shell.Current.GoToAsync(
$"{nameof(OutboundMaterialPage)}?orderNo={Uri.EscapeDataString(item.OrderNo)}");
}
[RelayCommand(CanExecute = nameof(CanGoOutbound))]
private async Task GoOutboundAsync()
{
if (SelectedOrder == null) return;
// 导航到原“入库明细/扫描”页面,并传入 orderNo
await Shell.Current.GoToAsync($"//OutboundFinished?orderNo={Uri.EscapeDataString(SelectedOrder.OrderNo)}");
}
public async Task LoadOrderAsync(string orderNo)
{
var order = await _dataSvc.GetOutboundOrderAsync(orderNo);
// TODO: 将 order 映射到页面“基础信息”“待入库明细”等绑定源,保持你现有绑定字段/集合不变
}
private bool CanGoOutbound() => SelectedOrder != null;
}