WorkOrderSearchViewModel.cs
3.1 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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using System.Collections.ObjectModel;
using System.Windows.Input;
namespace IndustrialControl.ViewModels;
public class WorkOrderSearchViewModel : ObservableObject
{
public ObservableCollection<WorkOrderDto> Orders { get; } = new();
private string? _keyword;
public string? Keyword
{
get => _keyword;
set => SetProperty(ref _keyword, value);
}
public DateTime StartDate { get; set; } = DateTime.Today.AddDays(-7);
public DateTime EndDate { get; set; } = DateTime.Today;
public List<string> StatusList { get; } = new() { "待执行", "执行中", "已完成", "已取消" };
private string? _selectedStatus = "待执行";
public string? SelectedStatus
{
get => _selectedStatus;
set => SetProperty(ref _selectedStatus, value);
}
private WorkOrderDto? _selectedOrder;
public WorkOrderDto? SelectedOrder
{
get => _selectedOrder;
set => SetProperty(ref _selectedOrder, value);
}
public ICommand SearchCommand { get; }
public ICommand ClearCommand { get; }
public WorkOrderSearchViewModel()
{
SearchCommand = new AsyncRelayCommand(SearchAsync);
ClearCommand = new RelayCommand(Clear);
}
public async Task SearchAsync()
{
// TODO: 调后端 API;这里先用 Mock
await Task.Delay(120);
Orders.Clear();
// 伪数据(根据条件简单过滤)
var all = MockOrders();
var filtered = all.Where(o =>
(string.IsNullOrWhiteSpace(Keyword) || o.OrderNo.Contains(Keyword!, StringComparison.OrdinalIgnoreCase)) &&
o.CreateDate.Date >= StartDate.Date && o.CreateDate.Date <= EndDate.Date &&
(string.IsNullOrWhiteSpace(SelectedStatus) || o.Status == SelectedStatus)
);
foreach (var m in filtered) Orders.Add(m);
}
public void Clear()
{
Keyword = string.Empty;
StartDate = DateTime.Today.AddDays(-7);
EndDate = DateTime.Today;
SelectedStatus = "待执行";
Orders.Clear();
}
private IEnumerable<WorkOrderDto> MockOrders()
{
yield return new WorkOrderDto
{
OrderNo = "SCGD20250601002",
OrderName = "XXXXXXXXXX",
Status = "待执行",
ProductName = "梅林午餐肉罐头198g",
Quantity = 10000,
CreateDate = DateTime.Today.AddDays(-3)
};
yield return new WorkOrderDto
{
OrderNo = "SCGD20250601003",
OrderName = "XXXXXXXXXX",
Status = "待执行",
ProductName = "梅林午餐肉罐头198g",
Quantity = 5000,
CreateDate = DateTime.Today.AddDays(-2)
};
yield return new WorkOrderDto
{
OrderNo = "SCGD20250601004",
OrderName = "XXXXXXXXXX",
Status = "执行中",
ProductName = "梅林午餐肉罐头198g",
Quantity = 8000,
CreateDate = DateTime.Today.AddDays(-1)
};
}
}