From 15a6d81851f05bbdab7eca673aab57dbb203b92f Mon Sep 17 00:00:00 2001 From: ZhuRui Date: Thu, 6 Aug 2026 11:39:51 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=88=97=E8=A1=A8=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E3=80=81=E5=88=86=E9=A1=B5=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/orders/types.ts | 21 ++++-- src/hooks/usePagination.ts | 10 +++ src/pages/events/banner/index.tsx | 4 +- .../events/banner/model/useBannerModel.ts | 4 +- .../list/components/EventAuditModal.tsx | 20 +++--- .../list/components/EventDetailModal.tsx | 10 +-- src/pages/events/list/index.tsx | 2 +- .../events/list/model/useEventListModel.ts | 7 +- src/pages/events/logs/index.tsx | 9 ++- src/pages/events/logs/model/useLogColumns.ts | 4 +- src/pages/events/logs/model/useLogModel.ts | 11 ++-- .../orders/components/OrderDetailModal.tsx | 13 ++-- src/pages/events/orders/index.tsx | 12 +--- src/pages/events/orders/model/config.ts | 6 +- src/pages/events/orders/model/services.ts | 4 +- .../events/orders/model/useOrderModel.ts | 66 ++++++++----------- src/pages/events/users/index.tsx | 2 +- .../events/users/model/useUserColumns.ts | 2 +- src/pages/events/users/model/useUserModel.ts | 11 ++-- .../payments/model/usePaymentsModel.ts | 16 +++-- .../wallet/components/WalletDetailModal.tsx | 6 +- src/pages/finance/wallet/index.tsx | 2 +- .../finance/wallet/model/useWalletModel.ts | 6 +- .../components/WithdrawDetailModal.tsx | 6 +- .../withdraw/model/useWithdrawModel.ts | 12 ++-- src/pages/system/logs/index.tsx | 4 +- src/pages/system/logs/model/useLogModel.ts | 5 +- .../system/roles/components/UserListModal.tsx | 5 +- src/pages/system/roles/index.tsx | 2 +- src/pages/system/roles/model/useRoleModel.ts | 5 +- src/pages/system/users/index.tsx | 2 +- src/pages/system/users/model/useUserModel.ts | 7 +- 32 files changed, 157 insertions(+), 139 deletions(-) diff --git a/src/api/orders/types.ts b/src/api/orders/types.ts index 540f3db..5040641 100644 --- a/src/api/orders/types.ts +++ b/src/api/orders/types.ts @@ -8,7 +8,7 @@ export interface TournamentAdminOrderPageVO { /** 订单编号 */ orderNo: string; /** 选手ID */ - uniqueId: number; + uniqueId: string; /** 赛事名称 */ name: string; /** 选手名称 */ @@ -36,9 +36,9 @@ export interface TournamentAdminOrderPageVO { /** 支付时间;yyyy.MM.dd HH:mm:ss */ payTime: string; /** 订单状态;1=已支付,2=部分退款,3=全部退款,4=已关闭,-1=其他 */ - orderStatus: number; + orderStatus: string; /** 退款状态;1=无退款,2=退款成功,3=退款失败,-1=其他 */ - refundStatus: number; + refundStatus: string; } /** 订单列表查询参数 */ @@ -62,11 +62,24 @@ export interface OrderListQueryParams { status?: string; /** * 退款状态 - * 不传=全部、0=退款失败,1=退款成功 + * 不传=全部、2=退款成功,3=退款失败 */ refundStatus?: string; } +/** 订单分页数据(含列表统计字段) */ +export interface OrderPageData extends PageData { + /** 扩展数据 */ + exData: { + /** 总订单金额(已支付) */ + totalOrderAmount: string; + /** 总实付金额 */ + totalActualAmount: string; + /** 总退款金额 */ + totalRefundAmount: string; + }; +} + /** 分页数据 */ export interface PageData { total: number; diff --git a/src/hooks/usePagination.ts b/src/hooks/usePagination.ts index d3a0a13..c44340a 100644 --- a/src/hooks/usePagination.ts +++ b/src/hooks/usePagination.ts @@ -180,3 +180,13 @@ export function usePagination(options: UsePaginationOptions = {}): UsePagination refresh, }; } + +/** 将接口返回的分页 total 同步到 pagination(支持 number / 数字字符串,含 0) */ +export function syncPaginationTotal( + pagination: Pick, + total: unknown, +): void { + if (total == null || total === '') return; + const n = Number(total); + if (Number.isFinite(n)) pagination.setTotal(n); +} diff --git a/src/pages/events/banner/index.tsx b/src/pages/events/banner/index.tsx index fdaa669..1e7f042 100644 --- a/src/pages/events/banner/index.tsx +++ b/src/pages/events/banner/index.tsx @@ -79,7 +79,7 @@ function renderBodyCell({ // 跳转地址列 if (column.dataIndex === 'linkUrl') { - return {text || '-'}; + return {text || '--'}; } // 展示时间列 @@ -100,7 +100,7 @@ function renderBodyCell({ if (column.key === 'action') { const isEnabled = record.status === '1'; const { canEdit, canToggleStatus, canDelete } = permissions; - if (!canEdit && !canToggleStatus && !canDelete) return -; + if (!canEdit && !canToggleStatus && !canDelete) return --; return ( diff --git a/src/pages/events/banner/model/useBannerModel.ts b/src/pages/events/banner/model/useBannerModel.ts index bc3c47f..0357a5f 100644 --- a/src/pages/events/banner/model/useBannerModel.ts +++ b/src/pages/events/banner/model/useBannerModel.ts @@ -243,12 +243,12 @@ export function useBannerModel() { // ===== 渲染工具 ===== const renderJumpType = (type: string) => { - const info = JUMP_TYPE_MAP[type] || { label: type || '-', tone: 'default' as const }; + const info = JUMP_TYPE_MAP[type] || { label: type || '--', tone: 'default' as const }; return h(StatusTag, { label: info.label, tone: info.tone }); }; const renderStatus = (status: string) => { - const info = STATUS_MAP[status] || { label: status || '-', tone: 'default' as const }; + const info = STATUS_MAP[status] || { label: status || '--', tone: 'default' as const }; return h(StatusTag, { label: info.label, tone: info.tone, dimmed: info.dimmed }); }; diff --git a/src/pages/events/list/components/EventAuditModal.tsx b/src/pages/events/list/components/EventAuditModal.tsx index 3a03f9a..892f4d8 100644 --- a/src/pages/events/list/components/EventAuditModal.tsx +++ b/src/pages/events/list/components/EventAuditModal.tsx @@ -79,7 +79,7 @@ export default defineComponent({ /** 格式化时间范围 */ const formatRange = (start: string, end: string) => { - if (!start && !end) return '-'; + if (!start && !end) return '--'; return `${start || '?'} ~ ${end || '?'}`; }; @@ -98,25 +98,25 @@ export default defineComponent({
基础信息
- {d.name || '-'} + {d.name || '--'} {formatRange(d.startTimeBegin, d.startTimeEnd)} - {d.descr || '-'} + {d.descr || '--'} {formatRange(d.signupTimeBegin, d.signupTimeEnd)} - {d.signupTimeEnd || '-'} + {d.signupTimeEnd || '--'} - {d.venueArea || '-'} - {d.venue || '-'} - {d.venueNo || '-'} + {d.venueArea || '--'} + {d.venue || '--'} + {d.venueNo || '--'} {boolText(d.isPublic, '在首页展示赛事', '非公开')} @@ -128,15 +128,15 @@ export default defineComponent({ {boolText(d.isRequireIdCardImg, '需要提供', '无需提供')} - {d.createTime || '-'} - {d.createNickname || '-'} + {d.createTime || '--'} + {d.createNickname || '--'} 待审核 {d.signupCount || '0'} {d.dropoutCount || '0'} - {d.totalLimit || '-'} + {d.totalLimit || '--'} {d.matchTotalCount || '0'} {d.matchCount || '0'} diff --git a/src/pages/events/list/components/EventDetailModal.tsx b/src/pages/events/list/components/EventDetailModal.tsx index 69f18a2..7584bc6 100644 --- a/src/pages/events/list/components/EventDetailModal.tsx +++ b/src/pages/events/list/components/EventDetailModal.tsx @@ -32,7 +32,7 @@ const PAGE_SIZE = 10; /** 渲染身份证图片(cover 填充,与封面显示方式一致) */ const renderIdImages = (imgList: string[], singleImg: string) => { const urls = imgList.length > 0 ? imgList : singleImg ? [singleImg] : []; - if (urls.length === 0) return -; + if (urls.length === 0) return --; return (
@@ -63,14 +63,14 @@ const PLAYER_COLUMNS = [ key: 'idCard', width: 180, customRender: ({ record }: { record?: TournamentAdminInfoSignupVO }) => - record?.idCard ? record.idCard : -, + record?.idCard ? record.idCard : --, }, { title: '证件图片', key: 'idCardImgs', width: 280, customRender: ({ record }: { record?: TournamentAdminInfoSignupVO }) => - record ? renderIdImages(record.idCardImgList || [], record.idCardImg || '') : -, + record ? renderIdImages(record.idCardImgList || [], record.idCardImg || '') : --, }, ]; @@ -193,7 +193,7 @@ export default defineComponent({ {detail.value.venueArea} {detail.value.venue} - {detail.value.venueNo || '-'} + {detail.value.venueNo || '--'} @@ -217,7 +217,7 @@ export default defineComponent({ label="最大人数" class={[styles.statCell, styles.statCellNoWrap]} > - {detail.value.totalLimit || '-'} + {detail.value.totalLimit || '--'} diff --git a/src/pages/events/list/index.tsx b/src/pages/events/list/index.tsx index eb2a026..f817754 100644 --- a/src/pages/events/list/index.tsx +++ b/src/pages/events/list/index.tsx @@ -159,7 +159,7 @@ export default defineComponent({ 查看 ) : ( - - + -- )} ), diff --git a/src/pages/events/list/model/useEventListModel.ts b/src/pages/events/list/model/useEventListModel.ts index 3c07833..6059011 100644 --- a/src/pages/events/list/model/useEventListModel.ts +++ b/src/pages/events/list/model/useEventListModel.ts @@ -3,7 +3,7 @@ import { Modal, message } from 'ant-design-vue'; import { useState, useDebounce } from '@/hooks'; import { useRequest } from '@/hooks/useRequest'; import { useEffect } from '@/hooks/useEffect'; -import { usePagination } from '@/hooks/usePagination'; +import { usePagination, syncPaginationTotal } from '@/hooks/usePagination'; import { hasValue, isEmptyValue, safeTransform } from '@/utils'; import type { TournamentAdminVO, EventListQueryParams, PageData, ApiResult } from './services'; import { getEventList, toggleEventOnline } from './services'; @@ -78,9 +78,8 @@ export function useEventListModel() { // 同步分页总条数 useEffect(() => { - const total = (data.value as any)?.data?.total; - if (total !== undefined) pagination.setTotal(total); - }, [data]); + syncPaginationTotal(pagination, listData.value?.total); + }, [listData]); const hasFilter = computed(() => { const f = filterForm; diff --git a/src/pages/events/logs/index.tsx b/src/pages/events/logs/index.tsx index 431f049..087687c 100644 --- a/src/pages/events/logs/index.tsx +++ b/src/pages/events/logs/index.tsx @@ -30,11 +30,10 @@ const LogContentCell = defineComponent({ }; let observer: ResizeObserver | null = null; useEffect(() => { - const el = textRef.value; - if (!el) return; + if (!textRef.value) return; nextTick(checkOverflow); observer = new ResizeObserver(checkOverflow); - observer.observe(el); + observer.observe(textRef.value); return () => { observer?.disconnect(); observer = null; @@ -96,13 +95,13 @@ export default defineComponent({ }) => { if (column.key === 'content') { const raw = text || ''; - return raw ? : -; + return raw ? : --; } // 有 customRender 的列使用其渲染函数(如操作类型/操作来源的代码→中文映射) if (column.customRender) { return column.customRender({ text, record, index, column }); } - return {text || '-'}; + return {text || '--'}; }; return () => ( diff --git a/src/pages/events/logs/model/useLogColumns.ts b/src/pages/events/logs/model/useLogColumns.ts index c0a982d..14759e1 100644 --- a/src/pages/events/logs/model/useLogColumns.ts +++ b/src/pages/events/logs/model/useLogColumns.ts @@ -1,9 +1,9 @@ import { type VNodeChild } from 'vue'; import { ACTION_TYPE_MAP, ACTION_SOURCE_MAP } from './config'; -const renderType = (text: string): string => ACTION_TYPE_MAP[text] || text || '-'; +const renderType = (text: string): string => ACTION_TYPE_MAP[text] || text || '--'; -const renderSource = (text: string): string => ACTION_SOURCE_MAP[text] || text || '-'; +const renderSource = (text: string): string => ACTION_SOURCE_MAP[text] || text || '--'; /** * 操作日志页 - 表格列配置(视图层) diff --git a/src/pages/events/logs/model/useLogModel.ts b/src/pages/events/logs/model/useLogModel.ts index b71f0c2..adad4fd 100644 --- a/src/pages/events/logs/model/useLogModel.ts +++ b/src/pages/events/logs/model/useLogModel.ts @@ -2,7 +2,11 @@ import { computed, reactive, toRef, Ref, type UnwrapRef } from 'vue'; import { useDebounce } from '@/hooks'; import { useRequest } from '@/hooks/useRequest'; import { useEffect } from '@/hooks/useEffect'; -import { usePagination, type UsePaginationReturn } from '@/hooks/usePagination'; +import { + usePagination, + syncPaginationTotal, + type UsePaginationReturn, +} from '@/hooks/usePagination'; import { hasValue, isEmptyValue, safeTransform } from '@/utils'; import { getOperationLogs, @@ -102,9 +106,8 @@ export function useLogModel() { // 同步分页总条数 useEffect(() => { - const total = (data.value as any)?.data?.total; - if (total !== undefined) pagination.setTotal(total); - }, [data]); + syncPaginationTotal(pagination, listData.value?.total); + }, [listData]); const hasFilter = computed(() => { return ( diff --git a/src/pages/events/orders/components/OrderDetailModal.tsx b/src/pages/events/orders/components/OrderDetailModal.tsx index 1bb44f4..0447451 100644 --- a/src/pages/events/orders/components/OrderDetailModal.tsx +++ b/src/pages/events/orders/components/OrderDetailModal.tsx @@ -24,7 +24,7 @@ const GENDER_MAP: Record = { '1': '男', '2': '女' }; const formatGender = (v: string) => GENDER_MAP[v] ?? v; const formatMoney = (v: string) => { const n = parseFloat(v); - return isNaN(n) ? '-' : `${n.toFixed(2)}`; + return isNaN(n) ? '--' : `${n.toFixed(2)}`; }; const PLAYER_COLUMNS = [ @@ -55,7 +55,7 @@ const PLAYER_COLUMNS = [ : record.idCardImg ? [record.idCardImg] : []; - if (!urls.length) return -; + if (!urls.length) return --; return ( {urls.map((src) => ( @@ -102,7 +102,8 @@ const PLAYER_COLUMNS = [ key: 'refundAmount', width: 100, align: 'right' as const, - customRender: ({ text }: { text: string }) => (text === '-' || !text ? '-' : formatMoney(text)), + customRender: ({ text }: { text: string }) => + text === '--' || !text ? '--' : formatMoney(text), }, ]; @@ -160,7 +161,7 @@ export default defineComponent({ return records.some((r) => { if (!r) return false; const hasRefundAmount = parseFloat(r.refundAmount || '0') > 0; - const hasRefundTime = r.refundTime && r.refundTime !== '-'; + const hasRefundTime = r.refundTime && r.refundTime !== '--'; return hasRefundAmount && !hasRefundTime; }); }); @@ -329,11 +330,11 @@ export default defineComponent({
申请时间:{r.refundApplyTime}
-
完款时间:{r.refundTime || '-'}
+
完款时间:{r.refundTime || '--'}
退款方式:{r.refundMethod}
-
第三方退款单号:{r.refundOutTradeNo || '-'}
+
第三方退款单号:{r.refundOutTradeNo || '--'}
已退金额:¥{formatMoney(r.refundedAmount)}
diff --git a/src/pages/events/orders/index.tsx b/src/pages/events/orders/index.tsx index 5a97b67..7257675 100644 --- a/src/pages/events/orders/index.tsx +++ b/src/pages/events/orders/index.tsx @@ -230,21 +230,15 @@ export default defineComponent({
总订单金额(已支付): - - {summary.value.totalOrderAmount.toFixed(2)}元 - + {summary.value.totalOrderAmount}元 总实付金额: - - {summary.value.totalPaidAmount.toFixed(2)}元 - + {summary.value.totalActualAmount}元 总退款金额: - - {summary.value.totalRefundAmount.toFixed(2)}元 - + {summary.value.totalRefundAmount}元
diff --git a/src/pages/events/orders/model/config.ts b/src/pages/events/orders/model/config.ts index e87347c..40370a6 100644 --- a/src/pages/events/orders/model/config.ts +++ b/src/pages/events/orders/model/config.ts @@ -49,9 +49,9 @@ export const ORDER_STATUS_OPTIONS = [ { value: '4', label: '超时关闭' }, ] as const; -/** 退款状态选项(value 对应 API refundStatus: 不传=全部、0=退款失败,1=退款成功) */ +/** 退款状态选项(value 对应 API refundStatus: 不传=全部、2=退款成功,3=退款失败) */ export const REFUND_STATUS_OPTIONS = [ { value: '', label: '全部' }, - { value: '1', label: '退款成功' }, - { value: '0', label: '退款失败' }, + { value: '2', label: '退款成功' }, + { value: '3', label: '退款失败' }, ] as const; diff --git a/src/pages/events/orders/model/services.ts b/src/pages/events/orders/model/services.ts index 8ec7837..bc6a692 100644 --- a/src/pages/events/orders/model/services.ts +++ b/src/pages/events/orders/model/services.ts @@ -11,6 +11,7 @@ import type { TournamentAdminOrderPageVO, TournamentAdminOrderInfoVO, TournamentAdminOrderInfoPageVO, + OrderPageData, PageData, ApiResult, } from '@/api/orders/types'; @@ -24,6 +25,7 @@ export type { OrderDetailQueryParams, OrderPlayerListQueryParams, RetryRefundParams, + OrderPageData, PageData, ApiResult, } from '@/api/orders/types'; @@ -43,7 +45,7 @@ const retryRefund = '/admin/manager/order/retryRefund'; /** 订单管理 - 订单分页 */ export async function getOrderList( params: OrderListQueryParams, -): Promise>> { +): Promise> { return get(orderList, params as Record); } diff --git a/src/pages/events/orders/model/useOrderModel.ts b/src/pages/events/orders/model/useOrderModel.ts index 0f78f08..b148b3d 100644 --- a/src/pages/events/orders/model/useOrderModel.ts +++ b/src/pages/events/orders/model/useOrderModel.ts @@ -1,15 +1,14 @@ import { computed, reactive, toRef, Ref, h } from 'vue'; -import Big from 'big.js'; import { StatusTag, type StatusTagTone } from '@/components'; import { useDebounce } from '@/hooks'; import { useRequest } from '@/hooks/useRequest'; import { useEffect } from '@/hooks/useEffect'; -import { usePagination } from '@/hooks/usePagination'; +import { usePagination, syncPaginationTotal } from '@/hooks/usePagination'; import { hasValue, isEmptyValue, safeTransform } from '@/utils'; import type { TournamentAdminOrderPageVO, OrderListQueryParams, - PageData, + OrderPageData, ApiResult, } from './services'; import { getOrderList } from './services'; @@ -23,18 +22,18 @@ import { export { ORDER_STATUS_OPTIONS, REFUND_STATUS_OPTIONS }; /** 订单状态 StatusTag 映射 */ -const ORDER_STATUS_MAP: Record = { - 1: { label: '支付成功', tone: 'success' }, - 2: { label: '部分退款', tone: 'orange' }, - 3: { label: '全部退款', tone: 'primary' }, - 4: { label: '已关闭', tone: 'default' }, +const ORDER_STATUS_MAP: Record = { + '1': { label: '支付成功', tone: 'success' }, + '2': { label: '部分退款', tone: 'orange' }, + '3': { label: '全部退款', tone: 'primary' }, + '4': { label: '已关闭', tone: 'default' }, }; /** 退款状态 StatusTag 映射 */ -const REFUND_STATUS_MAP: Record = { - 1: { label: '无退款', tone: 'default' }, - 2: { label: '退款成功', tone: 'success' }, - 3: { label: '退款失败', tone: 'danger' }, +const REFUND_STATUS_MAP: Record = { + '1': { label: '无退款', tone: 'default' }, + '2': { label: '退款成功', tone: 'success' }, + '3': { label: '退款失败', tone: 'danger' }, }; /** @@ -82,12 +81,12 @@ export function useOrderModel() { data, loading, run: fetchList, - } = useRequest>>( - () => getOrderList(buildQueryParams()), - { refreshDeps: [], formatResult: (res) => res }, - ); + } = useRequest>(() => getOrderList(buildQueryParams()), { + refreshDeps: [], + formatResult: (res) => res, + }); - const listData = computed | undefined>(() => { + const listData = computed(() => { const res = data.value; return res ? (res as any).data : undefined; }); @@ -95,26 +94,16 @@ export function useOrderModel() { const dataSource = computed(() => listData.value?.list || []); useEffect(() => { - const total = (data.value as any)?.data?.total; - if (total !== undefined) pagination.setTotal(total); - }, [data]); + syncPaginationTotal(pagination, listData.value?.total); + }, [listData]); + /** 金额汇总(API 直接返回,无需前端累加) */ const summary = computed(() => { - const list = listData.value?.list || []; - let totalOrder = new Big(0); - let totalPaid = new Big(0); - let totalRefund = new Big(0); - - for (const item of list) { - totalOrder = totalOrder.plus(new Big(item.creatorSignupFee || 0)); - totalPaid = totalPaid.plus(new Big(item.creatorSignupFeeActual || 0)); - totalRefund = totalRefund.plus(new Big(item.creatorSignupFeeRefund || 0)); - } - + const d = listData.value; return { - totalOrderAmount: totalOrder.toNumber(), - totalPaidAmount: totalPaid.toNumber(), - totalRefundAmount: totalRefund.toNumber(), + totalOrderAmount: d?.exData?.totalOrderAmount || '0', + totalActualAmount: d?.exData?.totalActualAmount || '0', + totalRefundAmount: d?.exData?.totalRefundAmount || '0', }; }); @@ -189,9 +178,9 @@ export function useOrderModel() { dataIndex: 'orderStatus', key: 'orderStatus', width: 100, - customRender: ({ text }: { text: number }) => { + customRender: ({ text }: { text: string }) => { const info = ORDER_STATUS_MAP[text] || { - label: String(text ?? '-'), + label: String(text ?? '--'), tone: 'default' as const, }; return h(StatusTag, { label: info.label, tone: info.tone }); @@ -203,9 +192,8 @@ export function useOrderModel() { key: 'refundStatus', width: 100, align: 'center' as const, - customRender: ({ text }: { text: number }) => { - if (text === 1) return h('span', '-'); - const info = REFUND_STATUS_MAP[text] || { label: String(text), tone: 'default' as const }; + customRender: ({ text }: { text: string }) => { + const info = REFUND_STATUS_MAP[text] || { label: '--', tone: 'default' as const }; return h(StatusTag, { label: info.label, tone: info.tone }); }, }, diff --git a/src/pages/events/users/index.tsx b/src/pages/events/users/index.tsx index 9548cc8..231a01b 100644 --- a/src/pages/events/users/index.tsx +++ b/src/pages/events/users/index.tsx @@ -36,7 +36,7 @@ export default defineComponent({ /** 渲染操作列 */ const renderAction = (record: any) => { - if (!canToggleStatus) return -; + if (!canToggleStatus) return --; const isActive = record.status === '1'; return ( diff --git a/src/pages/events/users/model/useUserColumns.ts b/src/pages/events/users/model/useUserColumns.ts index e84635e..96e0d9d 100644 --- a/src/pages/events/users/model/useUserColumns.ts +++ b/src/pages/events/users/model/useUserColumns.ts @@ -62,7 +62,7 @@ export function useUserColumns() { align: 'center' as const, customRender: ({ text }: { text: string[] }): VNodeChild => { const imgList = Array.isArray(text) ? text : []; - if (imgList.length === 0) return '-'; + if (imgList.length === 0) return '--'; return h( Space, { size: 4 }, diff --git a/src/pages/events/users/model/useUserModel.ts b/src/pages/events/users/model/useUserModel.ts index 883a746..76eaaef 100644 --- a/src/pages/events/users/model/useUserModel.ts +++ b/src/pages/events/users/model/useUserModel.ts @@ -3,7 +3,11 @@ import { Modal, message } from 'ant-design-vue'; import { useState, useDebounce } from '@/hooks'; import { useRequest } from '@/hooks/useRequest'; import { useEffect } from '@/hooks/useEffect'; -import { usePagination, type UsePaginationReturn } from '@/hooks/usePagination'; +import { + usePagination, + syncPaginationTotal, + type UsePaginationReturn, +} from '@/hooks/usePagination'; import { hasValue, isEmptyValue, safeTransform } from '@/utils'; import { getUserList, @@ -94,9 +98,8 @@ export function useUserModel() { // 同步分页总条数 useEffect(() => { - const total = (data.value as any)?.data?.total; - if (total !== undefined) pagination.setTotal(total); - }, [data]); + syncPaginationTotal(pagination, listData.value?.total); + }, [listData]); // ===== 计算属性 ===== const hasFilter = computed(() => { diff --git a/src/pages/finance/payments/model/usePaymentsModel.ts b/src/pages/finance/payments/model/usePaymentsModel.ts index 7e47d99..27e31bc 100644 --- a/src/pages/finance/payments/model/usePaymentsModel.ts +++ b/src/pages/finance/payments/model/usePaymentsModel.ts @@ -1,5 +1,12 @@ import { computed, reactive, toRef, Ref } from 'vue'; -import { useDebounce, useThrottleFn, useRequest, usePagination, useEffect } from '@/hooks'; +import { + useDebounce, + useThrottleFn, + useRequest, + usePagination, + useEffect, + syncPaginationTotal, +} from '@/hooks'; import { getPaymentFlowList, type PaymentFlowVO, type PaymentFlowQueryParams } from './services'; import dayjs from 'dayjs'; @@ -81,9 +88,8 @@ export function usePaymentsModel() { // 同步 total 到 pagination useEffect(() => { - const total = (data.value as any)?.data?.total; - if (total !== undefined) pagination.setTotal(total); - }, [data]); + syncPaginationTotal(pagination, listData.value?.total); + }, [listData]); // ===== 表格列(dataIndex 对齐 API) ===== const columns = [ @@ -94,7 +100,7 @@ export function usePaymentsModel() { dataIndex: 'type', key: 'type', width: 110, - customRender: ({ text }: { text: number }) => PAYMENT_TYPE_MAP[text] || text || '-', + customRender: ({ text }: { text: number }) => PAYMENT_TYPE_MAP[text] || text || '--', }, { title: '用户昵称', dataIndex: 'nickname', key: 'nickname', width: 120 }, { title: '手机号', dataIndex: 'phone', key: 'phone', width: 140 }, diff --git a/src/pages/finance/wallet/components/WalletDetailModal.tsx b/src/pages/finance/wallet/components/WalletDetailModal.tsx index c03ecad..1c35b01 100644 --- a/src/pages/finance/wallet/components/WalletDetailModal.tsx +++ b/src/pages/finance/wallet/components/WalletDetailModal.tsx @@ -113,7 +113,7 @@ export default defineComponent({ dataIndex: 'type', key: 'type', width: 120, - customRender: ({ text }: { text: number }) => TRANSACTION_TYPE_MAP[text] || text || '-', + customRender: ({ text }: { text: number }) => TRANSACTION_TYPE_MAP[text] || text || '--', }, { title: '金额', @@ -162,14 +162,14 @@ export default defineComponent({ dataIndex: 'freezeTime', key: 'freezeTime', width: 140, - customRender: ({ text }: { text: string }) => text || '-', + customRender: ({ text }: { text: string }) => text || '--', }, { title: '解冻时间', dataIndex: 'unfreezeTime', key: 'unfreezeTime', width: 140, - customRender: ({ text }: { text: string }) => text || '-', + customRender: ({ text }: { text: string }) => text || '--', }, { title: '关联单号', diff --git a/src/pages/finance/wallet/index.tsx b/src/pages/finance/wallet/index.tsx index 071fbda..d7e7015 100644 --- a/src/pages/finance/wallet/index.tsx +++ b/src/pages/finance/wallet/index.tsx @@ -30,7 +30,7 @@ function renderBodyCell({ canViewDetail: boolean; }) { if (column.key === 'action') { - if (!canViewDetail) return -; + if (!canViewDetail) return --; return (