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

--工作流转办完成

上级 5050158a
...@@ -155,6 +155,15 @@ export function getRejectNode(query) { ...@@ -155,6 +155,15 @@ export function getRejectNode(query) {
params: 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 @@ ...@@ -22,6 +22,10 @@
<template #icon><CloseCircleOutlined /></template> <template #icon><CloseCircleOutlined /></template>
驳回 驳回
</a-button> </a-button>
<a-button type="danger" size="large" @click="handleAssignTask" :loading="assigning" class="action-btn">
<template #icon><CloseCircleOutlined /></template>
转办
</a-button>
</a-space> </a-space>
</div> </div>
<div class="action-right"> <div class="action-right">
...@@ -212,7 +216,7 @@ ...@@ -212,7 +216,7 @@
// API // API
import { flowRecord } from '/@/components/Process/api/finished'; import { flowRecord } from '/@/components/Process/api/finished';
import { flowXmlAndNode } from '/@/components/Process/api/definition'; 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'; import { flowTaskInfo } from '/@/components/Process/api/process';
// 组件 // 组件
...@@ -286,7 +290,7 @@ ...@@ -286,7 +290,7 @@
// }) // })
const isFixed = ref(true); const isFixed = ref(true);
const assigning = ref(false);
const userType = computed(() => { const userType = computed(() => {
return nextNode.value?.type || ''; return nextNode.value?.type || '';
}); });
...@@ -714,6 +718,58 @@ ...@@ -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({ defineExpose({
iniData, iniData,
}); });
......
...@@ -72,6 +72,7 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -72,6 +72,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.io.InputStream; import java.io.InputStream;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Function; import java.util.function.Function;
...@@ -1064,7 +1065,46 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask ...@@ -1064,7 +1065,46 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void assignTask(FlowTaskVo flowTaskVo) { 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 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论