fix: 处理余额方面问题与banner页面不自动加载问题

This commit is contained in:
ZhuRui
2026-08-05 16:28:44 +08:00
parent b3458fd4b8
commit 8951733a2d
7 changed files with 47 additions and 78 deletions
+3 -1
View File
@@ -9,6 +9,7 @@ import { buildMockWalletTransactionPage } from '@/config/mock/walletTransactions
import type {
WalletQueryParams,
WalletSummaryVO,
WalletSummaryPageData,
WalletTransactionQueryParams,
WalletTransactionVO,
PageData,
@@ -17,6 +18,7 @@ import type {
export type {
WalletSummaryVO,
WalletSummaryPageData,
WalletQueryParams,
WalletTransactionVO,
WalletTransactionQueryParams,
@@ -29,7 +31,7 @@ const delay = (ms: number) => new Promise<void>((r) => setTimeout(r, ms));
/** GET /admin/finance/wallet/summary — 钱包列表分页 */
export async function getWalletList(
params: WalletQueryParams,
): Promise<ApiResult<PageData<WalletSummaryVO>>> {
): Promise<ApiResult<WalletSummaryPageData>> {
if (USE_MOCK) {
await delay(MOCK_DELAY);
const page = Number(params.page) || 1;
+14 -3
View File
@@ -17,14 +17,25 @@ export interface WalletSummaryVO {
frozenAmount: string;
/** 累计成功提现金额("0.00"格式) */
withdrawalAmount: string;
/** 汇总行-总余额 */
}
/** 钱包汇总扩展数据(与 total 同级) */
export interface WalletSummaryExData {
/** 总余额 */
totalAmount: string;
/** 汇总行-总冻结金额 */
/** 总冻结金额 */
totalFrozenAmount: string;
/** 汇总行-总累计提现 */
/** 总累计提现 */
totalWithdrawalAmount: string;
}
/** 钱包列表分页响应 */
export interface WalletSummaryPageData {
total: number;
list: WalletSummaryVO[];
exData: WalletSummaryExData;
}
/** 钱包列表查询参数 */
export interface WalletQueryParams {
page?: string;
+8 -50
View File
@@ -2,7 +2,7 @@
* 钱包列表假数据
* 对应接口:GET /admin/finance/wallet/summary
*/
import type { WalletSummaryVO, WalletQueryParams, PageData } from '@/api/wallet';
import type { WalletSummaryVO, WalletQueryParams, WalletSummaryPageData } from '@/api/wallet';
const MOCK_LIST: WalletSummaryVO[] = [
{
@@ -12,9 +12,6 @@ const MOCK_LIST: WalletSummaryVO[] = [
amount: '0.00',
frozenAmount: '0.00',
withdrawalAmount: '0.00',
totalAmount: '0.00',
totalFrozenAmount: '0.00',
totalWithdrawalAmount: '0.00',
},
{
userId: 1002,
@@ -23,9 +20,6 @@ const MOCK_LIST: WalletSummaryVO[] = [
amount: '350.00',
frozenAmount: '200.00',
withdrawalAmount: '1450.00',
totalAmount: '0.00',
totalFrozenAmount: '0.00',
totalWithdrawalAmount: '0.00',
},
{
userId: 1003,
@@ -34,9 +28,6 @@ const MOCK_LIST: WalletSummaryVO[] = [
amount: '1280.00',
frozenAmount: '0.00',
withdrawalAmount: '800.00',
totalAmount: '0.00',
totalFrozenAmount: '0.00',
totalWithdrawalAmount: '0.00',
},
{
userId: 1004,
@@ -45,9 +36,6 @@ const MOCK_LIST: WalletSummaryVO[] = [
amount: '560.00',
frozenAmount: '100.00',
withdrawalAmount: '200.00',
totalAmount: '0.00',
totalFrozenAmount: '0.00',
totalWithdrawalAmount: '0.00',
},
{
userId: 1005,
@@ -56,9 +44,6 @@ const MOCK_LIST: WalletSummaryVO[] = [
amount: '4200.00',
frozenAmount: '1500.00',
withdrawalAmount: '5600.00',
totalAmount: '0.00',
totalFrozenAmount: '0.00',
totalWithdrawalAmount: '0.00',
},
{
userId: 1006,
@@ -67,9 +52,6 @@ const MOCK_LIST: WalletSummaryVO[] = [
amount: '880.00',
frozenAmount: '0.00',
withdrawalAmount: '300.00',
totalAmount: '0.00',
totalFrozenAmount: '0.00',
totalWithdrawalAmount: '0.00',
},
{
userId: 1007,
@@ -78,9 +60,6 @@ const MOCK_LIST: WalletSummaryVO[] = [
amount: '2100.00',
frozenAmount: '800.00',
withdrawalAmount: '3200.00',
totalAmount: '0.00',
totalFrozenAmount: '0.00',
totalWithdrawalAmount: '0.00',
},
{
userId: 1008,
@@ -89,9 +68,6 @@ const MOCK_LIST: WalletSummaryVO[] = [
amount: '650.00',
frozenAmount: '0.00',
withdrawalAmount: '450.00',
totalAmount: '0.00',
totalFrozenAmount: '0.00',
totalWithdrawalAmount: '0.00',
},
{
userId: 1009,
@@ -100,9 +76,6 @@ const MOCK_LIST: WalletSummaryVO[] = [
amount: '980.00',
frozenAmount: '200.00',
withdrawalAmount: '1200.00',
totalAmount: '0.00',
totalFrozenAmount: '0.00',
totalWithdrawalAmount: '0.00',
},
{
userId: 1010,
@@ -111,9 +84,6 @@ const MOCK_LIST: WalletSummaryVO[] = [
amount: '320.00',
frozenAmount: '50.00',
withdrawalAmount: '100.00',
totalAmount: '0.00',
totalFrozenAmount: '0.00',
totalWithdrawalAmount: '0.00',
},
{
userId: 1011,
@@ -122,9 +92,6 @@ const MOCK_LIST: WalletSummaryVO[] = [
amount: '5800.00',
frozenAmount: '0.00',
withdrawalAmount: '2000.00',
totalAmount: '0.00',
totalFrozenAmount: '0.00',
totalWithdrawalAmount: '0.00',
},
{
userId: 1012,
@@ -133,14 +100,10 @@ const MOCK_LIST: WalletSummaryVO[] = [
amount: '75.00',
frozenAmount: '0.00',
withdrawalAmount: '75.00',
totalAmount: '0.00',
totalFrozenAmount: '0.00',
totalWithdrawalAmount: '0.00',
},
];
/** 计算汇总值 */
function computeSummary(list: WalletSummaryVO[]) {
function computeExData(list: WalletSummaryVO[]) {
const totalAmount = list.reduce((s, i) => s + Number(i.amount || 0), 0).toFixed(2);
const totalFrozenAmount = list.reduce((s, i) => s + Number(i.frozenAmount || 0), 0).toFixed(2);
const totalWithdrawalAmount = list
@@ -153,7 +116,7 @@ export function buildMockWalletPage(
page: number,
limit: number,
params: WalletQueryParams,
): PageData<WalletSummaryVO> {
): WalletSummaryPageData {
let filtered = [...MOCK_LIST];
if (params.nickname) {
@@ -171,15 +134,10 @@ export function buildMockWalletPage(
const total = filtered.length;
const start = (page - 1) * limit;
const pageList = filtered.slice(start, start + limit);
// 将汇总值写入每条记录(方便前端提取统计卡数据)
const summary = computeSummary(filtered);
for (const item of pageList) {
item.totalAmount = summary.totalAmount;
item.totalFrozenAmount = summary.totalFrozenAmount;
item.totalWithdrawalAmount = summary.totalWithdrawalAmount;
}
return { total, list: pageList };
return {
total,
list: filtered.slice(start, start + limit),
exData: computeExData(filtered),
};
}
+12 -13
View File
@@ -64,13 +64,24 @@ export function useBannerModel() {
{ delay: 300 },
);
// ===== 构建 API 查询参数 =====
const buildQueryParams = (): BannerListQueryParams => {
const params: BannerListQueryParams = {};
if (filterForm.title.trim()) {
params.title = filterForm.title.trim();
}
if (filterForm.status) {
params.status = filterForm.status;
}
return params;
};
// ===== 数据请求(API 返回全量,前端分页) =====
const {
data,
loading,
run: fetchList,
} = useRequest<TournamentAdminBannerListVO[]>(() => getBannerList(buildQueryParams()), {
refreshDeps: [],
formatResult: (res) => (res.code == 200 ? res.data : []),
});
@@ -111,18 +122,6 @@ export function useBannerModel() {
{ title: '状态', dataIndex: 'status', key: 'status', width: 100, align: 'center' as const },
];
// ===== 构建 API 查询参数 =====
const buildQueryParams = (): BannerListQueryParams => {
const params: BannerListQueryParams = {};
if (filterForm.title.trim()) {
params.title = filterForm.title.trim();
}
if (filterForm.status) {
params.status = filterForm.status;
}
return params;
};
// ===== 计算属性 =====
const hasFilter = computed(() => {
return debouncedTitle.value.trim() !== '' || filterForm.status !== '';
+3 -1
View File
@@ -9,6 +9,7 @@ import { buildMockWalletTransactionPage } from '@/config/mock/walletTransactions
import type {
WalletQueryParams,
WalletSummaryVO,
WalletSummaryPageData,
WalletTransactionQueryParams,
WalletTransactionVO,
PageData,
@@ -17,6 +18,7 @@ import type {
export type {
WalletSummaryVO,
WalletSummaryPageData,
WalletQueryParams,
WalletTransactionVO,
WalletTransactionQueryParams,
@@ -39,7 +41,7 @@ const delay = (ms: number) => new Promise<void>((r) => setTimeout(r, ms));
/** 钱包列表分页 */
export async function getWalletList(
params: WalletQueryParams,
): Promise<ApiResult<PageData<WalletSummaryVO>>> {
): Promise<ApiResult<WalletSummaryPageData>> {
if (USE_MOCK) {
await delay(MOCK_DELAY);
const page = Number(params.page) || 1;
@@ -102,15 +102,12 @@ export function useWalletModel() {
const listData = computed(() => (data.value as any)?.data);
const dataSource = computed(() => listData.value?.list || []);
// 汇总:从第一条记录提取
const summary = computed(() => {
const first = dataSource.value?.[0] as any;
return {
totalBalance: first?.totalAmount ?? '0.00',
frozenAmount: first?.totalFrozenAmount ?? '0.00',
totalWithdraw: first?.totalWithdrawalAmount ?? '0.00',
};
});
// 汇总:从 exData 派生(与 list 同级)
const summary = computed(() => ({
totalBalance: listData.value?.exData?.totalAmount ?? '0.00',
frozenAmount: listData.value?.exData?.totalFrozenAmount ?? '0.00',
totalWithdraw: listData.value?.exData?.totalWithdrawalAmount ?? '0.00',
}));
// 同步 total 到 pagination
useEffect(() => {
+1 -1
View File
@@ -31,7 +31,7 @@ function renderBodyCell({
}
if (column.key === 'action') {
// auditStatus=0(待审核)→ 显示「审核」,其他 → 显示「查看」
if (canAudit && record.auditStatus === 0) {
if (canAudit && record.auditStatus == 0) {
return (
<Button type="link" size="small" onClick={() => onAudit(record)}>