diff --git a/src/api/withdraw/types.ts b/src/api/withdraw/types.ts
index f8c688e..966a018 100644
--- a/src/api/withdraw/types.ts
+++ b/src/api/withdraw/types.ts
@@ -23,7 +23,7 @@ export interface WithdrawVO {
auditStatus: number;
/** 到账状态:0=未支付,1=支付成功,2=支付失败 */
payStatus: number;
- /** 流水单号 */
+ /** 第三方单号 */
serialNumber: string;
/** 申请时间 */
createDate: string;
diff --git a/src/pages/events/orders/index.tsx b/src/pages/events/orders/index.tsx
index 7257675..2b82bb7 100644
--- a/src/pages/events/orders/index.tsx
+++ b/src/pages/events/orders/index.tsx
@@ -72,6 +72,7 @@ function renderBodyCell({
if (column.dataIndex === 'name') {
const maxLen = 15;
const raw = text || '';
+ if (!raw) return --;
const display = raw.length > maxLen ? raw.slice(0, maxLen) + '...' : raw;
return raw.length > maxLen ? (
diff --git a/src/pages/events/orders/model/useOrderModel.ts b/src/pages/events/orders/model/useOrderModel.ts
index a0fc4f1..101084f 100644
--- a/src/pages/events/orders/model/useOrderModel.ts
+++ b/src/pages/events/orders/model/useOrderModel.ts
@@ -125,22 +125,77 @@ export function useOrderModel() {
};
const columns = [
- { title: '订单编号', dataIndex: 'orderNo', key: 'orderNo', width: 200 },
- { title: '赛事名称', dataIndex: 'name', key: 'name', width: 180 },
- { title: '选手名称', dataIndex: 'realName', key: 'realName', width: 100 },
- { title: '手机号', dataIndex: 'phone', key: 'phone', width: 130 },
- { title: '比赛组别', dataIndex: 'categoryName', key: 'categoryName', width: 120 },
- { title: '报名人', dataIndex: 'creatorName', key: 'creatorName', width: 100 },
- { title: '报名人手机号', dataIndex: 'creatorPhone', key: 'creatorPhone', width: 130 },
+ {
+ title: '订单编号',
+ dataIndex: 'orderNo',
+ key: 'orderNo',
+ width: 200,
+ customRender: ({ text }: { text: string }) => text || '--',
+ },
+ {
+ title: '赛事名称',
+ dataIndex: 'name',
+ key: 'name',
+ width: 180,
+ customRender: ({ text }: { text: string }) => text || '--',
+ },
+ {
+ title: '选手名称',
+ dataIndex: 'realName',
+ key: 'realName',
+ width: 100,
+ customRender: ({ text }: { text: string }) => text || '--',
+ },
+ {
+ title: '手机号',
+ dataIndex: 'phone',
+ key: 'phone',
+ width: 130,
+ customRender: ({ text }: { text: string }) => text || '--',
+ },
+ {
+ title: '比赛组别',
+ dataIndex: 'categoryName',
+ key: 'categoryName',
+ width: 120,
+ customRender: ({ text }: { text: string }) => text || '--',
+ },
+ {
+ title: '报名人',
+ dataIndex: 'creatorName',
+ key: 'creatorName',
+ width: 100,
+ customRender: ({ text }: { text: string }) => text || '--',
+ },
+ {
+ title: '报名人手机号',
+ dataIndex: 'creatorPhone',
+ key: 'creatorPhone',
+ width: 130,
+ customRender: ({ text }: { text: string }) => text || '--',
+ },
{
title: '报名人数',
dataIndex: 'creatorSignupCount',
key: 'creatorSignupCount',
width: 90,
align: 'center' as const,
+ customRender: ({ text }: { text: number }) => (text != null ? text : '--'),
+ },
+ {
+ title: '订单时间',
+ dataIndex: 'orderTime',
+ key: 'orderTime',
+ width: 170,
+ customRender: ({ text }: { text: string }) => text || '--',
+ },
+ {
+ title: '支付时间',
+ dataIndex: 'payTime',
+ key: 'payTime',
+ width: 170,
+ customRender: ({ text }: { text: string }) => text || '--',
},
- { title: '订单时间', dataIndex: 'orderTime', key: 'orderTime', width: 170 },
- { title: '支付时间', dataIndex: 'payTime', key: 'payTime', width: 170 },
{
title: '订单总金额',
dataIndex: 'creatorSignupFee',
diff --git a/src/pages/finance/payments/model/usePaymentsModel.ts b/src/pages/finance/payments/model/usePaymentsModel.ts
index 2c4376f..9ca9a22 100644
--- a/src/pages/finance/payments/model/usePaymentsModel.ts
+++ b/src/pages/finance/payments/model/usePaymentsModel.ts
@@ -93,7 +93,13 @@ export function usePaymentsModel() {
// ===== 表格列(dataIndex 对齐 API) =====
const columns = [
- { title: '流水号', dataIndex: 'serialNo', key: 'serialNo', width: 160 },
+ {
+ title: '第三方流水号',
+ dataIndex: 'serialNo',
+ key: 'serialNo',
+ width: 160,
+ customRender: ({ text }: { text: string }) => text || '--',
+ },
{ title: '订单编号', dataIndex: 'orderNo', key: 'orderNo', width: 160 },
{
title: '类型',
diff --git a/src/pages/finance/wallet/components/WalletDetailModal.tsx b/src/pages/finance/wallet/components/WalletDetailModal.tsx
index 1c35b01..9a7389a 100644
--- a/src/pages/finance/wallet/components/WalletDetailModal.tsx
+++ b/src/pages/finance/wallet/components/WalletDetailModal.tsx
@@ -124,13 +124,7 @@ export default defineComponent({
customRender: ({ text }: { text: string }) => {
const num = Number(text) || 0;
const color = num > 0 ? '#52c41a' : num < 0 ? '#ff4d4f' : 'rgba(0,0,0,0.85)';
- const sign = num > 0 ? '+' : '';
- return (
-
- {sign}
- {text}
-
- );
+ return {text};
},
},
{
diff --git a/src/pages/finance/wallet/index.tsx b/src/pages/finance/wallet/index.tsx
index d7e7015..5d5f971 100644
--- a/src/pages/finance/wallet/index.tsx
+++ b/src/pages/finance/wallet/index.tsx
@@ -1,5 +1,5 @@
import { defineComponent } from 'vue';
-import { Button, Input, Table, Form, Space, Pagination } from 'ant-design-vue';
+import { Button, Input, InputNumber, Table, Form, Space, Pagination } from 'ant-design-vue';
import { WalletOutlined, LockOutlined, RiseOutlined } from '@ant-design/icons-vue';
import { useWalletModel } from './model/useWalletModel';
import { useContainerSize } from '@/hooks';
@@ -156,13 +156,17 @@ export default defineComponent({
- (filterForm.minBalance = val ?? '')}
+ style={{ width: '140px' }}
+ value={filterForm.minBalance || undefined}
+ precision={0}
+ min={0}
+ controls={false}
+ onUpdate:value={(val: any) =>
+ (filterForm.minBalance = val != null ? String(val) : '')
+ }
onPressEnter={handleSearch}
- allowClear
/>
- (filterForm.maxBalance = val ?? '')}
+ style={{ width: '140px' }}
+ value={filterForm.maxBalance || undefined}
+ precision={0}
+ min={0}
+ controls={false}
+ onUpdate:value={(val: any) =>
+ (filterForm.maxBalance = val != null ? String(val) : '')
+ }
onPressEnter={handleSearch}
- allowClear
/>
diff --git a/src/pages/finance/withdraw/model/useWithdrawModel.ts b/src/pages/finance/withdraw/model/useWithdrawModel.ts
index e946fda..1573814 100644
--- a/src/pages/finance/withdraw/model/useWithdrawModel.ts
+++ b/src/pages/finance/withdraw/model/useWithdrawModel.ts
@@ -162,7 +162,7 @@ export function useWithdrawModel() {
},
{ title: '审核状态', dataIndex: 'auditStatus', key: 'auditStatus', width: 110 },
{ title: '到账状态', dataIndex: 'payStatus', key: 'payStatus', width: 110 },
- { title: '流水单号', dataIndex: 'serialNumber', key: 'serialNumber', width: 180 },
+ { title: '第三方单号', dataIndex: 'serialNumber', key: 'serialNumber', width: 180 },
{ title: '申请时间', dataIndex: 'createDate', key: 'createDate', width: 180 },
];
diff --git a/src/utils/form.ts b/src/utils/form.ts
index e2c0996..e1f1426 100644
--- a/src/utils/form.ts
+++ b/src/utils/form.ts
@@ -33,6 +33,12 @@ export const REAL_NAME_REGEX = /^[\u4e00-\u9fa5A-Za-z0-9·]{1,8}$/;
*/
export const IMAGE_TYPE_REGEX = /^image\//;
+/**
+ * 纯数字(整数)
+ * - 用于过滤非数字字符
+ */
+export const INTEGER_ONLY_REGEX = /\D/g;
+
// ============================================================
// 校验函数
// ============================================================
@@ -56,3 +62,8 @@ export function isValidRealName(value: unknown): boolean {
export function isImageFile(file: { type: string }): boolean {
return IMAGE_TYPE_REGEX.test(file.type);
}
+
+/** 过滤非数字字符,只保留整数 */
+export function toIntegerOnly(value: unknown): string {
+ return String(value ?? '').replace(INTEGER_ONLY_REGEX, '');
+}