From b7eb73c4019cf999d94bd8349d8a30bc3aea6441 Mon Sep 17 00:00:00 2001 From: chenghuan Date: Fri, 16 Jan 2026 18:46:18 +0800 Subject: [PATCH] =?UTF-8?q?feat(button):=20=E6=B7=BB=E5=8A=A0SubmitButton?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=E5=B9=B6=E6=94=AF=E6=8C=81ant-design?= =?UTF-8?q?=E4=B8=BB=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/posting/reconciliate/index.vue | 7 +-- .../posting/reconciliate/modules/Manual.vue | 13 +++- .../ui-kit/shadcn-ui/src/ui/button/Button.vue | 6 +- .../ui-kit/shadcn-ui/src/ui/button/button.ts | 24 ++++++-- .../ui-kit/shadcn-ui/src/ui/button/types.ts | 3 + .../effects/common-ui/src/components/index.ts | 1 + .../src/components/submit-button/button.vue | 60 +++++++++++++++++++ .../src/components/submit-button/index.ts | 1 + 8 files changed, 103 insertions(+), 12 deletions(-) create mode 100644 packages/effects/common-ui/src/components/submit-button/button.vue create mode 100644 packages/effects/common-ui/src/components/submit-button/index.ts diff --git a/apps/finance/src/views/posting/reconciliate/index.vue b/apps/finance/src/views/posting/reconciliate/index.vue index 5fffe29..a530fd5 100644 --- a/apps/finance/src/views/posting/reconciliate/index.vue +++ b/apps/finance/src/views/posting/reconciliate/index.vue @@ -6,7 +6,7 @@ import type { VxeTableGridOptions } from '#/adapter/vxe-table'; import { ref, watch } from 'vue'; -import { Page } from '@vben/common-ui'; +import { Page, SubmitButton } from '@vben/common-ui'; import { Button, message, notification, Tag } from 'ant-design-vue'; import dayjs from 'dayjs'; @@ -128,6 +128,7 @@ const gridOptions: VxeTableGridOptions = { limit: page.pageSize, year: date[0], month: date[1], + type: formValues.type ?? '', ...formValues, }); }, @@ -152,9 +153,7 @@ async function onStartSysCheck() { month: date[1], }; // 调用自动核对接口 - const hide = message.loading('系统自动核对中...', 0); await reconciliateBillsApi.autoCheck(params); - hide(); gridApi?.query(); notification.success({ message: '完成', @@ -208,7 +207,7 @@ async function onManualCheck(data?: PaymentRowType) { diff --git a/apps/finance/src/views/posting/reconciliate/modules/Manual.vue b/apps/finance/src/views/posting/reconciliate/modules/Manual.vue index a915df7..e24eec7 100644 --- a/apps/finance/src/views/posting/reconciliate/modules/Manual.vue +++ b/apps/finance/src/views/posting/reconciliate/modules/Manual.vue @@ -3,9 +3,11 @@ import type { CreateOrderType, PaymentRowType } from '../types'; import { ref, watch } from 'vue'; +import { SubmitButton } from '@vben/common-ui'; + import { VbenIcon } from '@vben-core/shadcn-ui'; -import { Button, Card, Input, message, Modal, notification } from 'ant-design-vue'; +import { Card, Input, message, Modal, notification } from 'ant-design-vue'; import dayjs from 'dayjs'; import { reconciliateBillsApi } from '#/api/posting/reconciliate'; @@ -319,6 +321,7 @@ async function onCompleteCheckCreated() { const paymentIds = multipleCurrentData.value.map((item) => item.id); // 调用接口 + const hideLoading = message.loading('处理中...', 0); await (isBatchMode.value ? reconciliateBillsApi.manualCheckCreatedBatch({ paymentIds: paymentIds.join(','), @@ -326,6 +329,7 @@ async function onCompleteCheckCreated() { }) : reconciliateBillsApi.manualCheckCreated(data)); onCompleteCheck(); + hideLoading(); // 清空已选列表 selectedData.value = []; selectedRef.value?.clearData(); @@ -408,7 +412,12 @@ async function onCompleteCheckCreated() { size="small" > import type { PrimitiveProps } from 'reka-ui'; -import type { ButtonVariants, ButtonVariantSize } from './types'; +import type { ButtonTheme, ButtonVariants, ButtonVariantSize } from './types'; import { cn } from '@vben-core/shared/utils'; @@ -12,6 +12,7 @@ import { buttonVariants } from './button'; interface Props extends PrimitiveProps { class?: any; size?: ButtonVariantSize; + theme?: ButtonTheme; variant?: ButtonVariants; } @@ -25,7 +26,8 @@ const props = withDefaults(defineProps(), { diff --git a/packages/@core/ui-kit/shadcn-ui/src/ui/button/button.ts b/packages/@core/ui-kit/shadcn-ui/src/ui/button/button.ts index d028775..6dfec3b 100644 --- a/packages/@core/ui-kit/shadcn-ui/src/ui/button/button.ts +++ b/packages/@core/ui-kit/shadcn-ui/src/ui/button/button.ts @@ -6,18 +6,23 @@ export const buttonVariants = cva( defaultVariants: { size: 'default', variant: 'default', + theme: 'default', }, variants: { + theme: { + 'ant-design': '', + default: '', + }, size: { default: 'h-9 px-4 py-2', icon: 'h-8 w-8 rounded-sm px-1 text-lg', lg: 'h-10 rounded-md px-4', sm: 'h-8 rounded-md px-2 text-xs', + small: 'h-8 rounded-md px-2 text-xs', xs: 'h-8 w-8 rounded-sm px-1 text-xs', }, variant: { - default: - 'bg-primary text-primary-foreground shadow hover:bg-primary/90', + default: 'bg-primary text-primary-foreground shadow hover:bg-primary/90', destructive: 'bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive-hover', ghost: 'hover:bg-accent hover:text-accent-foreground', @@ -26,9 +31,20 @@ export const buttonVariants = cva( link: 'text-primary underline-offset-4 hover:underline', outline: 'border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground', - secondary: - 'bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80', + secondary: 'bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80', }, }, + compoundVariants: [ + { + theme: 'ant-design', + size: 'default', + class: 'h-8 rounded-md px-4 text-sm', + }, + { + theme: 'ant-design', + size: 'small', + class: 'h-6 rounded-md px-2 text-sm', + }, + ], }, ); diff --git a/packages/@core/ui-kit/shadcn-ui/src/ui/button/types.ts b/packages/@core/ui-kit/shadcn-ui/src/ui/button/types.ts index cc5e174..9abf397 100644 --- a/packages/@core/ui-kit/shadcn-ui/src/ui/button/types.ts +++ b/packages/@core/ui-kit/shadcn-ui/src/ui/button/types.ts @@ -3,6 +3,7 @@ export type ButtonVariantSize = | 'icon' | 'lg' | 'sm' + | 'small' | 'xs' | null | undefined; @@ -18,3 +19,5 @@ export type ButtonVariants = | 'secondary' | null | undefined; + +export type ButtonTheme = 'ant-design' | 'default'; diff --git a/packages/effects/common-ui/src/components/index.ts b/packages/effects/common-ui/src/components/index.ts index 5914d44..9c24930 100644 --- a/packages/effects/common-ui/src/components/index.ts +++ b/packages/effects/common-ui/src/components/index.ts @@ -8,6 +8,7 @@ export * from './json-viewer'; export * from './loading'; export * from './page'; export * from './resize'; +export * from './submit-button'; export * from './tippy'; export * from './tree'; export * from '@vben-core/form-ui'; diff --git a/packages/effects/common-ui/src/components/submit-button/button.vue b/packages/effects/common-ui/src/components/submit-button/button.vue new file mode 100644 index 0000000..3c03bfd --- /dev/null +++ b/packages/effects/common-ui/src/components/submit-button/button.vue @@ -0,0 +1,60 @@ + + diff --git a/packages/effects/common-ui/src/components/submit-button/index.ts b/packages/effects/common-ui/src/components/submit-button/index.ts new file mode 100644 index 0000000..f1e87e6 --- /dev/null +++ b/packages/effects/common-ui/src/components/submit-button/index.ts @@ -0,0 +1 @@ +export { default as SubmitButton } from './button.vue';