Skip to content

Commit 7508eb5

Browse files
committed
【功能修复】BPM:创建流程-SIMPLE设计器-多个条件时-最新的条件会覆盖上层所有的条件
1 parent a186806 commit 7508eb5

File tree

6 files changed

+37
-17
lines changed

6 files changed

+37
-17
lines changed

src/components/SimpleProcessDesignerV2/src/NodeHandler.vue

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ import {
9191
DEFAULT_CONDITION_GROUP_VALUE
9292
} from './consts'
9393
import { generateUUID } from '@/utils'
94+
import { cloneDeep } from 'lodash-es'
9495
9596
defineOptions({
9697
name: 'NodeHandler'
@@ -184,7 +185,7 @@ const addNode = (type: number) => {
184185
conditionSetting: {
185186
defaultFlow: false,
186187
conditionType: ConditionType.RULE,
187-
conditionGroups: DEFAULT_CONDITION_GROUP_VALUE
188+
conditionGroups: cloneDeep(DEFAULT_CONDITION_GROUP_VALUE)
188189
}
189190
},
190191
{
@@ -242,7 +243,7 @@ const addNode = (type: number) => {
242243
conditionSetting: {
243244
defaultFlow: false,
244245
conditionType: ConditionType.RULE,
245-
conditionGroups: DEFAULT_CONDITION_GROUP_VALUE
246+
conditionGroups: cloneDeep(DEFAULT_CONDITION_GROUP_VALUE)
246247
}
247248
},
248249
{

src/components/SimpleProcessDesignerV2/src/nodes-config/TriggerNodeConfig.vue

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,7 @@ import {
254254
import { useWatchNode, useDrawer, useNodeName, useFormFields, getConditionShowText } from '../node'
255255
import HttpRequestSetting from './components/HttpRequestSetting.vue'
256256
import ConditionDialog from './components/ConditionDialog.vue'
257+
import { cloneDeep } from 'lodash-es'
257258
const { proxy } = getCurrentInstance() as any
258259
259260
defineOptions({
@@ -290,7 +291,7 @@ const configForm = ref<TriggerSetting>({
290291
},
291292
formSettings: [
292293
{
293-
conditionGroups: DEFAULT_CONDITION_GROUP_VALUE,
294+
conditionGroups: cloneDeep(DEFAULT_CONDITION_GROUP_VALUE),
294295
updateFormFields: {},
295296
deleteFields: []
296297
}
@@ -346,7 +347,7 @@ const changeTriggerType = () => {
346347
? originalSetting.formSettings
347348
: [
348349
{
349-
conditionGroups: DEFAULT_CONDITION_GROUP_VALUE,
350+
conditionGroups: cloneDeep(DEFAULT_CONDITION_GROUP_VALUE),
350351
updateFormFields: {},
351352
deleteFields: []
352353
}
@@ -361,7 +362,7 @@ const changeTriggerType = () => {
361362
? originalSetting.formSettings
362363
: [
363364
{
364-
conditionGroups: DEFAULT_CONDITION_GROUP_VALUE,
365+
conditionGroups: cloneDeep(DEFAULT_CONDITION_GROUP_VALUE),
365366
updateFormFields: undefined,
366367
deleteFields: []
367368
}
@@ -374,7 +375,7 @@ const changeTriggerType = () => {
374375
/** 添加新的修改表单设置 */
375376
const addFormSetting = () => {
376377
configForm.value.formSettings!.push({
377-
conditionGroups: DEFAULT_CONDITION_GROUP_VALUE,
378+
conditionGroups: cloneDeep(DEFAULT_CONDITION_GROUP_VALUE),
378379
updateFormFields: {},
379380
deleteFields: []
380381
})
@@ -509,7 +510,7 @@ const showTriggerNodeConfig = (node: SimpleFlowNode) => {
509510
},
510511
formSettings: node.triggerSetting.formSettings || [
511512
{
512-
conditionGroups: DEFAULT_CONDITION_GROUP_VALUE,
513+
conditionGroups: cloneDeep(DEFAULT_CONDITION_GROUP_VALUE),
513514
updateFormFields: {},
514515
deleteFields: []
515516
}

src/components/SimpleProcessDesignerV2/src/nodes-config/components/Condition.vue

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,7 @@ import {
154154
} from '../../consts'
155155
import { BpmModelFormType } from '@/utils/constants'
156156
import { useFormFieldsAndStartUser } from '../../node'
157+
import { cloneDeep } from 'lodash-es'
157158
158159
const props = defineProps({
159160
modelValue: {
@@ -196,7 +197,7 @@ const formRef = ref() // 表单 Ref
196197
const changeConditionType = () => {
197198
if (condition.value.conditionType === ConditionType.RULE) {
198199
if (!condition.value.conditionGroups) {
199-
condition.value.conditionGroups = DEFAULT_CONDITION_GROUP_VALUE
200+
condition.value.conditionGroups = cloneDeep(DEFAULT_CONDITION_GROUP_VALUE)
200201
}
201202
}
202203
}

src/components/SimpleProcessDesignerV2/src/nodes-config/components/ConditionDialog.vue

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<!-- TODO @jason:有可能,它里面套 Condition 么? -->
2-
<!-- TODO 怕影响其它节点功能,后面看看如何如何复用 Condtion -->
2+
<!-- TODO 怕影响其它节点功能,后面看看如何如何复用 Condtion -->
33
<template>
44
<Dialog v-model="dialogVisible" title="条件配置" width="600px" :fullscreen="false">
55
<div class="h-410px">
@@ -165,6 +165,7 @@ import {
165165
} from '../../consts'
166166
import { BpmModelFormType } from '@/utils/constants'
167167
import { useFormFieldsAndStartUser } from '../../node'
168+
import { cloneDeep } from 'lodash-es'
168169
defineOptions({
169170
name: 'ConditionDialog'
170171
})
@@ -175,7 +176,7 @@ const condition = ref<{
175176
conditionGroups?: ConditionGroup
176177
}>({
177178
conditionType: ConditionType.RULE,
178-
conditionGroups: DEFAULT_CONDITION_GROUP_VALUE
179+
conditionGroups: cloneDeep(DEFAULT_CONDITION_GROUP_VALUE)
179180
})
180181
181182
const emit = defineEmits<{
@@ -210,7 +211,7 @@ const formRef = ref() // 表单 Ref
210211
const changeConditionType = () => {
211212
if (condition.value.conditionType === ConditionType.RULE) {
212213
if (!condition.value.conditionGroups) {
213-
condition.value.conditionGroups = DEFAULT_CONDITION_GROUP_VALUE
214+
condition.value.conditionGroups = cloneDeep(DEFAULT_CONDITION_GROUP_VALUE)
214215
}
215216
}
216217
}

src/components/SimpleProcessDesignerV2/src/nodes/ExclusiveNode.vue

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -108,11 +108,18 @@
108108
<script setup lang="ts">
109109
import NodeHandler from '../NodeHandler.vue'
110110
import ProcessNodeTree from '../ProcessNodeTree.vue'
111-
import { SimpleFlowNode, NodeType, ConditionType, DEFAULT_CONDITION_GROUP_VALUE, NODE_DEFAULT_TEXT } from '../consts'
111+
import {
112+
SimpleFlowNode,
113+
NodeType,
114+
ConditionType,
115+
DEFAULT_CONDITION_GROUP_VALUE,
116+
NODE_DEFAULT_TEXT
117+
} from '../consts'
112118
import { getDefaultConditionNodeName } from '../utils'
113119
import { useTaskStatusClass } from '../node'
114120
import { generateUUID } from '@/utils'
115121
import ConditionNodeConfig from '../nodes-config/ConditionNodeConfig.vue'
122+
import { cloneDeep } from 'lodash-es'
116123
const { proxy } = getCurrentInstance() as any
117124
defineOptions({
118125
name: 'ExclusiveNode'
@@ -149,7 +156,8 @@ const blurEvent = (index: number) => {
149156
showInputs.value[index] = false
150157
const conditionNode = currentNode.value.conditionNodes?.at(index) as SimpleFlowNode
151158
conditionNode.name =
152-
conditionNode.name || getDefaultConditionNodeName(index, conditionNode.conditionSetting?.defaultFlow)
159+
conditionNode.name ||
160+
getDefaultConditionNodeName(index, conditionNode.conditionSetting?.defaultFlow)
153161
}
154162
155163
// 点击条件名称
@@ -181,7 +189,7 @@ const addCondition = () => {
181189
conditionSetting: {
182190
defaultFlow: false,
183191
conditionType: ConditionType.RULE,
184-
conditionGroups: DEFAULT_CONDITION_GROUP_VALUE
192+
conditionGroups: cloneDeep(DEFAULT_CONDITION_GROUP_VALUE)
185193
}
186194
}
187195
conditionNodes.splice(lastIndex, 0, conditionData)

src/components/SimpleProcessDesignerV2/src/nodes/InclusiveNode.vue

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -110,11 +110,18 @@
110110
<script setup lang="ts">
111111
import NodeHandler from '../NodeHandler.vue'
112112
import ProcessNodeTree from '../ProcessNodeTree.vue'
113-
import { SimpleFlowNode, NodeType, ConditionType, DEFAULT_CONDITION_GROUP_VALUE, NODE_DEFAULT_TEXT } from '../consts'
113+
import {
114+
SimpleFlowNode,
115+
NodeType,
116+
ConditionType,
117+
DEFAULT_CONDITION_GROUP_VALUE,
118+
NODE_DEFAULT_TEXT
119+
} from '../consts'
114120
import { useTaskStatusClass } from '../node'
115121
import { getDefaultInclusiveConditionNodeName } from '../utils'
116122
import { generateUUID } from '@/utils'
117123
import ConditionNodeConfig from '../nodes-config/ConditionNodeConfig.vue'
124+
import { cloneDeep } from 'lodash-es'
118125
const { proxy } = getCurrentInstance() as any
119126
defineOptions({
120127
name: 'InclusiveNode'
@@ -153,7 +160,8 @@ const blurEvent = (index: number) => {
153160
showInputs.value[index] = false
154161
const conditionNode = currentNode.value.conditionNodes?.at(index) as SimpleFlowNode
155162
conditionNode.name =
156-
conditionNode.name || getDefaultInclusiveConditionNodeName(index, conditionNode.conditionSetting?.defaultFlow)
163+
conditionNode.name ||
164+
getDefaultInclusiveConditionNodeName(index, conditionNode.conditionSetting?.defaultFlow)
157165
}
158166
159167
// 点击条件名称
@@ -185,7 +193,7 @@ const addCondition = () => {
185193
conditionSetting: {
186194
defaultFlow: false,
187195
conditionType: ConditionType.RULE,
188-
conditionGroups: DEFAULT_CONDITION_GROUP_VALUE
196+
conditionGroups: cloneDeep(DEFAULT_CONDITION_GROUP_VALUE)
189197
}
190198
}
191199
conditionNodes.splice(lastIndex, 0, conditionData)

0 commit comments

Comments
 (0)