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, ''); +}