From 5be257ee237d0ca1364f0613e5a77170a978f3c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?cls=5F=E5=AE=81=E6=B3=A2=E6=9C=AC=E6=9C=BA?= <908705107@qq.com> Date: Tue, 9 Jun 2026 09:41:07 +0800 Subject: [PATCH] Avoid duplicate Element Plus dynamic imports --- .../web-ele/src/adapter/component/index.ts | 132 +++--------------- 1 file changed, 23 insertions(+), 109 deletions(-) diff --git a/web/apps/web-ele/src/adapter/component/index.ts b/web/apps/web-ele/src/adapter/component/index.ts index b91e23c..4baa5bb 100644 --- a/web/apps/web-ele/src/adapter/component/index.ts +++ b/web/apps/web-ele/src/adapter/component/index.ts @@ -13,44 +13,30 @@ import { defineAsyncComponent, defineComponent, h, ref } from 'vue'; import { ApiComponent, globalShareState } from '@vben/common-ui'; import { $t } from '@vben/locales'; -import { ElNotification } from 'element-plus'; +import { ElButton } from 'element-plus/es/components/button/index'; +import { + ElCheckbox, + ElCheckboxButton, + ElCheckboxGroup, +} from 'element-plus/es/components/checkbox/index'; +import { ElCascader } from 'element-plus/es/components/cascader/index'; +import { ElDatePicker } from 'element-plus/es/components/date-picker/index'; +import { ElDivider } from 'element-plus/es/components/divider/index'; +import { ElInput } from 'element-plus/es/components/input/index'; +import { ElInputNumber } from 'element-plus/es/components/input-number/index'; +import { ElNotification } from 'element-plus/es/components/notification/index'; +import { + ElRadio, + ElRadioButton, + ElRadioGroup, +} from 'element-plus/es/components/radio/index'; +import { ElSelectV2 } from 'element-plus/es/components/select-v2/index'; +import { ElSpace } from 'element-plus/es/components/space/index'; +import { ElSwitch } from 'element-plus/es/components/switch/index'; +import { ElTimePicker } from 'element-plus/es/components/time-picker/index'; +import { ElTreeSelect } from 'element-plus/es/components/tree-select/index'; +import { ElUpload } from 'element-plus/es/components/upload/index'; -const ElButton = defineAsyncComponent(() => - Promise.all([ - import('element-plus/es/components/button/index'), - import('element-plus/es/components/button/style/css'), - ]).then(([res]) => res.ElButton), -); -const ElCheckbox = defineAsyncComponent(() => - Promise.all([ - import('element-plus/es/components/checkbox/index'), - import('element-plus/es/components/checkbox/style/css'), - ]).then(([res]) => res.ElCheckbox), -); -const ElCheckboxButton = defineAsyncComponent(() => - Promise.all([ - import('element-plus/es/components/checkbox/index'), - import('element-plus/es/components/checkbox-button/style/css'), - ]).then(([res]) => res.ElCheckboxButton), -); -const ElCheckboxGroup = defineAsyncComponent(() => - Promise.all([ - import('element-plus/es/components/checkbox/index'), - import('element-plus/es/components/checkbox-group/style/css'), - ]).then(([res]) => res.ElCheckboxGroup), -); -const ElCascader = defineAsyncComponent(() => - Promise.all([ - import('element-plus/es/components/cascader/index'), - import('element-plus/es/components/cascader/style/css'), - ]).then(([res]) => res.ElCascader), -); -const ElDatePicker = defineAsyncComponent(() => - Promise.all([ - import('element-plus/es/components/date-picker/index'), - import('element-plus/es/components/date-picker/style/css'), - ]).then(([res]) => res.ElDatePicker), -); const DeptSelector = defineAsyncComponent(() => import('#/components/zq-form/dept-selector/dept-selector.vue').then( (res) => res.default, @@ -94,78 +80,6 @@ const CodeEditor = defineAsyncComponent(() => (res) => res.default, ), ); -const ElDivider = defineAsyncComponent(() => - Promise.all([ - import('element-plus/es/components/divider/index'), - import('element-plus/es/components/divider/style/css'), - ]).then(([res]) => res.ElDivider), -); -const ElInput = defineAsyncComponent(() => - Promise.all([ - import('element-plus/es/components/input/index'), - import('element-plus/es/components/input/style/css'), - ]).then(([res]) => res.ElInput), -); -const ElInputNumber = defineAsyncComponent(() => - Promise.all([ - import('element-plus/es/components/input-number/index'), - import('element-plus/es/components/input-number/style/css'), - ]).then(([res]) => res.ElInputNumber), -); -const ElRadio = defineAsyncComponent(() => - Promise.all([ - import('element-plus/es/components/radio/index'), - import('element-plus/es/components/radio/style/css'), - ]).then(([res]) => res.ElRadio), -); -const ElRadioButton = defineAsyncComponent(() => - Promise.all([ - import('element-plus/es/components/radio/index'), - import('element-plus/es/components/radio-button/style/css'), - ]).then(([res]) => res.ElRadioButton), -); -const ElRadioGroup = defineAsyncComponent(() => - Promise.all([ - import('element-plus/es/components/radio/index'), - import('element-plus/es/components/radio-group/style/css'), - ]).then(([res]) => res.ElRadioGroup), -); -const ElSelectV2 = defineAsyncComponent(() => - Promise.all([ - import('element-plus/es/components/select-v2/index'), - import('element-plus/es/components/select-v2/style/css'), - ]).then(([res]) => res.ElSelectV2), -); -const ElSpace = defineAsyncComponent(() => - Promise.all([ - import('element-plus/es/components/space/index'), - import('element-plus/es/components/space/style/css'), - ]).then(([res]) => res.ElSpace), -); -const ElSwitch = defineAsyncComponent(() => - Promise.all([ - import('element-plus/es/components/switch/index'), - import('element-plus/es/components/switch/style/css'), - ]).then(([res]) => res.ElSwitch), -); -const ElTimePicker = defineAsyncComponent(() => - Promise.all([ - import('element-plus/es/components/time-picker/index'), - import('element-plus/es/components/time-picker/style/css'), - ]).then(([res]) => res.ElTimePicker), -); -const ElTreeSelect = defineAsyncComponent(() => - Promise.all([ - import('element-plus/es/components/tree-select/index'), - import('element-plus/es/components/tree-select/style/css'), - ]).then(([res]) => res.ElTreeSelect), -); -const ElUpload = defineAsyncComponent(() => - Promise.all([ - import('element-plus/es/components/upload/index'), - import('element-plus/es/components/upload/style/css'), - ]).then(([res]) => res.ElUpload), -); const withDefaultPlaceholder = ( component: T,