OutboundFinishedPage.xaml.cs
4.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
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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
using IndustrialControl.Services;
using IndustrialControl.ViewModels;
namespace IndustrialControl.Pages
{
[QueryProperty(nameof(OutstockId), "outstockId")]
[QueryProperty(nameof(OutstockNo), "outstockNo")]
[QueryProperty(nameof(OrderType), "orderType")]
[QueryProperty(nameof(OrderTypeName), "orderTypeName")]
[QueryProperty(nameof(PurchaseNo), "purchaseNo")]
[QueryProperty(nameof(SupplierName), "supplierName")]
[QueryProperty(nameof(CreatedTime), "createdTime")]
public partial class OutboundFinishedPage : ContentPage
{
private readonly ScanService _scanSvc;
private readonly OutboundFinishedViewModel _vm;
public string? OutstockId { get; set; }
public string? OutstockNo { get; set; }
public string? OrderType { get; set; }
public string? OrderTypeName { get; set; }
public string? PurchaseNo { get; set; }
public string? SupplierName { get; set; }
public string? CreatedTime { get; set; }
public OutboundFinishedPage(OutboundFinishedViewModel vm, ScanService scanSvc)
{
InitializeComponent();
BindingContext = vm;
_scanSvc = scanSvc;
_vm = vm;
_scanSvc.Prefix = null; // 例如 "}q" 之类的前缀;没有就留 null
// _scanSvc.Suffix = "\n"; // 如果设备会附带换行,可去掉;没有就设 null
//_scanSvc.DebounceMs = 250;
_scanSvc.Suffix = null; // 先关掉
_scanSvc.DebounceMs = 0; // 先关掉
}
protected override async void OnAppearing()
{
base.OnAppearing();
// ✅ 用搜索页带过来的基础信息初始化页面,并拉取两张表
if (!string.IsNullOrWhiteSpace(OutstockId))
{
await _vm.InitializeFromSearchAsync(
outstockId: OutstockId ?? "",
outstockNo: OutstockNo ?? "",
orderType: OrderType ?? "",
orderTypeName: OrderTypeName ?? "",
purchaseNo: PurchaseNo ?? "",
supplierName: SupplierName ?? "",
createdTime: CreatedTime ?? ""
);
}
_scanSvc.Scanned += OnScanned;
_scanSvc.StartListening();
_scanSvc.Attach(ScanEntry);
ScanEntry.Focus();
}
protected override void OnDisappearing()
{
// 退出页面即注销(防止多个程序/页面抢处理)
_scanSvc.Scanned -= OnScanned;
_scanSvc.StopListening();
base.OnDisappearing();
}
private void OnScanned(string data, string type)
{
MainThread.BeginInvokeOnMainThread(async () =>
{
// 常见处理:自动填入单号/条码并触发查询或加入明细
_vm.ScanCode = data;
// 你原本的逻辑:若识别到是订单号 → 查询;若是包装码 → 加入列表等
await _vm.HandleScannedAsync(data, type);
});
}
/// <summary>
/// 清空扫描记录
/// </summary>
void OnClearClicked(object sender, EventArgs e)
{
_vm.ClearScan();
ScanEntry.Text = string.Empty;
ScanEntry.Focus();
}
/// <summary>
/// 预留摄像头扫码
/// </summary>
async void OnScanClicked(object sender, EventArgs e)
{
await DisplayAlert("提示", "此按钮预留摄像头扫码;硬件扫描直接扣扳机。", "确定");
}
/// <summary>
/// 点击“出库单明细”Tab
/// </summary>
void OnPendingTabClicked(object sender, EventArgs e)
{
_vm.ShowPendingCommand.Execute(null);
}
/// <summary>
/// 点击“扫描明细”Tab
/// </summary>
void OnScannedTabClicked(object sender, EventArgs e)
{
_vm.ShowScannedCommand.Execute(null);
}
/// <summary>
/// 扫描通过
/// </summary>
void OnPassScanClicked(object sender, EventArgs e)
{
_vm.PassScanCommand.Execute(null);
}
/// <summary>
/// 取消扫描
/// </summary>
void OnCancelScanClicked(object sender, EventArgs e)
{
_vm.CancelScanCommand.Execute(null);
}
/// <summary>
/// 确认出库
/// </summary>
async void OnConfirmClicked(object sender, EventArgs e)
{
_vm.ConfirmCommand.Execute(null);
}
}
}