feat(admin): add draw management features including create, update, delete, and batch delete functionalities

- Implemented API functions for creating, updating, and deleting draws.
- Enhanced the admin draws console with UI components for managing draws.
- Added internationalization support for new draw management actions and messages.
This commit is contained in:
2026-05-25 18:00:43 +08:00
parent eb02252431
commit f080e6ba8e
15 changed files with 948 additions and 24 deletions

View File

@@ -80,6 +80,9 @@
"exportDone": "Exported",
"exportFailed": "Export failed"
},
"datetime": {
"optionalHint": "Leave empty to auto-fill from server config"
},
"date": {
"placeholder": "Select date",
"rangePlaceholder": "Select date range",

View File

@@ -5,6 +5,18 @@
"generating": "Generating…",
"generateSuccess": "Generated {{created}} draws, buffer {{upcoming}}/{{target}}",
"generateFailed": "Generation failed",
"scheduleTimezoneHint": "Times in server timezone {{tz}} (GMT, per UI spec); draw interval {{interval}} min (LOTTERY_DRAW_INTERVAL_MINUTES).",
"createDraw": {
"open": "New draw",
"title": "Create draw manually",
"description": "Enter date and time in {{tz}} (not your browser local zone). If only draw time is set, start/close are derived from server config.",
"hint": "Start < close < draw. Draw number optional; sequence auto-assigned by UTC business date.",
"drawTimeRequired": "Draw time is required",
"submit": "Create",
"saving": "Creating…",
"success": "Draw created",
"failed": "Create failed"
},
"drawNo": "Draw no.",
"status": "Status",
"startTime": "Start time",
@@ -18,6 +30,28 @@
"reset": "Reset",
"fuzzyDrawNo": "Fuzzy draw no.",
"viewDetails": "View details",
"editDraw": {
"action": "Edit",
"title": "Edit draw",
"description": "Draw {{drawNo}} · edit times in {{tz}}",
"submit": "Save",
"saving": "Saving…",
"success": "Draw updated",
"failed": "Update failed"
},
"deleteDraw": {
"action": "Delete",
"title": "Delete draw",
"description": "Delete draw {{drawNo}}? Only for pending draws with no bets. This cannot be undone.",
"success": "Draw deleted",
"failed": "Delete failed"
},
"cancelFromList": {
"action": "Cancel",
"title": "Cancel draw",
"description": "Cancel draw {{drawNo}}? Status becomes cancelled; the row is kept."
},
"listActionsHint": "Pending with no bets: edit or delete. Open/closing/closed with no bets: cancel from list or use detail page.",
"invalidDrawId": "Invalid draw ID",
"loadFailed": "Failed to load. Check login and API configuration.",
"drawDetail": "Draw details",
@@ -162,5 +196,14 @@
"publishDescription": "Results become visible to players and may trigger settlement.",
"generatePlanTitle": "Confirm generate draw plan?",
"generatePlanDescription": "Future bettable draws will be created per system rules."
},
"batchDelete": {
"action": "Delete {{count}} draws",
"deleting": "Deleting…",
"confirmTitle": "Confirm batch delete draws?",
"confirmDescription": "Will delete {{count}} pending draws with no bets. This cannot be undone.",
"success": "Successfully deleted {{count}} draws",
"failed": "Batch delete failed",
"partialFailed": "Partial failure: {{success}} succeeded, {{failed}} failed"
}
}