From 5c797b738e1001546834261753e61045eaedfd22 Mon Sep 17 00:00:00 2001 From: mtruning <1262327911@qq.com> Date: Sun, 6 Mar 2022 21:26:31 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=8F=90=E4=BA=A4=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E6=B3=A8=E5=86=8C=E7=9A=84=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/packages/index.ts | 11 ++++++++++- src/utils/componets.ts | 17 +++++++++++++++-- .../ContentCharts/components/ItemBox/index.vue | 2 +- .../preview/components/RenderList/index.vue | 7 +++++++ src/views/preview/index.vue | 3 +-- 5 files changed, 34 insertions(+), 6 deletions(-) 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 @@