Skip to content

Commit eca1c83

Browse files
YunaiVgitee-org
authored andcommitted
!648 Simple设计器-路由分支
Merge pull request !648 from Lesan/feature/bpm-路由分支
2 parents 42a3d2e + 3118d2a commit eca1c83

File tree

6 files changed

+550
-2
lines changed

6 files changed

+550
-2
lines changed

src/components/SimpleProcessDesignerV2/src/NodeHandler.vue

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,13 @@
4646
</div>
4747
<div class="handler-item-text">延迟器</div>
4848
</div>
49+
<div class="handler-item" @click="addNode(NodeType.ROUTE_BRANCH_NODE)">
50+
<!-- TODO @芋艿 需要更换一下iconfont的图标 -->
51+
<div class="handler-item-icon copy">
52+
<span class="iconfont icon-size icon-copy"></span>
53+
</div>
54+
<div class="handler-item-text">路由分支</div>
55+
</div>
4956
</div>
5057
<template #reference>
5158
<div class="add-icon"><Icon icon="ep:plus" /></div>
@@ -228,6 +235,17 @@ const addNode = (type: number) => {
228235
}
229236
emits('update:childNode', data)
230237
}
238+
if (type === NodeType.ROUTE_BRANCH_NODE) {
239+
const data: SimpleFlowNode = {
240+
id: 'GateWay_' + generateUUID(),
241+
name: NODE_DEFAULT_NAME.get(NodeType.ROUTE_BRANCH_NODE) as string,
242+
showText: '',
243+
type: NodeType.ROUTE_BRANCH_NODE,
244+
childNode: props.childNode,
245+
defaultFlowId: 'Flow_' + generateUUID()
246+
}
247+
emits('update:childNode', data)
248+
}
231249
}
232250
</script>
233251

src/components/SimpleProcessDesignerV2/src/ProcessNodeTree.vue

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,12 @@
4444
:flow-node="currentNode"
4545
@update:flow-node="handleModelValueUpdate"
4646
/>
47+
<!-- 路由分支节点 -->
48+
<RouteNode
49+
v-if="currentNode && currentNode.type === NodeType.ROUTE_BRANCH_NODE"
50+
:flow-node="currentNode"
51+
@update:flow-node="handleModelValueUpdate"
52+
/>
4753
<!-- 递归显示孩子节点 -->
4854
<ProcessNodeTree
4955
v-if="currentNode && currentNode.childNode"
@@ -67,6 +73,7 @@ import ExclusiveNode from './nodes/ExclusiveNode.vue'
6773
import ParallelNode from './nodes/ParallelNode.vue'
6874
import InclusiveNode from './nodes/InclusiveNode.vue'
6975
import DelayTimerNode from './nodes/DelayTimerNode.vue'
76+
import RouteNode from './nodes/RouteNode.vue'
7077
import { SimpleFlowNode, NodeType } from './consts'
7178
import { useWatchNode } from './node'
7279
defineOptions({

src/components/SimpleProcessDesignerV2/src/SimpleProcessDesigner.vue

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ const props = defineProps({
5656
required: false
5757
},
5858
// 可发起流程的人员编号
59-
startUserIds : {
59+
startUserIds: {
6060
type: Array,
6161
required: false
6262
},
@@ -91,6 +91,7 @@ provide('startUserIds', props.startUserIds)
9191
9292
const message = useMessage() // 国际化
9393
const processNodeTree = ref<SimpleFlowNode | undefined>()
94+
provide('processNodeTree', processNodeTree)
9495
const errorDialogVisible = ref(false)
9596
let errorNodes: SimpleFlowNode[] = []
9697

src/components/SimpleProcessDesignerV2/src/consts.ts

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,11 @@ export enum NodeType {
4444
/**
4545
* 包容分支节点 (对应包容网关)
4646
*/
47-
INCLUSIVE_BRANCH_NODE = 53
47+
INCLUSIVE_BRANCH_NODE = 53,
48+
/**
49+
* 路由分支节点
50+
*/
51+
ROUTE_BRANCH_NODE = 54
4852
}
4953

5054
export enum NodeId {
@@ -107,6 +111,9 @@ export interface SimpleFlowNode {
107111
activityStatus?: TaskStatusEnum
108112
// 延迟设置
109113
delaySetting?: DelaySetting
114+
// 路由分支
115+
routeGroup?: RouteCondition[]
116+
defaultFlowId?: string
110117
}
111118
// 候选人策略枚举 ( 用于审批节点。抄送节点 )
112119
export enum CandidateStrategy {
@@ -448,13 +455,15 @@ NODE_DEFAULT_TEXT.set(NodeType.COPY_TASK_NODE, '请配置抄送人')
448455
NODE_DEFAULT_TEXT.set(NodeType.CONDITION_NODE, '请设置条件')
449456
NODE_DEFAULT_TEXT.set(NodeType.START_USER_NODE, '请设置发起人')
450457
NODE_DEFAULT_TEXT.set(NodeType.DELAY_TIMER_NODE, '请设置延迟器')
458+
NODE_DEFAULT_TEXT.set(NodeType.ROUTE_BRANCH_NODE, '请设置路由节点')
451459

452460
export const NODE_DEFAULT_NAME = new Map<number, string>()
453461
NODE_DEFAULT_NAME.set(NodeType.USER_TASK_NODE, '审批人')
454462
NODE_DEFAULT_NAME.set(NodeType.COPY_TASK_NODE, '抄送人')
455463
NODE_DEFAULT_NAME.set(NodeType.CONDITION_NODE, '条件')
456464
NODE_DEFAULT_NAME.set(NodeType.START_USER_NODE, '发起人')
457465
NODE_DEFAULT_NAME.set(NodeType.DELAY_TIMER_NODE, '延迟器')
466+
NODE_DEFAULT_NAME.set(NodeType.ROUTE_BRANCH_NODE, '路由分支')
458467

459468
// 候选人策略。暂时不从字典中取。 后续可能调整。控制显示顺序
460469
export const CANDIDATE_STRATEGY: DictDataVO[] = [
@@ -631,3 +640,13 @@ export const DELAY_TYPE = [
631640
{ label: '固定时长', value: DelayTypeEnum.FIXED_TIME_DURATION },
632641
{ label: '固定日期', value: DelayTypeEnum.FIXED_DATE_TIME }
633642
]
643+
644+
/**
645+
* 路由分支结构定义
646+
*/
647+
export type RouteCondition = {
648+
nodeId: string
649+
conditionType: number
650+
conditionExpression: string
651+
conditionGroups: ConditionGroup
652+
}

0 commit comments

Comments
 (0)