feat(settlement): 优化结算中心待处理视图与账单显示
Some checks failed
lotteryadmin CI / build (push) Has been cancelled

- 新增接口参数 agent_scope 支持筛选直接代理
- 结算中心导航新增“待处理”视图,并设置默认视图为“待处理”
- 结算中心页面新增待处理账单工作台,支持待确认、待收付和异常账单分类显示
- 调整账单状态文本,明确“已确认”改为“待收付”,“部分结清”改为“部分收付”
- 优化账单明细中的代理结算说明和收益展示文案
- 账单详情页添加当前账单主要操作提示区,提示确认、登记付款或复核状态
- 结算中心流水模块及多语言资源关于“账务流水”统一改为“流水审计”
- 优化结算主面板中待处理模式与全部模式的筛选和分页逻辑
- 结合管理员权限控制结算中心可见站点列表,增强集成站点加载逻辑
This commit is contained in:
2026-07-01 15:35:25 +08:00
parent 4484a7a77a
commit 2f9e06fb78
14 changed files with 374 additions and 171 deletions

View File

@@ -65,10 +65,13 @@
},
"nav": {
"periods": "Periods",
"pendingWorkbench": "To do",
"allBills": "All bills",
"bills": "Bills",
"operations": "Payments & adjustments",
"aria": "Period views",
"ledger": "Account ledger",
"ledgerAudit": "Ledger audit",
"creditLedger": "Credit ledger",
"playerBills": "Player bills",
"agentBills": "Agent bills",
@@ -194,9 +197,9 @@
},
"billStatus": {
"pending_confirm": "Pending confirm",
"confirmed": "Confirmed",
"partial_paid": "Partial paid",
"settled": "Settled",
"confirmed": "Awaiting payment",
"partial_paid": "Partial payment",
"settled": "Fully settled",
"overdue": "Overdue",
"reversed": "Reversed"
},
@@ -229,26 +232,34 @@
"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.",
"agentBreakdownIntro": "Start with this period's team win/loss, deduct player rebates and retained shares, then settle the remaining amount with the upline.",
"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",
"teamGross": "Team win/loss this period",
"teamGrossHint": "Total for this agent and downline players in this period",
"teamGrossShort": "Team",
"playerGrossShort": "Player",
"teamRebate": "Team rebate",
"teamNet": "Team net",
"teamRebate": "Deduct player rebates",
"teamNet": "Profit available to split",
"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)",
"agentShareKeep": "This tier keeps",
"agentShareKeepHint": "Amount retained by this tier under the agreed share",
"agentDownlineShare": "Downline agents keep",
"agentDownlineShareHint": "Amount retained by downline agents first (see breakdown below)",
"agentDownlineShareItem": "{{agent}} kept",
"agentNet": "Pay {{counterparty}}",
"agentNetReceive": "{{counterparty}} pays this tier",
"agentNet": "Remit to {{counterparty}}",
"agentNetReceive": "{{counterparty}} owes this tier",
"actionPendingConfirmTitle": "Confirm this bill next",
"actionPendingConfirmDesc": "Confirm the amount and parties, then the bill moves to awaiting payment.",
"actionAwaitingPaymentTitle": "Record payment next",
"actionAwaitingPaymentDesc": "Record offline payment according to the payer/payee direction. Partial payments are allowed.",
"actionSettledTitle": "This bill is fully settled",
"actionSettledDesc": "Review the breakdown and payment history below if needed.",
"actionReviewTitle": "Review this bill status",
"actionReviewDesc": "Use adjustment, reversal, or bad debt actions if the amount or direction is wrong.",
"billOwner": "Bill owner",
"billCounterparty": "Counterparty",
"unpaidPendingConfirm": "Confirm the bill before recording payment",
@@ -340,6 +351,15 @@
"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.",
"workbenchEmpty": "No bills need action in this period. Use All bills for settled or historical bills.",
"workbench": {
"pendingTitle": "Bills pending confirm",
"pendingHint": "Confirm the amount and parties first; confirmed bills move to awaiting payment.",
"awaitingTitle": "Bills awaiting payment",
"awaitingHint": "Record offline payment by payer/payee direction. Bills close when fully paid.",
"exceptionTitle": "Exceptions",
"exceptionHint": "Review adjustment, reversal, and bad debt records here."
},
"rowHint": {
"playerOwner": "Player owner",
"agentOwner": "Agent owner",

View File

@@ -64,9 +64,12 @@
},
"nav": {
"periods": "अवधिहरू",
"pendingWorkbench": "To do",
"allBills": "All bills",
"bills": "बिलहरू",
"operations": "भुक्तानी र समायोजन",
"ledger": "लेजर",
"ledgerAudit": "Ledger audit",
"creditLedger": "क्रेडिट लेजर",
"playerBills": "Player bills",
"agentBills": "Agent bills",
@@ -192,9 +195,9 @@
},
"billStatus": {
"pending_confirm": "Pending confirm",
"confirmed": "Confirmed",
"partial_paid": "Partial paid",
"settled": "Settled",
"confirmed": "Awaiting payment",
"partial_paid": "Partial payment",
"settled": "Fully settled",
"overdue": "Overdue",
"reversed": "Reversed"
},
@@ -226,26 +229,34 @@
"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.",
"agentBreakdownIntro": "Start with this period's team win/loss, deduct player rebates and retained shares, then settle the remaining amount with the upline.",
"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",
"teamGross": "Team win/loss this period",
"teamGrossHint": "Total for this agent and downline players in this period",
"teamGrossShort": "Team",
"playerGrossShort": "Player",
"teamRebate": "Team rebate",
"teamNet": "Team net",
"teamRebate": "Deduct player rebates",
"teamNet": "Profit available to split",
"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)",
"agentShareKeep": "This tier keeps",
"agentShareKeepHint": "Amount retained by this tier under the agreed share",
"agentDownlineShare": "Downline agents keep",
"agentDownlineShareHint": "Amount retained by downline agents first (see breakdown below)",
"agentDownlineShareItem": "{{agent}} kept",
"agentNet": "Pay {{counterparty}}",
"agentNetReceive": "{{counterparty}} pays this tier",
"agentNet": "Remit to {{counterparty}}",
"agentNetReceive": "{{counterparty}} owes this tier",
"actionPendingConfirmTitle": "Confirm this bill next",
"actionPendingConfirmDesc": "Confirm the amount and parties, then the bill moves to awaiting payment.",
"actionAwaitingPaymentTitle": "Record payment next",
"actionAwaitingPaymentDesc": "Record offline payment according to the payer/payee direction. Partial payments are allowed.",
"actionSettledTitle": "This bill is fully settled",
"actionSettledDesc": "Review the breakdown and payment history below if needed.",
"actionReviewTitle": "Review this bill status",
"actionReviewDesc": "Use adjustment, reversal, or bad debt actions if the amount or direction is wrong.",
"billOwner": "Bill owner",
"billCounterparty": "Counterparty",
"unpaidPendingConfirm": "Confirm the bill before recording payment",
@@ -330,6 +341,15 @@
"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.",
"workbenchEmpty": "No bills need action in this period. Use All bills for settled or historical bills.",
"workbench": {
"pendingTitle": "Bills pending confirm",
"pendingHint": "Confirm the amount and parties first; confirmed bills move to awaiting payment.",
"awaitingTitle": "Bills awaiting payment",
"awaitingHint": "Record offline payment by payer/payee direction. Bills close when fully paid.",
"exceptionTitle": "Exceptions",
"exceptionHint": "Review adjustment, reversal, and bad debt records here."
},
"rowHint": {
"playerOwner": "Player owner",
"agentOwner": "Agent owner",

View File

@@ -50,10 +50,13 @@
},
"nav": {
"periods": "账期",
"pendingWorkbench": "待处理",
"allBills": "全部账单",
"bills": "账单",
"operations": "收付与调账",
"aria": "账期视图",
"ledger": "账务流水",
"ledger": "流水审计",
"ledgerAudit": "流水审计",
"creditLedger": "信用流水",
"playerBills": "玩家账单",
"agentBills": "代理账单",
@@ -65,7 +68,7 @@
"reports": "账期报表"
},
"operations": {
"hint": "登记收付、坏账核销与补差/冲正的操作台账。玩家信用变动请查看「账务流水」。",
"hint": "登记收付、坏账核销与补差/冲正的操作台账。玩家信用变动请查看「流水审计」。",
"adjustmentsTitle": "调账 / 冲正 / 坏账",
"loadFailed": "收付与调账记录加载失败",
"operationType": "操作类型",
@@ -179,8 +182,8 @@
},
"billStatus": {
"pending_confirm": "待确认",
"confirmed": "已确认",
"partial_paid": "部分结清",
"confirmed": "待收付",
"partial_paid": "部分收付",
"settled": "已结清",
"overdue": "逾期",
"reversed": "已冲正"
@@ -214,26 +217,34 @@
"payerLabel": "付款方",
"payeeLabel": "收款方",
"playerBreakdownIntro": "玩家只与直属代理结算,净额 = 输赢 回水。",
"agentBreakdownIntro": "代理只与直属上级结算,净额 = 团队净额 下级占成 本级占成。",
"agentBreakdownIntro": "先看本期团队赢亏,扣除玩家回水和各级保留后,就是本级需要上缴或应收的金额。",
"playerGross": "游戏输赢",
"playerLostHint": "玩家输了,应付代理",
"playerWonHint": "玩家赢了,代理应付玩家",
"playerNet": "玩家应付净额",
"playerNetReceive": "代理应付玩家",
"teamGross": "团队游戏输赢",
"teamGrossHint": "本级及下级玩家合计",
"teamGross": "本期团队赢亏",
"teamGrossHint": "本级及下级玩家本期合计",
"teamGrossShort": "团队",
"playerGrossShort": "玩家",
"teamRebate": "团队回水",
"teamNet": "团队净额",
"teamRebate": "扣玩家回水",
"teamNet": "可分配利润",
"rebate": "回水",
"agentShareKeep": "本级占成",
"agentShareKeepHint": "本级按占成比例留下的利润",
"agentDownlineShare": "下级占成",
"agentDownlineShareHint": "下级代理按占成比例保留的利润(明细见下行)",
"agentShareKeep": "本级保留",
"agentShareKeepHint": "本级按约定比例保留的金额",
"agentDownlineShare": "下级代理保留",
"agentDownlineShareHint": "下级代理按约定比例保留的金额(明细见下行)",
"agentDownlineShareItem": "{{agent}} 保留",
"agentNet": "应 {{counterparty}}",
"agentNetReceive": "{{counterparty}} 应本级",
"agentNet": "应上缴 {{counterparty}}",
"agentNetReceive": "{{counterparty}} 应补给本级",
"actionPendingConfirmTitle": "当前应确认账单",
"actionPendingConfirmDesc": "确认金额和双方无误后,账单会进入待收付。",
"actionAwaitingPaymentTitle": "当前应登记收付",
"actionAwaitingPaymentDesc": "按谁付谁登记线下收付;未结清可分多次登记。",
"actionSettledTitle": "本账单已结清",
"actionSettledDesc": "如需复核,可查看下方结算明细和收付记录。",
"actionReviewTitle": "请复核账单状态",
"actionReviewDesc": "如金额或方向有差异,可通过调账、冲正或坏账处理。",
"billOwner": "账单主体",
"billCounterparty": "结算对手",
"unpaidPendingConfirm": "确认账单后可登记收付",
@@ -327,6 +338,15 @@
"hierarchyHint": "同一账期会生成多笔账单:玩家先与直属代理结,代理扣除本级占成后再向上级缴纳。因此「输赢」可能相同,但「结算金额」会逐级减少。",
"emptyFiltered": "当前筛选下暂无账单,请改为「全部状态」或重置筛选。",
"emptyClosed": "本期已关账但暂无账单。常见原因:账期内无信用盘玩家的已结算注单,或占成流水不在本账期时间范围内。",
"workbenchEmpty": "本期暂无待处理账单。需要查历史或已结清账单,请进入「全部账单」。",
"workbench": {
"pendingTitle": "待确认账单",
"pendingHint": "先确认金额与双方,确认后进入待收付。",
"awaitingTitle": "待收付账单",
"awaitingHint": "按谁付谁登记线下收付,全部收付后账单结清。",
"exceptionTitle": "异常处理",
"exceptionHint": "调账、冲正与坏账记录集中在这里复核。"
},
"intro": "关账后生成的占成账单。可按类型或状态筛选,详情内确认或登记收付。",
"confirmOneTitle": "确认账单 #{{id}}",
"confirmOneDesc": "确认后进入待收付,可登记线下收付。",
@@ -343,7 +363,7 @@
"title": "结算概览"
},
"ledger": {
"title": "账务流水"
"title": "流水审计"
},
"bills": {
"title": "全部账单"