diff --git a/src/api/orders/types.ts b/src/api/orders/types.ts index 5040641..6c45c60 100644 --- a/src/api/orders/types.ts +++ b/src/api/orders/types.ts @@ -99,14 +99,8 @@ export interface ApiResult { /** 退款记录 */ export interface InnerRefundInfo { - /** 已退金额;0.00格式 */ - refundedAmount: string; - /** 总退款次数(接口实际返回 string) */ - totalRefundCount: string; /** 退款金额;0.00格式 */ refundAmount: string; - /** 是否全部退款;0=否,1=是(接口实际返回 string) */ - isFullRefund: string; /** 退款方式 */ refundMethod: string; /** 退款申请时间 */ @@ -115,6 +109,10 @@ export interface InnerRefundInfo { refundOutTradeNo: string; /** 退款完成时间 */ refundTime: string; + /** 退款状态;1=退款中,2=退款成功,3=退款失败 */ + refundStatus: string; + /** 退款选手名称合集文字 */ + refundSignupNames: string; } /** 订单详情 */ diff --git a/src/pages/events/orders/components/OrderDetailModal.module.less b/src/pages/events/orders/components/OrderDetailModal.module.less index 05743f2..68f0ac4 100644 --- a/src/pages/events/orders/components/OrderDetailModal.module.less +++ b/src/pages/events/orders/components/OrderDetailModal.module.less @@ -79,11 +79,6 @@ margin-bottom: 12px; } - .tableWrap { - max-height: 200px; - overflow-y: auto; - } - .paginationRow { display: flex; justify-content: flex-end; @@ -160,12 +155,6 @@ font-weight: 500; } - .partialMark { - margin-left: 4px; - color: #fa8c16; - font-size: 12px; - } - .refundEmpty { padding: 32px 0; text-align: center; @@ -176,10 +165,8 @@ border: 1px dashed #e0e0e0; } - .refundPagination { - display: flex; - justify-content: flex-end; - margin-top: 12px; + .refundPlayers { + margin-left: 0; } .modalFooter { diff --git a/src/pages/events/orders/components/OrderDetailModal.tsx b/src/pages/events/orders/components/OrderDetailModal.tsx index 0447451..543c77b 100644 --- a/src/pages/events/orders/components/OrderDetailModal.tsx +++ b/src/pages/events/orders/components/OrderDetailModal.tsx @@ -44,7 +44,13 @@ const PLAYER_COLUMNS = [ customRender: ({ text }: { text: string }) => formatGender(text), }, { title: '手机号', dataIndex: 'phone', key: 'phone', width: 130 }, - { title: '证件号', dataIndex: 'idCard', key: 'idCard', width: 180 }, + { + title: '证件号', + dataIndex: 'idCard', + key: 'idCard', + width: 180, + customRender: ({ text }: { text: string }) => text || '--', + }, { title: '证件图片', key: 'idCardImg', @@ -108,8 +114,9 @@ const PLAYER_COLUMNS = [ ]; const REFUND_STATUS_MAP: Record = { - success: { label: '退款成功', tone: 'success' }, - failed: { label: '退款失败', tone: 'danger' }, + '1': { label: '退款中', tone: 'orange' }, + '2': { label: '退款成功', tone: 'success' }, + '3': { label: '退款失败', tone: 'danger' }, }; export default defineComponent({ @@ -129,8 +136,6 @@ export default defineComponent({ const [playersLoading, setPlayersLoading] = useState(true); const [playerPage, setPlayerPage] = useState(1); const [playerTotal, setPlayerTotal] = useState(0); - const [refundPage, setRefundPage] = useState(1); - const [refundPageSize] = useState(2); const playerPageSize = 5; /** 获取选手列表(分页) */ @@ -158,25 +163,21 @@ export default defineComponent({ const hasRefundFailed = computed(() => { const records = refundRecords.value; if (!records || !records.length) return false; - return records.some((r) => { - if (!r) return false; - const hasRefundAmount = parseFloat(r.refundAmount || '0') > 0; - const hasRefundTime = r.refundTime && r.refundTime !== '--'; - return hasRefundAmount && !hasRefundTime; - }); + return records.some((r) => r?.refundStatus === '3'); }); - const pagedRefunds = computed(() => { - const start = (refundPage.value - 1) * refundPageSize.value; - return refundRecords.value.slice(start, start + refundPageSize.value); - }); + const refundSuccessList = computed(() => + refundRecords.value.filter((r) => r.refundStatus === '2'), + ); const totalRefunded = computed(() => { - const records = refundRecords.value; - if (!records.length) return 0; - return records.reduce((sum, r) => sum + parseFloat(r.refundAmount || '0'), 0); + const list = refundSuccessList.value; + if (!list.length) return 0; + return list.reduce((sum, r) => sum + parseFloat(r.refundAmount || '0'), 0); }); + const refundSuccessCount = computed(() => refundSuccessList.value.length); + const fetchData = async () => { const params = { orderNo: props.orderNo, uniqueId: props.uniqueId }; const [detailRes] = await Promise.all([getOrderDetail(params), fetchPlayers(1)]); @@ -194,10 +195,6 @@ export default defineComponent({ fetchPlayers(page); }; - const handleRefundPageChange = (page: number) => { - setRefundPage(page); - }; - return () => (
选手信息
-
+
@@ -291,28 +288,18 @@ export default defineComponent({ <>
已退金额:{totalRefunded.value.toFixed(2)}元 - 退款次数:{refundRecords.value.length}次 + 退款次数:{refundSuccessCount.value}次
- {pagedRefunds.value.map((r, idx) => { - const realIdx = (refundPage.value - 1) * refundPageSize.value + idx + 1; - const isSuccess = parseFloat(r.refundTime || '') > 0 || !!r.refundTime; - const statusInfo = { - label: isSuccess - ? '退款成功' - : r.isFullRefund === '1' - ? '退款待处理' - : '退款中', - tone: (isSuccess - ? 'success' - : r.isFullRefund === '1' - ? 'warning' - : 'orange') as StatusTagTone, + {refundRecords.value.map((r, idx) => { + const statusInfo = REFUND_STATUS_MAP[r.refundStatus] || { + label: '未知', + tone: 'default' as StatusTagTone, }; return (
- 第{realIdx}次退款 + 第{idx + 1}次退款
@@ -321,37 +308,23 @@ export default defineComponent({ 退款金额: ¥{formatMoney(r.refundAmount)} - {r.isFullRefund === '1' && ( - (全部退款) - )} - {r.isFullRefund === '0' && ( - (部分退款) - )} + {`(${r.refundSignupNames})`}
申请时间:{r.refundApplyTime}
-
完款时间:{r.refundTime || '--'}
+
完成时间:{r.refundTime || '--'}
退款方式:{r.refundMethod}
第三方退款单号:{r.refundOutTradeNo || '--'}
-
已退金额:¥{formatMoney(r.refundedAmount)}
); })} -
- -
) : (
暂无退款记录