Skip to content

Commit ada93a1

Browse files
YunaiVgitee-org
authored andcommitted
!251 【工作流】回退fix
Merge pull request !251 from Youkehai/master
2 parents 0ffd074 + f40d1de commit ada93a1

File tree

4 files changed

+31
-13
lines changed

4 files changed

+31
-13
lines changed

src/api/bpm/task/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,6 @@ export const getReturnList = async (params) => {
5454
* 确认回退
5555
* @param params
5656
*/
57-
export const okRollback = async (data) => {
58-
return await request.put({ url: '/bpm/task/rollback', data })
57+
export const okReturnTask = async (data) => {
58+
return await request.put({ url: '/bpm/task/return', data })
5959
}

src/components/bpmnProcessDesigner/package/designer/ProcessViewer.vue

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import BpmnViewer from 'bpmn-js/lib/Viewer'
1111
import DefaultEmptyXML from './plugins/defaultEmpty'
1212
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
1313
import { formatDate } from '@/utils/formatTime'
14+
import { isEmpty } from '@/utils/is'
1415
1516
defineOptions({ name: 'MyProcessViewer' })
1617
@@ -85,6 +86,7 @@ const createNewDiagram = async (xml) => {
8586
// console.error(`[Process Designer Warn]: ${e?.message || e}`);
8687
}
8788
}
89+
8890
/* 高亮流程图 */
8991
// TODO 芋艿:如果多个 endActivity 的话,目前的逻辑可能有一定的问题。https://www.jdon.com/workflow/multi-events.html
9092
const highlightDiagram = async () => {
@@ -97,6 +99,9 @@ const highlightDiagram = async () => {
9799
let canvas = bpmnModeler.get('canvas')
98100
let todoActivity: any = activityList.find((m: any) => !m.endTime) // 找到待办的任务
99101
let endActivity: any = activityList[activityList.length - 1] // 获得最后一个任务
102+
let findProcessTask = false //是否已经高亮了进行中的任务
103+
//进行中高亮之后的任务 key 集合,用于过滤掉 taskList 进行中后面的任务,避免进行中后面的数据 Hover 还有数据
104+
let removeTaskDefinitionKeyList = []
100105
// debugger
101106
bpmnModeler.getDefinitions().rootElements[0].flowElements?.forEach((n: any) => {
102107
let activity: any = activityList.find((m: any) => m.key === n.id) // 找到对应的活动
@@ -110,9 +115,17 @@ const highlightDiagram = async () => {
110115
if (!task) {
111116
return
112117
}
118+
//进行中的任务已经高亮过了,则不高亮后面的任务了
119+
if (findProcessTask) {
120+
removeTaskDefinitionKeyList.push(n.id)
121+
return
122+
}
113123
// 高亮任务
114124
canvas.addMarker(n.id, getResultCss(task.result))
115-
125+
//标记是否高亮了进行中任务
126+
if (task.result === 1) {
127+
findProcessTask = true
128+
}
116129
// 如果非通过,就不走后面的线条了
117130
if (task.result !== 2) {
118131
return
@@ -212,6 +225,11 @@ const highlightDiagram = async () => {
212225
}
213226
}
214227
})
228+
if (!isEmpty(removeTaskDefinitionKeyList)) {
229+
taskList.value = taskList.value.filter(
230+
(item) => !removeTaskDefinitionKeyList.includes(item.definitionKey)
231+
)
232+
}
215233
}
216234
const getActivityHighlightCss = (activity) => {
217235
return activity.endTime ? 'highlight' : 'highlight-todo'
@@ -276,9 +294,9 @@ const elementHover = (element) => {
276294
console.log(element.value, 'element.value')
277295
const activity = activityLists.value.find((m) => m.key === element.value.id)
278296
console.log(activity, 'activityactivityactivityactivity')
279-
// if (!activity) {
280-
// return
281-
// }
297+
if (!activity) {
298+
return
299+
}
282300
if (!elementOverlayIds.value[element.value.id] && element.value.type !== 'bpmn:Process') {
283301
let html = `<div class="element-overlays">
284302
<p>Elemet id: ${element.value.id}</p>

src/views/bpm/processInstance/detail/TaskRollbackDialogForm.vue renamed to src/views/bpm/processInstance/detail/TaskReturnDialogForm.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111
<el-select v-model="formData.targetDefinitionKey" clearable style="width: 100%">
1212
<el-option
1313
v-for="item in returnList"
14-
:key="item.taskDefinitionKey"
14+
:key="item.definitionKey"
1515
:label="item.name"
16-
:value="item.taskDefinitionKey"
16+
:value="item.definitionKey"
1717
/>
1818
</el-select>
1919
</el-form-item>
@@ -68,7 +68,7 @@ const submitForm = async () => {
6868
// 提交请求
6969
formLoading.value = true
7070
try {
71-
await TaskApi.okRollback(formData.value)
71+
await TaskApi.okReturnTask(formData.value)
7272
message.success('回退成功')
7373
dialogVisible.value = false
7474
// 发送操作成功的事件

src/views/bpm/processInstance/detail/index.vue

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@
9292
<!-- 弹窗:转派审批人 -->
9393
<TaskUpdateAssigneeForm ref="taskUpdateAssigneeFormRef" @success="getDetail" />
9494
<!-- 弹窗,回退节点 -->
95-
<TaskRollbackDialog ref="taskRollbackRef" @success="getDetail" />
95+
<TaskReturnDialog ref="taskReturnDialogRef" @success="getDetail" />
9696
</ContentWrap>
9797
</template>
9898
<script lang="ts" setup>
@@ -105,7 +105,7 @@ import * as TaskApi from '@/api/bpm/task'
105105
import TaskUpdateAssigneeForm from './TaskUpdateAssigneeForm.vue'
106106
import ProcessInstanceBpmnViewer from './ProcessInstanceBpmnViewer.vue'
107107
import ProcessInstanceTaskList from './ProcessInstanceTaskList.vue'
108-
import TaskRollbackDialog from './TaskRollbackDialogForm.vue'
108+
import TaskReturnDialog from './TaskReturnDialogForm.vue'
109109
import { registerComponent } from '@/utils/routerHelper'
110110
111111
defineOptions({ name: 'BpmProcessInstanceDetail' })
@@ -176,10 +176,10 @@ const handleDelegate = async (task) => {
176176
}
177177
178178
//回退弹框组件
179-
const taskRollbackRef = ref()
179+
const taskReturnDialogRef = ref()
180180
/** 处理审批退回的操作 */
181181
const handleBack = async (task) => {
182-
taskRollbackRef.value.open(task.id)
182+
taskReturnDialogRef.value.open(task.id)
183183
}
184184
185185
/** 获得详情 */

0 commit comments

Comments
 (0)