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