CopyTaskNode.vue 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <template>
  2. <div class="node-wrapper">
  3. <div class="node-container">
  4. <div class="node-box" :class="{ 'node-config-error': !currentNode.showText }">
  5. <div class="node-title-container">
  6. <div class="node-title-icon copy-task"><span class="iconfont icon-copy"></span></div>
  7. <input
  8. v-if="showInput"
  9. type="text"
  10. class="editable-title-input"
  11. @blur="blurEvent()"
  12. v-mountedFocus
  13. v-model="currentNode.name"
  14. :placeholder="currentNode.name"
  15. />
  16. <div v-else class="node-title" @click="clickTitle">
  17. {{ currentNode.name }}
  18. </div>
  19. </div>
  20. <div class="node-content" @click="openNodeConfig">
  21. <div class="node-text" :title="currentNode.showText" v-if="currentNode.showText">
  22. {{ currentNode.showText }}
  23. </div>
  24. <div class="node-text" v-else>
  25. {{ NODE_DEFAULT_TEXT.get(NodeType.COPY_TASK_NODE) }}
  26. </div>
  27. <Icon icon="ep:arrow-right-bold" />
  28. </div>
  29. <div class="node-toolbar">
  30. <div class="toolbar-icon"
  31. ><Icon color="#0089ff" icon="ep:circle-close-filled" :size="18" @click="deleteNode"
  32. /></div>
  33. </div>
  34. </div>
  35. <!-- 传递子节点给添加节点组件。会在子节点前面添加节点 -->
  36. <NodeHandler v-if="currentNode" v-model:child-node="currentNode.childNode" />
  37. </div>
  38. <CopyTaskNodeConfig v-if="currentNode" ref="nodeSetting" :flow-node="currentNode" />
  39. </div>
  40. </template>
  41. <script setup lang="ts">
  42. import { SimpleFlowNode, NodeType, NODE_DEFAULT_TEXT } from '../consts'
  43. import NodeHandler from '../NodeHandler.vue'
  44. import { useNodeName2, useWatchNode } from '../node'
  45. import CopyTaskNodeConfig from '../nodes-config/CopyTaskNodeConfig.vue'
  46. defineOptions({
  47. name: 'CopyTaskNode'
  48. })
  49. const props = defineProps({
  50. flowNode: {
  51. type: Object as () => SimpleFlowNode,
  52. required: true
  53. }
  54. })
  55. // 定义事件,更新父组件。
  56. const emits = defineEmits<{
  57. 'update:flowNode': [node: SimpleFlowNode | undefined]
  58. }>()
  59. // 监控节点的变化
  60. const currentNode = useWatchNode(props)
  61. // 节点名称编辑
  62. const { showInput, blurEvent, clickTitle } = useNodeName2(currentNode, NodeType.COPY_TASK_NODE)
  63. const nodeSetting = ref()
  64. // 打开节点配置
  65. const openNodeConfig = () => {
  66. nodeSetting.value.showCopyTaskNodeConfig(currentNode.value)
  67. nodeSetting.value.openDrawer()
  68. }
  69. // 删除节点。更新当前节点为孩子节点
  70. const deleteNode = () => {
  71. emits('update:flowNode', currentNode.value.childNode)
  72. }
  73. </script>
  74. <style lang="scss" scoped></style>