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 {
NODE_DEFAULT_NAME
,
NodeType
,
RejectHandlerType
,
SimpleFlowNode
SimpleFlowNode
,
DEFAULT_CONDITION_GROUP_VALUE
}
from
'./consts'
import
{
generateUUID
}
from
'@/utils'
...
...
@@ -167,21 +168,7 @@ const addNode = (type: number) => {
conditionSetting
:
{
defaultFlow
:
false
,
conditionType
:
ConditionType
.
RULE
,
conditionGroups
:
{
and
:
true
,
conditions
:
[
{
and
:
true
,
rules
:
[
{
opCode
:
'=='
,
leftSide
:
''
,
rightSide
:
''
}
]
}
]
}
conditionGroups
:
DEFAULT_CONDITION_GROUP_VALUE
}
},
{
...
...
@@ -239,21 +226,7 @@ const addNode = (type: number) => {
conditionSetting
:
{
defaultFlow
:
false
,
conditionType
:
ConditionType
.
RULE
,
conditionGroups
:
{
and
:
true
,
conditions
:
[
{
and
:
true
,
rules
:
[
{
opCode
:
'=='
,
leftSide
:
''
,
rightSide
:
''
}
]
}
]
}
conditionGroups
:
DEFAULT_CONDITION_GROUP_VALUE
}
},
{
...
...
src/components/SimpleProcessDesignerV2/src/consts.ts
View file @
b047fd99
...
...
@@ -463,6 +463,24 @@ export type ConditionGroup = {
// 条件数组
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 @@
import
{
SimpleFlowNode
,
ConditionType
,
ConditionSetting
,
COMPARISON_OPERATORS
,
ProcessVariableEnum
}
from
'../consts'
...
...
@@ -69,7 +68,7 @@ const props = defineProps({
})
const
settingVisible
=
ref
(
false
)
const
currentNode
=
ref
<
SimpleFlowNode
>
(
props
.
conditionNode
)
const
condition
=
ref
<
ConditionSetting
>
()
const
condition
=
ref
<
any
>
()
const
open
=
()
=>
{
condition
.
value
=
currentNode
.
value
.
conditionSetting
settingVisible
.
value
=
true
...
...
src/components/SimpleProcessDesignerV2/src/nodes-config/components/Condition.vue
View file @
b047fd99
<
template
>
<el-form
ref=
"formRef"
:model=
"condition"
:rules=
"formRules"
label-position=
"top"
>
<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
v-for=
"(dict, indexConditionType) in conditionConfigTypes"
:key=
"indexConditionType"
...
...
@@ -12,34 +12,34 @@
</el-radio>
</el-radio-group>
</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=
"flex items-center"
>
<div
class=
"mr-4"
>
条件组关系
</div>
<el-switch
v-model=
"condition
!.conditionGroups!
.and"
v-model=
"condition
.conditionGroups
.and"
inline-prompt
active-text=
"且"
inactive-text=
"或"
/>
</div>
</div>
<el-space
direction=
"vertical"
:spacer=
"condition
!.conditionGroups!
.and ? '且' : '或'"
>
<el-space
direction=
"vertical"
:spacer=
"condition
.conditionGroups
.and ? '且' : '或'"
>
<el-card
class=
"condition-group"
style=
"width: 530px"
v-for=
"(equation, cIdx) in condition
!.conditionGroups!
.conditions"
v-for=
"(equation, cIdx) in condition
.conditionGroups
.conditions"
:key=
"cIdx"
>
<div
class=
"condition-group-delete"
v-if=
"condition
!.conditionGroups!
.conditions.length > 1"
v-if=
"condition
.conditionGroups
.conditions.length > 1"
>
<Icon
color=
"#0089ff"
icon=
"ep:circle-close-filled"
:size=
"18"
@
click=
"deleteConditionGroup(condition
!.conditionGroups!
.conditions, cIdx)"
@
click=
"deleteConditionGroup(condition
.conditionGroups
.conditions, cIdx)"
/>
</div>
<template
#
header
>
...
...
@@ -114,7 +114,7 @@
color=
"#0089ff"
icon=
"ep:plus"
:size=
"24"
@
click=
"addConditionGroup(condition
?.conditionGroups!
.conditions)"
@
click=
"addConditionGroup(condition
.conditionGroups?
.conditions)"
/>
</div>
</el-form-item>
...
...
@@ -125,7 +125,7 @@
>
<el-input
type=
"textarea"
v-model=
"condition
!
.conditionExpression"
v-model=
"condition.conditionExpression"
clearable
style=
"width: 100%"
/>
...
...
@@ -138,13 +138,18 @@ import {
COMPARISON_OPERATORS
,
CONDITION_CONFIG_TYPES
,
ConditionType
,
ConditionSetting
,
DEFAULT_CONDITION_GROUP_VALUE
,
ProcessVariableEnum
}
from
'../../consts'
import
{
BpmModelFormType
}
from
'@/utils/constants'
import
{
useFormFields
}
from
'../../node'
const
props
=
defineProps
<
{
modelValue
:
ConditionSetting
}
>
()
const
props
=
defineProps
({
modelValue
:
{
type
:
Object
,
required
:
true
}
})
const
emit
=
defineEmits
([
'update:modelValue'
])
const
condition
=
computed
({
get
()
{
...
...
@@ -183,6 +188,14 @@ const formRules = reactive({
})
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
)
=>
{
conditions
.
splice
(
index
,
1
)
}
...
...
src/components/SimpleProcessDesignerV2/src/nodes/ExclusiveNode.vue
View file @
b047fd99
...
...
@@ -108,7 +108,7 @@
<
script
setup
lang=
"ts"
>
import
NodeHandler
from
'../NodeHandler.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
{
useTaskStatusClass
}
from
'../node'
import
{
generateUUID
}
from
'@/utils'
...
...
@@ -149,7 +149,7 @@ const blurEvent = (index: number) => {
showInputs
.
value
[
index
]
=
false
const
conditionNode
=
currentNode
.
value
.
conditionNodes
?.
at
(
index
)
as
SimpleFlowNode
conditionNode
.
name
=
conditionNode
.
name
||
getDefaultConditionNodeName
(
index
,
conditionNode
.
defaultFlow
)
conditionNode
.
name
||
getDefaultConditionNodeName
(
index
,
conditionNode
.
conditionSetting
?.
defaultFlow
)
}
// 点击条件名称
...
...
@@ -178,8 +178,11 @@ const addCondition = () => {
type
:
NodeType
.
CONDITION_NODE
,
childNode
:
undefined
,
conditionNodes
:
[],
conditionType
:
1
,
defaultFlow
:
false
conditionSetting
:
{
defaultFlow
:
false
,
conditionType
:
ConditionType
.
RULE
,
conditionGroups
:
DEFAULT_CONDITION_GROUP_VALUE
}
}
conditionNodes
.
splice
(
lastIndex
,
0
,
conditionData
)
}
...
...
src/components/SimpleProcessDesignerV2/src/nodes/InclusiveNode.vue
View file @
b047fd99
...
...
@@ -110,7 +110,7 @@
<
script
setup
lang=
"ts"
>
import
NodeHandler
from
'../NodeHandler.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
{
getDefaultInclusiveConditionNodeName
}
from
'../utils'
import
{
generateUUID
}
from
'@/utils'
...
...
@@ -153,7 +153,7 @@ const blurEvent = (index: number) => {
showInputs
.
value
[
index
]
=
false
const
conditionNode
=
currentNode
.
value
.
conditionNodes
?.
at
(
index
)
as
SimpleFlowNode
conditionNode
.
name
=
conditionNode
.
name
||
getDefaultInclusiveConditionNodeName
(
index
,
conditionNode
.
defaultFlow
)
conditionNode
.
name
||
getDefaultInclusiveConditionNodeName
(
index
,
conditionNode
.
conditionSetting
?.
defaultFlow
)
}
// 点击条件名称
...
...
@@ -182,8 +182,11 @@ const addCondition = () => {
type
:
NodeType
.
CONDITION_NODE
,
childNode
:
undefined
,
conditionNodes
:
[],
conditionType
:
1
,
defaultFlow
:
false
conditionSetting
:
{
defaultFlow
:
false
,
conditionType
:
ConditionType
.
RULE
,
conditionGroups
:
DEFAULT_CONDITION_GROUP_VALUE
}
}
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