From b71b7bfd0e201456723d9423c964e84b3926a258 Mon Sep 17 00:00:00 2001 From: MTrun <1262327911@qq.com> Date: Thu, 10 Mar 2022 10:14:52 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E5=BC=95=E5=85=A5=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/packages/index.d.ts | 5 +++++ src/packages/index.ts | 49 ++++++++++++++++++++++++++++++++--------- 2 files changed, 44 insertions(+), 10 deletions(-) diff --git a/src/packages/index.d.ts b/src/packages/index.d.ts index 16a17618..6516d481 100644 --- a/src/packages/index.d.ts +++ b/src/packages/index.d.ts @@ -47,6 +47,11 @@ export enum PackagesCategoryName { DECORATES = '小组件' } +// 获取组件 +export enum FetchComFlagType { + VIEW, CONFIG +} + // 图表包类型 export type PackagesType = { [PackagesCategoryEnum.CHARTS]: ConfigType[] diff --git a/src/packages/index.ts b/src/packages/index.ts index 0203e83c..e012a8e0 100644 --- a/src/packages/index.ts +++ b/src/packages/index.ts @@ -1,13 +1,17 @@ import type { App } from 'vue' -import { - PackagesCategoryEnum, - PackagesType, - ConfigType -} from '@/packages/index.d' import { ChartList } from '@/packages/components/Charts/index' import { DecorateList } from '@/packages/components/Decorates/index' import { InformationList } from '@/packages/components/Informations/index' import { TableList } from '@/packages/components/Tables/index' +import { + PackagesCategoryEnum, + PackagesType, + ConfigType, + FetchComFlagType +} from '@/packages/index.d' + +const configModules = import.meta.globEager("./components/**/config.vue") +const indexModules = import.meta.globEager("./components/**/index.vue") // * 所有图表 export let packagesList: PackagesType = { @@ -36,10 +40,35 @@ export const packgeInstall = (app:App) => { } /** - * * 获取组件信息 - * * import.meta.globEager 不好使,先从原来的位置拿把 + * * 获取组件 + * @param {string} chartName 名称 + * @param {FetchComFlagType} flag 标识 0为展示组件, 1为配置组件 */ - export const fetchChartComponent = (dropData: ConfigType | Omit) => { - const { key, package:packageName } = dropData - return packagesList[packageName as PackagesCategoryEnum].filter(e=> e.key === key)[0].node() +const fetchComponent = (chartName: string, flag: FetchComFlagType) => { + chartName = chartName.substring(1) + const module = flag === FetchComFlagType.VIEW ? indexModules: configModules + for (const key in module) { + const urlSplit = key.split('/') + if(urlSplit[urlSplit.length -2 ] === chartName) { + return module[key] + } + } +} + +/** + * * 获取展示组件 + * @param {ConfigType} dropData 配置项 + */ + export const fetchChartComponent = (dropData: ConfigType) => { + const { key } = dropData + return fetchComponent(key, FetchComFlagType.VIEW)?.default +} + +/** + * * 获取配置组件 + * @param {ConfigType} dropData 配置项 + */ + export const fetchConfigComponent = (dropData: ConfigType) => { + const { key } = dropData + return fetchComponent(key, FetchComFlagType.CONFIG)?.default } \ No newline at end of file