OutboundMaterialViewModel.cs
4.4 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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using System.Collections.ObjectModel;
using System.Threading.Tasks;
using System.Linq;
using System.Windows.Input;
using Microsoft.Maui.Graphics;
namespace IndustrialControl.ViewModels
{
public partial class OutboundMaterialViewModel : ObservableObject
{
// ===== 基础信息 =====
[ObservableProperty] private string orderNo;
[ObservableProperty] private string deliveryNo;
[ObservableProperty] private string customerName;
[ObservableProperty] private string deliveryTime;
[ObservableProperty] private string linkedOrderNo;
[ObservableProperty] private string remark;
// ===== Tab 切换状态 =====
[ObservableProperty] private bool isPendingVisible = true;
[ObservableProperty] private bool isScannedVisible = false;
[ObservableProperty] private Color pendingTabColor = Colors.LightBlue;
[ObservableProperty] private Color pendingTextColor = Colors.White;
[ObservableProperty] private Color scannedTabColor = Colors.White;
[ObservableProperty] private Color scannedTextColor = Colors.Black;
// ===== 列表数据 =====
public ObservableCollection<OutboundPendingItem> PendingList { get; set; } = new();
public ObservableCollection<ScannedItem> ScannedList { get; set; } = new();
// ===== 扫码输入 =====
[ObservableProperty] private string scanCode;
public OutboundMaterialViewModel()
{
LoadSampleData();
}
private void LoadSampleData()
{
// 基础信息示例
OrderNo = "XXXXX";
DeliveryNo = "SCGD20250601002";
CustomerName = "CGD2736273";
DeliveryTime = "2025-08-15";
LinkedOrderNo = "CGD2736273";
Remark = "优先出库";
// 出库单明细
PendingList.Add(new OutboundPendingItem { Name = "产品1", Code = "XXX", Spec = "A101", Bin = "A101", BatchNo = "B20250815", OutQty = 10, ScannedQty = 10 });
PendingList.Add(new OutboundPendingItem { Name = "产品2", Code = "YYY", Spec = "A102", Bin = "A102", BatchNo = "B20250815", OutQty = 5, ScannedQty = 2 });
PendingList.Add(new OutboundPendingItem { Name = "产品3", Code = "ZZZ", Spec = "A103", Bin = "A103", BatchNo = "B20250815", OutQty = 8, ScannedQty = 0 });
// 扫描明细
ScannedList.Add(new ScannedItem { Barcode = "FSC2025060300001", Name = "XXXX", Qty = 1, IsSelected = true });
ScannedList.Add(new ScannedItem { Barcode = "FSC2025060300002", Name = "XXXX", Qty = 1, IsSelected = true });
ScannedList.Add(new ScannedItem { Barcode = "FSC2025060300003", Name = "XXXX", Qty = 1, IsSelected = false });
ScannedList.Add(new ScannedItem { Barcode = "FSC2025060300004", Name = "XXXX", Qty = 1, IsSelected = false });
}
// ===== 操作方法 =====
public void ClearScan()
{
ScanCode = string.Empty;
}
public void ClearAll()
{
PendingList.Clear();
ScannedList.Clear();
ScanCode = string.Empty;
}
public void PassSelectedScan()
{
foreach (var item in ScannedList.Where(s => s.IsSelected))
{
// 逻辑示例:标记为已通过(这里可加业务处理)
}
}
public void CancelSelectedScan()
{
var toRemove = ScannedList.Where(s => s.IsSelected).ToList();
foreach (var item in toRemove)
ScannedList.Remove(item);
}
public async Task<bool> ConfirmOutboundAsync()
{
// 模拟出库确认逻辑
await Task.Delay(500); // 模拟网络延迟
return true;
}
}
// 出库单明细数据模型
public class OutboundPendingItem
{
public string Name { get; set; }
public string Code { get; set; }
public string Spec { get; set; }
public string Bin { get; set; }
public string BatchNo { get; set; }
public int OutQty { get; set; }
public int ScannedQty { get; set; }
}
// 扫描明细数据模型
public class ScannedItem
{
public bool IsSelected { get; set; }
public string Barcode { get; set; }
public string Name { get; set; }
public int Qty { get; set; }
}
}