NodeWrap.vue 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <template>
  2. <div class="ep-node-wrap" v-if="props.node">
  3. <!-- 路由节点 -->
  4. <RouterNode
  5. :node="props.node"
  6. @removeNode="removeNode"
  7. v-if="props.node.nodeType == 'router'"
  8. />
  9. <!-- 普通节点 -->
  10. <BaseNode
  11. :node="props.node"
  12. :conditionNodes="props.conditionNodes"
  13. :conditionIndex="props.conditionIndex"
  14. @removeNode="removeNode"
  15. v-else
  16. />
  17. <!-- 子节点 -->
  18. <NodeWrap
  19. :node="props.node.childNode"
  20. @removeNode="removeChildNode"
  21. v-if="props.node.childNode && props.node.childNode.nodeType"
  22. />
  23. </div>
  24. </template>
  25. <script setup name="NodeWrap">
  26. defineOptions({ name: 'NodeWrap' })
  27. import BaseNode from './base/BaseNode.vue'
  28. import RouterNode from './router/routerNode.vue'
  29. import { onMounted } from 'vue'
  30. const props = defineProps({
  31. node: {
  32. // 当前流程节点数据
  33. type: Object,
  34. default: () => {}
  35. },
  36. conditionNodes: {
  37. // 条件集合,当节点类型为condition时有效
  38. type: Array,
  39. default: () => []
  40. },
  41. conditionIndex: {
  42. // 当前条件节点的顺序,当节点类型为condition时有效
  43. type: Number,
  44. default: 0
  45. },
  46. canRemoved: {
  47. // 当前节点是否可以移除
  48. type: Boolean,
  49. default: true
  50. }
  51. })
  52. onMounted(async () => {})
  53. // 移除当前节点
  54. const emit = defineEmits(['removeNode'])
  55. const removeNode = () => {
  56. emit('removeNode')
  57. }
  58. // 移除子节点
  59. const removeChildNode = () => {
  60. let nextChildNode = props.node.childNode.childNode
  61. props.node.childNode = nextChildNode
  62. }
  63. </script>
  64. <style lang="scss" scoped></style>