feat(agents, config, dashboard, i18n): add agent line provision wizard, site deletion, and site dashboard with multi-language support
Added agent line provision wizard page with permission gating, replacing redirect placeholder. Introduced site deletion API and UI with confirmation dialog in integration sites management. Added new site-scoped dashboard panel showing bet metrics, P/L trends, active players, and quick links. Enhanced chart tooltip to support custom formatters and fix indicator color
This commit is contained in:
@@ -42,6 +42,7 @@ import neReconcile from "@/i18n/locales/ne/reconcile.json";
|
||||
import neReports from "@/i18n/locales/ne/reports.json";
|
||||
import neWallet from "@/i18n/locales/ne/wallet.json";
|
||||
import neAgents from "@/i18n/locales/ne/agents.json";
|
||||
import neSettlementCenter from "@/i18n/locales/ne/settlementCenter.json";
|
||||
import zhAudit from "@/i18n/locales/zh/audit.json";
|
||||
import zhAdminUsers from "@/i18n/locales/zh/adminUsers.json";
|
||||
import zhAuth from "@/i18n/locales/zh/auth.json";
|
||||
@@ -103,7 +104,7 @@ const resources = {
|
||||
settlement: neSettlement,
|
||||
wallet: neWallet,
|
||||
agents: neAgents,
|
||||
settlementCenter: enSettlementCenter,
|
||||
settlementCenter: neSettlementCenter,
|
||||
},
|
||||
zh: {
|
||||
common: zhCommon,
|
||||
|
||||
@@ -176,8 +176,7 @@
|
||||
},
|
||||
"lineProvision": {
|
||||
"title": "Create level-1 agent",
|
||||
"description": "Creates the level-1 agent, admin login, and line settings (share, credit, rebate, settlement cycle) in one step. Code cannot be changed later.",
|
||||
"code": "Agent code",
|
||||
"description": "Creates the level-1 agent, admin login, and line settings (share, credit, rebate, settlement cycle) in one step.",
|
||||
"name": "Level-1 agent name",
|
||||
"username": "Admin login",
|
||||
"password": "Initial password",
|
||||
|
||||
@@ -111,6 +111,10 @@
|
||||
"loading": "Loading…",
|
||||
"comingSoon": "Feature under development"
|
||||
},
|
||||
"integrationSites": {
|
||||
"emptyPlatformHint": "No integration sites yet. Create a site before managing agents, players, or settlement.",
|
||||
"createSite": "Create integration site"
|
||||
},
|
||||
"errors": {
|
||||
"loadFailed": "Failed to load"
|
||||
},
|
||||
|
||||
@@ -72,6 +72,13 @@
|
||||
"rotateConfirmTitle": "Rotate secrets?",
|
||||
"rotateConfirmDescription": "New SSO and wallet keys will be generated for {{code}}. Old keys stop working immediately.",
|
||||
"rotateConfirm": "Rotate",
|
||||
"delete": "Delete site",
|
||||
"deleteSuccess": "Deleted site {{code}}",
|
||||
"deleteFailed": "Failed to delete site",
|
||||
"deleteConfirmTitle": "Delete this site?",
|
||||
"deleteConfirmDescription": "This permanently removes site {{code}} ({{name}}), its agent line, settlement periods, players, and site admin accounts. This cannot be undone.",
|
||||
"deleteConfirm": "Delete",
|
||||
"deleting": "Deleting…",
|
||||
"secretsTitle": "Save these secrets now",
|
||||
"secretsDescription": "Secrets for {{code}} are shown only once.",
|
||||
"secretsDismiss": "I have saved them",
|
||||
|
||||
@@ -156,9 +156,35 @@
|
||||
"riskMonitor": "Risk monitor",
|
||||
"systemSettings": "System settings"
|
||||
},
|
||||
"site": {
|
||||
"title": "Site overview",
|
||||
"subtitle": "{{name}} · this site",
|
||||
"todayBet": "Today's bets",
|
||||
"todayProfit": "Today's P/L",
|
||||
"sevenDayTitle": "Last 7 days",
|
||||
"sevenDayProfit": "7-day P/L",
|
||||
"profitScopeHint": "Site scope: bets minus payouts",
|
||||
"activePlayersToday": "Active players today",
|
||||
"betOrdersTodayHint": "{{count}} orders today",
|
||||
"pendingBills": "Pending bills",
|
||||
"pendingUnpaid": "Unpaid {{amount}}",
|
||||
"latestBetAt": "Latest bet {{time}}",
|
||||
"noBetToday": "No bets yet today",
|
||||
"scaleTitle": "Site scale",
|
||||
"agentCount": "Agent nodes",
|
||||
"playerCount": "Players",
|
||||
"topAgentToday": "Top agent today: {{name}} ({{amount}})",
|
||||
"quickLinks": {
|
||||
"tickets": "Tickets",
|
||||
"players": "Players",
|
||||
"reports": "Reports",
|
||||
"agents": "Agents",
|
||||
"bills": "Settlement"
|
||||
}
|
||||
},
|
||||
"agent": {
|
||||
"title": "Operations overview",
|
||||
"subtitle": "Your line scope · {{name}}",
|
||||
"subtitle": "{{name}} · your line",
|
||||
"heroEyebrow": "Today's line cockpit",
|
||||
"heroTitle": "{{name}} live operations",
|
||||
"creditTitle": "Credit limit",
|
||||
@@ -176,6 +202,7 @@
|
||||
"teamPlayers": "Players in line",
|
||||
"activePlayersToday": "Active players today",
|
||||
"betOrdersToday": "Bet orders today",
|
||||
"betOrdersTodayHint": "{{count}} orders today",
|
||||
"todayBet": "Today's bet",
|
||||
"todayPayout": "Today's payout",
|
||||
"todayProfit": "Today's profit",
|
||||
@@ -202,6 +229,7 @@
|
||||
"yes": "Yes",
|
||||
"no": "No",
|
||||
"viewBills": "View bills",
|
||||
"lineMeta": "Depth {{depth}} · child agents {{childAgent}} · players {{player}}",
|
||||
"viewLine": "Agent line",
|
||||
"quickLinks": {
|
||||
"tickets": "Tickets",
|
||||
|
||||
@@ -15,7 +15,8 @@
|
||||
"closeDialogShare": "{{count}} ledger entries",
|
||||
"closeDialogUnsettled": "{{count}} tickets still unsettled",
|
||||
"closeDialogIrreversible": "Cannot undo. Use adjustments or reversals to fix errors.",
|
||||
"closeDialogConfirm": "Close period"
|
||||
"closeDialogConfirm": "Close period",
|
||||
"closeDialogEmpty": "No share ledger this period; closing will not generate bills."
|
||||
},
|
||||
"periodDetail": {
|
||||
"back": "Back to periods",
|
||||
@@ -152,7 +153,8 @@
|
||||
"adjustment": "Adjustment",
|
||||
"reversal": "Reversal",
|
||||
"bad_debt": "Bad debt",
|
||||
"share_ledger": "Share ledger"
|
||||
"share_ledger": "Share ledger",
|
||||
"freezeAmount": "Hold {{amount}}"
|
||||
}
|
||||
},
|
||||
"columns": {
|
||||
@@ -176,7 +178,13 @@
|
||||
"adjustmentType": "Type",
|
||||
"originalBill": "Original bill",
|
||||
"reason": "Reason",
|
||||
"badDebtAmount": "Write-off"
|
||||
"badDebtAmount": "Write-off",
|
||||
"playerAccount": "Player account",
|
||||
"playerId": "Player ID",
|
||||
"directAgent": "Direct agent",
|
||||
"superiorAgent": "Upline agent",
|
||||
"play": "Play",
|
||||
"drawNo": "Draw no."
|
||||
},
|
||||
"billStatus": {
|
||||
"pending_confirm": "Pending confirm",
|
||||
@@ -302,21 +310,72 @@
|
||||
"agent": "Agent bills",
|
||||
"pendingConfirm": "Pending confirm",
|
||||
"awaitingPayment": "Awaiting payment"
|
||||
},
|
||||
"billId": "Bill ID",
|
||||
"ownerKeyword": "Owner / counterparty",
|
||||
"ownerKeywordPh": "Player account or agent name",
|
||||
"status": "Bill status",
|
||||
"billType": "Bill type",
|
||||
"filterAll": "All statuses",
|
||||
"filterAllTypes": "All types",
|
||||
"filterAdjustment": "Adjust / reverse",
|
||||
"optional": "Optional",
|
||||
"searchBtn": "Search",
|
||||
"reset": "Reset",
|
||||
"refresh": "Refresh",
|
||||
"clientFilterHint": "Owner filter: showing {{shown}} / {{total}}",
|
||||
"emptyFiltered": "No bills match the filter. Try All statuses or reset.",
|
||||
"emptyClosed": "Period closed but no bills. Often no settled credit tickets in range.",
|
||||
"rowHint": {
|
||||
"playerOwner": "Player owner",
|
||||
"agentOwner": "Agent owner",
|
||||
"adjustmentOwner": "Adjustment owner",
|
||||
"badDebtOwner": "Bad debt owner",
|
||||
"reversalOwner": "Reversal owner",
|
||||
"playerUpline": "Player's upline agent",
|
||||
"agentUpline": "Settlement upline"
|
||||
}
|
||||
},
|
||||
"panels": {
|
||||
"overview": { "title": "Overview" },
|
||||
"ledger": { "title": "Account ledger" },
|
||||
"bills": { "title": "Bills" },
|
||||
"creditLedger": { "title": "Credit ledger" },
|
||||
"playerBills": { "title": "Player bills" },
|
||||
"agentBills": { "title": "Agent bills" },
|
||||
"pendingConfirm": { "title": "Pending confirm" },
|
||||
"awaiting": { "title": "Awaiting payment" },
|
||||
"payments": { "title": "Payment log" },
|
||||
"adjustments": { "title": "Adjust / reverse" },
|
||||
"reports": { "title": "Period reports" },
|
||||
"badDebt": { "title": "Bad debt" }
|
||||
"overview": {
|
||||
"title": "Overview"
|
||||
},
|
||||
"ledger": {
|
||||
"title": "Account ledger"
|
||||
},
|
||||
"bills": {
|
||||
"title": "Bills"
|
||||
},
|
||||
"creditLedger": {
|
||||
"title": "Credit ledger"
|
||||
},
|
||||
"playerBills": {
|
||||
"title": "Player bills"
|
||||
},
|
||||
"agentBills": {
|
||||
"title": "Agent bills"
|
||||
},
|
||||
"pendingConfirm": {
|
||||
"title": "Pending confirm"
|
||||
},
|
||||
"awaiting": {
|
||||
"title": "Awaiting payment"
|
||||
},
|
||||
"payments": {
|
||||
"title": "Payment log"
|
||||
},
|
||||
"adjustments": {
|
||||
"title": "Adjust / reverse"
|
||||
},
|
||||
"reports": {
|
||||
"title": "Period reports"
|
||||
},
|
||||
"badDebt": {
|
||||
"title": "Bad debt"
|
||||
},
|
||||
"workbench": {
|
||||
"title": "Workbench"
|
||||
}
|
||||
},
|
||||
"empty": {
|
||||
"noSite": "Select a site.",
|
||||
|
||||
@@ -163,6 +163,8 @@
|
||||
"account": "खाता सेटिङ",
|
||||
"integration": "मुख्य साइट एकीकरण",
|
||||
"agents": "एजेन्ट लाइन",
|
||||
"agent_list": "एजेन्ट सूची",
|
||||
"settlement_center": "सेटलमेन्ट केन्द्र",
|
||||
"config": "सञ्चालन कन्फिगरेसन"
|
||||
},
|
||||
"sidebar": {
|
||||
|
||||
@@ -153,6 +153,32 @@
|
||||
"riskMonitor": "जोखिम निगरानी",
|
||||
"systemSettings": "प्रणाली सेटिङ"
|
||||
},
|
||||
"site": {
|
||||
"title": "साइट सारांश",
|
||||
"subtitle": "{{name}} · यो साइट",
|
||||
"todayBet": "आजको बाजी",
|
||||
"todayProfit": "आजको नाफा/नोक्सान",
|
||||
"sevenDayTitle": "पछिल्लो ७ दिन",
|
||||
"sevenDayProfit": "७-दिने नाफा/नोक्सान",
|
||||
"profitScopeHint": "साइट दायरा: बाजी माइनस भुक्तानी",
|
||||
"activePlayersToday": "आज सक्रिय खेलाडी",
|
||||
"betOrdersTodayHint": "आज {{count}} अर्डर",
|
||||
"pendingBills": "बाँकी बिल",
|
||||
"pendingUnpaid": "नतिरेको {{amount}}",
|
||||
"latestBetAt": "पछिल्लो बाजी {{time}}",
|
||||
"noBetToday": "आज अहिलेसम्म बाजी छैन",
|
||||
"scaleTitle": "साइट परिमाण",
|
||||
"agentCount": "एजेन्ट नोड",
|
||||
"playerCount": "खेलाडी संख्या",
|
||||
"topAgentToday": "आजको शीर्ष एजेन्ट: {{name}} ({{amount}})",
|
||||
"quickLinks": {
|
||||
"tickets": "टिकट",
|
||||
"players": "खेलाडी",
|
||||
"reports": "रिपोर्ट",
|
||||
"agents": "एजेन्ट",
|
||||
"bills": "सेटलमेन्ट"
|
||||
}
|
||||
},
|
||||
"warnings": {
|
||||
"drawPermission": "यो खातासँग ड्रअ/ड्यासबोर्ड हेर्ने अनुमति छैन। वित्तीय र जोखिम डाटा फिर्ता आएन।",
|
||||
"walletPermission": "यो खातासँग वालेट मिलान हेर्ने अनुमति छैन। असामान्य ट्रान्सफर संख्या फिर्ता आएन।",
|
||||
|
||||
402
src/i18n/locales/ne/settlementCenter.json
Normal file
402
src/i18n/locales/ne/settlementCenter.json
Normal file
@@ -0,0 +1,402 @@
|
||||
{
|
||||
"title": "सेटलमेन्ट केन्द्र",
|
||||
"subtitle": "अवधि बन्द, बिल पुष्टि र भुक्तानी",
|
||||
"subtitleList": "अवधि सूची: खोल्नुहोस्/बन्द गर्नुहोस्; सारांश स्तम्भहरू समावेश — बिल र बेट लेजरका लागि पङ्क्ति कार्य प्रयोग गर्नुहोस्।",
|
||||
"period": {
|
||||
"title": "Period",
|
||||
"statusCompleted": "Completed",
|
||||
"pipelineShare": "{{count}} ledger entries",
|
||||
"billTodo": "Pending {{p}} · Awaiting {{a}}",
|
||||
"openTitle": "Open period",
|
||||
"openBtn": "Open period",
|
||||
"closeNeedLedger": "No ledger activity yet. Complete draw settlement first.",
|
||||
"closeDialogTitle": "Close period",
|
||||
"closeDialogDesc": "Summarize {{range}} and generate bills.",
|
||||
"closeDialogShare": "{{count}} ledger entries",
|
||||
"closeDialogUnsettled": "{{count}} tickets still unsettled",
|
||||
"closeDialogIrreversible": "Cannot undo. Use adjustments or reversals to fix errors.",
|
||||
"closeDialogConfirm": "Close period",
|
||||
"closeDialogEmpty": "No share ledger this period; closing will not generate bills."
|
||||
},
|
||||
"periodDetail": {
|
||||
"back": "Back to periods",
|
||||
"notFound": "Period not found or site changed. Go back to the list."
|
||||
},
|
||||
"periodTable": {
|
||||
"title": "Periods",
|
||||
"statusFilter": "Status",
|
||||
"range": "Period",
|
||||
"ledgerCount": "Ledger",
|
||||
"pending": "Pending",
|
||||
"awaiting": "Awaiting",
|
||||
"shareLedger": "Share ledger",
|
||||
"gameWinLoss": "Win/loss total",
|
||||
"platformWinLoss": "Platform win/loss",
|
||||
"agentWinLoss": "Agent win/loss",
|
||||
"basicRebate": "Rebate total",
|
||||
"unsettledTickets": "Unsettled tickets",
|
||||
"openReportHint": "Open period: share/win-loss from in-period ledger; bill count updates after close.",
|
||||
"viewDetail": "View details",
|
||||
"close": "Close",
|
||||
"closeNow": "Close now",
|
||||
"hasOpen": "Period {{range}} is open. Close it before opening a new one.",
|
||||
"emptyOpenHint": "No periods yet. Click Open period in the toolbar.",
|
||||
"emptyReadOnly": "No period records.",
|
||||
"emptyFiltered": "No rows match the filter. Reset filters.",
|
||||
"emptyFilteredOpen": "The open period is hidden by the filter. Choose All or Open.",
|
||||
"readOnlyHint": "Bound agent accounts cannot open or close site periods."
|
||||
},
|
||||
"header": {
|
||||
"subtitle": "क्रेडिट-लाइन सेटलमेन्ट",
|
||||
"statusRunning": "अवधि खुला",
|
||||
"statusIdle": "कुनै खुला अवधि छैन",
|
||||
"statusCompleted": "अवधि पूरा भयो"
|
||||
},
|
||||
"subnav": {
|
||||
"label": "सेटलमेन्ट केन्द्र नेभिगेसन"
|
||||
},
|
||||
"workbench": {
|
||||
"viewPeriod": "Period",
|
||||
"closePreset": "Close · {{label}}",
|
||||
"closeNoData": "Close failed: no share ledger in period. Run credit game settlement first.",
|
||||
"openPeriodPipeline": "Open {{range}} · {{share}} share entries"
|
||||
},
|
||||
"nav": {
|
||||
"periods": "अवधिहरू",
|
||||
"bills": "बिलहरू",
|
||||
"operations": "भुक्तानी र समायोजन",
|
||||
"ledger": "लेजर",
|
||||
"creditLedger": "क्रेडिट लेजर",
|
||||
"playerBills": "Player bills",
|
||||
"agentBills": "Agent bills",
|
||||
"pendingConfirm": "Pending confirm",
|
||||
"awaitingPayment": "Awaiting payment",
|
||||
"payments": "Payment log",
|
||||
"adjustments": "Adjust / reverse",
|
||||
"badDebt": "Bad debt",
|
||||
"reports": "Period reports"
|
||||
},
|
||||
"operations": {
|
||||
"hint": "Payment registration, bad-debt write-offs, and adjustments. Player credit movements are under Account ledger.",
|
||||
"adjustmentsTitle": "Adjustments / reversals / bad debt",
|
||||
"loadFailed": "Failed to load payment and adjustment records",
|
||||
"operationType": "Operation type",
|
||||
"filterAllTypes": "All types",
|
||||
"typePayment": "Payment",
|
||||
"keyword": "Keyword",
|
||||
"keywordPh": "Method, reason, proof, payer/payee"
|
||||
},
|
||||
"filters": {
|
||||
"period": "Period",
|
||||
"statusAll": "All",
|
||||
"allPeriods": "All periods",
|
||||
"statusOpen": "Open",
|
||||
"statusClosed": "Closed",
|
||||
"statusCompleted": "Completed"
|
||||
},
|
||||
"overview": {
|
||||
"pendingConfirm": "Pending confirm",
|
||||
"awaitingPayment": "Awaiting payment",
|
||||
"totalUnpaid": "Total unpaid",
|
||||
"openPeriod": "Open period",
|
||||
"creditLedger": "Credit ledger (in period)",
|
||||
"shareLedger": "Share ledger (in period)",
|
||||
"pipelineHint": "Bills are created after period close; counts below are in-period activity."
|
||||
},
|
||||
"ledger": {
|
||||
"groupIntro": "In-period money movements: credit holds, bill payments, adjustments, and bad debt. Share bills after close are under Bills.",
|
||||
"paymentsIntro": "Confirmed bill payments (payment_records). Register from bill detail; this page is the period-wide log.",
|
||||
"adjustmentsIntro": "Bill adjustments and reversals (settlement_adjustments).",
|
||||
"badDebtIntro": "Bad debt write-off entries linked to original bills."
|
||||
},
|
||||
"creditLedger": {
|
||||
"periodIntro": "Credit-line bets in this period: bet hold and draw settlement (merged per ticket).",
|
||||
"emptyPeriod": "No bet ledger entries in this period. Ensure credit players placed bets and draws were settled.",
|
||||
"intro": "Ledger entries for the selected period.",
|
||||
"columns": {
|
||||
"txn": "Txn ID",
|
||||
"player": "Player",
|
||||
"reason": "Type",
|
||||
"ref": "Reference",
|
||||
"amount": "Amount",
|
||||
"channel": "Channel",
|
||||
"status": "Status",
|
||||
"time": "Time"
|
||||
},
|
||||
"channelCredit": "Credit line",
|
||||
"viewPlayer": "Player detail",
|
||||
"entryKind": {
|
||||
"adjustment": "Adjustment"
|
||||
},
|
||||
"status": {
|
||||
"posted": "Posted"
|
||||
},
|
||||
"actions": {
|
||||
"viewPlayer": "Player detail",
|
||||
"viewBill": "Bill detail",
|
||||
"confirm": "Confirm bill",
|
||||
"confirmDesc": "After confirm, the bill moves to awaiting payment.",
|
||||
"payment": "Record payment",
|
||||
"adjustment": "Adjust",
|
||||
"reversal": "Reverse",
|
||||
"badDebt": "Bad debt"
|
||||
},
|
||||
"reason": {
|
||||
"payment_record": "Bill payment",
|
||||
"bet_hold": "Bet hold",
|
||||
"game_settlement": "Draw settlement",
|
||||
"game_settlement_win": "Draw settlement credit",
|
||||
"bet_hold_release": "Hold release",
|
||||
"game_settlement_loss": "Draw settlement debit",
|
||||
"settlement_payout": "Settlement payout",
|
||||
"settlement_confirm": "Period confirm",
|
||||
"adjustment": "Adjustment",
|
||||
"reversal": "Reversal",
|
||||
"bad_debt": "Bad debt",
|
||||
"share_ledger": "Share ledger",
|
||||
"freezeAmount": "Hold {{amount}}"
|
||||
}
|
||||
},
|
||||
"columns": {
|
||||
"period": "Period",
|
||||
"type": "Type",
|
||||
"owner": "Owner",
|
||||
"counterparty": "Counterparty",
|
||||
"gross": "Win/loss",
|
||||
"net": "Net",
|
||||
"paid": "Paid",
|
||||
"unpaid": "Unpaid",
|
||||
"status": "Status",
|
||||
"billId": "Bill ID",
|
||||
"payer": "Payer",
|
||||
"payee": "Payee",
|
||||
"amount": "Amount",
|
||||
"method": "Method",
|
||||
"time": "Time",
|
||||
"summary": "Summary",
|
||||
"detail": "Detail",
|
||||
"adjustmentType": "Type",
|
||||
"originalBill": "Original bill",
|
||||
"reason": "Reason",
|
||||
"badDebtAmount": "Write-off",
|
||||
"playerAccount": "Player account",
|
||||
"playerId": "Player ID",
|
||||
"directAgent": "Direct agent",
|
||||
"superiorAgent": "Upline agent",
|
||||
"play": "Play",
|
||||
"drawNo": "Draw no."
|
||||
},
|
||||
"billStatus": {
|
||||
"pending_confirm": "Pending confirm",
|
||||
"confirmed": "Confirmed",
|
||||
"partial_paid": "Partial paid",
|
||||
"settled": "Settled",
|
||||
"overdue": "Overdue",
|
||||
"reversed": "Reversed"
|
||||
},
|
||||
"billType": {
|
||||
"adjustment": "Adjustment",
|
||||
"reversal": "Reversal",
|
||||
"badDebt": "Bad debt write-off"
|
||||
},
|
||||
"adjustmentType": {
|
||||
"adjustment": "Adjustment",
|
||||
"reversal": "Reversal",
|
||||
"bad_debt": "Bad debt"
|
||||
},
|
||||
"paymentStatus": {
|
||||
"pending": "Pending",
|
||||
"confirmed": "Confirmed"
|
||||
},
|
||||
"actions": {
|
||||
"detail": "Detail",
|
||||
"viewBill": "View bill",
|
||||
"billDetail": "Bill detail"
|
||||
},
|
||||
"billDisplay": {
|
||||
"settlementFlow": "Who pays whom",
|
||||
"settlementAmount": "Settlement amount",
|
||||
"pays": "Pays",
|
||||
"paysShort": "Pays",
|
||||
"howAmountWorks": "Breakdown",
|
||||
"payerLabel": "Payer",
|
||||
"payeeLabel": "Payee",
|
||||
"playerBreakdownIntro": "Players settle only with their direct agent: net = win/loss − rebate.",
|
||||
"agentBreakdownIntro": "Agents settle only with their upline: net = team net − downline share − own share.",
|
||||
"playerGross": "Game win/loss",
|
||||
"playerLostHint": "Player lost; owes agent",
|
||||
"playerWonHint": "Player won; agent owes player",
|
||||
"playerNet": "Player net payable",
|
||||
"playerNetReceive": "Agent pays player",
|
||||
"teamGross": "Team game win/loss",
|
||||
"teamGrossHint": "Includes this agent and all downline players",
|
||||
"teamGrossShort": "Team",
|
||||
"playerGrossShort": "Player",
|
||||
"teamRebate": "Team rebate",
|
||||
"teamNet": "Team net",
|
||||
"rebate": "Rebate",
|
||||
"agentShareKeep": "Share kept at this tier",
|
||||
"agentShareKeepHint": "Profit retained at this tier by share ratio",
|
||||
"agentDownlineShare": "Downline share",
|
||||
"agentDownlineShareHint": "Profit retained by downline agents (see breakdown below)",
|
||||
"agentDownlineShareItem": "{{agent}} kept",
|
||||
"agentNet": "Pay {{counterparty}}",
|
||||
"agentNetReceive": "{{counterparty}} pays this tier",
|
||||
"billOwner": "Bill owner",
|
||||
"billCounterparty": "Counterparty",
|
||||
"unpaidPendingConfirm": "Confirm the bill before recording payment",
|
||||
"unpaidAwaitingPayment": "Record offline payment",
|
||||
"fullySettled": "Fully settled this period",
|
||||
"confirmHint": "Confirm the bill before recording payment.",
|
||||
"recordReceiptFrom": "Record receipt ({{payer}} → {{payee}})",
|
||||
"recordPayoutTo": "Record payout ({{payer}} → {{payee}})",
|
||||
"rebateAllocationsHint": "How rebate is allocated across agent tiers.",
|
||||
"payment": "Payment",
|
||||
"flowHint": {
|
||||
"playerPayAgent": "Player should settle with the direct agent",
|
||||
"agentPayPlayer": "Direct agent should settle with the player",
|
||||
"agentPayUpstream": "This agent should settle with upline / platform",
|
||||
"upstreamPayAgent": "Upline / platform should settle with this agent",
|
||||
"adjustment": "Adjustment settles separately and keeps the original bill relation",
|
||||
"badDebt": "Write off unpaid amount and archive it as bad debt",
|
||||
"reversal": "Reverse the original bill impact according to reversal rules",
|
||||
"generic": "Apply payment or adjustment based on this bill relation"
|
||||
},
|
||||
"hierarchyHint": "One period creates multiple bills: players pay their agent first; each agent keeps share profit and remits the rest upline. Gross win/loss may match across rows while settlement amounts step down."
|
||||
},
|
||||
"ledgerPanel": {
|
||||
"search": "Search",
|
||||
"searchBtn": "Search",
|
||||
"reset": "Reset filters",
|
||||
"refresh": "Refresh page",
|
||||
"filterAll": "Any",
|
||||
"playerAccount": "Player account",
|
||||
"playerAccountPh": "Username or site player ID",
|
||||
"playerId": "Player ID",
|
||||
"optional": "Optional",
|
||||
"billStatus": "Bill status",
|
||||
"dateRange": "Date range",
|
||||
"rowPosted": "Posted"
|
||||
},
|
||||
"billsPanel": {
|
||||
"intro": "Share bills after period close. Filter by type or status; open detail to confirm or record payment.",
|
||||
"hierarchyHint": "One period creates multiple bills: players pay their agent first; each agent keeps share profit and remits the rest upline. Gross win/loss may match across rows while settlement amounts step down.",
|
||||
"quickFilter": {
|
||||
"title": "Which settlement layer do you want to review",
|
||||
"desc": "Choose player or agent settlement first, then narrow by status or bill id.",
|
||||
"allTitle": "All bills",
|
||||
"allHint": "View player, agent, adjustment, and bad debt bills together",
|
||||
"playerTitle": "Player settlement",
|
||||
"playerHint": "Credit settlement between players and their direct agent",
|
||||
"agentTitle": "Agent settlement",
|
||||
"agentHint": "Tier settlement between agents and their upline / platform"
|
||||
},
|
||||
"activeHint": {
|
||||
"all": "Current focus: all settlement documents in this period",
|
||||
"player": "Current focus: credit settlement between players and direct agents",
|
||||
"agent": "Current focus: payments between agents and their upline / platform"
|
||||
},
|
||||
"layer": {
|
||||
"player": "Player vs direct agent",
|
||||
"agent": "Agent vs upline / platform",
|
||||
"adjustment": "Settlement adjustment",
|
||||
"badDebt": "Bad debt archive",
|
||||
"reversal": "Historical bill reversal",
|
||||
"generic": "Settlement supporting document"
|
||||
},
|
||||
"category": {
|
||||
"all": "All",
|
||||
"player": "Player bills",
|
||||
"agent": "Agent bills",
|
||||
"pendingConfirm": "Pending confirm",
|
||||
"awaitingPayment": "Awaiting payment"
|
||||
},
|
||||
"billId": "Bill ID",
|
||||
"ownerKeyword": "Owner / counterparty",
|
||||
"ownerKeywordPh": "Player account or agent name",
|
||||
"status": "Bill status",
|
||||
"billType": "Bill type",
|
||||
"filterAll": "All statuses",
|
||||
"filterAllTypes": "All types",
|
||||
"filterAdjustment": "Adjust / reverse",
|
||||
"optional": "Optional",
|
||||
"searchBtn": "Search",
|
||||
"reset": "Reset",
|
||||
"refresh": "Refresh",
|
||||
"clientFilterHint": "Owner filter: showing {{shown}} / {{total}}",
|
||||
"emptyFiltered": "No bills match the filter. Try All statuses or reset.",
|
||||
"emptyClosed": "Period closed but no bills. Often no settled credit tickets in range.",
|
||||
"rowHint": {
|
||||
"playerOwner": "Player owner",
|
||||
"agentOwner": "Agent owner",
|
||||
"adjustmentOwner": "Adjustment owner",
|
||||
"badDebtOwner": "Bad debt owner",
|
||||
"reversalOwner": "Reversal owner",
|
||||
"playerUpline": "Player's upline agent",
|
||||
"agentUpline": "Settlement upline"
|
||||
}
|
||||
},
|
||||
"panels": {
|
||||
"overview": {
|
||||
"title": "Overview"
|
||||
},
|
||||
"ledger": {
|
||||
"title": "Account ledger"
|
||||
},
|
||||
"bills": {
|
||||
"title": "Bills"
|
||||
},
|
||||
"creditLedger": {
|
||||
"title": "Credit ledger"
|
||||
},
|
||||
"playerBills": {
|
||||
"title": "Player bills"
|
||||
},
|
||||
"agentBills": {
|
||||
"title": "Agent bills"
|
||||
},
|
||||
"pendingConfirm": {
|
||||
"title": "Pending confirm"
|
||||
},
|
||||
"awaiting": {
|
||||
"title": "Awaiting payment"
|
||||
},
|
||||
"payments": {
|
||||
"title": "Payment log"
|
||||
},
|
||||
"adjustments": {
|
||||
"title": "Adjust / reverse"
|
||||
},
|
||||
"reports": {
|
||||
"title": "Period reports"
|
||||
},
|
||||
"badDebt": {
|
||||
"title": "Bad debt"
|
||||
},
|
||||
"workbench": {
|
||||
"title": "Workbench"
|
||||
}
|
||||
},
|
||||
"empty": {
|
||||
"noSite": "Select a site.",
|
||||
"noPeriods": "Close the current period first.",
|
||||
"noClosed": "Close a period to generate bills.",
|
||||
"noBadDebt": "No bad debt records.",
|
||||
"noCreditLedger": "No ledger entries in this period.",
|
||||
"billsNeedClose": "Bills are created after period close."
|
||||
},
|
||||
"periods": {
|
||||
"loadFailed": "Failed to load periods"
|
||||
},
|
||||
"toast": {
|
||||
"periodClosed": "Period closed",
|
||||
"periodClosedUnsettled": "Period closed; {{count}} ticket(s) still unsettled."
|
||||
},
|
||||
"errors": {
|
||||
"loadBills": "Failed to load bills",
|
||||
"loadPayments": "Failed to load payments",
|
||||
"loadAdjustments": "Failed to load adjustments",
|
||||
"loadBadDebt": "Failed to load bad debt records",
|
||||
"loadCreditLedger": "Failed to load credit ledger"
|
||||
}
|
||||
}
|
||||
@@ -301,15 +301,12 @@
|
||||
},
|
||||
"lineProvision": {
|
||||
"title": "创建一级代理",
|
||||
"description": "将一级代理绑定到已有接入站点,并配置后台登录账号与占成、授信、回水、结算周期。代理编码创建后不可修改。",
|
||||
"description": "将一级代理绑定到已有接入站点,并配置后台登录账号与占成、授信、回水、结算周期。",
|
||||
"siteCode": "接入站点",
|
||||
"siteCodePlaceholder": "选择站点",
|
||||
"siteRequired": "请选择接入站点",
|
||||
"codeRequired": "请填写代理编码",
|
||||
"codePatternInvalid": "代理编码仅支持字母、数字、下划线和中划线,且需以字母或数字开头",
|
||||
"noUnboundSite": "暂无未绑定一级代理的站点",
|
||||
"openIntegrationSites": "前往接入站点",
|
||||
"code": "代理编码",
|
||||
"name": "一级代理名称",
|
||||
"username": "后台登录账号",
|
||||
"password": "初始密码",
|
||||
|
||||
@@ -111,6 +111,10 @@
|
||||
"loading": "加载中…",
|
||||
"comingSoon": "功能开发中"
|
||||
},
|
||||
"integrationSites": {
|
||||
"emptyPlatformHint": "暂无接入站点。请先创建站点,再进行代理、玩家、结算等业务操作。",
|
||||
"createSite": "去创建接入站点"
|
||||
},
|
||||
"errors": {
|
||||
"loadFailed": "加载失败"
|
||||
},
|
||||
|
||||
@@ -72,6 +72,13 @@
|
||||
"rotateConfirmTitle": "确认重置密钥?",
|
||||
"rotateConfirmDescription": "将重新生成站点 {{code}} 的 SSO 与钱包密钥,旧密钥立即失效。",
|
||||
"rotateConfirm": "确认重置",
|
||||
"delete": "删除站点",
|
||||
"deleteSuccess": "已删除站点 {{code}}",
|
||||
"deleteFailed": "删除站点失败",
|
||||
"deleteConfirmTitle": "确认删除站点?",
|
||||
"deleteConfirmDescription": "将永久删除站点 {{code}}({{name}})及其代理链、账期、玩家与站点后台账号,此操作不可恢复。",
|
||||
"deleteConfirm": "确认删除",
|
||||
"deleting": "删除中…",
|
||||
"secretsTitle": "请妥善保存密钥",
|
||||
"secretsDescription": "站点 {{code}} 的密钥仅显示一次,关闭后无法再次查看完整内容。",
|
||||
"secretsDismiss": "我已保存",
|
||||
|
||||
@@ -156,9 +156,35 @@
|
||||
"riskMonitor": "风控监控",
|
||||
"systemSettings": "系统设置"
|
||||
},
|
||||
"site": {
|
||||
"title": "站点概览",
|
||||
"subtitle": "{{name}} · 本站点",
|
||||
"todayBet": "今日下注",
|
||||
"todayProfit": "今日盈亏",
|
||||
"sevenDayTitle": "近 7 天走势",
|
||||
"sevenDayProfit": "近 7 天盈亏",
|
||||
"profitScopeHint": "站点口径:投注减派彩(不含占成拆分)",
|
||||
"activePlayersToday": "今日活跃玩家",
|
||||
"betOrdersTodayHint": "今日 {{count}} 单",
|
||||
"pendingBills": "待结账单",
|
||||
"pendingUnpaid": "未结合计 {{amount}}",
|
||||
"latestBetAt": "最近下注 {{time}}",
|
||||
"noBetToday": "今日暂时没有下注",
|
||||
"scaleTitle": "站点规模",
|
||||
"agentCount": "代理节点",
|
||||
"playerCount": "玩家总数",
|
||||
"topAgentToday": "今日投注最高代理:{{name}}({{amount}})",
|
||||
"quickLinks": {
|
||||
"tickets": "注单查询",
|
||||
"players": "玩家管理",
|
||||
"reports": "报表统计",
|
||||
"agents": "代理组织",
|
||||
"bills": "结算中心"
|
||||
}
|
||||
},
|
||||
"agent": {
|
||||
"title": "经营概览",
|
||||
"subtitle": "本线路数据范围 · {{name}}",
|
||||
"subtitle": "{{name}} · 本线路",
|
||||
"heroEyebrow": "今日经营驾驶舱",
|
||||
"heroTitle": "{{name}} 的线路动态",
|
||||
"creditTitle": "授信额度",
|
||||
@@ -176,6 +202,7 @@
|
||||
"teamPlayers": "线路玩家数",
|
||||
"activePlayersToday": "今日活跃玩家",
|
||||
"betOrdersToday": "今日下注单数",
|
||||
"betOrdersTodayHint": "今日 {{count}} 单",
|
||||
"todayBet": "今日下注",
|
||||
"todayPayout": "今日派彩",
|
||||
"todayProfit": "今日盈亏",
|
||||
@@ -202,6 +229,7 @@
|
||||
"yes": "是",
|
||||
"no": "否",
|
||||
"viewBills": "查看账单",
|
||||
"lineMeta": "层级 {{depth}} · 可开下级 {{childAgent}} · 可开玩家 {{player}}",
|
||||
"viewLine": "代理线路",
|
||||
"quickLinks": {
|
||||
"tickets": "注单查询",
|
||||
|
||||
@@ -159,7 +159,6 @@
|
||||
"paid": "已收付",
|
||||
"unpaid": "未结",
|
||||
"status": "状态",
|
||||
"billId": "账单 ID",
|
||||
"payer": "付款方",
|
||||
"payee": "收款方",
|
||||
"amount": "金额",
|
||||
@@ -282,7 +281,8 @@
|
||||
"player": "玩家账单",
|
||||
"agent": "代理账单",
|
||||
"pendingConfirm": "待确认",
|
||||
"awaitingPayment": "待收付"
|
||||
"awaitingPayment": "待收付",
|
||||
"all": "全部"
|
||||
},
|
||||
"quickFilter": {
|
||||
"title": "当前想看哪一层结算",
|
||||
@@ -318,22 +318,49 @@
|
||||
},
|
||||
"hierarchyHint": "同一账期会生成多笔账单:玩家先与直属代理结,代理扣除本级占成后再向上级缴纳。因此「输赢」可能相同,但「结算金额」会逐级减少。",
|
||||
"emptyFiltered": "当前筛选下暂无账单,请改为「全部状态」或重置筛选。",
|
||||
"emptyClosed": "本期已关账但暂无账单。常见原因:账期内无信用盘玩家的已结算注单,或占成流水不在本账期时间范围内。"
|
||||
"emptyClosed": "本期已关账但暂无账单。常见原因:账期内无信用盘玩家的已结算注单,或占成流水不在本账期时间范围内。",
|
||||
"intro": "关账后生成的占成账单。可按类型或状态筛选,详情内确认或登记收付。"
|
||||
},
|
||||
"panels": {
|
||||
"workbench": { "title": "工作台" },
|
||||
"overview": { "title": "结算概览" },
|
||||
"ledger": { "title": "账务流水" },
|
||||
"bills": { "title": "全部账单" },
|
||||
"creditLedger": { "title": "信用流水" },
|
||||
"playerBills": { "title": "玩家账单" },
|
||||
"agentBills": { "title": "代理账单" },
|
||||
"pendingConfirm": { "title": "待确认账单" },
|
||||
"awaiting": { "title": "待收付账单" },
|
||||
"payments": { "title": "收付记录" },
|
||||
"adjustments": { "title": "调账 / 冲正" },
|
||||
"reports": { "title": "账期报表" },
|
||||
"badDebt": { "title": "坏账核销" }
|
||||
"workbench": {
|
||||
"title": "工作台"
|
||||
},
|
||||
"overview": {
|
||||
"title": "结算概览"
|
||||
},
|
||||
"ledger": {
|
||||
"title": "账务流水"
|
||||
},
|
||||
"bills": {
|
||||
"title": "全部账单"
|
||||
},
|
||||
"creditLedger": {
|
||||
"title": "信用流水"
|
||||
},
|
||||
"playerBills": {
|
||||
"title": "玩家账单"
|
||||
},
|
||||
"agentBills": {
|
||||
"title": "代理账单"
|
||||
},
|
||||
"pendingConfirm": {
|
||||
"title": "待确认账单"
|
||||
},
|
||||
"awaiting": {
|
||||
"title": "待收付账单"
|
||||
},
|
||||
"payments": {
|
||||
"title": "收付记录"
|
||||
},
|
||||
"adjustments": {
|
||||
"title": "调账 / 冲正"
|
||||
},
|
||||
"reports": {
|
||||
"title": "账期报表"
|
||||
},
|
||||
"badDebt": {
|
||||
"title": "坏账核销"
|
||||
}
|
||||
},
|
||||
"empty": {
|
||||
"noSite": "请选择站点。",
|
||||
@@ -356,5 +383,20 @@
|
||||
"loadAdjustments": "调账记录加载失败",
|
||||
"loadBadDebt": "坏账记录加载失败",
|
||||
"loadCreditLedger": "信用流水加载失败"
|
||||
},
|
||||
"header": {
|
||||
"subtitle": "信用盘结算",
|
||||
"statusRunning": "账期进行中",
|
||||
"statusIdle": "无进行中账期",
|
||||
"statusCompleted": "账期已结清"
|
||||
},
|
||||
"subnav": {
|
||||
"label": "结算中心导航"
|
||||
},
|
||||
"workbench": {
|
||||
"viewPeriod": "账期",
|
||||
"closePreset": "关账 · {{label}}",
|
||||
"closeNoData": "关账失败:账期内无占成流水,请先完成信用盘开奖结算。",
|
||||
"openPeriodPipeline": "开账 {{range}} · 占成流水 {{share}} 笔"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user