From a1d7e81859f554f3a53680cc35f0f49bf1f77098 Mon Sep 17 00:00:00 2001
From: wwf <1971391498@qq.com>
Date: 星期四, 14 五月 2026 14:37:02 +0800
Subject: [PATCH] 导入项目
---
src/components/SimpleProcessDesignerV2/src/ProcessNodeTree.vue | 150 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 150 insertions(+), 0 deletions(-)
diff --git a/src/components/SimpleProcessDesignerV2/src/ProcessNodeTree.vue b/src/components/SimpleProcessDesignerV2/src/ProcessNodeTree.vue
new file mode 100644
index 0000000..dddeda6
--- /dev/null
+++ b/src/components/SimpleProcessDesignerV2/src/ProcessNodeTree.vue
@@ -0,0 +1,150 @@
+<template>
+ <!-- 鍙戣捣浜鸿妭鐐� -->
+ <StartUserNode
+ v-if="currentNode && currentNode.type === NodeType.START_USER_NODE"
+ :flow-node="currentNode"
+ />
+ <!-- 瀹℃壒鑺傜偣 -->
+ <UserTaskNode
+ v-if="
+ currentNode &&
+ (currentNode.type === NodeType.USER_TASK_NODE ||
+ currentNode.type === NodeType.TRANSACTOR_NODE)
+ "
+ :flow-node="currentNode"
+ @update:flow-node="handleModelValueUpdate"
+ @find:parent-node="findFromParentNode"
+ />
+ <!-- 鎶勯�佽妭鐐� -->
+ <CopyTaskNode
+ v-if="currentNode && currentNode.type === NodeType.COPY_TASK_NODE"
+ :flow-node="currentNode"
+ @update:flow-node="handleModelValueUpdate"
+ />
+ <!-- 鏉′欢鑺傜偣 -->
+ <ExclusiveNode
+ v-if="currentNode && currentNode.type === NodeType.CONDITION_BRANCH_NODE"
+ :flow-node="currentNode"
+ @update:model-value="handleModelValueUpdate"
+ @find:parent-node="findFromParentNode"
+ />
+ <!-- 骞惰鑺傜偣 -->
+ <ParallelNode
+ v-if="currentNode && currentNode.type === NodeType.PARALLEL_BRANCH_NODE"
+ :flow-node="currentNode"
+ @update:model-value="handleModelValueUpdate"
+ @find:parent-node="findFromParentNode"
+ />
+ <!-- 鍖呭鍒嗘敮鑺傜偣 -->
+ <InclusiveNode
+ v-if="currentNode && currentNode.type === NodeType.INCLUSIVE_BRANCH_NODE"
+ :flow-node="currentNode"
+ @update:model-value="handleModelValueUpdate"
+ @find:parent-node="findFromParentNode"
+ />
+ <!-- 寤惰繜鍣ㄨ妭鐐� -->
+ <DelayTimerNode
+ v-if="currentNode && currentNode.type === NodeType.DELAY_TIMER_NODE"
+ :flow-node="currentNode"
+ @update:flow-node="handleModelValueUpdate"
+ />
+ <!-- 璺敱鍒嗘敮鑺傜偣 -->
+ <RouterNode
+ v-if="currentNode && currentNode.type === NodeType.ROUTER_BRANCH_NODE"
+ :flow-node="currentNode"
+ @update:flow-node="handleModelValueUpdate"
+ />
+ <!-- 瑙﹀彂鍣ㄨ妭鐐� -->
+ <TriggerNode
+ v-if="currentNode && currentNode.type === NodeType.TRIGGER_NODE"
+ :flow-node="currentNode"
+ @update:flow-node="handleModelValueUpdate"
+ />
+ <!-- 瀛愭祦绋嬭妭鐐� -->
+ <ChildProcessNode
+ v-if="currentNode && currentNode.type === NodeType.CHILD_PROCESS_NODE"
+ :flow-node="currentNode"
+ @update:flow-node="handleModelValueUpdate"
+ />
+ <!-- 閫掑綊鏄剧ず瀛╁瓙鑺傜偣 -->
+ <ProcessNodeTree
+ v-if="currentNode && currentNode.childNode"
+ v-model:flow-node="currentNode.childNode"
+ :parent-node="currentNode"
+ @find:recursive-find-parent-node="recursiveFindParentNode"
+ />
+
+ <!-- 缁撴潫鑺傜偣 -->
+ <EndEventNode
+ v-if="currentNode && currentNode.type === NodeType.END_EVENT_NODE"
+ :flow-node="currentNode"
+ />
+</template>
+<script setup lang="ts">
+import StartUserNode from './nodes/StartUserNode.vue'
+import EndEventNode from './nodes/EndEventNode.vue'
+import UserTaskNode from './nodes/UserTaskNode.vue'
+import CopyTaskNode from './nodes/CopyTaskNode.vue'
+import ExclusiveNode from './nodes/ExclusiveNode.vue'
+import ParallelNode from './nodes/ParallelNode.vue'
+import InclusiveNode from './nodes/InclusiveNode.vue'
+import DelayTimerNode from './nodes/DelayTimerNode.vue'
+import RouterNode from './nodes/RouterNode.vue'
+import TriggerNode from './nodes/TriggerNode.vue'
+import ChildProcessNode from './nodes/ChildProcessNode.vue'
+import { SimpleFlowNode, NodeType } from './consts'
+import { useWatchNode } from './node'
+defineOptions({
+ name: 'ProcessNodeTree'
+})
+const props = defineProps({
+ parentNode: {
+ type: Object as () => SimpleFlowNode,
+ default: () => null
+ },
+ flowNode: {
+ type: Object as () => SimpleFlowNode,
+ default: () => null
+ }
+})
+const emits = defineEmits<{
+ 'update:flowNode': [node: SimpleFlowNode | undefined]
+ 'find:recursiveFindParentNode': [
+ nodeList: SimpleFlowNode[],
+ curentNode: SimpleFlowNode,
+ nodeType: number
+ ]
+}>()
+
+const currentNode = useWatchNode(props)
+
+// 鐢ㄤ簬鍒犻櫎鑺傜偣
+const handleModelValueUpdate = (updateValue) => {
+ emits('update:flowNode', updateValue)
+}
+
+const findFromParentNode = (nodeList: SimpleFlowNode[], nodeType: number) => {
+ emits('find:recursiveFindParentNode', nodeList, props.parentNode, nodeType)
+}
+
+// 閫掑綊浠庣埗鑺傜偣涓煡璇㈠尮閰嶇殑鑺傜偣
+const recursiveFindParentNode = (
+ nodeList: SimpleFlowNode[],
+ findNode: SimpleFlowNode,
+ nodeType: number
+) => {
+ if (!findNode) {
+ return
+ }
+ if (findNode.type === NodeType.START_USER_NODE) {
+ nodeList.push(findNode)
+ return
+ }
+
+ if (findNode.type === nodeType) {
+ nodeList.push(findNode)
+ }
+ emits('find:recursiveFindParentNode', nodeList, props.parentNode, nodeType)
+}
+</script>
+<style lang="scss" scoped></style>
--
Gitblit v1.8.0