【功能修复】BPM:创建流程-SIMPLE设计器-多个条件时-最新的条件会覆盖上层所有的条件

This commit is contained in:
YunaiV 2025-03-23 08:58:04 +08:00
parent a186806456
commit 7508eb5998
6 changed files with 37 additions and 17 deletions

View File

@ -91,6 +91,7 @@ import {
DEFAULT_CONDITION_GROUP_VALUE DEFAULT_CONDITION_GROUP_VALUE
} from './consts' } from './consts'
import { generateUUID } from '@/utils' import { generateUUID } from '@/utils'
import { cloneDeep } from 'lodash-es'
defineOptions({ defineOptions({
name: 'NodeHandler' name: 'NodeHandler'
@ -184,7 +185,7 @@ const addNode = (type: number) => {
conditionSetting: { conditionSetting: {
defaultFlow: false, defaultFlow: false,
conditionType: ConditionType.RULE, conditionType: ConditionType.RULE,
conditionGroups: DEFAULT_CONDITION_GROUP_VALUE conditionGroups: cloneDeep(DEFAULT_CONDITION_GROUP_VALUE)
} }
}, },
{ {
@ -242,7 +243,7 @@ const addNode = (type: number) => {
conditionSetting: { conditionSetting: {
defaultFlow: false, defaultFlow: false,
conditionType: ConditionType.RULE, conditionType: ConditionType.RULE,
conditionGroups: DEFAULT_CONDITION_GROUP_VALUE conditionGroups: cloneDeep(DEFAULT_CONDITION_GROUP_VALUE)
} }
}, },
{ {

View File

@ -254,6 +254,7 @@ import {
import { useWatchNode, useDrawer, useNodeName, useFormFields, getConditionShowText } from '../node' import { useWatchNode, useDrawer, useNodeName, useFormFields, getConditionShowText } from '../node'
import HttpRequestSetting from './components/HttpRequestSetting.vue' import HttpRequestSetting from './components/HttpRequestSetting.vue'
import ConditionDialog from './components/ConditionDialog.vue' import ConditionDialog from './components/ConditionDialog.vue'
import { cloneDeep } from 'lodash-es'
const { proxy } = getCurrentInstance() as any const { proxy } = getCurrentInstance() as any
defineOptions({ defineOptions({
@ -290,7 +291,7 @@ const configForm = ref<TriggerSetting>({
}, },
formSettings: [ formSettings: [
{ {
conditionGroups: DEFAULT_CONDITION_GROUP_VALUE, conditionGroups: cloneDeep(DEFAULT_CONDITION_GROUP_VALUE),
updateFormFields: {}, updateFormFields: {},
deleteFields: [] deleteFields: []
} }
@ -346,7 +347,7 @@ const changeTriggerType = () => {
? originalSetting.formSettings ? originalSetting.formSettings
: [ : [
{ {
conditionGroups: DEFAULT_CONDITION_GROUP_VALUE, conditionGroups: cloneDeep(DEFAULT_CONDITION_GROUP_VALUE),
updateFormFields: {}, updateFormFields: {},
deleteFields: [] deleteFields: []
} }
@ -361,7 +362,7 @@ const changeTriggerType = () => {
? originalSetting.formSettings ? originalSetting.formSettings
: [ : [
{ {
conditionGroups: DEFAULT_CONDITION_GROUP_VALUE, conditionGroups: cloneDeep(DEFAULT_CONDITION_GROUP_VALUE),
updateFormFields: undefined, updateFormFields: undefined,
deleteFields: [] deleteFields: []
} }
@ -374,7 +375,7 @@ const changeTriggerType = () => {
/** 添加新的修改表单设置 */ /** 添加新的修改表单设置 */
const addFormSetting = () => { const addFormSetting = () => {
configForm.value.formSettings!.push({ configForm.value.formSettings!.push({
conditionGroups: DEFAULT_CONDITION_GROUP_VALUE, conditionGroups: cloneDeep(DEFAULT_CONDITION_GROUP_VALUE),
updateFormFields: {}, updateFormFields: {},
deleteFields: [] deleteFields: []
}) })
@ -509,7 +510,7 @@ const showTriggerNodeConfig = (node: SimpleFlowNode) => {
}, },
formSettings: node.triggerSetting.formSettings || [ formSettings: node.triggerSetting.formSettings || [
{ {
conditionGroups: DEFAULT_CONDITION_GROUP_VALUE, conditionGroups: cloneDeep(DEFAULT_CONDITION_GROUP_VALUE),
updateFormFields: {}, updateFormFields: {},
deleteFields: [] deleteFields: []
} }

View File

@ -154,6 +154,7 @@ import {
} from '../../consts' } from '../../consts'
import { BpmModelFormType } from '@/utils/constants' import { BpmModelFormType } from '@/utils/constants'
import { useFormFieldsAndStartUser } from '../../node' import { useFormFieldsAndStartUser } from '../../node'
import { cloneDeep } from 'lodash-es'
const props = defineProps({ const props = defineProps({
modelValue: { modelValue: {
@ -196,7 +197,7 @@ const formRef = ref() // 表单 Ref
const changeConditionType = () => { const changeConditionType = () => {
if (condition.value.conditionType === ConditionType.RULE) { if (condition.value.conditionType === ConditionType.RULE) {
if (!condition.value.conditionGroups) { if (!condition.value.conditionGroups) {
condition.value.conditionGroups = DEFAULT_CONDITION_GROUP_VALUE condition.value.conditionGroups = cloneDeep(DEFAULT_CONDITION_GROUP_VALUE)
} }
} }
} }

View File

@ -1,5 +1,5 @@
<!-- TODO @jason有可能它里面套 Condition --> <!-- TODO @jason有可能它里面套 Condition -->
<!-- TODO 怕影响其它节点功能后面看看如何如何复用 Condtion --> <!-- TODO 怕影响其它节点功能后面看看如何如何复用 Condtion -->
<template> <template>
<Dialog v-model="dialogVisible" title="条件配置" width="600px" :fullscreen="false"> <Dialog v-model="dialogVisible" title="条件配置" width="600px" :fullscreen="false">
<div class="h-410px"> <div class="h-410px">
@ -165,6 +165,7 @@ import {
} from '../../consts' } from '../../consts'
import { BpmModelFormType } from '@/utils/constants' import { BpmModelFormType } from '@/utils/constants'
import { useFormFieldsAndStartUser } from '../../node' import { useFormFieldsAndStartUser } from '../../node'
import { cloneDeep } from 'lodash-es'
defineOptions({ defineOptions({
name: 'ConditionDialog' name: 'ConditionDialog'
}) })
@ -175,7 +176,7 @@ const condition = ref<{
conditionGroups?: ConditionGroup conditionGroups?: ConditionGroup
}>({ }>({
conditionType: ConditionType.RULE, conditionType: ConditionType.RULE,
conditionGroups: DEFAULT_CONDITION_GROUP_VALUE conditionGroups: cloneDeep(DEFAULT_CONDITION_GROUP_VALUE)
}) })
const emit = defineEmits<{ const emit = defineEmits<{
@ -210,7 +211,7 @@ const formRef = ref() // 表单 Ref
const changeConditionType = () => { const changeConditionType = () => {
if (condition.value.conditionType === ConditionType.RULE) { if (condition.value.conditionType === ConditionType.RULE) {
if (!condition.value.conditionGroups) { if (!condition.value.conditionGroups) {
condition.value.conditionGroups = DEFAULT_CONDITION_GROUP_VALUE condition.value.conditionGroups = cloneDeep(DEFAULT_CONDITION_GROUP_VALUE)
} }
} }
} }

View File

@ -108,11 +108,18 @@
<script setup lang="ts"> <script setup lang="ts">
import NodeHandler from '../NodeHandler.vue' import NodeHandler from '../NodeHandler.vue'
import ProcessNodeTree from '../ProcessNodeTree.vue' import ProcessNodeTree from '../ProcessNodeTree.vue'
import { SimpleFlowNode, NodeType, ConditionType, DEFAULT_CONDITION_GROUP_VALUE, NODE_DEFAULT_TEXT } from '../consts' import {
SimpleFlowNode,
NodeType,
ConditionType,
DEFAULT_CONDITION_GROUP_VALUE,
NODE_DEFAULT_TEXT
} from '../consts'
import { getDefaultConditionNodeName } from '../utils' import { getDefaultConditionNodeName } from '../utils'
import { useTaskStatusClass } from '../node' import { useTaskStatusClass } from '../node'
import { generateUUID } from '@/utils' import { generateUUID } from '@/utils'
import ConditionNodeConfig from '../nodes-config/ConditionNodeConfig.vue' import ConditionNodeConfig from '../nodes-config/ConditionNodeConfig.vue'
import { cloneDeep } from 'lodash-es'
const { proxy } = getCurrentInstance() as any const { proxy } = getCurrentInstance() as any
defineOptions({ defineOptions({
name: 'ExclusiveNode' name: 'ExclusiveNode'
@ -149,7 +156,8 @@ const blurEvent = (index: number) => {
showInputs.value[index] = false showInputs.value[index] = false
const conditionNode = currentNode.value.conditionNodes?.at(index) as SimpleFlowNode const conditionNode = currentNode.value.conditionNodes?.at(index) as SimpleFlowNode
conditionNode.name = conditionNode.name =
conditionNode.name || getDefaultConditionNodeName(index, conditionNode.conditionSetting?.defaultFlow) conditionNode.name ||
getDefaultConditionNodeName(index, conditionNode.conditionSetting?.defaultFlow)
} }
// //
@ -181,7 +189,7 @@ const addCondition = () => {
conditionSetting: { conditionSetting: {
defaultFlow: false, defaultFlow: false,
conditionType: ConditionType.RULE, conditionType: ConditionType.RULE,
conditionGroups: DEFAULT_CONDITION_GROUP_VALUE conditionGroups: cloneDeep(DEFAULT_CONDITION_GROUP_VALUE)
} }
} }
conditionNodes.splice(lastIndex, 0, conditionData) conditionNodes.splice(lastIndex, 0, conditionData)

View File

@ -110,11 +110,18 @@
<script setup lang="ts"> <script setup lang="ts">
import NodeHandler from '../NodeHandler.vue' import NodeHandler from '../NodeHandler.vue'
import ProcessNodeTree from '../ProcessNodeTree.vue' import ProcessNodeTree from '../ProcessNodeTree.vue'
import { SimpleFlowNode, NodeType, ConditionType, DEFAULT_CONDITION_GROUP_VALUE, NODE_DEFAULT_TEXT } from '../consts' import {
SimpleFlowNode,
NodeType,
ConditionType,
DEFAULT_CONDITION_GROUP_VALUE,
NODE_DEFAULT_TEXT
} from '../consts'
import { useTaskStatusClass } from '../node' import { useTaskStatusClass } from '../node'
import { getDefaultInclusiveConditionNodeName } from '../utils' import { getDefaultInclusiveConditionNodeName } from '../utils'
import { generateUUID } from '@/utils' import { generateUUID } from '@/utils'
import ConditionNodeConfig from '../nodes-config/ConditionNodeConfig.vue' import ConditionNodeConfig from '../nodes-config/ConditionNodeConfig.vue'
import { cloneDeep } from 'lodash-es'
const { proxy } = getCurrentInstance() as any const { proxy } = getCurrentInstance() as any
defineOptions({ defineOptions({
name: 'InclusiveNode' name: 'InclusiveNode'
@ -153,7 +160,8 @@ const blurEvent = (index: number) => {
showInputs.value[index] = false showInputs.value[index] = false
const conditionNode = currentNode.value.conditionNodes?.at(index) as SimpleFlowNode const conditionNode = currentNode.value.conditionNodes?.at(index) as SimpleFlowNode
conditionNode.name = conditionNode.name =
conditionNode.name || getDefaultInclusiveConditionNodeName(index, conditionNode.conditionSetting?.defaultFlow) conditionNode.name ||
getDefaultInclusiveConditionNodeName(index, conditionNode.conditionSetting?.defaultFlow)
} }
// //
@ -185,7 +193,7 @@ const addCondition = () => {
conditionSetting: { conditionSetting: {
defaultFlow: false, defaultFlow: false,
conditionType: ConditionType.RULE, conditionType: ConditionType.RULE,
conditionGroups: DEFAULT_CONDITION_GROUP_VALUE conditionGroups: cloneDeep(DEFAULT_CONDITION_GROUP_VALUE)
} }
} }
conditionNodes.splice(lastIndex, 0, conditionData) conditionNodes.splice(lastIndex, 0, conditionData)