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
Unverified
Commit
ada93a16
authored
Sep 24, 2023
by
芋道源码
Committed by
Gitee
Sep 24, 2023
Browse files
Options
Browse Files
Download
Plain Diff
!251 【工作流】回退fix
Merge pull request !251 from Youkehai/master
parents
0ffd0744
f40d1de6
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
31 additions
and
13 deletions
+31
-13
src/api/bpm/task/index.ts
+2
-2
src/components/bpmnProcessDesigner/package/designer/ProcessViewer.vue
+22
-4
src/views/bpm/processInstance/detail/TaskReturnDialogForm.vue
+3
-3
src/views/bpm/processInstance/detail/index.vue
+4
-4
No files found.
src/api/bpm/task/index.ts
View file @
ada93a16
...
...
@@ -54,6 +54,6 @@ export const getReturnList = async (params) => {
* 确认回退
* @param params
*/
export
const
okR
ollbac
k
=
async
(
data
)
=>
{
return
await
request
.
put
({
url
:
'/bpm/task/r
ollback
'
,
data
})
export
const
okR
eturnTas
k
=
async
(
data
)
=>
{
return
await
request
.
put
({
url
:
'/bpm/task/r
eturn
'
,
data
})
}
src/components/bpmnProcessDesigner/package/designer/ProcessViewer.vue
View file @
ada93a16
...
...
@@ -11,6 +11,7 @@ import BpmnViewer from 'bpmn-js/lib/Viewer'
import
DefaultEmptyXML
from
'./plugins/defaultEmpty'
import
{
DICT_TYPE
,
getIntDictOptions
}
from
'@/utils/dict'
import
{
formatDate
}
from
'@/utils/formatTime'
import
{
isEmpty
}
from
'@/utils/is'
defineOptions
({
name
:
'MyProcessViewer'
})
...
...
@@ -85,6 +86,7 @@ const createNewDiagram = async (xml) => {
// console.error(`[Process Designer Warn]: ${e?.message || e}`);
}
}
/* 高亮流程图 */
// TODO 芋艿:如果多个 endActivity 的话,目前的逻辑可能有一定的问题。https://www.jdon.com/workflow/multi-events.html
const
highlightDiagram
=
async
()
=>
{
...
...
@@ -97,6 +99,9 @@ const highlightDiagram = async () => {
let
canvas
=
bpmnModeler
.
get
(
'canvas'
)
let
todoActivity
:
any
=
activityList
.
find
((
m
:
any
)
=>
!
m
.
endTime
)
// 找到待办的任务
let
endActivity
:
any
=
activityList
[
activityList
.
length
-
1
]
// 获得最后一个任务
let
findProcessTask
=
false
//是否已经高亮了进行中的任务
//进行中高亮之后的任务 key 集合,用于过滤掉 taskList 进行中后面的任务,避免进行中后面的数据 Hover 还有数据
let
removeTaskDefinitionKeyList
=
[]
// debugger
bpmnModeler
.
getDefinitions
().
rootElements
[
0
].
flowElements
?.
forEach
((
n
:
any
)
=>
{
let
activity
:
any
=
activityList
.
find
((
m
:
any
)
=>
m
.
key
===
n
.
id
)
// 找到对应的活动
...
...
@@ -110,9 +115,17 @@ const highlightDiagram = async () => {
if
(
!
task
)
{
return
}
//进行中的任务已经高亮过了,则不高亮后面的任务了
if
(
findProcessTask
)
{
removeTaskDefinitionKeyList
.
push
(
n
.
id
)
return
}
// 高亮任务
canvas
.
addMarker
(
n
.
id
,
getResultCss
(
task
.
result
))
//标记是否高亮了进行中任务
if
(
task
.
result
===
1
)
{
findProcessTask
=
true
}
// 如果非通过,就不走后面的线条了
if
(
task
.
result
!==
2
)
{
return
...
...
@@ -212,6 +225,11 @@ const highlightDiagram = async () => {
}
}
})
if
(
!
isEmpty
(
removeTaskDefinitionKeyList
))
{
taskList
.
value
=
taskList
.
value
.
filter
(
(
item
)
=>
!
removeTaskDefinitionKeyList
.
includes
(
item
.
definitionKey
)
)
}
}
const
getActivityHighlightCss
=
(
activity
)
=>
{
return
activity
.
endTime
?
'highlight'
:
'highlight-todo'
...
...
@@ -276,9 +294,9 @@ const elementHover = (element) => {
console
.
log
(
element
.
value
,
'element.value'
)
const
activity
=
activityLists
.
value
.
find
((
m
)
=>
m
.
key
===
element
.
value
.
id
)
console
.
log
(
activity
,
'activityactivityactivityactivity'
)
//
if (!activity) {
//
return
//
}
if
(
!
activity
)
{
return
}
if
(
!
elementOverlayIds
.
value
[
element
.
value
.
id
]
&&
element
.
value
.
type
!==
'bpmn:Process'
)
{
let
html
=
`<div class="element-overlays">
<p>Elemet id:
${
element
.
value
.
id
}
</p>
...
...
src/views/bpm/processInstance/detail/TaskR
ollback
DialogForm.vue
→
src/views/bpm/processInstance/detail/TaskR
eturn
DialogForm.vue
View file @
ada93a16
...
...
@@ -11,9 +11,9 @@
<el-select
v-model=
"formData.targetDefinitionKey"
clearable
style=
"width: 100%"
>
<el-option
v-for=
"item in returnList"
:key=
"item.
taskD
efinitionKey"
:key=
"item.
d
efinitionKey"
:label=
"item.name"
:value=
"item.
taskD
efinitionKey"
:value=
"item.
d
efinitionKey"
/>
</el-select>
</el-form-item>
...
...
@@ -68,7 +68,7 @@ const submitForm = async () => {
// 提交请求
formLoading
.
value
=
true
try
{
await
TaskApi
.
okR
ollbac
k
(
formData
.
value
)
await
TaskApi
.
okR
eturnTas
k
(
formData
.
value
)
message
.
success
(
'回退成功'
)
dialogVisible
.
value
=
false
// 发送操作成功的事件
...
...
src/views/bpm/processInstance/detail/index.vue
View file @
ada93a16
...
...
@@ -92,7 +92,7 @@
<!-- 弹窗:转派审批人 -->
<TaskUpdateAssigneeForm
ref=
"taskUpdateAssigneeFormRef"
@
success=
"getDetail"
/>
<!-- 弹窗,回退节点 -->
<TaskR
ollbackDialog
ref=
"taskRollback
Ref"
@
success=
"getDetail"
/>
<TaskR
eturnDialog
ref=
"taskReturnDialog
Ref"
@
success=
"getDetail"
/>
</ContentWrap>
</template>
<
script
lang=
"ts"
setup
>
...
...
@@ -105,7 +105,7 @@ import * as TaskApi from '@/api/bpm/task'
import
TaskUpdateAssigneeForm
from
'./TaskUpdateAssigneeForm.vue'
import
ProcessInstanceBpmnViewer
from
'./ProcessInstanceBpmnViewer.vue'
import
ProcessInstanceTaskList
from
'./ProcessInstanceTaskList.vue'
import
TaskR
ollbackDialog
from
'./TaskRollback
DialogForm.vue'
import
TaskR
eturnDialog
from
'./TaskReturn
DialogForm.vue'
import
{
registerComponent
}
from
'@/utils/routerHelper'
defineOptions
({
name
:
'BpmProcessInstanceDetail'
})
...
...
@@ -176,10 +176,10 @@ const handleDelegate = async (task) => {
}
//回退弹框组件
const
taskR
ollback
Ref
=
ref
()
const
taskR
eturnDialog
Ref
=
ref
()
/** 处理审批退回的操作 */
const
handleBack
=
async
(
task
)
=>
{
taskR
ollback
Ref
.
value
.
open
(
task
.
id
)
taskR
eturnDialog
Ref
.
value
.
open
(
task
.
id
)
}
/** 获得详情 */
...
...
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