commit
ada93a160b
@ -54,6 +54,6 @@ export const getReturnList = async (params) => {
|
|||||||
* 确认回退
|
* 确认回退
|
||||||
* @param params
|
* @param params
|
||||||
*/
|
*/
|
||||||
export const okRollback = async (data) => {
|
export const okReturnTask = async (data) => {
|
||||||
return await request.put({ url: '/bpm/task/rollback', data })
|
return await request.put({ url: '/bpm/task/return', data })
|
||||||
}
|
}
|
||||||
|
@ -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) => {
|
|||||||
// 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 () => {
|
|||||||
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 () => {
|
|||||||
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 () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
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) => {
|
|||||||
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>
|
||||||
|
@ -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.taskDefinitionKey"
|
:key="item.definitionKey"
|
||||||
:label="item.name"
|
:label="item.name"
|
||||||
:value="item.taskDefinitionKey"
|
:value="item.definitionKey"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -68,7 +68,7 @@ const submitForm = async () => {
|
|||||||
// 提交请求
|
// 提交请求
|
||||||
formLoading.value = true
|
formLoading.value = true
|
||||||
try {
|
try {
|
||||||
await TaskApi.okRollback(formData.value)
|
await TaskApi.okReturnTask(formData.value)
|
||||||
message.success('回退成功')
|
message.success('回退成功')
|
||||||
dialogVisible.value = false
|
dialogVisible.value = false
|
||||||
// 发送操作成功的事件
|
// 发送操作成功的事件
|
@ -92,7 +92,7 @@
|
|||||||
<!-- 弹窗:转派审批人 -->
|
<!-- 弹窗:转派审批人 -->
|
||||||
<TaskUpdateAssigneeForm ref="taskUpdateAssigneeFormRef" @success="getDetail" />
|
<TaskUpdateAssigneeForm ref="taskUpdateAssigneeFormRef" @success="getDetail" />
|
||||||
<!-- 弹窗,回退节点 -->
|
<!-- 弹窗,回退节点 -->
|
||||||
<TaskRollbackDialog ref="taskRollbackRef" @success="getDetail" />
|
<TaskReturnDialog ref="taskReturnDialogRef" @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'
|
|||||||
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 TaskRollbackDialog from './TaskRollbackDialogForm.vue'
|
import TaskReturnDialog from './TaskReturnDialogForm.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) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//回退弹框组件
|
//回退弹框组件
|
||||||
const taskRollbackRef = ref()
|
const taskReturnDialogRef = ref()
|
||||||
/** 处理审批退回的操作 */
|
/** 处理审批退回的操作 */
|
||||||
const handleBack = async (task) => {
|
const handleBack = async (task) => {
|
||||||
taskRollbackRef.value.open(task.id)
|
taskReturnDialogRef.value.open(task.id)
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 获得详情 */
|
/** 获得详情 */
|
||||||
|
Loading…
Reference in New Issue
Block a user