diff --git a/apps/vben5/apps/app-antd/src/adapter/form.ts b/apps/vben5/apps/app-antd/src/adapter/form.ts new file mode 100644 index 000000000..4a55850ec --- /dev/null +++ b/apps/vben5/apps/app-antd/src/adapter/form.ts @@ -0,0 +1,49 @@ +import type { + VbenFormSchema as FormSchema, + VbenFormProps, +} from '@vben/common-ui'; + +import type { ComponentType } from './component'; + +import { setupVbenForm, useVbenForm as useForm, z } from '@vben/common-ui'; +import { $t } from '@vben/locales'; + +async function initVbenForm() { + setupVbenForm({ + config: { + // ant design vue组件库默认都是 v-model:value + baseModelPropName: 'value', + + // 一些组件是 v-model:checked 或者 v-model:fileList + modelPropNameMap: { + Checkbox: 'checked', + Radio: 'checked', + Switch: 'checked', + Upload: 'fileList', + }, + }, + defineRules: { + // 输入项目必填国际化适配 + required: (value, _params, ctx) => { + if (value === undefined || value === null || value.length === 0) { + return $t('ui.formRules.required', [ctx.label]); + } + return true; + }, + // 选择项目必填国际化适配 + selectRequired: (value, _params, ctx) => { + if (value === undefined || value === null) { + return $t('ui.formRules.selectRequired', [ctx.label]); + } + return true; + }, + }, + }); +} + +const useVbenForm = useForm; + +export { initVbenForm, useVbenForm, z }; + +export type VbenFormSchema = FormSchema; +export type { VbenFormProps }; diff --git a/apps/vben5/apps/app-antd/src/bootstrap.ts b/apps/vben5/apps/app-antd/src/bootstrap.ts index 1967cea94..520ec1e1f 100644 --- a/apps/vben5/apps/app-antd/src/bootstrap.ts +++ b/apps/vben5/apps/app-antd/src/bootstrap.ts @@ -12,6 +12,7 @@ import { useTitle } from '@vueuse/core'; import { $t, setupI18n } from '#/locales'; import { initComponentAdapter } from './adapter/component'; +import { initVbenForm } from './adapter/form'; import { initRequestClient } from './adapter/request'; import App from './app.vue'; import { router } from './router'; @@ -19,6 +20,7 @@ import { router } from './router'; async function bootstrap(namespace: string) { // 初始化组件适配器 await initComponentAdapter(); + await initVbenForm(); initRequestClient(); const app = createApp(App); diff --git a/apps/vben5/packages/@abp/auditing/src/components/audit-logs/AuditLogTable.vue b/apps/vben5/packages/@abp/auditing/src/components/audit-logs/AuditLogTable.vue index 5c2e29ad6..0b4b4a27e 100644 --- a/apps/vben5/packages/@abp/auditing/src/components/audit-logs/AuditLogTable.vue +++ b/apps/vben5/packages/@abp/auditing/src/components/audit-logs/AuditLogTable.vue @@ -1,6 +1,8 @@ diff --git a/apps/vben5/packages/@abp/identity/src/components/claims/ClaimTable.vue b/apps/vben5/packages/@abp/identity/src/components/claims/ClaimTable.vue index 305720e43..e52ef683d 100644 --- a/apps/vben5/packages/@abp/identity/src/components/claims/ClaimTable.vue +++ b/apps/vben5/packages/@abp/identity/src/components/claims/ClaimTable.vue @@ -91,7 +91,7 @@ async function onDelete(row: IdentityClaimDto) { claimType: row.claimType, claimValue: row.claimValue, }); - message.success($t('AbpUi.SuccessfullyDeleted')); + message.success($t('AbpUi.DeletedSuccessfully')); query(); emits('onDelete'); } diff --git a/apps/vben5/packages/@abp/identity/src/components/organization-units/OrganizationUnitModal.vue b/apps/vben5/packages/@abp/identity/src/components/organization-units/OrganizationUnitModal.vue index 7b9fcbf2f..aa8c5b4b5 100644 --- a/apps/vben5/packages/@abp/identity/src/components/organization-units/OrganizationUnitModal.vue +++ b/apps/vben5/packages/@abp/identity/src/components/organization-units/OrganizationUnitModal.vue @@ -5,11 +5,9 @@ import type { OrganizationUnitUpdateDto, } from '../../types/organization-units'; -import { useVbenModal } from '@vben/common-ui'; +import { useVbenForm, useVbenModal } from '@vben/common-ui'; import { $t } from '@vben/locales'; -import { useVbenForm } from '@abp/ui'; - import { useOrganizationUnitsApi } from '../../api/useOrganizationUnitsApi'; defineOptions({ @@ -103,17 +101,16 @@ const [Modal, modalApi] = useVbenModal({ async function onSubmit(input: Record) { try { modalApi.setState({ - confirmLoading: true, + submitting: true, }); - const api = input.id - ? updateApi(input.id, input as OrganizationUnitUpdateDto) - : createApi(input as OrganizationUnitCreateDto); - const dto = await api; + const dto = input.id + ? await updateApi(input.id, input as OrganizationUnitUpdateDto) + : await createApi(input as OrganizationUnitCreateDto); emits('change', dto); modalApi.close(); } finally { modalApi.setState({ - confirmLoading: false, + submitting: false, }); } } diff --git a/apps/vben5/packages/@abp/identity/src/components/organization-units/OrganizationUnitRoleTable.vue b/apps/vben5/packages/@abp/identity/src/components/organization-units/OrganizationUnitRoleTable.vue index 6d55021d2..bc501fd02 100644 --- a/apps/vben5/packages/@abp/identity/src/components/organization-units/OrganizationUnitRoleTable.vue +++ b/apps/vben5/packages/@abp/identity/src/components/organization-units/OrganizationUnitRoleTable.vue @@ -1,4 +1,6 @@ diff --git a/apps/vben5/packages/@abp/identity/src/components/security-logs/SecurityLogTable.vue b/apps/vben5/packages/@abp/identity/src/components/security-logs/SecurityLogTable.vue index 19d65cf6d..fc3d3ae42 100644 --- a/apps/vben5/packages/@abp/identity/src/components/security-logs/SecurityLogTable.vue +++ b/apps/vben5/packages/@abp/identity/src/components/security-logs/SecurityLogTable.vue @@ -1,6 +1,8 @@ diff --git a/apps/vben5/packages/@abp/openiddict/src/components/applications/ApplicationTable.vue b/apps/vben5/packages/@abp/openiddict/src/components/applications/ApplicationTable.vue index b4fc12d84..9c32c2566 100644 --- a/apps/vben5/packages/@abp/openiddict/src/components/applications/ApplicationTable.vue +++ b/apps/vben5/packages/@abp/openiddict/src/components/applications/ApplicationTable.vue @@ -1,7 +1,9 @@