提交 697fad6b authored 作者: 王鹏飞's avatar 王鹏飞

chore: update

上级 142fe4c0
...@@ -228,15 +228,9 @@ defineExpose({ generateImage, generatePdf }) ...@@ -228,15 +228,9 @@ defineExpose({ generateImage, generatePdf })
<h2>六、自动化营销旅程设计</h2> <h2>六、自动化营销旅程设计</h2>
<h3>(一)一级流程</h3> <h3>(一)一级流程</h3>
<p>本项目设计一级流程图如下。</p> <p>本项目设计一级流程图如下。</p>
<Flow <div style="height: 200px; margin: 20px 0">
id="report-flow-1" <Flow :nodes="tripStore.nodes" :edges="tripStore.edges" :zoom-on-scroll="false" :prevent-scrolling="false" :pan-on-drag="false" disabled></Flow>
:nodes="tripStore.nodes" </div>
:edges="tripStore.edges"
:zoom-on-scroll="false"
:prevent-scrolling="false"
:pan-on-drag="false"
disabled
style="height: 200px; margin: 20px 0"></Flow>
<p>相关节点设计说明如下:</p> <p>相关节点设计说明如下:</p>
<template v-for="(item, index) in tripStore.nodes" :key="item.id"> <template v-for="(item, index) in tripStore.nodes" :key="item.id">
<h4>{{ index + 1 }}{{ item.data.label || item.label }}节点</h4> <h4>{{ index + 1 }}{{ item.data.label || item.label }}节点</h4>
...@@ -253,16 +247,16 @@ defineExpose({ generateImage, generatePdf }) ...@@ -253,16 +247,16 @@ defineExpose({ generateImage, generatePdf })
<p>本项目如下一级流程节点设计了二级流程。</p> <p>本项目如下一级流程节点设计了二级流程。</p>
<template v-for="(item, index) in tripStore.node1List" :key="item.id"> <template v-for="(item, index) in tripStore.node1List" :key="item.id">
<h4>{{ index + 1 }}{{ item.data.label || item.label }}节点。该节点设计的二级流程图如下:</h4> <h4>{{ index + 1 }}{{ item.data.label || item.label }}节点。该节点设计的二级流程图如下:</h4>
<Flow <div style="height: 200px; margin: 20px 0" v-if="item.data.nodes?.length">
:process="2" <Flow
:nodes="item.data.nodes" :process="2"
:edges="item.data.edges" :nodes="item.data.nodes"
:zoom-on-scroll="false" :edges="item.data.edges"
:prevent-scrolling="false" :zoom-on-scroll="false"
:pan-on-drag="false" :prevent-scrolling="false"
disabled :pan-on-drag="false"
style="height: 200px; margin: 20px 0" disabled></Flow>
v-if="item.data.nodes?.length"></Flow> </div>
<p>该二级流程图节点说明如下:</p> <p>该二级流程图节点说明如下:</p>
<template v-for="(item, index) in item.data.nodes" :key="item.id"> <template v-for="(item, index) in item.data.nodes" :key="item.id">
<h4>{{ index + 1 }}{{ item.data.label || item.label }}节点</h4> <h4>{{ index + 1 }}{{ item.data.label || item.label }}节点</h4>
......
...@@ -57,7 +57,7 @@ async function layoutGraph(direction) { ...@@ -57,7 +57,7 @@ async function layoutGraph(direction) {
<NodeEnd :process="process" :disabled="disabled" v-bind="props" /> <NodeEnd :process="process" :disabled="disabled" v-bind="props" />
</template> </template>
<template #node-custom="props"> <template #node-custom="props">
<NodeCustom :process="process" :disabled="disabled" v-bind="props" /> <NodeCustom :process="process" :disabled="disabled" v-bind="props" @node-remove="layoutGraph('LR')" />
</template> </template>
<template #edge-custom="props"> <template #edge-custom="props">
<EdgeCustom :process="process" :disabled="disabled" v-bind="props" /> <EdgeCustom :process="process" :disabled="disabled" v-bind="props" />
......
...@@ -5,6 +5,7 @@ import NodeCustomForm from './NodeCustomForm.vue' ...@@ -5,6 +5,7 @@ import NodeCustomForm from './NodeCustomForm.vue'
const Flow = defineAsyncComponent(() => import('./Flow.vue')) const Flow = defineAsyncComponent(() => import('./Flow.vue'))
const props = defineProps(['label', 'data', 'process', 'selected', 'id', 'disabled']) const props = defineProps(['label', 'data', 'process', 'selected', 'id', 'disabled'])
const emit = defineEmits(['nodeRemove'])
const dialogVisible = ref(false) const dialogVisible = ref(false)
...@@ -93,6 +94,7 @@ function removeNodeBetweenEdges() { ...@@ -93,6 +94,7 @@ function removeNodeBetweenEdges() {
markerEnd: MarkerType.ArrowClosed markerEnd: MarkerType.ArrowClosed
} }
]) ])
emit('nodeRemove')
} }
</script> </script>
......
...@@ -48,30 +48,30 @@ export function useLayout(findNode) { ...@@ -48,30 +48,30 @@ export function useLayout(findNode) {
position: { x: nodeWithPosition.x, y: nodeWithPosition.y } position: { x: nodeWithPosition.x, y: nodeWithPosition.y }
} }
}) })
}
function sortNodes(nodes, edges) { function sortNodes(nodes, edges) {
const nodesMap = new Map() const nodesMap = new Map()
nodes.forEach(node => { nodes.forEach(node => {
nodesMap.set(node.id, node) nodesMap.set(node.id, node)
}) })
// Perform topological sort to determine the order of nodes // Perform topological sort to determine the order of nodes
const sortedNodes = [] const sortedNodes = []
const visited = new Set() const visited = new Set()
const visit = nodeId => { const visit = nodeId => {
if (!visited.has(nodeId)) { if (!visited.has(nodeId)) {
visited.add(nodeId) visited.add(nodeId)
edges.filter(edge => edge.source === nodeId).forEach(edge => visit(edge.target)) edges.filter(edge => edge.source === nodeId).forEach(edge => visit(edge.target))
sortedNodes.push(nodesMap.get(nodeId)) sortedNodes.push(nodesMap.get(nodeId))
}
} }
}
nodesMap.forEach((_, nodeId) => visit(nodeId)) nodesMap.forEach((_, nodeId) => visit(nodeId))
return sortedNodes.reverse() return sortedNodes.reverse()
}
} }
return { graph, layout, previousDirection } return { graph, layout, previousDirection }
......
...@@ -75,16 +75,14 @@ async function handleNext(data, isCheck = false) { ...@@ -75,16 +75,14 @@ async function handleNext(data, isCheck = false) {
<el-tab-pane lazy label="第5步" :name="5"> <el-tab-pane lazy label="第5步" :name="5">
<Step5 @submit="handleSubmit" @next="handleNext"></Step5> <Step5 @submit="handleSubmit" @next="handleNext"></Step5>
</el-tab-pane> </el-tab-pane>
<el-tab-pane lazy label="第6步" :name="6"> <el-tab-pane lazy label="第6步" :name="6"> </el-tab-pane>
<Step6 @submit="handleSubmit" @next="handleNext"></Step6>
</el-tab-pane>
<el-tab-pane lazy label="第7步" :name="7"> <el-tab-pane lazy label="第7步" :name="7">
<Step7 @submit="handleSubmit" @next="handleNext"></Step7> <Step7 @submit="handleSubmit" @next="handleNext"></Step7>
</el-tab-pane> </el-tab-pane>
<el-tab-pane lazy label="第8步" :name="8"> <el-tab-pane lazy label="第8步" :name="8"> </el-tab-pane>
<Step8 @submit="handleSubmit" @next="handleNext"></Step8>
</el-tab-pane>
</el-tabs> </el-tabs>
<Step6 @submit="handleSubmit" @next="handleNext" v-if="activeTab == 6"></Step6>
<Step8 @submit="handleSubmit" @next="handleNext" v-if="activeTab == 8"></Step8>
</AppCard> </AppCard>
</template> </template>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论