134 lines
3.1 KiB
Vue
134 lines
3.1 KiB
Vue
|
|
<template>
|
|||
|
|
<div class="logic-flow-view">
|
|||
|
|
<!-- 辅助工具栏 -->
|
|||
|
|
<Control class="demo-control" v-if="lf" :lf="lf" :catTurboData="false" @catData="catData" />
|
|||
|
|
<!-- 节点面板 -->
|
|||
|
|
<NodePanel :lf="lf" :nodeList="nodeList" />
|
|||
|
|
<!-- 画布 -->
|
|||
|
|
<div id="LF-Turbo"></div>
|
|||
|
|
<!-- 数据查看面板 -->
|
|||
|
|
<BasicModal @register="register" title="数据">
|
|||
|
|
<DataDialog :graphData="graphData" />
|
|||
|
|
</BasicModal>
|
|||
|
|
</div>
|
|||
|
|
</template>
|
|||
|
|
|
|||
|
|
<script lang="ts">
|
|||
|
|
import { ref, unref, onMounted } from 'vue';
|
|||
|
|
import LogicFlow from '@logicflow/core';
|
|||
|
|
import { Snapshot, BpmnElement, Menu } from '@logicflow/extension';
|
|||
|
|
import '@logicflow/core/dist/style/index.css';
|
|||
|
|
import '@logicflow/extension/lib/style/index.css';
|
|||
|
|
import { Control, NodePanel, DataDialog } from '/@/components/FlowChart';
|
|||
|
|
|
|||
|
|
import { toLogicflowData } from '/@/components/FlowChart/src/adpterForTurbo';
|
|||
|
|
import { BpmnNode } from '/@/components/FlowChart/src/config';
|
|||
|
|
import demoData from './dataTurbo.json';
|
|||
|
|
|
|||
|
|
import { BasicModal, useModal } from '/@/components/Modal';
|
|||
|
|
export default {
|
|||
|
|
components: { NodePanel, Control, DataDialog, BasicModal },
|
|||
|
|
setup() {
|
|||
|
|
let lf = ref(null);
|
|||
|
|
let graphData = ref(null);
|
|||
|
|
let config = ref({
|
|||
|
|
grid: true,
|
|||
|
|
background: {
|
|||
|
|
color: '#f7f9ff',
|
|||
|
|
},
|
|||
|
|
keyboard: {
|
|||
|
|
enabled: true,
|
|||
|
|
},
|
|||
|
|
});
|
|||
|
|
let nodeList = BpmnNode;
|
|||
|
|
|
|||
|
|
const [register, { openModal }] = useModal();
|
|||
|
|
|
|||
|
|
function initLf() {
|
|||
|
|
// 画布配置
|
|||
|
|
LogicFlow.use(Snapshot);
|
|||
|
|
// 使用bpmn插件,引入bpmn元素,这些元素可以在turbo中转换后使用
|
|||
|
|
LogicFlow.use(BpmnElement);
|
|||
|
|
// 启动右键菜单
|
|||
|
|
LogicFlow.use(Menu);
|
|||
|
|
const domLf = new LogicFlow({
|
|||
|
|
...unref(config),
|
|||
|
|
container: document.querySelector('#LF-Turbo'),
|
|||
|
|
});
|
|||
|
|
lf.value = domLf;
|
|||
|
|
// 设置边类型bpmn:sequenceFlow为默认类型
|
|||
|
|
unref(lf).setDefaultEdgeType('bpmn:sequenceFlow');
|
|||
|
|
onRender();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function onRender() {
|
|||
|
|
// Turbo数据转换为LogicFlow内部识别的数据结构
|
|||
|
|
const lFData = toLogicflowData(demoData);
|
|||
|
|
lf.value.render(lFData);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function catData() {
|
|||
|
|
graphData.value = unref(lf).getGraphData();
|
|||
|
|
openModal();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
onMounted(() => {
|
|||
|
|
initLf();
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
return {
|
|||
|
|
lf,
|
|||
|
|
graphData,
|
|||
|
|
config,
|
|||
|
|
nodeList,
|
|||
|
|
catData,
|
|||
|
|
register,
|
|||
|
|
openModal,
|
|||
|
|
};
|
|||
|
|
},
|
|||
|
|
};
|
|||
|
|
</script>
|
|||
|
|
|
|||
|
|
<style scoped>
|
|||
|
|
#LF-Turbo {
|
|||
|
|
width: 100vw;
|
|||
|
|
height: 85%;
|
|||
|
|
outline: none;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.logic-flow-view {
|
|||
|
|
position: relative;
|
|||
|
|
height: 100%;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.demo-title {
|
|||
|
|
margin: 20px;
|
|||
|
|
text-align: center;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.demo-control {
|
|||
|
|
position: absolute;
|
|||
|
|
top: 10px;
|
|||
|
|
right: 20px;
|
|||
|
|
z-index: 2;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.time-plus {
|
|||
|
|
cursor: pointer;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.add-panel {
|
|||
|
|
position: absolute;
|
|||
|
|
z-index: 11;
|
|||
|
|
padding: 10px 5px;
|
|||
|
|
background-color: white;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.el-drawer__body {
|
|||
|
|
z-index: 3;
|
|||
|
|
height: 80%;
|
|||
|
|
margin-top: -30px;
|
|||
|
|
overflow: auto;
|
|||
|
|
}
|
|||
|
|
</style>
|