Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
phsl
/
admin
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
b047fd99
authored
Jan 19, 2025
by
jason
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
【功能修复】条件节点配置问题修复
parent
aeb096a3
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
61 additions
and
52 deletions
+61
-52
src/components/SimpleProcessDesignerV2/src/NodeHandler.vue
+4
-31
src/components/SimpleProcessDesignerV2/src/consts.ts
+18
-0
src/components/SimpleProcessDesignerV2/src/nodes-config/ConditionNodeConfig.vue
+1
-2
src/components/SimpleProcessDesignerV2/src/nodes-config/components/Condition.vue
+24
-11
src/components/SimpleProcessDesignerV2/src/nodes/ExclusiveNode.vue
+7
-4
src/components/SimpleProcessDesignerV2/src/nodes/InclusiveNode.vue
+7
-4
No files found.
src/components/SimpleProcessDesignerV2/src/NodeHandler.vue
View file @
b047fd99
...
@@ -71,7 +71,8 @@ import {
...
@@ -71,7 +71,8 @@ import {
NODE_DEFAULT_NAME
,
NODE_DEFAULT_NAME
,
NodeType
,
NodeType
,
RejectHandlerType
,
RejectHandlerType
,
SimpleFlowNode
SimpleFlowNode
,
DEFAULT_CONDITION_GROUP_VALUE
}
from
'./consts'
}
from
'./consts'
import
{
generateUUID
}
from
'@/utils'
import
{
generateUUID
}
from
'@/utils'
...
@@ -167,21 +168,7 @@ const addNode = (type: number) => {
...
@@ -167,21 +168,7 @@ const addNode = (type: number) => {
conditionSetting
:
{
conditionSetting
:
{
defaultFlow
:
false
,
defaultFlow
:
false
,
conditionType
:
ConditionType
.
RULE
,
conditionType
:
ConditionType
.
RULE
,
conditionGroups
:
{
conditionGroups
:
DEFAULT_CONDITION_GROUP_VALUE
and
:
true
,
conditions
:
[
{
and
:
true
,
rules
:
[
{
opCode
:
'=='
,
leftSide
:
''
,
rightSide
:
''
}
]
}
]
}
}
}
},
},
{
{
...
@@ -239,21 +226,7 @@ const addNode = (type: number) => {
...
@@ -239,21 +226,7 @@ const addNode = (type: number) => {
conditionSetting
:
{
conditionSetting
:
{
defaultFlow
:
false
,
defaultFlow
:
false
,
conditionType
:
ConditionType
.
RULE
,
conditionType
:
ConditionType
.
RULE
,
conditionGroups
:
{
conditionGroups
:
DEFAULT_CONDITION_GROUP_VALUE
and
:
true
,
conditions
:
[
{
and
:
true
,
rules
:
[
{
opCode
:
'=='
,
leftSide
:
''
,
rightSide
:
''
}
]
}
]
}
}
}
},
},
{
{
...
...
src/components/SimpleProcessDesignerV2/src/consts.ts
View file @
b047fd99
...
@@ -463,6 +463,24 @@ export type ConditionGroup = {
...
@@ -463,6 +463,24 @@ export type ConditionGroup = {
// 条件数组
// 条件数组
conditions
:
Condition
[]
conditions
:
Condition
[]
}
}
/**
* 条件组默认值
*/
export
const
DEFAULT_CONDITION_GROUP_VALUE
=
{
and
:
true
,
conditions
:
[
{
and
:
true
,
rules
:
[
{
opCode
:
'=='
,
leftSide
:
''
,
rightSide
:
''
}
]
}
]
}
/**
/**
* 条件结构定义
* 条件结构定义
...
...
src/components/SimpleProcessDesignerV2/src/nodes-config/ConditionNodeConfig.vue
View file @
b047fd99
...
@@ -46,7 +46,6 @@
...
@@ -46,7 +46,6 @@
import
{
import
{
SimpleFlowNode
,
SimpleFlowNode
,
ConditionType
,
ConditionType
,
ConditionSetting
,
COMPARISON_OPERATORS
,
COMPARISON_OPERATORS
,
ProcessVariableEnum
ProcessVariableEnum
}
from
'../consts'
}
from
'../consts'
...
@@ -69,7 +68,7 @@ const props = defineProps({
...
@@ -69,7 +68,7 @@ const props = defineProps({
})
})
const
settingVisible
=
ref
(
false
)
const
settingVisible
=
ref
(
false
)
const
currentNode
=
ref
<
SimpleFlowNode
>
(
props
.
conditionNode
)
const
currentNode
=
ref
<
SimpleFlowNode
>
(
props
.
conditionNode
)
const
condition
=
ref
<
ConditionSetting
>
()
const
condition
=
ref
<
any
>
()
const
open
=
()
=>
{
const
open
=
()
=>
{
condition
.
value
=
currentNode
.
value
.
conditionSetting
condition
.
value
=
currentNode
.
value
.
conditionSetting
settingVisible
.
value
=
true
settingVisible
.
value
=
true
...
...
src/components/SimpleProcessDesignerV2/src/nodes-config/components/Condition.vue
View file @
b047fd99
<
template
>
<
template
>
<el-form
ref=
"formRef"
:model=
"condition"
:rules=
"formRules"
label-position=
"top"
>
<el-form
ref=
"formRef"
:model=
"condition"
:rules=
"formRules"
label-position=
"top"
>
<el-form-item
label=
"配置方式"
prop=
"conditionType"
>
<el-form-item
label=
"配置方式"
prop=
"conditionType"
>
<el-radio-group
v-model=
"condition
!.c
onditionType"
>
<el-radio-group
v-model=
"condition
.conditionType"
@
change=
"changeC
onditionType"
>
<el-radio
<el-radio
v-for=
"(dict, indexConditionType) in conditionConfigTypes"
v-for=
"(dict, indexConditionType) in conditionConfigTypes"
:key=
"indexConditionType"
:key=
"indexConditionType"
...
@@ -12,34 +12,34 @@
...
@@ -12,34 +12,34 @@
</el-radio>
</el-radio>
</el-radio-group>
</el-radio-group>
</el-form-item>
</el-form-item>
<el-form-item
v-if=
"condition.conditionType === ConditionType.RULE"
label=
"条件规则"
>
<el-form-item
v-if=
"condition.conditionType === ConditionType.RULE
&& condition.conditionGroups
"
label=
"条件规则"
>
<div
class=
"condition-group-tool"
>
<div
class=
"condition-group-tool"
>
<div
class=
"flex items-center"
>
<div
class=
"flex items-center"
>
<div
class=
"mr-4"
>
条件组关系
</div>
<div
class=
"mr-4"
>
条件组关系
</div>
<el-switch
<el-switch
v-model=
"condition
!.conditionGroups!
.and"
v-model=
"condition
.conditionGroups
.and"
inline-prompt
inline-prompt
active-text=
"且"
active-text=
"且"
inactive-text=
"或"
inactive-text=
"或"
/>
/>
</div>
</div>
</div>
</div>
<el-space
direction=
"vertical"
:spacer=
"condition
!.conditionGroups!
.and ? '且' : '或'"
>
<el-space
direction=
"vertical"
:spacer=
"condition
.conditionGroups
.and ? '且' : '或'"
>
<el-card
<el-card
class=
"condition-group"
class=
"condition-group"
style=
"width: 530px"
style=
"width: 530px"
v-for=
"(equation, cIdx) in condition
!.conditionGroups!
.conditions"
v-for=
"(equation, cIdx) in condition
.conditionGroups
.conditions"
:key=
"cIdx"
:key=
"cIdx"
>
>
<div
<div
class=
"condition-group-delete"
class=
"condition-group-delete"
v-if=
"condition
!.conditionGroups!
.conditions.length > 1"
v-if=
"condition
.conditionGroups
.conditions.length > 1"
>
>
<Icon
<Icon
color=
"#0089ff"
color=
"#0089ff"
icon=
"ep:circle-close-filled"
icon=
"ep:circle-close-filled"
:size=
"18"
:size=
"18"
@
click=
"deleteConditionGroup(condition
!.conditionGroups!
.conditions, cIdx)"
@
click=
"deleteConditionGroup(condition
.conditionGroups
.conditions, cIdx)"
/>
/>
</div>
</div>
<template
#
header
>
<template
#
header
>
...
@@ -114,7 +114,7 @@
...
@@ -114,7 +114,7 @@
color=
"#0089ff"
color=
"#0089ff"
icon=
"ep:plus"
icon=
"ep:plus"
:size=
"24"
:size=
"24"
@
click=
"addConditionGroup(condition
?.conditionGroups!
.conditions)"
@
click=
"addConditionGroup(condition
.conditionGroups?
.conditions)"
/>
/>
</div>
</div>
</el-form-item>
</el-form-item>
...
@@ -125,7 +125,7 @@
...
@@ -125,7 +125,7 @@
>
>
<el-input
<el-input
type=
"textarea"
type=
"textarea"
v-model=
"condition
!
.conditionExpression"
v-model=
"condition.conditionExpression"
clearable
clearable
style=
"width: 100%"
style=
"width: 100%"
/>
/>
...
@@ -138,13 +138,18 @@ import {
...
@@ -138,13 +138,18 @@ import {
COMPARISON_OPERATORS
,
COMPARISON_OPERATORS
,
CONDITION_CONFIG_TYPES
,
CONDITION_CONFIG_TYPES
,
ConditionType
,
ConditionType
,
ConditionSetting
,
DEFAULT_CONDITION_GROUP_VALUE
,
ProcessVariableEnum
ProcessVariableEnum
}
from
'../../consts'
}
from
'../../consts'
import
{
BpmModelFormType
}
from
'@/utils/constants'
import
{
BpmModelFormType
}
from
'@/utils/constants'
import
{
useFormFields
}
from
'../../node'
import
{
useFormFields
}
from
'../../node'
const
props
=
defineProps
<
{
modelValue
:
ConditionSetting
}
>
()
const
props
=
defineProps
({
modelValue
:
{
type
:
Object
,
required
:
true
}
})
const
emit
=
defineEmits
([
'update:modelValue'
])
const
emit
=
defineEmits
([
'update:modelValue'
])
const
condition
=
computed
({
const
condition
=
computed
({
get
()
{
get
()
{
...
@@ -183,6 +188,14 @@ const formRules = reactive({
...
@@ -183,6 +188,14 @@ const formRules = reactive({
})
})
const
formRef
=
ref
()
// 表单 Ref
const
formRef
=
ref
()
// 表单 Ref
/** 切换条件配置方式 */
const
changeConditionType
=
()
=>
{
if
(
condition
.
value
.
conditionType
===
ConditionType
.
RULE
)
{
if
(
!
condition
.
value
.
conditionGroups
)
{
condition
.
value
.
conditionGroups
=
DEFAULT_CONDITION_GROUP_VALUE
}
}
}
const
deleteConditionGroup
=
(
conditions
,
index
)
=>
{
const
deleteConditionGroup
=
(
conditions
,
index
)
=>
{
conditions
.
splice
(
index
,
1
)
conditions
.
splice
(
index
,
1
)
}
}
...
...
src/components/SimpleProcessDesignerV2/src/nodes/ExclusiveNode.vue
View file @
b047fd99
...
@@ -108,7 +108,7 @@
...
@@ -108,7 +108,7 @@
<
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
,
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'
...
@@ -149,7 +149,7 @@ const blurEvent = (index: number) => {
...
@@ -149,7 +149,7 @@ 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
.
defaultFlow
)
conditionNode
.
name
||
getDefaultConditionNodeName
(
index
,
conditionNode
.
conditionSetting
?.
defaultFlow
)
}
}
// 点击条件名称
// 点击条件名称
...
@@ -178,8 +178,11 @@ const addCondition = () => {
...
@@ -178,8 +178,11 @@ const addCondition = () => {
type
:
NodeType
.
CONDITION_NODE
,
type
:
NodeType
.
CONDITION_NODE
,
childNode
:
undefined
,
childNode
:
undefined
,
conditionNodes
:
[],
conditionNodes
:
[],
conditionType
:
1
,
conditionSetting
:
{
defaultFlow
:
false
defaultFlow
:
false
,
conditionType
:
ConditionType
.
RULE
,
conditionGroups
:
DEFAULT_CONDITION_GROUP_VALUE
}
}
}
conditionNodes
.
splice
(
lastIndex
,
0
,
conditionData
)
conditionNodes
.
splice
(
lastIndex
,
0
,
conditionData
)
}
}
...
...
src/components/SimpleProcessDesignerV2/src/nodes/InclusiveNode.vue
View file @
b047fd99
...
@@ -110,7 +110,7 @@
...
@@ -110,7 +110,7 @@
<
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
,
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'
...
@@ -153,7 +153,7 @@ const blurEvent = (index: number) => {
...
@@ -153,7 +153,7 @@ 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
.
defaultFlow
)
conditionNode
.
name
||
getDefaultInclusiveConditionNodeName
(
index
,
conditionNode
.
conditionSetting
?.
defaultFlow
)
}
}
// 点击条件名称
// 点击条件名称
...
@@ -182,8 +182,11 @@ const addCondition = () => {
...
@@ -182,8 +182,11 @@ const addCondition = () => {
type
:
NodeType
.
CONDITION_NODE
,
type
:
NodeType
.
CONDITION_NODE
,
childNode
:
undefined
,
childNode
:
undefined
,
conditionNodes
:
[],
conditionNodes
:
[],
conditionType
:
1
,
conditionSetting
:
{
defaultFlow
:
false
defaultFlow
:
false
,
conditionType
:
ConditionType
.
RULE
,
conditionGroups
:
DEFAULT_CONDITION_GROUP_VALUE
}
}
}
conditionNodes
.
splice
(
lastIndex
,
0
,
conditionData
)
conditionNodes
.
splice
(
lastIndex
,
0
,
conditionData
)
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment