7171 </NodeContainer >
7272</template >
7373<script setup lang="ts">
74- import { set } from ' lodash'
74+ import { set , throttle } from ' lodash'
7575import NodeContainer from ' @/workflow/common/NodeContainer.vue'
76- import { ref , computed , onMounted } from ' vue'
76+ import { ref , computed , onMounted , watch } from ' vue'
7777import { isLastNode } from ' @/workflow/common/data'
7878import { loopBodyNode , loopStartNode } from ' @/workflow/common/data'
7979import NodeCascader from ' @/workflow/common/NodeCascader.vue'
@@ -98,7 +98,20 @@ const form_data = computed({
9898 set (props .nodeModel .properties , ' node_data' , value )
9999 },
100100})
101-
101+ const showNode = computed (() => {
102+ if (props .nodeModel .properties .showNode !== undefined ) {
103+ return props .nodeModel .properties .showNode
104+ }
105+ set (props .nodeModel .properties , ' showNode' , true )
106+ return true
107+ })
108+ watch (showNode , () => {
109+ if (showNode .value ) {
110+ throttle (mountLoopBodyNode , 1000 )()
111+ } else {
112+ throttle (destroyLoopBodyNode , 1000 )()
113+ }
114+ })
102115const replyNodeFormRef = ref ()
103116const nodeCascaderRef = ref ()
104117const validate = () => {
@@ -109,14 +122,15 @@ const validate = () => {
109122 return Promise .reject ({ node: props .nodeModel , errMessage: err })
110123 })
111124}
112-
113- onMounted (() => {
114- if ( typeof props . nodeModel . properties . node_data ?. is_result === ' undefined ' ) {
115- if (isLastNode ( props . nodeModel ) ) {
116- set ( props . nodeModel . properties . node_data , ' is_result ' , true )
117- }
125+ const destroyLoopBodyNode = () => {
126+ const nodeOutgoingNode = props . nodeModel . graphModel . getNodeOutgoingNode ( props . nodeModel . id )
127+ const loopBody = nodeOutgoingNode . find (( item : any ) => item . type == loopBodyNode . type )
128+ if (loopBody ) {
129+ loopBody . set_loop_body ( )
130+ props . nodeModel . graphModel . deleteNode ( loopBody . id )
118131 }
119- set (props .nodeModel , ' validate' , validate )
132+ }
133+ const mountLoopBodyNode = () => {
120134 const nodeOutgoingNode = props .nodeModel .graphModel .getNodeOutgoingNode (props .nodeModel .id )
121135 if (! nodeOutgoingNode .some ((item : any ) => item .type == loopBodyNode .type )) {
122136 let workflow = { nodes: [loopStartNode ], edges: [] }
@@ -127,7 +141,7 @@ onMounted(() => {
127141 }
128142 if (props .nodeModel .properties .node_data .loop ) {
129143 x = props .nodeModel .properties .node_data .loop .x
130- y = props .nodeModel .properties .node_data .loop .y
144+ y = props .nodeModel .properties .node_data .loop .y - 330
131145 }
132146 const nodeModel = props .nodeModel .graphModel .addNode ({
133147 type: loopBodyNode .type ,
@@ -147,6 +161,16 @@ onMounted(() => {
147161 virtual: true ,
148162 })
149163 }
164+ }
165+
166+ onMounted (() => {
167+ if (typeof props .nodeModel .properties .node_data ?.is_result === ' undefined' ) {
168+ if (isLastNode (props .nodeModel )) {
169+ set (props .nodeModel .properties .node_data , ' is_result' , true )
170+ }
171+ }
172+ set (props .nodeModel , ' validate' , validate )
173+ mountLoopBodyNode ()
150174})
151175 </script >
152176<style lang="scss" scoped></style >
0 commit comments