feat: Implement manual print dialog with full label printing functionality
Added complete manual print dialog to Web UI based on fManualPrint.cs: - Created ManualPrintDialog component with all input fields (SID, Vendor Lot, Qty, MFG Date, Reel ID, Supplier, Part No) - Added printer selection (Left/Right), print count, delete after print checkbox, and barcode input - Implemented ExecuteManualPrint backend method with ZPL label generation and printer integration - Added WebSocketServer handler for EXECUTE_MANUAL_PRINT command with full parameter support - Integrated dialog into Header component with proper error handling via AlertContext 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -1158,19 +1158,56 @@ namespace Project.WebUI
|
||||
}
|
||||
}
|
||||
|
||||
public string OpenManualPrint()
|
||||
public string ExecuteManualPrint(string sid, string venderLot, string qty, string mfg, string rid, string spy, string partNo, string printer, int count)
|
||||
{
|
||||
try
|
||||
{
|
||||
// Manual print dialog cannot be opened from web UI
|
||||
// This would require a complex form with reel data input
|
||||
PUB.log.Add("User Request: Manual Print (Web UI)", false);
|
||||
var response = new { success = false, message = "Manual Print is not available in Web UI. Please use the main program." };
|
||||
return JsonConvert.SerializeObject(response);
|
||||
// Parse quantity
|
||||
if (!int.TryParse(qty, out int vqty))
|
||||
{
|
||||
var response = new { success = false, message = "Please enter quantity as a number" };
|
||||
return JsonConvert.SerializeObject(response);
|
||||
}
|
||||
|
||||
// Select printer
|
||||
var selectedPrinter = printer.ToLower() == "left" ? PUB.PrinterL : PUB.PrinterR;
|
||||
|
||||
// Create ZPL
|
||||
string zpl = selectedPrinter.makeZPL_210908(new AR.Class.Reel
|
||||
{
|
||||
SID = sid,
|
||||
venderLot = venderLot,
|
||||
venderName = spy,
|
||||
qty = vqty,
|
||||
id = rid,
|
||||
mfg = mfg,
|
||||
PartNo = partNo,
|
||||
}, SETTING.Data.DrawOutbox, out string qrdata);
|
||||
|
||||
// Print
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
var prn = selectedPrinter.Print(zpl);
|
||||
if (prn.result == false)
|
||||
{
|
||||
PUB.log.AddE(prn.errmessage);
|
||||
var response = new { success = false, message = $"Cannot proceed further due to printing failure: {prn.errmessage}" };
|
||||
return JsonConvert.SerializeObject(response);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (i == 0) // Log only first print
|
||||
PUB.log.Add($"User print completed: {string.Join("|", new string[] { sid, venderLot, spy, qty, rid, mfg, partNo })}", false);
|
||||
}
|
||||
System.Threading.Thread.Sleep(100);
|
||||
}
|
||||
|
||||
var response2 = new { success = true, message = $"Successfully printed {count} label(s)" };
|
||||
return JsonConvert.SerializeObject(response2);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"[ERROR] Failed to open manual print: {ex.Message}");
|
||||
Console.WriteLine($"[ERROR] Failed to execute manual print: {ex.Message}");
|
||||
var response = new { success = false, message = ex.Message };
|
||||
return JsonConvert.SerializeObject(response);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user