feat: 重构管理端列表与风控/结算导航,新增表格导出和结算审核确认

This commit is contained in:
2026-05-19 17:06:56 +08:00
parent a1fb163f1b
commit 37b13278ef
47 changed files with 1255 additions and 524 deletions

View File

@@ -1,17 +1,13 @@
{
"title": "Reconcile",
"createTitle": "Create reconcile job",
"createDesc": "Abnormal flows are checked automatically by scheduled jobs. This section allows finance to trigger jobs manually: choose reconcile type and time range, and optionally fill in target references (player IDs, transfer numbers, or idempotency keys, one per line). Jobs and items are persisted for audit and future automation.",
"createDesc": "Manually check abnormal transfers by period or selected references. Scheduled reconciliation still runs automatically.",
"reconcileType": "Reconcile type",
"walletTransfer": "Wallet transfer (main site ⇄ lottery)",
"startTime": "Start time",
"endTime": "End time",
"scope": "Scope (optional)",
"scopePlaceholder": "One reference per line, for example player ID, wallet transfer number, or idempotency key.\nLeave empty to create a scoped job record without explicit refs.",
"scopeHint": "When reconciling with wallet transactions in pending_reconcile status, paste the transfer number or idempotency key above.",
"advancedToggleOpen": "Show advanced options (custom items JSON)",
"advancedToggleClose": "Hide advanced options (custom items JSON)",
"advancedJson": "Items JSON (overrides generated rows from the scope above)",
"scope": "Targets (optional)",
"scopePlaceholder": "One per line: player ID, transfer number, or main-site transaction number.\nLeave empty to check abnormal transfers in the selected period.",
"createTask": "Create reconcile job",
"submitting": "Submitting…",
"loadFailed": "Failed to load",
@@ -19,7 +15,6 @@
"periodRequired": "Enter both reconcile start and end time",
"periodInvalid": "Invalid time range",
"periodOrderInvalid": "End time must be later than or equal to start time",
"advancedJsonInvalid": "The advanced JSON cannot be parsed",
"createSuccess": "Reconcile job created",
"createFailed": "Failed to create job",
"noCreatePermission": "Current account cannot create reconcile jobs.",

View File

@@ -5,15 +5,19 @@
"status": "Status",
"apply": "Apply",
"batchList": "Settlement batches",
"allStatuses": "All",
"loadFailed": "Failed to load",
"exportFailed": "Export failed",
"actionSuccess": "{{name}} succeeded",
"actionFailed": "{{name}} failed",
"placeholderDrawNo": "For example 20260511-001",
"reviewStatus": "Review status",
"totalBet": "Total bet",
"actualDeduct": "Actual deduct",
"ticketCount": "Ticket count",
"winCount": "Win count",
"payoutTotal": "Total payout",
"platformProfit": "Profit/Loss",
"jackpot": "Jackpot",
"finishedAt": "Finished at",
"details": "Details",
@@ -33,10 +37,19 @@
"winTotal": "Win count",
"payoutAmount": "Payout total",
"jackpotPayout": "Jackpot payout",
"profitFormula": "Profit/Loss = actual deduct - total payout",
"startedAt": "Started",
"endedAt": "Ended",
"runPayout": "Run payout",
"exportSettlementReport": "Export settlement report",
"confirmAction": "Confirm {{name}}",
"confirmActionDesc": "Confirm settlement amounts and status for draw {{drawNo}}.",
"confirmPayoutDesc": "Running payout writes winning amounts to player lottery wallets and cannot be directly undone. Confirm result and settlement amounts first.",
"confirmAmountLine": "Actual deduct {{actual}}, payout {{payout}}, profit/loss {{profit}}.",
"reviewRemark": "Review remark",
"reviewRemarkPlaceholder": "Optional review note",
"cancel": "Cancel",
"confirm": "Confirm",
"loadingSummary": "Loading summary…",
"detailTitle": "Settlement details",
"ticketNo": "Ticket no.",
@@ -48,6 +61,10 @@
"statusOptions": {
"all": "All",
"running": "Running",
"pending_review": "Pending review",
"approved": "Approved",
"rejected": "Rejected",
"paid": "Paid",
"completed": "Completed",
"failed": "Failed"
}

View File

@@ -1,17 +1,13 @@
{
"title": "मिलान",
"createTitle": "म्यानुअल मिलान कार्य",
"createDesc": "असामान्य फ्लोहरू scheduled task ले स्वतः जाँच्छ। यहाँ वित्तले म्यानुअल रूपमा मिलान कार्य सुरु गर्न सक्छ: प्रकार र समय सीमा छान्नुहोस्, अनि आवश्यक परे player ID, transfer no, वा idempotency key जस्ता सन्दर्भहरू प्रति लाइन लेख्नुहोस्।",
"createDesc": "समय अवधि वा छानिएका सन्दर्भहरूबाट असामान्य ट्रान्सफर म्यानुअल रूपमा जाँच गर्नुहोस्। scheduled reconciliation स्वतः चलिरहन्छ।",
"reconcileType": "मिलान प्रकार",
"walletTransfer": "वालेट ट्रान्सफर (मुख्य साइट ⇄ लटरी)",
"startTime": "सुरु समय",
"endTime": "अन्त्य समय",
"scope": "दायरा (वैकल्पिक)",
"scopePlaceholder": "प्रति लाइन एउटा सन्दर्भ, जस्तै player ID, wallet transfer no, वा idempotency key.\nखाली छोडेमा केवल कार्य रेकर्ड सिर्जना हुन्छ।",
"scopeHint": "pending_reconcile स्थितिको वालेट कारोबारसँग मिलान गर्दा transfer no वा idempotency key माथि टाँस्नुहोस्।",
"advancedToggleOpen": "उन्नत विकल्प देखाउनुहोस् (custom items JSON)",
"advancedToggleClose": "उन्नत विकल्प लुकाउनुहोस् (custom items JSON)",
"advancedJson": "Items JSON (माथिको दायराबाट बनेका row हरूलाई override गर्छ)",
"scope": "लक्षित सन्दर्भ (वैकल्पिक)",
"scopePlaceholder": "प्रति लाइन एउटा: player ID, transfer no, वा main-site transaction no.\nखाली छोडेमा चयन गरिएको अवधिका असामान्य ट्रान्सफर जाँच हुन्छ।",
"createTask": "मिलान कार्य सिर्जना",
"submitting": "पेश हुँदैछ…",
"loadFailed": "लोड असफल भयो",
@@ -19,7 +15,6 @@
"periodRequired": "सुरु र अन्त्य समय दुवै लेख्नुहोस्",
"periodInvalid": "अवैध समय दायरा",
"periodOrderInvalid": "अन्त्य समय सुरु समयभन्दा पछाडि वा बराबर हुनुपर्छ",
"advancedJsonInvalid": "उन्नत JSON parse गर्न सकिएन",
"createSuccess": "मिलान कार्य सिर्जना भयो",
"createFailed": "कार्य सिर्जना असफल भयो",
"noCreatePermission": "हालको खातासँग मिलान कार्य सिर्जना गर्ने अनुमति छैन।",

View File

@@ -5,15 +5,19 @@
"status": "स्थिति",
"apply": "लागू गर्नुहोस्",
"batchList": "सेटलमेन्ट ब्याच",
"allStatuses": "सबै",
"loadFailed": "लोड असफल भयो",
"exportFailed": "निर्यात असफल भयो",
"actionSuccess": "{{name}} सफल भयो",
"actionFailed": "{{name}} असफल भयो",
"placeholderDrawNo": "जस्तै 20260511-001",
"reviewStatus": "समीक्षा स्थिति",
"totalBet": "कुल बेट",
"actualDeduct": "वास्तविक कटौती",
"ticketCount": "टिकट संख्या",
"winCount": "जित संख्या",
"payoutTotal": "कुल भुक्तानी",
"platformProfit": "नाफा/घाटा",
"jackpot": "Jackpot",
"finishedAt": "समाप्त समय",
"details": "विवरण",
@@ -33,10 +37,19 @@
"winTotal": "जित संख्या",
"payoutAmount": "कुल भुक्तानी",
"jackpotPayout": "Jackpot भुक्तानी",
"profitFormula": "नाफा/घाटा = वास्तविक कटौती - कुल भुक्तानी",
"startedAt": "सुरु",
"endedAt": "समाप्त",
"runPayout": "भुक्तानी चलाउनुहोस्",
"exportSettlementReport": "सेटलमेन्ट रिपोर्ट निर्यात",
"confirmAction": "{{name}} पुष्टि गर्नुहोस्",
"confirmActionDesc": "ड्रअ {{drawNo}} को रकम र स्थिति पुष्टि गर्नुहोस्।",
"confirmPayoutDesc": "भुक्तानी चलाउँदा जित रकम खेलाडीको लटरी वालेटमा लेखिन्छ र सीधै उल्ट्याउन सकिँदैन। पहिले नतिजा र रकम पुष्टि गर्नुहोस्।",
"confirmAmountLine": "वास्तविक कटौती {{actual}}, भुक्तानी {{payout}}, नाफा/घाटा {{profit}}।",
"reviewRemark": "समीक्षा टिप्पणी",
"reviewRemarkPlaceholder": "वैकल्पिक समीक्षा टिप्पणी",
"cancel": "रद्द",
"confirm": "पुष्टि",
"loadingSummary": "सारांश लोड हुँदैछ…",
"detailTitle": "सेटलमेन्ट विवरण",
"ticketNo": "टिकट नं.",
@@ -48,6 +61,10 @@
"statusOptions": {
"all": "सबै",
"running": "चलिरहेको",
"pending_review": "समीक्षा बाँकी",
"approved": "स्वीकृत",
"rejected": "अस्वीकृत",
"paid": "भुक्तानी भयो",
"completed": "सम्पन्न",
"failed": "असफल"
}

View File

@@ -107,7 +107,11 @@
"status": "期号状态",
"results": "开奖结果",
"finance": "期号收支",
"review": "审核与发布"
"review": "审核与发布",
"riskOccupancy": "风控占用",
"riskHot": "热门号码",
"riskSoldOut": "售罄号码",
"riskPools": "风险池"
},
"statusOptions": {
"all": "不限",

View File

@@ -1,17 +1,13 @@
{
"title": "对账",
"createTitle": "人工发起对账",
"createDesc": "异常流水由定时任务自动核对。此处供财务按产品文档手动触发:选择对账类型与时间范围;可选填写待核对对象(玩家标识、划转单号或幂等键,每行一条)。任务与明细落库留痕,后续可接自动差异引擎。",
"createDesc": "用于按时间段或指定单据人工核对异常转账。系统定时对账仍会自动执行。",
"reconcileType": "对账类型",
"walletTransfer": "钱包划转(主站 ⇄ 彩票)",
"startTime": "对账开始时间",
"endTime": "对账结束时间",
"scope": "限定范围(可选)",
"scopePlaceholder": "每行一条待核对引用,例如:玩家 ID、钱包划转单号、幂等键等。\n留空表示本时间段内不额外指定单据仅任务留痕。",
"scopeHint": "与「钱包流水」中待对账pending_reconcile流水对照使用时可将单号或幂等键粘贴至上方。",
"advancedToggleOpen": "展开高级选项(自定义明细 JSON",
"advancedToggleClose": "收起高级选项(自定义明细 JSON",
"advancedJson": "明细 JSON将覆盖上方「限定范围」生成的行",
"scope": "指定对象(可选)",
"scopePlaceholder": "每行一条:玩家 ID、划转单号或主站流水号。\n留空则核对所选时间段内的异常转账。",
"createTask": "创建对账任务",
"submitting": "提交中…",
"loadFailed": "加载失败",
@@ -19,7 +15,6 @@
"periodRequired": "请填写对账时间范围(开始与结束)",
"periodInvalid": "时间无效,请检查所选日期与时间",
"periodOrderInvalid": "结束时间需晚于或等于开始时间",
"advancedJsonInvalid": "高级选项中的 JSON 无法解析",
"createSuccess": "已创建对账任务",
"createFailed": "创建失败",
"noCreatePermission": "当前账号无新建对账任务权限。",

View File

@@ -5,15 +5,19 @@
"status": "状态",
"apply": "应用",
"batchList": "结算批次",
"allStatuses": "不限",
"loadFailed": "加载失败",
"exportFailed": "导出失败",
"actionSuccess": "{{name}}成功",
"actionFailed": "{{name}}失败",
"placeholderDrawNo": "如 20260511-001",
"reviewStatus": "审核状态",
"totalBet": "总下注",
"actualDeduct": "总实扣",
"ticketCount": "注单数",
"winCount": "中奖笔数",
"payoutTotal": "派彩合计",
"platformProfit": "盈亏",
"jackpot": "Jackpot",
"finishedAt": "完成时间",
"details": "明细",
@@ -33,10 +37,19 @@
"winTotal": "中奖笔数",
"payoutAmount": "派彩合计",
"jackpotPayout": "Jackpot 划出",
"profitFormula": "盈亏 = 总实扣 - 总派彩",
"startedAt": "开始",
"endedAt": "结束",
"runPayout": "执行派彩",
"exportSettlementReport": "导出结算报表",
"confirmAction": "确认{{name}}",
"confirmActionDesc": "请确认期号 {{drawNo}} 的结算金额和状态无误。",
"confirmPayoutDesc": "执行派彩后会把中奖金额写入玩家彩票钱包,不能直接撤回。请确认开奖结果和结算金额无误。",
"confirmAmountLine": "总实扣 {{actual}},总派彩 {{payout}},平台盈亏 {{profit}}。",
"reviewRemark": "审核备注",
"reviewRemarkPlaceholder": "可填写审核意见,非必填",
"cancel": "取消",
"confirm": "确认",
"loadingSummary": "加载摘要…",
"detailTitle": "注单结算明细",
"ticketNo": "注单号",
@@ -48,6 +61,10 @@
"statusOptions": {
"all": "不限",
"running": "进行中",
"pending_review": "待审核",
"approved": "已审核",
"rejected": "已驳回",
"paid": "已派奖",
"completed": "已完成",
"failed": "失败"
}