fix: 修改动态引入逻辑

This commit is contained in:
MTrun 2022-03-10 10:14:52 +08:00
parent 06b1e40930
commit b71b7bfd0e
2 changed files with 44 additions and 10 deletions

View File

@ -47,6 +47,11 @@ export enum PackagesCategoryName {
DECORATES = '小组件' DECORATES = '小组件'
} }
// 获取组件
export enum FetchComFlagType {
VIEW, CONFIG
}
// 图表包类型 // 图表包类型
export type PackagesType = { export type PackagesType = {
[PackagesCategoryEnum.CHARTS]: ConfigType[] [PackagesCategoryEnum.CHARTS]: ConfigType[]

View File

@ -1,13 +1,17 @@
import type { App } from 'vue' import type { App } from 'vue'
import {
PackagesCategoryEnum,
PackagesType,
ConfigType
} from '@/packages/index.d'
import { ChartList } from '@/packages/components/Charts/index' import { ChartList } from '@/packages/components/Charts/index'
import { DecorateList } from '@/packages/components/Decorates/index' import { DecorateList } from '@/packages/components/Decorates/index'
import { InformationList } from '@/packages/components/Informations/index' import { InformationList } from '@/packages/components/Informations/index'
import { TableList } from '@/packages/components/Tables/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 = { 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<ConfigType, "node" | 'conNode'>) => { const fetchComponent = (chartName: string, flag: FetchComFlagType) => {
const { key, package:packageName } = dropData chartName = chartName.substring(1)
return packagesList[packageName as PackagesCategoryEnum].filter(e=> e.key === key)[0].node() 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
} }