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
520fc784
authored
Oct 20, 2024
by
jason
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
【功能修改】 新增包容分支
parent
dcdce412
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
290 additions
and
40 deletions
+290
-40
src/components/SimpleProcessDesignerV2/src/NodeHandler.vue
+34
-2
src/components/SimpleProcessDesignerV2/src/ProcessNodeTree.vue
+8
-0
src/components/SimpleProcessDesignerV2/src/SimpleProcessDesigner.vue
+14
-15
src/components/SimpleProcessDesignerV2/src/nodes-config/ConditionNodeConfig.vue
+1
-1
src/components/SimpleProcessDesignerV2/src/nodes/ExclusiveNode.vue
+2
-6
src/components/SimpleProcessDesignerV2/src/nodes/InclusiveNode.vue
+201
-0
src/components/SimpleProcessDesignerV2/src/nodes/ParallelNode.vue
+2
-2
src/components/SimpleProcessDesignerV2/src/utils.ts
+8
-0
src/components/SimpleProcessDesignerV2/theme/simple-process-designer.scss
+20
-14
No files found.
src/components/SimpleProcessDesignerV2/src/NodeHandler.vue
View file @
520fc784
...
@@ -27,11 +27,17 @@
...
@@ -27,11 +27,17 @@
<div
class=
"handler-item-text"
>
条件分支
</div>
<div
class=
"handler-item-text"
>
条件分支
</div>
</div>
</div>
<div
class=
"handler-item"
@
click=
"addNode(NodeType.PARALLEL_BRANCH_NODE)"
>
<div
class=
"handler-item"
@
click=
"addNode(NodeType.PARALLEL_BRANCH_NODE)"
>
<div
class=
"handler-item-icon
condition
"
>
<div
class=
"handler-item-icon
parallel
"
>
<span
class=
"iconfont icon-size icon-parallel"
></span>
<span
class=
"iconfont icon-size icon-parallel"
></span>
</div>
</div>
<div
class=
"handler-item-text"
>
并行分支
</div>
<div
class=
"handler-item-text"
>
并行分支
</div>
</div>
</div>
<div
class=
"handler-item"
@
click=
"addNode(NodeType.INCLUSIVE_BRANCH_NODE)"
>
<div
class=
"handler-item-icon inclusive"
>
<span
class=
"iconfont icon-size icon-inclusive"
></span>
</div>
<div
class=
"handler-item-text"
>
包容分支
</div>
</div>
</div>
</div>
<template
#
reference
>
<template
#
reference
>
<div
class=
"add-icon"
><Icon
icon=
"ep:plus"
/></div>
<div
class=
"add-icon"
><Icon
icon=
"ep:plus"
/></div>
...
@@ -127,7 +133,7 @@ const addNode = (type: number) => {
...
@@ -127,7 +133,7 @@ const addNode = (type: number) => {
{
{
id
:
'Flow_'
+
generateUUID
(),
id
:
'Flow_'
+
generateUUID
(),
name
:
'其它情况'
,
name
:
'其它情况'
,
showText
:
'
其它情况进入此流程
'
,
showText
:
'
未满足其它条件时,将进入此分支
'
,
type
:
NodeType
.
CONDITION_NODE
,
type
:
NodeType
.
CONDITION_NODE
,
childNode
:
undefined
,
childNode
:
undefined
,
conditionType
:
undefined
,
conditionType
:
undefined
,
...
@@ -162,6 +168,32 @@ const addNode = (type: number) => {
...
@@ -162,6 +168,32 @@ const addNode = (type: number) => {
}
}
emits
(
'update:childNode'
,
data
)
emits
(
'update:childNode'
,
data
)
}
}
if
(
type
===
NodeType
.
INCLUSIVE_BRANCH_NODE
)
{
const
data
:
SimpleFlowNode
=
{
name
:
'包容分支'
,
type
:
NodeType
.
INCLUSIVE_BRANCH_NODE
,
id
:
'GateWay_'
+
generateUUID
(),
childNode
:
props
.
childNode
,
conditionNodes
:
[
{
id
:
'Flow_'
+
generateUUID
(),
name
:
'包容条件1'
,
showText
:
''
,
type
:
NodeType
.
CONDITION_NODE
,
childNode
:
undefined
},
{
id
:
'Flow_'
+
generateUUID
(),
name
:
'其它情况'
,
showText
:
'未满足其它条件时,将进入此分支'
,
type
:
NodeType
.
CONDITION_NODE
,
childNode
:
undefined
,
defaultFlow
:
true
}
]
}
emits
(
'update:childNode'
,
data
)
}
}
}
</
script
>
</
script
>
...
...
src/components/SimpleProcessDesignerV2/src/ProcessNodeTree.vue
View file @
520fc784
...
@@ -31,6 +31,13 @@
...
@@ -31,6 +31,13 @@
@
update:model-value=
"handleModelValueUpdate"
@
update:model-value=
"handleModelValueUpdate"
@
find:parent-node=
"findFromParentNode"
@
find:parent-node=
"findFromParentNode"
/>
/>
<!-- 包容分支节点 -->
<InclusiveNode
v-if=
"currentNode && currentNode.type === NodeType.INCLUSIVE_BRANCH_NODE"
:flow-node=
"currentNode"
@
update:model-value=
"handleModelValueUpdate"
@
find:parent-node=
"findFromParentNode"
/>
<!-- 递归显示孩子节点 -->
<!-- 递归显示孩子节点 -->
<ProcessNodeTree
<ProcessNodeTree
v-if=
"currentNode && currentNode.childNode"
v-if=
"currentNode && currentNode.childNode"
...
@@ -49,6 +56,7 @@ import UserTaskNode from './nodes/UserTaskNode.vue'
...
@@ -49,6 +56,7 @@ import UserTaskNode from './nodes/UserTaskNode.vue'
import
CopyTaskNode
from
'./nodes/CopyTaskNode.vue'
import
CopyTaskNode
from
'./nodes/CopyTaskNode.vue'
import
ExclusiveNode
from
'./nodes/ExclusiveNode.vue'
import
ExclusiveNode
from
'./nodes/ExclusiveNode.vue'
import
ParallelNode
from
'./nodes/ParallelNode.vue'
import
ParallelNode
from
'./nodes/ParallelNode.vue'
import
InclusiveNode
from
'./nodes/InclusiveNode.vue'
import
{
SimpleFlowNode
,
NodeType
}
from
'./consts'
import
{
SimpleFlowNode
,
NodeType
}
from
'./consts'
import
{
useWatchNode
}
from
'./node'
import
{
useWatchNode
}
from
'./node'
defineOptions
({
defineOptions
({
...
...
src/components/SimpleProcessDesignerV2/src/SimpleProcessDesigner.vue
View file @
520fc784
...
@@ -111,32 +111,31 @@ const validateNode = (node: SimpleFlowNode | undefined, errorNodes: SimpleFlowNo
...
@@ -111,32 +111,31 @@ const validateNode = (node: SimpleFlowNode | undefined, errorNodes: SimpleFlowNo
return
return
}
}
if
(
type
==
NodeType
.
START_USER_NODE
)
{
if
(
type
==
NodeType
.
START_USER_NODE
)
{
// 发起人节点暂时不用校验,直接校验孩子节点
validateNode
(
node
.
childNode
,
errorNodes
)
validateNode
(
node
.
childNode
,
errorNodes
)
}
}
if
(
type
===
NodeType
.
USER_TASK_NODE
)
{
if
(
type
===
NodeType
.
USER_TASK_NODE
||
type
===
NodeType
.
COPY_TASK_NODE
||
type
===
NodeType
.
CONDITION_NODE
)
{
if
(
!
showText
)
{
if
(
!
showText
)
{
errorNodes
.
push
(
node
)
errorNodes
.
push
(
node
)
}
}
validateNode
(
node
.
childNode
,
errorNodes
)
validateNode
(
node
.
childNode
,
errorNodes
)
}
}
if
(
type
===
NodeType
.
COPY_TASK_NODE
)
{
if
(
!
showText
)
{
if
(
errorNodes
.
push
(
node
)
type
==
NodeType
.
CONDITION_BRANCH_NODE
||
}
type
==
NodeType
.
PARALLEL_BRANCH_NODE
||
validateNode
(
node
.
childNode
,
errorNodes
)
type
==
NodeType
.
INCLUSIVE_BRANCH_NODE
}
)
{
// 分支节点
if
(
type
===
NodeType
.
CONDITION_NODE
)
{
// 1. 先校验各个分支
if
(
!
showText
)
{
errorNodes
.
push
(
node
)
}
validateNode
(
node
.
childNode
,
errorNodes
)
}
if
(
type
==
NodeType
.
CONDITION_BRANCH_NODE
)
{
conditionNodes
?.
forEach
((
item
)
=>
{
conditionNodes
?.
forEach
((
item
)
=>
{
validateNode
(
item
,
errorNodes
)
validateNode
(
item
,
errorNodes
)
})
})
// 2. 校验孩子节点
validateNode
(
node
.
childNode
,
errorNodes
)
validateNode
(
node
.
childNode
,
errorNodes
)
}
}
}
}
...
...
src/components/SimpleProcessDesignerV2/src/nodes-config/ConditionNodeConfig.vue
View file @
520fc784
...
@@ -26,7 +26,7 @@
...
@@ -26,7 +26,7 @@
</div>
</div>
</
template
>
</
template
>
<div>
<div>
<div
class=
"mb-3 font-size-16px"
v-if=
"currentNode.defaultFlow"
>
其它条件不满足
进入此分支(该分支不可编辑和删除)
</div>
<div
class=
"mb-3 font-size-16px"
v-if=
"currentNode.defaultFlow"
>
未满足其它条件时,将
进入此分支(该分支不可编辑和删除)
</div>
<div
v-else
>
<div
v-else
>
<el-form
<el-form
ref=
"formRef"
ref=
"formRef"
...
...
src/components/SimpleProcessDesignerV2/src/nodes/ExclusiveNode.vue
View file @
520fc784
<
template
>
<
template
>
<div
class=
"branch-node-wrapper"
>
<div
class=
"branch-node-wrapper"
>
<div
class=
"branch-node-container"
>
<div
class=
"branch-node-container"
>
<
div
class=
"branch-node-add"
@
click=
"addCondition"
>
添加条件
</div
>
<
el-button
class=
"branch-node-add"
color=
"#67c23a"
@
click=
"addCondition"
plain
>
添加条件
</el-button
>
<div
<div
class=
"branch-node-item"
class=
"branch-node-item"
v-for=
"(item, index) in currentNode.conditionNodes"
v-for=
"(item, index) in currentNode.conditionNodes"
...
@@ -94,10 +94,6 @@ defineOptions({
...
@@ -94,10 +94,6 @@ defineOptions({
name
:
'ExclusiveNode'
name
:
'ExclusiveNode'
})
})
const
props
=
defineProps
({
const
props
=
defineProps
({
// parentNode : {
// type: Object as () => SimpleFlowNode,
// required: true
// },
flowNode
:
{
flowNode
:
{
type
:
Object
as
()
=>
SimpleFlowNode
,
type
:
Object
as
()
=>
SimpleFlowNode
,
required
:
true
required
:
true
...
@@ -193,7 +189,7 @@ const recursiveFindParentNode = (
...
@@ -193,7 +189,7 @@ const recursiveFindParentNode = (
node
:
SimpleFlowNode
,
node
:
SimpleFlowNode
,
nodeType
:
number
nodeType
:
number
)
=>
{
)
=>
{
if
(
!
node
||
node
.
type
===
NodeType
.
START_
EVENT
_NODE
)
{
if
(
!
node
||
node
.
type
===
NodeType
.
START_
USER
_NODE
)
{
return
return
}
}
if
(
node
.
type
===
nodeType
)
{
if
(
node
.
type
===
nodeType
)
{
...
...
src/components/SimpleProcessDesignerV2/src/nodes/InclusiveNode.vue
0 → 100644
View file @
520fc784
<
template
>
<div
class=
"branch-node-wrapper"
>
<div
class=
"branch-node-container"
>
<el-button
class=
"branch-node-add"
color=
"#345da2"
@
click=
"addCondition"
plain
>
添加条件
</el-button>
<div
class=
"branch-node-item"
v-for=
"(item, index) in currentNode.conditionNodes"
:key=
"index"
>
<template
v-if=
"index == 0"
>
<div
class=
"branch-line-first-top"
>
</div>
<div
class=
"branch-line-first-bottom"
></div>
</
template
>
<
template
v-if=
"index + 1 == currentNode.conditionNodes?.length"
>
<div
class=
"branch-line-last-top"
></div>
<div
class=
"branch-line-last-bottom"
></div>
</
template
>
<div
class=
"node-wrapper"
>
<div
class=
"node-container"
>
<div
class=
"node-box"
:class=
"{ 'node-config-error': !item.showText }"
>
<div
class=
"branch-node-title-container"
>
<div
v-if=
"showInputs[index]"
>
<input
type=
"text"
class=
"editable-title-input"
@
blur=
"blurEvent(index)"
v-mountedFocus
v-model=
"item.name"
/>
</div>
<div
v-else
class=
"branch-title"
@
click=
"clickEvent(index)"
>
{{ item.name }}
</div>
</div>
<div
class=
"branch-node-content"
@
click=
"conditionNodeConfig(item.id)"
>
<div
class=
"branch-node-text"
:title=
"item.showText"
v-if=
"item.showText"
>
{{ item.showText }}
</div>
<div
class=
"branch-node-text"
v-else
>
{{ NODE_DEFAULT_TEXT.get(NodeType.CONDITION_NODE) }}
</div>
</div>
<div
class=
"node-toolbar"
v-if=
"index + 1 !== currentNode.conditionNodes?.length"
>
<div
class=
"toolbar-icon"
>
<Icon
color=
"#0089ff"
icon=
"ep:circle-close-filled"
:size=
"18"
@
click=
"deleteCondition(index)"
/>
</div>
</div>
<div
class=
"branch-node-move move-node-left"
v-if=
"index != 0 && index + 1 !== currentNode.conditionNodes?.length"
@
click=
"moveNode(index, -1)"
>
<Icon
icon=
"ep:arrow-left"
/>
</div>
<div
class=
"branch-node-move move-node-right"
v-if=
"currentNode.conditionNodes && index < currentNode.conditionNodes.length - 2"
@
click=
"moveNode(index, 1)"
>
<Icon
icon=
"ep:arrow-right"
/>
</div>
</div>
<NodeHandler
v-model:child-node=
"item.childNode"
/>
</div>
</div>
<ConditionNodeConfig
:node-index=
"index"
:condition-node=
"item"
:ref=
"item.id"
/>
<!-- 递归显示子节点 -->
<ProcessNodeTree
v-if=
"item && item.childNode"
:parent-node=
"item"
v-model:flow-node=
"item.childNode"
@
find:recursive-find-parent-node=
"recursiveFindParentNode"
/>
</div>
</div>
<NodeHandler
v-if=
"currentNode"
v-model:child-node=
"currentNode.childNode"
/>
</div>
</template>
<
script
setup
lang=
"ts"
>
import
NodeHandler
from
'../NodeHandler.vue'
import
ProcessNodeTree
from
'../ProcessNodeTree.vue'
import
{
SimpleFlowNode
,
NodeType
,
NODE_DEFAULT_TEXT
}
from
'../consts'
import
{
getDefaultInclusiveConditionNodeName
}
from
'../utils'
import
{
generateUUID
}
from
'@/utils'
import
ConditionNodeConfig
from
'../nodes-config/ConditionNodeConfig.vue'
const
{
proxy
}
=
getCurrentInstance
()
as
any
defineOptions
({
name
:
'InclusiveNode'
})
const
props
=
defineProps
({
flowNode
:
{
type
:
Object
as
()
=>
SimpleFlowNode
,
required
:
true
}
})
// 定义事件,更新父组件
const
emits
=
defineEmits
<
{
'update:modelValue'
:
[
node
:
SimpleFlowNode
|
undefined
]
'find:parentNode'
:
[
nodeList
:
SimpleFlowNode
[],
nodeType
:
number
]
'find:recursiveFindParentNode'
:
[
nodeList
:
SimpleFlowNode
[],
curentNode
:
SimpleFlowNode
,
nodeType
:
number
]
}
>
()
const
currentNode
=
ref
<
SimpleFlowNode
>
(
props
.
flowNode
)
watch
(
()
=>
props
.
flowNode
,
(
newValue
)
=>
{
currentNode
.
value
=
newValue
}
)
const
showInputs
=
ref
<
boolean
[]
>
([])
// 失去焦点
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
)
}
// 点击条件名称
const
clickEvent
=
(
index
:
number
)
=>
{
showInputs
.
value
[
index
]
=
true
}
const
conditionNodeConfig
=
(
nodeId
:
string
)
=>
{
const
conditionNode
=
proxy
.
$refs
[
nodeId
][
0
]
conditionNode
.
open
()
}
// 新增条件
const
addCondition
=
()
=>
{
const
conditionNodes
=
currentNode
.
value
.
conditionNodes
if
(
conditionNodes
)
{
const
len
=
conditionNodes
.
length
let
lastIndex
=
len
-
1
const
conditionData
:
SimpleFlowNode
=
{
id
:
'Flow_'
+
generateUUID
(),
name
:
'包容条件'
+
len
,
showText
:
''
,
type
:
NodeType
.
CONDITION_NODE
,
childNode
:
undefined
,
conditionNodes
:
[],
conditionType
:
1
,
defaultFlow
:
false
}
conditionNodes
.
splice
(
lastIndex
,
0
,
conditionData
)
}
}
// 删除条件
const
deleteCondition
=
(
index
:
number
)
=>
{
const
conditionNodes
=
currentNode
.
value
.
conditionNodes
if
(
conditionNodes
)
{
conditionNodes
.
splice
(
index
,
1
)
if
(
conditionNodes
.
length
==
1
)
{
const
childNode
=
currentNode
.
value
.
childNode
// 更新此节点为后续孩子节点
emits
(
'update:modelValue'
,
childNode
)
}
}
}
// 移动节点
const
moveNode
=
(
index
:
number
,
to
:
number
)
=>
{
// -1 :向左 1: 向右
if
(
currentNode
.
value
.
conditionNodes
)
{
currentNode
.
value
.
conditionNodes
[
index
]
=
currentNode
.
value
.
conditionNodes
.
splice
(
index
+
to
,
1
,
currentNode
.
value
.
conditionNodes
[
index
]
)[
0
]
}
}
// 递归从父节点中查询匹配的节点
const
recursiveFindParentNode
=
(
nodeList
:
SimpleFlowNode
[],
node
:
SimpleFlowNode
,
nodeType
:
number
)
=>
{
if
(
!
node
||
node
.
type
===
NodeType
.
START_USER_NODE
)
{
return
}
if
(
node
.
type
===
nodeType
)
{
nodeList
.
push
(
node
)
}
// 条件节点 (NodeType.CONDITION_NODE) 比较特殊。需要调用其父节点条件分支节点(NodeType.INCLUSIVE_BRANCH_NODE) 继续查找
emits
(
'find:parentNode'
,
nodeList
,
nodeType
)
}
</
script
>
<
style
lang=
"scss"
scoped
></
style
>
src/components/SimpleProcessDesignerV2/src/nodes/ParallelNode.vue
View file @
520fc784
<
template
>
<
template
>
<div
class=
"branch-node-wrapper"
>
<div
class=
"branch-node-wrapper"
>
<div
class=
"branch-node-container"
>
<div
class=
"branch-node-container"
>
<
div
class=
"branch-node-add"
@
click=
"addCondition"
>
添加分支
</div
>
<
el-button
class=
"branch-node-add"
color=
"#626aef"
@
click=
"addCondition"
plain
>
添加分支
</el-button
>
<div
<div
class=
"branch-node-item"
class=
"branch-node-item"
v-for=
"(item, index) in currentNode.conditionNodes"
v-for=
"(item, index) in currentNode.conditionNodes"
...
@@ -169,7 +169,7 @@ const recursiveFindParentNode = (
...
@@ -169,7 +169,7 @@ const recursiveFindParentNode = (
node
:
SimpleFlowNode
,
node
:
SimpleFlowNode
,
nodeType
:
number
nodeType
:
number
)
=>
{
)
=>
{
if
(
!
node
||
node
.
type
===
NodeType
.
START_
EVENT
_NODE
)
{
if
(
!
node
||
node
.
type
===
NodeType
.
START_
USER
_NODE
)
{
return
return
}
}
if
(
node
.
type
===
nodeType
)
{
if
(
node
.
type
===
nodeType
)
{
...
...
src/components/SimpleProcessDesignerV2/src/utils.ts
View file @
520fc784
...
@@ -8,6 +8,14 @@ export const getDefaultConditionNodeName = (index: number, defaultFlow: boolean
...
@@ -8,6 +8,14 @@ export const getDefaultConditionNodeName = (index: number, defaultFlow: boolean
return
'条件'
+
(
index
+
1
)
return
'条件'
+
(
index
+
1
)
}
}
// 获取包容分支条件节点默认的名称
export
const
getDefaultInclusiveConditionNodeName
=
(
index
:
number
,
defaultFlow
:
boolean
|
undefined
):
string
=>
{
if
(
defaultFlow
)
{
return
'其它情况'
}
return
'包容条件'
+
(
index
+
1
)
}
export
const
convertTimeUnit
=
(
strTimeUnit
:
string
)
=>
{
export
const
convertTimeUnit
=
(
strTimeUnit
:
string
)
=>
{
if
(
strTimeUnit
===
'M'
)
{
if
(
strTimeUnit
===
'M'
)
{
return
TimeUnitType
.
MINUTE
return
TimeUnitType
.
MINUTE
...
...
src/components/SimpleProcessDesignerV2/theme/simple-process-designer.scss
View file @
520fc784
...
@@ -166,7 +166,7 @@
...
@@ -166,7 +166,7 @@
.branch-priority
{
.branch-priority
{
min-width
:
50px
;
min-width
:
50px
;
font-size
:
1
3
px
;
font-size
:
1
2
px
;
}
}
}
}
...
@@ -198,7 +198,7 @@
...
@@ -198,7 +198,7 @@
.branch-node-content
{
.branch-node-content
{
display
:
flex
;
display
:
flex
;
min-height
:
32px
;
min-height
:
32px
;
padding
:
4px
8px
;
padding
:
4px
0
;
margin-top
:
4px
;
margin-top
:
4px
;
line-height
:
32px
;
line-height
:
32px
;
align-items
:
center
;
align-items
:
center
;
...
@@ -207,7 +207,7 @@
...
@@ -207,7 +207,7 @@
.branch-node-text
{
.branch-node-text
{
overflow
:
hidden
;
overflow
:
hidden
;
font-size
:
1
4
px
;
font-size
:
1
2
px
;
line-height
:
24px
;
line-height
:
24px
;
text-overflow
:
ellipsis
;
text-overflow
:
ellipsis
;
word-break
:
break-all
;
word-break
:
break-all
;
...
@@ -355,14 +355,10 @@
...
@@ -355,14 +355,10 @@
padding
:
0
10px
;
padding
:
0
10px
;
font-size
:
12px
;
font-size
:
12px
;
line-height
:
36px
;
line-height
:
36px
;
color
:
#222
;
cursor
:
pointer
;
background
:
#fff
;
border
:
2px
solid
#dedede
;
border
:
2px
solid
#dedede
;
border-radius
:
18px
;
border-radius
:
18px
;
transform
:
translateX
(
-50%
);
transform
:
translateX
(
-50%
);
transform-origin
:
center
center
;
transform-origin
:
center
center
;
transition
:
all
0
.3s
cubic-bezier
(
0
.645
,
0
.045
,
0
.355
,
1
);
}
}
.branch-node-item
{
.branch-node-item
{
...
@@ -626,16 +622,17 @@
...
@@ -626,16 +622,17 @@
cursor
:
pointer
;
cursor
:
pointer
;
.handler-item
{
.handler-item
{
margin-right
:
8px
;
display
:
flex
;
flex-direction
:
column
;
align-items
:
center
;
}
}
.handler-item-icon
{
.handler-item-icon
{
width
:
8
0px
;
width
:
6
0px
;
height
:
8
0px
;
height
:
6
0px
;
background
:
#fff
;
background
:
#fff
;
border
:
1px
solid
#e2e2e2
;
border
:
1px
solid
#e2e2e2
;
border-radius
:
50%
;
border-radius
:
50%
;
transition
:
all
0
.3s
cubic-bezier
(
0
.645
,
0
.045
,
0
.355
,
1
);
user-select
:
none
;
user-select
:
none
;
text-align
:
center
;
text-align
:
center
;
...
@@ -645,8 +642,8 @@
...
@@ -645,8 +642,8 @@
}
}
.icon-size
{
.icon-size
{
font-size
:
3
5px
;
font-size
:
2
5px
;
line-height
:
8
0px
;
line-height
:
6
0px
;
}
}
}
}
...
@@ -658,13 +655,22 @@
...
@@ -658,13 +655,22 @@
}
}
.condition
{
.condition
{
color
:
#15bc83
;
color
:
#67c23a
;
}
.parallel
{
color
:
#626aef
;
}
.inclusive
{
color
:
#345da2
;
}
}
.handler-item-text
{
.handler-item-text
{
margin-top
:
4px
;
margin-top
:
4px
;
width
:
80px
;
width
:
80px
;
text-align
:
center
;
text-align
:
center
;
font-size
:
13px
;
}
}
}
}
...
...
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