From 7b989d6982a1cc76ce00880e850b0b7b786651cc Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期三, 17 九月 2025 10:57:27 +0800
Subject: [PATCH] feat: 资金管理

---
 src/views/FinanceManage/FinanceManageList.vue              |   17 +-
 .eslintrc-auto-import.json                                 |    2 
 src/services/api/typings.d.ts                              |   97 +++++++++++++++
 auto-imports.d.ts                                          |    4 
 src/constants/finance.ts                                   |   13 ++
 src/views/FinanceManage/BalanceManage.vue                  |   32 ++---
 src/constants/index.ts                                     |    1 
 src/views/FinanceManage/components/BalanceDetailDialog.vue |   82 +++++++++++--
 src/views/FinanceManage/components/FinanceDetailDialog.vue |   53 ++++----
 src/services/api/user.ts                                   |   18 +++
 10 files changed, 247 insertions(+), 72 deletions(-)

diff --git a/.eslintrc-auto-import.json b/.eslintrc-auto-import.json
index a41a329..47846f1 100644
--- a/.eslintrc-auto-import.json
+++ b/.eslintrc-auto-import.json
@@ -102,7 +102,9 @@
     "EnumUserType": true,
     "EnumUserTypeText": true,
     "EnumUserWalletTransactionType": true,
+    "EnumUserWalletTransactionTypeText": true,
     "EnumWalletTransactionStatus": true,
+    "EnumWalletTransactionStatusText": true,
     "ExtractDefaultPropTypes": true,
     "ExtractPropTypes": true,
     "ExtractPublicPropTypes": true,
diff --git a/auto-imports.d.ts b/auto-imports.d.ts
index 05cb3dc..28bd8b0 100644
--- a/auto-imports.d.ts
+++ b/auto-imports.d.ts
@@ -106,7 +106,9 @@
   const EnumUserType: typeof import('./src/constants/apiEnum')['EnumUserType']
   const EnumUserTypeText: typeof import('./src/constants/apiEnumText')['EnumUserTypeText']
   const EnumUserWalletTransactionType: typeof import('./src/constants/apiEnum')['EnumUserWalletTransactionType']
+  const EnumUserWalletTransactionTypeText: typeof import('./src/constants/finance')['EnumUserWalletTransactionTypeText']
   const EnumWalletTransactionStatus: typeof import('./src/constants/apiEnum')['EnumWalletTransactionStatus']
+  const EnumWalletTransactionStatusText: typeof import('./src/constants/finance')['EnumWalletTransactionStatusText']
   const FastButtonMap: typeof import('./src/constants/module')['FastButtonMap']
   const FastColumnList: typeof import('./src/constants/module')['FastColumnList']
   const FastDataButtonList: typeof import('./src/constants/module')['FastDataButtonList']
@@ -407,7 +409,9 @@
     readonly EnumUserType: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumUserType']>
     readonly EnumUserTypeText: UnwrapRef<typeof import('./src/constants/apiEnumText')['EnumUserTypeText']>
     readonly EnumUserWalletTransactionType: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumUserWalletTransactionType']>
+    readonly EnumUserWalletTransactionTypeText: UnwrapRef<typeof import('./src/constants/finance')['EnumUserWalletTransactionTypeText']>
     readonly EnumWalletTransactionStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumWalletTransactionStatus']>
+    readonly EnumWalletTransactionStatusText: UnwrapRef<typeof import('./src/constants/finance')['EnumWalletTransactionStatusText']>
     readonly FastButtonMap: UnwrapRef<typeof import('./src/constants/module')['FastButtonMap']>
     readonly FastColumnList: UnwrapRef<typeof import('./src/constants/module')['FastColumnList']>
     readonly FastDataButtonList: UnwrapRef<typeof import('./src/constants/module')['FastDataButtonList']>
diff --git a/src/constants/finance.ts b/src/constants/finance.ts
new file mode 100644
index 0000000..cee845d
--- /dev/null
+++ b/src/constants/finance.ts
@@ -0,0 +1,13 @@
+export const EnumUserWalletTransactionTypeText = {
+  [EnumUserWalletTransactionType.Income]: '鏀跺叆',
+  [EnumUserWalletTransactionType.Withdraw]: '鎻愮幇',
+};
+
+export const EnumWalletTransactionStatusText = {
+  [EnumWalletTransactionStatus.WaitSubmit]: '寰呮彁浜�',
+  [EnumWalletTransactionStatus.WaitPay]: '寰呮敮浠�',
+  [EnumWalletTransactionStatus.Dealing]: '澶勭悊涓�',
+  [EnumWalletTransactionStatus.Success]: '鎴愬姛',
+  [EnumWalletTransactionStatus.Refund]: '閫�绁�',
+  [EnumWalletTransactionStatus.Fail]: '澶辫触',
+};
diff --git a/src/constants/index.ts b/src/constants/index.ts
index f578bc8..fb702a3 100644
--- a/src/constants/index.ts
+++ b/src/constants/index.ts
@@ -20,3 +20,4 @@
 export * from './enterpriseEmployee';
 export * from './electronSign';
 export * from './enterpriseWallet';
+export * from './finance';
diff --git a/src/services/api/typings.d.ts b/src/services/api/typings.d.ts
index 64d7946..8950cd5 100644
--- a/src/services/api/typings.d.ts
+++ b/src/services/api/typings.d.ts
@@ -1732,6 +1732,24 @@
     timestamp?: number;
   }
 
+  interface FriendlyResultGetPersonalUserWalletBalancesQueryResult {
+    /** 璺熻釜Id */
+    traceId?: string;
+    /** 鐘舵�佺爜 */
+    code?: number;
+    /** 閿欒鐮� */
+    errorCode?: string;
+    data?: GetPersonalUserWalletBalancesQueryResult;
+    /** 鎵ц鎴愬姛 */
+    success?: boolean;
+    /** 閿欒淇℃伅 */
+    msg?: any;
+    /** 闄勫姞鏁版嵁 */
+    extras?: any;
+    /** 鏃堕棿鎴� */
+    timestamp?: number;
+  }
+
   interface FriendlyResultGetResourceLogsQueryResult {
     /** 璺熻釜Id */
     traceId?: string;
@@ -3928,6 +3946,8 @@
   interface GetPersonalUserInfoSignContractsQuery {
     /** 鐢ㄦ埛Id */
     id?: string;
+    /** 鐏靛伐Id */
+    enterpriseEmployeeId?: string;
     pageModel?: PagedListQueryPageModel;
   }
 
@@ -4062,10 +4082,26 @@
     settlementAmount?: number;
     /** 瀹炲彂閲戦/鎻愮幇閲戦 */
     amount?: number;
-    /** 鏀舵浜哄鍚� */
-    receiveName?: string;
+    /** 浠樻浜鸿处鎴� */
+    payerAccount?: string;
+    /** 浠樻浜哄悕绉� */
+    payerName?: string;
+    /** 浠樻浜哄紑鎴疯 */
+    payerBank?: string;
+    /** 浠樻浜烘敮琛� */
+    payerBankBranch?: string;
     /** 鏀舵璐︽埛 */
     receiveAccount?: string;
+    /** 鏀舵浜哄悕绉� */
+    receiveName?: string;
+    /** 鏀舵浜哄紑鎴疯 */
+    receiveBank?: string;
+    /** 鏀舵浜烘敮琛� */
+    receiveBankBranch?: string;
+    /** 甯佺 */
+    currency?: string;
+    /** 鐢ㄩ�� */
+    purpose?: string;
     /** 鏈嶅姟璐� */
     serviceFee?: number;
     /** 瀹為檯鍒拌处 */
@@ -4076,6 +4112,7 @@
     transDate?: string;
     /** 鍒涘缓鏃堕棿 */
     createdTime?: string;
+    transactionStatus?: EnumWalletTransactionStatus;
     /** 澶辫触鍘熷洜 */
     failReason?: string;
   }
@@ -4086,6 +4123,8 @@
     /** 鍒涘缓鏃堕棿-鎴 */
     createdTimeEnd?: string;
     type?: EnumUserWalletTransactionType;
+    /** 鐢ㄦ埛Id */
+    userId?: string;
     pageModel?: PagedListQueryPageModel;
   }
 
@@ -4099,14 +4138,35 @@
   interface GetPersonalUserTransactionsQueryResultItem {
     /** 鏀舵敮Id */
     id?: string;
+    type?: EnumUserWalletTransactionType;
     /** 鏍囬 */
     title?: string;
-    /** 鍒涘缓鏃堕棿 */
-    createdTime?: string;
     /** 閲戦 */
     amount?: number;
     /** 浣欓 */
     balance?: number;
+    /** 浼佷笟鍚嶇О */
+    enterpriseName?: string;
+    /** 浠樻浜鸿处鎴� */
+    payerAccount?: string;
+    /** 浠樻浜哄悕绉� */
+    payerName?: string;
+    /** 浠樻浜鸿处鍙� */
+    payerUserName?: string;
+    /** 浠樻浜鸿仈绯讳汉 */
+    payerContacts?: string;
+    /** 浠樻浜鸿仈绯荤數璇� */
+    payerContactPhoneNumber?: string;
+    /** 鏀舵璐︽埛 */
+    receiveAccount?: string;
+    /** 鏀舵浜哄悕绉� */
+    receiveName?: string;
+    /** 鐢ㄩ�� */
+    purpose?: string;
+    /** 鍒涘缓鏃堕棿 */
+    createdTime?: string;
+    /** 浜ゆ槗鏃堕棿 */
+    transDate?: string;
   }
 
   interface GetPersonalUserTransactionsQueryResultObjectData {
@@ -4116,6 +4176,35 @@
     sumWithdraw?: number;
   }
 
+  interface GetPersonalUserWalletBalancesQuery {
+    /** 鏈�灏忎綑棰� */
+    balanceMin?: number;
+    /** 鏈�澶т綑棰� */
+    balanceMax?: number;
+    /** 鍏抽敭瀛� */
+    keywords?: string;
+    pageModel?: PagedListQueryPageModel;
+  }
+
+  interface GetPersonalUserWalletBalancesQueryResult {
+    pageModel?: PagedListQueryResultPageModel;
+    /** 鏁版嵁 */
+    data?: GetPersonalUserWalletBalancesQueryResultItem[];
+  }
+
+  interface GetPersonalUserWalletBalancesQueryResultItem {
+    /** 鐢ㄦ埛Id */
+    id?: string;
+    /** 濮撳悕 */
+    name?: string;
+    /** 鎵嬫満鍙� */
+    contactPhoneNumber?: string;
+    /** 韬唤璇佸彿 */
+    identity?: string;
+    /** 浣欓 */
+    balance?: number;
+  }
+
   interface GetResourceFieldsQueryResultItem {
     /** 缂栧彿 */
     code?: string;
diff --git a/src/services/api/user.ts b/src/services/api/user.ts
index 5ea222a..d06c228 100644
--- a/src/services/api/user.ts
+++ b/src/services/api/user.ts
@@ -106,6 +106,24 @@
   );
 }
 
+/** 鏌ヨ涓汉閽卞寘浣欓鍒嗛〉鍒楄〃 POST /api/user/user/getPersonalUserWalletBalances */
+export async function getPersonalUserWalletBalances(
+  body: API.GetPersonalUserWalletBalancesQuery,
+  options?: API.RequestConfig
+) {
+  return request<API.GetPersonalUserWalletBalancesQueryResult>(
+    '/api/user/user/getPersonalUserWalletBalances',
+    {
+      method: 'POST',
+      headers: {
+        'Content-Type': 'application/json-patch+json',
+      },
+      data: body,
+      ...(options || {}),
+    }
+  );
+}
+
 /** 鏌ヨ鐢ㄦ埛瑙掕壊鍒楄〃 GET /api/user/user/getUserInfoRoles */
 export async function getUserInfoRoles(
   // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
diff --git a/src/views/FinanceManage/BalanceManage.vue b/src/views/FinanceManage/BalanceManage.vue
index 92ffa1d..e14f104 100644
--- a/src/views/FinanceManage/BalanceManage.vue
+++ b/src/views/FinanceManage/BalanceManage.vue
@@ -3,24 +3,16 @@
     <AppContainer>
       <ProTableQueryFilterBar @on-reset="reset">
         <template #query>
-          <QueryFilterItem>
-            <FieldSelect
-              placeholder="鎵�灞炲叕鍙�"
-              v-model="extraParamState.status"
-              :value-enum="[]"
-              @change="getList()"
-            />
-          </QueryFilterItem>
           <QueryFilterItem tip-content="浣欓鑼冨洿">
             <el-input-number
-              v-model="extraParamState.minAmount"
+              v-model="extraParamState.balanceMin"
               placeholder="浣欓鏈�灏忛噾棰�"
               size="small"
               style="width: 150px"
               :controls="false"
             />~
             <el-input-number
-              v-model="extraParamState.maxAmount"
+              v-model="extraParamState.balanceMax"
               placeholder="浣欓鏈�澶ч噾棰�"
               size="small"
               style="width: 150px"
@@ -29,7 +21,7 @@
           </QueryFilterItem>
           <QueryFilterItem>
             <SearchInput
-              v-model="extraParamState.keyword"
+              v-model="extraParamState.keywords"
               style="width: 260px"
               placeholder="濮撳悕/鎵嬫満鍙�/韬唤璇佸彿"
               @on-click-search="getList"
@@ -59,7 +51,7 @@
   FieldSelect,
 } from '@bole-core/components';
 import { useAccess } from '@/hooks';
-import * as enterpriseServices from '@/services/api/enterprise';
+import * as userServices from '@/services/api/user';
 import BalanceDetailDialog from './components/BalanceDetailDialog.vue';
 
 defineOptions({
@@ -95,15 +87,18 @@
 } = useTable(
   async ({ pageIndex, pageSize }, extraParamState) => {
     try {
-      let params: API.GetEnterprisesQuery = {
+      let params: API.GetPersonalUserWalletBalancesQuery = {
         pageModel: {
           rows: pageSize,
           page: pageIndex,
           orderInput: extraParamState.orderInput,
         },
-        // searchKeys: extraParamState.keyword,
+        keywords: extraParamState.keywords,
+        balanceMin: extraParamState.balanceMin,
+        balanceMax: extraParamState.balanceMax,
       };
-      let res = await enterpriseServices.getEnterprises(params, {
+
+      let res = await userServices.getPersonalUserWalletBalances(params, {
         showLoading: !state.loading,
       });
       return res;
@@ -111,10 +106,9 @@
   },
   {
     defaultExtraParams: {
-      keyword: '',
-      status: '',
-      minAmount: null as number,
-      maxAmount: null as number,
+      keywords: '',
+      balanceMin: null as number,
+      balanceMax: null as number,
       orderInput: [{ property: 'id', order: EnumPagedListOrder.Asc }],
     },
     columnsRenderProps: {},
diff --git a/src/views/FinanceManage/FinanceManageList.vue b/src/views/FinanceManage/FinanceManageList.vue
index 183bcca..e51be1f 100644
--- a/src/views/FinanceManage/FinanceManageList.vue
+++ b/src/views/FinanceManage/FinanceManageList.vue
@@ -19,7 +19,7 @@
 } from '@bole-core/components';
 import { useAccess } from '@/hooks';
 import { ModelValueType } from 'element-plus';
-import * as enterpriseServices from '@/services/api/enterprise';
+import * as userServices from '@/services/api/user';
 import FinanceDetailDialog from './components/FinanceDetailDialog.vue';
 
 defineOptions({
@@ -55,15 +55,15 @@
 } = useTable(
   async ({ pageIndex, pageSize }, extraParamState) => {
     try {
-      let params: API.GetEnterprisesQuery = {
+      let params: API.GetPersonalUserTransactionsQuery = {
         pageModel: {
           rows: pageSize,
           page: pageIndex,
           orderInput: extraParamState.orderInput,
         },
-        // searchKeys: extraParamState.keyword,
+        type: EnumUserWalletTransactionType.Income,
       };
-      let res = await enterpriseServices.getEnterprises(params, {
+      let res = await userServices.getPersonalUserTransactions(params, {
         showLoading: !state.loading,
       });
       return res;
@@ -71,14 +71,11 @@
   },
   {
     defaultExtraParams: {
-      keyword: '',
-      pageType: '' as any as number,
-      status: '' as any as boolean,
-      beginDate: [] as unknown as ModelValueType,
-      endDate: [] as unknown as ModelValueType,
       orderInput: [{ property: 'id', order: EnumPagedListOrder.Asc }],
     },
-    columnsRenderProps: {},
+    columnsRenderProps: {
+      transDate: { type: 'date', format: 'YYYY-MM-DD HH:mm:ss' },
+    },
   }
 );
 
diff --git a/src/views/FinanceManage/components/BalanceDetailDialog.vue b/src/views/FinanceManage/components/BalanceDetailDialog.vue
index a81d09f..d18b592 100644
--- a/src/views/FinanceManage/components/BalanceDetailDialog.vue
+++ b/src/views/FinanceManage/components/BalanceDetailDialog.vue
@@ -5,11 +5,12 @@
         <template #query>
           <QueryFilterItem>
             <FieldSelect
-              v-model="extraParamState.status"
-              :valueEnum="[]"
+              v-model="extraParamState.type"
+              :valueEnum="EnumUserWalletTransactionTypeText"
               clearable
               filterable
               placeholder="浜ゆ槗绫诲瀷"
+              @change="getList()"
             />
           </QueryFilterItem>
           <QueryFilterItem tip-content="鏌ヨ鏃ユ湡">
@@ -25,9 +26,25 @@
           </QueryFilterItem>
         </template>
       </ProTableQueryFilterBar>
-      <ProTableV2 v-bind="proTableProps" :columns="columns" :showOperationColumn="false">
+      <ProTableV2 v-bind="proTableProps" :columns="columns" :operationBtns="operationBtns">
+        <template #income="{ row }">
+          <div style="color: #67c23a" v-if="row.type === EnumUserWalletTransactionType.Income">
+            {{ `+${toThousand(row.amount)}` }}
+          </div>
+          <div v-else>/</div>
+        </template>
+        <template #outcome="{ row }">
+          <div style="color: #f56c6c" v-if="row.type === EnumUserWalletTransactionType.Withdraw">
+            {{ toThousand(row.amount) }}
+          </div>
+          <div v-else>/</div>
+        </template>
+        <template #account="{ row }">
+          {{ `${row.receiveAccount} - ${row.receiveName}` }}
+        </template>
       </ProTableV2>
     </ProDialogTableWrapper>
+    <FinanceDetailDialog v-bind="dialogProps"></FinanceDetailDialog>
   </ProDialog>
 </template>
 
@@ -42,9 +59,14 @@
   FieldSelect,
   ProTableV2,
   ProTableQueryFilterBar,
+  useFormDialog,
+  defineOperationBtns,
 } from '@bole-core/components';
-import * as enterpriseServices from '@/services/api/enterprise';
+import * as userServices from '@/services/api/user';
 import { ModelValueType } from 'element-plus';
+import { format, toThousand } from '@/utils';
+import { EnumUserWalletTransactionTypeText, EnumUserWalletTransactionType } from '@/constants';
+import FinanceDetailDialog from './FinanceDetailDialog.vue';
 
 defineOptions({
   name: 'FinanceDetailDialog',
@@ -65,33 +87,45 @@
 const columns = defineColumns([
   {
     id: '1',
-    enCode: 'name',
+    enCode: 'transDate',
     name: '浜ゆ槗鏃堕棿',
   },
   {
     id: '2',
-    enCode: 'name',
+    enCode: 'income',
     name: '鏀跺叆',
   },
   {
     id: '3',
-    enCode: 'name',
+    enCode: 'outcome',
     name: '鏀嚭',
   },
   {
     id: '4',
-    enCode: 'name',
+    enCode: 'balance',
     name: '璐︽埛浣欓',
   },
   {
     id: '4',
-    enCode: 'name',
+    enCode: 'account',
     name: '瀵规柟甯愬彿/鎴峰悕',
   },
   {
     id: '4',
-    enCode: 'name',
+    enCode: 'purpose',
     name: '鐢ㄩ��',
+  },
+]);
+
+const operationBtns = defineOperationBtns([
+  {
+    data: {
+      enCode: 'detailBtn',
+      name: '鏄庣粏',
+    },
+    emits: {
+      onClick: (role) => openDialog(role),
+    },
   },
 ]);
 
@@ -113,27 +147,45 @@
 } = useTable(
   async ({ pageIndex, pageSize }, extraParamState) => {
     try {
-      let params: API.GetEnterprisesQuery = {
+      let params: API.GetPersonalUserTransactionsQuery = {
         pageModel: {
           rows: pageSize,
           page: pageIndex,
           orderInput: extraParamState.orderInput,
         },
-        // searchKeys: extraParamState.keyword,
+        createdTimeStart: format(extraParamState.creationTime?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
+        createdTimeEnd: format(extraParamState.creationTime?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
+        type: extraParamState.type,
+        userId: form.value.id,
       };
-      let res = await enterpriseServices.getEnterprises(params);
+      let res = await userServices.getPersonalUserTransactions(params);
       return res;
     } catch (error) {}
   },
   {
     defaultExtraParams: {
-      status: '',
+      type: '' as any as EnumUserWalletTransactionType,
       creationTime: [] as unknown as ModelValueType,
       orderInput: [{ property: 'id', order: EnumPagedListOrder.Asc }],
     },
-    columnsRenderProps: {},
+    columnsRenderProps: {
+      transDate: { type: 'date', format: 'YYYY-MM-DD HH:mm:ss' },
+      balance: { type: 'money' },
+    },
   }
 );
+
+const { dialogProps, handleEdit, editForm } = useFormDialog({
+  defaultFormParams: {
+    id: '',
+  },
+});
+
+function openDialog(row: API.GetPersonalUserTransactionsQueryResultItem) {
+  handleEdit({
+    id: row.id,
+  });
+}
 </script>
 
 <style lang="scss" scoped>
diff --git a/src/views/FinanceManage/components/FinanceDetailDialog.vue b/src/views/FinanceManage/components/FinanceDetailDialog.vue
index ffa1459..b05ba85 100644
--- a/src/views/FinanceManage/components/FinanceDetailDialog.vue
+++ b/src/views/FinanceManage/components/FinanceDetailDialog.vue
@@ -12,6 +12,9 @@
 <script setup lang="ts">
 import { ProDialog, toThousand } from '@bole-core/components';
 import { usePortraitTable } from '@/hooks';
+import * as userServices from '@/services/api/user';
+import { useQuery } from '@tanstack/vue-query';
+import { EnumWalletTransactionStatusText } from '@/constants';
 
 defineOptions({
   name: 'FinanceDetailDialog',
@@ -29,68 +32,70 @@
   (e: 'onCancel'): void;
 }>();
 
+const { data: detail } = useQuery({
+  queryKey: ['userResumeServices/getUserResume', form.value.id],
+  queryFn: async () => {
+    return await userServices.getPersonalUserTransaction({ id: form.value.id });
+  },
+  placeholderData: () => ({} as API.GetPersonalUserTransactionQueryResult),
+  enabled: computed(() => !!form.value.id),
+});
+
 const { portraitTableProps } = usePortraitTable({
-  data: form,
+  data: detail,
   columns: [
     {
       label: '浠樻浜鸿处鎴�',
-      key: 'id',
-      type: 'text',
+      key: 'payerAccount',
     },
     {
       label: '鏀舵浜鸿处鎴�',
-      key: 'id',
-      type: 'text',
+      key: 'receiveAccount',
     },
     {
       label: '浠樻浜哄悕绉�',
-      key: 'id',
-      type: 'text',
+      key: 'payerName',
     },
     {
       label: '鏀舵浜哄悕绉�',
-      key: 'id',
-      type: 'text',
+      key: 'receiveName',
     },
     {
       label: '浠樻浜哄紑鎴疯',
-      key: 'id',
-      type: 'text',
+      key: 'payerBank',
     },
     {
       label: '鏀舵浜哄紑鎴疯',
-      key: 'id',
-      type: 'text',
+      key: 'receiveBank',
     },
     {
       label: '甯佺',
-      key: 'id',
-      type: 'text',
+      key: 'currency',
     },
     {
       label: '浜ゆ槗閲戦',
-      key: 'id',
+      key: 'actualAmount',
       type: 'money',
     },
     {
       label: '鐢ㄩ��',
-      key: 'id',
-      type: 'text',
+      key: 'purpose',
     },
     {
       label: '鎽樿',
-      key: 'id',
-      type: 'text',
+      key: 'failReason',
     },
     {
       label: '浜ゆ槗鏃堕棿',
-      key: 'id',
-      type: 'text',
+      key: 'transDate',
+      type: 'date',
+      format: 'YYYY-MM-DD HH:mm:ss',
     },
     {
       label: '浜ゆ槗鐘舵��',
-      key: 'id',
-      type: 'text',
+      key: 'transactionStatus',
+      type: 'enum',
+      valueEnum: EnumWalletTransactionStatusText,
     },
   ],
 });

--
Gitblit v1.9.1