Browse Source

Merge remote-tracking branch 'origin/master'

master
liupeng 7 months ago
parent
commit
ae92a9c4e1
  1. 2
      src/designer/Model2DEditor.vue
  2. 31
      src/designer/viewWidgets/IWidgets.ts
  3. 70
      src/designer/viewWidgets/alarm/AlarmView.vue
  4. 107
      src/designer/viewWidgets/logger/LoggerView.vue
  5. 82
      src/designer/viewWidgets/modeltree/ModeltreeView.vue
  6. 99
      src/designer/viewWidgets/modeltree/ModeltreeViewJs.js
  7. 14
      src/designer/viewWidgets/monitor/MonitorView.vue
  8. 107
      src/designer/viewWidgets/property/PropertyView.vue
  9. 28
      src/designer/viewWidgets/script/ScriptView.vue
  10. 67
      src/designer/viewWidgets/task/TaskView.vue
  11. 34
      src/designer/viewWidgets/toolbox/ToolboxView.vue
  12. 49
      src/views/ModelMain.vue

2
src/designer/ModelEditor.vue → src/designer/Model2DEditor.vue

@ -39,7 +39,7 @@
import { renderIcon } from '@/utils/webutils.ts' import { renderIcon } from '@/utils/webutils.ts'
export default { export default {
name: 'ModelEditor', name: 'Model2DEditor',
components: { components: {
renderIcon renderIcon
}, },

31
src/designer/viewWidgets/IWidgets.ts

@ -0,0 +1,31 @@
import { defineComponent } from 'vue'
import { renderIcon } from '@/utils/webutils.js'
export type IWidgetData = {
/**
*
*/
isActivated: boolean
}
export default defineComponent({
activated() {
this.isActivated = true
console.log('activated', this.$.type.name)
},
deactivated() {
this.isActivated = false
},
emits: ['close'],
data() {
return {
isActivated: false
} as IWidgetData
},
methods: {
renderIcon,
closeMe() {
this.$emit('close')
}
}
})

70
src/designer/viewWidgets/alarm/AlarmView.vue

@ -1,3 +1,71 @@
<template> <template>
AlarmView <div class="title">
告警面板
<el-input v-model="searchKeyword" size="small" style="width: 240px" placeholder="Search">
<template #prefix>
<component :is="renderIcon('element Search')"></component>
</template>
</el-input>
<span class="close" @click="closeMe">
<component :is="renderIcon('element Close')" />
</span>
</div>
<div class="calc-right-panel">
AlarmView_1<br />
AlarmView_2<br />
AlarmView_3<br />
AlarmView_4<br />
AlarmView_5<br />
AlarmView_6<br />
AlarmView_7<br />
AlarmView_8<br />
AlarmView_9<br />
AlarmView_10<br />
AlarmView_11<br />
AlarmView_12<br />
AlarmView_13<br />
AlarmView_14<br />
AlarmView_15<br />
AlarmView_16<br />
AlarmView_17<br />
AlarmView_18<br />
AlarmView_19<br />
AlarmView_20<br />
AlarmView_21<br />
AlarmView_22<br />
AlarmView_23<br />
AlarmView_24<br />
AlarmView_25<br />
AlarmView_26<br />
AlarmView_27<br />
AlarmView_28<br />
AlarmView_29<br />
AlarmView_30<br />
AlarmView_31<br />
AlarmView_32<br />
AlarmView_33<br />
AlarmView_34<br />
AlarmView_35<br />
AlarmView_36<br />
AlarmView_37<br />
AlarmView_38<br />
AlarmView_39<br />
AlarmView_40<br />
</div>
</template> </template>
<script>
import IWidgets from '../IWidgets.js'
export default {
name: 'AlarmView',
webSocketSubscribe: ['alarm'],
emits: ['close'],
mixins: [IWidgets],
data() {
return {
searchKeyword: ''
}
}
}
</script>

107
src/designer/viewWidgets/logger/LoggerView.vue

@ -1,42 +1,69 @@
<template> <template>
LoggerView1<br /> <div class="title">
LoggerView2<br /> 系统日志
LoggerView3<br /> <el-input v-model="searchKeyword" size="small" style="width: 240px" placeholder="Search">
LoggerView4<br /> <template #prefix>
LoggerView5<br /> <component :is="renderIcon('element Search')"></component>
LoggerView6<br /> </template>
LoggerView7<br /> </el-input>
LoggerView8<br /> <span class="close" @click="closeMe">
LoggerView9<br /> <component :is="renderIcon('element Close')"></component>
LoggerView10<br /> </span>
LoggerView11<br /> </div>
LoggerView12<br /> <div class="calc-bottom-panel">
LoggerView13<br /> LoggerView1<br />
LoggerView14<br /> LoggerView2<br />
LoggerView15<br /> LoggerView3<br />
LoggerView16<br /> LoggerView4<br />
LoggerView17<br /> LoggerView5<br />
LoggerView18<br /> LoggerView6<br />
LoggerView19<br /> LoggerView7<br />
LoggerView20<br /> LoggerView8<br />
LoggerView21<br /> LoggerView9<br />
LoggerView22<br /> LoggerView10<br />
LoggerView23<br /> LoggerView11<br />
LoggerView24<br /> LoggerView12<br />
LoggerView25<br /> LoggerView13<br />
LoggerView26<br /> LoggerView14<br />
LoggerView27<br /> LoggerView15<br />
LoggerView28<br /> LoggerView16<br />
LoggerView29<br /> LoggerView17<br />
LoggerView30<br /> LoggerView18<br />
LoggerView31<br /> LoggerView19<br />
LoggerView32<br /> LoggerView20<br />
LoggerView33<br /> LoggerView21<br />
LoggerView34<br /> LoggerView22<br />
LoggerView35<br /> LoggerView23<br />
LoggerView36<br /> LoggerView24<br />
LoggerView37<br /> LoggerView25<br />
LoggerView38<br /> LoggerView26<br />
LoggerView39<br /> LoggerView27<br />
LoggerView40<br /> LoggerView28<br />
LoggerView29<br />
LoggerView30<br />
LoggerView31<br />
LoggerView32<br />
LoggerView33<br />
LoggerView34<br />
LoggerView35<br />
LoggerView36<br />
LoggerView37<br />
LoggerView38<br />
LoggerView39<br />
LoggerView40<br />
</div>
</template> </template>
<script>
import IWidgets from '../IWidgets.js'
export default {
name: 'LoggerView',
webSocketSubscribe: ['logs'],
mixins: [IWidgets],
data() {
return {
searchKeyword: ''
}
}
}
</script>

82
src/designer/viewWidgets/modeltree/ModeltreeView.vue

@ -1,80 +1,28 @@
<template> <template>
<div class="title"> <div class="title">
<el-cascader placeholder="选择楼层" size="small" v-model="currentLevel" :options="allLevels" filterable /> <el-input v-model="searchKeyword" size="small" style="flex-grow: 1; margin: 0 5px 0 0;" placeholder="Search">
<el-input v-model="searchKeyword" size="small" style="width: 240px" placeholder="Search">
<template #prefix> <template #prefix>
<component :is="renderIcon('element Search')"></component> <component :is="renderIcon('element Search')"></component>
</template> </template>
</el-input> </el-input>
<span class="close" @click="closeMe('hideLeft')"> <el-cascader placeholder="选择楼层" size="small" v-model="currentLevel" :options="allLevels" filterable
<component :is="renderIcon('element Close')" /> style="margin-right: 5px; width: 150px;" />
</span>
</div> </div>
<div class="calc-left-panel"> <div class="calc-left-panel">
ModeltreeView1<br /> <el-tree draggable node-key="id" :highlight-current="true"
ModeltreeView2<br /> :data="treedata" :expand-on-click-node="false" :auto-expand-parent="true"
ModeltreeView3<br /> :allow-drop="allowDrop" :allow-drag="allowDrag"
ModeltreeView4<br /> @node-drag-start="handleDragStart"
ModeltreeView5<br /> @node-drag-enter="handleDragEnter"
ModeltreeView6<br /> @node-drag-leave="handleDragLeave"
ModeltreeView7<br /> @node-drag-over="handleDragOver"
ModeltreeView8<br /> @node-drag-end="handleDragEnd"
ModeltreeView9<br /> @node-drop="handleDrop"
ModeltreeView10<br /> />
ModeltreeView11<br />
ModeltreeView12<br />
ModeltreeView13<br />
ModeltreeView14<br />
ModeltreeView15<br />
ModeltreeView16<br />
ModeltreeView17<br />
ModeltreeView18<br />
ModeltreeView19<br />
ModeltreeView20<br />
ModeltreeView21<br />
ModeltreeView22<br />
ModeltreeView23<br />
ModeltreeView24<br />
ModeltreeView25<br />
ModeltreeView26<br />
ModeltreeView27<br />
ModeltreeView28<br />
ModeltreeView29<br />
ModeltreeView30<br />
ModeltreeView31<br />
ModeltreeView32<br />
ModeltreeView33<br />
ModeltreeView34<br />
ModeltreeView35<br />
ModeltreeView36<br />
ModeltreeView37<br />
ModeltreeView38<br />
ModeltreeView39<br />
ModeltreeView40<br />
</div> </div>
</template> </template>
<script> <script>
import { renderIcon } from '@/utils/webutils.js' import ModeltreeViewJs from './ModeltreeViewJs.js'
export default { export default ModeltreeViewJs
name: 'ModeltreeView',
emits: ['close'],
data() {
return {
currentLevel: '',
searchKeyword: ''
}
},
methods: {
renderIcon,
closeMe(name) {
this.$emit('close', name)
}
},
computed: {
allLevels() {
return designer.allLevels
}
}
}
</script> </script>

99
src/designer/viewWidgets/modeltree/ModeltreeViewJs.js

@ -0,0 +1,99 @@
import { defineComponent } from 'vue'
import { renderIcon } from '@/utils/webutils.js'
import IWidgets from '../IWidgets.js'
export default defineComponent({
name: 'ModeltreeView',
mixins: [IWidgets],
data() {
return {
currentLevel: '',
searchKeyword: '',
treedata: data
}
},
methods: {
allowDrop(event) {
return true
},
allowDrag(event) {
return true
},
handleDragStart() {
},
handleDragEnter() {
},
handleDragLeave() {
},
handleDragOver() {
},
handleDragEnd() {
},
handleDrop() {
}
},
computed: {
allLevels() {
return designer.allLevels
}
}
})
const data = [
{
label: 'Level one 1',
children: [
{
label: 'Level two 1-1',
children: [
{
label: 'Level three 1-1-1'
}
]
}
]
},
{
label: 'Level one 2',
children: [
{
label: 'Level two 2-1',
children: [
{
label: 'Level three 2-1-1'
}
]
},
{
label: 'Level two 2-2',
children: [
{
label: 'Level three 2-2-1'
}
]
}
]
},
{
label: 'Level one 3',
children: [
{
label: 'Level two 3-1',
children: [
{
label: 'Level three 3-1-1'
}
]
},
{
label: 'Level two 3-2',
children: [
{
label: 'Level three 3-2-1'
}
]
}
]
}
]

14
src/designer/viewWidgets/monitor/MonitorView.vue

@ -6,7 +6,7 @@
<component :is="renderIcon('element Search')"></component> <component :is="renderIcon('element Search')"></component>
</template> </template>
</el-input> </el-input>
<span class="close" @click="closeMe('hideLeft')"> <span class="close" @click="closeMe">
<component :is="renderIcon('element Close')" /> <component :is="renderIcon('element Close')" />
</span> </span>
</div> </div>
@ -107,11 +107,12 @@
</div> </div>
</template> </template>
<script> <script>
import { renderIcon } from '@/utils/webutils.js' import IWidgets from '../IWidgets.js'
export default { export default {
name: 'MonitorView', name: 'MonitorView',
emits: ['close'], webSocketSubscribe: ['deviceStatus'],
mixins: [IWidgets],
data() { data() {
return { return {
searchKeyword: '', searchKeyword: '',
@ -122,12 +123,7 @@ export default {
idle: 0 idle: 0
} }
}, },
methods: { methods: {}
renderIcon,
closeMe(name) {
this.$emit('close', name)
}
}
} }
</script> </script>
<style lang="less"> <style lang="less">

107
src/designer/viewWidgets/property/PropertyView.vue

@ -1,44 +1,69 @@
<template> <template>
PropertyView1<br /> <div class="title">
PropertyView2<br /> 属性面板
PropertyView3<br /> <el-input v-model="searchKeyword" size="small" style="width: 240px" placeholder="Search">
PropertyView4<br /> <template #prefix>
PropertyView5<br /> <component :is="renderIcon('element Search')"></component>
PropertyView6<br /> </template>
PropertyView7<br /> </el-input>
PropertyView8<br /> <span class="close" @click="closeMe('hideReft')">
PropertyView9<br /> <component :is="renderIcon('element Close')" />
PropertyView10<br /> </span>
PropertyView11<br /> </div>
PropertyView12<br /> <div class="calc-right-panel">
PropertyView13<br /> PropertyView1<br />
PropertyView14<br /> PropertyView2<br />
PropertyView15<br /> PropertyView3<br />
PropertyView16<br /> PropertyView4<br />
PropertyView17<br /> PropertyView5<br />
PropertyView18<br /> PropertyView6<br />
PropertyView19<br /> PropertyView7<br />
PropertyView20<br /> PropertyView8<br />
PropertyView21<br /> PropertyView9<br />
PropertyView22<br /> PropertyView10<br />
PropertyView23<br /> PropertyView11<br />
PropertyView24<br /> PropertyView12<br />
PropertyView25<br /> PropertyView13<br />
PropertyView26<br /> PropertyView14<br />
PropertyView27<br /> PropertyView15<br />
PropertyView28<br /> PropertyView16<br />
PropertyView29<br /> PropertyView17<br />
PropertyView30<br /> PropertyView18<br />
PropertyView31<br /> PropertyView19<br />
PropertyView32<br /> PropertyView20<br />
PropertyView33<br /> PropertyView21<br />
PropertyView34<br /> PropertyView22<br />
PropertyView35<br /> PropertyView23<br />
PropertyView36<br /> PropertyView24<br />
PropertyView37<br /> PropertyView25<br />
PropertyView38<br /> PropertyView26<br />
PropertyView39<br /> PropertyView27<br />
PropertyView40<br /> PropertyView28<br />
PropertyView29<br />
PropertyView30<br />
PropertyView31<br />
PropertyView32<br />
PropertyView33<br />
PropertyView34<br />
PropertyView35<br />
PropertyView36<br />
PropertyView37<br />
PropertyView38<br />
PropertyView39<br />
PropertyView40<br />
</div>
</template> </template>
<script setup lang="ts"> <script>
import IWidgets from '../IWidgets.js'
export default {
name: 'PropertyView',
mixins: [IWidgets],
data() {
return {
searchKeyword: ''
}
}
}
</script> </script>

28
src/designer/viewWidgets/script/ScriptView.vue

@ -1,3 +1,29 @@
<template> <template>
ScriptView <div class="title">
脚本编辑
<el-input v-model="searchKeyword" size="small" style="width: 240px" placeholder="Search">
<template #prefix>
<component :is="renderIcon('element Search')"></component>
</template>
</el-input>
<span class="close" @click="closeMe">
<component :is="renderIcon('element Close')"></component>
</span>
</div>
<div class="calc-bottom-panel">
ScriptView
</div>
</template> </template>
<script>
import IWidgets from '@/designer/viewWidgets/IWidgets.js'
export default {
name: 'ScriptView',
mixins: [IWidgets],
data() {
return {
searchKeyword: ''
}
}
}
</script>

67
src/designer/viewWidgets/task/TaskView.vue

@ -1,22 +1,49 @@
<template> <template>
TaskView1<br /> <div class="title">
TaskView2<br /> 任务监视
TaskView3<br /> <el-input v-model="searchKeyword" size="small" style="width: 240px" placeholder="Search">
TaskView4<br /> <template #prefix>
TaskView5<br /> <component :is="renderIcon('element Search')"></component>
TaskView6<br /> </template>
TaskView7<br /> </el-input>
TaskView8<br /> <span class="close" @click="closeMe">
TaskView9<br /> <component :is="renderIcon('element Close')"></component>
TaskView10<br /> </span>
TaskView11<br /> </div>
TaskView12<br /> <div class="calc-bottom-panel">
TaskView13<br /> TaskView1<br />
TaskView14<br /> TaskView2<br />
TaskView15<br /> TaskView3<br />
TaskView16<br /> TaskView4<br />
TaskView17<br /> TaskView5<br />
TaskView18<br /> TaskView6<br />
TaskView19<br /> TaskView7<br />
TaskView20<br /> TaskView8<br />
TaskView9<br />
TaskView10<br />
TaskView11<br />
TaskView12<br />
TaskView13<br />
TaskView14<br />
TaskView15<br />
TaskView16<br />
TaskView17<br />
TaskView18<br />
TaskView19<br />
TaskView20<br />
</div>
</template> </template>
<script>
import IWidgets from '../IWidgets.js'
export default {
name: 'TaskView',
webSocketSubscribe: ['task'],
mixins: [IWidgets],
data() {
return {
searchKeyword: ''
}
}
}
</script>

34
src/designer/viewWidgets/toolbox/ToolboxView.vue

@ -6,7 +6,7 @@
<component :is="renderIcon('element Search')"></component> <component :is="renderIcon('element Search')"></component>
</template> </template>
</el-input> </el-input>
<span class="close" @click="closeMe('hideLeft')"> <span class="close" @click="closeMe">
<component :is="renderIcon('element Close')" /> <component :is="renderIcon('element Close')" />
</span> </span>
</div> </div>
@ -15,7 +15,7 @@
@open="handleOpen" @open="handleOpen"
@close="handleClose" @close="handleClose"
:default-openeds="defaultExpandedKeys" :default-openeds="defaultExpandedKeys"
> >
<el-sub-menu v-for="itemType in itemTypes" :title="itemType.label" :index="itemType.name"> <el-sub-menu v-for="itemType in itemTypes" :title="itemType.label" :index="itemType.name">
<template #title> <template #title>
<component :is="renderIcon(itemType.icon)" /> <component :is="renderIcon(itemType.icon)" />
@ -32,11 +32,12 @@
</div> </div>
</template> </template>
<script> <script>
import { renderIcon } from '@/utils/webutils.js'
import IWidgets from '../IWidgets.js'
export default { export default {
name: 'ToolboxView', name: 'ToolboxView',
emits: ['close'], mixins: [IWidgets],
data() { data() {
return { return {
searchKeyword: '', searchKeyword: '',
@ -113,7 +114,6 @@ export default {
} }
}, },
methods: { methods: {
renderIcon,
closeMe() { closeMe() {
this.$emit('close') this.$emit('close')
}, },
@ -124,34 +124,34 @@ export default {
console.log(key, keyPath) console.log(key, keyPath)
}, },
updateFilteredItemsAndExpand() { updateFilteredItemsAndExpand() {
const expandedKeys = []; const expandedKeys = []
this.itemTypes.forEach(itemType => { this.itemTypes.forEach(itemType => {
const filteredChildren = itemType.children.filter(item => const filteredChildren = itemType.children.filter(item =>
item.label.includes(this.searchKeyword) || item.name.includes(this.searchKeyword)); item.label.includes(this.searchKeyword) || item.name.includes(this.searchKeyword))
if (filteredChildren.length > 0) { if (filteredChildren.length > 0) {
expandedKeys.push(itemType.name); expandedKeys.push(itemType.name)
} }
itemType.children = filteredChildren; itemType.children = filteredChildren
}); })
this.defaultExpandedKeys = expandedKeys; this.defaultExpandedKeys = expandedKeys
} }
}, },
watch:{ watch: {
searchKeyword(newVal) { searchKeyword(newVal) {
if (!newVal) { if (!newVal) {
// //
this.itemTypes.forEach(itemType => { this.itemTypes.forEach(itemType => {
itemType.children = this.originalItemTypes.find(originalItemType => originalItemType.name === itemType.name).children; itemType.children = this.originalItemTypes.find(originalItemType => originalItemType.name === itemType.name).children
}); })
this.defaultExpandedKeys = []; this.defaultExpandedKeys = []
} else { } else {
this.updateFilteredItemsAndExpand(); this.updateFilteredItemsAndExpand()
} }
} }
}, },
mounted() { mounted() {
// itemTypes // itemTypes
this.originalItemTypes = JSON.parse(JSON.stringify(this.itemTypes)); this.originalItemTypes = JSON.parse(JSON.stringify(this.itemTypes))
} }
} }
</script> </script>

49
src/views/ModelMain.vue

@ -43,14 +43,16 @@
<SplitArea v-show="!hideLeft" class="section-left" :class="{'hidden-split':hideLeft}" <SplitArea v-show="!hideLeft" class="section-left" :class="{'hidden-split':hideLeft}"
:size="hideLeft ? 0 : sectionLeftSize"> :size="hideLeft ? 0 : sectionLeftSize">
<div class="section-item-wrap"> <div class="section-item-wrap">
<component v-if="calcLeftPanel?.component" :is="calcLeftPanel.component" <keep-alive>
@close="closeMe('hideLeft')" /> <component v-if="calcLeftPanel?.component" :is="calcLeftPanel.component"
@close="closeMe('hideLeft')" :key="calcLeftPanel?.name" />
</keep-alive>
</div> </div>
</SplitArea> </SplitArea>
<SplitArea class="section-center" :class="{'hidden-split':hideRight}" :size="calcCenterSize"> <SplitArea class="section-center" :class="{'hidden-split':hideRight}" :size="calcCenterSize">
<el-tabs type="card" class="section-tabs" v-model="centerActiveName" @tab-click="handleCenterTabClick"> <el-tabs type="card" class="section-tabs" v-model="centerActiveName" @tab-click="handleCenterTabClick">
<el-tab-pane label="2D视图" name="ModelEditor" lazy> <el-tab-pane label="2D视图" name="ModelEditor" lazy>
<ModelEditor /> <Model2DEditor />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="3D视图" name="ModelView" lazy> <el-tab-pane label="3D视图" name="ModelView" lazy>
<ModelView /> <ModelView />
@ -65,41 +67,20 @@
</SplitArea> </SplitArea>
<SplitArea v-show="!hideRight" class="section-right" :size="hideRight ? 0 : sectionRightSize"> <SplitArea v-show="!hideRight" class="section-right" :size="hideRight ? 0 : sectionRightSize">
<div class="section-item-wrap"> <div class="section-item-wrap">
<div class="title"> <keep-alive>
<component :is="calcRightPanel?.icon" /> <component v-if="calcRightPanel?.component" :is="calcRightPanel.component"
{{ calcRightPanel?.title }} @close="()=>closeMe('hideRight')" :key="calcRightPanel.name" />
<el-input v-model="sectionLeftSearch" size="small" style="width: 240px" placeholder="Search"> </keep-alive>
<template #prefix>
<component :is="renderIcon('element Search')"></component>
</template>
</el-input>
<span class="close" @click="closeMe('hideReft')"><component
:is="renderIcon('element Close')"></component></span>
</div>
<div class="calc-right-panel">
<component v-if="calcRightPanel?.component" :is="calcRightPanel.component" />
</div>
</div> </div>
</SplitArea> </SplitArea>
</Split> </Split>
</SplitArea> </SplitArea>
<SplitArea v-show="!hideBottom" :class="['section-bottom']" :size="hideBottom ? 0 : bottomSize" :min-size="0"> <SplitArea v-show="!hideBottom" :class="['section-bottom']" :size="hideBottom ? 0 : bottomSize" :min-size="0">
<div class="section-item-wrap"> <div class="section-item-wrap">
<div class="title"> <keep-alive>
<component :is="calcBottomPanel?.icon" /> <component v-if="calcBottomPanel?.component" :is="calcBottomPanel.component"
{{ calcBottomPanel?.title }} @close="()=>closeMe('hideBottom')" :key="calcBottomPanel.name" />
<el-input v-model="sectionLeftSearch" size="small" style="width: 240px" placeholder="Search"> </keep-alive>
<template #prefix>
<component :is="renderIcon('element Search')"></component>
</template>
</el-input>
<span class="close" @click="closeMe('hideBottom')">
<component :is="renderIcon('element Close')"></component>
</span>
</div>
<div class="calc-bottom-panel">
<component v-if="calcBottomPanel?.component" :is="calcBottomPanel.component" />
</div>
</div> </div>
</SplitArea> </SplitArea>
</Split> </Split>
@ -126,13 +107,13 @@ import './ModelMain.less'
import { ModelMainInit, ModelMainMounted, ModelMainUnmounted } from '@/views/ModelMainInit.js' import { ModelMainInit, ModelMainMounted, ModelMainUnmounted } from '@/views/ModelMainInit.js'
import { getRootMenu } from '@/runtime/DefineMenu.js' import { getRootMenu } from '@/runtime/DefineMenu.js'
import { getWidgetByName, getWidgetBySide, getAllWidget } from '@/runtime/DefineWidget.js' import { getWidgetByName, getWidgetBySide, getAllWidget } from '@/runtime/DefineWidget.js'
import ModelEditor from '@/designer/ModelEditor.vue' import Model2DEditor from '@/designer/Model2DEditor.vue'
import ModelView from '@/designer/ModelView.vue' import ModelView from '@/designer/ModelView.vue'
import { normalizeShortKey } from '@/utils/webutils.ts' import { normalizeShortKey } from '@/utils/webutils.ts'
export default { export default {
components: { ModelEditor, ModelView, Split, SplitArea }, components: { Model2DEditor, ModelView, Split, SplitArea },
created() { created() {
ModelMainInit() ModelMainInit()
}, },

Loading…
Cancel
Save