diff --git a/src/packages/index.ts b/src/packages/index.ts index 43a8a347..26d0c00f 100644 --- a/src/packages/index.ts +++ b/src/packages/index.ts @@ -28,4 +28,13 @@ const createComponent = async (dropData: ConfigType) => { return new chart.default() } -export { packagesList, createComponent } +/** + * * 获取组件信息 + */ +const fetchChartComponent = async (dropData: ConfigType | Omit) => { + const key = dropData.key.substring(1) + const { category } = dropData + return await import(`../packages/components/${dropData.package}/${category}/${key}/index.vue`) +} + +export { packagesList, createComponent, fetchChartComponent } diff --git a/src/utils/componets.ts b/src/utils/componets.ts index 4ef9850b..a395a7e4 100644 --- a/src/utils/componets.ts +++ b/src/utils/componets.ts @@ -1,11 +1,24 @@ import { defineAsyncComponent, AsyncComponentLoader } from 'vue' import { AsyncLoading, AsyncSkeletonLoading } from '@/components/LoadingComponent' - +import { ConfigType } from '@/packages/index.d' +import { fetchChartComponent } from '@/packages/index' +/** + * * 预览页面动态注册 package 组件 + * @param {ConfigType} dropData + */ +export const componentPackageInstall = async (dropData: Omit) => { + const key = dropData.key.substring(1) + console.log(window['$vue']); + if (!window['$vue'].component(key)) { + const chart = await fetchChartComponent(dropData) + window['$vue'].component(key, chart) + } +} /** * * 动态注册组件 */ export const componentInstall = (key:string, node: T) => { - if(!window['$vue'].component(key) && key && node) { + if(!window['$vue'].component(key) && node) { window['$vue'].component(key, node) } } diff --git a/src/views/chart/ContentCharts/components/ItemBox/index.vue b/src/views/chart/ContentCharts/components/ItemBox/index.vue index 6dfd0a3b..823e43e1 100644 --- a/src/views/chart/ContentCharts/components/ItemBox/index.vue +++ b/src/views/chart/ContentCharts/components/ItemBox/index.vue @@ -22,7 +22,7 @@