| | |
| | | <script> |
| | | //导入所有节点组件 |
| | | import Approval from '@/views/common/process/nodes/ApprovalNode.vue' |
| | | import Task from '@/views/common/process/nodes/TaskNode.vue' |
| | | import Cc from '@/views/common/process/nodes/CcNode.vue' |
| | | import Concurrent from '@/views/common/process/nodes/ConcurrentNode.vue' |
| | | import Condition from '@/views/common/process/nodes/ConditionNode.vue' |
| | | import Inclusive from '@/views/common/process/nodes/InclusiveNode.vue' |
| | | import Trigger from '@/views/common/process/nodes/TriggerNode.vue' |
| | | import Delay from '@/views/common/process/nodes/DelayNode.vue' |
| | | import Empty from '@/views/common/process/nodes/EmptyNode.vue' |
| | | import Root from '@/views/common/process/nodes/RootNode.vue' |
| | | import Node from '@/views/common/process/nodes/Node.vue' |
| | | import Approval from '@/views/common/process/viewNodes/ApprovalNode.vue' |
| | | import Task from '@/views/common/process/viewNodes/TaskNode.vue' |
| | | import Cc from '@/views/common/process/viewNodes/CcNode.vue' |
| | | import Concurrent from '@/views/common/process/viewNodes/ConcurrentNode.vue' |
| | | import Condition from '@/views/common/process/viewNodes/ConditionNode.vue' |
| | | import Inclusive from '@/views/common/process/viewNodes/InclusiveNode.vue' |
| | | import Trigger from '@/views/common/process/viewNodes/TriggerNode.vue' |
| | | import Delay from '@/views/common/process/viewNodes/DelayNode.vue' |
| | | import Empty from '@/views/common/process/viewNodes/EmptyNode.vue' |
| | | import Root from '@/views/common/process/viewNodes/RootNode.vue' |
| | | import Node from '@/views/common/process/viewNodes/Node.vue' |
| | | |
| | | import DefaultProps from "./DefaultNodeProps" |
| | | |
| | |
| | | this.nodeMap.clear() |
| | | let processTrees = this.getDomTree(h, this.dom) |
| | | //插入末端节点 |
| | | processTrees.push(h('div', {style:{'text-align': 'center'}}, [ |
| | | processTrees.push(h('div', {class:{'end-class': true}}, [ |
| | | h('div', {class:{'process-end': true}, domProps: {innerHTML:'流程结束'}}) |
| | | ])) |
| | | return h('div', {class:{'_root': true}, ref:'_root'}, processTrees) |
| | |
| | | |
| | | //普通业务节点 |
| | | let childDoms = this.getDomTree(h, node.children) |
| | | |
| | | let headerBgc = '#ff943e' |
| | | let headerBgc = '#909399' |
| | | if (this.$store.state.runningList.includes(node.id)) { |
| | | headerBgc = '#1e90ff' |
| | | } |
| | |
| | | }, |
| | | //选中一个节点 |
| | | selectNode(node){ |
| | | console.log("ProcessTreeViewer-emit-selectNode") |
| | | this.$store.commit('selectedNode', node) |
| | | this.$emit('selectedNode', node) |
| | | }, |
| | |
| | | }, |
| | | //删除当前节点 |
| | | delNode(node){ |
| | | console.log("删除节点", node) |
| | | //获取该节点的父节点 |
| | | let parentNode = this.nodeMap.get(node.parentId) |
| | | if (parentNode){ |
| | |
| | | |
| | | <style lang="less" scoped> |
| | | ._root{ |
| | | margin: 0 auto; |
| | | display: flex; |
| | | align-items:center; |
| | | margin: 0 auto; |
| | | |
| | | } |
| | | .end-class { |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | &:before { |
| | | content: ''; |
| | | top: 50%; |
| | | left: 100%; |
| | | display: block; |
| | | width: 0; |
| | | height: 0; |
| | | |
| | | border-style: solid; |
| | | border-color: #CACACA transparent transparent; |
| | | background: #F5F5F7; |
| | | border-top: 5px solid transparent; |
| | | border-bottom: 5px solid transparent; |
| | | border-left: 10px solid #CACACA; /* 左边界 */ |
| | | } |
| | | } |
| | | .process-end{ |
| | | width: 60px; |
| | | width: 100px; |
| | | height: 40px; |
| | | margin: 0 auto; |
| | | margin-bottom: 20px; |
| | | // margin-bottom: 20px; |
| | | border-radius: 15px; |
| | | padding: 5px 10px; |
| | | font-size: small; |
| | | //font-size: small; |
| | | color: #747474; |
| | | background-color: #f2f2f2; |
| | | box-shadow: 0 0 10px 0 #bcbcbc; |
| | | } |
| | | display: flex; |
| | | justify-content:center; |
| | | align-items: center; |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | .primary-node{ |
| | | display: flex; |
| | | align-items: center; |
| | | flex-direction: column; |
| | | flex-direction: row |
| | | } |
| | | .branch-node{ |
| | | display: flex; |
| | | justify-content: center; |
| | | /*border-top: 2px solid #cccccc; |
| | | border-bottom: 2px solid #cccccc;*/ |
| | | } |
| | | .branch-node-item{ |
| | | position: relative; |
| | |
| | | flex-direction: column; |
| | | align-items: center; |
| | | } |
| | | |
| | | </style> |