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
739a1c29
authored
Jan 06, 2025
by
Lesan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: Simple设计器-监听器
parent
0a15eca5
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
184 additions
and
3 deletions
+184
-3
src/components/SimpleProcessDesignerV2/src/NodeHandler.vue
+4
-1
src/components/SimpleProcessDesignerV2/src/consts.ts
+27
-0
src/components/SimpleProcessDesignerV2/src/nodes-config/UserTaskNodeConfig.vue
+153
-2
No files found.
src/components/SimpleProcessDesignerV2/src/NodeHandler.vue
View file @
739a1c29
...
@@ -120,7 +120,10 @@ const addNode = (type: number) => {
...
@@ -120,7 +120,10 @@ const addNode = (type: number) => {
type
:
AssignEmptyHandlerType
.
APPROVE
type
:
AssignEmptyHandlerType
.
APPROVE
},
},
assignStartUserHandlerType
:
AssignStartUserHandlerType
.
START_USER_AUDIT
,
assignStartUserHandlerType
:
AssignStartUserHandlerType
.
START_USER_AUDIT
,
childNode
:
props
.
childNode
childNode
:
props
.
childNode
,
createTaskListener
:
{
enable
:
false
}
}
}
emits
(
'update:childNode'
,
data
)
emits
(
'update:childNode'
,
data
)
}
}
...
...
src/components/SimpleProcessDesignerV2/src/consts.ts
View file @
739a1c29
...
@@ -93,6 +93,8 @@ export interface SimpleFlowNode {
...
@@ -93,6 +93,8 @@ export interface SimpleFlowNode {
assignEmptyHandler
?:
AssignEmptyHandler
assignEmptyHandler
?:
AssignEmptyHandler
// 审批节点的审批人与发起人相同时,对应的处理类型
// 审批节点的审批人与发起人相同时,对应的处理类型
assignStartUserHandlerType
?:
number
assignStartUserHandlerType
?:
number
// 创建任务监听器
createTaskListener
:
ListenerHandler
// 条件类型
// 条件类型
conditionType
?:
ConditionType
conditionType
?:
ConditionType
// 条件表达式
// 条件表达式
...
@@ -222,6 +224,31 @@ export type AssignEmptyHandler = {
...
@@ -222,6 +224,31 @@ export type AssignEmptyHandler = {
userIds
?:
number
[]
userIds
?:
number
[]
}
}
/**
* 监听器的结构定义
*/
export
type
ListenerHandler
=
{
enable
:
boolean
path
:
string
header
:
ListenerMap
[]
body
:
ListenerMap
[]
}
export
type
ListenerMap
=
{
key
:
string
type
:
number
value
:
string
}
export
const
LISTENER_MAP_TYPES
=
[
{
value
:
1
,
label
:
'固定值'
},
{
value
:
2
,
label
:
'表单'
}
]
// 审批拒绝类型枚举
// 审批拒绝类型枚举
export
enum
RejectHandlerType
{
export
enum
RejectHandlerType
{
/**
/**
...
...
src/components/SimpleProcessDesignerV2/src/nodes-config/UserTaskNodeConfig.vue
View file @
739a1c29
...
@@ -434,6 +434,133 @@
...
@@ -434,6 +434,133 @@
</div>
</div>
</div>
</div>
</el-tab-pane>
</el-tab-pane>
<el-tab-pane
label=
"监听器"
name=
"listener"
>
<div>
<el-form
label-position=
"top"
>
<el-divider
content-position=
"left"
>
<el-text
tag=
"b"
size=
"large"
>
创建任务
</el-text>
</el-divider>
<el-form-item
prop=
"createTaskListenerEnable"
>
<el-switch
v-model=
"configForm.createTaskListenerEnable"
active-text=
"开启"
inactive-text=
"关闭"
/>
</el-form-item>
<div
v-if=
"configForm.createTaskListenerEnable"
>
<el-form-item>
<el-alert
title=
"仅支持POST请求,以请求体方式接收参数"
type=
"warning"
show-icon
:closable=
"false"
/>
</el-form-item>
<el-form-item
label=
"请求地址"
prop=
"createTaskListenerPath"
>
<el-input
v-model=
"configForm.createTaskListenerPath"
/>
</el-form-item>
<el-form-item
label=
"请求头"
prop=
"createTaskListenerHeader"
>
<div
class=
"flex pt-2"
v-for=
"(item, index) in configForm.createTaskListenerHeader"
:key=
"index"
>
<div
class=
"mr-2"
>
<el-input
v-model=
"item.key"
style=
"width: 160px"
/>
</div>
<div
class=
"mr-2"
>
<el-select
v-model=
"item.type"
style=
"width: 100px"
>
<el-option
v-for=
"types in LISTENER_MAP_TYPES"
:key=
"types.value"
:label=
"types.label"
:value=
"types.value"
/>
</el-select>
</div>
<div
class=
"mr-2"
>
<el-input
v-model=
"item.value"
style=
"width: 160px"
/>
</div>
<div
class=
"mr-1 flex items-center"
>
<Icon
icon=
"ep:delete"
:size=
"18"
@
click=
"deleteTaskListenerMap(configForm.createTaskListenerHeader, index)"
/>
</div>
</div>
<el-button
type=
"primary"
text
@
click=
"addTaskListenerMap(configForm.createTaskListenerHeader)"
>
<Icon
icon=
"ep:plus"
class=
"mr-5px"
/>
添加一行
</el-button>
</el-form-item>
<el-form-item
label=
"请求体"
prop=
"createTaskListenerBody"
>
<div
class=
"flex pt-2"
v-for=
"(item, index) in configForm.createTaskListenerBody"
:key=
"index"
>
<div
class=
"mr-2"
>
<el-input
v-model=
"item.key"
style=
"width: 160px"
/>
</div>
<div
class=
"mr-2"
>
<el-select
v-model=
"item.type"
style=
"width: 100px"
>
<el-option
v-for=
"types in LISTENER_MAP_TYPES"
:key=
"types.value"
:label=
"types.label"
:value=
"types.value"
/>
</el-select>
</div>
<div
class=
"mr-2"
>
<el-input
v-model=
"item.value"
style=
"width: 160px"
/>
</div>
<div
class=
"mr-1 flex items-center"
>
<Icon
icon=
"ep:delete"
:size=
"18"
@
click=
"deleteTaskListenerMap(configForm.createTaskListenerBody, index)"
/>
</div>
</div>
<el-button
type=
"primary"
text
@
click=
"addTaskListenerMap(configForm.createTaskListenerBody)"
>
<Icon
icon=
"ep:plus"
class=
"mr-5px"
/>
添加一行
</el-button>
</el-form-item>
</div>
<el-divider
content-position=
"left"
>
<el-text
tag=
"b"
size=
"large"
>
指派任务执行人员
</el-text>
</el-divider>
<el-form-item
prop=
"assignTaskListenerEnable"
>
<el-switch
v-model=
"configForm.assignTaskListenerEnable"
active-text=
"开启"
inactive-text=
"关闭"
/>
</el-form-item>
<el-divider
content-position=
"left"
>
<el-text
tag=
"b"
size=
"large"
>
完成任务
</el-text>
</el-divider>
<el-form-item
prop=
"completeTaskListenerEnable"
>
<el-switch
v-model=
"configForm.completeTaskListenerEnable"
active-text=
"开启"
inactive-text=
"关闭"
/>
</el-form-item>
</el-form>
</div>
</el-tab-pane>
</el-tabs>
</el-tabs>
<
template
#
footer
>
<
template
#
footer
>
<el-divider
/>
<el-divider
/>
...
@@ -469,7 +596,8 @@ import {
...
@@ -469,7 +596,8 @@ import {
ASSIGN_EMPTY_HANDLER_TYPES
,
ASSIGN_EMPTY_HANDLER_TYPES
,
AssignEmptyHandlerType
,
AssignEmptyHandlerType
,
FieldPermissionType
,
FieldPermissionType
,
ProcessVariableEnum
ProcessVariableEnum
,
LISTENER_MAP_TYPES
}
from
'../consts'
}
from
'../consts'
import
{
import
{
...
@@ -513,7 +641,7 @@ const { settingVisible, closeDrawer, openDrawer } = useDrawer()
...
@@ -513,7 +641,7 @@ const { settingVisible, closeDrawer, openDrawer } = useDrawer()
// 节点名称配置
// 节点名称配置
const
{
nodeName
,
showInput
,
clickIcon
,
blurEvent
}
=
useNodeName
(
NodeType
.
USER_TASK_NODE
)
const
{
nodeName
,
showInput
,
clickIcon
,
blurEvent
}
=
useNodeName
(
NodeType
.
USER_TASK_NODE
)
// 激活的 Tab 标签页
// 激活的 Tab 标签页
const
activeTabName
=
ref
(
'
us
er'
)
const
activeTabName
=
ref
(
'
listen
er'
)
// 表单字段权限设置
// 表单字段权限设置
const
{
formType
,
fieldsPermissionConfig
,
formFieldOptions
,
getNodeConfigFormFields
}
=
const
{
formType
,
fieldsPermissionConfig
,
formFieldOptions
,
getNodeConfigFormFields
}
=
useFormFieldsPermission
(
FieldPermissionType
.
READ
)
useFormFieldsPermission
(
FieldPermissionType
.
READ
)
...
@@ -662,6 +790,13 @@ const saveConfig = async () => {
...
@@ -662,6 +790,13 @@ const saveConfig = async () => {
currentNode
.
value
.
fieldsPermission
=
fieldsPermissionConfig
.
value
currentNode
.
value
.
fieldsPermission
=
fieldsPermissionConfig
.
value
// 设置按钮权限
// 设置按钮权限
currentNode
.
value
.
buttonsSetting
=
buttonsSetting
.
value
currentNode
.
value
.
buttonsSetting
=
buttonsSetting
.
value
// 创建任务监听器
currentNode
.
value
.
createTaskListener
=
{
enable
:
configForm
.
value
.
createTaskListenerEnable
,
path
:
configForm
.
value
.
createTaskListenerPath
,
header
:
configForm
.
value
.
createTaskListenerHeader
,
body
:
configForm
.
value
.
createTaskListenerBody
}
currentNode
.
value
.
showText
=
showText
currentNode
.
value
.
showText
=
showText
settingVisible
.
value
=
false
settingVisible
.
value
=
false
...
@@ -713,6 +848,11 @@ const showUserTaskNodeConfig = (node: SimpleFlowNode) => {
...
@@ -713,6 +848,11 @@ const showUserTaskNodeConfig = (node: SimpleFlowNode) => {
buttonsSetting
.
value
=
cloneDeep
(
node
.
buttonsSetting
)
||
DEFAULT_BUTTON_SETTING
buttonsSetting
.
value
=
cloneDeep
(
node
.
buttonsSetting
)
||
DEFAULT_BUTTON_SETTING
// 4. 表单字段权限配置
// 4. 表单字段权限配置
getNodeConfigFormFields
(
node
.
fieldsPermission
)
getNodeConfigFormFields
(
node
.
fieldsPermission
)
// 创建任务监听器
configForm
.
value
.
createTaskListenerEnable
=
node
.
createTaskListener
.
enable
configForm
.
value
.
createTaskListenerPath
=
node
.
createTaskListener
.
path
configForm
.
value
.
createTaskListenerHeader
=
node
.
createTaskListener
.
header
??
[]
configForm
.
value
.
createTaskListenerBody
=
node
.
createTaskListener
.
body
??
[]
}
}
defineExpose
({
openDrawer
,
showUserTaskNodeConfig
})
// 暴露方法给父组件
defineExpose
({
openDrawer
,
showUserTaskNodeConfig
})
// 暴露方法给父组件
...
@@ -825,6 +965,17 @@ function useTimeoutHandler() {
...
@@ -825,6 +965,17 @@ function useTimeoutHandler() {
cTimeoutMaxRemindCount
cTimeoutMaxRemindCount
}
}
}
}
const
addTaskListenerMap
=
(
arr
)
=>
{
arr
.
push
({
key
:
''
,
type
:
1
,
value
:
''
})
}
const
deleteTaskListenerMap
=
(
arr
,
index
)
=>
{
arr
.
splice
(
index
,
1
)
}
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
...
...
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