|
|
|
@ -1,7 +1,7 @@
|
|
|
|
<template>
|
|
|
|
<template>
|
|
|
|
<div style="height: calc(90vh - 111px - 30px);position: relative;">
|
|
|
|
<div style="height: calc(90vh - 111px - 30px);position: relative;">
|
|
|
|
<el-card class="moduleCard" shadow="never" :draggable="true"
|
|
|
|
<el-card class="moduleCard" shadow="never" :draggable="true"
|
|
|
|
@dragstart="onDragStart($event, 'itemNode')" :style="{display:'inline-block',margin:'0 4px 4px 0'}"
|
|
|
|
@dragstart="onDragStart($event, 'itemNode',checkNodeId)" :style="{display:'inline-block',margin:'0 4px 4px 0'}"
|
|
|
|
:body-style="{padding:'4px 0'}">
|
|
|
|
:body-style="{padding:'4px 0'}">
|
|
|
|
<template #header>
|
|
|
|
<template #header>
|
|
|
|
<div style="width: 100%;height: 100%;text-align: center">
|
|
|
|
<div style="width: 100%;height: 100%;text-align: center">
|
|
|
|
@ -17,10 +17,11 @@
|
|
|
|
</el-card>
|
|
|
|
</el-card>
|
|
|
|
<div class="content" @drop="onDrop">
|
|
|
|
<div class="content" @drop="onDrop">
|
|
|
|
<VueFlow
|
|
|
|
<VueFlow
|
|
|
|
|
|
|
|
id="flowB"
|
|
|
|
:min-zoom="0.01"
|
|
|
|
:min-zoom="0.01"
|
|
|
|
:zoomOnScroll="false"
|
|
|
|
:zoomOnScroll="false"
|
|
|
|
:panOnDrag="false"
|
|
|
|
:panOnDrag="false"
|
|
|
|
ref="flowRef"
|
|
|
|
ref="flowRef1"
|
|
|
|
v-model:nodes="nodes"
|
|
|
|
v-model:nodes="nodes"
|
|
|
|
v-model:edges="edges"
|
|
|
|
v-model:edges="edges"
|
|
|
|
fit-view-on-init
|
|
|
|
fit-view-on-init
|
|
|
|
@ -35,7 +36,7 @@
|
|
|
|
<Background :size="1" :gap="20" pattern-color="#000" style="background-color: #fff" />
|
|
|
|
<Background :size="1" :gap="20" pattern-color="#000" style="background-color: #fff" />
|
|
|
|
|
|
|
|
|
|
|
|
<template #node-itemNode="props">
|
|
|
|
<template #node-itemNode="props">
|
|
|
|
<Item v-bind="props" @resize="(e) => handleResizeStop(e, props)"/>
|
|
|
|
<Item v-bind="props" @resize="(e) => handleResizeStop(e, props)" />
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
</VueFlow>
|
|
|
|
</VueFlow>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
@ -48,7 +49,6 @@ import tool from './tool.js';
|
|
|
|
import { Background } from '@vue-flow/background';
|
|
|
|
import { Background } from '@vue-flow/background';
|
|
|
|
|
|
|
|
|
|
|
|
import Item from './nodes/item.vue';
|
|
|
|
import Item from './nodes/item.vue';
|
|
|
|
import AreaNode from '@/views/print/nodes/areaNode.vue';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const { onDragStart, onDrop, onDragOver } = tool();
|
|
|
|
const { onDragStart, onDrop, onDragOver } = tool();
|
|
|
|
@ -57,8 +57,8 @@ const {
|
|
|
|
updateNode,
|
|
|
|
updateNode,
|
|
|
|
removeNodes,
|
|
|
|
removeNodes,
|
|
|
|
addNodes
|
|
|
|
addNodes
|
|
|
|
} = useVueFlow();
|
|
|
|
} = useVueFlow({ id: 'flowB' });
|
|
|
|
const flowRef = ref();
|
|
|
|
const flowRef1 = ref();
|
|
|
|
|
|
|
|
|
|
|
|
const props = defineProps({
|
|
|
|
const props = defineProps({
|
|
|
|
data: {
|
|
|
|
data: {
|
|
|
|
@ -72,7 +72,7 @@ const props = defineProps({
|
|
|
|
});
|
|
|
|
});
|
|
|
|
const nodes = ref([]);
|
|
|
|
const nodes = ref([]);
|
|
|
|
const edges = ref([]);
|
|
|
|
const edges = ref([]);
|
|
|
|
|
|
|
|
const checkNodeId = ref('')
|
|
|
|
const logEvent = async (eventname, event) => {
|
|
|
|
const logEvent = async (eventname, event) => {
|
|
|
|
switch (eventname) {
|
|
|
|
switch (eventname) {
|
|
|
|
case 'connect':
|
|
|
|
case 'connect':
|
|
|
|
@ -92,6 +92,12 @@ const logEvent = async (eventname, event) => {
|
|
|
|
case 'paneClick':
|
|
|
|
case 'paneClick':
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case 'click':
|
|
|
|
case 'click':
|
|
|
|
|
|
|
|
console.log(event.node)
|
|
|
|
|
|
|
|
if(event.node.id.startsWith("root")){
|
|
|
|
|
|
|
|
checkNodeId.value = event.node.id
|
|
|
|
|
|
|
|
}else{
|
|
|
|
|
|
|
|
checkNodeId.value = ''
|
|
|
|
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case 'nodeDrag':
|
|
|
|
case 'nodeDrag':
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
@ -113,7 +119,7 @@ const handleResizeStop = (event, node) => {
|
|
|
|
});
|
|
|
|
});
|
|
|
|
};
|
|
|
|
};
|
|
|
|
onMounted(async () => {
|
|
|
|
onMounted(async () => {
|
|
|
|
flowRef.value.setTransform({
|
|
|
|
flowRef1.value.setTransform({
|
|
|
|
x: 0,
|
|
|
|
x: 0,
|
|
|
|
y: 0,
|
|
|
|
y: 0,
|
|
|
|
zoom: 1
|
|
|
|
zoom: 1
|
|
|
|
@ -121,24 +127,33 @@ onMounted(async () => {
|
|
|
|
await nextTick();
|
|
|
|
await nextTick();
|
|
|
|
nodes.value = [];
|
|
|
|
nodes.value = [];
|
|
|
|
await nextTick();
|
|
|
|
await nextTick();
|
|
|
|
addNodes({
|
|
|
|
console.log(props.level);
|
|
|
|
id: `item1`,
|
|
|
|
Array(props.level).fill(0).forEach((e, index) => {
|
|
|
|
type: 'itemNode',
|
|
|
|
addNodes({
|
|
|
|
draggable:false,
|
|
|
|
id: `root_${index}`,
|
|
|
|
position: {
|
|
|
|
type: 'itemNode',
|
|
|
|
x: 0,
|
|
|
|
draggable: false,
|
|
|
|
y: 200
|
|
|
|
position: {
|
|
|
|
},
|
|
|
|
x: index * ((300) + (50)),
|
|
|
|
dimensions: { 'width': 300, 'height': 200 },
|
|
|
|
y: 200
|
|
|
|
data: {}
|
|
|
|
},
|
|
|
|
|
|
|
|
dimensions: { width: 300, height: 200 },
|
|
|
|
|
|
|
|
data: {}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
if (index > 0) {
|
|
|
|
|
|
|
|
addEdges({
|
|
|
|
|
|
|
|
id: `edge_${index}`,
|
|
|
|
|
|
|
|
source: `root_${index - 1}`,
|
|
|
|
|
|
|
|
target: `root_${index}`,
|
|
|
|
|
|
|
|
type: 'bezier',
|
|
|
|
|
|
|
|
animated: true,
|
|
|
|
|
|
|
|
sourceHandle: `root_${index - 1}.-r`,
|
|
|
|
|
|
|
|
targetHandle: `root_${index}.-l`,
|
|
|
|
|
|
|
|
style: { stroke: '#409EFF' }
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
setTimeout(() => {
|
|
|
|
|
|
|
|
console.log(JSON.stringify(nodes.value));
|
|
|
|
|
|
|
|
}, 1000);
|
|
|
|
|
|
|
|
});
|
|
|
|
});
|
|
|
|
watch(() => nodes.value, () => {
|
|
|
|
|
|
|
|
console.log(JSON.stringify(nodes.value));
|
|
|
|
|
|
|
|
}, { deep: true });
|
|
|
|
|
|
|
|
</script>
|
|
|
|
</script>
|
|
|
|
<style lang="less" scoped>
|
|
|
|
<style lang="less" scoped>
|
|
|
|
.levelItem {
|
|
|
|
.levelItem {
|
|
|
|
|