深度画布初始化loading

This commit is contained in:
lzp
2026-03-19 13:45:20 +08:00
parent d9ababd87c
commit 6aadead374
3 changed files with 15 additions and 33 deletions

View File

@@ -53,7 +53,7 @@
zoom: { default: 1, type: Number }, zoom: { default: 1, type: Number },
step: { default: 0.1, type: Number } step: { default: 0.1, type: Number }
}) })
const emit = defineEmits(['export', 'export-local', 'import-local', 'export-close', 'workbench']) const emit = defineEmits(['export', 'workbench'])
const importLocalImage = inject('importLocalImage') as (isRecord?: boolean) => void const importLocalImage = inject('importLocalImage') as (isRecord?: boolean) => void
const stateManager = inject('stateManager') as any const stateManager = inject('stateManager') as any
const toolManager = inject('toolManager') as any const toolManager = inject('toolManager') as any

View File

@@ -6,12 +6,7 @@
<template v-if="isReady"> <template v-if="isReady">
<layer-panel /> <layer-panel />
<details-panel /> <details-panel />
<depth-header-tools <depth-header-tools @export="exportCanvas" @workbench="(v) => emit('workbench', v)" />
@export="exportCanvas"
@export-local="exportCanvasToLocalStorage"
@import-local="importCanvasFromLocalStorage"
@workbench="(v) => emit('workbench', v)"
/>
<brush-control-panel :currentTool="toolManager.currentTool.value" /> <brush-control-panel :currentTool="toolManager.currentTool.value" />
<zoom <zoom
:zoom="canvasManager.currentZoom.value / 100" :zoom="canvasManager.currentZoom.value / 100"
@@ -44,6 +39,9 @@
import { KeyEventManager } from './manager/events/KeyEventManager' import { KeyEventManager } from './manager/events/KeyEventManager'
import { ObjectManager } from './manager/ObjectManager' import { ObjectManager } from './manager/ObjectManager'
import { useGlobalStore } from '@/stores'
const globalStore = useGlobalStore()
const emit = defineEmits(['workbench', 'close']) const emit = defineEmits(['workbench', 'close'])
const props = defineProps({ const props = defineProps({
config: { config: {
@@ -88,6 +86,7 @@
const observer = ref(null) const observer = ref(null)
onMounted(async () => { onMounted(async () => {
globalStore.setLoading(true)
keyEventManager.registerEvents() keyEventManager.registerEvents()
const url = props.config.url || '' const url = props.config.url || ''
const json = props.config.json || '' const json = props.config.json || ''
@@ -100,6 +99,7 @@
url: json ? '' : url url: json ? '' : url
}) })
if (json) await canvasManager.loadJSON(json) if (json) await canvasManager.loadJSON(json)
globalStore.setLoading(false)
stateManager.onMounted() stateManager.onMounted()
canvasManager.onMounted() canvasManager.onMounted()
@@ -162,38 +162,20 @@
const exportCanvas = () => { const exportCanvas = () => {
// 导出图片 // 导出图片
// exportCanvasToImage(canvasManager.canvas).then((url) => { exportCanvasToImage(canvasManager.canvas).then((url) => {
// const a = document.createElement('a') const a = document.createElement('a')
// a.href = url a.href = url
// a.download = 'canvas.png' a.download = 'canvas.png'
// a.click() a.click()
// }) })
console.log(canvasManager.getCanvasJSON()) // console.log(canvasManager.getCanvasJSON())
// const object = canvasManager.getCanvasDisUrlJSON() // const object = canvasManager.getCanvasDisUrlJSON()
// console.log(object) // console.log(object)
// const canvas = canvasManager.processCanvasDisUrlJSON(object) // const canvas = canvasManager.processCanvasDisUrlJSON(object)
// console.log(canvas) // console.log(canvas)
} }
// 导出到本地存储
const exportCanvasToLocalStorage = () => {
const json = canvasManager.getCanvasJSON()
localStorage.setItem('canvasJSON', json)
}
// 从本地存储导入
const importCanvasFromLocalStorage = () => {
const json = localStorage.getItem('canvasJSON')
if (!json) return
canvasManager.loadJSON(json).then((success) => {
if (success) {
console.log('导入成功')
} else {
console.log('导入失败')
}
stateManager.clearState(true)
})
}
</script> </script>
<style lang="less"> <style lang="less">
@import '@vue-flow/core/dist/style.css'; @import '@vue-flow/core/dist/style.css';

View File

@@ -28,7 +28,7 @@
dialogVisible.value = false dialogVisible.value = false
const json = options.json const json = options.json
sessionStorage.setItem('canvasJson_' + config.value.id, json) sessionStorage.setItem('canvasJson_' + config.value.id, json)
config.value.onWorkbench?.({ url: options.url, json }) config.value.onWorkbench?.({ url: options.url })
} }
// 关闭 // 关闭
const onClose = () => { const onClose = () => {