feat: 开户备注、账单展示优化与后台代理管理增强

- 新增初始上分备注(日常上分/开户赠金/自定义)及前后台校验与展示

- 优化钱包流水类型与备注显示,区分管理员/代理/玩家上下分

- 修复登录后语言被后端覆盖的问题,登录时同步当前语言到服务端

- 后台代理/玩家表格操作栏重构,充值订单增加备注列

- 前台个人中心、充值、账单与验证码组件体验优化

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-11 17:23:58 +08:00
parent 10485ecfaf
commit 03e72ca9b2
46 changed files with 3721 additions and 1059 deletions

View File

@@ -174,6 +174,7 @@ onMounted(fetchList);
<th>{{ t('common.status') }}</th>
<th>{{ t('deposit.approved_amount') }}</th>
<th>{{ t('deposit.reviewer') }}</th>
<th>{{ t('user.field.remark') }}</th>
<th>{{ t('deposit.time') }}</th>
<th>{{ t('common.actions') }}</th>
</tr>
@@ -195,15 +196,13 @@ onMounted(fetchList);
<td><span :class="statusClass(row.status)">{{ statusLabel(row.status) }}</span></td>
<td>{{ row.approvedAmount ? formatAmount(row.approvedAmount) : '-' }}</td>
<td>{{ row.reviewerUsername || '-' }}</td>
<td class="remark-cell">{{ row.remark || row.rejectReason || '-' }}</td>
<td class="time-cell">{{ new Date(row.createdAt).toLocaleString() }}</td>
<td>
<template v-if="row.status === 'PENDING'">
<button class="btn-sm btn-approve" @click="openApprove(row)">{{ t('deposit.approve') }}</button>
<button class="btn-sm btn-reject" @click="openReject(row)">{{ t('deposit.reject') }}</button>
</template>
<template v-else-if="row.status === 'REJECTED'">
<span class="reject-reason" :title="row.rejectReason || ''">{{ row.rejectReason }}</span>
</template>
</td>
</tr>
</tbody>
@@ -293,6 +292,7 @@ onMounted(fetchList);
.mono { font-family: monospace; font-size: 11px; }
.amount { font-weight: 700; }
.time-cell { font-size: 11px; color: #888; }
.remark-cell { max-width: 120px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 12px; color: #aaa; }
.screenshot-thumb { width: 40px; height: 40px; object-fit: cover; border-radius: 4px; cursor: pointer; border: 1px solid #444; }
.badge { padding: 2px 8px; border-radius: 10px; font-size: 11px; font-weight: 700; }
.badge-blue { background: #1e3a5f; color: #66b1ff; }
@@ -305,7 +305,6 @@ onMounted(fetchList);
.btn-approve:hover { background: rgba(61, 115, 88, 0.24); }
.btn-reject { background: #3a1a1a; color: #f56c6c; }
.btn-reject:hover { background: #4a2525; }
.reject-reason { font-size: 11px; color: #f56c6c; max-width: 120px; display: inline-block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pagination { display: flex; justify-content: center; align-items: center; gap: 12px; margin-top: 16px; }
.pagination button { background: #333; color: #ddd; border: none; border-radius: 4px; padding: 6px 14px; cursor: pointer; }
.pagination button:disabled { opacity: 0.4; cursor: default; }