Skip to content

Commit 0da3a9b

Browse files
committed
Merge remote-tracking branch 'yudao/feature/bpm' into feature/bpm-n
2 parents 0168f9f + eca1c83 commit 0da3a9b

File tree

7 files changed

+739
-5
lines changed

7 files changed

+739
-5
lines changed

src/components/SimpleProcessDesignerV2/src/NodeHandler.vue

Lines changed: 22 additions & 1 deletion
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>
@@ -120,7 +127,10 @@ const addNode = (type: number) => {
120127
type: AssignEmptyHandlerType.APPROVE
121128
},
122129
assignStartUserHandlerType: AssignStartUserHandlerType.START_USER_AUDIT,
123-
childNode: props.childNode
130+
childNode: props.childNode,
131+
createTaskListener: {
132+
enable: false
133+
}
124134
}
125135
emits('update:childNode', data)
126136
}
@@ -225,6 +235,17 @@ const addNode = (type: number) => {
225235
}
226236
emits('update:childNode', data)
227237
}
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+
}
228249
}
229250
</script>
230251

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: 47 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 {
@@ -93,6 +97,8 @@ export interface SimpleFlowNode {
9397
assignEmptyHandler?: AssignEmptyHandler
9498
// 审批节点的审批人与发起人相同时,对应的处理类型
9599
assignStartUserHandlerType?: number
100+
// 创建任务监听器
101+
createTaskListener: ListenerHandler
96102
// 条件类型
97103
conditionType?: ConditionType
98104
// 条件表达式
@@ -105,6 +111,9 @@ export interface SimpleFlowNode {
105111
activityStatus?: TaskStatusEnum
106112
// 延迟设置
107113
delaySetting?: DelaySetting
114+
// 路由分支
115+
routeGroup?: RouteCondition[]
116+
defaultFlowId?: string
108117
}
109118
// 候选人策略枚举 ( 用于审批节点。抄送节点 )
110119
export enum CandidateStrategy {
@@ -222,6 +231,31 @@ export type AssignEmptyHandler = {
222231
userIds?: number[]
223232
}
224233

234+
/**
235+
* 监听器的结构定义
236+
*/
237+
export type ListenerHandler = {
238+
enable: boolean
239+
path: string
240+
header: ListenerMap[]
241+
body: ListenerMap[]
242+
}
243+
export type ListenerMap = {
244+
key: string
245+
type: number
246+
value: string
247+
}
248+
export const LISTENER_MAP_TYPES = [
249+
{
250+
value: 1,
251+
label: '固定值'
252+
},
253+
{
254+
value: 2,
255+
label: '表单'
256+
}
257+
]
258+
225259
// 审批拒绝类型枚举
226260
export enum RejectHandlerType {
227261
/**
@@ -421,13 +455,15 @@ NODE_DEFAULT_TEXT.set(NodeType.COPY_TASK_NODE, '请配置抄送人')
421455
NODE_DEFAULT_TEXT.set(NodeType.CONDITION_NODE, '请设置条件')
422456
NODE_DEFAULT_TEXT.set(NodeType.START_USER_NODE, '请设置发起人')
423457
NODE_DEFAULT_TEXT.set(NodeType.DELAY_TIMER_NODE, '请设置延迟器')
458+
NODE_DEFAULT_TEXT.set(NodeType.ROUTE_BRANCH_NODE, '请设置路由节点')
424459

425460
export const NODE_DEFAULT_NAME = new Map<number, string>()
426461
NODE_DEFAULT_NAME.set(NodeType.USER_TASK_NODE, '审批人')
427462
NODE_DEFAULT_NAME.set(NodeType.COPY_TASK_NODE, '抄送人')
428463
NODE_DEFAULT_NAME.set(NodeType.CONDITION_NODE, '条件')
429464
NODE_DEFAULT_NAME.set(NodeType.START_USER_NODE, '发起人')
430465
NODE_DEFAULT_NAME.set(NodeType.DELAY_TIMER_NODE, '延迟器')
466+
NODE_DEFAULT_NAME.set(NodeType.ROUTE_BRANCH_NODE, '路由分支')
431467

432468
// 候选人策略。暂时不从字典中取。 后续可能调整。控制显示顺序
433469
export const CANDIDATE_STRATEGY: DictDataVO[] = [
@@ -604,3 +640,13 @@ export const DELAY_TYPE = [
604640
{ label: '固定时长', value: DelayTypeEnum.FIXED_TIME_DURATION },
605641
{ label: '固定日期', value: DelayTypeEnum.FIXED_DATE_TIME }
606642
]
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)