From 02c977f96982dc86d19fbbc7faa5d44878fdef21 Mon Sep 17 00:00:00 2001 From: xingyu4j Date: Mon, 26 Jan 2026 11:06:38 +0800 Subject: [PATCH] fix: IDLPAD --- apps/web-ele/src/adapter/component/index.ts | 8 ++++++++ apps/web-ele/src/views/system/menu/data.ts | 13 +++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/apps/web-ele/src/adapter/component/index.ts b/apps/web-ele/src/adapter/component/index.ts index 1d1dbd106..eb79ca2b3 100644 --- a/apps/web-ele/src/adapter/component/index.ts +++ b/apps/web-ele/src/adapter/component/index.ts @@ -18,6 +18,12 @@ import { ElNotification } from 'element-plus'; import { Tinymce as RichTextarea } from '#/components/tinymce'; import { FileUpload, ImageUpload } from '#/components/upload'; +const AutoComplete = defineAsyncComponent(() => + Promise.all([ + import('element-plus/es/components/autocomplete/index'), + import('element-plus/es/components/autocomplete/style/css'), + ]).then(([res]) => res.ElAutocomplete), +); const ElButton = defineAsyncComponent(() => Promise.all([ import('element-plus/es/components/button/index'), @@ -178,6 +184,7 @@ export type ComponentType = | 'ApiCascader' | 'ApiSelect' | 'ApiTreeSelect' + | 'AutoComplete' | 'Checkbox' | 'CheckboxGroup' | 'DatePicker' @@ -243,6 +250,7 @@ async function initComponentAdapter() { visibleEvent: 'onVisibleChange', }, ), + AutoComplete, Checkbox: ElCheckbox, CheckboxGroup: (props, { attrs, slots }) => { let defaultSlot; diff --git a/apps/web-ele/src/views/system/menu/data.ts b/apps/web-ele/src/views/system/menu/data.ts index b68094994..7e176d5f7 100644 --- a/apps/web-ele/src/views/system/menu/data.ts +++ b/apps/web-ele/src/views/system/menu/data.ts @@ -166,8 +166,17 @@ export function useFormSchema(): VbenFormSchema[] { component: 'AutoComplete', componentProps: { clearable: true, - filterOption(input: string, option: { value: string }) { - return option.value.toLowerCase().includes(input.toLowerCase()); + fetchSuggestions(queryString: string, cb: any) { + const options = componentKeys.map((v) => ({ value: v })); + const createFilter = (qs: string) => { + return (restaurant: any) => { + return restaurant.value.toLowerCase().includes(qs.toLowerCase()); + }; + }; + const results = queryString + ? options.filter(createFilter(queryString)) + : options; + cb(results); }, placeholder: '请选择组件名称', options: componentKeys.map((v) => ({ value: v })),