From fb4dd70a028261967c598df252cf6518d9994f79 Mon Sep 17 00:00:00 2001 From: xingyu4j Date: Sat, 26 Apr 2025 16:41:58 +0800 Subject: [PATCH 01/56] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E6=95=88=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/system/tenantPackage/index.vue | 1 + .../system/tenantPackage/modules/form.vue | 26 +++++++++---------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/apps/web-antd/src/views/system/tenantPackage/index.vue b/apps/web-antd/src/views/system/tenantPackage/index.vue index 8999a418..988f712a 100644 --- a/apps/web-antd/src/views/system/tenantPackage/index.vue +++ b/apps/web-antd/src/views/system/tenantPackage/index.vue @@ -6,6 +6,7 @@ import type { import type { SystemTenantPackageApi } from '#/api/system/tenant-package'; import { Page, useVbenModal } from '@vben/common-ui'; +import { Plus } from '@vben/icons'; import { Button, message } from 'ant-design-vue'; diff --git a/apps/web-antd/src/views/system/tenantPackage/modules/form.vue b/apps/web-antd/src/views/system/tenantPackage/modules/form.vue index 2b437f01..16076b86 100644 --- a/apps/web-antd/src/views/system/tenantPackage/modules/form.vue +++ b/apps/web-antd/src/views/system/tenantPackage/modules/form.vue @@ -127,21 +127,21 @@ function getAllNodeIds(nodes: any[], ids: number[] = []): number[] { diff --git a/apps/web-antd/src/views/bpm/oa/leave/index.vue b/apps/web-antd/src/views/bpm/oa/leave/index.vue index 249ffd90..c35b0c4a 100644 --- a/apps/web-antd/src/views/bpm/oa/leave/index.vue +++ b/apps/web-antd/src/views/bpm/oa/leave/index.vue @@ -1,18 +1,34 @@ \ No newline at end of file + diff --git a/apps/web-antd/src/views/bpm/processExpression/index.vue b/apps/web-antd/src/views/bpm/processExpression/index.vue index bd3f4e00..80bf15bf 100644 --- a/apps/web-antd/src/views/bpm/processExpression/index.vue +++ b/apps/web-antd/src/views/bpm/processExpression/index.vue @@ -1,18 +1,31 @@ \ No newline at end of file + diff --git a/apps/web-antd/src/views/bpm/processInstance/index.vue b/apps/web-antd/src/views/bpm/processInstance/index.vue index 5386849f..bf472bc1 100644 --- a/apps/web-antd/src/views/bpm/processInstance/index.vue +++ b/apps/web-antd/src/views/bpm/processInstance/index.vue @@ -1,18 +1,34 @@ \ No newline at end of file + diff --git a/apps/web-antd/src/views/bpm/processInstance/manager/index.vue b/apps/web-antd/src/views/bpm/processInstance/manager/index.vue index 619f0d93..9dd48e7c 100644 --- a/apps/web-antd/src/views/bpm/processInstance/manager/index.vue +++ b/apps/web-antd/src/views/bpm/processInstance/manager/index.vue @@ -1,18 +1,31 @@ \ No newline at end of file + diff --git a/apps/web-antd/src/views/bpm/processListener/index.vue b/apps/web-antd/src/views/bpm/processListener/index.vue index 5556b0f4..6e88768d 100644 --- a/apps/web-antd/src/views/bpm/processListener/index.vue +++ b/apps/web-antd/src/views/bpm/processListener/index.vue @@ -1,18 +1,34 @@ \ No newline at end of file + diff --git a/apps/web-antd/src/views/bpm/task/copy/index.vue b/apps/web-antd/src/views/bpm/task/copy/index.vue index b26b7d8e..3f5e2b5e 100644 --- a/apps/web-antd/src/views/bpm/task/copy/index.vue +++ b/apps/web-antd/src/views/bpm/task/copy/index.vue @@ -1,18 +1,34 @@ \ No newline at end of file + diff --git a/apps/web-antd/src/views/bpm/task/done/index.vue b/apps/web-antd/src/views/bpm/task/done/index.vue index b23eef1e..bd5ffef0 100644 --- a/apps/web-antd/src/views/bpm/task/done/index.vue +++ b/apps/web-antd/src/views/bpm/task/done/index.vue @@ -1,21 +1,40 @@ \ No newline at end of file + diff --git a/apps/web-antd/src/views/bpm/task/manager/index.vue b/apps/web-antd/src/views/bpm/task/manager/index.vue index d564ebbd..0da6999b 100644 --- a/apps/web-antd/src/views/bpm/task/manager/index.vue +++ b/apps/web-antd/src/views/bpm/task/manager/index.vue @@ -1,18 +1,31 @@ \ No newline at end of file + diff --git a/apps/web-antd/src/views/bpm/task/todo/index.vue b/apps/web-antd/src/views/bpm/task/todo/index.vue index 976ddc01..9829b2ee 100644 --- a/apps/web-antd/src/views/bpm/task/todo/index.vue +++ b/apps/web-antd/src/views/bpm/task/todo/index.vue @@ -1,21 +1,40 @@ \ No newline at end of file + From 3e6d9cb1cdca9af643baaee68192a4a71c300947 Mon Sep 17 00:00:00 2001 From: xingyu4j Date: Mon, 28 Apr 2025 11:42:33 +0800 Subject: [PATCH 18/56] feat: add useVbenForm common config class --- apps/web-antd/src/views/bpm/category/data.ts | 1 - apps/web-antd/src/views/infra/config/modules/form.vue | 7 +++++++ .../src/views/infra/dataSourceConfig/modules/form.vue | 7 +++++++ .../src/views/infra/demo/demo01/modules/form.vue | 7 +++++++ apps/web-antd/src/views/infra/demo/demo02/data.ts | 1 - .../src/views/infra/demo/demo02/modules/form.vue | 7 +++++++ .../demo/demo03/erp/modules/demo03-course-form.vue | 7 +++++++ .../demo/demo03/erp/modules/demo03-grade-form.vue | 7 +++++++ .../src/views/infra/demo/demo03/erp/modules/form.vue | 7 +++++++ .../views/infra/demo/demo03/inner/modules/form.vue | 7 +++++++ .../views/infra/demo/demo03/normal/modules/form.vue | 7 +++++++ apps/web-antd/src/views/infra/file/modules/form.vue | 11 ++++++++--- apps/web-antd/src/views/infra/fileConfig/data.ts | 2 -- .../src/views/infra/fileConfig/modules/form.vue | 6 +++++- apps/web-antd/src/views/infra/job/data.ts | 3 --- apps/web-antd/src/views/infra/job/modules/form.vue | 10 +++++++--- apps/web-antd/src/views/system/dict/data.ts | 1 - apps/web-antd/src/views/system/menu/data.ts | 1 - .../web-antd/src/views/system/notify/template/data.ts | 1 - apps/web-antd/src/views/system/role/modules/form.vue | 2 ++ 20 files changed, 85 insertions(+), 17 deletions(-) diff --git a/apps/web-antd/src/views/bpm/category/data.ts b/apps/web-antd/src/views/bpm/category/data.ts index cc7b6504..179eefc0 100644 --- a/apps/web-antd/src/views/bpm/category/data.ts +++ b/apps/web-antd/src/views/bpm/category/data.ts @@ -63,7 +63,6 @@ export function useFormSchema(): VbenFormSchema[] { component: 'InputNumber', componentProps: { min: 0, - class: 'w-full', controlsPosition: 'right', placeholder: '请输入分类排序', }, diff --git a/apps/web-antd/src/views/infra/config/modules/form.vue b/apps/web-antd/src/views/infra/config/modules/form.vue index e52d9192..389648c6 100644 --- a/apps/web-antd/src/views/infra/config/modules/form.vue +++ b/apps/web-antd/src/views/infra/config/modules/form.vue @@ -22,6 +22,13 @@ const getTitle = computed(() => { }); const [Form, formApi] = useVbenForm({ + commonConfig: { + componentProps: { + class: 'w-full', + }, + formItemClass: 'col-span-2', + labelWidth: 80, + }, layout: 'horizontal', schema: useFormSchema(), showDefaultActions: false, diff --git a/apps/web-antd/src/views/infra/dataSourceConfig/modules/form.vue b/apps/web-antd/src/views/infra/dataSourceConfig/modules/form.vue index 4439400a..ab66b86b 100644 --- a/apps/web-antd/src/views/infra/dataSourceConfig/modules/form.vue +++ b/apps/web-antd/src/views/infra/dataSourceConfig/modules/form.vue @@ -26,6 +26,13 @@ const getTitle = computed(() => { }); const [Form, formApi] = useVbenForm({ + commonConfig: { + componentProps: { + class: 'w-full', + }, + formItemClass: 'col-span-2', + labelWidth: 80, + }, layout: 'horizontal', schema: useFormSchema(), showDefaultActions: false, diff --git a/apps/web-antd/src/views/infra/demo/demo01/modules/form.vue b/apps/web-antd/src/views/infra/demo/demo01/modules/form.vue index 452fc704..b9b5ea2d 100644 --- a/apps/web-antd/src/views/infra/demo/demo01/modules/form.vue +++ b/apps/web-antd/src/views/infra/demo/demo01/modules/form.vue @@ -26,6 +26,13 @@ const getTitle = computed(() => { }); const [Form, formApi] = useVbenForm({ + commonConfig: { + componentProps: { + class: 'w-full', + }, + formItemClass: 'col-span-2', + labelWidth: 80, + }, layout: 'horizontal', schema: useFormSchema(), showDefaultActions: false, diff --git a/apps/web-antd/src/views/infra/demo/demo02/data.ts b/apps/web-antd/src/views/infra/demo/demo02/data.ts index 73aaec1a..adf23bce 100644 --- a/apps/web-antd/src/views/infra/demo/demo02/data.ts +++ b/apps/web-antd/src/views/infra/demo/demo02/data.ts @@ -36,7 +36,6 @@ export function useFormSchema(): VbenFormSchema[] { }); return handleTree(data); }, - class: 'w-full', labelField: 'name', valueField: 'id', childrenField: 'children', diff --git a/apps/web-antd/src/views/infra/demo/demo02/modules/form.vue b/apps/web-antd/src/views/infra/demo/demo02/modules/form.vue index f3d5114b..3d38f5ba 100644 --- a/apps/web-antd/src/views/infra/demo/demo02/modules/form.vue +++ b/apps/web-antd/src/views/infra/demo/demo02/modules/form.vue @@ -31,6 +31,13 @@ const getTitle = computed(() => { }); const [Form, formApi] = useVbenForm({ + commonConfig: { + componentProps: { + class: 'w-full', + }, + formItemClass: 'col-span-2', + labelWidth: 80, + }, layout: 'horizontal', schema: useFormSchema(), showDefaultActions: false, diff --git a/apps/web-antd/src/views/infra/demo/demo03/erp/modules/demo03-course-form.vue b/apps/web-antd/src/views/infra/demo/demo03/erp/modules/demo03-course-form.vue index 2d208959..d98f4fa1 100644 --- a/apps/web-antd/src/views/infra/demo/demo03/erp/modules/demo03-course-form.vue +++ b/apps/web-antd/src/views/infra/demo/demo03/erp/modules/demo03-course-form.vue @@ -26,6 +26,13 @@ const getTitle = computed(() => { }); const [Form, formApi] = useVbenForm({ + commonConfig: { + componentProps: { + class: 'w-full', + }, + formItemClass: 'col-span-2', + labelWidth: 80, + }, layout: 'horizontal', schema: useDemo03CourseFormSchema(), showDefaultActions: false, diff --git a/apps/web-antd/src/views/infra/demo/demo03/erp/modules/demo03-grade-form.vue b/apps/web-antd/src/views/infra/demo/demo03/erp/modules/demo03-grade-form.vue index 153daadc..4b134e20 100644 --- a/apps/web-antd/src/views/infra/demo/demo03/erp/modules/demo03-grade-form.vue +++ b/apps/web-antd/src/views/infra/demo/demo03/erp/modules/demo03-grade-form.vue @@ -26,6 +26,13 @@ const getTitle = computed(() => { }); const [Form, formApi] = useVbenForm({ + commonConfig: { + componentProps: { + class: 'w-full', + }, + formItemClass: 'col-span-2', + labelWidth: 80, + }, layout: 'horizontal', schema: useDemo03GradeFormSchema(), showDefaultActions: false, diff --git a/apps/web-antd/src/views/infra/demo/demo03/erp/modules/form.vue b/apps/web-antd/src/views/infra/demo/demo03/erp/modules/form.vue index f7201765..8fee6aa2 100644 --- a/apps/web-antd/src/views/infra/demo/demo03/erp/modules/form.vue +++ b/apps/web-antd/src/views/infra/demo/demo03/erp/modules/form.vue @@ -26,6 +26,13 @@ const getTitle = computed(() => { }); const [Form, formApi] = useVbenForm({ + commonConfig: { + componentProps: { + class: 'w-full', + }, + formItemClass: 'col-span-2', + labelWidth: 80, + }, layout: 'horizontal', schema: useFormSchema(), showDefaultActions: false, diff --git a/apps/web-antd/src/views/infra/demo/demo03/inner/modules/form.vue b/apps/web-antd/src/views/infra/demo/demo03/inner/modules/form.vue index c834daee..1c5e6509 100644 --- a/apps/web-antd/src/views/infra/demo/demo03/inner/modules/form.vue +++ b/apps/web-antd/src/views/infra/demo/demo03/inner/modules/form.vue @@ -33,6 +33,13 @@ const demo03CourseFormRef = ref>(); const demo03GradeFormRef = ref>(); const [Form, formApi] = useVbenForm({ + commonConfig: { + componentProps: { + class: 'w-full', + }, + formItemClass: 'col-span-2', + labelWidth: 80, + }, layout: 'horizontal', schema: useFormSchema(), showDefaultActions: false, diff --git a/apps/web-antd/src/views/infra/demo/demo03/normal/modules/form.vue b/apps/web-antd/src/views/infra/demo/demo03/normal/modules/form.vue index 0eaa4ab6..52022688 100644 --- a/apps/web-antd/src/views/infra/demo/demo03/normal/modules/form.vue +++ b/apps/web-antd/src/views/infra/demo/demo03/normal/modules/form.vue @@ -33,6 +33,13 @@ const demo03CourseFormRef = ref>(); const demo03GradeFormRef = ref>(); const [Form, formApi] = useVbenForm({ + commonConfig: { + componentProps: { + class: 'w-full', + }, + formItemClass: 'col-span-2', + labelWidth: 80, + }, layout: 'horizontal', schema: useFormSchema(), showDefaultActions: false, diff --git a/apps/web-antd/src/views/infra/file/modules/form.vue b/apps/web-antd/src/views/infra/file/modules/form.vue index 42992ed3..9eb497e4 100644 --- a/apps/web-antd/src/views/infra/file/modules/form.vue +++ b/apps/web-antd/src/views/infra/file/modules/form.vue @@ -14,12 +14,17 @@ import { useFormSchema } from '../data'; const emit = defineEmits(['success']); const [Form, formApi] = useVbenForm({ + commonConfig: { + componentProps: { + class: 'w-full', + }, + formItemClass: 'col-span-2', + labelWidth: 80, + hideLabel: true, + }, layout: 'horizontal', schema: useFormSchema().map((item) => ({ ...item, label: '' })), // 去除label showDefaultActions: false, - commonConfig: { - hideLabel: true, - }, }); const [Modal, modalApi] = useVbenModal({ diff --git a/apps/web-antd/src/views/infra/fileConfig/data.ts b/apps/web-antd/src/views/infra/fileConfig/data.ts index bdf80d62..fec4f28f 100644 --- a/apps/web-antd/src/views/infra/fileConfig/data.ts +++ b/apps/web-antd/src/views/infra/fileConfig/data.ts @@ -36,7 +36,6 @@ export function useFormSchema(): VbenFormSchema[] { componentProps: { options: getDictOptions(DICT_TYPE.INFRA_FILE_STORAGE, 'number'), placeholder: '请选择存储器', - class: 'w-full', }, rules: 'required', dependencies: { @@ -87,7 +86,6 @@ export function useFormSchema(): VbenFormSchema[] { component: 'InputNumber', componentProps: { min: 0, - class: 'w-full', controlsPosition: 'right', placeholder: '请输入主机端口', }, diff --git a/apps/web-antd/src/views/infra/fileConfig/modules/form.vue b/apps/web-antd/src/views/infra/fileConfig/modules/form.vue index 59776c67..a7393833 100644 --- a/apps/web-antd/src/views/infra/fileConfig/modules/form.vue +++ b/apps/web-antd/src/views/infra/fileConfig/modules/form.vue @@ -27,7 +27,11 @@ const getTitle = computed(() => { const [Form, formApi] = useVbenForm({ commonConfig: { - labelWidth: 120, + componentProps: { + class: 'w-full', + }, + formItemClass: 'col-span-2', + labelWidth: 80, }, layout: 'horizontal', schema: useFormSchema(), diff --git a/apps/web-antd/src/views/infra/job/data.ts b/apps/web-antd/src/views/infra/job/data.ts index 4be98ecb..953f7ba9 100644 --- a/apps/web-antd/src/views/infra/job/data.ts +++ b/apps/web-antd/src/views/infra/job/data.ts @@ -65,7 +65,6 @@ export function useFormSchema(): VbenFormSchema[] { componentProps: { placeholder: '请输入重试次数。设置为 0 时,不进行重试', min: 0, - class: 'w-full', }, rules: 'required', }, @@ -76,7 +75,6 @@ export function useFormSchema(): VbenFormSchema[] { componentProps: { placeholder: '请输入重试间隔,单位:毫秒。设置为 0 时,无需间隔', min: 0, - class: 'w-full', }, rules: 'required', }, @@ -87,7 +85,6 @@ export function useFormSchema(): VbenFormSchema[] { componentProps: { placeholder: '请输入监控超时时间,单位:毫秒', min: 0, - class: 'w-full', }, }, ]; diff --git a/apps/web-antd/src/views/infra/job/modules/form.vue b/apps/web-antd/src/views/infra/job/modules/form.vue index 5c81d9f7..31653a8e 100644 --- a/apps/web-antd/src/views/infra/job/modules/form.vue +++ b/apps/web-antd/src/views/infra/job/modules/form.vue @@ -22,12 +22,16 @@ const getTitle = computed(() => { }); const [Form, formApi] = useVbenForm({ + commonConfig: { + componentProps: { + class: 'w-full', + }, + formItemClass: 'col-span-2', + labelWidth: 80, + }, layout: 'horizontal', schema: useFormSchema(), showDefaultActions: false, - commonConfig: { - labelWidth: 140, - }, }); const [Modal, modalApi] = useVbenModal({ diff --git a/apps/web-antd/src/views/system/dict/data.ts b/apps/web-antd/src/views/system/dict/data.ts index cbbc7f27..78f0ee52 100644 --- a/apps/web-antd/src/views/system/dict/data.ts +++ b/apps/web-antd/src/views/system/dict/data.ts @@ -204,7 +204,6 @@ export function useDataFormSchema(): VbenFormSchema[] { return { api: getSimpleDictTypeList, placeholder: '请输入字典类型', - class: 'w-full', labelField: 'name', valueField: 'type', disabled: !!values.id, diff --git a/apps/web-antd/src/views/system/menu/data.ts b/apps/web-antd/src/views/system/menu/data.ts index 0821ddf9..6b0336e6 100644 --- a/apps/web-antd/src/views/system/menu/data.ts +++ b/apps/web-antd/src/views/system/menu/data.ts @@ -166,7 +166,6 @@ export function useFormSchema(): VbenFormSchema[] { component: 'AutoComplete', componentProps: { allowClear: true, - class: 'w-full', filterOption(input: string, option: { value: string }) { return option.value.toLowerCase().includes(input.toLowerCase()); }, diff --git a/apps/web-antd/src/views/system/notify/template/data.ts b/apps/web-antd/src/views/system/notify/template/data.ts index 123c5fb5..0a347d21 100644 --- a/apps/web-antd/src/views/system/notify/template/data.ts +++ b/apps/web-antd/src/views/system/notify/template/data.ts @@ -200,7 +200,6 @@ export function useSendNotifyFormSchema(): VbenFormSchema[] { component: 'ApiSelect', componentProps: { api: getSimpleUserList, - class: 'w-full', labelField: 'nickname', valueField: 'id', placeholder: '请选择接收人', diff --git a/apps/web-antd/src/views/system/role/modules/form.vue b/apps/web-antd/src/views/system/role/modules/form.vue index ae24bd6f..30c16984 100644 --- a/apps/web-antd/src/views/system/role/modules/form.vue +++ b/apps/web-antd/src/views/system/role/modules/form.vue @@ -26,6 +26,8 @@ const [Form, formApi] = useVbenForm({ componentProps: { class: 'w-full', }, + formItemClass: 'col-span-2', + labelWidth: 80, }, layout: 'horizontal', schema: useFormSchema(), From afd22aefbb1a8eb2b9bd52493574ac3c7be3ab1f Mon Sep 17 00:00:00 2001 From: xingyu4j Date: Mon, 28 Apr 2025 15:04:01 +0800 Subject: [PATCH 19/56] =?UTF-8?q?fix:=20VxeTableGridOptions=20=E4=BB=8E=20?= =?UTF-8?q?#/adapter/vxe-table=20=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web-antd/src/views/infra/demo/demo01/data.ts | 4 +--- apps/web-antd/src/views/infra/demo/demo02/data.ts | 4 +--- apps/web-antd/src/views/infra/demo/demo03/erp/data.ts | 4 +--- apps/web-antd/src/views/infra/demo/demo03/inner/data.ts | 4 +--- apps/web-antd/src/views/infra/demo/demo03/normal/data.ts | 4 +--- apps/web-antd/src/views/system/area/data.ts | 3 +-- apps/web-antd/src/views/system/dept/data.ts | 4 +--- playground/src/views/system/dept/data.ts | 4 +--- 8 files changed, 8 insertions(+), 23 deletions(-) diff --git a/apps/web-antd/src/views/infra/demo/demo01/data.ts b/apps/web-antd/src/views/infra/demo/demo01/data.ts index 3033dec4..fd6b2151 100644 --- a/apps/web-antd/src/views/infra/demo/demo01/data.ts +++ b/apps/web-antd/src/views/infra/demo/demo01/data.ts @@ -1,7 +1,5 @@ -import type { VxeTableGridOptions } from '@vben/plugins/vxe-table'; - import type { VbenFormSchema } from '#/adapter/form'; -import type { OnActionClickFn } from '#/adapter/vxe-table'; +import type { OnActionClickFn, VxeTableGridOptions } from '#/adapter/vxe-table'; import type { Demo01ContactApi } from '#/api/infra/demo/demo01'; import { useAccess } from '@vben/access'; diff --git a/apps/web-antd/src/views/infra/demo/demo02/data.ts b/apps/web-antd/src/views/infra/demo/demo02/data.ts index adf23bce..c5e6b211 100644 --- a/apps/web-antd/src/views/infra/demo/demo02/data.ts +++ b/apps/web-antd/src/views/infra/demo/demo02/data.ts @@ -1,7 +1,5 @@ -import type { VxeTableGridOptions } from '@vben/plugins/vxe-table'; - import type { VbenFormSchema } from '#/adapter/form'; -import type { OnActionClickFn } from '#/adapter/vxe-table'; +import type { OnActionClickFn, VxeTableGridOptions } from '#/adapter/vxe-table'; import type { Demo02CategoryApi } from '#/api/infra/demo/demo02'; import { useAccess } from '@vben/access'; diff --git a/apps/web-antd/src/views/infra/demo/demo03/erp/data.ts b/apps/web-antd/src/views/infra/demo/demo03/erp/data.ts index 897d2813..22baa000 100644 --- a/apps/web-antd/src/views/infra/demo/demo03/erp/data.ts +++ b/apps/web-antd/src/views/infra/demo/demo03/erp/data.ts @@ -1,7 +1,5 @@ -import type { VxeTableGridOptions } from '@vben/plugins/vxe-table'; - import type { VbenFormSchema } from '#/adapter/form'; -import type { OnActionClickFn } from '#/adapter/vxe-table'; +import type { OnActionClickFn, VxeTableGridOptions } from '#/adapter/vxe-table'; import type { Demo03StudentApi } from '#/api/infra/demo/demo03/erp'; import { useAccess } from '@vben/access'; diff --git a/apps/web-antd/src/views/infra/demo/demo03/inner/data.ts b/apps/web-antd/src/views/infra/demo/demo03/inner/data.ts index a40a4f5f..53bad6dc 100644 --- a/apps/web-antd/src/views/infra/demo/demo03/inner/data.ts +++ b/apps/web-antd/src/views/infra/demo/demo03/inner/data.ts @@ -1,7 +1,5 @@ -import type { VxeTableGridOptions } from '@vben/plugins/vxe-table'; - import type { VbenFormSchema } from '#/adapter/form'; -import type { OnActionClickFn } from '#/adapter/vxe-table'; +import type { OnActionClickFn, VxeTableGridOptions } from '#/adapter/vxe-table'; import type { Demo03StudentApi } from '#/api/infra/demo/demo03/inner'; import { useAccess } from '@vben/access'; diff --git a/apps/web-antd/src/views/infra/demo/demo03/normal/data.ts b/apps/web-antd/src/views/infra/demo/demo03/normal/data.ts index ee65fee1..0134bca9 100644 --- a/apps/web-antd/src/views/infra/demo/demo03/normal/data.ts +++ b/apps/web-antd/src/views/infra/demo/demo03/normal/data.ts @@ -1,7 +1,5 @@ -import type { VxeTableGridOptions } from '@vben/plugins/vxe-table'; - import type { VbenFormSchema } from '#/adapter/form'; -import type { OnActionClickFn } from '#/adapter/vxe-table'; +import type { OnActionClickFn, VxeTableGridOptions } from '#/adapter/vxe-table'; import type { Demo03StudentApi } from '#/api/infra/demo/demo03/normal'; import { useAccess } from '@vben/access'; diff --git a/apps/web-antd/src/views/system/area/data.ts b/apps/web-antd/src/views/system/area/data.ts index 46aceccd..48339f19 100644 --- a/apps/web-antd/src/views/system/area/data.ts +++ b/apps/web-antd/src/views/system/area/data.ts @@ -1,6 +1,5 @@ -import type { VxeTableGridOptions } from '@vben/plugins/vxe-table'; - import type { VbenFormSchema } from '#/adapter/form'; +import type { VxeTableGridOptions } from '#/adapter/vxe-table'; import type { SystemAreaApi } from '#/api/system/area'; /** 查询 IP 的表单 */ diff --git a/apps/web-antd/src/views/system/dept/data.ts b/apps/web-antd/src/views/system/dept/data.ts index 5010d14b..f868c625 100644 --- a/apps/web-antd/src/views/system/dept/data.ts +++ b/apps/web-antd/src/views/system/dept/data.ts @@ -1,7 +1,5 @@ -import type { VxeTableGridOptions } from '@vben/plugins/vxe-table'; - import type { VbenFormSchema } from '#/adapter/form'; -import type { OnActionClickFn } from '#/adapter/vxe-table'; +import type { OnActionClickFn, VxeTableGridOptions } from '#/adapter/vxe-table'; import type { SystemDeptApi } from '#/api/system/dept'; import { useAccess } from '@vben/access'; diff --git a/playground/src/views/system/dept/data.ts b/playground/src/views/system/dept/data.ts index 48773625..8c3e557a 100644 --- a/playground/src/views/system/dept/data.ts +++ b/playground/src/views/system/dept/data.ts @@ -1,7 +1,5 @@ -import type { VxeTableGridOptions } from '@vben/plugins/vxe-table'; - import type { VbenFormSchema } from '#/adapter/form'; -import type { OnActionClickFn } from '#/adapter/vxe-table'; +import type { OnActionClickFn, VxeTableGridOptions } from '#/adapter/vxe-table'; import type { SystemDeptApi } from '#/api/system/dept'; import { z } from '#/adapter/form'; From c2af4fc83adb0f695f8cbad2d197505b3d26aa0f Mon Sep 17 00:00:00 2001 From: xingyu4j Date: Mon, 28 Apr 2025 15:05:19 +0800 Subject: [PATCH 20/56] chore: cspell --- .vscode/settings.json | 13 +------------ cspell.json | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index da724dd1..8b76b276 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -223,16 +223,5 @@ "commentTranslate.multiLineMerge": true, "vue.server.hybridMode": true, "typescript.tsdk": "node_modules/typescript/lib", - "oxc.enable": false, - "cSpell.words": [ - "archiver", - "axios", - "dotenv", - "isequal", - "jspm", - "napi", - "nolebase", - "rollup", - "vitest" - ] + "oxc.enable": false } diff --git a/cspell.json b/cspell.json index 89545b43..ea6130a7 100644 --- a/cspell.json +++ b/cspell.json @@ -52,7 +52,21 @@ "vitepress", "vnode", "vueuse", - "yxxx" + "yxxx", + "archiver", + "axios", + "cropperjs", + "dotenv", + "gitee", + "isequal", + "jspm", + "napi", + "nolebase", + "rollup", + "Tinymce", + "vitest", + "xingyu", + "yudao" ], "ignorePaths": [ "**/node_modules/**", From f4fe36e9d04f7e51f22d7fe9fcefbcc875cab4fc Mon Sep 17 00:00:00 2001 From: xingyu4j Date: Mon, 28 Apr 2025 15:06:12 +0800 Subject: [PATCH 21/56] chore: package lint --- apps/web-antd/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/web-antd/package.json b/apps/web-antd/package.json index 99188b2f..0e558986 100644 --- a/apps/web-antd/package.json +++ b/apps/web-antd/package.json @@ -45,7 +45,6 @@ "@vben/utils": "workspace:*", "@vueuse/core": "catalog:", "ant-design-vue": "catalog:", - "vxe-table": "catalog:", "cropperjs": "catalog:", "crypto-js": "catalog:", "dayjs": "catalog:", @@ -53,7 +52,8 @@ "pinia": "catalog:", "vue": "catalog:", "vue-dompurify-html": "catalog:", - "vue-router": "catalog:" + "vue-router": "catalog:", + "vxe-table": "catalog:" }, "devDependencies": { "@types/crypto-js": "catalog:" From 023a6ee29a5e5908841dd5fac4ce93cf6adc7614 Mon Sep 17 00:00:00 2001 From: xingyu4j Date: Mon, 28 Apr 2025 16:27:34 +0800 Subject: [PATCH 22/56] feat: pay api --- apps/web-antd/src/api/pay/app/index.ts | 63 +++++++++ apps/web-antd/src/api/pay/channel/index.ts | 54 ++++++++ apps/web-antd/src/api/pay/demo/index.ts | 38 ++++++ .../src/api/pay/demo/transfer/index.ts | 29 ++++ apps/web-antd/src/api/pay/notify/index.ts | 15 ++ apps/web-antd/src/api/pay/order/index.ts | 118 ++++++++++++++++ apps/web-antd/src/api/pay/refund/index.ts | 128 ++++++++++++++++++ apps/web-antd/src/api/pay/transfer/index.ts | 58 ++++++++ .../src/api/pay/wallet/balance/index.ts | 53 ++++++++ .../api/pay/wallet/rechargePackage/index.ts | 46 +++++++ .../src/api/pay/wallet/transaction/index.ts | 24 ++++ 11 files changed, 626 insertions(+) create mode 100644 apps/web-antd/src/api/pay/app/index.ts create mode 100644 apps/web-antd/src/api/pay/channel/index.ts create mode 100644 apps/web-antd/src/api/pay/demo/index.ts create mode 100644 apps/web-antd/src/api/pay/demo/transfer/index.ts create mode 100644 apps/web-antd/src/api/pay/notify/index.ts create mode 100644 apps/web-antd/src/api/pay/order/index.ts create mode 100644 apps/web-antd/src/api/pay/refund/index.ts create mode 100644 apps/web-antd/src/api/pay/transfer/index.ts create mode 100644 apps/web-antd/src/api/pay/wallet/balance/index.ts create mode 100644 apps/web-antd/src/api/pay/wallet/rechargePackage/index.ts create mode 100644 apps/web-antd/src/api/pay/wallet/transaction/index.ts diff --git a/apps/web-antd/src/api/pay/app/index.ts b/apps/web-antd/src/api/pay/app/index.ts new file mode 100644 index 00000000..1eae3442 --- /dev/null +++ b/apps/web-antd/src/api/pay/app/index.ts @@ -0,0 +1,63 @@ +import type { PageParam, PageResult } from '@vben/request'; + +import { requestClient } from '#/api/request'; + +export namespace PayAppApi { + /** 支付应用信息 */ + export interface App { + id?: number; + appKey: string; + name: string; + status: number; + remark: string; + payNotifyUrl: string; + refundNotifyUrl: string; + transferNotifyUrl: string; + merchantId: number; + merchantName: string; + createTime?: Date; + } + + /** 更新状态请求 */ + export interface UpdateStatusReq { + id: number; + status: number; + } +} + +/** 查询支付应用列表 */ +export function getAppPage(params: PageParam) { + return requestClient.get>('/pay/app/page', { + params, + }); +} + +/** 查询支付应用详情 */ +export function getApp(id: number) { + return requestClient.get(`/pay/app/get?id=${id}`); +} + +/** 新增支付应用 */ +export function createApp(data: PayAppApi.App) { + return requestClient.post('/pay/app/create', data); +} + +/** 修改支付应用 */ +export function updateApp(data: PayAppApi.App) { + return requestClient.put('/pay/app/update', data); +} + +/** 修改支付应用状态 */ +export function changeAppStatus(data: PayAppApi.UpdateStatusReq) { + return requestClient.put('/pay/app/update-status', data); +} + +/** 删除支付应用 */ +export function deleteApp(id: number) { + return requestClient.delete(`/pay/app/delete?id=${id}`); +} + +/** 获取支付应用列表 */ +export function getAppList() { + return requestClient.get('/pay/app/list'); +} diff --git a/apps/web-antd/src/api/pay/channel/index.ts b/apps/web-antd/src/api/pay/channel/index.ts new file mode 100644 index 00000000..99a16c05 --- /dev/null +++ b/apps/web-antd/src/api/pay/channel/index.ts @@ -0,0 +1,54 @@ +import type { PageParam, PageResult } from '@vben/request'; + +import { requestClient } from '#/api/request'; + +export namespace PayChannelApi { + /** 支付渠道信息 */ + export interface Channel { + id: number; + code: string; + config: string; + status: number; + remark: string; + feeRate: number; + appId: number; + createTime: Date; + } +} + +/** 查询支付渠道列表 */ +export function getChannelPage(params: PageParam) { + return requestClient.get>( + '/pay/channel/page', + { + params, + }, + ); +} + +/** 查询支付渠道详情 */ +export function getChannel(appId: string, code: string) { + return requestClient.get('/pay/channel/get', { + params: { appId, code }, + }); +} + +/** 新增支付渠道 */ +export function createChannel(data: PayChannelApi.Channel) { + return requestClient.post('/pay/channel/create', data); +} + +/** 修改支付渠道 */ +export function updateChannel(data: PayChannelApi.Channel) { + return requestClient.put('/pay/channel/update', data); +} + +/** 删除支付渠道 */ +export function deleteChannel(id: number) { + return requestClient.delete(`/pay/channel/delete?id=${id}`); +} + +/** 导出支付渠道 */ +export function exportChannel(params: PageParam) { + return requestClient.download('/pay/channel/export-excel', { params }); +} diff --git a/apps/web-antd/src/api/pay/demo/index.ts b/apps/web-antd/src/api/pay/demo/index.ts new file mode 100644 index 00000000..a0f3c688 --- /dev/null +++ b/apps/web-antd/src/api/pay/demo/index.ts @@ -0,0 +1,38 @@ +import type { PageParam, PageResult } from '@vben/request'; + +import { requestClient } from '#/api/request'; + +export namespace PayDemoApi { + /** 示例订单信息 */ + export interface DemoOrder { + spuId: number; + createTime: Date; + } +} + +/** 创建示例订单 */ +export function createDemoOrder(data: PayDemoApi.DemoOrder) { + return requestClient.post('/pay/demo-order/create', data); +} + +/** 获得示例订单 */ +export function getDemoOrder(id: number) { + return requestClient.get( + `/pay/demo-order/get?id=${id}`, + ); +} + +/** 获得示例订单分页 */ +export function getDemoOrderPage(params: PageParam) { + return requestClient.get>( + '/pay/demo-order/page', + { + params, + }, + ); +} + +/** 退款示例订单 */ +export function refundDemoOrder(id: number) { + return requestClient.put(`/pay/demo-order/refund?id=${id}`); +} diff --git a/apps/web-antd/src/api/pay/demo/transfer/index.ts b/apps/web-antd/src/api/pay/demo/transfer/index.ts new file mode 100644 index 00000000..e06dbec8 --- /dev/null +++ b/apps/web-antd/src/api/pay/demo/transfer/index.ts @@ -0,0 +1,29 @@ +import type { PageParam, PageResult } from '@vben/request'; + +import { requestClient } from '#/api/request'; + +export namespace PayDemoTransferApi { + /** 示例转账单信息 */ + export interface DemoTransfer { + price: number; + type: number; + userName: string; + alipayLogonId: string; + openid: string; + } +} + +/** 创建示例转账单 */ +export function createDemoTransfer(data: PayDemoTransferApi.DemoTransfer) { + return requestClient.post('/pay/demo-transfer/create', data); +} + +/** 获得示例转账单分页 */ +export function getDemoTransferPage(params: PageParam) { + return requestClient.get>( + '/pay/demo-transfer/page', + { + params, + }, + ); +} diff --git a/apps/web-antd/src/api/pay/notify/index.ts b/apps/web-antd/src/api/pay/notify/index.ts new file mode 100644 index 00000000..b0b916cc --- /dev/null +++ b/apps/web-antd/src/api/pay/notify/index.ts @@ -0,0 +1,15 @@ +import type { PageParam } from '@vben/request'; + +import { requestClient } from '#/api/request'; + +/** 获得支付通知明细 */ +export function getNotifyTaskDetail(id: number) { + return requestClient.get(`/pay/notify/get-detail?id=${id}`); +} + +/** 获得支付通知分页 */ +export function getNotifyTaskPage(params: PageParam) { + return requestClient.get('/pay/notify/page', { + params, + }); +} diff --git a/apps/web-antd/src/api/pay/order/index.ts b/apps/web-antd/src/api/pay/order/index.ts new file mode 100644 index 00000000..984a5d1f --- /dev/null +++ b/apps/web-antd/src/api/pay/order/index.ts @@ -0,0 +1,118 @@ +import type { PageParam, PageResult } from '@vben/request'; + +import { requestClient } from '#/api/request'; + +export namespace PayOrderApi { + /** 支付订单信息 */ + export interface Order { + id: number; + merchantId: number; + appId: number; + channelId: number; + channelCode: string; + merchantOrderId: string; + subject: string; + body: string; + notifyUrl: string; + notifyStatus: number; + amount: number; + channelFeeRate: number; + channelFeeAmount: number; + status: number; + userIp: string; + expireTime: Date; + successTime: Date; + notifyTime: Date; + successExtensionId: number; + refundStatus: number; + refundTimes: number; + refundAmount: number; + channelUserId: string; + channelOrderNo: string; + createTime: Date; + } + + /** 支付订单分页请求 */ + export interface OrderPageReqVO extends PageParam { + merchantId?: number; + appId?: number; + channelId?: number; + channelCode?: string; + merchantOrderId?: string; + subject?: string; + body?: string; + notifyUrl?: string; + notifyStatus?: number; + amount?: number; + channelFeeRate?: number; + channelFeeAmount?: number; + status?: number; + expireTime?: Date[]; + successTime?: Date[]; + notifyTime?: Date[]; + successExtensionId?: number; + refundStatus?: number; + refundTimes?: number; + channelUserId?: string; + channelOrderNo?: string; + createTime?: Date[]; + } + + /** 支付订单导出请求 */ + export interface OrderExportReqVO { + merchantId?: number; + appId?: number; + channelId?: number; + channelCode?: string; + merchantOrderId?: string; + subject?: string; + body?: string; + notifyUrl?: string; + notifyStatus?: number; + amount?: number; + channelFeeRate?: number; + channelFeeAmount?: number; + status?: number; + expireTime?: Date[]; + successTime?: Date[]; + notifyTime?: Date[]; + successExtensionId?: number; + refundStatus?: number; + refundTimes?: number; + channelUserId?: string; + channelOrderNo?: string; + createTime?: Date[]; + } +} + +/** 查询支付订单列表 */ +export function getOrderPage(params: PayOrderApi.OrderPageReqVO) { + return requestClient.get>('/pay/order/page', { + params, + }); +} + +/** 查询支付订单详情 */ +export function getOrder(id: number, sync?: boolean) { + return requestClient.get('/pay/order/get', { + params: { + id, + sync, + }, + }); +} + +/** 获得支付订单的明细 */ +export function getOrderDetail(id: number) { + return requestClient.get(`/pay/order/get-detail?id=${id}`); +} + +/** 提交支付订单 */ +export function submitOrder(data: any) { + return requestClient.post('/pay/order/submit', data); +} + +/** 导出支付订单 */ +export function exportOrder(params: PayOrderApi.OrderExportReqVO) { + return requestClient.download('/pay/order/export-excel', { params }); +} diff --git a/apps/web-antd/src/api/pay/refund/index.ts b/apps/web-antd/src/api/pay/refund/index.ts new file mode 100644 index 00000000..93ae9fc9 --- /dev/null +++ b/apps/web-antd/src/api/pay/refund/index.ts @@ -0,0 +1,128 @@ +import type { PageParam, PageResult } from '@vben/request'; + +import { requestClient } from '#/api/request'; + +export namespace PayRefundApi { + /** 退款订单信息 */ + export interface Refund { + id: number; + merchantId: number; + appId: number; + channelId: number; + channelCode: string; + orderId: string; + tradeNo: string; + merchantOrderId: string; + merchantRefundNo: string; + notifyUrl: string; + notifyStatus: number; + status: number; + type: number; + payAmount: number; + refundAmount: number; + reason: string; + userIp: string; + channelOrderNo: string; + channelRefundNo: string; + channelErrorCode: string; + channelErrorMsg: string; + channelExtras: string; + expireTime: Date; + successTime: Date; + notifyTime: Date; + createTime: Date; + } + + /** 退款订单分页请求 */ + export interface RefundPageReqVO extends PageParam { + merchantId?: number; + appId?: number; + channelId?: number; + channelCode?: string; + orderId?: string; + tradeNo?: string; + merchantOrderId?: string; + merchantRefundNo?: string; + notifyUrl?: string; + notifyStatus?: number; + status?: number; + type?: number; + payAmount?: number; + refundAmount?: number; + reason?: string; + userIp?: string; + channelOrderNo?: string; + channelRefundNo?: string; + channelErrorCode?: string; + channelErrorMsg?: string; + channelExtras?: string; + expireTime?: Date[]; + successTime?: Date[]; + notifyTime?: Date[]; + createTime?: Date[]; + } + + /** 退款订单导出请求 */ + export interface RefundExportReqVO { + merchantId?: number; + appId?: number; + channelId?: number; + channelCode?: string; + orderId?: string; + tradeNo?: string; + merchantOrderId?: string; + merchantRefundNo?: string; + notifyUrl?: string; + notifyStatus?: number; + status?: number; + type?: number; + payAmount?: number; + refundAmount?: number; + reason?: string; + userIp?: string; + channelOrderNo?: string; + channelRefundNo?: string; + channelErrorCode?: string; + channelErrorMsg?: string; + channelExtras?: string; + expireTime?: Date[]; + successTime?: Date[]; + notifyTime?: Date[]; + createTime?: Date[]; + } +} + +/** 查询退款订单列表 */ +export function getRefundPage(params: PayRefundApi.RefundPageReqVO) { + return requestClient.get>( + '/pay/refund/page', + { + params, + }, + ); +} + +/** 查询退款订单详情 */ +export function getRefund(id: number) { + return requestClient.get(`/pay/refund/get?id=${id}`); +} + +/** 创建退款订单 */ +export function createRefund(data: PayRefundApi.Refund) { + return requestClient.post('/pay/refund/create', data); +} + +/** 更新退款订单 */ +export function updateRefund(data: PayRefundApi.Refund) { + return requestClient.put('/pay/refund/update', data); +} + +/** 删除退款订单 */ +export function deleteRefund(id: number) { + return requestClient.delete(`/pay/refund/delete?id=${id}`); +} + +/** 导出退款订单 */ +export function exportRefund(params: PayRefundApi.RefundExportReqVO) { + return requestClient.download('/pay/refund/export-excel', { params }); +} diff --git a/apps/web-antd/src/api/pay/transfer/index.ts b/apps/web-antd/src/api/pay/transfer/index.ts new file mode 100644 index 00000000..fd8bc9d3 --- /dev/null +++ b/apps/web-antd/src/api/pay/transfer/index.ts @@ -0,0 +1,58 @@ +import type { PageParam, PageResult } from '@vben/request'; + +import { requestClient } from '#/api/request'; + +export namespace PayTransferApi { + /** 转账单信息 */ + export interface Transfer { + id: number; + appId: number; + channelId: number; + channelCode: string; + merchantTransferId: string; + type: number; + price: number; + subject: string; + userName: string; + alipayLogonId: string; + openid: string; + status: number; + createTime: Date; + } + + /** 转账单分页请求 */ + export interface TransferPageReqVO extends PageParam { + appId?: number; + channelId?: number; + channelCode?: string; + merchantTransferId?: string; + type?: number; + price?: number; + subject?: string; + userName?: string; + status?: number; + createTime?: Date[]; + } +} + +/** 查询转账单列表 */ +export function getTransferPage(params: PayTransferApi.TransferPageReqVO) { + return requestClient.get>( + '/pay/transfer/page', + { + params, + }, + ); +} + +/** 查询转账单详情 */ +export function getTransfer(id: number) { + return requestClient.get( + `/pay/transfer/get?id=${id}`, + ); +} + +/** 创建转账单 */ +export function createTransfer(data: PayTransferApi.Transfer) { + return requestClient.post('/pay/transfer/create', data); +} diff --git a/apps/web-antd/src/api/pay/wallet/balance/index.ts b/apps/web-antd/src/api/pay/wallet/balance/index.ts new file mode 100644 index 00000000..25a44280 --- /dev/null +++ b/apps/web-antd/src/api/pay/wallet/balance/index.ts @@ -0,0 +1,53 @@ +import type { PageParam, PageResult } from '@vben/request'; + +import { requestClient } from '#/api/request'; + +export namespace PayWalletApi { + /** 用户钱包查询参数 */ + export interface PayWalletUserReqVO { + userId: number; + } + + /** 钱包信息 */ + export interface WalletVO { + id: number; + userId: number; + userType: number; + balance: number; + totalExpense: number; + totalRecharge: number; + freezePrice: number; + } + + /** 钱包分页请求 */ + export interface WalletPageReqVO extends PageParam { + userId?: number; + userType?: number; + balance?: number; + totalExpense?: number; + totalRecharge?: number; + freezePrice?: number; + } +} + +/** 查询用户钱包详情 */ +export function getWallet(params: PayWalletApi.PayWalletUserReqVO) { + return requestClient.get('/pay/wallet/get', { + params, + }); +} + +/** 查询会员钱包列表 */ +export function getWalletPage(params: PayWalletApi.WalletPageReqVO) { + return requestClient.get>( + '/pay/wallet/page', + { + params, + }, + ); +} + +/** 修改会员钱包余额 */ +export function updateWalletBalance(data: PayWalletApi.WalletVO) { + return requestClient.put('/pay/wallet/update-balance', data); +} diff --git a/apps/web-antd/src/api/pay/wallet/rechargePackage/index.ts b/apps/web-antd/src/api/pay/wallet/rechargePackage/index.ts new file mode 100644 index 00000000..32c3bbfa --- /dev/null +++ b/apps/web-antd/src/api/pay/wallet/rechargePackage/index.ts @@ -0,0 +1,46 @@ +import type { PageParam, PageResult } from '@vben/request'; + +import { requestClient } from '#/api/request'; + +export namespace WalletRechargePackageApi { + /** 充值套餐信息 */ + export interface Package { + id?: number; + name: string; + payPrice: number; + bonusPrice: number; + status: number; + } +} + +/** 查询充值套餐列表 */ +export function getPackagePage(params: PageParam) { + return requestClient.get>( + '/pay/wallet-recharge-package/page', + { + params, + }, + ); +} + +/** 查询充值套餐详情 */ +export function getPackage(id: number) { + return requestClient.get( + `/pay/wallet-recharge-package/get?id=${id}`, + ); +} + +/** 新增充值套餐 */ +export function createPackage(data: WalletRechargePackageApi.Package) { + return requestClient.post('/pay/wallet-recharge-package/create', data); +} + +/** 修改充值套餐 */ +export function updatePackage(data: WalletRechargePackageApi.Package) { + return requestClient.put('/pay/wallet-recharge-package/update', data); +} + +/** 删除充值套餐 */ +export function deletePackage(id: number) { + return requestClient.delete(`/pay/wallet-recharge-package/delete?id=${id}`); +} diff --git a/apps/web-antd/src/api/pay/wallet/transaction/index.ts b/apps/web-antd/src/api/pay/wallet/transaction/index.ts new file mode 100644 index 00000000..bc7ffef1 --- /dev/null +++ b/apps/web-antd/src/api/pay/wallet/transaction/index.ts @@ -0,0 +1,24 @@ +import type { PageParam, PageResult } from '@vben/request'; + +import { requestClient } from '#/api/request'; + +export namespace WalletTransactionApi { + /** 钱包交易流水信息 */ + export interface Transaction { + id: number; + walletId: number; + title: string; + price: number; + balance: number; + } +} + +/** 查询钱包交易流水列表 */ +export function getTransactionPage(params: PageParam) { + return requestClient.get>( + '/pay/wallet-transaction/page', + { + params, + }, + ); +} From 4545422ee0b7254cdf5e86b215435e29cbe1f323 Mon Sep 17 00:00:00 2001 From: Netfan Date: Mon, 28 Apr 2025 17:02:54 +0800 Subject: [PATCH 23/56] fix: lock state will not change overflow style in drawer and modal (#6067) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Modal和Drawer的锁定状态不再修改overflow样式 --- .../ui-kit/popup-ui/src/drawer/drawer.vue | 32 ++++++++----------- .../@core/ui-kit/popup-ui/src/modal/modal.vue | 31 ++++++++---------- 2 files changed, 26 insertions(+), 37 deletions(-) diff --git a/packages/@core/ui-kit/popup-ui/src/drawer/drawer.vue b/packages/@core/ui-kit/popup-ui/src/drawer/drawer.vue index 7a28dddd..25069979 100644 --- a/packages/@core/ui-kit/popup-ui/src/drawer/drawer.vue +++ b/packages/@core/ui-kit/popup-ui/src/drawer/drawer.vue @@ -82,17 +82,17 @@ const { zIndex, } = usePriorityValues(props, state); -watch( - () => showLoading.value, - (v) => { - if (v && wrapperRef.value) { - wrapperRef.value.scrollTo({ - // behavior: 'smooth', - top: 0, - }); - } - }, -); +// watch( +// () => showLoading.value, +// (v) => { +// if (v && wrapperRef.value) { +// wrapperRef.value.scrollTo({ +// // behavior: 'smooth', +// top: 0, +// }); +// } +// }, +// ); function interactOutside(e: Event) { if (!closeOnClickModal.value || submitting.value) { @@ -266,19 +266,13 @@ const getForceMount = computed(() => { ref="wrapperRef" :class=" cn('relative flex-1 overflow-y-auto p-3', contentClass, { - 'overflow-hidden': showLoading, + 'pointer-events-none': showLoading || submitting, }) " > - - - + - - +