提交 6a232359 authored 作者: whydesc's avatar whydesc

--工作流转办完成

上级 5050158a
......@@ -155,6 +155,15 @@ export function getRejectNode(query) {
params: query
})
}
// 转办任务 why 2026-4-7 add
export function assign(data) {
return defHttp.post({
url: '/flowable/task/assign',
data: data
})
}
......
......@@ -22,6 +22,10 @@
<template #icon><CloseCircleOutlined /></template>
驳回
</a-button>
<a-button type="danger" size="large" @click="handleAssignTask" :loading="assigning" class="action-btn">
<template #icon><CloseCircleOutlined /></template>
转办
</a-button>
</a-space>
</div>
<div class="action-right">
......@@ -212,7 +216,7 @@
// API
import { flowRecord } from '/@/components/Process/api/finished';
import { flowXmlAndNode } from '/@/components/Process/api/definition';
import { complete, flowTaskForm, getNextFlowNode, getMyTaskFlow } from '/@/components/Process/api/todo';
import { complete, flowTaskForm, getNextFlowNode, getMyTaskFlow,assign } from '/@/components/Process/api/todo';
import { flowTaskInfo } from '/@/components/Process/api/process';
// 组件
......@@ -286,7 +290,7 @@
// })
const isFixed = ref(true);
const assigning = ref(false);
const userType = computed(() => {
return nextNode.value?.type || '';
});
......@@ -714,6 +718,58 @@
}
};
//转办处理
const handleAssignTask = async () => {
if (assigning.value) return;
try {
assigning.value = true;
const submitData = {
instanceId: taskForm.instanceId,
deployId: taskForm.deployId,
taskId: taskForm.taskId,
comment: '',
values: {},
};
const formData = await validate();
Object.assign(submitData, formData);
submitData.comment = submitData.comment || '';
//test1 1958436761110269953
// submitData.values['targetUserId'] = '1959869916657950721';
if (userType.value === 'user') {
submitData.values['targetUserId'] = formData.checkSendUser;
submitData.values['approvalType'] = 'user';
if (formData.checkSendUser) {
submitData.values['targetUserId'] = formData.checkSendUser;
submitData.values['approvalType'] = 'user';
}
} else if (formData.checkSendRole) {
submitData.values['targetUserId'] = formData.checkSendRole;
submitData.values['approvalType'] = 'role';
}
// 执行发送
const result = await assign(submitData);
message.success('任务转办成功');
emit('success', result);
emit('callback');
} catch (error: any) {
if (error.errorFields) {
message.error('请完善表单信息');
} else {
console.error('发送任务失败:', error);
message.error(error.message || '转办任务失败');
}
} finally {
assigning.value = false;
}
};
defineExpose({
iniData,
});
......
......@@ -72,6 +72,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Function;
......@@ -1064,7 +1065,46 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
@Override
@Transactional(rollbackFor = Exception.class)
public void assignTask(FlowTaskVo flowTaskVo) {
taskService.setAssignee(flowTaskVo.getTaskId(),flowTaskVo.getComment());
SysUser loginUser = iFlowThirdService.getLoginUser();
// 1. (可选) 记录转办人,便于追溯。将原办理人记录在 Owner 字段中
taskService.setOwner(flowTaskVo.getTaskId(), loginUser.getId());
if(flowTaskVo.getValues()!=null){
if(flowTaskVo.getValues().get("approvalType")!=null){
if(flowTaskVo.getValues().get("approvalType").toString().equals("user")){
if(flowTaskVo.getValues().get("targetUserId")!=null){
//目标用户
String targetUserId = flowTaskVo.getValues().get("targetUserId").toString();
SysUser targetuser =iFlowThirdService.getUserByUserid(targetUserId);
// 2. 核心操作:直接将任务的指派人改为目标用户
// 此时,任务的所有权彻底转移
taskService.setAssignee(flowTaskVo.getTaskId(), targetUserId);
flowTaskVo.getInstanceId();
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String curdate = sdf.format(date);
// 3. (可选) 添加一条评论或日志,记录这次转办动作
//taskService.addComment(flowTaskVo.getTaskId(), null, originalUserId + " 将任务转办给 " + targetUserId);
taskService.addComment(flowTaskVo.getTaskId(), flowTaskVo.getInstanceId(), curdate+loginUser.getRealname() + " 将任务转办给 " + targetuser.getRealname());
}
}else {
}
}
}
}
/**
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论