From f683f01efa5ca5cd5409a3b919e9d62f24f923e5 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sun, 2 Nov 2025 15:20:26 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E3=80=90antd=E3=80=91=E3=80=90ele?= =?UTF-8?q?=E3=80=91member=20=E7=9A=84=20balance-list.vue=E3=80=81experien?= =?UTF-8?q?ce-record-list.vue=E3=80=81point-list.vue=E3=80=81sign-list.vue?= =?UTF-8?q?=20=E5=A2=9E=E5=BC=BA=20data.ts=20=E7=9A=84=E5=A4=8D=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../user/detail/modules/balance-list.vue | 32 +-- .../detail/modules/experience-record-list.vue | 196 +++++++++--------- .../member/user/detail/modules/point-list.vue | 60 +++--- .../member/user/detail/modules/sign-list.vue | 44 ++-- .../user/detail/modules/balance-list.vue | 32 +-- .../detail/modules/experience-record-list.vue | 194 ++++++++--------- .../member/user/detail/modules/point-list.vue | 54 ++--- .../member/user/detail/modules/sign-list.vue | 44 ++-- 8 files changed, 293 insertions(+), 363 deletions(-) diff --git a/apps/web-antd/src/views/member/user/detail/modules/balance-list.vue b/apps/web-antd/src/views/member/user/detail/modules/balance-list.vue index 76d805f19..86b148ce7 100644 --- a/apps/web-antd/src/views/member/user/detail/modules/balance-list.vue +++ b/apps/web-antd/src/views/member/user/detail/modules/balance-list.vue @@ -4,6 +4,7 @@ import type { WalletTransactionApi } from '#/api/pay/wallet/transaction'; import { useVbenVxeGrid } from '#/adapter/vxe-table'; import { getTransactionPage } from '#/api/pay/wallet/transaction'; +import { useTransactionGridColumns } from '#/views/pay/wallet/balance/data'; const props = defineProps<{ walletId: number | undefined; @@ -11,36 +12,7 @@ const props = defineProps<{ const [Grid] = useVbenVxeGrid({ gridOptions: { - columns: [ - { - field: 'id', - title: '编号', - minWidth: 100, - }, - { - field: 'title', - title: '关联业务标题', - minWidth: 200, - }, - { - field: 'price', - title: '交易金额', - minWidth: 120, - formatter: 'formatFenToYuanAmount', - }, - { - field: 'balance', - title: '钱包余额', - minWidth: 120, - formatter: 'formatFenToYuanAmount', - }, - { - field: 'createTime', - title: '交易时间', - minWidth: 180, - formatter: 'formatDateTime', - }, - ], + columns: useTransactionGridColumns(), keepSource: true, proxyConfig: { ajax: { diff --git a/apps/web-antd/src/views/member/user/detail/modules/experience-record-list.vue b/apps/web-antd/src/views/member/user/detail/modules/experience-record-list.vue index 9c9674266..770bdef76 100644 --- a/apps/web-antd/src/views/member/user/detail/modules/experience-record-list.vue +++ b/apps/web-antd/src/views/member/user/detail/modules/experience-record-list.vue @@ -1,5 +1,6 @@ diff --git a/apps/web-antd/src/views/member/user/detail/modules/point-list.vue b/apps/web-antd/src/views/member/user/detail/modules/point-list.vue index 77e698eb9..40ef48271 100644 --- a/apps/web-antd/src/views/member/user/detail/modules/point-list.vue +++ b/apps/web-antd/src/views/member/user/detail/modules/point-list.vue @@ -2,54 +2,43 @@ import type { VxeTableGridOptions } from '#/adapter/vxe-table'; import type { MemberPointRecordApi } from '#/api/member/point/record'; -import { DICT_TYPE } from '@vben/constants'; -import { getDictOptions } from '@vben/hooks'; - import { useVbenVxeGrid } from '#/adapter/vxe-table'; import { getRecordPage } from '#/api/member/point/record'; -import { getRangePickerDefaultProps } from '#/utils'; -import { useGridColumns } from '#/views/member/point/record/data'; +import { + useGridColumns as usePointGridColumns, + useGridFormSchema as usePointGridFormSchema, +} from '#/views/member/point/record/data'; const props = defineProps<{ userId: number; }>(); +/** 列表的搜索表单(过滤掉用户相关字段) */ +function useGridFormSchema() { + const excludeFields = new Set(['nickname']); + return usePointGridFormSchema().filter( + (item) => !excludeFields.has(item.fieldName), + ); +} + +/** 列表的字段(过滤掉用户相关字段) */ +function useGridColumns() { + const excludeFields = new Set(['nickname']); + return usePointGridColumns()?.filter( + (item) => item.field && !excludeFields.has(item.field), + ); +} + const [Grid] = useVbenVxeGrid({ formOptions: { - schema: [ - { - fieldName: 'bizType', - label: '业务类型', - component: 'Select', - componentProps: { - options: getDictOptions(DICT_TYPE.MEMBER_POINT_BIZ_TYPE, 'number'), - placeholder: '请选择业务类型', - allowClear: true, - }, - }, - { - fieldName: 'title', - label: '积分标题', - component: 'Input', - componentProps: { - placeholder: '请输入积分标题', - allowClear: true, - }, - }, - { - fieldName: 'createDate', - label: '获得时间', - component: 'RangePicker', - componentProps: { - ...getRangePickerDefaultProps(), - allowClear: true, - }, - }, - ], + schema: useGridFormSchema(), }, gridOptions: { columns: useGridColumns(), keepSource: true, + pagerConfig: { + pageSize: 10, + }, proxyConfig: { ajax: { query: async ({ page }, formValues) => { @@ -71,7 +60,6 @@ const [Grid] = useVbenVxeGrid({ search: true, }, } as VxeTableGridOptions, - separator: false, }); diff --git a/apps/web-antd/src/views/member/user/detail/modules/sign-list.vue b/apps/web-antd/src/views/member/user/detail/modules/sign-list.vue index 5b46aa29c..afede6537 100644 --- a/apps/web-antd/src/views/member/user/detail/modules/sign-list.vue +++ b/apps/web-antd/src/views/member/user/detail/modules/sign-list.vue @@ -4,35 +4,34 @@ import type { MemberSignInRecordApi } from '#/api/member/signin/record'; import { useVbenVxeGrid } from '#/adapter/vxe-table'; import { getSignInRecordPage } from '#/api/member/signin/record'; -import { getRangePickerDefaultProps } from '#/utils'; -import { useGridColumns } from '#/views/member/signin/record/data'; +import { + useGridColumns as useSignInGridColumns, + useGridFormSchema as useSignInGridFormSchema, +} from '#/views/member/signin/record/data'; const props = defineProps<{ userId: number; }>(); +/** 列表的搜索表单(过滤掉用户相关字段) */ +function useGridFormSchema() { + const excludeFields = new Set(['nickname']); + return useSignInGridFormSchema().filter( + (item) => !excludeFields.has(item.fieldName), + ); +} + +/** 列表的字段(过滤掉用户相关字段) */ +function useGridColumns() { + const excludeFields = new Set(['nickname']); + return useSignInGridColumns()?.filter( + (item) => item.field && !excludeFields.has(item.field), + ); +} + const [Grid] = useVbenVxeGrid({ formOptions: { - schema: [ - { - fieldName: 'day', - label: '签到天数', - component: 'Input', - componentProps: { - placeholder: '请输入签到天数', - allowClear: true, - }, - }, - { - fieldName: 'createTime', - label: '签到时间', - component: 'RangePicker', - componentProps: { - ...getRangePickerDefaultProps(), - allowClear: true, - }, - }, - ], + schema: useGridFormSchema(), }, gridOptions: { columns: useGridColumns(), @@ -58,7 +57,6 @@ const [Grid] = useVbenVxeGrid({ search: true, }, } as VxeTableGridOptions, - separator: false, }); diff --git a/apps/web-ele/src/views/member/user/detail/modules/balance-list.vue b/apps/web-ele/src/views/member/user/detail/modules/balance-list.vue index 76d805f19..86b148ce7 100644 --- a/apps/web-ele/src/views/member/user/detail/modules/balance-list.vue +++ b/apps/web-ele/src/views/member/user/detail/modules/balance-list.vue @@ -4,6 +4,7 @@ import type { WalletTransactionApi } from '#/api/pay/wallet/transaction'; import { useVbenVxeGrid } from '#/adapter/vxe-table'; import { getTransactionPage } from '#/api/pay/wallet/transaction'; +import { useTransactionGridColumns } from '#/views/pay/wallet/balance/data'; const props = defineProps<{ walletId: number | undefined; @@ -11,36 +12,7 @@ const props = defineProps<{ const [Grid] = useVbenVxeGrid({ gridOptions: { - columns: [ - { - field: 'id', - title: '编号', - minWidth: 100, - }, - { - field: 'title', - title: '关联业务标题', - minWidth: 200, - }, - { - field: 'price', - title: '交易金额', - minWidth: 120, - formatter: 'formatFenToYuanAmount', - }, - { - field: 'balance', - title: '钱包余额', - minWidth: 120, - formatter: 'formatFenToYuanAmount', - }, - { - field: 'createTime', - title: '交易时间', - minWidth: 180, - formatter: 'formatDateTime', - }, - ], + columns: useTransactionGridColumns(), keepSource: true, proxyConfig: { ajax: { diff --git a/apps/web-ele/src/views/member/user/detail/modules/experience-record-list.vue b/apps/web-ele/src/views/member/user/detail/modules/experience-record-list.vue index 9f038594f..cd3d71e40 100644 --- a/apps/web-ele/src/views/member/user/detail/modules/experience-record-list.vue +++ b/apps/web-ele/src/views/member/user/detail/modules/experience-record-list.vue @@ -1,5 +1,6 @@ diff --git a/apps/web-ele/src/views/member/user/detail/modules/point-list.vue b/apps/web-ele/src/views/member/user/detail/modules/point-list.vue index 9f782017e..40ef48271 100644 --- a/apps/web-ele/src/views/member/user/detail/modules/point-list.vue +++ b/apps/web-ele/src/views/member/user/detail/modules/point-list.vue @@ -4,44 +4,34 @@ import type { MemberPointRecordApi } from '#/api/member/point/record'; import { useVbenVxeGrid } from '#/adapter/vxe-table'; import { getRecordPage } from '#/api/member/point/record'; -import { DICT_TYPE } from '@vben/constants'; -import { getDictOptions } from '@vben/hooks'; - -import { getRangePickerDefaultProps } from '#/utils'; -import { useGridColumns } from '#/views/member/point/record/data'; +import { + useGridColumns as usePointGridColumns, + useGridFormSchema as usePointGridFormSchema, +} from '#/views/member/point/record/data'; const props = defineProps<{ userId: number; }>(); +/** 列表的搜索表单(过滤掉用户相关字段) */ +function useGridFormSchema() { + const excludeFields = new Set(['nickname']); + return usePointGridFormSchema().filter( + (item) => !excludeFields.has(item.fieldName), + ); +} + +/** 列表的字段(过滤掉用户相关字段) */ +function useGridColumns() { + const excludeFields = new Set(['nickname']); + return usePointGridColumns()?.filter( + (item) => item.field && !excludeFields.has(item.field), + ); +} + const [Grid] = useVbenVxeGrid({ formOptions: { - schema: [ - { - fieldName: 'bizType', - label: '业务类型', - component: 'Select', - componentProps: { - clearable: true, - placeholder: '请选择业务类型', - options: getDictOptions(DICT_TYPE.MEMBER_POINT_BIZ_TYPE, 'number'), - }, - }, - { - fieldName: 'title', - label: '积分标题', - component: 'Input', - }, - { - fieldName: 'createDate', - label: '获得时间', - component: 'RangePicker', - componentProps: { - ...getRangePickerDefaultProps(), - clearable: true, - }, - }, - ], + schema: useGridFormSchema(), }, gridOptions: { columns: useGridColumns(), @@ -63,13 +53,13 @@ const [Grid] = useVbenVxeGrid({ }, rowConfig: { keyField: 'id', + isHover: true, }, toolbarConfig: { refresh: true, search: true, }, } as VxeTableGridOptions, - separator: false, }); diff --git a/apps/web-ele/src/views/member/user/detail/modules/sign-list.vue b/apps/web-ele/src/views/member/user/detail/modules/sign-list.vue index 39e31190f..afede6537 100644 --- a/apps/web-ele/src/views/member/user/detail/modules/sign-list.vue +++ b/apps/web-ele/src/views/member/user/detail/modules/sign-list.vue @@ -4,35 +4,34 @@ import type { MemberSignInRecordApi } from '#/api/member/signin/record'; import { useVbenVxeGrid } from '#/adapter/vxe-table'; import { getSignInRecordPage } from '#/api/member/signin/record'; -import { getRangePickerDefaultProps } from '#/utils'; -import { useGridColumns } from '#/views/member/signin/record/data'; +import { + useGridColumns as useSignInGridColumns, + useGridFormSchema as useSignInGridFormSchema, +} from '#/views/member/signin/record/data'; const props = defineProps<{ userId: number; }>(); +/** 列表的搜索表单(过滤掉用户相关字段) */ +function useGridFormSchema() { + const excludeFields = new Set(['nickname']); + return useSignInGridFormSchema().filter( + (item) => !excludeFields.has(item.fieldName), + ); +} + +/** 列表的字段(过滤掉用户相关字段) */ +function useGridColumns() { + const excludeFields = new Set(['nickname']); + return useSignInGridColumns()?.filter( + (item) => item.field && !excludeFields.has(item.field), + ); +} + const [Grid] = useVbenVxeGrid({ formOptions: { - schema: [ - { - fieldName: 'day', - label: '签到天数', - component: 'Input', - componentProps: { - placeholder: '请输入签到天数', - clearable: true, - }, - }, - { - fieldName: 'createTime', - label: '签到时间', - component: 'RangePicker', - componentProps: { - ...getRangePickerDefaultProps(), - clearable: true, - }, - }, - ], + schema: useGridFormSchema(), }, gridOptions: { columns: useGridColumns(), @@ -58,7 +57,6 @@ const [Grid] = useVbenVxeGrid({ search: true, }, } as VxeTableGridOptions, - separator: false, });