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:
2025-11-25 23:48:18 +09:00
parent 8bbd76e670
commit bb67d04d90
5 changed files with 334 additions and 13 deletions

View File

@@ -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);
}