diff --git a/src/views/boardGenerate/index.vue b/src/views/boardGenerate/index.vue
index 84f3606..bfce25d 100644
--- a/src/views/boardGenerate/index.vue
+++ b/src/views/boardGenerate/index.vue
@@ -408,6 +408,21 @@
菜单
+
+
+
+
+ 树状图
+
@@ -492,99 +507,99 @@
>
-
- handleResizeStop(e, areaNodeProps)" />
+
+ handleResizeStop(e, props)" />
-
- handleResizeStop(e, customBoardNodeProps)" />
+
+ handleResizeStop(e, props)" />
-
- handleResizeStop(e, customDataNodeProps)" />
+
+ handleResizeStop(e, props)" />
-
- handleResizeStop(e, lineNodeProps)" />
+
+ handleResizeStop(e, props)" />
-
- handleResizeStop(e, multiLinesNodeProps)" />
+
+ handleResizeStop(e, props)" />
-
- handleResizeStop(e, curveNodeProps)" />
+
+ handleResizeStop(e, props)" />
-
- handleResizeStop(e, multiCurvesNodeProps)" />
+
+ handleResizeStop(e, props)" />
-
- handleResizeStop(e, lineBarNodeProps)" />
+
+ handleResizeStop(e, props)" />
-
- handleResizeStop(e, barNodeProps)" />
+
+ handleResizeStop(e, props)" />
-
- handleResizeStop(e, backgroundBarNodeProps)" />
+
+ handleResizeStop(e, props)" />
-
- handleResizeStop(e, multiBarsNodeProps)" />
+
+ handleResizeStop(e, props)" />
-
- handleResizeStop(e, pieNodeProps)" />
+
+ handleResizeStop(e, props)" />
-
- handleResizeStop(e, annularNodeProps)" />
+
+ handleResizeStop(e, props)" />
-
- handleResizeStop(e, radarNodeProps)" />
+
+ handleResizeStop(e, props)" />
-
- handleResizeStop(e, dashboardNodeProps)" />
+
+ handleResizeStop(e, props)" />
-
- handleResizeStop(e, nightingaleRoseDiagramNodeProps)" />
+
+ handleResizeStop(e, props)" />
-
- handleResizeStop(e, carouselNodeProps)" />
+
+ handleResizeStop(e, props)" />
-
- handleResizeStop(e, dataNodeProps)" />
+
+ handleResizeStop(e, props)" />
-
- handleResizeStop(e, textNodeProps)" />
+
+ handleResizeStop(e, props)" />
@@ -627,9 +642,9 @@
@resize="(e) => handleResizeStop(e, selectNodeProps)" />
-
- handleResizeStop(e, timeNodeProps)" />
+
+ handleResizeStop(e, props)" />
@@ -662,9 +677,13 @@
@resize="(e) => handleResizeStop(e, paginationNodeProps)" />
-
- handleResizeStop(e, menuNodeProps)" />
+
+ handleResizeStop(e, props)" />
+
+
+ handleResizeStop(e, props)" />
@@ -988,6 +1007,12 @@
+
+
+
+
+
+
@@ -1037,6 +1062,9 @@
+
+
+
@@ -1282,6 +1310,14 @@
+
+
+ 配置树
+
+
+
+
+
@@ -1581,6 +1617,9 @@
+
+
+
diff --git a/src/views/boardGenerate/nodes/advancedComponents/menuNode.vue b/src/views/boardGenerate/nodes/advancedComponents/menuNode.vue
index 5d9c620..79015e9 100644
--- a/src/views/boardGenerate/nodes/advancedComponents/menuNode.vue
+++ b/src/views/boardGenerate/nodes/advancedComponents/menuNode.vue
@@ -7,25 +7,28 @@
-
+
diff --git a/src/views/boardGenerate/nodes/advancedComponents/tree/index.vue b/src/views/boardGenerate/nodes/advancedComponents/tree/index.vue
new file mode 100644
index 0000000..423e746
--- /dev/null
+++ b/src/views/boardGenerate/nodes/advancedComponents/tree/index.vue
@@ -0,0 +1,72 @@
+
+
+
$emit('resize', e)" color="#fff" v-if="!props.isView && !props.isHideHandle && props.selected"
+ @resize="resize" />
+
+
+ {{ props.inputData?.text || props.data.options.text
+ }}
+
+
+
+
+
+
+
diff --git a/src/views/boardGenerate/nodes/advancedComponents/tree/nodes/item.vue b/src/views/boardGenerate/nodes/advancedComponents/tree/nodes/item.vue
new file mode 100644
index 0000000..604caaa
--- /dev/null
+++ b/src/views/boardGenerate/nodes/advancedComponents/tree/nodes/item.vue
@@ -0,0 +1,76 @@
+
+
+
$emit('resize', e)" color="#000" v-if="!props.isView && !props.isHideHandle && props.selected"
+ @resize="resize" />
+
+
+
+ {{ !props.isView && !props.isHideHandle && props.selected}}
+ {{props.dimensions}}
+
+
+
+
+
+
+
+
diff --git a/src/views/boardGenerate/nodes/advancedComponents/tree/option.vue b/src/views/boardGenerate/nodes/advancedComponents/tree/option.vue
new file mode 100644
index 0000000..53d4977
--- /dev/null
+++ b/src/views/boardGenerate/nodes/advancedComponents/tree/option.vue
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+ 文字
+
+
+
+
+
+
+ - handleResizeStop(e, props)"/>
+
+
+
+
+
+
+
+
diff --git a/src/views/boardGenerate/nodes/advancedComponents/tree/tool.js b/src/views/boardGenerate/nodes/advancedComponents/tree/tool.js
new file mode 100644
index 0000000..0c1a73a
--- /dev/null
+++ b/src/views/boardGenerate/nodes/advancedComponents/tree/tool.js
@@ -0,0 +1,69 @@
+import { useVueFlow } from '@vue-flow/core';
+import { v4 as uuidv4 } from 'uuid';
+
+
+const getId = ( ) => {
+ return `${uuidv4().replaceAll('-', '_')}`;
+};
+
+
+const getNodeSize = (e) => {
+ return { width: 100, height: 100 };
+};
+const tool = () => {
+ const nodeType = ref('');
+ const { addNodes, screenToFlowCoordinate, onNodesInitialized, updateNode } = useVueFlow();
+ const onDragStart = (event, type, data) => {
+ if (event.dataTransfer) {
+ event.dataTransfer.setData('application/vueflow', type);
+ event.dataTransfer.effectAllowed = 'move';
+ }
+
+ nodeType.value = type;
+ document.addEventListener('drop', onDragEnd);
+ };
+ const onDragEnd = () => {
+ nodeType.value = null;
+ document.removeEventListener('drop', onDragEnd);
+ };
+ const onDrop = (event) => {
+ const dimensions = getNodeSize();
+
+ const position = screenToFlowCoordinate({
+ x: event.clientX, y: event.clientY
+ });
+
+ const nodeId = getId( );
+ const newNode = {
+ id: nodeId,
+ draggable: true,
+ type: nodeType.value,
+ dimensions,
+ position,
+ data: { options: {} }
+ };
+
+
+ const { off } = onNodesInitialized(() => {
+ updateNode(nodeId, (node) => ({
+ position: { x: node.position.x - node.dimensions.width / 2, y: node.position.y - node.dimensions.height / 2 }
+ }));
+
+ off();
+ });
+ addNodes(newNode);
+
+ };
+ const onDragOver = (event) => {
+ event.preventDefault();
+
+
+ if (event.dataTransfer) {
+ event.dataTransfer.dropEffect = 'move';
+ }
+ };
+ return {
+ onDragStart, onDragEnd, onDrop, onDragOver
+ };
+};
+export default tool;
diff --git a/src/views/boardGenerate/tool.js b/src/views/boardGenerate/tool.js
index de80dc1..c23cd05 100644
--- a/src/views/boardGenerate/tool.js
+++ b/src/views/boardGenerate/tool.js
@@ -359,7 +359,9 @@ const getOption = (e) => {
field: '', color: '#fff',fontSize: 22,number: 123,numQuantity:3, backgroundColor: 'rgba(180, 180, 180, 0.2)', isBorder: true, borderColor: '#fff'
};
} else if (e === 'menu') {
- return { text: '文字', align: '', color: '#fff' };
+ return { menuField: '', activeField: '', field: '', color: '#fff', activeColor: '#ffd04b' };
+ } else if (e === 'tree') {
+ return { level: 2,treeOptions:[] };
} else {
return {};
}
@@ -383,8 +385,12 @@ const getNodeSize = (e) => {
return { width: 300, height: 300 };
} else if (e === 'map') {
return { width: 100, height: 30 };
+ } else if (e === 'menu') {
+ return { width: 200, height: 800 };
} else if (e === 'scrollTable' || e === 'table') {
return { width: 500, height: 300 };
+ } else if (e === 'tree') {
+ return { width: 800, height: 800 };
} else {
return { width: 100, height: 100 };
}
@@ -414,9 +420,7 @@ const nameEnum = {
icon: '图标',
video: '视频',
timeline: '时间线',
- digitalFlop: '数字翻牌器',
- scrollTable: '滚动表格',
- background: '背景'
+ digitalFlop: '数字翻牌器', scrollTable: '滚动表格', background: '背景', tree: '树状图'
};
const tool = () => {
const nodeType = ref('');
diff --git a/src/views/boardGenerate/view.vue b/src/views/boardGenerate/view.vue
index 500dbfc..199d9c9 100644
--- a/src/views/boardGenerate/view.vue
+++ b/src/views/boardGenerate/view.vue
@@ -138,6 +138,10 @@
+
+
+
@@ -183,6 +187,7 @@ import CarouselNode from './nodes/board/carouselNode.vue';
import StaticDataNode from './nodes/data/staticDataNode.vue';
import TableNode from './nodes/form/tableNode.vue';
import ScrollTableNode from './nodes/form/scrollTableNode.vue';
+import MenuNode from './nodes/advancedComponents/menuNode.vue'
import { getBoardApi } from '@/views/boardGenerate/api/boardList';
const router = useRouter();
diff --git a/src/views/print/index.vue b/src/views/print/index.vue
index 0e17fdc..5a45a95 100644
--- a/src/views/print/index.vue
+++ b/src/views/print/index.vue
@@ -615,7 +615,6 @@ const setPage = (type, width, height) => {
};
const zoomChange = (e) => {
- console.log(flowRef.value.autoPanSpeed);
flowRef.value.viewport.x = 0;
flowRef.value.viewport.y = 0;
let num = zoom.value;