Skip to content

Commit 3a5c93f

Browse files
committed
仿钉钉流程设计器- 代码优化
1 parent 2c11228 commit 3a5c93f

File tree

9 files changed

+676
-604
lines changed

9 files changed

+676
-604
lines changed

src/components/SimpleProcessDesignerV2/src/ProcessNodeTree.vue

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ import CopyTaskNode from './nodes/CopyTaskNode.vue'
5050
import ExclusiveNode from './nodes/ExclusiveNode.vue'
5151
import ParallelNode from './nodes/ParallelNode.vue'
5252
import { SimpleFlowNode, NodeType } from './consts'
53+
import { useWatchNode } from './node'
5354
defineOptions({
5455
name: 'ProcessNodeTree'
5556
})
@@ -72,15 +73,8 @@ const emits = defineEmits<{
7273
]
7374
}>()
7475
75-
const currentNode = ref<SimpleFlowNode>(props.flowNode)
76+
const currentNode = useWatchNode(props)
7677
77-
// 重要:监控节点变化. 重新绘制节点
78-
watch(
79-
() => props.flowNode,
80-
(newValue) => {
81-
currentNode.value = newValue
82-
}
83-
)
8478
// 用于删除节点
8579
const handleModelValueUpdate = (updateValue) => {
8680
emits('update:flowNode', updateValue)

src/components/SimpleProcessDesignerV2/src/SimpleProcessDesigner.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@ const zoomIn = () => {
138138
139139
onMounted(async () => {
140140
const result = await getBpmSimpleModel(props.modelId)
141+
console.log('the result is :', result)
141142
if (result) {
142143
processNodeTree.value = result
143144
} else {

src/components/SimpleProcessDesignerV2/src/consts.ts

Lines changed: 133 additions & 113 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
// @ts-ignore
22
import { DictDataVO } from '@/api/system/dict/types'
3-
3+
/**
4+
* 节点类型
5+
*/
46
export enum NodeType {
57
/**
68
* 发起人节点
@@ -46,68 +48,37 @@ export enum NodeType {
4648
*/
4749
INCLUSIVE_NODE_JOIN = 8
4850
}
49-
// 时间单位枚举
50-
export enum TimeUnitType {
51-
/**
52-
* 分钟
53-
*/
54-
MINUTE = 1,
55-
/**
56-
* 小时
57-
*/
58-
HOUR = 2,
59-
/**
60-
* 天
61-
*/
62-
DAY = 3
63-
}
64-
65-
export enum RejectHandlerType {
66-
/**
67-
* 结束流程
68-
*/
69-
FINISH_PROCESS = 1,
70-
/**
71-
* 驳回到指定节点
72-
*/
73-
RETURN_USER_TASK = 2
74-
}
75-
76-
// 条件配置类型 ( 用于条件节点配置 )
77-
export enum ConditionConfigType {
78-
/**
79-
* 条件表达式
80-
*/
81-
EXPRESSION = 1,
82-
83-
/**
84-
* 条件规则
85-
*/
86-
RULE = 2
87-
}
88-
// 多人审批方式类型 ( 用于审批节点 )
89-
export enum ApproveMethodType {
90-
/**
91-
* 随机挑选一人审批
92-
*/
93-
RRANDOM_SELECT_ONE_APPROVE = 1,
94-
95-
/**
96-
* 多人会签(按通过比例)
97-
*/
98-
APPROVE_BY_RATIO = 2,
99-
100-
/**
101-
* 多人或签(通过只需一人,拒绝只需一人)
102-
*/
103-
ANY_APPROVE = 3,
104-
/**
105-
* 多人依次审批
106-
*/
107-
SEQUENTIAL_APPROVE = 4
51+
/**
52+
* 节点结构定义
53+
*/
54+
export interface SimpleFlowNode {
55+
id: string
56+
type: NodeType
57+
name: string
58+
showText?: string
59+
attributes?: any
60+
// 孩子节点
61+
childNode?: SimpleFlowNode
62+
// 条件节点
63+
conditionNodes?: SimpleFlowNode[]
64+
// 候选人策略
65+
candidateStrategy?: number
66+
// 候选人参数
67+
candidateParam?: string
68+
// 多人审批方式
69+
approveMethod?: ApproveMethodType
70+
//通过比例
71+
approveRatio?: number
72+
// 审批按钮设置
73+
buttonsSetting?: any[]
74+
// 表单权限
75+
fieldsPermission?: Array<Record<string, string>>
76+
// 审批任务超时处理
77+
timeoutHandler?: TimeoutHandler
78+
// 审批任务拒绝处理
79+
rejectHandler?: RejectHandler
10880
}
109-
110-
// 候选人策略 ( 用于审批节点。抄送节点 )
81+
// 候选人策略枚举 ( 用于审批节点。抄送节点 )
11182
export enum CandidateStrategy {
11283
/**
11384
* 指定角色
@@ -147,12 +118,41 @@ export enum CandidateStrategy {
147118
EXPRESSION = 60
148119
}
149120

121+
// 多人审批方式类型枚举 ( 用于审批节点 )
122+
export enum ApproveMethodType {
123+
/**
124+
* 随机挑选一人审批
125+
*/
126+
RRANDOM_SELECT_ONE_APPROVE = 1,
127+
128+
/**
129+
* 多人会签(按通过比例)
130+
*/
131+
APPROVE_BY_RATIO = 2,
132+
133+
/**
134+
* 多人或签(通过只需一人,拒绝只需一人)
135+
*/
136+
ANY_APPROVE = 3,
137+
/**
138+
* 多人依次审批
139+
*/
140+
SEQUENTIAL_APPROVE = 4
141+
}
142+
143+
/**
144+
* 审批拒绝结构定义
145+
*/
150146
export type RejectHandler = {
147+
// 审批拒绝类型
151148
type: RejectHandlerType
152-
149+
// 回退节点 Id
153150
returnNodeId?: string
154151
}
155152

153+
/**
154+
* 审批超时结构定义
155+
*/
156156
export type TimeoutHandler = {
157157
//是否开启超时处理
158158
enable: boolean
@@ -163,60 +163,57 @@ export type TimeoutHandler = {
163163
// 执行动作是自动提醒, 最大提醒次数
164164
maxRemindCount?: number
165165
}
166-
167-
export type SimpleFlowNode = {
168-
id: string
169-
type: NodeType
170-
name: string
171-
showText?: string
172-
attributes?: any
173-
// 孩子节点
174-
childNode?: SimpleFlowNode
175-
// 条件节点
176-
conditionNodes?: SimpleFlowNode[]
177-
// 候选人策略
178-
candidateStrategy?: number
179-
// 候选人参数
180-
candidateParam?: string
181-
// 多人审批方式
182-
approveMethod?: ApproveMethodType
183-
//通过比例
184-
approveRatio?: number
185-
// 审批按钮设置
186-
buttonsSetting?: any[]
187-
// 表单权限
188-
fieldsPermission?: any[]
189-
// 审批任务超时处理
190-
timeoutHandler?: TimeoutHandler
191-
// 审批任务拒绝处理
192-
rejectHandler?: RejectHandler
166+
// 审批拒绝类型枚举
167+
export enum RejectHandlerType {
168+
/**
169+
* 结束流程
170+
*/
171+
FINISH_PROCESS = 1,
172+
/**
173+
* 驳回到指定节点
174+
*/
175+
RETURN_USER_TASK = 2
193176
}
194177

195-
// 条件组
196-
export type ConditionGroup = {
197-
// 条件组的逻辑关系是否为且
198-
and: boolean
199-
// 条件数组
200-
conditions: Condition[]
178+
// 时间单位枚举
179+
export enum TimeUnitType {
180+
/**
181+
* 分钟
182+
*/
183+
MINUTE = 1,
184+
/**
185+
* 小时
186+
*/
187+
HOUR = 2,
188+
/**
189+
* 天
190+
*/
191+
DAY = 3
201192
}
202193

203-
// 条件
204-
export type Condition = {
205-
// 条件规则的逻辑关系是否为且
206-
and: boolean
207-
rules: ConditionRule[]
194+
// 条件配置类型 ( 用于条件节点配置 )
195+
export enum ConditionConfigType {
196+
/**
197+
* 条件表达式
198+
*/
199+
EXPRESSION = 1,
200+
201+
/**
202+
* 条件规则
203+
*/
204+
RULE = 2
208205
}
209206

210-
// 条件规则
211-
export type ConditionRule = {
212-
type: number
213-
opName: string
214-
opCode: string
215-
leftSide: string
216-
rightSide: string
207+
/**
208+
* 操作按钮权限结构定义
209+
*/
210+
export type ButtonSetting = {
211+
id: OpsButtonType
212+
displayName: string
213+
enable: boolean
217214
}
218215

219-
// 审批操作按钮类型
216+
// 操作按钮类型枚举 (用于审批节点)
220217
export enum OpsButtonType {
221218
/**
222219
* 通过
@@ -243,11 +240,34 @@ export enum OpsButtonType {
243240
*/
244241
RETURN = 6
245242
}
243+
/**
244+
* 条件规则结构定义
245+
*/
246+
export type ConditionRule = {
247+
type: number
248+
opName: string
249+
opCode: string
250+
leftSide: string
251+
rightSide: string
252+
}
246253

247-
export type ButtonSetting = {
248-
id: OpsButtonType
249-
displayName: string
250-
enable: boolean
254+
/**
255+
* 条件组结构定义
256+
*/
257+
export type ConditionGroup = {
258+
// 条件组的逻辑关系是否为且
259+
and: boolean
260+
// 条件数组
261+
conditions: Condition[]
262+
}
263+
264+
/**
265+
* 条件结构定义
266+
*/
267+
export type Condition = {
268+
// 条件规则的逻辑关系是否为且
269+
and: boolean
270+
rules: ConditionRule[]
251271
}
252272

253273
export const NODE_DEFAULT_TEXT = new Map<number, string>()

0 commit comments

Comments
 (0)