|
@@ -1,9 +1,14 @@
|
|
|
<template>
|
|
|
- <div class="scene-group">
|
|
|
+ <div
|
|
|
+ class="scene-group"
|
|
|
+ >
|
|
|
<div
|
|
|
class="top-bar"
|
|
|
:class="isConfirmingDeletion ? '' : 'show-icons-on-hover'"
|
|
|
@click="onClickTopBar"
|
|
|
+ @dragstart=onDragStartSceneGroup
|
|
|
+ @dragenter="onDragEnterSceneGroup"
|
|
|
+ draggable="true"
|
|
|
:style="{
|
|
|
paddingLeft: topBarPaddingLeft,
|
|
|
}"
|
|
@@ -73,6 +78,10 @@
|
|
|
|
|
|
<div class="group-content" v-if="isExpanded">
|
|
|
<template v-if="!(groupNode.children.length === 1 && groupNode.children[0].name === '默认二级分组')">
|
|
|
+ <InsertPositionTip
|
|
|
+ position-debug="1"
|
|
|
+ :level="level + 1"
|
|
|
+ ></InsertPositionTip>
|
|
|
<div
|
|
|
v-for="(item) of groupNode.children"
|
|
|
:key=item.id
|
|
@@ -87,7 +96,7 @@
|
|
|
@renameGroup="onInnerGroupRename"
|
|
|
@deleteGroup="onInnerGroupConfirmDelete"
|
|
|
/>
|
|
|
- <SceneInGroupInEditor
|
|
|
+ <SceneInGroup
|
|
|
v-else
|
|
|
:style="{
|
|
|
paddingLeft: sceneItemPaddingLeft,
|
|
@@ -96,25 +105,40 @@
|
|
|
@rename="onRenameScene"
|
|
|
@delete="onDeleteScene"
|
|
|
/>
|
|
|
+ <InsertPositionTip
|
|
|
+ position-debug="2"
|
|
|
+ :level="level + 1"
|
|
|
+ ></InsertPositionTip>
|
|
|
</div>
|
|
|
</template>
|
|
|
<template v-else>
|
|
|
<!-- 自动生成的默认二级分组不显示,里边的内容显示成直属于一级分组的效果。 -->
|
|
|
- <SceneInGroupInEditor
|
|
|
+ <InsertPositionTip
|
|
|
+ position-debug="3"
|
|
|
+ :level="level + 1"
|
|
|
+ ></InsertPositionTip>
|
|
|
+ <div
|
|
|
v-for="(item) of groupNode.children[0].children"
|
|
|
:key=item.id
|
|
|
- :style="{
|
|
|
- paddingLeft: sceneItemPaddingLeft,
|
|
|
- }"
|
|
|
- :sceneInfo="item"
|
|
|
- @rename="onRenameScene"
|
|
|
- @delete="onDeleteScene"
|
|
|
- />
|
|
|
+ >
|
|
|
+ <SceneInGroup
|
|
|
+ :style="{
|
|
|
+ paddingLeft: sceneItemPaddingLeft,
|
|
|
+ }"
|
|
|
+ :sceneInfo="item"
|
|
|
+ @rename="onRenameScene"
|
|
|
+ @delete="onDeleteScene"
|
|
|
+ />
|
|
|
+ <InsertPositionTip
|
|
|
+ position-debug="4"
|
|
|
+ :level="level + 1"
|
|
|
+ ></InsertPositionTip>
|
|
|
+ </div>
|
|
|
</template>
|
|
|
</div>
|
|
|
|
|
|
<div class="dialog" style="z-index: 2000" v-if="isShowSelectionWindow">
|
|
|
- <MaterialSelectorForEditor
|
|
|
+ <MaterialSelector
|
|
|
title="选择素材"
|
|
|
@cancle="isShowSelectionWindow = false"
|
|
|
@submit="onSubmitFromMaterialSelector"
|
|
@@ -127,15 +151,17 @@
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
-import SceneInGroupInEditor from "@/components/sceneInGroupInEditor.vue";
|
|
|
-import MaterialSelectorForEditor from "@/components/materialSelectorForEditor.vue";
|
|
|
+import SceneInGroup from "@/components/sceneInGroupInEditor.vue";
|
|
|
+import MaterialSelector from "@/components/materialSelectorForEditor.vue";
|
|
|
+import InsertPositionTip from "@/components/insertPositionTipInEditor.vue";
|
|
|
import { mapGetters } from "vuex";
|
|
|
|
|
|
export default {
|
|
|
name: 'SceneGroup',
|
|
|
components: {
|
|
|
- SceneInGroupInEditor,
|
|
|
- MaterialSelectorForEditor,
|
|
|
+ SceneInGroup,
|
|
|
+ MaterialSelector,
|
|
|
+ InsertPositionTip,
|
|
|
},
|
|
|
props: {
|
|
|
groupNode: {
|
|
@@ -280,6 +306,17 @@ export default {
|
|
|
this.$msg.success("操作成功")
|
|
|
}
|
|
|
},
|
|
|
+ onDragStartSceneGroup(e) {
|
|
|
+ e.dataTransfer.setData("application/target-type", `scene-group-${this.level}`)
|
|
|
+ e.dataTransfer.setData("application/target-id", this.groupNode.id)
|
|
|
+ // e.dataTransfer.setDragImage(e.target.children[1], -10, -18)
|
|
|
+ },
|
|
|
+ onDragEnterSceneGroup(e) {
|
|
|
+ if (!this.isExpanded) {
|
|
|
+ this.isExpanded = true
|
|
|
+ this.$bus.emit('scene-group-expanded', this.groupNode.id, this.level)
|
|
|
+ }
|
|
|
+ },
|
|
|
},
|
|
|
mounted() {
|
|
|
this.$bus.on('scene-group-expanded', this.onOtherSceneGroupExpanded)
|
|
@@ -292,7 +329,6 @@ export default {
|
|
|
|
|
|
<style lang="less" scoped>
|
|
|
.scene-group {
|
|
|
- margin-top: 6px;
|
|
|
.top-bar {
|
|
|
position: relative;
|
|
|
color: rgba(255, 255, 255, 0.6);
|
|
@@ -423,5 +459,7 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ .group-content {
|
|
|
+ }
|
|
|
}
|
|
|
</style>
|