perf: 修改导入合并代码位置,优化结构
This commit is contained in:
parent
64d9fbb989
commit
5f5b7bf2e3
@ -1,64 +1,12 @@
|
|||||||
import { ref, nextTick } from 'vue'
|
import { ref, nextTick } from 'vue'
|
||||||
import { UploadCustomRequestOptions } from 'naive-ui'
|
import { UploadCustomRequestOptions } from 'naive-ui'
|
||||||
import { FileTypeEnum } from '@/enums/fileTypeEnum'
|
import { FileTypeEnum } from '@/enums/fileTypeEnum'
|
||||||
import { fetchChartComponent, fetchConfigComponent } from '@/packages/index'
|
import { readFile, goDialog } from '@/utils'
|
||||||
import { CreateComponentType } from '@/packages/index.d'
|
import { useSync } from '@/views/chart/hooks/useSync.hook'
|
||||||
import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore'
|
|
||||||
import { ChartEditStoreEnum } from '@/store/modules/chartEditStore/chartEditStore.d'
|
|
||||||
import { useChartHistoryStore } from '@/store/modules/chartHistoryStore/chartHistoryStore'
|
|
||||||
import { getUUID, readFile, goDialog } from '@/utils'
|
|
||||||
import { createComponent } from '@/packages'
|
|
||||||
|
|
||||||
// 更新函数
|
|
||||||
const updateComponent = async (fileData: any, isSplace = false) => {
|
|
||||||
const chartEditStore = useChartEditStore()
|
|
||||||
const chartHistoryStore = useChartHistoryStore()
|
|
||||||
if (isSplace) {
|
|
||||||
// 清除列表
|
|
||||||
chartEditStore.componentList = []
|
|
||||||
// 清除历史记录
|
|
||||||
chartHistoryStore.clearBackStack()
|
|
||||||
chartHistoryStore.clearForwardStack()
|
|
||||||
}
|
|
||||||
// 列表组件注册
|
|
||||||
fileData.componentList.forEach(async (e: CreateComponentType) => {
|
|
||||||
if (!window['$vue'].component(e.chartConfig.chartKey)) {
|
|
||||||
window['$vue'].component(
|
|
||||||
e.chartConfig.chartKey,
|
|
||||||
fetchChartComponent(e.chartConfig)
|
|
||||||
)
|
|
||||||
window['$vue'].component(
|
|
||||||
e.chartConfig.conKey,
|
|
||||||
fetchConfigComponent(e.chartConfig)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
// 数据赋值
|
|
||||||
for (const key in fileData) {
|
|
||||||
// 组件
|
|
||||||
if (key === ChartEditStoreEnum.COMPONENT_LIST) {
|
|
||||||
for (const comItem of fileData[key]) {
|
|
||||||
// 补充 class 上的方法
|
|
||||||
let newComponent: CreateComponentType = await createComponent(
|
|
||||||
comItem.chartConfig
|
|
||||||
)
|
|
||||||
// 不保存到记录
|
|
||||||
chartEditStore.addComponentList(
|
|
||||||
Object.assign(newComponent, { ...comItem, id: getUUID() }),
|
|
||||||
false,
|
|
||||||
true
|
|
||||||
)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// 非组件(顺便排除脏数据)
|
|
||||||
if (key !== 'editCanvasConfig' && key !== 'requestGlobalConfig') return
|
|
||||||
Object.assign((chartEditStore as any)[key], fileData[key])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export const useFile = () => {
|
export const useFile = () => {
|
||||||
const importUploadFileListRef = ref()
|
const importUploadFileListRef = ref()
|
||||||
|
const { updateComponent } = useSync()
|
||||||
|
|
||||||
// 上传-前置
|
// 上传-前置
|
||||||
//@ts-ignore
|
//@ts-ignore
|
||||||
|
66
src/views/chart/hooks/useSync.hook.ts
Normal file
66
src/views/chart/hooks/useSync.hook.ts
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
import { getUUID } from '@/utils'
|
||||||
|
import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore'
|
||||||
|
import { ChartEditStoreEnum, ChartEditStorage } from '@/store/modules/chartEditStore/chartEditStore.d'
|
||||||
|
import { useChartHistoryStore } from '@/store/modules/chartHistoryStore/chartHistoryStore'
|
||||||
|
import { fetchChartComponent, fetchConfigComponent, createComponent } from '@/packages/index'
|
||||||
|
import { CreateComponentType } from '@/packages/index.d'
|
||||||
|
|
||||||
|
// 请求处理
|
||||||
|
export const useSync = () => {
|
||||||
|
const chartEditStore = useChartEditStore()
|
||||||
|
const chartHistoryStore = useChartHistoryStore()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* * 组件动态注册
|
||||||
|
* @param projectData 项目数据
|
||||||
|
* @param isSplace 是否替换数据
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
const updateComponent = async (projectData: ChartEditStorage, isSplace = false) => {
|
||||||
|
if (isSplace) {
|
||||||
|
// 清除列表
|
||||||
|
chartEditStore.componentList = []
|
||||||
|
// 清除历史记录
|
||||||
|
chartHistoryStore.clearBackStack()
|
||||||
|
chartHistoryStore.clearForwardStack()
|
||||||
|
}
|
||||||
|
// 列表组件注册
|
||||||
|
projectData.componentList.forEach(async (e: CreateComponentType) => {
|
||||||
|
if (!window['$vue'].component(e.chartConfig.chartKey)) {
|
||||||
|
window['$vue'].component(
|
||||||
|
e.chartConfig.chartKey,
|
||||||
|
fetchChartComponent(e.chartConfig)
|
||||||
|
)
|
||||||
|
window['$vue'].component(
|
||||||
|
e.chartConfig.conKey,
|
||||||
|
fetchConfigComponent(e.chartConfig)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
// 数据赋值
|
||||||
|
for (const key in projectData) {
|
||||||
|
// 组件
|
||||||
|
if (key === ChartEditStoreEnum.COMPONENT_LIST) {
|
||||||
|
for (const comItem of projectData[key]) {
|
||||||
|
// 补充 class 上的方法
|
||||||
|
let newComponent: CreateComponentType = await createComponent(
|
||||||
|
comItem.chartConfig
|
||||||
|
)
|
||||||
|
chartEditStore.addComponentList(
|
||||||
|
Object.assign(newComponent, {...comItem, id: getUUID()}),
|
||||||
|
false,
|
||||||
|
true
|
||||||
|
)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// 非组件(顺便排除脏数据)
|
||||||
|
if (key !== 'editCanvasConfig' && key !== 'requestGlobalConfig') return
|
||||||
|
Object.assign((chartEditStore as any)[key], projectData[key])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
updateComponent
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user